LibraryRoot LibraryGroup-Таймеры LibraryGroup-Счетчики LibraryGroup-UART 0@0 0@0 200 417 0@0 2 UserBlockLibraryRootNode LibraryGroup-MQTT 0@-42 8 0 de4e135f-79e6-43e4-b0d9-13030919a12b 1 430@130 450@130 corner: 530@190 430@130 corner: 550@190 456.5d@143.5d send 430@160 444@160 430@150 corner: 444@170 4 160@70 180@70 corner: 328.0d@190 160@70 corner: 348.0d@190 195.0d@84.0d mqttServer mqtt.beebotte.com 160@100 180@100 70.0d@104.5d MQTT ESP Main v6.6 8f4d2027-b300-44eb-a521-e49cda2b8927 ff5a3730-9145-4c3f-be43-091bb9dd664b mqttPort eba16069-2ae3-4911-b26d-ad5d4d2677bd b7849d6f-9b21-4102-83c4-4e0a30555b77 mqttUser cdc7ba55-a614-414b-9cd4-d72a6e9300b6 ccdb577d-0ba9-4e5b-a3aa-c8f4925d5912 mqttPassword ad803211-9efa-4495-8d1b-67f633929e09 77051498-bdd9-4de2-b462-e15f94e9e2b7 mqttClientId 31af55c1-0bb8-4001-871e-68351d74ea98 63cb6588-fd14-4560-9142-4d3dc0b2700d mqttDisconnect a3840d3d-2589-4e23-8a21-68ef607f59c5 cdd702ed-a519-4946-8975-bd5d17eb3e54 MQTT_ESP_Main_2_6 mqttConnect 02ed448d-9a2c-49a6-9075-d0d3a9bdc15c 9e57d0ed-81f4-4575-83d5-43d3de08806b 13b6daf4-2068-49e6-a601-c2b730999cff MQTT_ESP_Main_2_6 mqtt_server 99102de8-1803-44c3-806a-5b628f6bddf7 192.168.2.9 0945a421-3dd6-4271-911b-f1ca5ef00c24 Port 1883 c56c80ff-39f1-4fbc-805d-6b39bd43de46 0bd59d21-1c72-4981-94bf-c96e3feae0c4 cluser a4a04d85-cbfc-42be-847c-139929db1f0e mqtt a3a71e77-b81d-46f0-b781-9583f39f8b10 clpass 885309a9-04a3-4539-876c-d8643ee0e79a mqttd0184d d01644cc-4b29-47ee-a4ac-b8ac170d626e clientId 84e49d44-f80d-4af2-bc2e-e95c1279c05d mishagate 7b359cac-6098-48bb-a765-ee3a82022f16 if (!client.connected()) { mqttConnect = 0; long now = millis(); if (now - lastReconnectAttempt > 5000) { lastReconnectAttempt = now; // Attempt to reconnect if (reconnect()) { lastReconnectAttempt = 0; } } } else { client.loop(); mqttConnect = 1; } 304 client.setServer(mqtt_server, Port); client.setCallback(callback); lastReconnectAttempt = 0; 93 #include <PubSubClient.h> MQTT_inputTopic ; String MQTT_inputtext ; String espClient ; WiFiClient client (espClient); PubSubClient mqttConnect = 0; bool lastReconnectAttempt = 0; long MQTT_inputtext = ""; MQTT_inputTopic = ""; MQTT_inputTopic = topic; for (int i=0;i<len;i++) { MQTT_inputtext += (char)payload[i]; } 136 void callback char* topic byte* payload unsigned int len if (client.connect(clientId, cluser, clpass)) { client.subscribe("#"); } return client.connected(); 110 boolean reconnect AsyncTCP .github scripts install-arduino-core-esp32 23212F62696E2F626173680A0A6578706F72742041524455494E4F5F45535033325F504154483D222441524455494E4F5F5553525F504154482F68617264776172652F6573707265737369662F6573703332220A6966205B2021202D6420222441524455494E4F5F45535033325F5041544822205D3B207468656E0A096563686F2022496E7374616C6C696E672045535033322041726475696E6F20436F7265202E2E2E220A097363726970745F696E69745F706174683D2224505744220A096D6B646972202D7020222441524455494E4F5F5553525F504154482F68617264776172652F657370726573736966220A09636420222441524455494E4F5F5553525F504154482F68617264776172652F657370726573736966220A0A096563686F2022496E7374616C6C696E6720507974686F6E2053657269616C202E2E2E220A0970697020696E7374616C6C20707973657269616C203E202F6465762F6E756C6C0A0A096966205B2022244F535F49535F57494E444F575322203D3D20223122205D3B207468656E0A09096563686F2022496E7374616C6C696E6720507974686F6E205265717565737473202E2E2E220A090970697020696E7374616C6C207265717565737473203E202F6465762F6E756C6C0A0966690A0A096966205B2022244749544855425F5245504F5349544F525922203D3D20226573707265737369662F61726475696E6F2D657370333222205D3B20207468656E0A09096563686F20224C696E6B696E6720436F72652E2E2E220A09096C6E202D7320244749544855425F574F524B53504143452065737033320A09656C73650A09096563686F2022436C6F6E696E6720436F7265205265706F7369746F72792E2E2E220A090967697420636C6F6E652068747470733A2F2F6769746875622E636F6D2F6573707265737369662F61726475696E6F2D65737033322E676974206573703332203E202F6465762F6E756C6C20323E26310A0966690A0A096563686F20225570646174696E67205375626D6F64756C6573202E2E2E220A0963642065737033320A09676974207375626D6F64756C6520757064617465202D2D696E6974202D2D726563757273697665203E202F6465762F6E756C6C20323E26310A0A096563686F2022496E7374616C6C696E6720506C6174666F726D20546F6F6C73202E2E2E220A09636420746F6F6C7320262620707974686F6E206765742E70790A09636420247363726970745F696E69745F706174680A0A096563686F202245535033322041726475696E6F20686173206265656E20696E7374616C6C656420696E20272441524455494E4F5F45535033325F5041544827220A096563686F2022220A66690A .sh install-arduino-ide 23212F62696E2F626173680A0A234F53545950453A20276C696E75782D676E75272C20415243483A20277838365F363427203D3E206C696E757836340A234F53545950453A20276D737973272C20415243483A20277838365F363427203D3E2077696E33320A234F53545950453A202764617277696E3138272C20415243483A20276933383627203D3E206D61636F730A0A4F53424954533D6061726368600A6966205B5B2022244F535459504522203D3D20226C696E7578222A205D5D3B207468656E0A096578706F7274204F535F49535F4C494E55583D2231220A09415243484956455F464F524D41543D227461722E787A220A096966205B5B2022244F534249545322203D3D20226936383622205D5D3B207468656E0A09094F535F4E414D453D226C696E75783332220A09656C6966205B5B2022244F534249545322203D3D20227838365F363422205D5D3B207468656E0A09094F535F4E414D453D226C696E75783634220A09656C6966205B5B2022244F534249545322203D3D202261726D76376C22207C7C2022244F534249545322203D3D20226161726368363422205D5D3B207468656E0A09094F535F4E414D453D226C696E757861726D220A09656C73650A09094F535F4E414D453D22244F53545950452D244F5342495453220A09096563686F2022556E6B6E6F776E204F532027244F535F4E414D4527220A09096578697420310A0966690A656C6966205B5B2022244F535459504522203D3D202264617277696E222A205D5D3B207468656E0A096578706F7274204F535F49535F4D41434F533D2231220A09415243484956455F464F524D41543D227A6970220A094F535F4E414D453D226D61636F7378220A656C6966205B5B2022244F535459504522203D3D202263796777696E22205D5D207C7C205B5B2022244F535459504522203D3D20226D73797322205D5D207C7C205B5B2022244F535459504522203D3D202277696E333222205D5D3B207468656E0A096578706F7274204F535F49535F57494E444F57533D2231220A09415243484956455F464F524D41543D227A6970220A094F535F4E414D453D2277696E646F7773220A656C73650A094F535F4E414D453D22244F53545950452D244F5342495453220A096563686F2022556E6B6E6F776E204F532027244F535F4E414D4527220A096578697420310A66690A6578706F7274204F535F4E414D450A0A41524455494E4F5F4255494C445F4449523D2224484F4D452F2E61726475696E6F2F6275696C642E746D70220A41524455494E4F5F43414348455F4449523D2224484F4D452F2E61726475696E6F2F63616368652E746D70220A0A6966205B2022244F535F49535F4D41434F5322203D3D20223122205D3B207468656E0A096578706F72742041524455494E4F5F4944455F504154483D222F4170706C69636174696F6E732F41726475696E6F2E6170702F436F6E74656E74732F4A617661220A096578706F72742041524455494E4F5F5553525F504154483D2224484F4D452F446F63756D656E74732F41726475696E6F220A656C6966205B2022244F535F49535F57494E444F575322203D3D20223122205D3B207468656E0A096578706F72742041524455494E4F5F4944455F504154483D2224484F4D452F61726475696E6F5F696465220A096578706F72742041524455494E4F5F5553525F504154483D2224484F4D452F446F63756D656E74732F41726475696E6F220A656C73650A096578706F72742041524455494E4F5F4944455F504154483D2224484F4D452F61726475696E6F5F696465220A096578706F72742041524455494E4F5F5553525F504154483D2224484F4D452F41726475696E6F220A66690A0A6966205B2021202D6420222441524455494E4F5F4944455F5041544822205D3B207468656E0A096563686F2022496E7374616C6C696E672041726475696E6F20494445206F6E20244F535F4E414D45202E2E2E220A096563686F2022446F776E6C6F6164696E67202761726475696E6F2D6E696768746C792D244F535F4E414D452E24415243484956455F464F524D41542720746F202761726475696E6F2E24415243484956455F464F524D415427202E2E2E220A096966205B2022244F535F49535F4C494E555822203D3D20223122205D3B207468656E0A090977676574202D4F202261726475696E6F2E24415243484956455F464F524D415422202268747470733A2F2F7777772E61726475696E6F2E63632F646F776E6C6F61642E7068703F663D2F61726475696E6F2D6E696768746C792D244F535F4E414D452E24415243484956455F464F524D415422203E202F6465762F6E756C6C20323E26310A09096563686F202245787472616374696E67202761726475696E6F2E24415243484956455F464F524D415427202E2E2E220A0909746172207866202261726475696E6F2E24415243484956455F464F524D415422203E202F6465762F6E756C6C0A09096D762061726475696E6F2D6E696768746C7920222441524455494E4F5F4944455F50415448220A09656C73650A09096375726C202D6F202261726475696E6F2E24415243484956455F464F524D415422202D4C202268747470733A2F2F7777772E61726475696E6F2E63632F646F776E6C6F61642E7068703F663D2F61726475696E6F2D6E696768746C792D244F535F4E414D452E24415243484956455F464F524D415422203E202F6465762F6E756C6C20323E26310A09096563686F202245787472616374696E67202761726475696E6F2E24415243484956455F464F524D415427202E2E2E220A0909756E7A6970202261726475696E6F2E24415243484956455F464F524D415422203E202F6465762F6E756C6C0A09096966205B2022244F535F49535F4D41434F5322203D3D20223122205D3B207468656E0A0909096D76202241726475696E6F2E6170702220222F4170706C69636174696F6E732F41726475696E6F2E617070220A0909656C73650A0909096D762061726475696E6F2D6E696768746C7920222441524455494E4F5F4944455F50415448220A090966690A0966690A09726D202D7266202261726475696E6F2E24415243484956455F464F524D4154220A0A096D6B646972202D7020222441524455494E4F5F5553525F504154482F6C6962726172696573220A096D6B646972202D7020222441524455494E4F5F5553525F504154482F6861726477617265220A0A096563686F202241726475696E6F2049444520496E7374616C6C656420696E20272441524455494E4F5F4944455F5041544827220A096563686F2022220A66690A0A66756E6374696F6E206275696C645F736B6574636828297B2023206275696C645F736B65746368203C6671626E3E203C706174682D746F2D696E6F3E205B65787472612D6F7074696F6E735D0A202020206966205B2022242322202D6C742032205D3B207468656E0A09096563686F20224552524F523A20496C6C6567616C206E756D626572206F6620706172616D6574657273220A09096563686F202255534147453A206275696C645F736B65746368203C6671626E3E203C706174682D746F2D696E6F3E205B65787472612D6F7074696F6E735D220A090972657475726E20310A0966690A0A096C6F63616C206671626E3D222431220A096C6F63616C20736B657463683D222432220A096C6F63616C20787472615F6F7074733D222433220A096C6F63616C2077696E5F6F7074733D22220A096966205B2022244F535F49535F57494E444F575322203D3D20223122205D3B207468656E0A09096C6F63616C2063746167735F76657273696F6E3D606C7320222441524455494E4F5F4944455F504154482F746F6F6C732D6275696C6465722F63746167732F22600A09096C6F63616C2070726570726F636573736F725F76657273696F6E3D606C7320222441524455494E4F5F4944455F504154482F746F6F6C732D6275696C6465722F61726475696E6F2D70726570726F636573736F722F22600A090977696E5F6F7074733D222D70726566733D72756E74696D652E746F6F6C732E63746167732E706174683D2441524455494E4F5F4944455F504154482F746F6F6C732D6275696C6465722F63746167732F2463746167735F76657273696F6E202D70726566733D72756E74696D652E746F6F6C732E61726475696E6F2D70726570726F636573736F722E706174683D2441524455494E4F5F4944455F504154482F746F6F6C732D6275696C6465722F61726475696E6F2D70726570726F636573736F722F2470726570726F636573736F725F76657273696F6E220A0966690A0A096563686F2022220A096563686F2022436F6D70696C696E672027222428626173656E616D65202224736B6574636822292227202E2E2E220A096D6B646972202D7020222441524455494E4F5F4255494C445F444952220A096D6B646972202D7020222441524455494E4F5F43414348455F444952220A092441524455494E4F5F4944455F504154482F61726475696E6F2D6275696C646572202D636F6D70696C65202D6C6F676765723D68756D616E202D636F72652D6170692D76657273696F6E3D3130383130205C0A09092D6671626E3D246671626E205C0A09092D7761726E696E67733D22616C6C22205C0A09092D746F6F6C7320222441524455494E4F5F4944455F504154482F746F6F6C732D6275696C64657222205C0A09092D746F6F6C7320222441524455494E4F5F4944455F504154482F746F6F6C7322205C0A09092D6275696C742D696E2D6C696272617269657320222441524455494E4F5F4944455F504154482F6C696272617269657322205C0A09092D686172647761726520222441524455494E4F5F4944455F504154482F686172647761726522205C0A09092D686172647761726520222441524455494E4F5F5553525F504154482F686172647761726522205C0A09092D6C696272617269657320222441524455494E4F5F5553525F504154482F6C696272617269657322205C0A09092D6275696C642D636163686520222441524455494E4F5F43414348455F44495222205C0A09092D6275696C642D7061746820222441524455494E4F5F4255494C445F44495222205C0A09092477696E5F6F7074732024787472615F6F707473202224736B65746368220A7D0A0A66756E6374696F6E20636F756E745F736B6574636865732829202320636F756E745F736B657463686573203C6578616D706C65732D706174683E0A7B0A096C6F63616C206578616D706C65733D222431220A20202020726D202D726620736B6574636865732E7478740A096966205B2021202D642022246578616D706C657322205D3B207468656E0A0909746F75636820736B6574636865732E7478740A090972657475726E20300A0966690A202020206C6F63616C20736B6574636865733D242866696E6420246578616D706C6573202D6E616D65202A2E696E6F290A202020206C6F63616C20736B657463686E756D3D300A20202020666F7220736B6574636820696E2024736B6574636865733B20646F0A20202020202020206C6F63616C20736B657463686469723D24286469726E616D652024736B65746368290A20202020202020206C6F63616C20736B657463686469726E616D653D2428626173656E616D652024736B65746368646972290A20202020202020206C6F63616C20736B657463686E616D653D2428626173656E616D652024736B65746368290A20202020202020206966205B5B2022247B736B657463686469726E616D657D2E696E6F2220213D202224736B657463686E616D6522205D5D3B207468656E0A202020202020202020202020636F6E74696E75650A202020202020202066693B0A20202020202020206966205B5B202D66202224736B657463686469722F2E746573742E736B697022205D5D3B207468656E0A202020202020202020202020636F6E74696E75650A202020202020202066690A20202020202020206563686F2024736B65746368203E3E20736B6574636865732E7478740A2020202020202020736B657463686E756D3D24282824736B657463686E756D202B203129290A20202020646F6E650A2020202072657475726E2024736B657463686E756D0A7D0A0A66756E6374696F6E206275696C645F736B65746368657328292023206275696C645F736B657463686573203C6671626E3E203C6578616D706C65732D706174683E203C6368756E6B3E203C746F74616C2D6368756E6B733E205B65787472612D6F7074696F6E735D0A7B0A202020206C6F63616C206671626E3D24310A202020206C6F63616C206578616D706C65733D24320A202020206C6F63616C206368756E6B5F696465783D24330A202020206C6F63616C206368756E6B735F6E756D3D24340A202020206C6F63616C20787472615F6F7074733D24350A0A202020206966205B2022242322202D6C742032205D3B207468656E0A09096563686F20224552524F523A20496C6C6567616C206E756D626572206F6620706172616D6574657273220A09096563686F202255534147453A206275696C645F736B657463686573203C6671626E3E203C6578616D706C65732D706174683E205B3C6368756E6B3E203C746F74616C2D6368756E6B733E5D205B65787472612D6F7074696F6E735D220A090972657475726E20310A0966690A0A202020206966205B2022242322202D6C742034205D3B207468656E0A09096368756E6B5F696465783D2230220A09096368756E6B735F6E756D3D2231220A0909787472615F6F7074733D24330A0966690A0A096966205B2022246368756E6B735F6E756D22202D6C652030205D3B207468656E0A09096563686F20224552524F523A204368756E6B7320636F756E74206D75737420626520706F736974697665206E756D626572220A090972657475726E20310A0966690A096966205B2022246368756E6B5F6964657822202D67652022246368756E6B735F6E756D22205D3B207468656E0A09096563686F20224552524F523A204368756E6B20696E646578206D757374206265206C657373207468616E206368756E6B7320636F756E74220A090972657475726E20310A0966690A0A09736574202B650A20202020636F756E745F736B6574636865732022246578616D706C6573220A202020206C6F63616C20736B65746368636F756E743D243F0A09736574202D650A202020206C6F63616C20736B6574636865733D242863617420736B6574636865732E747874290A20202020726D202D726620736B6574636865732E7478740A0A202020206C6F63616C206368756E6B5F73697A653D2428282024736B65746368636F756E74202F20246368756E6B735F6E756D2029290A202020206C6F63616C20616C6C5F6368756E6B733D24282820246368756E6B735F6E756D202A20246368756E6B5F73697A652029290A202020206966205B202224616C6C5F6368756E6B7322202D6C74202224736B65746368636F756E7422205D3B207468656E0A20202020096368756E6B5F73697A653D24282820246368756E6B5F73697A65202B20312029290A2020202066690A0A202020206C6F63616C2073746172745F696E6465783D24282820246368756E6B5F69646578202A20246368756E6B5F73697A652029290A202020206966205B202224736B65746368636F756E7422202D6C6520222473746172745F696E64657822205D3B207468656E0A20202020096563686F2022536B697070696E67206A6F62220A202020200972657475726E20300A2020202066690A0A202020206C6F63616C20656E645F696E6465783D2428282024282820246368756E6B5F69646578202B2031202929202A20246368756E6B5F73697A652029290A202020206966205B202224656E645F696E64657822202D6774202224736B65746368636F756E7422205D3B207468656E0A2020202009656E645F696E6465783D24736B65746368636F756E740A2020202066690A0A202020206C6F63616C2073746172745F6E756D3D242828202473746172745F696E646578202B20312029290A202020206563686F2022466F756E642024736B65746368636F756E7420536B657463686573223B0A202020206563686F20224368756E6B20436F756E74203A20246368756E6B735F6E756D220A202020206563686F20224368756E6B2053697A6520203A20246368756E6B5F73697A65220A202020206563686F2022537461727420536B657463683A202473746172745F6E756D220A202020206563686F2022456E6420536B6574636820203A2024656E645F696E646578220A0A202020206C6F63616C20736B657463686E756D3D300A20202020666F7220736B6574636820696E2024736B6574636865733B20646F0A20202020202020206C6F63616C20736B657463686469723D24286469726E616D652024736B65746368290A20202020202020206C6F63616C20736B657463686469726E616D653D2428626173656E616D652024736B65746368646972290A20202020202020206C6F63616C20736B657463686E616D653D2428626173656E616D652024736B65746368290A20202020202020206966205B2022247B736B657463686469726E616D657D2E696E6F2220213D202224736B657463686E616D6522205D205C0A20202020202020207C7C205B202D66202224736B657463686469722F2E746573742E736B697022205D3B207468656E0A202020202020202020202020636F6E74696E75650A202020202020202066690A2020202020202020736B657463686E756D3D24282824736B657463686E756D202B203129290A20202020202020206966205B202224736B657463686E756D22202D6C6520222473746172745F696E64657822205D205C0A20202020202020207C7C205B202224736B657463686E756D22202D6774202224656E645F696E64657822205D3B207468656E0A202020202020202009636F6E74696E75650A202020202020202066690A20202020202020206275696C645F736B657463682022246671626E22202224736B6574636822202224787472615F6F707473220A20202020202020206C6F63616C20726573756C743D243F0A20202020202020206966205B2024726573756C74202D6E652030205D3B207468656E0A20202020202020202020202072657475726E2024726573756C740A202020202020202066690A20202020646F6E650A2020202072657475726E20300A7D0A .sh install-platformio 23212F62696E2F626173680A0A6563686F2022496E7374616C6C696E6720507974686F6E20576865656C202E2E2E220A70697020696E7374616C6C20776865656C203E202F6465762F6E756C6C20323E26310A0A6563686F2022496E7374616C6C696E6720506C6174666F726D494F202E2E2E220A70697020696E7374616C6C202D5520706C6174666F726D696F203E202F6465762F6E756C6C20323E26310A0A6563686F2022506C6174666F726D494F20686173206265656E20696E7374616C6C6564220A6563686F2022220A0A0A66756E6374696F6E206275696C645F70696F5F736B6574636828297B2023206275696C645F70696F5F736B65746368203C626F6172643E203C706174682D746F2D696E6F3E0A202020206966205B2022242322202D6C742032205D3B207468656E0A20202020202020206563686F20224552524F523A20496C6C6567616C206E756D626572206F6620706172616D6574657273220A20202020202020206563686F202255534147453A206275696C645F70696F5F736B65746368203C626F6172643E203C706174682D746F2D696E6F3E220A202020202020202072657475726E20310A2020202066690A0A096C6F63616C20626F6172643D222431220A096C6F63616C20736B657463683D222432220A096C6F63616C20736B657463685F6469723D24286469726E616D65202224736B6574636822290A096563686F2022220A096563686F2022436F6D70696C696E672027222428626173656E616D65202224736B6574636822292227202E2E2E220A09707974686F6E202D6D20706C6174666F726D696F206369202D6C20272E27202D2D626F617264202224626F61726422202224736B657463685F64697222202D2D70726F6A6563742D6F7074696F6E3D22626F6172645F6275696C642E706172746974696F6E73203D20687567655F6170702E637376220A7D0A0A66756E6374696F6E20636F756E745F736B6574636865732829202320636F756E745F736B657463686573203C6578616D706C65732D706174683E0A7B0A202020206C6F63616C206578616D706C65733D222431220A20202020726D202D726620736B6574636865732E7478740A202020206966205B2021202D642022246578616D706C657322205D3B207468656E0A2020202020202020746F75636820736B6574636865732E7478740A202020202020202072657475726E20300A2020202066690A202020206C6F63616C20736B6574636865733D242866696E6420246578616D706C6573202D6E616D65202A2E696E6F290A202020206C6F63616C20736B657463686E756D3D300A20202020666F7220736B6574636820696E2024736B6574636865733B20646F0A20202020202020206C6F63616C20736B657463686469723D24286469726E616D652024736B65746368290A20202020202020206C6F63616C20736B657463686469726E616D653D2428626173656E616D652024736B65746368646972290A20202020202020206C6F63616C20736B657463686E616D653D2428626173656E616D652024736B65746368290A20202020202020206966205B5B2022247B736B657463686469726E616D657D2E696E6F2220213D202224736B657463686E616D6522205D5D3B207468656E0A202020202020202020202020636F6E74696E75650A202020202020202066693B0A20202020202020206966205B5B202D66202224736B657463686469722F2E746573742E736B697022205D5D3B207468656E0A202020202020202020202020636F6E74696E75650A202020202020202066690A20202020202020206563686F2024736B65746368203E3E20736B6574636865732E7478740A2020202020202020736B657463686E756D3D24282824736B657463686E756D202B203129290A20202020646F6E650A2020202072657475726E2024736B657463686E756D0A7D0A0A66756E6374696F6E206275696C645F70696F5F736B65746368657328292023206275696C645F70696F5F736B657463686573203C626F6172643E203C6578616D706C65732D706174683E203C6368756E6B3E203C746F74616C2D6368756E6B733E0A7B0A202020206966205B2022242322202D6C742032205D3B207468656E0A20202020202020206563686F20224552524F523A20496C6C6567616C206E756D626572206F6620706172616D6574657273220A20202020202020206563686F202255534147453A206275696C645F70696F5F736B657463686573203C626F6172643E203C6578616D706C65732D706174683E205B3C6368756E6B3E203C746F74616C2D6368756E6B733E5D220A202020202020202072657475726E20310A2020202066690A0A202020206C6F63616C20626F6172643D24310A202020206C6F63616C206578616D706C65733D24320A202020206C6F63616C206368756E6B5F696465783D24330A202020206C6F63616C206368756E6B735F6E756D3D24340A0A202020206966205B2022242322202D6C742034205D3B207468656E0A20202020202020206368756E6B5F696465783D2230220A20202020202020206368756E6B735F6E756D3D2231220A2020202066690A0A096966205B2022246368756E6B735F6E756D22202D6C652030205D3B207468656E0A09096563686F20224552524F523A204368756E6B7320636F756E74206D75737420626520706F736974697665206E756D626572220A090972657475726E20310A0966690A096966205B2022246368756E6B5F6964657822202D67652022246368756E6B735F6E756D22205D3B207468656E0A09096563686F20224552524F523A204368756E6B20696E646578206D757374206265206C657373207468616E206368756E6B7320636F756E74220A090972657475726E20310A0966690A0A20202020736574202B650A20202020636F756E745F736B6574636865732022246578616D706C6573220A202020206C6F63616C20736B65746368636F756E743D243F0A20202020736574202D650A202020206C6F63616C20736B6574636865733D242863617420736B6574636865732E747874290A20202020726D202D726620736B6574636865732E7478740A0A202020206C6F63616C206368756E6B5F73697A653D2428282024736B65746368636F756E74202F20246368756E6B735F6E756D2029290A202020206C6F63616C20616C6C5F6368756E6B733D24282820246368756E6B735F6E756D202A20246368756E6B5F73697A652029290A202020206966205B202224616C6C5F6368756E6B7322202D6C74202224736B65746368636F756E7422205D3B207468656E0A20202020096368756E6B5F73697A653D24282820246368756E6B5F73697A65202B20312029290A2020202066690A0A202020206C6F63616C2073746172745F696E6465783D24282820246368756E6B5F69646578202A20246368756E6B5F73697A652029290A202020206966205B202224736B65746368636F756E7422202D6C6520222473746172745F696E64657822205D3B207468656E0A20202020096563686F2022536B697070696E67206A6F62220A202020200972657475726E20300A2020202066690A0A202020206C6F63616C20656E645F696E6465783D2428282024282820246368756E6B5F69646578202B2031202929202A20246368756E6B5F73697A652029290A202020206966205B202224656E645F696E64657822202D6774202224736B65746368636F756E7422205D3B207468656E0A2020202009656E645F696E6465783D24736B65746368636F756E740A2020202066690A0A202020206C6F63616C2073746172745F6E756D3D242828202473746172745F696E646578202B20312029290A202020206563686F2022466F756E642024736B65746368636F756E7420536B657463686573223B0A202020206563686F20224368756E6B20436F756E74203A20246368756E6B735F6E756D220A202020206563686F20224368756E6B2053697A6520203A20246368756E6B5F73697A65220A202020206563686F2022537461727420536B657463683A202473746172745F6E756D220A202020206563686F2022456E6420536B6574636820203A2024656E645F696E646578220A0A202020206C6F63616C20736B657463686E756D3D300A20202020666F7220736B6574636820696E2024736B6574636865733B20646F0A20202020202020206C6F63616C20736B657463686469723D24286469726E616D652024736B65746368290A20202020202020206C6F63616C20736B657463686469726E616D653D2428626173656E616D652024736B65746368646972290A20202020202020206C6F63616C20736B657463686E616D653D2428626173656E616D652024736B65746368290A20202020202020206966205B2022247B736B657463686469726E616D657D2E696E6F2220213D202224736B657463686E616D6522205D205C0A20202020202020207C7C205B202D66202224736B657463686469722F2E746573742E736B697022205D3B207468656E0A202020202020202020202020636F6E74696E75650A202020202020202066690A2020202020202020736B657463686E756D3D24282824736B657463686E756D202B203129290A20202020202020206966205B202224736B657463686E756D22202D6C6520222473746172745F696E64657822205D205C0A20202020202020207C7C205B202224736B657463686E756D22202D6774202224656E645F696E64657822205D3B207468656E0A202020202020202009636F6E74696E75650A202020202020202066690A20202020202020206275696C645F70696F5F736B65746368202224626F61726422202224736B65746368220A20202020202020206C6F63616C20726573756C743D243F0A20202020202020206966205B2024726573756C74202D6E652030205D3B207468656E0A20202020202020202020202072657475726E2024726573756C740A202020202020202066690A20202020646F6E650A2020202072657475726E20300A7D0A .sh on-push 23212F62696E2F626173680A0A736574202D650A0A6966205B2021202D7A2022245452415649535F4255494C445F44495222205D3B207468656E0A096578706F7274204749544855425F574F524B53504143453D22245452415649535F4255494C445F444952220A096578706F7274204749544855425F5245504F5349544F52593D22245452415649535F5245504F5F534C5547220A656C6966205B202D7A2022244749544855425F574F524B535041434522205D3B207468656E0A096578706F7274204749544855425F574F524B53504143453D2224505744220A096578706F7274204749544855425F5245504F5349544F52593D226D652D6E6F2D6465762F4173796E63544350220A66690A0A4348554E4B5F494E4445583D24310A4348554E4B535F434E543D24320A4255494C445F50494F3D300A6966205B2022242322202D6C742032205D207C7C205B2022244348554E4B535F434E5422202D6C652030205D3B207468656E0A094348554E4B5F494E4445583D300A094348554E4B535F434E543D310A656C6966205B2022244348554E4B5F494E44455822202D67742022244348554E4B535F434E5422205D3B207468656E0A094348554E4B5F494E4445583D244348554E4B535F434E540A656C6966205B2022244348554E4B5F494E44455822202D65712022244348554E4B535F434E5422205D3B207468656E0A094255494C445F50494F3D310A66690A0A6966205B2022244255494C445F50494F22202D65712030205D3B207468656E0A09232041726475696E6F49444520546573740A09736F75726365202E2F2E6769746875622F736372697074732F696E7374616C6C2D61726475696E6F2D6964652E73680A09736F75726365202E2F2E6769746875622F736372697074732F696E7374616C6C2D61726475696E6F2D636F72652D65737033322E73680A0A096563686F2022496E7374616C6C696E67204173796E63544350202E2E2E220A096370202D72662022244749544855425F574F524B53504143452220222441524455494E4F5F5553525F504154482F6C69627261726965732F4173796E63544350220A0A094651424E3D226573707265737369663A65737033323A65737033323A505352414D3D656E61626C65642C506172746974696F6E536368656D653D687567655F617070220A096275696C645F736B6574636865732022244651424E222022244749544855425F574F524B53504143452F6578616D706C6573220A096966205B20212022244F535F49535F57494E444F575322203D3D20223122205D3B207468656E0A09096563686F2022496E7374616C6C696E67204553504173796E63576562536572766572202E2E2E220A090967697420636C6F6E652068747470733A2F2F6769746875622E636F6D2F6D652D6E6F2D6465762F4553504173796E6357656253657276657220222441524455494E4F5F5553525F504154482F6C69627261726965732F4553504173796E6357656253657276657222203E202F6465762F6E756C6C20323E26310A0A09096563686F2022496E7374616C6C696E672041726475696E6F4A736F6E202E2E2E220A090967697420636C6F6E652068747470733A2F2F6769746875622E636F6D2F62626C616E63686F6E2F41726475696E6F4A736F6E20222441524455494E4F5F5553525F504154482F6C69627261726965732F41726475696E6F4A736F6E22203E202F6465762F6E756C6C20323E26310A0A09096275696C645F736B6574636865732022244651424E2220222441524455494E4F5F5553525F504154482F6C69627261726965732F4553504173796E635765625365727665722F6578616D706C6573220A0966690A656C73650A092320506C6174666F726D494F20546573740A09736F75726365202E2F2E6769746875622F736372697074732F696E7374616C6C2D706C6174666F726D696F2E73680A0A096563686F2022496E7374616C6C696E67204173796E63544350202E2E2E220A09707974686F6E202D6D20706C6174666F726D696F206C6962202D2D73746F726167652D6469722022244749544855425F574F524B53504143452220696E7374616C6C0A0A09424F4152443D226573703332646576220A096275696C645F70696F5F736B657463686573202224424F415244222022244749544855425F574F524B53504143452F6578616D706C6573220A0A096966205B5B2022244F53545950452220213D202263796777696E22205D5D202626205B5B2022244F53545950452220213D20226D73797322205D5D202626205B5B2022244F53545950452220213D202277696E333222205D5D3B207468656E0A09096563686F2022496E7374616C6C696E67204553504173796E63576562536572766572202E2E2E220A0909707974686F6E202D6D20706C6174666F726D696F206C6962202D6720696E7374616C6C2068747470733A2F2F6769746875622E636F6D2F6D652D6E6F2D6465762F4553504173796E635765625365727665722E676974203E202F6465762F6E756C6C20323E26310A090967697420636C6F6E652068747470733A2F2F6769746875622E636F6D2F6D652D6E6F2D6465762F4553504173796E63576562536572766572202224484F4D452F4553504173796E6357656253657276657222203E202F6465762F6E756C6C20323E26310A0A09096563686F2022496E7374616C6C696E672041726475696E6F4A736F6E202E2E2E220A0909707974686F6E202D6D20706C6174666F726D696F206C6962202D6720696E7374616C6C2068747470733A2F2F6769746875622E636F6D2F62626C616E63686F6E2F41726475696E6F4A736F6E2E676974203E202F6465762F6E756C6C20323E26310A0A09096275696C645F70696F5F736B657463686573202224424F41524422202224484F4D452F4553504173796E635765625365727665722F6578616D706C6573220A0966690A66690A .sh stale 2320436F6E66696775726174696F6E20666F722070726F626F742D7374616C65202D2068747470733A2F2F6769746875622E636F6D2F70726F626F742F7374616C650A0A64617973556E74696C5374616C653A2036300A64617973556E74696C436C6F73653A2031340A6C696D697450657252756E3A2033300A7374616C654C6162656C3A207374616C650A6578656D70744C6162656C733A0A20202D2070696E6E65640A20202D2073656375726974790A20202D2022746F20626520696D706C656D656E746564220A20202D2022666F72207265666572656E6365220A20202D20226D6F766520746F205052220A20202D2022656E68616E63656D656E74220A0A6F6E6C793A206973737565730A6F6E6C794C6162656C733A205B5D0A6578656D707450726F6A656374733A2066616C73650A6578656D70744D696C6573746F6E65733A2066616C73650A6578656D707441737369676E6565733A2066616C73650A0A6D61726B436F6D6D656E743A203E0A20205B5354414C455F5345545D205468697320697373756520686173206265656E206175746F6D61746963616C6C79206D61726B6564206173207374616C65206265636175736520697420686173206E6F74206861640A2020726563656E742061637469766974792E2049742077696C6C20626520636C6F73656420696E2031342064617973206966206E6F2066757274686572206163746976697479206F63637572732E205468616E6B20796F750A2020666F7220796F757220636F6E747269627574696F6E732E0A0A756E6D61726B436F6D6D656E743A203E0A20205B5354414C455F434C525D205468697320697373756520686173206265656E2072656D6F7665642066726F6D20746865207374616C652071756575652E20506C6561736520656E7375726520616374697669747920746F206B656570206974206F70656E696E20746865206675747572652E0A0A636C6F7365436F6D6D656E743A203E0A20205B5354414C455F44454C5D2054686973207374616C6520697373756520686173206265656E206175746F6D61746963616C6C7920636C6F7365642E205468616E6B20796F7520666F7220796F757220636F6E747269627574696F6E732E0A0A .yml workflows push 6E616D653A204173796E63205443502043490A0A6F6E3A0A2020707573683A0A202020206272616E636865733A0A202020202D206D61737465720A202020202D2072656C656173652F2A0A202070756C6C5F726571756573743A0A0A6A6F62733A0A0A20206275696C642D61726475696E6F3A0A202020206E616D653A2041726475696E6F206F6E20247B7B206D61747269782E6F73207D7D0A2020202072756E732D6F6E3A20247B7B206D61747269782E6F73207D7D0A2020202073747261746567793A0A2020202020206D61747269783A0A20202020202020206F733A205B7562756E74752D6C61746573742C206D61634F532D6C61746573745D0A2020202073746570733A0A202020202D20757365733A20616374696F6E732F636865636B6F75744076310A202020202D206E616D653A204275696C642054657374730A20202020202072756E3A2062617368202E2F2E6769746875622F736372697074732F6F6E2D707573682E7368203020310A0A20206275696C642D70696F3A0A202020206E616D653A20506C6174666F726D494F206F6E20247B7B206D61747269782E6F73207D7D0A2020202072756E732D6F6E3A20247B7B206D61747269782E6F73207D7D0A2020202073747261746567793A0A2020202020206D61747269783A0A20202020202020206F733A205B7562756E74752D6C61746573742C206D61634F532D6C61746573745D0A2020202073746570733A0A202020202D20757365733A20616374696F6E732F636865636B6F75744076310A202020202D206E616D653A204275696C642054657374730A20202020202072756E3A2062617368202E2F2E6769746875622F736372697074732F6F6E2D707573682E7368203120310A .yml .gitignore 0A2E44535F53746F72650A .travis 7375646F3A2066616C73650A6C616E67756167653A20707974686F6E0A6F733A0A20202D206C696E75780A0A6769743A0A202064657074683A2066616C73650A0A7374616765733A0A20202D206275696C640A0A6A6F62733A0A2020696E636C7564653A0A0A202020202D206E616D653A202241726475696E6F204275696C64220A20202020202069663A2074616720495320626C616E6B20414E44202874797065203D2070756C6C5F72657175657374204F52202874797065203D207075736820414E44206272616E6368203D206D617374657229290A20202020202073746167653A206275696C640A2020202020207363726970743A206261736820245452415649535F4255494C445F4449522F2E6769746875622F736372697074732F6F6E2D707573682E73680A0A202020202D206E616D653A2022506C6174666F726D494F204275696C64220A20202020202069663A2074616720495320626C616E6B20414E44202874797065203D2070756C6C5F72657175657374204F52202874797065203D207075736820414E44206272616E6368203D206D617374657229290A20202020202073746167653A206275696C640A2020202020207363726970743A206261736820245452415649535F4255494C445F4449522F2E6769746875622F736372697074732F6F6E2D707573682E7368203120310A0A6E6F74696669636174696F6E733A0A2020656D61696C3A0A202020206F6E5F737563636573733A206368616E67650A202020206F6E5F6661696C7572653A206368616E67650A2020776562686F6F6B733A0A2020202075726C733A0A2020202020202D2068747470733A2F2F776562686F6F6B732E6769747465722E696D2F652F36306536356430633738656130613932303334370A202020206F6E5F737563636573733A206368616E6765202023206F7074696F6E733A205B616C776179737C6E657665727C6368616E67655D2064656661756C743A20616C776179730A202020206F6E5F6661696C7572653A20616C77617973202023206F7074696F6E733A205B616C776179737C6E657665727C6368616E67655D2064656661756C743A20616C776179730A202020206F6E5F73746172743A2066616C73652020202020232064656661756C743A2066616C73650A .yml CMakeLists 73657428434F4D504F4E454E545F535243444952530A2020202022737263220A290A0A73657428434F4D504F4E454E545F4144445F494E434C554445444952530A2020202022737263220A290A0A73657428434F4D504F4E454E545F52455155495245530A202020202261726475696E6F2D6573703332220A290A0A72656769737465725F636F6D706F6E656E7428290A0A7461726765745F636F6D70696C655F6F7074696F6E7328247B434F4D504F4E454E545F5441524745547D2050524956415445202D666E6F2D72747469290A .txt component 434F4D504F4E454E545F4144445F494E434C55444544495253203A3D207372630A434F4D504F4E454E545F53524344495253203A3D207372630A435858464C414753202B3D202D666E6F2D727474690A .mk Kconfig 6D656E7520224173796E6354435020436F6E66696775726174696F6E220A0A63686F696365204153594E435F5443505F52554E4E494E475F434F52450A20202020626F6F6C2022436F7265206F6E207768696368204173796E635443502773207468726561642069732072756E6E696E67220A2020202064656661756C74204153594E435F5443505F52554E5F434F5245310A2020202068656C700A202020202020202053656C656374206F6E20776869636820636F7265204173796E635443502069732072756E6E696E670A0A20202020636F6E666967204153594E435F5443505F52554E5F434F5245300A2020202020202020626F6F6C2022434F52452030220A20202020636F6E666967204153594E435F5443505F52554E5F434F5245310A2020202020202020626F6F6C2022434F52452031220A20202020636F6E666967204153594E435F5443505F52554E5F4E4F5F414646494E4954590A2020202020202020626F6F6C2022424F5448220A0A656E6463686F6963650A0A636F6E666967204153594E435F5443505F52554E4E494E475F434F52450A20202020696E740A2020202064656661756C742030206966204153594E435F5443505F52554E5F434F5245300A2020202064656661756C742031206966204153594E435F5443505F52554E5F434F5245310A2020202064656661756C74202D31206966204153594E435F5443505F52554E5F4E4F5F414646494E4954590A0A636F6E666967204153594E435F5443505F5553455F5744540A20202020626F6F6C2022456E61626C652057445420666F7220746865204173796E63544350207461736B220A2020202064656661756C74202279220A2020202068656C700A2020202020202020456E61626C652057445420666F7220746865204173796E63544350207461736B2C20736F2069742077696C6C207472696767657220696620612068616E646C6572206973206C6F636B696E6720746865207468726561642E0A0A656E646D656E750A .projbuild library 7B0A2020226E616D65223A224173796E63544350222C0A2020226465736372697074696F6E223A224173796E6368726F6E6F757320544350204C69627261727920666F72204553503332222C0A2020226B6579776F726473223A226173796E632C746370222C0A202022617574686F7273223A0A20207B0A20202020226E616D65223A202248726973746F20476F63686B6F76222C0A20202020226D61696E7461696E6572223A20747275650A20207D2C0A2020227265706F7369746F7279223A0A20207B0A202020202274797065223A2022676974222C0A202020202275726C223A202268747470733A2F2F6769746875622E636F6D2F6D652D6E6F2D6465762F4173796E635443502E676974220A20207D2C0A20202276657273696F6E223A2022312E312E31222C0A2020226C6963656E7365223A20224C47504C2D332E30222C0A2020226672616D65776F726B73223A202261726475696E6F222C0A202022706C6174666F726D73223A20226573707265737369663332222C0A2020226275696C64223A207B0A20202020226C6962436F6D7061744D6F6465223A20320A20207D20200A7D0A .json library 6E616D653D4173796E635443500A76657273696F6E3D312E312E310A617574686F723D4D652D4E6F2D4465760A6D61696E7461696E65723D4D652D4E6F2D4465760A73656E74656E63653D4173796E6320544350204C69627261727920666F722045535033320A7061726167726170683D4173796E6320544350204C69627261727920666F722045535033320A63617465676F72793D4F746865720A75726C3D68747470733A2F2F6769746875622E636F6D2F6D652D6E6F2D6465762F4173796E635443500A617263686974656374757265733D2A0A .properties LICENSE 20202020202020202020202020202020202020474E55204C45535345522047454E4552414C205055424C4943204C4943454E53450A202020202020202020202020202020202020202020202056657273696F6E20332C203239204A756E6520323030370A0A20436F70797269676874202843292032303037204672656520536F66747761726520466F756E646174696F6E2C20496E632E203C687474703A2F2F6673662E6F72672F3E0A2045766572796F6E65206973207065726D697474656420746F20636F707920616E64206469737472696275746520766572626174696D20636F706965730A206F662074686973206C6963656E736520646F63756D656E742C20627574206368616E67696E67206974206973206E6F7420616C6C6F7765642E0A0A0A2020546869732076657273696F6E206F662074686520474E55204C65737365722047656E6572616C205075626C6963204C6963656E736520696E636F72706F72617465730A746865207465726D7320616E6420636F6E646974696F6E73206F662076657273696F6E2033206F662074686520474E552047656E6572616C205075626C69630A4C6963656E73652C20737570706C656D656E74656420627920746865206164646974696F6E616C207065726D697373696F6E73206C69737465642062656C6F772E0A0A2020302E204164646974696F6E616C20446566696E6974696F6E732E0A0A2020417320757365642068657265696E2C202274686973204C6963656E7365222072656665727320746F2076657273696F6E2033206F662074686520474E55204C65737365720A47656E6572616C205075626C6963204C6963656E73652C20616E64207468652022474E552047504C222072656665727320746F2076657273696F6E2033206F662074686520474E550A47656E6572616C205075626C6963204C6963656E73652E0A0A202022546865204C696272617279222072656665727320746F206120636F766572656420776F726B20676F7665726E65642062792074686973204C6963656E73652C0A6F74686572207468616E20616E204170706C69636174696F6E206F72206120436F6D62696E656420576F726B20617320646566696E65642062656C6F772E0A0A2020416E20224170706C69636174696F6E2220697320616E7920776F726B2074686174206D616B657320757365206F6620616E20696E746572666163652070726F76696465640A627920746865204C6962726172792C20627574207768696368206973206E6F74206F7468657277697365206261736564206F6E20746865204C6962726172792E0A446566696E696E67206120737562636C617373206F66206120636C61737320646566696E656420627920746865204C696272617279206973206465656D65642061206D6F64650A6F66207573696E6720616E20696E746572666163652070726F766964656420627920746865204C6962726172792E0A0A2020412022436F6D62696E656420576F726B22206973206120776F726B2070726F647563656420627920636F6D62696E696E67206F72206C696E6B696E6720616E0A4170706C69636174696F6E207769746820746865204C6962726172792E202054686520706172746963756C61722076657273696F6E206F6620746865204C6962726172790A776974682077686963682074686520436F6D62696E656420576F726B20776173206D61646520697320616C736F2063616C6C65642074686520224C696E6B65640A56657273696F6E222E0A0A202054686520224D696E696D616C20436F72726573706F6E64696E6720536F757263652220666F72206120436F6D62696E656420576F726B206D65616E73207468650A436F72726573706F6E64696E6720536F7572636520666F722074686520436F6D62696E656420576F726B2C206578636C7564696E6720616E7920736F7572636520636F64650A666F7220706F7274696F6E73206F662074686520436F6D62696E656420576F726B20746861742C20636F6E7369646572656420696E2069736F6C6174696F6E2C206172650A6261736564206F6E20746865204170706C69636174696F6E2C20616E64206E6F74206F6E20746865204C696E6B65642056657273696F6E2E0A0A20205468652022436F72726573706F6E64696E67204170706C69636174696F6E20436F64652220666F72206120436F6D62696E656420576F726B206D65616E73207468650A6F626A65637420636F646520616E642F6F7220736F7572636520636F646520666F7220746865204170706C69636174696F6E2C20696E636C7564696E6720616E7920646174610A616E64207574696C6974792070726F6772616D73206E656564656420666F7220726570726F647563696E672074686520436F6D62696E656420576F726B2066726F6D207468650A4170706C69636174696F6E2C20627574206578636C7564696E67207468652053797374656D204C6962726172696573206F662074686520436F6D62696E656420576F726B2E0A0A2020312E20457863657074696F6E20746F2053656374696F6E2033206F662074686520474E552047504C2E0A0A2020596F75206D617920636F6E766579206120636F766572656420776F726B20756E6465722073656374696F6E73203320616E642034206F662074686973204C6963656E73650A776974686F7574206265696E6720626F756E642062792073656374696F6E2033206F662074686520474E552047504C2E0A0A2020322E20436F6E766579696E67204D6F6469666965642056657273696F6E732E0A0A2020496620796F75206D6F64696679206120636F7079206F6620746865204C6962726172792C20616E642C20696E20796F7572206D6F64696669636174696F6E732C20610A666163696C6974792072656665727320746F20612066756E6374696F6E206F72206461746120746F20626520737570706C69656420627920616E204170706C69636174696F6E0A7468617420757365732074686520666163696C69747920286F74686572207468616E20617320616E20617267756D656E7420706173736564207768656E207468650A666163696C69747920697320696E766F6B6564292C207468656E20796F75206D617920636F6E766579206120636F7079206F6620746865206D6F6469666965640A76657273696F6E3A0A0A202020612920756E6465722074686973204C6963656E73652C2070726F7669646564207468617420796F75206D616B65206120676F6F64206661697468206566666F727420746F0A202020656E7375726520746861742C20696E20746865206576656E7420616E204170706C69636174696F6E20646F6573206E6F7420737570706C79207468650A20202066756E6374696F6E206F7220646174612C2074686520666163696C697479207374696C6C206F706572617465732C20616E6420706572666F726D730A20202077686174657665722070617274206F662069747320707572706F73652072656D61696E73206D65616E696E6766756C2C206F720A0A202020622920756E6465722074686520474E552047504C2C2077697468206E6F6E65206F6620746865206164646974696F6E616C207065726D697373696F6E73206F660A20202074686973204C6963656E7365206170706C696361626C6520746F207468617420636F70792E0A0A2020332E204F626A65637420436F646520496E636F72706F726174696E67204D6174657269616C2066726F6D204C696272617279204865616465722046696C65732E0A0A2020546865206F626A65637420636F646520666F726D206F6620616E204170706C69636174696F6E206D617920696E636F72706F72617465206D6174657269616C2066726F6D0A61206865616465722066696C6520746861742069732070617274206F6620746865204C6962726172792E2020596F75206D617920636F6E7665792073756368206F626A6563740A636F646520756E646572207465726D73206F6620796F75722063686F6963652C2070726F766964656420746861742C2069662074686520696E636F72706F72617465640A6D6174657269616C206973206E6F74206C696D6974656420746F206E756D65726963616C20706172616D65746572732C2064617461207374727563747572650A6C61796F75747320616E64206163636573736F72732C206F7220736D616C6C206D6163726F732C20696E6C696E652066756E6374696F6E7320616E642074656D706C617465730A2874656E206F72206665776572206C696E657320696E206C656E677468292C20796F7520646F20626F7468206F662074686520666F6C6C6F77696E673A0A0A202020612920476976652070726F6D696E656E74206E6F746963652077697468206561636820636F7079206F6620746865206F626A65637420636F64652074686174207468650A2020204C696272617279206973207573656420696E20697420616E64207468617420746865204C69627261727920616E642069747320757365206172650A202020636F76657265642062792074686973204C6963656E73652E0A0A2020206229204163636F6D70616E7920746865206F626A65637420636F64652077697468206120636F7079206F662074686520474E552047504C20616E642074686973206C6963656E73650A202020646F63756D656E742E0A0A2020342E20436F6D62696E656420576F726B732E0A0A2020596F75206D617920636F6E766579206120436F6D62696E656420576F726B20756E646572207465726D73206F6620796F75722063686F69636520746861742C0A74616B656E20746F6765746865722C206566666563746976656C7920646F206E6F74207265737472696374206D6F64696669636174696F6E206F66207468650A706F7274696F6E73206F6620746865204C69627261727920636F6E7461696E656420696E2074686520436F6D62696E656420576F726B20616E6420726576657273650A656E67696E656572696E6720666F7220646562756767696E672073756368206D6F64696669636174696F6E732C20696620796F7520616C736F20646F2065616368206F660A74686520666F6C6C6F77696E673A0A0A202020612920476976652070726F6D696E656E74206E6F746963652077697468206561636820636F7079206F662074686520436F6D62696E656420576F726B20746861740A202020746865204C696272617279206973207573656420696E20697420616E64207468617420746865204C69627261727920616E642069747320757365206172650A202020636F76657265642062792074686973204C6963656E73652E0A0A2020206229204163636F6D70616E792074686520436F6D62696E656420576F726B2077697468206120636F7079206F662074686520474E552047504C20616E642074686973206C6963656E73650A202020646F63756D656E742E0A0A202020632920466F72206120436F6D62696E656420576F726B207468617420646973706C61797320636F70797269676874206E6F746963657320647572696E670A202020657865637574696F6E2C20696E636C7564652074686520636F70797269676874206E6F7469636520666F7220746865204C69627261727920616D6F6E670A2020207468657365206E6F74696365732C2061732077656C6C2061732061207265666572656E636520646972656374696E6720746865207573657220746F207468650A202020636F70696573206F662074686520474E552047504C20616E642074686973206C6963656E736520646F63756D656E742E0A0A202020642920446F206F6E65206F662074686520666F6C6C6F77696E673A0A0A20202020202020302920436F6E76657920746865204D696E696D616C20436F72726573706F6E64696E6720536F7572636520756E64657220746865207465726D73206F6620746869730A202020202020204C6963656E73652C20616E642074686520436F72726573706F6E64696E67204170706C69636174696F6E20436F646520696E206120666F726D0A202020202020207375697461626C6520666F722C20616E6420756E646572207465726D732074686174207065726D69742C20746865207573657220746F0A202020202020207265636F6D62696E65206F722072656C696E6B20746865204170706C69636174696F6E20776974682061206D6F6469666965642076657273696F6E206F660A20202020202020746865204C696E6B65642056657273696F6E20746F2070726F647563652061206D6F64696669656420436F6D62696E656420576F726B2C20696E207468650A202020202020206D616E6E6572207370656369666965642062792073656374696F6E2036206F662074686520474E552047504C20666F7220636F6E766579696E670A20202020202020436F72726573706F6E64696E6720536F757263652E0A0A202020202020203129205573652061207375697461626C6520736861726564206C696272617279206D656368616E69736D20666F72206C696E6B696E672077697468207468650A202020202020204C6962726172792E202041207375697461626C65206D656368616E69736D206973206F6E6520746861742028612920757365732061742072756E2074696D650A202020202020206120636F7079206F6620746865204C69627261727920616C72656164792070726573656E74206F6E207468652075736572277320636F6D70757465720A2020202020202073797374656D2C20616E64202862292077696C6C206F7065726174652070726F7065726C7920776974682061206D6F6469666965642076657273696F6E0A202020202020206F6620746865204C696272617279207468617420697320696E746572666163652D636F6D70617469626C65207769746820746865204C696E6B65640A2020202020202056657273696F6E2E0A0A20202065292050726F7669646520496E7374616C6C6174696F6E20496E666F726D6174696F6E2C20627574206F6E6C7920696620796F7520776F756C64206F74686572776973650A202020626520726571756972656420746F2070726F76696465207375636820696E666F726D6174696F6E20756E6465722073656374696F6E2036206F66207468650A202020474E552047504C2C20616E64206F6E6C7920746F2074686520657874656E742074686174207375636820696E666F726D6174696F6E2069730A2020206E656365737361727920746F20696E7374616C6C20616E6420657865637574652061206D6F6469666965642076657273696F6E206F66207468650A202020436F6D62696E656420576F726B2070726F6475636564206279207265636F6D62696E696E67206F722072656C696E6B696E67207468650A2020204170706C69636174696F6E20776974682061206D6F6469666965642076657273696F6E206F6620746865204C696E6B65642056657273696F6E2E202849660A202020796F7520757365206F7074696F6E203464302C2074686520496E7374616C6C6174696F6E20496E666F726D6174696F6E206D757374206163636F6D70616E790A202020746865204D696E696D616C20436F72726573706F6E64696E6720536F7572636520616E6420436F72726573706F6E64696E67204170706C69636174696F6E0A202020436F64652E20496620796F7520757365206F7074696F6E203464312C20796F75206D7573742070726F766964652074686520496E7374616C6C6174696F6E0A202020496E666F726D6174696F6E20696E20746865206D616E6E6572207370656369666965642062792073656374696F6E2036206F662074686520474E552047504C0A202020666F7220636F6E766579696E6720436F72726573706F6E64696E6720536F757263652E290A0A2020352E20436F6D62696E6564204C69627261726965732E0A0A2020596F75206D617920706C616365206C69627261727920666163696C6974696573207468617420617265206120776F726B206261736564206F6E207468650A4C6962726172792073696465206279207369646520696E20612073696E676C65206C69627261727920746F6765746865722077697468206F74686572206C6962726172790A666163696C6974696573207468617420617265206E6F74204170706C69636174696F6E7320616E6420617265206E6F7420636F766572656420627920746869730A4C6963656E73652C20616E6420636F6E7665792073756368206120636F6D62696E6564206C69627261727920756E646572207465726D73206F6620796F75720A63686F6963652C20696620796F7520646F20626F7468206F662074686520666F6C6C6F77696E673A0A0A2020206129204163636F6D70616E792074686520636F6D62696E6564206C6962726172792077697468206120636F7079206F66207468652073616D6520776F726B2062617365640A2020206F6E20746865204C6962726172792C20756E636F6D62696E6564207769746820616E79206F74686572206C69627261727920666163696C69746965732C0A202020636F6E766579656420756E64657220746865207465726D73206F662074686973204C6963656E73652E0A0A202020622920476976652070726F6D696E656E74206E6F7469636520776974682074686520636F6D62696E6564206C69627261727920746861742070617274206F662069740A2020206973206120776F726B206261736564206F6E20746865204C6962726172792C20616E64206578706C61696E696E6720776865726520746F2066696E64207468650A2020206163636F6D70616E79696E6720756E636F6D62696E656420666F726D206F66207468652073616D6520776F726B2E0A0A2020362E20526576697365642056657273696F6E73206F662074686520474E55204C65737365722047656E6572616C205075626C6963204C6963656E73652E0A0A2020546865204672656520536F66747761726520466F756E646174696F6E206D6179207075626C697368207265766973656420616E642F6F72206E65772076657273696F6E730A6F662074686520474E55204C65737365722047656E6572616C205075626C6963204C6963656E73652066726F6D2074696D6520746F2074696D652E2053756368206E65770A76657273696F6E732077696C6C2062652073696D696C617220696E2073706972697420746F207468652070726573656E742076657273696F6E2C20627574206D61790A64696666657220696E2064657461696C20746F2061646472657373206E65772070726F626C656D73206F7220636F6E6365726E732E0A0A2020456163682076657273696F6E20697320676976656E20612064697374696E6775697368696E672076657273696F6E206E756D6265722E204966207468650A4C69627261727920617320796F752072656365697665642069742073706563696669657320746861742061206365727461696E206E756D62657265642076657273696F6E0A6F662074686520474E55204C65737365722047656E6572616C205075626C6963204C6963656E736520226F7220616E79206C617465722076657273696F6E220A6170706C69657320746F2069742C20796F75206861766520746865206F7074696F6E206F6620666F6C6C6F77696E6720746865207465726D7320616E640A636F6E646974696F6E7320656974686572206F662074686174207075626C69736865642076657273696F6E206F72206F6620616E79206C617465722076657273696F6E0A7075626C697368656420627920746865204672656520536F66747761726520466F756E646174696F6E2E20496620746865204C69627261727920617320796F750A726563656976656420697420646F6573206E6F74207370656369667920612076657273696F6E206E756D626572206F662074686520474E55204C65737365720A47656E6572616C205075626C6963204C6963656E73652C20796F75206D61792063686F6F736520616E792076657273696F6E206F662074686520474E55204C65737365720A47656E6572616C205075626C6963204C6963656E73652065766572207075626C697368656420627920746865204672656520536F66747761726520466F756E646174696F6E2E0A0A2020496620746865204C69627261727920617320796F7520726563656976656420697420737065636966696573207468617420612070726F78792063616E206465636964650A77686574686572206675747572652076657273696F6E73206F662074686520474E55204C65737365722047656E6572616C205075626C6963204C6963656E7365207368616C6C0A6170706C792C20746861742070726F78792773207075626C69632073746174656D656E74206F6620616363657074616E6365206F6620616E792076657273696F6E2069730A7065726D616E656E7420617574686F72697A6174696F6E20666F7220796F7520746F2063686F6F736520746861742076657273696F6E20666F72207468650A4C6962726172792E0A README 23204173796E63544350200A5B215B4275696C64205374617475735D2868747470733A2F2F7472617669732D63692E6F72672F6D652D6E6F2D6465762F4173796E635443502E7376673F6272616E63683D6D6173746572295D2868747470733A2F2F7472617669732D63692E6F72672F6D652D6E6F2D6465762F4173796E635443502920215B5D2868747470733A2F2F6769746875622E636F6D2F6D652D6E6F2D6465762F4173796E635443502F776F726B666C6F77732F4173796E6325323054435025323043492F62616467652E73766729205B215B436F646163792042616467655D2868747470733A2F2F6170692E636F646163792E636F6D2F70726F6A6563742F62616467652F47726164652F3266376534643164663862343436643139326362666563366463313734643264295D2868747470733A2F2F7777772E636F646163792E636F6D2F6D616E75616C2F6D652D6E6F2D6465762F4173796E635443503F75746D5F736F757263653D6769746875622E636F6D26616D703B75746D5F6D656469756D3D726566657272616C26616D703B75746D5F636F6E74656E743D6D652D6E6F2D6465762F4173796E6354435026616D703B75746D5F63616D706169676E3D42616467655F4772616465290A0A232323204173796E6320544350204C69627261727920666F722045535033322041726475696E6F0A0A5B215B4A6F696E2074686520636861742061742068747470733A2F2F6769747465722E696D2F6D652D6E6F2D6465762F4553504173796E635765625365727665725D2868747470733A2F2F6261646765732E6769747465722E696D2F6D652D6E6F2D6465762F4553504173796E635765625365727665722E737667295D2868747470733A2F2F6769747465722E696D2F6D652D6E6F2D6465762F4553504173796E635765625365727665723F75746D5F736F757263653D62616467652675746D5F6D656469756D3D62616467652675746D5F63616D706169676E3D70722D62616467652675746D5F636F6E74656E743D6261646765290A0A5468697320697320612066756C6C79206173796E6368726F6E6F757320544350206C6962726172792C2061696D656420617420656E61626C696E672074726F75626C652D667265652C206D756C74692D636F6E6E656374696F6E206E6574776F726B20656E7669726F6E6D656E7420666F72204573707265737369662773204553503332204D4355732E0A0A54686973206C69627261727920697320746865206261736520666F72205B4553504173796E635765625365727665725D2868747470733A2F2F6769746875622E636F6D2F6D652D6E6F2D6465762F4553504173796E63576562536572766572290A0A2323204173796E63436C69656E7420616E64204173796E635365727665720A546865206261736520636C6173736573206F6E2077686963682065766572797468696E6720656C7365206973206275696C742E2054686579206578706F736520616C6C20706F737369626C65207363656E6172696F732C2062757420617265207265616C6C792072617720616E642072657175697265206D6F726520736B696C6C7320746F207573652E0A .md src AsyncTCP 2F2A0A20204173796E6368726F6E6F757320544350206C69627261727920666F7220457370726573736966204D4355730A0A2020436F707972696768742028632920323031362048726973746F20476F63686B6F762E20416C6C207269676874732072657365727665642E0A2020546869732066696C652069732070617274206F6620746865206573703832363620636F726520666F722041726475696E6F20656E7669726F6E6D656E742E0A0A202054686973206C696272617279206973206672656520736F6674776172653B20796F752063616E2072656469737472696275746520697420616E642F6F720A20206D6F6469667920697420756E64657220746865207465726D73206F662074686520474E55204C65737365722047656E6572616C205075626C69630A20204C6963656E7365206173207075626C697368656420627920746865204672656520536F66747761726520466F756E646174696F6E3B206569746865720A202076657273696F6E20322E31206F6620746865204C6963656E73652C206F722028617420796F7572206F7074696F6E2920616E79206C617465722076657273696F6E2E0A0A202054686973206C69627261727920697320646973747269627574656420696E2074686520686F706520746861742069742077696C6C2062652075736566756C2C0A202062757420574954484F555420414E592057415252414E54593B20776974686F7574206576656E2074686520696D706C6965642077617272616E7479206F660A20204D45524348414E544142494C495459206F72204649544E45535320464F52204120504152544943554C415220505552504F53452E20205365652074686520474E550A20204C65737365722047656E6572616C205075626C6963204C6963656E736520666F72206D6F72652064657461696C732E0A0A2020596F752073686F756C642068617665207265636569766564206120636F7079206F662074686520474E55204C65737365722047656E6572616C205075626C69630A20204C6963656E736520616C6F6E6720776974682074686973206C6962726172793B206966206E6F742C20777269746520746F20746865204672656520536F6674776172650A2020466F756E646174696F6E2C20496E632E2C203531204672616E6B6C696E2053742C20466966746820466C6F6F722C20426F73746F6E2C204D41202030323131302D3133303120205553410A202A2F0A0A23696E636C756465202241726475696E6F2E68220A0A23696E636C75646520224173796E635443502E68220A65787465726E202243227B0A23696E636C75646520226C7769702F6F70742E68220A23696E636C75646520226C7769702F7463702E68220A23696E636C75646520226C7769702F696E65742E68220A23696E636C75646520226C7769702F646E732E68220A23696E636C75646520226C7769702F6572722E68220A7D0A23696E636C75646520226573705F7461736B5F7764742E68220A0A2F2A0A202A205443502F4950204576656E74205461736B0A202A202A2F0A0A7479706564656620656E756D207B0A202020204C5749505F5443505F53454E542C204C5749505F5443505F524543562C204C5749505F5443505F46494E2C204C5749505F5443505F4552524F522C204C5749505F5443505F504F4C4C2C204C5749505F5443505F434C4541522C204C5749505F5443505F4143434550542C204C5749505F5443505F434F4E4E45435445442C204C5749505F5443505F444E530A7D206C7769705F6576656E745F743B0A0A7479706564656620737472756374207B0A20202020202020206C7769705F6576656E745F74206576656E743B0A2020202020202020766F6964202A6172673B0A2020202020202020756E696F6E207B0A20202020202020202020202020202020737472756374207B0A202020202020202020202020202020202020202020202020766F6964202A207063623B0A202020202020202020202020202020202020202020202020696E74385F74206572723B0A202020202020202020202020202020207D20636F6E6E65637465643B0A20202020202020202020202020202020737472756374207B0A202020202020202020202020202020202020202020202020696E74385F74206572723B0A202020202020202020202020202020207D206572726F723B0A20202020202020202020202020202020737472756374207B0A2020202020202020202020202020202020202020202020207463705F706362202A207063623B0A20202020202020202020202020202020202020202020202075696E7431365F74206C656E3B0A202020202020202020202020202020207D2073656E743B0A20202020202020202020202020202020737472756374207B0A2020202020202020202020202020202020202020202020207463705F706362202A207063623B0A20202020202020202020202020202020202020202020202070627566202A2070623B0A202020202020202020202020202020202020202020202020696E74385F74206572723B0A202020202020202020202020202020207D20726563763B0A20202020202020202020202020202020737472756374207B0A2020202020202020202020202020202020202020202020207463705F706362202A207063623B0A202020202020202020202020202020202020202020202020696E74385F74206572723B0A202020202020202020202020202020207D2066696E3B0A20202020202020202020202020202020737472756374207B0A2020202020202020202020202020202020202020202020207463705F706362202A207063623B0A202020202020202020202020202020207D20706F6C6C3B0A20202020202020202020202020202020737472756374207B0A2020202020202020202020202020202020202020202020204173796E63436C69656E74202A20636C69656E743B0A202020202020202020202020202020207D206163636570743B0A20202020202020202020202020202020737472756374207B0A202020202020202020202020202020202020202020202020636F6E73742063686172202A206E616D653B0A20202020202020202020202020202020202020202020202069705F616464725F7420616464723B0A202020202020202020202020202020207D20646E733B0A20202020202020207D3B0A7D206C7769705F6576656E745F7061636B65745F743B0A0A7374617469632078517565756548616E646C65205F6173796E635F71756575653B0A737461746963205461736B48616E646C655F74205F6173796E635F736572766963655F7461736B5F68616E646C65203D204E554C4C3B0A0A0A53656D6170686F726548616E646C655F74205F736C6F74735F6C6F636B3B0A636F6E737420696E74205F6E756D6265725F6F665F636C6F7365645F736C6F7473203D20434F4E4649475F4C5749505F4D41585F4143544956455F5443503B0A7374617469632075696E7433325F74205F636C6F7365645F736C6F74735B5F6E756D6265725F6F665F636C6F7365645F736C6F74735D3B0A7374617469632075696E7433325F74205F636C6F7365645F696E646578203D205B5D2829207B0A202020205F736C6F74735F6C6F636B203D207853656D6170686F726543726561746542696E61727928293B0A202020207853656D6170686F726547697665285F736C6F74735F6C6F636B293B0A20202020666F722028696E742069203D20303B2069203C205F6E756D6265725F6F665F636C6F7365645F736C6F74733B202B2B206929207B0A20202020202020205F636C6F7365645F736C6F74735B695D203D20313B0A202020207D0A2020202072657475726E20313B0A7D28293B0A0A0A73746174696320696E6C696E6520626F6F6C205F696E69745F6173796E635F6576656E745F717565756528297B0A20202020696628215F6173796E635F7175657565297B0A20202020202020205F6173796E635F7175657565203D207851756575654372656174652833322C2073697A656F66286C7769705F6576656E745F7061636B65745F74202A29293B0A2020202020202020696628215F6173796E635F7175657565297B0A20202020202020202020202072657475726E2066616C73653B0A20202020202020207D0A202020207D0A2020202072657475726E20747275653B0A7D0A0A73746174696320696E6C696E6520626F6F6C205F73656E645F6173796E635F6576656E74286C7769705F6576656E745F7061636B65745F74202A2A2065297B0A2020202072657475726E205F6173796E635F71756575652026262078517565756553656E64285F6173796E635F71756575652C20652C20706F72744D41585F44454C415929203D3D207064504153533B0A7D0A0A73746174696320696E6C696E6520626F6F6C205F70726570656E645F6173796E635F6576656E74286C7769705F6576656E745F7061636B65745F74202A2A2065297B0A2020202072657475726E205F6173796E635F71756575652026262078517565756553656E64546F46726F6E74285F6173796E635F71756575652C20652C20706F72744D41585F44454C415929203D3D207064504153533B0A7D0A0A73746174696320696E6C696E6520626F6F6C205F6765745F6173796E635F6576656E74286C7769705F6576656E745F7061636B65745F74202A2A2065297B0A2020202072657475726E205F6173796E635F71756575652026262078517565756552656365697665285F6173796E635F71756575652C20652C20706F72744D41585F44454C415929203D3D207064504153533B0A7D0A0A73746174696320626F6F6C205F72656D6F76655F6576656E74735F776974685F61726728766F6964202A20617267297B0A202020206C7769705F6576656E745F7061636B65745F74202A2066697273745F7061636B6574203D204E554C4C3B0A202020206C7769705F6576656E745F7061636B65745F74202A207061636B6574203D204E554C4C3B0A0A20202020696628215F6173796E635F7175657565297B0A202020202020202072657475726E2066616C73653B0A202020207D0A202020202F2F666967757265206F757420776869636820697320746865206669727374207061636B657420736F2077652063616E206B65657020746865206F726465720A202020207768696C65282166697273745F7061636B6574297B0A202020202020202069662878517565756552656365697665285F6173796E635F71756575652C202666697273745F7061636B65742C20302920213D20706450415353297B0A20202020202020202020202072657475726E2066616C73653B0A20202020202020207D0A20202020202020202F2F64697363617264207061636B6574206966206D61746368696E670A202020202020202069662828696E742966697273745F7061636B65742D3E617267203D3D2028696E7429617267297B0A202020202020202020202020667265652866697273745F7061636B6574293B0A20202020202020202020202066697273745F7061636B6574203D204E554C4C3B0A20202020202020202F2F72657475726E206669727374207061636B657420746F20746865206261636B206F66207468652071756575650A20202020202020207D20656C73652069662878517565756553656E64285F6173796E635F71756575652C202666697273745F7061636B65742C20706F72744D41585F44454C41592920213D20706450415353297B0A20202020202020202020202072657475726E2066616C73653B0A20202020202020207D0A202020207D0A0A202020207768696C65287851756575655065656B285F6173796E635F71756575652C20267061636B65742C203029203D3D20706450415353202626207061636B657420213D2066697273745F7061636B6574297B0A202020202020202069662878517565756552656365697665285F6173796E635F71756575652C20267061636B65742C20302920213D20706450415353297B0A20202020202020202020202072657475726E2066616C73653B0A20202020202020207D0A202020202020202069662828696E74297061636B65742D3E617267203D3D2028696E7429617267297B0A20202020202020202020202066726565287061636B6574293B0A2020202020202020202020207061636B6574203D204E554C4C3B0A20202020202020207D20656C73652069662878517565756553656E64285F6173796E635F71756575652C20267061636B65742C20706F72744D41585F44454C41592920213D20706450415353297B0A20202020202020202020202072657475726E2066616C73653B0A20202020202020207D0A202020207D0A2020202072657475726E20747275653B0A7D0A0A73746174696320766F6964205F68616E646C655F6173796E635F6576656E74286C7769705F6576656E745F7061636B65745F74202A2065297B0A20202020696628652D3E617267203D3D204E554C4C297B0A20202020202020202F2F20646F206E6F7468696E67207768656E20617267206973204E554C4C0A20202020202020202F2F6574735F7072696E746628226576656E7420617267203D3D204E554C4C3A203078253038785C6E222C20652D3E726563762E706362293B0A202020207D20656C736520696628652D3E6576656E74203D3D204C5749505F5443505F434C454152297B0A20202020202020205F72656D6F76655F6576656E74735F776974685F61726728652D3E617267293B0A202020207D20656C736520696628652D3E6576656E74203D3D204C5749505F5443505F52454356297B0A20202020202020202F2F6574735F7072696E746628222D523A203078253038785C6E222C20652D3E726563762E706362293B0A20202020202020204173796E63436C69656E743A3A5F735F7265637628652D3E6172672C20652D3E726563762E7063622C20652D3E726563762E70622C20652D3E726563762E657272293B0A202020207D20656C736520696628652D3E6576656E74203D3D204C5749505F5443505F46494E297B0A20202020202020202F2F6574735F7072696E746628222D463A203078253038785C6E222C20652D3E66696E2E706362293B0A20202020202020204173796E63436C69656E743A3A5F735F66696E28652D3E6172672C20652D3E66696E2E7063622C20652D3E66696E2E657272293B0A202020207D20656C736520696628652D3E6576656E74203D3D204C5749505F5443505F53454E54297B0A20202020202020202F2F6574735F7072696E746628222D533A203078253038785C6E222C20652D3E73656E742E706362293B0A20202020202020204173796E63436C69656E743A3A5F735F73656E7428652D3E6172672C20652D3E73656E742E7063622C20652D3E73656E742E6C656E293B0A202020207D20656C736520696628652D3E6576656E74203D3D204C5749505F5443505F504F4C4C297B0A20202020202020202F2F6574735F7072696E746628222D503A203078253038785C6E222C20652D3E706F6C6C2E706362293B0A20202020202020204173796E63436C69656E743A3A5F735F706F6C6C28652D3E6172672C20652D3E706F6C6C2E706362293B0A202020207D20656C736520696628652D3E6576656E74203D3D204C5749505F5443505F4552524F52297B0A20202020202020202F2F6574735F7072696E746628222D453A203078253038782025645C6E222C20652D3E6172672C20652D3E6572726F722E657272293B0A20202020202020204173796E63436C69656E743A3A5F735F6572726F7228652D3E6172672C20652D3E6572726F722E657272293B0A202020207D20656C736520696628652D3E6576656E74203D3D204C5749505F5443505F434F4E4E4543544544297B0A20202020202020202F2F6574735F7072696E74662822433A20307825303878203078253038782025645C6E222C20652D3E6172672C20652D3E636F6E6E65637465642E7063622C20652D3E636F6E6E65637465642E657272293B0A20202020202020204173796E63436C69656E743A3A5F735F636F6E6E656374656428652D3E6172672C20652D3E636F6E6E65637465642E7063622C20652D3E636F6E6E65637465642E657272293B0A202020207D20656C736520696628652D3E6576656E74203D3D204C5749505F5443505F414343455054297B0A20202020202020202F2F6574735F7072696E74662822413A20307825303878203078253038785C6E222C20652D3E6172672C20652D3E6163636570742E636C69656E74293B0A20202020202020204173796E635365727665723A3A5F735F616363657074656428652D3E6172672C20652D3E6163636570742E636C69656E74293B0A202020207D20656C736520696628652D3E6576656E74203D3D204C5749505F5443505F444E53297B0A20202020202020202F2F6574735F7072696E74662822443A20307825303878202573203D2025735C6E222C20652D3E6172672C20652D3E646E732E6E616D652C206970616464725F6E746F612826652D3E646E732E6164647229293B0A20202020202020204173796E63436C69656E743A3A5F735F646E735F666F756E6428652D3E646E732E6E616D652C2026652D3E646E732E616464722C20652D3E617267293B0A202020207D0A20202020667265652828766F69642A29286529293B0A7D0A0A73746174696320766F6964205F6173796E635F736572766963655F7461736B28766F6964202A7076506172616D6574657273297B0A202020206C7769705F6576656E745F7061636B65745F74202A207061636B6574203D204E554C4C3B0A20202020666F7220283B3B29207B0A20202020202020206966285F6765745F6173796E635F6576656E7428267061636B657429297B0A23696620434F4E4649475F4153594E435F5443505F5553455F5744540A2020202020202020202020206966286573705F7461736B5F7764745F616464284E554C4C2920213D204553505F4F4B297B0A202020202020202020202020202020206C6F675F6528224661696C656420746F20616464206173796E63207461736B20746F2057445422293B0A2020202020202020202020207D0A23656E6469660A2020202020202020202020205F68616E646C655F6173796E635F6576656E74287061636B6574293B0A23696620434F4E4649475F4153594E435F5443505F5553455F5744540A2020202020202020202020206966286573705F7461736B5F7764745F64656C657465284E554C4C2920213D204553505F4F4B297B0A202020202020202020202020202020206C6F675F6528224661696C656420746F2072656D6F7665206C6F6F70207461736B2066726F6D2057445422293B0A2020202020202020202020207D0A23656E6469660A20202020202020207D0A202020207D0A20202020765461736B44656C657465284E554C4C293B0A202020205F6173796E635F736572766963655F7461736B5F68616E646C65203D204E554C4C3B0A7D0A2F2A0A73746174696320766F6964205F73746F705F6173796E635F7461736B28297B0A202020206966285F6173796E635F736572766963655F7461736B5F68616E646C65297B0A2020202020202020765461736B44656C657465285F6173796E635F736572766963655F7461736B5F68616E646C65293B0A20202020202020205F6173796E635F736572766963655F7461736B5F68616E646C65203D204E554C4C3B0A202020207D0A7D0A2A2F0A73746174696320626F6F6C205F73746172745F6173796E635F7461736B28297B0A20202020696628215F696E69745F6173796E635F6576656E745F71756575652829297B0A202020202020202072657475726E2066616C73653B0A202020207D0A20202020696628215F6173796E635F736572766963655F7461736B5F68616E646C65297B0A2020202020202020785461736B437265617465556E6976657273616C285F6173796E635F736572766963655F7461736B2C20226173796E635F746370222C2038313932202A20322C204E554C4C2C20332C20265F6173796E635F736572766963655F7461736B5F68616E646C652C20434F4E4649475F4153594E435F5443505F52554E4E494E475F434F5245293B0A2020202020202020696628215F6173796E635F736572766963655F7461736B5F68616E646C65297B0A20202020202020202020202072657475726E2066616C73653B0A20202020202020207D0A202020207D0A2020202072657475726E20747275653B0A7D0A0A2F2A0A202A204C7749502043616C6C6261636B730A202A202A2F0A0A73746174696320696E74385F74205F7463705F636C6561725F6576656E747328766F6964202A2061726729207B0A202020206C7769705F6576656E745F7061636B65745F74202A2065203D20286C7769705F6576656E745F7061636B65745F74202A296D616C6C6F632873697A656F66286C7769705F6576656E745F7061636B65745F7429293B0A20202020652D3E6576656E74203D204C5749505F5443505F434C4541523B0A20202020652D3E617267203D206172673B0A2020202069662028215F70726570656E645F6173796E635F6576656E742826652929207B0A2020202020202020667265652828766F69642A29286529293B0A202020207D0A2020202072657475726E204552525F4F4B3B0A7D0A0A73746174696320696E74385F74205F7463705F636F6E6E656374656428766F6964202A206172672C207463705F706362202A207063622C20696E74385F742065727229207B0A202020202F2F6574735F7072696E746628222B433A203078253038785C6E222C20706362293B0A202020206C7769705F6576656E745F7061636B65745F74202A2065203D20286C7769705F6576656E745F7061636B65745F74202A296D616C6C6F632873697A656F66286C7769705F6576656E745F7061636B65745F7429293B0A20202020652D3E6576656E74203D204C5749505F5443505F434F4E4E45435445443B0A20202020652D3E617267203D206172673B0A20202020652D3E636F6E6E65637465642E706362203D207063623B0A20202020652D3E636F6E6E65637465642E657272203D206572723B0A2020202069662028215F70726570656E645F6173796E635F6576656E742826652929207B0A2020202020202020667265652828766F69642A29286529293B0A202020207D0A2020202072657475726E204552525F4F4B3B0A7D0A0A73746174696320696E74385F74205F7463705F706F6C6C28766F6964202A206172672C20737472756374207463705F706362202A2070636229207B0A202020202F2F6574735F7072696E746628222B503A203078253038785C6E222C20706362293B0A202020206C7769705F6576656E745F7061636B65745F74202A2065203D20286C7769705F6576656E745F7061636B65745F74202A296D616C6C6F632873697A656F66286C7769705F6576656E745F7061636B65745F7429293B0A20202020652D3E6576656E74203D204C5749505F5443505F504F4C4C3B0A20202020652D3E617267203D206172673B0A20202020652D3E706F6C6C2E706362203D207063623B0A2020202069662028215F73656E645F6173796E635F6576656E742826652929207B0A2020202020202020667265652828766F69642A29286529293B0A202020207D0A2020202072657475726E204552525F4F4B3B0A7D0A0A73746174696320696E74385F74205F7463705F7265637628766F6964202A206172672C20737472756374207463705F706362202A207063622C207374727563742070627566202A70622C20696E74385F742065727229207B0A202020206C7769705F6576656E745F7061636B65745F74202A2065203D20286C7769705F6576656E745F7061636B65745F74202A296D616C6C6F632873697A656F66286C7769705F6576656E745F7061636B65745F7429293B0A20202020652D3E617267203D206172673B0A202020206966287062297B0A20202020202020202F2F6574735F7072696E746628222B523A203078253038785C6E222C20706362293B0A2020202020202020652D3E6576656E74203D204C5749505F5443505F524543563B0A2020202020202020652D3E726563762E706362203D207063623B0A2020202020202020652D3E726563762E7062203D2070623B0A2020202020202020652D3E726563762E657272203D206572723B0A202020207D20656C7365207B0A20202020202020202F2F6574735F7072696E746628222B463A203078253038785C6E222C20706362293B0A2020202020202020652D3E6576656E74203D204C5749505F5443505F46494E3B0A2020202020202020652D3E66696E2E706362203D207063623B0A2020202020202020652D3E66696E2E657272203D206572723B0A20202020202020202F2F636C6F7365207468652050434220696E204C774950207468726561640A20202020202020204173796E63436C69656E743A3A5F735F6C7769705F66696E28652D3E6172672C20652D3E66696E2E7063622C20652D3E66696E2E657272293B0A202020207D0A2020202069662028215F73656E645F6173796E635F6576656E742826652929207B0A2020202020202020667265652828766F69642A29286529293B0A202020207D0A2020202072657475726E204552525F4F4B3B0A7D0A0A73746174696320696E74385F74205F7463705F73656E7428766F6964202A206172672C20737472756374207463705F706362202A207063622C2075696E7431365F74206C656E29207B0A202020202F2F6574735F7072696E746628222B533A203078253038785C6E222C20706362293B0A202020206C7769705F6576656E745F7061636B65745F74202A2065203D20286C7769705F6576656E745F7061636B65745F74202A296D616C6C6F632873697A656F66286C7769705F6576656E745F7061636B65745F7429293B0A20202020652D3E6576656E74203D204C5749505F5443505F53454E543B0A20202020652D3E617267203D206172673B0A20202020652D3E73656E742E706362203D207063623B0A20202020652D3E73656E742E6C656E203D206C656E3B0A2020202069662028215F73656E645F6173796E635F6576656E742826652929207B0A2020202020202020667265652828766F69642A29286529293B0A202020207D0A2020202072657475726E204552525F4F4B3B0A7D0A0A73746174696320766F6964205F7463705F6572726F7228766F6964202A206172672C20696E74385F742065727229207B0A202020202F2F6574735F7072696E746628222B453A203078253038785C6E222C20617267293B0A202020206C7769705F6576656E745F7061636B65745F74202A2065203D20286C7769705F6576656E745F7061636B65745F74202A296D616C6C6F632873697A656F66286C7769705F6576656E745F7061636B65745F7429293B0A20202020652D3E6576656E74203D204C5749505F5443505F4552524F523B0A20202020652D3E617267203D206172673B0A20202020652D3E6572726F722E657272203D206572723B0A2020202069662028215F73656E645F6173796E635F6576656E742826652929207B0A2020202020202020667265652828766F69642A29286529293B0A202020207D0A7D0A0A73746174696320766F6964205F7463705F646E735F666F756E6428636F6E73742063686172202A206E616D652C207374727563742069705F61646472202A206970616464722C20766F6964202A2061726729207B0A202020206C7769705F6576656E745F7061636B65745F74202A2065203D20286C7769705F6576656E745F7061636B65745F74202A296D616C6C6F632873697A656F66286C7769705F6576656E745F7061636B65745F7429293B0A202020202F2F6574735F7072696E746628222B444E533A206E616D653D2573206970616464723D307825303878206172673D25785C6E222C206E616D652C206970616464722C20617267293B0A20202020652D3E6576656E74203D204C5749505F5443505F444E533B0A20202020652D3E617267203D206172673B0A20202020652D3E646E732E6E616D65203D206E616D653B0A202020206966202869706164647229207B0A20202020202020206D656D6370792826652D3E646E732E616464722C206970616464722C2073697A656F66287374727563742069705F6164647229293B0A202020207D20656C7365207B0A20202020202020206D656D7365742826652D3E646E732E616464722C20302C2073697A656F6628652D3E646E732E6164647229293B0A202020207D0A2020202069662028215F73656E645F6173796E635F6576656E742826652929207B0A2020202020202020667265652828766F69642A29286529293B0A202020207D0A7D0A0A2F2F5573656420746F20737769746368206F75742066726F6D204C774950207468726561640A73746174696320696E74385F74205F7463705F61636365707428766F6964202A206172672C204173796E63436C69656E74202A20636C69656E7429207B0A202020206C7769705F6576656E745F7061636B65745F74202A2065203D20286C7769705F6576656E745F7061636B65745F74202A296D616C6C6F632873697A656F66286C7769705F6576656E745F7061636B65745F7429293B0A20202020652D3E6576656E74203D204C5749505F5443505F4143434550543B0A20202020652D3E617267203D206172673B0A20202020652D3E6163636570742E636C69656E74203D20636C69656E743B0A2020202069662028215F70726570656E645F6173796E635F6576656E742826652929207B0A2020202020202020667265652828766F69642A29286529293B0A202020207D0A2020202072657475726E204552525F4F4B3B0A7D0A0A2F2A0A202A205443502F4950204150492043616C6C730A202A202A2F0A0A23696E636C75646520226C7769702F707269762F74637069705F707269762E68220A0A7479706564656620737472756374207B0A202020207374727563742074637069705F6170695F63616C6C5F646174612063616C6C3B0A202020207463705F706362202A207063623B0A20202020696E74385F7420636C6F7365645F736C6F743B0A20202020696E74385F74206572723B0A20202020756E696F6E207B0A202020202020202020202020737472756374207B0A2020202020202020202020202020202020202020636F6E737420636861722A20646174613B0A202020202020202020202020202020202020202073697A655F742073697A653B0A202020202020202020202020202020202020202075696E74385F7420617069666C6167733B0A2020202020202020202020207D2077726974653B0A20202020202020202020202073697A655F742072656365697665643B0A202020202020202020202020737472756374207B0A202020202020202020202020202020202020202069705F616464725F74202A20616464723B0A202020202020202020202020202020202020202075696E7431365F7420706F72743B0A20202020202020202020202020202020202020207463705F636F6E6E65637465645F666E2063623B0A2020202020202020202020207D20636F6E6E6563743B0A202020202020202020202020737472756374207B0A202020202020202020202020202020202020202069705F616464725F74202A20616464723B0A202020202020202020202020202020202020202075696E7431365F7420706F72743B0A2020202020202020202020207D2062696E643B0A20202020202020202020202075696E74385F74206261636B6C6F673B0A202020207D3B0A7D207463705F6170695F63616C6C5F743B0A0A737461746963206572725F74205F7463705F6F75747075745F617069287374727563742074637069705F6170695F63616C6C5F64617461202A6170695F63616C6C5F6D7367297B0A202020207463705F6170695F63616C6C5F74202A206D7367203D20287463705F6170695F63616C6C5F74202A296170695F63616C6C5F6D73673B0A202020206D73672D3E657272203D204552525F434F4E4E3B0A202020206966286D73672D3E636C6F7365645F736C6F74203D3D202D31207C7C20215F636C6F7365645F736C6F74735B6D73672D3E636C6F7365645F736C6F745D29207B0A20202020202020206D73672D3E657272203D207463705F6F7574707574286D73672D3E706362293B0A202020207D0A2020202072657475726E206D73672D3E6572723B0A7D0A0A737461746963206573705F6572725F74205F7463705F6F7574707574287463705F706362202A207063622C20696E74385F7420636C6F7365645F736C6F7429207B0A2020202069662821706362297B0A202020202020202072657475726E204552525F434F4E4E3B0A202020207D0A202020207463705F6170695F63616C6C5F74206D73673B0A202020206D73672E706362203D207063623B0A202020206D73672E636C6F7365645F736C6F74203D20636C6F7365645F736C6F743B0A2020202074637069705F6170695F63616C6C285F7463705F6F75747075745F6170692C20287374727563742074637069705F6170695F63616C6C5F646174612A29266D7367293B0A2020202072657475726E206D73672E6572723B0A7D0A0A737461746963206572725F74205F7463705F77726974655F617069287374727563742074637069705F6170695F63616C6C5F64617461202A6170695F63616C6C5F6D7367297B0A202020207463705F6170695F63616C6C5F74202A206D7367203D20287463705F6170695F63616C6C5F74202A296170695F63616C6C5F6D73673B0A202020206D73672D3E657272203D204552525F434F4E4E3B0A202020206966286D73672D3E636C6F7365645F736C6F74203D3D202D31207C7C20215F636C6F7365645F736C6F74735B6D73672D3E636C6F7365645F736C6F745D29207B0A20202020202020206D73672D3E657272203D207463705F7772697465286D73672D3E7063622C206D73672D3E77726974652E646174612C206D73672D3E77726974652E73697A652C206D73672D3E77726974652E617069666C616773293B0A202020207D0A2020202072657475726E206D73672D3E6572723B0A7D0A0A737461746963206573705F6572725F74205F7463705F7772697465287463705F706362202A207063622C20696E74385F7420636C6F7365645F736C6F742C20636F6E737420636861722A20646174612C2073697A655F742073697A652C2075696E74385F7420617069666C61677329207B0A2020202069662821706362297B0A202020202020202072657475726E204552525F434F4E4E3B0A202020207D0A202020207463705F6170695F63616C6C5F74206D73673B0A202020206D73672E706362203D207063623B0A202020206D73672E636C6F7365645F736C6F74203D20636C6F7365645F736C6F743B0A202020206D73672E77726974652E64617461203D20646174613B0A202020206D73672E77726974652E73697A65203D2073697A653B0A202020206D73672E77726974652E617069666C616773203D20617069666C6167733B0A2020202074637069705F6170695F63616C6C285F7463705F77726974655F6170692C20287374727563742074637069705F6170695F63616C6C5F646174612A29266D7367293B0A2020202072657475726E206D73672E6572723B0A7D0A0A737461746963206572725F74205F7463705F7265637665645F617069287374727563742074637069705F6170695F63616C6C5F64617461202A6170695F63616C6C5F6D7367297B0A202020207463705F6170695F63616C6C5F74202A206D7367203D20287463705F6170695F63616C6C5F74202A296170695F63616C6C5F6D73673B0A202020206D73672D3E657272203D204552525F434F4E4E3B0A202020206966286D73672D3E636C6F7365645F736C6F74203D3D202D31207C7C20215F636C6F7365645F736C6F74735B6D73672D3E636C6F7365645F736C6F745D29207B0A20202020202020206D73672D3E657272203D20303B0A20202020202020207463705F726563766564286D73672D3E7063622C206D73672D3E7265636569766564293B0A202020207D0A2020202072657475726E206D73672D3E6572723B0A7D0A0A737461746963206573705F6572725F74205F7463705F726563766564287463705F706362202A207063622C20696E74385F7420636C6F7365645F736C6F742C2073697A655F74206C656E29207B0A2020202069662821706362297B0A202020202020202072657475726E204552525F434F4E4E3B0A202020207D0A202020207463705F6170695F63616C6C5F74206D73673B0A202020206D73672E706362203D207063623B0A202020206D73672E636C6F7365645F736C6F74203D20636C6F7365645F736C6F743B0A202020206D73672E7265636569766564203D206C656E3B0A2020202074637069705F6170695F63616C6C285F7463705F7265637665645F6170692C20287374727563742074637069705F6170695F63616C6C5F646174612A29266D7367293B0A2020202072657475726E206D73672E6572723B0A7D0A0A737461746963206572725F74205F7463705F636C6F73655F617069287374727563742074637069705F6170695F63616C6C5F64617461202A6170695F63616C6C5F6D7367297B0A202020207463705F6170695F63616C6C5F74202A206D7367203D20287463705F6170695F63616C6C5F74202A296170695F63616C6C5F6D73673B0A202020206D73672D3E657272203D204552525F434F4E4E3B0A202020206966286D73672D3E636C6F7365645F736C6F74203D3D202D31207C7C20215F636C6F7365645F736C6F74735B6D73672D3E636C6F7365645F736C6F745D29207B0A20202020202020206D73672D3E657272203D207463705F636C6F7365286D73672D3E706362293B0A202020207D0A2020202072657475726E206D73672D3E6572723B0A7D0A0A737461746963206573705F6572725F74205F7463705F636C6F7365287463705F706362202A207063622C20696E74385F7420636C6F7365645F736C6F7429207B0A2020202069662821706362297B0A202020202020202072657475726E204552525F434F4E4E3B0A202020207D0A202020207463705F6170695F63616C6C5F74206D73673B0A202020206D73672E706362203D207063623B0A202020206D73672E636C6F7365645F736C6F74203D20636C6F7365645F736C6F743B0A2020202074637069705F6170695F63616C6C285F7463705F636C6F73655F6170692C20287374727563742074637069705F6170695F63616C6C5F646174612A29266D7367293B0A2020202072657475726E206D73672E6572723B0A7D0A0A737461746963206572725F74205F7463705F61626F72745F617069287374727563742074637069705F6170695F63616C6C5F64617461202A6170695F63616C6C5F6D7367297B0A202020207463705F6170695F63616C6C5F74202A206D7367203D20287463705F6170695F63616C6C5F74202A296170695F63616C6C5F6D73673B0A202020206D73672D3E657272203D204552525F434F4E4E3B0A202020206966286D73672D3E636C6F7365645F736C6F74203D3D202D31207C7C20215F636C6F7365645F736C6F74735B6D73672D3E636C6F7365645F736C6F745D29207B0A20202020202020207463705F61626F7274286D73672D3E706362293B0A202020207D0A2020202072657475726E206D73672D3E6572723B0A7D0A0A737461746963206573705F6572725F74205F7463705F61626F7274287463705F706362202A207063622C20696E74385F7420636C6F7365645F736C6F7429207B0A2020202069662821706362297B0A202020202020202072657475726E204552525F434F4E4E3B0A202020207D0A202020207463705F6170695F63616C6C5F74206D73673B0A202020206D73672E706362203D207063623B0A202020206D73672E636C6F7365645F736C6F74203D20636C6F7365645F736C6F743B0A2020202074637069705F6170695F63616C6C285F7463705F61626F72745F6170692C20287374727563742074637069705F6170695F63616C6C5F646174612A29266D7367293B0A2020202072657475726E206D73672E6572723B0A7D0A0A737461746963206572725F74205F7463705F636F6E6E6563745F617069287374727563742074637069705F6170695F63616C6C5F64617461202A6170695F63616C6C5F6D7367297B0A202020207463705F6170695F63616C6C5F74202A206D7367203D20287463705F6170695F63616C6C5F74202A296170695F63616C6C5F6D73673B0A202020206D73672D3E657272203D207463705F636F6E6E656374286D73672D3E7063622C206D73672D3E636F6E6E6563742E616464722C206D73672D3E636F6E6E6563742E706F72742C206D73672D3E636F6E6E6563742E6362293B0A2020202072657475726E206D73672D3E6572723B0A7D0A0A737461746963206573705F6572725F74205F7463705F636F6E6E656374287463705F706362202A207063622C20696E74385F7420636C6F7365645F736C6F742C2069705F616464725F74202A20616464722C2075696E7431365F7420706F72742C207463705F636F6E6E65637465645F666E20636229207B0A2020202069662821706362297B0A202020202020202072657475726E204553505F4641494C3B0A202020207D0A202020207463705F6170695F63616C6C5F74206D73673B0A202020206D73672E706362203D207063623B0A202020206D73672E636C6F7365645F736C6F74203D20636C6F7365645F736C6F743B0A202020206D73672E636F6E6E6563742E61646472203D20616464723B0A202020206D73672E636F6E6E6563742E706F7274203D20706F72743B0A202020206D73672E636F6E6E6563742E6362203D2063623B0A2020202074637069705F6170695F63616C6C285F7463705F636F6E6E6563745F6170692C20287374727563742074637069705F6170695F63616C6C5F646174612A29266D7367293B0A2020202072657475726E206D73672E6572723B0A7D0A0A737461746963206572725F74205F7463705F62696E645F617069287374727563742074637069705F6170695F63616C6C5F64617461202A6170695F63616C6C5F6D7367297B0A202020207463705F6170695F63616C6C5F74202A206D7367203D20287463705F6170695F63616C6C5F74202A296170695F63616C6C5F6D73673B0A202020206D73672D3E657272203D207463705F62696E64286D73672D3E7063622C206D73672D3E62696E642E616464722C206D73672D3E62696E642E706F7274293B0A2020202072657475726E206D73672D3E6572723B0A7D0A0A737461746963206573705F6572725F74205F7463705F62696E64287463705F706362202A207063622C2069705F616464725F74202A20616464722C2075696E7431365F7420706F727429207B0A2020202069662821706362297B0A202020202020202072657475726E204553505F4641494C3B0A202020207D0A202020207463705F6170695F63616C6C5F74206D73673B0A202020206D73672E706362203D207063623B0A202020206D73672E636C6F7365645F736C6F74203D202D313B0A202020206D73672E62696E642E61646472203D20616464723B0A202020206D73672E62696E642E706F7274203D20706F72743B0A2020202074637069705F6170695F63616C6C285F7463705F62696E645F6170692C20287374727563742074637069705F6170695F63616C6C5F646174612A29266D7367293B0A2020202072657475726E206D73672E6572723B0A7D0A0A737461746963206572725F74205F7463705F6C697374656E5F617069287374727563742074637069705F6170695F63616C6C5F64617461202A6170695F63616C6C5F6D7367297B0A202020207463705F6170695F63616C6C5F74202A206D7367203D20287463705F6170695F63616C6C5F74202A296170695F63616C6C5F6D73673B0A202020206D73672D3E657272203D20303B0A202020206D73672D3E706362203D207463705F6C697374656E5F776974685F6261636B6C6F67286D73672D3E7063622C206D73672D3E6261636B6C6F67293B0A2020202072657475726E206D73672D3E6572723B0A7D0A0A737461746963207463705F706362202A205F7463705F6C697374656E5F776974685F6261636B6C6F67287463705F706362202A207063622C2075696E74385F74206261636B6C6F6729207B0A2020202069662821706362297B0A202020202020202072657475726E204E554C4C3B0A202020207D0A202020207463705F6170695F63616C6C5F74206D73673B0A202020206D73672E706362203D207063623B0A202020206D73672E636C6F7365645F736C6F74203D202D313B0A202020206D73672E6261636B6C6F67203D206261636B6C6F673F6261636B6C6F673A307846463B0A2020202074637069705F6170695F63616C6C285F7463705F6C697374656E5F6170692C20287374727563742074637069705F6170695F63616C6C5F646174612A29266D7367293B0A2020202072657475726E206D73672E7063623B0A7D0A0A0A0A2F2A0A20204173796E632054435020436C69656E740A202A2F0A0A4173796E63436C69656E743A3A4173796E63436C69656E74287463705F7063622A20706362290A3A205F636F6E6E6563745F63622830290A2C205F636F6E6E6563745F63625F6172672830290A2C205F646973636172645F63622830290A2C205F646973636172645F63625F6172672830290A2C205F73656E745F63622830290A2C205F73656E745F63625F6172672830290A2C205F6572726F725F63622830290A2C205F6572726F725F63625F6172672830290A2C205F726563765F63622830290A2C205F726563765F63625F6172672830290A2C205F70625F63622830290A2C205F70625F63625F6172672830290A2C205F74696D656F75745F63622830290A2C205F74696D656F75745F63625F6172672830290A2C205F7063625F627573792866616C7365290A2C205F7063625F73656E745F61742830290A2C205F61636B5F7063622874727565290A2C205F72785F6C6173745F7061636B65742830290A2C205F72785F73696E63655F74696D656F75742830290A2C205F61636B5F74696D656F7574284153594E435F4D41585F41434B5F54494D45290A2C205F636F6E6E6563745F706F72742830290A2C2070726576284E554C4C290A2C206E657874284E554C4C290A7B0A202020205F706362203D207063623B0A202020205F636C6F7365645F736C6F74203D202D313B0A202020206966285F706362297B0A20202020202020205F616C6C6F636174655F636C6F7365645F736C6F7428293B0A20202020202020205F72785F6C6173745F7061636B6574203D206D696C6C697328293B0A20202020202020207463705F617267285F7063622C2074686973293B0A20202020202020207463705F72656376285F7063622C20265F7463705F72656376293B0A20202020202020207463705F73656E74285F7063622C20265F7463705F73656E74293B0A20202020202020207463705F657272285F7063622C20265F7463705F6572726F72293B0A20202020202020207463705F706F6C6C285F7063622C20265F7463705F706F6C6C2C2031293B0A202020207D0A7D0A0A4173796E63436C69656E743A3A7E4173796E63436C69656E7428297B0A202020206966285F70636229207B0A20202020202020205F636C6F736528293B0A202020207D0A202020205F667265655F636C6F7365645F736C6F7428293B0A7D0A0A2F2A0A202A204F70657261746F72730A202A202A2F0A0A4173796E63436C69656E7426204173796E63436C69656E743A3A6F70657261746F723D28636F6E7374204173796E63436C69656E7426206F74686572297B0A20202020696620285F70636229207B0A20202020202020205F636C6F736528293B0A202020207D0A0A202020205F706362203D206F746865722E5F7063623B0A202020205F636C6F7365645F736C6F74203D206F746865722E5F636C6F7365645F736C6F743B0A20202020696620285F70636229207B0A20202020202020205F72785F6C6173745F7061636B6574203D206D696C6C697328293B0A20202020202020207463705F617267285F7063622C2074686973293B0A20202020202020207463705F72656376285F7063622C20265F7463705F72656376293B0A20202020202020207463705F73656E74285F7063622C20265F7463705F73656E74293B0A20202020202020207463705F657272285F7063622C20265F7463705F6572726F72293B0A20202020202020207463705F706F6C6C285F7063622C20265F7463705F706F6C6C2C2031293B0A202020207D0A2020202072657475726E202A746869733B0A7D0A0A626F6F6C204173796E63436C69656E743A3A6F70657261746F723D3D28636F6E7374204173796E63436C69656E7420266F7468657229207B0A2020202072657475726E205F706362203D3D206F746865722E5F7063623B0A7D0A0A4173796E63436C69656E742026204173796E63436C69656E743A3A6F70657261746F722B3D28636F6E7374204173796E63436C69656E7420266F7468657229207B0A202020206966286E657874203D3D204E554C4C297B0A20202020202020206E657874203D20284173796E63436C69656E742A2928266F74686572293B0A20202020202020206E6578742D3E70726576203D20746869733B0A202020207D20656C7365207B0A20202020202020204173796E63436C69656E74202A63203D206E6578743B0A20202020202020207768696C6528632D3E6E65787420213D204E554C4C29207B0A20202020202020202020202063203D20632D3E6E6578743B0A20202020202020207D0A2020202020202020632D3E6E657874203D284173796E63436C69656E742A2928266F74686572293B0A2020202020202020632D3E6E6578742D3E70726576203D20633B0A202020207D0A2020202072657475726E202A746869733B0A7D0A0A2F2A0A202A2043616C6C6261636B20536574746572730A202A202A2F0A0A766F6964204173796E63436C69656E743A3A6F6E436F6E6E656374284163436F6E6E65637448616E646C65722063622C20766F69642A20617267297B0A202020205F636F6E6E6563745F6362203D2063623B0A202020205F636F6E6E6563745F63625F617267203D206172673B0A7D0A0A766F6964204173796E63436C69656E743A3A6F6E446973636F6E6E656374284163436F6E6E65637448616E646C65722063622C20766F69642A20617267297B0A202020205F646973636172645F6362203D2063623B0A202020205F646973636172645F63625F617267203D206172673B0A7D0A0A766F6964204173796E63436C69656E743A3A6F6E41636B28416341636B48616E646C65722063622C20766F69642A20617267297B0A202020205F73656E745F6362203D2063623B0A202020205F73656E745F63625F617267203D206172673B0A7D0A0A766F6964204173796E63436C69656E743A3A6F6E4572726F722841634572726F7248616E646C65722063622C20766F69642A20617267297B0A202020205F6572726F725F6362203D2063623B0A202020205F6572726F725F63625F617267203D206172673B0A7D0A0A766F6964204173796E63436C69656E743A3A6F6E446174612841634461746148616E646C65722063622C20766F69642A20617267297B0A202020205F726563765F6362203D2063623B0A202020205F726563765F63625F617267203D206172673B0A7D0A0A766F6964204173796E63436C69656E743A3A6F6E5061636B65742841635061636B657448616E646C65722063622C20766F69642A20617267297B0A20205F70625F6362203D2063623B0A20205F70625F63625F617267203D206172673B0A7D0A0A766F6964204173796E63436C69656E743A3A6F6E54696D656F757428416354696D656F757448616E646C65722063622C20766F69642A20617267297B0A202020205F74696D656F75745F6362203D2063623B0A202020205F74696D656F75745F63625F617267203D206172673B0A7D0A0A766F6964204173796E63436C69656E743A3A6F6E506F6C6C284163436F6E6E65637448616E646C65722063622C20766F69642A20617267297B0A202020205F706F6C6C5F6362203D2063623B0A202020205F706F6C6C5F63625F617267203D206172673B0A7D0A0A2F2A0A202A204D61696E205075626C6963204D6574686F64730A202A202A2F0A0A626F6F6C204173796E63436C69656E743A3A636F6E6E656374284950416464726573732069702C2075696E7431365F7420706F7274297B0A20202020696620285F706362297B0A20202020202020206C6F675F772822616C726561647920636F6E6E65637465642C207374617465202564222C205F7063622D3E7374617465293B0A202020202020202072657475726E2066616C73653B0A202020207D0A20202020696628215F73746172745F6173796E635F7461736B2829297B0A20202020202020206C6F675F6528226661696C656420746F207374617274207461736B22293B0A202020202020202072657475726E2066616C73653B0A202020207D0A0A2020202069705F616464725F7420616464723B0A20202020616464722E74797065203D204950414444525F545950455F56343B0A20202020616464722E755F616464722E6970342E61646472203D2069703B0A0A202020207463705F7063622A20706362203D207463705F6E65775F69705F74797065284950414444525F545950455F5634293B0A202020206966202821706362297B0A20202020202020206C6F675F652822706362203D3D204E554C4C22293B0A202020202020202072657475726E2066616C73653B0A202020207D0A0A202020207463705F617267287063622C2074686973293B0A202020207463705F657272287063622C20265F7463705F6572726F72293B0A202020207463705F72656376287063622C20265F7463705F72656376293B0A202020207463705F73656E74287063622C20265F7463705F73656E74293B0A202020207463705F706F6C6C287063622C20265F7463705F706F6C6C2C2031293B0A202020202F2F5F7463705F636F6E6E656374287063622C2026616464722C20706F72742C287463705F636F6E6E65637465645F666E29265F735F636F6E6E6563746564293B0A202020205F7463705F636F6E6E656374287063622C205F636C6F7365645F736C6F742C2026616464722C20706F72742C287463705F636F6E6E65637465645F666E29265F7463705F636F6E6E6563746564293B0A2020202072657475726E20747275653B0A7D0A0A626F6F6C204173796E63436C69656E743A3A636F6E6E65637428636F6E737420636861722A20686F73742C2075696E7431365F7420706F7274297B0A2020202069705F616464725F7420616464723B0A202020200A20202020696628215F73746172745F6173796E635F7461736B2829297B0A2020202020206C6F675F6528226661696C656420746F207374617274207461736B22293B0A20202020202072657475726E2066616C73653B0A202020207D0A202020200A202020206572725F7420657272203D20646E735F676574686F737462796E616D6528686F73742C2026616464722C2028646E735F666F756E645F63616C6C6261636B29265F7463705F646E735F666F756E642C2074686973293B0A20202020696628657272203D3D204552525F4F4B29207B0A202020202020202072657475726E20636F6E6E6563742849504164647265737328616464722E755F616464722E6970342E61646472292C20706F7274293B0A202020207D20656C736520696628657272203D3D204552525F494E50524F475245535329207B0A20202020202020205F636F6E6E6563745F706F7274203D20706F72743B0A202020202020202072657475726E20747275653B0A202020207D0A202020206C6F675F6528226572726F723A202564222C20657272293B0A2020202072657475726E2066616C73653B0A7D0A0A766F6964204173796E63436C69656E743A3A636C6F736528626F6F6C206E6F77297B0A202020206966285F706362297B0A20202020202020205F7463705F726563766564285F7063622C205F636C6F7365645F736C6F742C205F72785F61636B5F6C656E293B0A202020207D0A202020205F636C6F736528293B0A7D0A0A696E74385F74204173796E63436C69656E743A3A61626F727428297B0A202020206966285F70636229207B0A20202020202020205F7463705F61626F7274285F7063622C205F636C6F7365645F736C6F7420293B0A20202020202020205F706362203D204E554C4C3B0A202020207D0A2020202072657475726E204552525F414252543B0A7D0A0A73697A655F74204173796E63436C69656E743A3A737061636528297B0A20202020696628285F70636220213D204E554C4C2920262620285F7063622D3E7374617465203D3D203429297B0A202020202020202072657475726E207463705F736E64627566285F706362293B0A202020207D0A2020202072657475726E20303B0A7D0A0A73697A655F74204173796E63436C69656E743A3A61646428636F6E737420636861722A20646174612C2073697A655F742073697A652C2075696E74385F7420617069666C61677329207B0A20202020696628215F706362207C7C2073697A65203D3D2030207C7C2064617461203D3D204E554C4C29207B0A202020202020202072657475726E20303B0A202020207D0A2020202073697A655F7420726F6F6D203D20737061636528293B0A2020202069662821726F6F6D29207B0A202020202020202072657475726E20303B0A202020207D0A2020202073697A655F742077696C6C5F73656E64203D2028726F6F6D203C2073697A6529203F20726F6F6D203A2073697A653B0A20202020696E74385F7420657272203D204552525F4F4B3B0A20202020657272203D205F7463705F7772697465285F7063622C205F636C6F7365645F736C6F742C20646174612C2077696C6C5F73656E642C20617069666C616773293B0A2020202069662865727220213D204552525F4F4B29207B0A202020202020202072657475726E20303B0A202020207D0A2020202072657475726E2077696C6C5F73656E643B0A7D0A0A626F6F6C204173796E63436C69656E743A3A73656E6428297B0A20202020696E74385F7420657272203D204552525F4F4B3B0A20202020657272203D205F7463705F6F7574707574285F7063622C205F636C6F7365645F736C6F74293B0A20202020696628657272203D3D204552525F4F4B297B0A20202020202020205F7063625F62757379203D20747275653B0A20202020202020205F7063625F73656E745F6174203D206D696C6C697328293B0A202020202020202072657475726E20747275653B0A202020207D0A2020202072657475726E2066616C73653B0A7D0A0A73697A655F74204173796E63436C69656E743A3A61636B2873697A655F74206C656E297B0A202020206966286C656E203E205F72785F61636B5F6C656E290A20202020202020206C656E203D205F72785F61636B5F6C656E3B0A202020206966286C656E297B0A20202020202020205F7463705F726563766564285F7063622C205F636C6F7365645F736C6F742C206C656E293B0A202020207D0A202020205F72785F61636B5F6C656E202D3D206C656E3B0A2020202072657475726E206C656E3B0A7D0A0A766F6964204173796E63436C69656E743A3A61636B5061636B6574287374727563742070627566202A207062297B0A2020696628217062297B0A2020202072657475726E3B0A20207D0A20205F7463705F726563766564285F7063622C205F636C6F7365645F736C6F742C2070622D3E6C656E293B0A2020706275665F66726565287062293B0A7D0A0A2F2A0A202A204D61696E2050726976617465204D6574686F64730A202A202A2F0A0A696E74385F74204173796E63436C69656E743A3A5F636C6F736528297B0A202020202F2F6574735F7072696E74662822583A203078253038785C6E222C202875696E7433325F742974686973293B0A20202020696E74385F7420657272203D204552525F4F4B3B0A202020206966285F70636229207B0A20202020202020202F2F6C6F675F69282222293B0A20202020202020207463705F617267285F7063622C204E554C4C293B0A20202020202020207463705F73656E74285F7063622C204E554C4C293B0A20202020202020207463705F72656376285F7063622C204E554C4C293B0A20202020202020207463705F657272285F7063622C204E554C4C293B0A20202020202020207463705F706F6C6C285F7063622C204E554C4C2C2030293B0A20202020202020205F7463705F636C6561725F6576656E74732874686973293B0A2020202020202020657272203D205F7463705F636C6F7365285F7063622C205F636C6F7365645F736C6F74293B0A202020202020202069662865727220213D204552525F4F4B29207B0A202020202020202020202020657272203D2061626F727428293B0A20202020202020207D0A20202020202020205F706362203D204E554C4C3B0A20202020202020206966285F646973636172645F636229207B0A2020202020202020202020205F646973636172645F6362285F646973636172645F63625F6172672C2074686973293B0A20202020202020207D0A202020207D0A2020202072657475726E206572723B0A7D0A0A766F6964204173796E63436C69656E743A3A5F616C6C6F636174655F636C6F7365645F736C6F7428297B0A202020207853656D6170686F726554616B65285F736C6F74735F6C6F636B2C20706F72744D41585F44454C4159293B0A2020202075696E7433325F7420636C6F7365645F736C6F745F6D696E5F696E646578203D20303B0A20202020666F722028696E742069203D20303B2069203C205F6E756D6265725F6F665F636C6F7365645F736C6F74733B202B2B206929207B0A202020202020202069662028285F636C6F7365645F736C6F74203D3D202D31207C7C205F636C6F7365645F736C6F74735B695D203C3D20636C6F7365645F736C6F745F6D696E5F696E64657829202626205F636C6F7365645F736C6F74735B695D20213D203029207B0A202020202020202020202020636C6F7365645F736C6F745F6D696E5F696E646578203D205F636C6F7365645F736C6F74735B695D3B0A2020202020202020202020205F636C6F7365645F736C6F74203D20693B0A20202020202020207D0A202020207D0A20202020696620285F636C6F7365645F736C6F7420213D202D3129207B0A20202020202020205F636C6F7365645F736C6F74735B5F636C6F7365645F736C6F745D203D20303B0A202020207D0A202020207853656D6170686F726547697665285F736C6F74735F6C6F636B293B0A7D0A0A766F6964204173796E63436C69656E743A3A5F667265655F636C6F7365645F736C6F7428297B0A20202020696620285F636C6F7365645F736C6F7420213D202D3129207B0A20202020202020205F636C6F7365645F736C6F74735B5F636C6F7365645F736C6F745D203D205F636C6F7365645F696E6465783B0A20202020202020205F636C6F7365645F736C6F74203D202D313B0A20202020202020202B2B205F636C6F7365645F696E6465783B0A202020207D0A7D0A0A2F2A0A202A20507269766174652043616C6C6261636B730A202A202A2F0A0A696E74385F74204173796E63436C69656E743A3A5F636F6E6E656374656428766F69642A207063622C20696E74385F7420657272297B0A202020205F706362203D207265696E746572707265745F636173743C7463705F7063622A3E28706362293B0A202020206966285F706362297B0A20202020202020205F72785F6C6173745F7061636B6574203D206D696C6C697328293B0A20202020202020205F7063625F62757379203D2066616C73653B0A2F2F20202020202020207463705F72656376285F7063622C20265F7463705F72656376293B0A2F2F20202020202020207463705F73656E74285F7063622C20265F7463705F73656E74293B0A2F2F20202020202020207463705F706F6C6C285F7063622C20265F7463705F706F6C6C2C2031293B0A202020207D0A202020206966285F636F6E6E6563745F636229207B0A20202020202020205F636F6E6E6563745F6362285F636F6E6E6563745F63625F6172672C2074686973293B0A202020207D0A2020202072657475726E204552525F4F4B3B0A7D0A0A766F6964204173796E63436C69656E743A3A5F6572726F7228696E74385F742065727229207B0A202020206966285F706362297B0A20202020202020207463705F617267285F7063622C204E554C4C293B0A20202020202020206966285F7063622D3E7374617465203D3D204C495354454E29207B0A2020202020202020202020207463705F73656E74285F7063622C204E554C4C293B0A2020202020202020202020207463705F72656376285F7063622C204E554C4C293B0A2020202020202020202020207463705F657272285F7063622C204E554C4C293B0A2020202020202020202020207463705F706F6C6C285F7063622C204E554C4C2C2030293B0A20202020202020207D0A20202020202020205F706362203D204E554C4C3B0A202020207D0A202020206966285F6572726F725F636229207B0A20202020202020205F6572726F725F6362285F6572726F725F63625F6172672C20746869732C20657272293B0A202020207D0A202020206966285F646973636172645F636229207B0A20202020202020205F646973636172645F6362285F646973636172645F63625F6172672C2074686973293B0A202020207D0A7D0A0A2F2F496E204C774950205468726561640A696E74385F74204173796E63436C69656E743A3A5F6C7769705F66696E287463705F7063622A207063622C20696E74385F742065727229207B0A20202020696628215F706362207C7C2070636220213D205F706362297B0A20202020202020206C6F675F65282230782530387820213D20307825303878222C202875696E7433325F74297063622C202875696E7433325F74295F706362293B0A202020202020202072657475726E204552525F4F4B3B0A202020207D0A202020207463705F617267285F7063622C204E554C4C293B0A202020206966285F7063622D3E7374617465203D3D204C495354454E29207B0A20202020202020207463705F73656E74285F7063622C204E554C4C293B0A20202020202020207463705F72656376285F7063622C204E554C4C293B0A20202020202020207463705F657272285F7063622C204E554C4C293B0A20202020202020207463705F706F6C6C285F7063622C204E554C4C2C2030293B0A202020207D0A202020206966287463705F636C6F7365285F7063622920213D204552525F4F4B29207B0A20202020202020207463705F61626F7274285F706362293B0A202020207D0A202020205F667265655F636C6F7365645F736C6F7428293B0A202020205F706362203D204E554C4C3B0A2020202072657475726E204552525F4F4B3B0A7D0A0A2F2F496E204173796E63205468726561640A696E74385F74204173796E63436C69656E743A3A5F66696E287463705F7063622A207063622C20696E74385F742065727229207B0A202020205F7463705F636C6561725F6576656E74732874686973293B0A202020206966285F646973636172645F636229207B0A20202020202020205F646973636172645F6362285F646973636172645F63625F6172672C2074686973293B0A202020207D0A2020202072657475726E204552525F4F4B3B0A7D0A0A696E74385F74204173796E63436C69656E743A3A5F73656E74287463705F7063622A207063622C2075696E7431365F74206C656E29207B0A202020205F72785F6C6173745F7061636B6574203D206D696C6C697328293B0A202020202F2F6C6F675F6928222575222C206C656E293B0A202020205F7063625F62757379203D2066616C73653B0A202020206966285F73656E745F636229207B0A20202020202020205F73656E745F6362285F73656E745F63625F6172672C20746869732C206C656E2C20286D696C6C69732829202D205F7063625F73656E745F617429293B0A202020207D0A2020202072657475726E204552525F4F4B3B0A7D0A0A696E74385F74204173796E63436C69656E743A3A5F72656376287463705F7063622A207063622C20706275662A2070622C20696E74385F742065727229207B0A202020207768696C6528706220213D204E554C4C29207B0A20202020202020205F72785F6C6173745F7061636B6574203D206D696C6C697328293B0A20202020202020202F2F77652073686F756C64206E6F742061636B206265666F726520776520617373696D696C6174652074686520646174610A20202020202020205F61636B5F706362203D20747275653B0A202020202020202070627566202A62203D2070623B0A20202020202020207062203D20622D3E6E6578743B0A2020202020202020622D3E6E657874203D204E554C4C3B0A20202020202020206966285F70625F6362297B0A2020202020202020202020205F70625F6362285F70625F63625F6172672C20746869732C2062293B0A20202020202020207D20656C7365207B0A2020202020202020202020206966285F726563765F636229207B0A202020202020202020202020202020205F726563765F6362285F726563765F63625F6172672C20746869732C20622D3E7061796C6F61642C20622D3E6C656E293B0A2020202020202020202020207D0A202020202020202020202020696628215F61636B5F70636229207B0A202020202020202020202020202020205F72785F61636B5F6C656E202B3D20622D3E6C656E3B0A2020202020202020202020207D20656C7365206966285F70636229207B0A202020202020202020202020202020205F7463705F726563766564285F7063622C205F636C6F7365645F736C6F742C20622D3E6C656E293B0A2020202020202020202020207D0A202020202020202020202020706275665F667265652862293B0A20202020202020207D0A202020207D0A2020202072657475726E204552525F4F4B3B0A7D0A0A696E74385F74204173796E63436C69656E743A3A5F706F6C6C287463705F7063622A20706362297B0A20202020696628215F706362297B0A20202020202020206C6F675F772822706362206973204E554C4C22293B0A202020202020202072657475726E204552525F4F4B3B0A202020207D0A2020202069662870636220213D205F706362297B0A20202020202020206C6F675F65282230782530387820213D20307825303878222C202875696E7433325F74297063622C202875696E7433325F74295F706362293B0A202020202020202072657475726E204552525F4F4B3B0A202020207D0A0A2020202075696E7433325F74206E6F77203D206D696C6C697328293B0A0A202020202F2F2041434B2054696D656F75740A202020206966285F7063625F62757379202626205F61636B5F74696D656F757420262620286E6F77202D205F7063625F73656E745F617429203E3D205F61636B5F74696D656F7574297B0A20202020202020205F7063625F62757379203D2066616C73653B0A20202020202020206C6F675F77282261636B2074696D656F7574202564222C207063622D3E7374617465293B0A20202020202020206966285F74696D656F75745F6362290A2020202020202020202020205F74696D656F75745F6362285F74696D656F75745F63625F6172672C20746869732C20286E6F77202D205F7063625F73656E745F617429293B0A202020202020202072657475726E204552525F4F4B3B0A202020207D0A202020202F2F2052582054696D656F75740A202020206966285F72785F73696E63655F74696D656F757420262620286E6F77202D205F72785F6C6173745F7061636B657429203E3D20285F72785F73696E63655F74696D656F7574202A203130303029297B0A20202020202020206C6F675F77282272782074696D656F7574202564222C207063622D3E7374617465293B0A20202020202020205F636C6F736528293B0A202020202020202072657475726E204552525F4F4B3B0A202020207D0A202020202F2F2045766572797468696E672069732066696E650A202020206966285F706F6C6C5F636229207B0A20202020202020205F706F6C6C5F6362285F706F6C6C5F63625F6172672C2074686973293B0A202020207D0A2020202072657475726E204552525F4F4B3B0A7D0A0A766F6964204173796E63436C69656E743A3A5F646E735F666F756E64287374727563742069705F61646472202A697061646472297B0A20202020696628697061646472202626206970616464722D3E755F616464722E6970342E61646472297B0A2020202020202020636F6E6E65637428495041646472657373286970616464722D3E755F616464722E6970342E61646472292C205F636F6E6E6563745F706F7274293B0A202020207D20656C7365207B0A20202020202020206966285F6572726F725F636229207B0A2020202020202020202020205F6572726F725F6362285F6572726F725F63625F6172672C20746869732C202D3535293B0A20202020202020207D0A20202020202020206966285F646973636172645F636229207B0A2020202020202020202020205F646973636172645F6362285F646973636172645F63625F6172672C2074686973293B0A20202020202020207D0A202020207D0A7D0A0A2F2A0A202A205075626C69632048656C706572204D6574686F64730A202A202A2F0A0A766F6964204173796E63436C69656E743A3A73746F702829207B0A20202020636C6F73652866616C7365293B0A7D0A0A626F6F6C204173796E63436C69656E743A3A6672656528297B0A20202020696628215F70636229207B0A202020202020202072657475726E20747275653B0A202020207D0A202020206966285F7063622D3E7374617465203D3D2030207C7C205F7063622D3E7374617465203E203429207B0A202020202020202072657475726E20747275653B0A202020207D0A2020202072657475726E2066616C73653B0A7D0A0A73697A655F74204173796E63436C69656E743A3A777269746528636F6E737420636861722A206461746129207B0A2020202069662864617461203D3D204E554C4C29207B0A202020202020202072657475726E20303B0A202020207D0A2020202072657475726E20777269746528646174612C207374726C656E286461746129293B0A7D0A0A73697A655F74204173796E63436C69656E743A3A777269746528636F6E737420636861722A20646174612C2073697A655F742073697A652C2075696E74385F7420617069666C61677329207B0A2020202073697A655F742077696C6C5F73656E64203D2061646428646174612C2073697A652C20617069666C616773293B0A202020206966282177696C6C5F73656E64207C7C202173656E64282929207B0A202020202020202072657475726E20303B0A202020207D0A2020202072657475726E2077696C6C5F73656E643B0A7D0A0A766F6964204173796E63436C69656E743A3A736574527854696D656F75742875696E7433325F742074696D656F7574297B0A202020205F72785F73696E63655F74696D656F7574203D2074696D656F75743B0A7D0A0A75696E7433325F74204173796E63436C69656E743A3A676574527854696D656F757428297B0A2020202072657475726E205F72785F73696E63655F74696D656F75743B0A7D0A0A75696E7433325F74204173796E63436C69656E743A3A67657441636B54696D656F757428297B0A2020202072657475726E205F61636B5F74696D656F75743B0A7D0A0A766F6964204173796E63436C69656E743A3A73657441636B54696D656F75742875696E7433325F742074696D656F7574297B0A202020205F61636B5F74696D656F7574203D2074696D656F75743B0A7D0A0A766F6964204173796E63436C69656E743A3A7365744E6F44656C617928626F6F6C206E6F64656C6179297B0A20202020696628215F70636229207B0A202020202020202072657475726E3B0A202020207D0A202020206966286E6F64656C617929207B0A20202020202020207463705F6E61676C655F64697361626C65285F706362293B0A202020207D20656C7365207B0A20202020202020207463705F6E61676C655F656E61626C65285F706362293B0A202020207D0A7D0A0A626F6F6C204173796E63436C69656E743A3A6765744E6F44656C617928297B0A20202020696628215F70636229207B0A202020202020202072657475726E2066616C73653B0A202020207D0A2020202072657475726E207463705F6E61676C655F64697361626C6564285F706362293B0A7D0A0A75696E7431365F74204173796E63436C69656E743A3A6765744D737328297B0A20202020696628215F70636229207B0A202020202020202072657475726E20303B0A202020207D0A2020202072657475726E207463705F6D7373285F706362293B0A7D0A0A75696E7433325F74204173796E63436C69656E743A3A67657452656D6F7465416464726573732829207B0A20202020696628215F70636229207B0A202020202020202072657475726E20303B0A202020207D0A2020202072657475726E205F7063622D3E72656D6F74655F69702E755F616464722E6970342E616464723B0A7D0A0A75696E7431365F74204173796E63436C69656E743A3A67657452656D6F7465506F72742829207B0A20202020696628215F70636229207B0A202020202020202072657475726E20303B0A202020207D0A2020202072657475726E205F7063622D3E72656D6F74655F706F72743B0A7D0A0A75696E7433325F74204173796E63436C69656E743A3A6765744C6F63616C416464726573732829207B0A20202020696628215F70636229207B0A202020202020202072657475726E20303B0A202020207D0A2020202072657475726E205F7063622D3E6C6F63616C5F69702E755F616464722E6970342E616464723B0A7D0A0A75696E7431365F74204173796E63436C69656E743A3A6765744C6F63616C506F72742829207B0A20202020696628215F70636229207B0A202020202020202072657475726E20303B0A202020207D0A2020202072657475726E205F7063622D3E6C6F63616C5F706F72743B0A7D0A0A495041646472657373204173796E63436C69656E743A3A72656D6F746549502829207B0A2020202072657475726E204950416464726573732867657452656D6F7465416464726573732829293B0A7D0A0A75696E7431365F74204173796E63436C69656E743A3A72656D6F7465506F72742829207B0A2020202072657475726E2067657452656D6F7465506F727428293B0A7D0A0A495041646472657373204173796E63436C69656E743A3A6C6F63616C49502829207B0A2020202072657475726E20495041646472657373286765744C6F63616C416464726573732829293B0A7D0A0A75696E7431365F74204173796E63436C69656E743A3A6C6F63616C506F72742829207B0A2020202072657475726E206765744C6F63616C506F727428293B0A7D0A0A75696E74385F74204173796E63436C69656E743A3A73746174652829207B0A20202020696628215F70636229207B0A202020202020202072657475726E20303B0A202020207D0A2020202072657475726E205F7063622D3E73746174653B0A7D0A0A626F6F6C204173796E63436C69656E743A3A636F6E6E656374656428297B0A2020202069662028215F70636229207B0A202020202020202072657475726E2066616C73653B0A202020207D0A2020202072657475726E205F7063622D3E7374617465203D3D20343B0A7D0A0A626F6F6C204173796E63436C69656E743A3A636F6E6E656374696E6728297B0A2020202069662028215F70636229207B0A202020202020202072657475726E2066616C73653B0A202020207D0A2020202072657475726E205F7063622D3E7374617465203E2030202626205F7063622D3E7374617465203C20343B0A7D0A0A626F6F6C204173796E63436C69656E743A3A646973636F6E6E656374696E6728297B0A2020202069662028215F70636229207B0A202020202020202072657475726E2066616C73653B0A202020207D0A2020202072657475726E205F7063622D3E7374617465203E2034202626205F7063622D3E7374617465203C2031303B0A7D0A0A626F6F6C204173796E63436C69656E743A3A646973636F6E6E656374656428297B0A2020202069662028215F70636229207B0A202020202020202072657475726E20747275653B0A202020207D0A2020202072657475726E205F7063622D3E7374617465203D3D2030207C7C205F7063622D3E7374617465203D3D2031303B0A7D0A0A626F6F6C204173796E63436C69656E743A3A6672656561626C6528297B0A2020202069662028215F70636229207B0A202020202020202072657475726E20747275653B0A202020207D0A2020202072657475726E205F7063622D3E7374617465203D3D2030207C7C205F7063622D3E7374617465203E20343B0A7D0A0A626F6F6C204173796E63436C69656E743A3A63616E53656E6428297B0A2020202072657475726E2073706163652829203E20303B0A7D0A0A636F6E73742063686172202A204173796E63436C69656E743A3A6572726F72546F537472696E6728696E74385F74206572726F72297B0A20202020737769746368286572726F72297B0A202020202020202063617365204552525F4F4B3A2072657475726E20224F4B223B0A202020202020202063617365204552525F4D454D3A2072657475726E20224F7574206F66206D656D6F7279206572726F72223B0A202020202020202063617365204552525F4255463A2072657475726E2022427566666572206572726F72223B0A202020202020202063617365204552525F54494D454F55543A2072657475726E202254696D656F7574223B0A202020202020202063617365204552525F5254453A2072657475726E2022526F7574696E672070726F626C656D223B0A202020202020202063617365204552525F494E50524F47524553533A2072657475726E20224F7065726174696F6E20696E2070726F6772657373223B0A202020202020202063617365204552525F56414C3A2072657475726E2022496C6C6567616C2076616C7565223B0A202020202020202063617365204552525F574F554C44424C4F434B3A2072657475726E20224F7065726174696F6E20776F756C6420626C6F636B223B0A202020202020202063617365204552525F5553453A2072657475726E20224164647265737320696E20757365223B0A202020202020202063617365204552525F414C52454144593A2072657475726E2022416C726561647920636F6E6E6563746564223B0A202020202020202063617365204552525F434F4E4E3A2072657475726E20224E6F7420636F6E6E6563746564223B0A202020202020202063617365204552525F49463A2072657475726E20224C6F772D6C6576656C206E65746966206572726F72223B0A202020202020202063617365204552525F414252543A2072657475726E2022436F6E6E656374696F6E2061626F72746564223B0A202020202020202063617365204552525F5253543A2072657475726E2022436F6E6E656374696F6E207265736574223B0A202020202020202063617365204552525F434C53443A2072657475726E2022436F6E6E656374696F6E20636C6F736564223B0A202020202020202063617365204552525F4152473A2072657475726E2022496C6C6567616C20617267756D656E74223B0A202020202020202063617365202D35353A2072657475726E2022444E53206661696C6564223B0A202020202020202064656661756C743A2072657475726E2022554E4B4E4F574E223B0A202020207D0A7D0A0A636F6E73742063686172202A204173796E63436C69656E743A3A7374617465546F537472696E6728297B0A202020207377697463682873746174652829297B0A20202020202020206361736520303A2072657475726E2022436C6F736564223B0A20202020202020206361736520313A2072657475726E20224C697374656E223B0A20202020202020206361736520323A2072657475726E202253594E2053656E74223B0A20202020202020206361736520333A2072657475726E202253594E205265636569766564223B0A20202020202020206361736520343A2072657475726E202245737461626C6973686564223B0A20202020202020206361736520353A2072657475726E202246494E20576169742031223B0A20202020202020206361736520363A2072657475726E202246494E20576169742032223B0A20202020202020206361736520373A2072657475726E2022436C6F73652057616974223B0A20202020202020206361736520383A2072657475726E2022436C6F73696E67223B0A20202020202020206361736520393A2072657475726E20224C6173742041434B223B0A2020202020202020636173652031303A2072657475726E202254696D652057616974223B0A202020202020202064656661756C743A2072657475726E2022554E4B4E4F574E223B0A202020207D0A7D0A0A2F2A0A202A205374617469632043616C6C6261636B7320284C774950204332432B2B20696E746572636F6E6E656374290A202A202A2F0A0A766F6964204173796E63436C69656E743A3A5F735F646E735F666F756E6428636F6E73742063686172202A206E616D652C207374727563742069705F61646472202A206970616464722C20766F6964202A20617267297B0A202020207265696E746572707265745F636173743C4173796E63436C69656E742A3E28617267292D3E5F646E735F666F756E6428697061646472293B0A7D0A0A696E74385F74204173796E63436C69656E743A3A5F735F706F6C6C28766F6964202A206172672C20737472756374207463705F706362202A2070636229207B0A2020202072657475726E207265696E746572707265745F636173743C4173796E63436C69656E742A3E28617267292D3E5F706F6C6C28706362293B0A7D0A0A696E74385F74204173796E63436C69656E743A3A5F735F7265637628766F6964202A206172672C20737472756374207463705F706362202A207063622C207374727563742070627566202A70622C20696E74385F742065727229207B0A2020202072657475726E207265696E746572707265745F636173743C4173796E63436C69656E742A3E28617267292D3E5F72656376287063622C2070622C20657272293B0A7D0A0A696E74385F74204173796E63436C69656E743A3A5F735F66696E28766F6964202A206172672C20737472756374207463705F706362202A207063622C20696E74385F742065727229207B0A2020202072657475726E207265696E746572707265745F636173743C4173796E63436C69656E742A3E28617267292D3E5F66696E287063622C20657272293B0A7D0A0A696E74385F74204173796E63436C69656E743A3A5F735F6C7769705F66696E28766F6964202A206172672C20737472756374207463705F706362202A207063622C20696E74385F742065727229207B0A2020202072657475726E207265696E746572707265745F636173743C4173796E63436C69656E742A3E28617267292D3E5F6C7769705F66696E287063622C20657272293B0A7D0A0A696E74385F74204173796E63436C69656E743A3A5F735F73656E7428766F6964202A206172672C20737472756374207463705F706362202A207063622C2075696E7431365F74206C656E29207B0A2020202072657475726E207265696E746572707265745F636173743C4173796E63436C69656E742A3E28617267292D3E5F73656E74287063622C206C656E293B0A7D0A0A766F6964204173796E63436C69656E743A3A5F735F6572726F7228766F6964202A206172672C20696E74385F742065727229207B0A202020207265696E746572707265745F636173743C4173796E63436C69656E742A3E28617267292D3E5F6572726F7228657272293B0A7D0A0A696E74385F74204173796E63436C69656E743A3A5F735F636F6E6E656374656428766F6964202A206172672C20766F6964202A207063622C20696E74385F7420657272297B0A2020202072657475726E207265696E746572707265745F636173743C4173796E63436C69656E742A3E28617267292D3E5F636F6E6E6563746564287063622C20657272293B0A7D0A0A2F2A0A20204173796E6320544350205365727665720A202A2F0A0A4173796E635365727665723A3A4173796E635365727665722849504164647265737320616464722C2075696E7431365F7420706F7274290A3A205F706F727428706F7274290A2C205F616464722861646472290A2C205F6E6F44656C61792866616C7365290A2C205F7063622830290A2C205F636F6E6E6563745F63622830290A2C205F636F6E6E6563745F63625F6172672830290A7B7D0A0A4173796E635365727665723A3A4173796E635365727665722875696E7431365F7420706F7274290A3A205F706F727428706F7274290A2C205F61646472282875696E7433325F7429204950414444525F414E59290A2C205F6E6F44656C61792866616C7365290A2C205F7063622830290A2C205F636F6E6E6563745F63622830290A2C205F636F6E6E6563745F63625F6172672830290A7B7D0A0A4173796E635365727665723A3A7E4173796E6353657276657228297B0A20202020656E6428293B0A7D0A0A766F6964204173796E635365727665723A3A6F6E436C69656E74284163436F6E6E65637448616E646C65722063622C20766F69642A20617267297B0A202020205F636F6E6E6563745F6362203D2063623B0A202020205F636F6E6E6563745F63625F617267203D206172673B0A7D0A0A766F6964204173796E635365727665723A3A626567696E28297B0A202020206966285F70636229207B0A202020202020202072657475726E3B0A202020207D0A0A20202020696628215F73746172745F6173796E635F7461736B2829297B0A20202020202020206C6F675F6528226661696C656420746F207374617274207461736B22293B0A202020202020202072657475726E3B0A202020207D0A20202020696E74385F74206572723B0A202020205F706362203D207463705F6E65775F69705F74797065284950414444525F545950455F5634293B0A2020202069662028215F706362297B0A20202020202020206C6F675F6528225F706362203D3D204E554C4C22293B0A202020202020202072657475726E3B0A202020207D0A0A2020202069705F616464725F74206C6F63616C5F616464723B0A202020206C6F63616C5F616464722E74797065203D204950414444525F545950455F56343B0A202020206C6F63616C5F616464722E755F616464722E6970342E61646472203D202875696E7433325F7429205F616464723B0A20202020657272203D205F7463705F62696E64285F7063622C20266C6F63616C5F616464722C205F706F7274293B0A0A202020206966202865727220213D204552525F4F4B29207B0A20202020202020205F7463705F636C6F7365285F7063622C202D31293B0A20202020202020206C6F675F65282262696E64206572726F723A202564222C20657272293B0A202020202020202072657475726E3B0A202020207D0A0A202020207374617469632075696E74385F74206261636B6C6F67203D20353B0A202020205F706362203D205F7463705F6C697374656E5F776974685F6261636B6C6F67285F7063622C206261636B6C6F67293B0A2020202069662028215F70636229207B0A20202020202020206C6F675F6528226C697374656E5F706362203D3D204E554C4C22293B0A202020202020202072657475726E3B0A202020207D0A202020207463705F617267285F7063622C2028766F69642A292074686973293B0A202020207463705F616363657074285F7063622C20265F735F616363657074293B0A7D0A0A766F6964204173796E635365727665723A3A656E6428297B0A202020206966285F706362297B0A20202020202020207463705F617267285F7063622C204E554C4C293B0A20202020202020207463705F616363657074285F7063622C204E554C4C293B0A20202020202020206966287463705F636C6F7365285F7063622920213D204552525F4F4B297B0A2020202020202020202020205F7463705F61626F7274285F7063622C202D31293B0A20202020202020207D0A20202020202020205F706362203D204E554C4C3B0A202020207D0A7D0A0A2F2F72756E73206F6E204C774950207468726561640A696E74385F74204173796E635365727665723A3A5F616363657074287463705F7063622A207063622C20696E74385F7420657272297B0A202020202F2F6574735F7072696E746628222B413A203078253038785C6E222C20706362293B0A202020206966285F636F6E6E6563745F6362297B0A20202020202020204173796E63436C69656E74202A63203D206E6577204173796E63436C69656E7428706362293B0A202020202020202069662863297B0A202020202020202020202020632D3E7365744E6F44656C6179285F6E6F44656C6179293B0A20202020202020202020202072657475726E205F7463705F61636365707428746869732C2063293B0A20202020202020207D0A202020207D0A202020206966287463705F636C6F7365287063622920213D204552525F4F4B297B0A20202020202020207463705F61626F727428706362293B0A202020207D0A202020206C6F675F6528224641494C22293B0A2020202072657475726E204552525F4F4B3B0A7D0A0A696E74385F74204173796E635365727665723A3A5F6163636570746564284173796E63436C69656E742A20636C69656E74297B0A202020206966285F636F6E6E6563745F6362297B0A20202020202020205F636F6E6E6563745F6362285F636F6E6E6563745F63625F6172672C20636C69656E74293B0A202020207D0A2020202072657475726E204552525F4F4B3B0A7D0A0A766F6964204173796E635365727665723A3A7365744E6F44656C617928626F6F6C206E6F64656C6179297B0A202020205F6E6F44656C6179203D206E6F64656C61793B0A7D0A0A626F6F6C204173796E635365727665723A3A6765744E6F44656C617928297B0A2020202072657475726E205F6E6F44656C61793B0A7D0A0A75696E74385F74204173796E635365727665723A3A73746174757328297B0A2020202069662028215F70636229207B0A202020202020202072657475726E20303B0A202020207D0A2020202072657475726E205F7063622D3E73746174653B0A7D0A0A696E74385F74204173796E635365727665723A3A5F735F61636365707428766F6964202A206172672C207463705F706362202A207063622C20696E74385F7420657272297B0A2020202072657475726E207265696E746572707265745F636173743C4173796E635365727665722A3E28617267292D3E5F616363657074287063622C20657272293B0A7D0A0A696E74385F74204173796E635365727665723A3A5F735F616363657074656428766F6964202A6172672C204173796E63436C69656E742A20636C69656E74297B0A2020202072657475726E207265696E746572707265745F636173743C4173796E635365727665722A3E28617267292D3E5F616363657074656428636C69656E74293B0A7D0A .cpp AsyncTCP 2F2A0A20204173796E6368726F6E6F757320544350206C69627261727920666F7220457370726573736966204D4355730A0A2020436F707972696768742028632920323031362048726973746F20476F63686B6F762E20416C6C207269676874732072657365727665642E0A2020546869732066696C652069732070617274206F6620746865206573703832363620636F726520666F722041726475696E6F20656E7669726F6E6D656E742E0A0A202054686973206C696272617279206973206672656520736F6674776172653B20796F752063616E2072656469737472696275746520697420616E642F6F720A20206D6F6469667920697420756E64657220746865207465726D73206F662074686520474E55204C65737365722047656E6572616C205075626C69630A20204C6963656E7365206173207075626C697368656420627920746865204672656520536F66747761726520466F756E646174696F6E3B206569746865720A202076657273696F6E20322E31206F6620746865204C6963656E73652C206F722028617420796F7572206F7074696F6E2920616E79206C617465722076657273696F6E2E0A0A202054686973206C69627261727920697320646973747269627574656420696E2074686520686F706520746861742069742077696C6C2062652075736566756C2C0A202062757420574954484F555420414E592057415252414E54593B20776974686F7574206576656E2074686520696D706C6965642077617272616E7479206F660A20204D45524348414E544142494C495459206F72204649544E45535320464F52204120504152544943554C415220505552504F53452E20205365652074686520474E550A20204C65737365722047656E6572616C205075626C6963204C6963656E736520666F72206D6F72652064657461696C732E0A0A2020596F752073686F756C642068617665207265636569766564206120636F7079206F662074686520474E55204C65737365722047656E6572616C205075626C69630A20204C6963656E736520616C6F6E6720776974682074686973206C6962726172793B206966206E6F742C20777269746520746F20746865204672656520536F6674776172650A2020466F756E646174696F6E2C20496E632E2C203531204672616E6B6C696E2053742C20466966746820466C6F6F722C20426F73746F6E2C204D41202030323131302D3133303120205553410A2A2F0A0A2369666E646566204153594E435443505F485F0A23646566696E65204153594E435443505F485F0A0A23696E636C75646520224950416464726573732E68220A23696E636C756465202273646B636F6E6669672E68220A23696E636C756465203C66756E6374696F6E616C3E0A65787465726E20224322207B0A2020202023696E636C75646520226672656572746F732F73656D7068722E68220A2020202023696E636C75646520226C7769702F706275662E68220A7D0A0A2F2F496620636F7265206973206E6F7420646566696E65642C207468656E207765206172652072756E6E696E6720696E2041726475696E6F206F722050494F0A2369666E64656620434F4E4649475F4153594E435F5443505F52554E4E494E475F434F52450A23646566696E6520434F4E4649475F4153594E435F5443505F52554E4E494E475F434F5245202D31202F2F616E7920617661696C61626C6520636F72650A23646566696E6520434F4E4649475F4153594E435F5443505F5553455F5744542031202F2F696620656E61626C65642C2061646473206265747765656E203333757320616E6420323030757320706572206576656E740A23656E6469660A0A636C617373204173796E63436C69656E743B0A0A23646566696E65204153594E435F4D41585F41434B5F54494D4520353030300A23646566696E65204153594E435F57524954455F464C41475F434F50592030783031202F2F77696C6C20616C6C6F63617465206E65772062756666657220746F20686F6C64207468652064617461207768696C652073656E64696E672028656C73652077696C6C20686F6C64207265666572656E636520746F20746865206461746120676976656E290A23646566696E65204153594E435F57524954455F464C41475F4D4F52452030783032202F2F77696C6C206E6F742073656E642050534820666C61672C206D65616E696E6720746861742074686572652073686F756C64206265206D6F7265206461746120746F2062652073656E74206265666F726520746865206170706C69636174696F6E2073686F756C642072656163742E0A0A74797065646566207374643A3A66756E6374696F6E3C766F696428766F69642A2C204173796E63436C69656E742A293E204163436F6E6E65637448616E646C65723B0A74797065646566207374643A3A66756E6374696F6E3C766F696428766F69642A2C204173796E63436C69656E742A2C2073697A655F74206C656E2C2075696E7433325F742074696D65293E20416341636B48616E646C65723B0A74797065646566207374643A3A66756E6374696F6E3C766F696428766F69642A2C204173796E63436C69656E742A2C20696E74385F74206572726F72293E2041634572726F7248616E646C65723B0A74797065646566207374643A3A66756E6374696F6E3C766F696428766F69642A2C204173796E63436C69656E742A2C20766F6964202A646174612C2073697A655F74206C656E293E2041634461746148616E646C65723B0A74797065646566207374643A3A66756E6374696F6E3C766F696428766F69642A2C204173796E63436C69656E742A2C207374727563742070627566202A7062293E2041635061636B657448616E646C65723B0A74797065646566207374643A3A66756E6374696F6E3C766F696428766F69642A2C204173796E63436C69656E742A2C2075696E7433325F742074696D65293E20416354696D656F757448616E646C65723B0A0A737472756374207463705F7063623B0A7374727563742069705F616464723B0A0A636C617373204173796E63436C69656E74207B0A20207075626C69633A0A202020204173796E63436C69656E74287463705F7063622A20706362203D2030293B0A202020207E4173796E63436C69656E7428293B0A0A202020204173796E63436C69656E742026206F70657261746F723D28636F6E7374204173796E63436C69656E7420266F74686572293B0A202020204173796E63436C69656E742026206F70657261746F722B3D28636F6E7374204173796E63436C69656E7420266F74686572293B0A0A20202020626F6F6C206F70657261746F723D3D28636F6E7374204173796E63436C69656E7420266F74686572293B0A0A20202020626F6F6C206F70657261746F72213D28636F6E7374204173796E63436C69656E7420266F7468657229207B0A20202020202072657475726E2021282A74686973203D3D206F74686572293B0A202020207D0A20202020626F6F6C20636F6E6E656374284950416464726573732069702C2075696E7431365F7420706F7274293B0A20202020626F6F6C20636F6E6E65637428636F6E737420636861722A20686F73742C2075696E7431365F7420706F7274293B0A20202020766F696420636C6F736528626F6F6C206E6F77203D2066616C7365293B0A20202020766F69642073746F7028293B0A20202020696E74385F742061626F727428293B0A20202020626F6F6C206672656528293B0A0A20202020626F6F6C2063616E53656E6428293B2F2F61636B206973206E6F742070656E64696E670A2020202073697A655F7420737061636528293B2F2F737061636520617661696C61626C6520696E20746865205443502077696E646F770A2020202073697A655F742061646428636F6E737420636861722A20646174612C2073697A655F742073697A652C2075696E74385F7420617069666C6167733D4153594E435F57524954455F464C41475F434F5059293B2F2F61646420666F722073656E64696E670A20202020626F6F6C2073656E6428293B2F2F73656E6420616C6C2064617461206164646564207769746820746865206D6574686F642061626F76650A0A202020202F2F777269746520657175616C732061646428292B73656E6428290A2020202073697A655F7420777269746528636F6E737420636861722A2064617461293B0A2020202073697A655F7420777269746528636F6E737420636861722A20646174612C2073697A655F742073697A652C2075696E74385F7420617069666C6167733D4153594E435F57524954455F464C41475F434F5059293B202F2F6F6E6C79207768656E2063616E53656E642829203D3D20747275650A0A2020202075696E74385F7420737461746528293B0A20202020626F6F6C20636F6E6E656374696E6728293B0A20202020626F6F6C20636F6E6E656374656428293B0A20202020626F6F6C20646973636F6E6E656374696E6728293B0A20202020626F6F6C20646973636F6E6E656374656428293B0A20202020626F6F6C206672656561626C6528293B2F2F646973636F6E6E6563746564206F7220646973636F6E6E656374696E670A0A2020202075696E7431365F74206765744D737328293B0A0A2020202075696E7433325F7420676574527854696D656F757428293B0A20202020766F696420736574527854696D656F75742875696E7433325F742074696D656F7574293B2F2F6E6F20525820646174612074696D656F757420666F722074686520636F6E6E656374696F6E20696E207365636F6E64730A0A2020202075696E7433325F742067657441636B54696D656F757428293B0A20202020766F69642073657441636B54696D656F75742875696E7433325F742074696D656F7574293B2F2F6E6F2041434B2074696D656F757420666F7220746865206C6173742073656E74207061636B657420696E206D696C6C697365636F6E64730A0A20202020766F6964207365744E6F44656C617928626F6F6C206E6F64656C6179293B0A20202020626F6F6C206765744E6F44656C617928293B0A0A2020202075696E7433325F742067657452656D6F74654164647265737328293B0A2020202075696E7431365F742067657452656D6F7465506F727428293B0A2020202075696E7433325F74206765744C6F63616C4164647265737328293B0A2020202075696E7431365F74206765744C6F63616C506F727428293B0A0A202020202F2F636F6D7061746962696C6974790A202020204950416464726573732072656D6F7465495028293B0A2020202075696E7431365F74202072656D6F7465506F727428293B0A20202020495041646472657373206C6F63616C495028293B0A2020202075696E7431365F7420206C6F63616C506F727428293B0A0A20202020766F6964206F6E436F6E6E656374284163436F6E6E65637448616E646C65722063622C20766F69642A20617267203D2030293B20202020202F2F6F6E207375636365737366756C20636F6E6E6563740A20202020766F6964206F6E446973636F6E6E656374284163436F6E6E65637448616E646C65722063622C20766F69642A20617267203D2030293B20202F2F646973636F6E6E65637465640A20202020766F6964206F6E41636B28416341636B48616E646C65722063622C20766F69642A20617267203D2030293B202020202020202020202020202F2F61636B2072656365697665640A20202020766F6964206F6E4572726F722841634572726F7248616E646C65722063622C20766F69642A20617267203D2030293B2020202020202020202F2F756E7375636365737366756C20636F6E6E656374206F72206572726F720A20202020766F6964206F6E446174612841634461746148616E646C65722063622C20766F69642A20617267203D2030293B20202020202020202020202F2F64617461207265636569766564202863616C6C6564206966206F6E5061636B6574206973206E6F742075736564290A20202020766F6964206F6E5061636B65742841635061636B657448616E646C65722063622C20766F69642A20617267203D2030293B202020202020202F2F646174612072656365697665640A20202020766F6964206F6E54696D656F757428416354696D656F757448616E646C65722063622C20766F69642A20617267203D2030293B20202020202F2F61636B2074696D656F75740A20202020766F6964206F6E506F6C6C284163436F6E6E65637448616E646C65722063622C20766F69642A20617267203D2030293B20202020202020202F2F6576657279203132356D73207768656E20636F6E6E65637465640A0A20202020766F69642061636B5061636B6574287374727563742070627566202A207062293B2F2F61636B20706275662066726F6D206F6E5061636B65740A2020202073697A655F742061636B2873697A655F74206C656E293B202F2F61636B2064617461207468617420796F752068617665206E6F742061636B6564207573696E6720746865206D6574686F642062656C6F770A20202020766F69642061636B4C6174657228297B205F61636B5F706362203D2066616C73653B207D202F2F77696C6C206E6F742061636B207468652063757272656E74207061636B65742E2043616C6C2066726F6D206F6E446174610A0A20202020636F6E73742063686172202A206572726F72546F537472696E6728696E74385F74206572726F72293B0A20202020636F6E73742063686172202A207374617465546F537472696E6728293B0A0A202020202F2F446F206E6F742075736520616E79206F66207468652066756E6374696F6E732062656C6F77210A2020202073746174696320696E74385F74205F735F706F6C6C28766F6964202A6172672C20737472756374207463705F706362202A74706362293B0A2020202073746174696320696E74385F74205F735F7265637628766F6964202A6172672C20737472756374207463705F706362202A747063622C207374727563742070627566202A70622C20696E74385F7420657272293B0A2020202073746174696320696E74385F74205F735F66696E28766F6964202A6172672C20737472756374207463705F706362202A747063622C20696E74385F7420657272293B0A2020202073746174696320696E74385F74205F735F6C7769705F66696E28766F6964202A6172672C20737472756374207463705F706362202A747063622C20696E74385F7420657272293B0A2020202073746174696320766F6964205F735F6572726F7228766F6964202A6172672C20696E74385F7420657272293B0A2020202073746174696320696E74385F74205F735F73656E7428766F6964202A6172672C20737472756374207463705F706362202A747063622C2075696E7431365F74206C656E293B0A2020202073746174696320696E74385F74205F735F636F6E6E656374656428766F69642A206172672C20766F69642A20747063622C20696E74385F7420657272293B0A2020202073746174696320766F6964205F735F646E735F666F756E6428636F6E73742063686172202A6E616D652C207374727563742069705F61646472202A6970616464722C20766F6964202A617267293B0A0A20202020696E74385F74205F72656376287463705F7063622A207063622C20706275662A2070622C20696E74385F7420657272293B0A202020207463705F706362202A2070636228297B2072657475726E205F7063623B207D0A0A202070726F7465637465643A0A202020207463705F7063622A205F7063623B0A20202020696E74385F7420205F636C6F7365645F736C6F743B0A0A202020204163436F6E6E65637448616E646C6572205F636F6E6E6563745F63623B0A20202020766F69642A205F636F6E6E6563745F63625F6172673B0A202020204163436F6E6E65637448616E646C6572205F646973636172645F63623B0A20202020766F69642A205F646973636172645F63625F6172673B0A20202020416341636B48616E646C6572205F73656E745F63623B0A20202020766F69642A205F73656E745F63625F6172673B0A2020202041634572726F7248616E646C6572205F6572726F725F63623B0A20202020766F69642A205F6572726F725F63625F6172673B0A2020202041634461746148616E646C6572205F726563765F63623B0A20202020766F69642A205F726563765F63625F6172673B0A2020202041635061636B657448616E646C6572205F70625F63623B0A20202020766F69642A205F70625F63625F6172673B0A20202020416354696D656F757448616E646C6572205F74696D656F75745F63623B0A20202020766F69642A205F74696D656F75745F63625F6172673B0A202020204163436F6E6E65637448616E646C6572205F706F6C6C5F63623B0A20202020766F69642A205F706F6C6C5F63625F6172673B0A0A20202020626F6F6C205F7063625F627573793B0A2020202075696E7433325F74205F7063625F73656E745F61743B0A20202020626F6F6C205F61636B5F7063623B0A2020202075696E7433325F74205F72785F61636B5F6C656E3B0A2020202075696E7433325F74205F72785F6C6173745F7061636B65743B0A2020202075696E7433325F74205F72785F73696E63655F74696D656F75743B0A2020202075696E7433325F74205F61636B5F74696D656F75743B0A2020202075696E7431365F74205F636F6E6E6563745F706F72743B0A0A20202020696E74385F74205F636C6F736528293B0A20202020766F6964205F667265655F636C6F7365645F736C6F7428293B0A20202020766F6964205F616C6C6F636174655F636C6F7365645F736C6F7428293B0A20202020696E74385F74205F636F6E6E656374656428766F69642A207063622C20696E74385F7420657272293B0A20202020766F6964205F6572726F7228696E74385F7420657272293B0A20202020696E74385F74205F706F6C6C287463705F7063622A20706362293B0A20202020696E74385F74205F73656E74287463705F7063622A207063622C2075696E7431365F74206C656E293B0A20202020696E74385F74205F66696E287463705F7063622A207063622C20696E74385F7420657272293B0A20202020696E74385F74205F6C7769705F66696E287463705F7063622A207063622C20696E74385F7420657272293B0A20202020766F6964205F646E735F666F756E64287374727563742069705F61646472202A697061646472293B0A0A20207075626C69633A0A202020204173796E63436C69656E742A20707265763B0A202020204173796E63436C69656E742A206E6578743B0A7D3B0A0A636C617373204173796E63536572766572207B0A20207075626C69633A0A202020204173796E635365727665722849504164647265737320616464722C2075696E7431365F7420706F7274293B0A202020204173796E635365727665722875696E7431365F7420706F7274293B0A202020207E4173796E6353657276657228293B0A20202020766F6964206F6E436C69656E74284163436F6E6E65637448616E646C65722063622C20766F69642A20617267293B0A20202020766F696420626567696E28293B0A20202020766F696420656E6428293B0A20202020766F6964207365744E6F44656C617928626F6F6C206E6F64656C6179293B0A20202020626F6F6C206765744E6F44656C617928293B0A2020202075696E74385F742073746174757328293B0A0A202020202F2F446F206E6F742075736520616E79206F66207468652066756E6374696F6E732062656C6F77210A2020202073746174696320696E74385F74205F735F61636365707428766F6964202A6172672C207463705F7063622A206E65777063622C20696E74385F7420657272293B0A2020202073746174696320696E74385F74205F735F616363657074656428766F6964202A6172672C204173796E63436C69656E742A20636C69656E74293B0A0A202070726F7465637465643A0A2020202075696E7431365F74205F706F72743B0A20202020495041646472657373205F616464723B0A20202020626F6F6C205F6E6F44656C61793B0A202020207463705F7063622A205F7063623B0A202020204163436F6E6E65637448616E646C6572205F636F6E6E6563745F63623B0A20202020766F69642A205F636F6E6E6563745F63625F6172673B0A0A20202020696E74385F74205F616363657074287463705F7063622A206E65777063622C20696E74385F7420657272293B0A20202020696E74385F74205F6163636570746564284173796E63436C69656E742A20636C69656E74293B0A7D3B0A0A0A23656E646966202F2A204153594E435443505F485F202A2F0A .h async-mqtt-client .editorconfig 726F6F74203D20747275650A0A5B2A5D0A656E645F6F665F6C696E65203D206C660A696E736572745F66696E616C5F6E65776C696E65203D20747275650A63686172736574203D207574662D380A696E64656E745F7374796C65203D2073706163650A696E64656E745F73697A65203D20320A7472696D5F747261696C696E675F77686974657370616365203D20747275650A0A5B6B6579776F7264732E7478745D0A696E64656E745F7374796C65203D207461620A .gitignore 2F636F6E6669672E6A736F6E0D0A .travis 6C616E67756167653A20707974686F6E0D0A707974686F6E3A0D0A20202D2022322E37220D0A0D0A63616368653A0D0A20206469726563746F726965733A0D0A202020202D20227E2F2E706C6174666F726D696F220D0A0D0A656E763A0D0A20202D20504C4154464F524D494F5F43495F5352433D6578616D706C65732F46756C6C7946656174757265642D4553503832363620504C4154464F524D494F5F43495F45585452415F415247533D222D2D626F6172643D6573703031202D2D626F6172643D6E6F64656D63757632220D0A20202D20504C4154464F524D494F5F43495F5352433D6578616D706C65732F46756C6C7946656174757265642D455350333220504C4154464F524D494F5F43495F45585452415F415247533D222D2D626F6172643D6C6F6C696E3332220D0A20202D204350504C494E543D747275650D0A0D0A696E7374616C6C3A0D0A20202D2070697020696E7374616C6C202D552068747470733A2F2F6769746875622E636F6D2F706C6174666F726D696F2F706C6174666F726D696F2D636F72652F617263686976652F646576656C6F702E7A69700D0A20202D2070697020696E7374616C6C202D55206370706C696E740D0A20202D20706C6174666F726D696F206C6962202D6720696E7374616C6C2066696C653A2F2F2E0D0A0D0A7363726970743A0D0A20202D206966205B5B2022244350504C494E5422205D5D3B207468656E206D616B65206370706C696E743B20656C736520706C6174666F726D696F2063692024504C4154464F524D494F5F43495F45585452415F415247533B2066690D0A .yml async-mqtt-client 3C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D225554462D38223F3E0D0A3C70726F6A6563742076657273696F6E3D2231223E0D0A202020203C696E636C7564656469723E0D0A20202020202020203C646972206E616D653D227372632F222F3E0D0A202020203C2F696E636C7564656469723E0D0A3C2F70726F6A6563743E0D0A .cppcheck docs 1.-Getting-started 232047657474696E6720737461727465640A0A546F20757365204173796E634D717474436C69656E742C20796F75206E6565643A0A0A2A20416E20455350383236360A2A205468652041726475696E6F2049444520666F722045535038323636202876657273696F6E20322E322E30206D696E696D756D290A2A204261736963206B6E6F776C65646765206F66207468652041726475696E6F20656E7669726F6E6D656E74202875706C6F6164206120736B657463682C20696D706F7274206C69627261726965732C202E2E2E290A0A232320496E7374616C6C696E67204173796E634D717474436C69656E740A0A5468657265206172652074776F207761797320746F20696E7374616C6C204173796E634D717474436C69656E742E0A0A2323232031612E20466F72207468652041726475696E6F204944450A0A312E20446F776E6C6F616420746865205B636F72726573706F6E64696E672072656C656173655D2868747470733A2F2F6769746875622E636F6D2F6D617276696E726F6765722F6173796E632D6D7174742D636C69656E742F72656C65617365732F6C6174657374290A322E204C6F61642074686520602E7A6970602077697468202A2A536B6574636820E2869220496E636C756465204C69627261727920E2869220416464202E5A4950204C6962726172792A2A0A0A4173796E634D717474436C69656E7420686173203120646570656E64656E63793A205B4553504173796E635443505D2868747470733A2F2F6769746875622E636F6D2F6D652D6E6F2D6465762F4553504173796E63544350292E20446F776E6C6F616420746865205B2E7A69705D2868747470733A2F2F6769746875622E636F6D2F6D652D6E6F2D6465762F4553504173796E635443502F617263686976652F6D61737465722E7A69702920616E6420696E7374616C6C2069742077697468207468652073616D65206D6574686F642061732061626F76652E0A0A23232046756C6C792D666561747572656420736B657463680A0A536565205B6578616D706C65732F46756C6C7946656174757265642D455350383236362E696E6F5D282E2E2F6578616D706C65732F46756C6C7946656174757265642D455350383236362F46756C6C7946656174757265642D455350383236362E696E6F290A0A2A2A3C753E5665727920696D706F7274616E743A3C2F753E20417320612072756C65206F66207468756D622C206E657665722075736520626C6F636B696E672066756E6374696F6E7320696E207468652063616C6C6261636B732028646F6E277420757365206064656C6179282960206F7220607969656C64282960292E2A2A204F74686572776973652C20796F75206D617920766572792070726F6261626C7920657870657269656E636520756E6578706563746564206265686176696F72732E0A0A596F752063616E20676F20746F20746865205B415049207265666572656E63655D28322E2D4150492D7265666572656E63652E6D64292E0A .md 2.-API-reference 2320415049207265666572656E63650A0A23232323204173796E634D717474436C69656E7428290A0A496E7374616E74696174652061206E6577204173796E634D717474436C69656E74206F626A6563742E0A0A23232320436F6E66696775726174696F6E0A0A23232323204173796E634D717474436C69656E7426207365744B656570416C6976652875696E7431365F7420606B656570416C69766560290A0A53657420746865206B65657020616C6976652E2044656661756C747320746F203135207365636F6E64732E0A0A2A202A2A606B656570416C697665602A2A3A204B65657020616C69766520696E207365636F6E64730A0A23232323204173796E634D717474436C69656E742620736574436C69656E74496428636F6E737420636861725C2A2060636C69656E74496460290A0A5365742074686520636C69656E742049442E2044656661756C747320746F2060657370383236363C63686970204944206F6E203620686578206361726163746572733E602E0A0A2A202A2A60636C69656E744964602A2A3A20436C69656E742049440A0A23232323204173796E634D717474436C69656E742620736574436C65616E53657373696F6E28626F6F6C2060636C65616E53657373696F6E60290A0A57686574686572206F72206E6F7420746F207365742074686520436C65616E53657373696F6E20666C61672E2044656661756C747320746F206074727565602E0A0A2A202A2A60636C65616E53657373696F6E602A2A3A20636C65616E2073657373696F6E2077616E746564206F72206E6F740A0A23232323204173796E634D717474436C69656E7426207365744D6178546F7069634C656E6774682875696E7431365F7420606D6178546F7069634C656E67746860290A0A53657420746865206D6178696D756D20616C6C6F77656420746F706963206C656E67746820746F20726563656976652E20496620616E204D515454207061636B65742069732072656365697665640A77697468206120746F706963206C6F6E676572207468616E2074686973206D6178696D756D2C20746865207061636B65742077696C6C2062652069676E6F7265642E2044656661756C747320746F2060313238602E0A0A2A202A2A606D6178546F7069634C656E677468602A2A3A204D6178696D756D20616C6C6F77656420746F706963206C656E67746820746F20726563656976650A0A23232323204173796E634D717474436C69656E74262073657443726564656E7469616C7328636F6E737420636861725C2A2060757365726E616D65602C20636F6E737420636861725C2A206070617373776F726460203D206E756C6C707472290A0A5365742074686520757365726E616D652F70617373776F72642E2044656661756C747320746F206E6F6E2D617574682E0A0A2A202A2A60757365726E616D65602A2A3A20557365726E616D650A2A202A2A6070617373776F7264602A2A3A2050617373776F72640A0A23232323204173796E634D717474436C69656E74262073657457696C6C28636F6E737420636861725C2A2060746F706963602C2075696E74385F742060716F73602C20626F6F6C206072657461696E602C20636F6E737420636861725C2A20607061796C6F616460203D206E756C6C7074722C2073697A655F7420606C656E67746860203D2030290A0A53657420746865204C6173742057696C6C2054657374616D656E742E2044656661756C747320746F206E6F6E652E0A0A2A202A2A60746F706963602A2A3A20546F706963206F6620746865204C57540A2A202A2A60716F73602A2A3A20516F53206F6620746865204C57540A2A202A2A6072657461696E602A2A3A2052657461696E20666C6167206F6620746865204C57540A2A202A2A607061796C6F6164602A2A3A205061796C6F6164206F6620746865204C57542E20496620756E7365742C20746865207061796C6F61642077696C6C20626520656D7074790A2A202A2A606C656E677468602A2A3A205061796C6F6164206C656E6774682E20496620756E736574206F722073657420746F20302C20746865207061796C6F61642077696C6C20626520636F6E73696465726564206173206120737472696E6720616E64206974732073697A652077696C6C2062652063616C63756C61746564207573696E6720607374726C656E287061796C6F616429600A0A23232323204173796E634D717474436C69656E7426207365745365727665722849504164647265737320606970602C2075696E7431365F742060706F727460290A0A53657420746865207365727665722E0A0A2A202A2A606970602A2A3A204950206F6620746865207365727665720A2A202A2A60706F7274602A2A3A20506F7274206F6620746865207365727665720A0A23232323204173796E634D717474436C69656E74262073657453657276657228636F6E737420636861725C2A2060686F7374602C2075696E7431365F742060706F727460290A0A53657420746865207365727665722E0A0A2A202A2A60686F7374602A2A3A20486F7374206F6620746865207365727665720A2A202A2A60706F7274602A2A3A20506F7274206F6620746865207365727665720A0A23232323204173796E634D717474436C69656E74262073657453656375726528626F6F6C206073656375726560290A0A57686574686572206F72206E6F7420746F207573652053534C2E2044656661756C747320746F206066616C7365602E0A0A2A202A2A60736563757265602A2A3A2053534C2077616E746564206F72206E6F742E0A0A23232323204173796E634D717474436C69656E74262061646453657276657246696E6765727072696E7428636F6E73742075696E74385F745C2A206066696E6765727072696E7460290A0A4164647320616E2061636365707461626C65207365727665722066696E6765727072696E74202853484131292E2054686973206D61792062652063616C6C6564206D756C7469706C652074696D657320746F207065726D697420616E79206F6E65206F6620746865207370656369666965642066696E6765727072696E74732E2042792064656661756C742C206966206E6F2066696E6765727072696E742069732061646465642C20616E792066696E6765727072696E742069732061636365707465642E0A0A2A202A2A6066696E6765727072696E74602A2A3A2046696E6765727072696E7420746F206164640A0A232323204576656E74732068616E646C6572730A0A23232323204173796E634D717474436C69656E7426206F6E436F6E6E656374284173796E634D717474436C69656E74496E7465726E616C733A3A4F6E436F6E6E6563745573657243616C6C6261636B206063616C6C6261636B60290A0A416464206120636F6E6E656374206576656E742068616E646C65722E0A0A2A202A2A6063616C6C6261636B602A2A3A2046756E6374696F6E20746F2063616C6C0A0A23232323204173796E634D717474436C69656E7426206F6E446973636F6E6E656374284173796E634D717474436C69656E74496E7465726E616C733A3A4F6E446973636F6E6E6563745573657243616C6C6261636B206063616C6C6261636B60290A0A416464206120646973636F6E6E656374206576656E742068616E646C65722E0A0A2A202A2A6063616C6C6261636B602A2A3A2046756E6374696F6E20746F2063616C6C0A0A23232323204173796E634D717474436C69656E7426206F6E537562736372696265284173796E634D717474436C69656E74496E7465726E616C733A3A4F6E5375627363726962655573657243616C6C6261636B206063616C6C6261636B60290A0A4164642061207375627363726962652061636B6E6F776C6564676564206576656E742068616E646C65722E0A0A2A202A2A6063616C6C6261636B602A2A3A2046756E6374696F6E20746F2063616C6C0A0A23232323204173796E634D717474436C69656E7426206F6E556E737562736372696265284173796E634D717474436C69656E74496E7465726E616C733A3A4F6E556E7375627363726962655573657243616C6C6261636B206063616C6C6261636B60290A0A41646420616E20756E7375627363726962652061636B6E6F776C6564676564206576656E742068616E646C65722E0A0A2A202A2A6063616C6C6261636B602A2A3A2046756E6374696F6E20746F2063616C6C0A0A23232323204173796E634D717474436C69656E7426206F6E4D657373616765284173796E634D717474436C69656E74496E7465726E616C733A3A4F6E4D6573736167655573657243616C6C6261636B206063616C6C6261636B60290A0A4164642061207075626C697368207265636569766564206576656E742068616E646C65722E0A0A2A202A2A6063616C6C6261636B602A2A3A2046756E6374696F6E20746F2063616C6C0A0A23232323204173796E634D717474436C69656E7426206F6E5075626C697368284173796E634D717474436C69656E74496E7465726E616C733A3A4F6E5075626C6973685573657243616C6C6261636B206063616C6C6261636B60290A0A4164642061207075626C6973682061636B6E6F776C6564676564206576656E742068616E646C65722E0A0A2A202A2A6063616C6C6261636B602A2A3A2046756E6374696F6E20746F2063616C6C0A0A232323204F7065726174696F6E2066756E6374696F6E730A0A2323232320626F6F6C20636F6E6E656374656428290A0A52657475726E2069662074686520636C69656E742069732063757272656E746C7920636F6E6E656374656420746F207468652062726F6B6572206F72206E6F742E0A0A2323232320766F696420636F6E6E65637428290A0A436F6E6E65637420746F20746865207365727665722E0A0A2323232320766F696420646973636F6E6E65637428626F6F6C2060666F72636560203D2066616C7365290A0A446973636F6E6E6563742066726F6D20746865207365727665722E0A0A2A202A2A60666F726365602A2A3A205768657468657220746F20666F7263652074686520646973636F6E6E656374696F6E2E2044656661756C747320746F206066616C7365602028636C65616E20646973636F6E6E656374696F6E292E0A0A232323232075696E7431365F742073756273637269626528636F6E737420636861725C2A2060746F706963602C2075696E74385F742060716F7360290A0A53756273637269626520746F2074686520676976656E20746F7069632061742074686520676976656E20516F532E0A0A52657475726E20746865207061636B6574204944206F722030206966206661696C65642E0A0A2A202A2A60746F706963602A2A3A20546F7069630A2A202A2A60716F73602A2A3A20516F530A0A232323232075696E7431365F7420756E73756273637269626528636F6E737420636861725C2A2060746F70696360290A0A556E7375627363726962652066726F6D2074686520676976656E20746F7069632E0A0A52657475726E20746865207061636B6574204944206F722030206966206661696C65642E0A0A2A202A2A60746F706963602A2A3A20546F7069630A0A232323232075696E7431365F74207075626C69736828636F6E737420636861725C2A2060746F706963602C2075696E74385F742060716F73602C20626F6F6C206072657461696E602C20636F6E737420636861725C2A20607061796C6F616460203D206E756C6C7074722C2073697A655F7420606C656E67746860203D20302C20626F6F6C20647570203D2066616C73652C2075696E7431365F74206D6573736167655F6964203D2030290A0A5075626C6973682061207061636B65742E0A0A52657475726E20746865207061636B657420494420286F72203120696620516F53203029206F722030206966206661696C65642E0A0A2A202A2A60746F706963602A2A3A20546F7069630A2A202A2A60716F73602A2A3A20516F530A2A202A2A6072657461696E602A2A3A2052657461696E20666C61670A2A202A2A607061796C6F6164602A2A3A205061796C6F61642E20496620756E7365742C20746865207061796C6F61642077696C6C20626520656D7074790A2A202A2A606C656E677468602A2A3A205061796C6F6164206C656E6774682E20496620756E736574206F722073657420746F20302C20746865207061796C6F61642077696C6C20626520636F6E73696465726564206173206120737472696E6720616E64206974732073697A652077696C6C2062652063616C63756C61746564207573696E6720607374726C656E287061796C6F616429600A2A202A2A60647570602A2A3A204475706C696361746520666C61672E20496620736574206F722073657420746F20312C20746865207061796C6F61642077696C6C20626520666C61676765642061732061206475706C69636174650A2A202A2A606D6573736167655F6964602A2A3A20546865206D6573736167652049442E20496620756E736574206F722073657420746F20302C20746865206D6573736167652049442077696C6C206265206175746F6D74616963616C6C792061737369676E65642E2055736520746869732077697468207468652044555020666C616720746F206964656E74696679207768696368206D657373616765206973206265696E67206475706C6963617465640A .md 3.-Memory-management 23204D656D6F7279206D616E6167656D656E740A0A4173796E634D717474436C69656E7420646F6573206E6F742075736520616E20696E7465726E616C206275666665722C2069742075736573207468652072617720544350206275666665722E0A0A546865206D617820726563656976652073697A652069732061626F75742031343630206279746573207065722063616C6C20746F20796F7572206F6E4D6573736167652063616C6C6261636B2E204275742074686520616D6F756E74206F66206461746120796F752063616E207265636569766520697320756E6C696D697465642C20617320696620796F7520726563656976652C207361792C2061203330306B42207061796C6F616420287375636820617320616E204F5441207061796C6F6164292C207468656E20796F757220606F6E4D657373616765602063616C6C6261636B2077696C6C2062652063616C6C65642061626F7574203230302074696D65732C207769746820746865206163636F7264696E67206C656E2C20696E64657820616E6420746F74616C20706172616D65746572732E204B65657020696E206D696E6420746865206C6962726172792077696C6C2063616C6C20796F757220606F6E4D657373616765602063616C6C6261636B732077697468207468652073616D6520746F706963206275666665722C20736F20696620796F75206368616E67652074686520627566666572206F6E206F6E652063616C6C2C20746865206275666665722077696C6C2072656D61696E206368616E676564206F6E2073756273657175656E742063616C6C732E0A0A596F752063616E2073656E642064617461206173206C6F6E6720617320796F7520737461792062656C6F772074686520617661696C61626C65205443502077696E646F77202877686963682069732061626F757420332D346B42206F6E207468652045535038323636292E20546865206461746120697320696E646565642068656C6420696E206D656D6F727920627920746865206173796E632054435020636F646520756E74696C2041434B2069732072656365697665642E20496620746865205443502077696E646F77207761732073756666696369656E7420746F2073656E6420796F7572207061636B65742C2074686520607075626C69736860206D6574686F642077696C6C2072657475726E2061207061636B657420494420696E6469636174696E6720746865207061636B6574207761732073656E742E204F74686572776973652C2061206030602077696C6C2062652072657475726E65642C20616E64206974277320796F757220726573706F6E736162696C69747920746F20726573656E6420746865207061636B6574207769746820607075626C697368602E0A .md 4.-Limitations-and-known-issues 23204C696D69746174696F6E7320616E64206B6E6F776E206973737565730A0A2A205768656E2074686520436C65616E53657373696F6E2069732073657420746F206066616C7365602C2074686520696D706C656D656E746174696F6E206973206E6F74207370656320636F6D706C69616E742E2054686520666F6C6C6F77696E67206973206E6F7420686F6E6F7265643A0A0A3E204D757374206265206B65707420696E206D656D6F72793A0A2A20416C6C206D6573736167657320696E206120516F532031206F72203220666C6F772C20776869636820617265206E6F7420636F6E6669726D6564206279207468652062726F6B65720A2A20416C6C20726563656976656420516F532032206D657373616765732C20776869636820617265206E6F742079657420636F6E6669726D656420746F207468652062726F6B65720A0A54686973206D65616E732072657472616E736D697373696F6E206973206E6F7420686F6E6F72656420696E2063617365206F662061206661696C7572652E0A0A2A20596F752063616E6E6F742073656E64207061796C6F6164206C6172676572207468617420776861742063616E20666974206F6E2052414D2E0A0A23232053534C206C696D69746174696F6E730A0A2A2053534C20726571756972657320757365206F6620657370383236362F41726475696E6F20322E342E302C207768696368206973206E6F74207965742072656C65617365642028706C6174666F726D203D20657370726573736966383236365F737461676520696E20506C6174666F726D494F292E0A2A2053534C20726571756972657320746865206275696C6420666C6167202D444153594E435F5443505F53534C5F454E41424C45443D310A2A2053534C206F6E6C7920737570706F7274732066696E6765727072696E747320666F72207365727665722076616C69646174696F6E2E0A2A20496620796F7520646F206E6F742073706563696679206F6E65206F72206D6F72652061636365707461626C65207365727665722066696E6765727072696E74732C207468652053534C20636F6E6E656374696F6E2077696C6C2062652076756C6E657261626C6520746F206D616E2D696E2D7468652D6D6964646C652061747461636B732E0A2A20536F6D6520736572766572206365727469666963617465207369676E617475726520616C676F726974686D7320646F206E6F7420776F726B2E20534841312C205348413232342C205348413235362C20616E64204D44352061726520776F726B696E672E205348413338342C20616E64205348413531322077696C6C20636175736520612063726173682E200A .md 5.-Troubleshooting 232054726F75626C6573686F6F74696E670A0A546F20626520636F6D706C65746564207768656E206973737565732061726973652E0A .md index 57656C636F6D6520746F20746865204173796E634D717474436C69656E7420666F72204553503832363620646F63732E0D0A0D0A2A2A3C7020616C69676E3D2263656E746572223E5468697320646F63756D656E746174696F6E206973206F6E6C792076616C696420666F7220746865204173796E634D717474436C69656E742076657273696F6E20696E2074686973207265706F2F6469726563746F72793C2F703E2A2A0A0D0A2D2D2D2D2D0D0A0D0A2323232320312E205B47657474696E6720737461727465645D28312E2D47657474696E672D737461727465642E6D64290D0A2323232320322E205B415049207265666572656E63655D28322E2D4150492D7265666572656E63652E6D64290A2323232320332E205B4D656D6F7279206D616E6167656D656E745D28332E2D4D656D6F72792D6D616E6167656D656E742E6D64290A2323232320342E205B4C696D69746174696F6E7320616E64206B6E6F776E206973737565735D28342E2D4C696D69746174696F6E732D616E642D6B6E6F776E2D6973737565732E6D64290A2323232320352E205B54726F75626C6573686F6F74696E675D28352E2D54726F75626C6573686F6F74696E672E6D64290A .md README 4173796E634D717474436C69656E7420646F63756D656E746174696F6E0D0A3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D0D0A0D0A536565205B696E6465782E6D645D28696E6465782E6D642920746F2076696577206974206C6F63616C6C792C206F7220687474703A2F2F6D617276696E726F6765722E76696577646F63732E696F2F6173796E632D6D7174742D636C69656E742F20746F2076696577206974206F6E6C696E652E0D0A .md examples FullyFeatured-ESP32 FullyFeatured-ESP32 2F2A0A54686973206578616D706C652075736573204672656552544F5320736F66747761726574696D657273206173207468657265206973206E6F206275696C742D696E205469636B6572206C6962726172790A2A2F0A0A0A23696E636C756465203C576946692E683E0A65787465726E20224322207B0A0923696E636C75646520226672656572746F732F4672656552544F532E68220A0923696E636C75646520226672656572746F732F74696D6572732E68220A7D0A23696E636C756465203C4173796E634D717474436C69656E742E683E0A0A23646566696E6520574946495F535349442022796F757253534944220A23646566696E6520574946495F50415353574F52442022796F757270617373220A0A23646566696E65204D5154545F484F535420495041646472657373283139322C203136382C20312C203130290A23646566696E65204D5154545F504F525420313838330A0A4173796E634D717474436C69656E74206D717474436C69656E743B0A54696D657248616E646C655F74206D7174745265636F6E6E65637454696D65723B0A54696D657248616E646C655F7420776966695265636F6E6E65637454696D65723B0A0A766F696420636F6E6E656374546F576966692829207B0A202053657269616C2E7072696E746C6E2822436F6E6E656374696E6720746F2057692D46692E2E2E22293B0A2020576946692E626567696E28574946495F535349442C20574946495F50415353574F5244293B0A7D0A0A766F696420636F6E6E656374546F4D7174742829207B0A202053657269616C2E7072696E746C6E2822436F6E6E656374696E6720746F204D5154542E2E2E22293B0A20206D717474436C69656E742E636F6E6E65637428293B0A7D0A0A766F696420576946694576656E7428576946694576656E745F74206576656E7429207B0A2020202053657269616C2E7072696E746628225B576946692D6576656E745D206576656E743A2025645C6E222C206576656E74293B0A20202020737769746368286576656E7429207B0A20202020636173652053595354454D5F4556454E545F5354415F474F545F49503A0A202020202020202053657269616C2E7072696E746C6E28225769466920636F6E6E656374656422293B0A202020202020202053657269616C2E7072696E746C6E2822495020616464726573733A2022293B0A202020202020202053657269616C2E7072696E746C6E28576946692E6C6F63616C49502829293B0A2020202020202020636F6E6E656374546F4D71747428293B0A2020202020202020627265616B3B0A20202020636173652053595354454D5F4556454E545F5354415F444953434F4E4E45435445443A0A202020202020202053657269616C2E7072696E746C6E282257694669206C6F737420636F6E6E656374696F6E22293B0A20202020202020207854696D657253746F70286D7174745265636F6E6E65637454696D65722C2030293B202F2F20656E7375726520776520646F6E2774207265636F6E6E65637420746F204D515454207768696C65207265636F6E6E656374696E6720746F2057692D46690A09097854696D6572537461727428776966695265636F6E6E65637454696D65722C2030293B0A2020202020202020627265616B3B0A202020207D0A7D0A0A766F6964206F6E4D717474436F6E6E65637428626F6F6C2073657373696F6E50726573656E7429207B0A202053657269616C2E7072696E746C6E2822436F6E6E656374656420746F204D5154542E22293B0A202053657269616C2E7072696E74282253657373696F6E2070726573656E743A2022293B0A202053657269616C2E7072696E746C6E2873657373696F6E50726573656E74293B0A202075696E7431365F74207061636B65744964537562203D206D717474436C69656E742E7375627363726962652822746573742F6C6F6C222C2032293B0A202053657269616C2E7072696E7428225375627363726962696E6720617420516F5320322C207061636B657449643A2022293B0A202053657269616C2E7072696E746C6E287061636B65744964537562293B0A20206D717474436C69656E742E7075626C6973682822746573742F6C6F6C222C20302C20747275652C202274657374203122293B0A202053657269616C2E7072696E746C6E28225075626C697368696E6720617420516F53203022293B0A202075696E7431365F74207061636B6574496450756231203D206D717474436C69656E742E7075626C6973682822746573742F6C6F6C222C20312C20747275652C202274657374203222293B0A202053657269616C2E7072696E7428225075626C697368696E6720617420516F5320312C207061636B657449643A2022293B0A202053657269616C2E7072696E746C6E287061636B6574496450756231293B0A202075696E7431365F74207061636B6574496450756232203D206D717474436C69656E742E7075626C6973682822746573742F6C6F6C222C20322C20747275652C202274657374203322293B0A202053657269616C2E7072696E7428225075626C697368696E6720617420516F5320322C207061636B657449643A2022293B0A202053657269616C2E7072696E746C6E287061636B6574496450756232293B0A7D0A0A766F6964206F6E4D717474446973636F6E6E656374284173796E634D717474436C69656E74446973636F6E6E656374526561736F6E20726561736F6E29207B0A202053657269616C2E7072696E746C6E2822446973636F6E6E65637465642066726F6D204D5154542E22293B0A0A202069662028576946692E6973436F6E6E6563746564282929207B0A202020207854696D65725374617274286D7174745265636F6E6E65637454696D65722C2030293B0A20207D0A7D0A0A766F6964206F6E4D7174745375627363726962652875696E7431365F74207061636B657449642C2075696E74385F7420716F7329207B0A202053657269616C2E7072696E746C6E28225375627363726962652061636B6E6F776C65646765642E22293B0A202053657269616C2E7072696E74282220207061636B657449643A2022293B0A202053657269616C2E7072696E746C6E287061636B65744964293B0A202053657269616C2E7072696E7428222020716F733A2022293B0A202053657269616C2E7072696E746C6E28716F73293B0A7D0A0A766F6964206F6E4D717474556E7375627363726962652875696E7431365F74207061636B6574496429207B0A202053657269616C2E7072696E746C6E2822556E7375627363726962652061636B6E6F776C65646765642E22293B0A202053657269616C2E7072696E74282220207061636B657449643A2022293B0A202053657269616C2E7072696E746C6E287061636B65744964293B0A7D0A0A766F6964206F6E4D7174744D65737361676528636861722A20746F7069632C20636861722A207061796C6F61642C204173796E634D717474436C69656E744D65737361676550726F706572746965732070726F706572746965732C2073697A655F74206C656E2C2073697A655F7420696E6465782C2073697A655F7420746F74616C29207B0A202053657269616C2E7072696E746C6E28225075626C6973682072656365697665642E22293B0A202053657269616C2E7072696E7428222020746F7069633A2022293B0A202053657269616C2E7072696E746C6E28746F706963293B0A202053657269616C2E7072696E7428222020716F733A2022293B0A202053657269616C2E7072696E746C6E2870726F706572746965732E716F73293B0A202053657269616C2E7072696E74282220206475703A2022293B0A202053657269616C2E7072696E746C6E2870726F706572746965732E647570293B0A202053657269616C2E7072696E742822202072657461696E3A2022293B0A202053657269616C2E7072696E746C6E2870726F706572746965732E72657461696E293B0A202053657269616C2E7072696E74282220206C656E3A2022293B0A202053657269616C2E7072696E746C6E286C656E293B0A202053657269616C2E7072696E7428222020696E6465783A2022293B0A202053657269616C2E7072696E746C6E28696E646578293B0A202053657269616C2E7072696E7428222020746F74616C3A2022293B0A202053657269616C2E7072696E746C6E28746F74616C293B0A7D0A0A766F6964206F6E4D7174745075626C6973682875696E7431365F74207061636B6574496429207B0A202053657269616C2E7072696E746C6E28225075626C6973682061636B6E6F776C65646765642E22293B0A202053657269616C2E7072696E74282220207061636B657449643A2022293B0A202053657269616C2E7072696E746C6E287061636B65744964293B0A7D0A0A766F69642073657475702829207B0A202053657269616C2E626567696E28313135323030293B0A202053657269616C2E7072696E746C6E28293B0A202053657269616C2E7072696E746C6E28293B0A0A20206D7174745265636F6E6E65637454696D6572203D207854696D657243726561746528226D71747454696D6572222C2070644D535F544F5F5449434B532832303030292C20706446414C53452C2028766F69642A29302C207265696E746572707265745F636173743C54696D657243616C6C6261636B46756E6374696F6E5F743E28636F6E6E656374546F4D71747429293B0A2020776966695265636F6E6E65637454696D6572203D207854696D657243726561746528227769666954696D6572222C2070644D535F544F5F5449434B532832303030292C20706446414C53452C2028766F69642A29302C207265696E746572707265745F636173743C54696D657243616C6C6261636B46756E6374696F6E5F743E28636F6E6E656374546F5769666929293B0A0A2020576946692E6F6E4576656E7428576946694576656E74293B0A0A20206D717474436C69656E742E6F6E436F6E6E656374286F6E4D717474436F6E6E656374293B0A20206D717474436C69656E742E6F6E446973636F6E6E656374286F6E4D717474446973636F6E6E656374293B0A20206D717474436C69656E742E6F6E537562736372696265286F6E4D717474537562736372696265293B0A20206D717474436C69656E742E6F6E556E737562736372696265286F6E4D717474556E737562736372696265293B0A20206D717474436C69656E742E6F6E4D657373616765286F6E4D7174744D657373616765293B0A20206D717474436C69656E742E6F6E5075626C697368286F6E4D7174745075626C697368293B0A20206D717474436C69656E742E736574536572766572284D5154545F484F53542C204D5154545F504F5254293B0A0A2020636F6E6E656374546F5769666928293B0A7D0A0A766F6964206C6F6F702829207B0A7D0A .ino FullyFeatured-ESP8266 FullyFeatured-ESP8266 23696E636C756465203C45535038323636576946692E683E0A23696E636C756465203C5469636B65722E683E0A23696E636C756465203C4173796E634D717474436C69656E742E683E0A0A23646566696E6520574946495F5353494420224D795F57692D4669220A23646566696E6520574946495F50415353574F524420226D792D617765736F6D652D70617373776F7264220A0A23646566696E65204D5154545F484F535420495041646472657373283139322C203136382C20312C203130290A23646566696E65204D5154545F504F525420313838330A0A4173796E634D717474436C69656E74206D717474436C69656E743B0A5469636B6572206D7174745265636F6E6E65637454696D65723B0A0A576946694576656E7448616E646C65722077696669436F6E6E65637448616E646C65723B0A576946694576656E7448616E646C65722077696669446973636F6E6E65637448616E646C65723B0A5469636B657220776966695265636F6E6E65637454696D65723B0A0A766F696420636F6E6E656374546F576966692829207B0A202053657269616C2E7072696E746C6E2822436F6E6E656374696E6720746F2057692D46692E2E2E22293B0A2020576946692E626567696E28574946495F535349442C20574946495F50415353574F5244293B0A7D0A0A766F6964206F6E57696669436F6E6E65637428636F6E737420576946694576656E7453746174696F6E4D6F6465476F74495026206576656E7429207B0A202053657269616C2E7072696E746C6E2822436F6E6E656374656420746F2057692D46692E22293B0A2020636F6E6E656374546F4D71747428293B0A7D0A0A766F6964206F6E57696669446973636F6E6E65637428636F6E737420576946694576656E7453746174696F6E4D6F6465446973636F6E6E656374656426206576656E7429207B0A202053657269616C2E7072696E746C6E2822446973636F6E6E65637465642066726F6D2057692D46692E22293B0A20206D7174745265636F6E6E65637454696D65722E64657461636828293B202F2F20656E7375726520776520646F6E2774207265636F6E6E65637420746F204D515454207768696C65207265636F6E6E656374696E6720746F2057692D46690A2020776966695265636F6E6E65637454696D65722E6F6E636528322C20636F6E6E656374546F57696669293B0A7D0A0A766F696420636F6E6E656374546F4D7174742829207B0A202053657269616C2E7072696E746C6E2822436F6E6E656374696E6720746F204D5154542E2E2E22293B0A20206D717474436C69656E742E636F6E6E65637428293B0A7D0A0A766F6964206F6E4D717474436F6E6E65637428626F6F6C2073657373696F6E50726573656E7429207B0A202053657269616C2E7072696E746C6E2822436F6E6E656374656420746F204D5154542E22293B0A202053657269616C2E7072696E74282253657373696F6E2070726573656E743A2022293B0A202053657269616C2E7072696E746C6E2873657373696F6E50726573656E74293B0A202075696E7431365F74207061636B65744964537562203D206D717474436C69656E742E7375627363726962652822746573742F6C6F6C222C2032293B0A202053657269616C2E7072696E7428225375627363726962696E6720617420516F5320322C207061636B657449643A2022293B0A202053657269616C2E7072696E746C6E287061636B65744964537562293B0A20206D717474436C69656E742E7075626C6973682822746573742F6C6F6C222C20302C20747275652C202274657374203122293B0A202053657269616C2E7072696E746C6E28225075626C697368696E6720617420516F53203022293B0A202075696E7431365F74207061636B6574496450756231203D206D717474436C69656E742E7075626C6973682822746573742F6C6F6C222C20312C20747275652C202274657374203222293B0A202053657269616C2E7072696E7428225075626C697368696E6720617420516F5320312C207061636B657449643A2022293B0A202053657269616C2E7072696E746C6E287061636B6574496450756231293B0A202075696E7431365F74207061636B6574496450756232203D206D717474436C69656E742E7075626C6973682822746573742F6C6F6C222C20322C20747275652C202274657374203322293B0A202053657269616C2E7072696E7428225075626C697368696E6720617420516F5320322C207061636B657449643A2022293B0A202053657269616C2E7072696E746C6E287061636B6574496450756232293B0A7D0A0A766F6964206F6E4D717474446973636F6E6E656374284173796E634D717474436C69656E74446973636F6E6E656374526561736F6E20726561736F6E29207B0A202053657269616C2E7072696E746C6E2822446973636F6E6E65637465642066726F6D204D5154542E22293B0A0A202069662028576946692E6973436F6E6E6563746564282929207B0A202020206D7174745265636F6E6E65637454696D65722E6F6E636528322C20636F6E6E656374546F4D717474293B0A20207D0A7D0A0A766F6964206F6E4D7174745375627363726962652875696E7431365F74207061636B657449642C2075696E74385F7420716F7329207B0A202053657269616C2E7072696E746C6E28225375627363726962652061636B6E6F776C65646765642E22293B0A202053657269616C2E7072696E74282220207061636B657449643A2022293B0A202053657269616C2E7072696E746C6E287061636B65744964293B0A202053657269616C2E7072696E7428222020716F733A2022293B0A202053657269616C2E7072696E746C6E28716F73293B0A7D0A0A766F6964206F6E4D717474556E7375627363726962652875696E7431365F74207061636B6574496429207B0A202053657269616C2E7072696E746C6E2822556E7375627363726962652061636B6E6F776C65646765642E22293B0A202053657269616C2E7072696E74282220207061636B657449643A2022293B0A202053657269616C2E7072696E746C6E287061636B65744964293B0A7D0A0A766F6964206F6E4D7174744D65737361676528636861722A20746F7069632C20636861722A207061796C6F61642C204173796E634D717474436C69656E744D65737361676550726F706572746965732070726F706572746965732C2073697A655F74206C656E2C2073697A655F7420696E6465782C2073697A655F7420746F74616C29207B0A202053657269616C2E7072696E746C6E28225075626C6973682072656365697665642E22293B0A202053657269616C2E7072696E7428222020746F7069633A2022293B0A202053657269616C2E7072696E746C6E28746F706963293B0A202053657269616C2E7072696E7428222020716F733A2022293B0A202053657269616C2E7072696E746C6E2870726F706572746965732E716F73293B0A202053657269616C2E7072696E74282220206475703A2022293B0A202053657269616C2E7072696E746C6E2870726F706572746965732E647570293B0A202053657269616C2E7072696E742822202072657461696E3A2022293B0A202053657269616C2E7072696E746C6E2870726F706572746965732E72657461696E293B0A202053657269616C2E7072696E74282220206C656E3A2022293B0A202053657269616C2E7072696E746C6E286C656E293B0A202053657269616C2E7072696E7428222020696E6465783A2022293B0A202053657269616C2E7072696E746C6E28696E646578293B0A202053657269616C2E7072696E7428222020746F74616C3A2022293B0A202053657269616C2E7072696E746C6E28746F74616C293B0A7D0A0A766F6964206F6E4D7174745075626C6973682875696E7431365F74207061636B6574496429207B0A202053657269616C2E7072696E746C6E28225075626C6973682061636B6E6F776C65646765642E22293B0A202053657269616C2E7072696E74282220207061636B657449643A2022293B0A202053657269616C2E7072696E746C6E287061636B65744964293B0A7D0A0A766F69642073657475702829207B0A202053657269616C2E626567696E28313135323030293B0A202053657269616C2E7072696E746C6E28293B0A202053657269616C2E7072696E746C6E28293B0A0A202077696669436F6E6E65637448616E646C6572203D20576946692E6F6E53746174696F6E4D6F6465476F744950286F6E57696669436F6E6E656374293B0A202077696669446973636F6E6E65637448616E646C6572203D20576946692E6F6E53746174696F6E4D6F6465446973636F6E6E6563746564286F6E57696669446973636F6E6E656374293B0A0A20206D717474436C69656E742E6F6E436F6E6E656374286F6E4D717474436F6E6E656374293B0A20206D717474436C69656E742E6F6E446973636F6E6E656374286F6E4D717474446973636F6E6E656374293B0A20206D717474436C69656E742E6F6E537562736372696265286F6E4D717474537562736372696265293B0A20206D717474436C69656E742E6F6E556E737562736372696265286F6E4D717474556E737562736372696265293B0A20206D717474436C69656E742E6F6E4D657373616765286F6E4D7174744D657373616765293B0A20206D717474436C69656E742E6F6E5075626C697368286F6E4D7174745075626C697368293B0A20206D717474436C69656E742E736574536572766572284D5154545F484F53542C204D5154545F504F5254293B0A0A2020636F6E6E656374546F5769666928293B0A7D0A0A766F6964206C6F6F702829207B0A7D0A .ino FullyFeaturedSSL platformio 230A23204578616D706C6520506C6174666F726D494F20636F6E66696775726174696F6E2066696C6520666F722053534C20616E64206E6F6E2D53534C206275696C64732E0A230A23204265666F726520796F752077696C6C2062652061626C6520746F206275696C64207468652053534C2076657273696F6E206F6620746869732070726F6A6563742C20796F752077696C6C0A23206E65656420746F206578706C696369746C7920696E7374616C6C2074686520657370726573736966383236365F737461676520706C6174666F726D2E0A230A2320546F20706572666F726D207468697320696E7374616C6C6174696F6E2C20726566657220746F20737465702031206F663A0A2320687474703A2F2F646F63732E706C6174666F726D696F2E6F72672F656E2F6C61746573742F706C6174666F726D732F657370726573736966383236362E68746D6C237573696E672D61726475696E6F2D6672616D65776F726B2D776974682D73746167696E672D76657273696F6E0A0A5B706C6174666F726D696F5D0A656E765F64656661756C74203D2073736C0A0A5B656E763A73736C5D0A706C6174666F726D203D20657370726573736966383236365F73746167650A6672616D65776F726B203D2061726475696E6F0A626F617264203D2065737030315F316D0A6275696C645F666C616773203D202D444153594E435F5443505F53534C5F454E41424C45443D310A6C69625F64657073203D204173796E634D717474436C69656E740A0A5B656E763A6E6F73736C5D0A706C6174666F726D203D20657370726573736966383236360A6672616D65776F726B203D2061726475696E6F0A626F617264203D2065737030315F316D0A6C69625F64657073203D204173796E634D717474436C69656E740A .ini src main 0A2F2F204578616D706C652070726F6A6563742077686963682063616E206265206275696C7420776974682053534C20656E61626C6564206F722064697361626C65642E0A2F2F2054686520657370726573736966383236365F737461676520706C6174666F726D206D75737420626520696E7374616C6C65642E0A2F2F20526566657220746F20706C6174666F726D696F2E696E6920666F7220746865206275696C6420636F6E66696775726174696F6E20616E6420706C6174666F726D20696E7374616C6C6174696F6E2E0A0A23696E636C756465203C41726475696E6F2E683E0A23696E636C756465203C45535038323636576946692E683E0A23696E636C756465203C5469636B65722E683E0A23696E636C756465203C4173796E634D717474436C69656E742E683E0A0A23646566696E6520574946495F5353494420224D795F57692D4669220A23646566696E6520574946495F50415353574F524420226D792D617765736F6D652D70617373776F7264220A0A23646566696E65204D5154545F484F535420495041646472657373283139322C203136382C20312C203130290A0A236966204153594E435F5443505F53534C5F454E41424C45440A23646566696E65204D5154545F53454355524520747275650A23646566696E65204D5154545F5345525645525F46494E4745525052494E54207B307837652C20307833362C20307832322C20307830312C20307866392C20307837652C20307839392C20307832662C20307863352C20307864622C20307833642C20307862652C20307861632C20307834382C20307836372C20307835622C20307835642C20307834372C20307839342C20307864327D0A23646566696E65204D5154545F504F525420383838330A23656C73650A23646566696E65204D5154545F504F525420313838330A23656E6469660A0A4173796E634D717474436C69656E74206D717474436C69656E743B0A5469636B6572206D7174745265636F6E6E65637454696D65723B0A0A576946694576656E7448616E646C65722077696669436F6E6E65637448616E646C65723B0A576946694576656E7448616E646C65722077696669446973636F6E6E65637448616E646C65723B0A5469636B657220776966695265636F6E6E65637454696D65723B0A0A766F696420636F6E6E656374546F576966692829207B0A202053657269616C2E7072696E746C6E2822436F6E6E656374696E6720746F2057692D46692E2E2E22293B0A2020576946692E626567696E28574946495F535349442C20574946495F50415353574F5244293B0A7D0A0A766F696420636F6E6E656374546F4D7174742829207B0A202053657269616C2E7072696E746C6E2822436F6E6E656374696E6720746F204D5154542E2E2E22293B0A20206D717474436C69656E742E636F6E6E65637428293B0A7D0A0A766F6964206F6E57696669436F6E6E65637428636F6E737420576946694576656E7453746174696F6E4D6F6465476F74495026206576656E7429207B0A202053657269616C2E7072696E746C6E2822436F6E6E656374656420746F2057692D46692E22293B0A2020636F6E6E656374546F4D71747428293B0A7D0A0A766F6964206F6E57696669446973636F6E6E65637428636F6E737420576946694576656E7453746174696F6E4D6F6465446973636F6E6E656374656426206576656E7429207B0A202053657269616C2E7072696E746C6E2822446973636F6E6E65637465642066726F6D2057692D46692E22293B0A20206D7174745265636F6E6E65637454696D65722E64657461636828293B202F2F20656E7375726520776520646F6E2774207265636F6E6E65637420746F204D515454207768696C65207265636F6E6E656374696E6720746F2057692D46690A2020776966695265636F6E6E65637454696D65722E6F6E636528322C20636F6E6E656374546F57696669293B0A7D0A0A766F6964206F6E4D717474436F6E6E65637428626F6F6C2073657373696F6E50726573656E7429207B0A202053657269616C2E7072696E746C6E2822436F6E6E656374656420746F204D5154542E22293B0A202053657269616C2E7072696E74282253657373696F6E2070726573656E743A2022293B0A202053657269616C2E7072696E746C6E2873657373696F6E50726573656E74293B0A202075696E7431365F74207061636B65744964537562203D206D717474436C69656E742E7375627363726962652822746573742F6C6F6C222C2032293B0A202053657269616C2E7072696E7428225375627363726962696E6720617420516F5320322C207061636B657449643A2022293B0A202053657269616C2E7072696E746C6E287061636B65744964537562293B0A20206D717474436C69656E742E7075626C6973682822746573742F6C6F6C222C20302C20747275652C202274657374203122293B0A202053657269616C2E7072696E746C6E28225075626C697368696E6720617420516F53203022293B0A202075696E7431365F74207061636B6574496450756231203D206D717474436C69656E742E7075626C6973682822746573742F6C6F6C222C20312C20747275652C202274657374203222293B0A202053657269616C2E7072696E7428225075626C697368696E6720617420516F5320312C207061636B657449643A2022293B0A202053657269616C2E7072696E746C6E287061636B6574496450756231293B0A202075696E7431365F74207061636B6574496450756232203D206D717474436C69656E742E7075626C6973682822746573742F6C6F6C222C20322C20747275652C202274657374203322293B0A202053657269616C2E7072696E7428225075626C697368696E6720617420516F5320322C207061636B657449643A2022293B0A202053657269616C2E7072696E746C6E287061636B6574496450756232293B0A7D0A0A766F6964206F6E4D717474446973636F6E6E656374284173796E634D717474436C69656E74446973636F6E6E656374526561736F6E20726561736F6E29207B0A202053657269616C2E7072696E746C6E2822446973636F6E6E65637465642066726F6D204D5154542E22293B0A0A202069662028726561736F6E203D3D204173796E634D717474436C69656E74446973636F6E6E656374526561736F6E3A3A544C535F4241445F46494E4745525052494E5429207B0A2020202053657269616C2E7072696E746C6E2822426164207365727665722066696E6765727072696E742E22293B0A20207D0A0A202069662028576946692E6973436F6E6E6563746564282929207B0A202020206D7174745265636F6E6E65637454696D65722E6F6E636528322C20636F6E6E656374546F4D717474293B0A20207D0A7D0A0A766F6964206F6E4D7174745375627363726962652875696E7431365F74207061636B657449642C2075696E74385F7420716F7329207B0A202053657269616C2E7072696E746C6E28225375627363726962652061636B6E6F776C65646765642E22293B0A202053657269616C2E7072696E74282220207061636B657449643A2022293B0A202053657269616C2E7072696E746C6E287061636B65744964293B0A202053657269616C2E7072696E7428222020716F733A2022293B0A202053657269616C2E7072696E746C6E28716F73293B0A7D0A0A766F6964206F6E4D717474556E7375627363726962652875696E7431365F74207061636B6574496429207B0A202053657269616C2E7072696E746C6E2822556E7375627363726962652061636B6E6F776C65646765642E22293B0A202053657269616C2E7072696E74282220207061636B657449643A2022293B0A202053657269616C2E7072696E746C6E287061636B65744964293B0A7D0A0A766F6964206F6E4D7174744D65737361676528636861722A20746F7069632C20636861722A207061796C6F61642C204173796E634D717474436C69656E744D65737361676550726F706572746965732070726F706572746965732C2073697A655F74206C656E2C2073697A655F7420696E6465782C2073697A655F7420746F74616C29207B0A202053657269616C2E7072696E746C6E28225075626C6973682072656365697665642E22293B0A202053657269616C2E7072696E7428222020746F7069633A2022293B0A202053657269616C2E7072696E746C6E28746F706963293B0A202053657269616C2E7072696E7428222020716F733A2022293B0A202053657269616C2E7072696E746C6E2870726F706572746965732E716F73293B0A202053657269616C2E7072696E74282220206475703A2022293B0A202053657269616C2E7072696E746C6E2870726F706572746965732E647570293B0A202053657269616C2E7072696E742822202072657461696E3A2022293B0A202053657269616C2E7072696E746C6E2870726F706572746965732E72657461696E293B0A202053657269616C2E7072696E74282220206C656E3A2022293B0A202053657269616C2E7072696E746C6E286C656E293B0A202053657269616C2E7072696E7428222020696E6465783A2022293B0A202053657269616C2E7072696E746C6E28696E646578293B0A202053657269616C2E7072696E7428222020746F74616C3A2022293B0A202053657269616C2E7072696E746C6E28746F74616C293B0A7D0A0A766F6964206F6E4D7174745075626C6973682875696E7431365F74207061636B6574496429207B0A202053657269616C2E7072696E746C6E28225075626C6973682061636B6E6F776C65646765642E22293B0A202053657269616C2E7072696E74282220207061636B657449643A2022293B0A202053657269616C2E7072696E746C6E287061636B65744964293B0A7D0A0A766F69642073657475702829207B0A202053657269616C2E626567696E28313135323030293B0A202053657269616C2E7072696E746C6E28293B0A202053657269616C2E7072696E746C6E28293B0A0A202077696669436F6E6E65637448616E646C6572203D20576946692E6F6E53746174696F6E4D6F6465476F744950286F6E57696669436F6E6E656374293B0A202077696669446973636F6E6E65637448616E646C6572203D20576946692E6F6E53746174696F6E4D6F6465446973636F6E6E6563746564286F6E57696669446973636F6E6E656374293B0A0A20206D717474436C69656E742E6F6E436F6E6E656374286F6E4D717474436F6E6E656374293B0A20206D717474436C69656E742E6F6E446973636F6E6E656374286F6E4D717474446973636F6E6E656374293B0A20206D717474436C69656E742E6F6E537562736372696265286F6E4D717474537562736372696265293B0A20206D717474436C69656E742E6F6E556E737562736372696265286F6E4D717474556E737562736372696265293B0A20206D717474436C69656E742E6F6E4D657373616765286F6E4D7174744D657373616765293B0A20206D717474436C69656E742E6F6E5075626C697368286F6E4D7174745075626C697368293B0A20206D717474436C69656E742E736574536572766572284D5154545F484F53542C204D5154545F504F5254293B0A236966204153594E435F5443505F53534C5F454E41424C45440A20206D717474436C69656E742E736574536563757265284D5154545F534543555245293B0A2020696620284D5154545F53454355524529207B0A202020206D717474436C69656E742E61646453657276657246696E6765727072696E742828636F6E73742075696E74385F745B5D294D5154545F5345525645525F46494E4745525052494E54293B0A20207D0A23656E6469660A0A2020636F6E6E656374546F5769666928293B0A7D0A0A766F6964206C6F6F702829207B0A7D0A .cpp keywords 2323232323232323232323232323232323232323232323232323232323232323232323232323230D0A232044617461747970657320284B4559574F524431290D0A2323232323232323232323232323232323232323232323232323232323232323232323232323230D0A0D0A4173796E634D717474436C69656E74094B4559574F5244310D0A4173796E634D717474436C69656E74446973636F6E6E656374526561736F6E094B4559574F5244310D0A4173796E634D717474436C69656E744D65737361676550726F70657274696573094B4559574F5244310D0A0D0A2323232323232323232323232323232323232323232323232323232323232323232323232323230D0A23204D6574686F647320616E642046756E6374696F6E7320284B4559574F524432290D0A2323232323232323232323232323232323232323232323232323232323232323232323232323230D0A0D0A7365744B656570416C697665094B4559574F5244320D0A736574436C69656E744964094B4559574F5244320D0A736574436C65616E53657373696F6E094B4559574F5244320D0A7365744D6178546F7069634C656E677468094B4559574F5244320D0A73657443726564656E7469616C73094B4559574F5244320D0A73657457696C6C094B4559574F5244320D0A736574536572766572094B4559574F5244320D0A736574536563757265094B4559574F5244320D0A61646453657276657246696E6765727072696E74094B4559574F5244320D0A0D0A6F6E436F6E6E656374094B4559574F5244320D0A6F6E446973636F6E6E656374094B4559574F5244320D0A6F6E537562736372696265094B4559574F5244320D0A6F6E556E737562736372696265094B4559574F5244320D0A6F6E4D657373616765094B4559574F5244320D0A6F6E5075626C697368094B4559574F5244320D0A0D0A636F6E6E6563746564094B4559574F5244320D0A636F6E6E656374094B4559574F5244320D0A646973636F6E6E656374094B4559574F5244320D0A737562736372696265094B4559574F5244320D0A756E737562736372696265094B4559574F5244320D0A7075626C697368094B4559574F5244320D0A0D0A2323232323232323232323232323232323232323232323232323232323232323232323232323230D0A2320436F6E7374616E747320284C49544552414C31290D0A2323232323232323232323232323232323232323232323232323232323232323232323232323230D0A0D0A5443505F444953434F4E4E4543544544094C49544552414C310D0A0D0A4D5154545F554E41434345505441424C455F50524F544F434F4C5F56455253494F4E094C49544552414C310D0A4D5154545F4944454E5449464945525F52454A4543544544094C49544552414C310D0A4D5154545F5345525645525F554E415641494C41424C45094C49544552414C310D0A4D5154545F4D414C464F524D45445F43524544454E5449414C53094C49544552414C310D0A4D5154545F4E4F545F415554484F52495A4544094C49544552414C310D0A .txt library 7B0A2020226E616D65223A20224173796E634D717474436C69656E74222C0A2020226B6579776F726473223A2022696F742C20686F6D652C206175746F6D6174696F6E2C206173796E632C206D7174742C20636C69656E742C2065737038323636222C0A2020226465736372697074696F6E223A2022416E2041726475696E6F20666F722045535038323636202F204553503332206173796E6368726F6E6F7573204D51545420636C69656E7420696D706C656D656E746174696F6E222C0A202022617574686F7273223A0A20207B0A20202020226E616D65223A20224D617276696E20524F474552222C0A202020202275726C223A202268747470733A2F2F7777772E6D617276696E726F6765722E6672220A20207D2C0A2020227265706F7369746F7279223A0A20207B0A202020202274797065223A2022676974222C0A202020202275726C223A202268747470733A2F2F6769746875622E636F6D2F6D617276696E726F6765722F6173796E632D6D7174742D636C69656E742E676974220A20207D2C0A20202276657273696F6E223A2022302E382E32222C0A2020226672616D65776F726B73223A202261726475696E6F222C0A202022706C6174666F726D73223A205B2265737072657373696638323636222C20226573707265737369663332225D2C0A202022646570656E64656E63696573223A205B0A202020207B0A202020202020226E616D65223A20224553504173796E63544350222C0A2020202020202276657273696F6E223A20225E312E312E30222C0A20202020202022706C6174666F726D73223A202265737072657373696638323636220A202020207D2C0A202020207B0A202020202020226E616D65223A20224173796E63544350222C0A2020202020202276657273696F6E223A20225E312E302E30222C0A20202020202022706C6174666F726D73223A20226573707265737369663332220A202020207D0A20205D0A7D0A .json library 6E616D653D4173796E634D717474436C69656E740A76657273696F6E3D302E382E320A617574686F723D4D617276696E20524F4745520A6D61696E7461696E65723D4D617276696E20524F4745520A73656E74656E63653D416E2041726475696E6F20666F72204553503832363620616E64204553503332206173796E6368726F6E6F7573204D51545420636C69656E7420696D706C656D656E746174696F6E0A7061726167726170683D4C696B6520746869732070726F6A6563743F20506C656173652073746172206974206F6E20476974487562210A63617465676F72793D436F6D6D756E69636174696F6E0A75726C3D68747470733A2F2F6769746875622E636F6D2F6D617276696E726F6765722F6173796E632D6D7174742D636C69656E740A617263686974656374757265733D657370383236362C65737033320A .properties LICENSE 546865204D4954204C6963656E736520284D4954290A0A436F70797269676874202863292032303135204D617276696E20526F6765720A0A5065726D697373696F6E20697320686572656279206772616E7465642C2066726565206F66206368617267652C20746F20616E7920706572736F6E206F627461696E696E67206120636F70790A6F66207468697320736F66747761726520616E64206173736F63696174656420646F63756D656E746174696F6E2066696C657320287468652022536F66747761726522292C20746F206465616C0A696E2074686520536F66747761726520776974686F7574207265737472696374696F6E2C20696E636C7564696E6720776974686F7574206C696D69746174696F6E20746865207269676874730A746F207573652C20636F70792C206D6F646966792C206D657267652C207075626C6973682C20646973747269627574652C207375626C6963656E73652C20616E642F6F722073656C6C0A636F70696573206F662074686520536F6674776172652C20616E6420746F207065726D697420706572736F6E7320746F2077686F6D2074686520536F6674776172652069730A6675726E697368656420746F20646F20736F2C207375626A65637420746F2074686520666F6C6C6F77696E6720636F6E646974696F6E733A0A0A5468652061626F766520636F70797269676874206E6F7469636520616E642074686973207065726D697373696F6E206E6F74696365207368616C6C20626520696E636C7564656420696E20616C6C0A636F70696573206F72207375627374616E7469616C20706F7274696F6E73206F662074686520536F6674776172652E0A0A54484520534F4654574152452049532050524F564944454420224153204953222C20574954484F55542057415252414E5459204F4620414E59204B494E442C2045585052455353204F520A494D504C4945442C20494E434C5544494E4720425554204E4F54204C494D4954454420544F205448452057415252414E54494553204F46204D45524348414E544142494C4954592C0A4649544E45535320464F52204120504152544943554C415220505552504F534520414E44204E4F4E494E4652494E47454D454E542E20494E204E4F204556454E54205348414C4C205448450A415554484F5253204F5220434F5059524947485420484F4C44455253204245204C4941424C4520464F5220414E5920434C41494D2C2044414D41474553204F52204F544845520A4C494142494C4954592C205748455448455220494E20414E20414354494F4E204F4620434F4E54524143542C20544F5254204F52204F54484552574953452C2041524953494E472046524F4D2C0A4F5554204F46204F5220494E20434F4E4E454354494F4E20574954482054484520534F465457415245204F522054484520555345204F52204F54484552204445414C494E475320494E205448450A534F4654574152452E0A Makefile 6370706C696E743A0D0A096370706C696E74202D2D7265706F7369746F72793D2E202D2D726563757273697665202D2D66696C7465723D2D776869746573706163652F6C696E655F6C656E6774682C2D6C6567616C2F636F707972696768742C2D72756E74696D652F7072696E74662C2D6275696C642F696E636C7564652C2D6275696C642F6E616D657370616365202E2F7372630D0A2E50484F4E593A206370706C696E740D0A README 4173796E63204D51545420636C69656E7420666F72204553503832363620616E642045535033320A3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D0A0A5B215B4275696C64205374617475735D2868747470733A2F2F696D672E736869656C64732E696F2F7472617669732F6D617276696E726F6765722F6173796E632D6D7174742D636C69656E742F6D61737465722E7376673F7374796C653D666C61742D737175617265295D2868747470733A2F2F7472617669732D63692E6F72672F6D617276696E726F6765722F6173796E632D6D7174742D636C69656E74290A0A416E2041726475696E6F20666F72204553503832363620616E64204553503332206173796E6368726F6E6F7573205B4D5154545D28687474703A2F2F6D7174742E6F72672F2920636C69656E7420696D706C656D656E746174696F6E2C206275696C74206F6E205B6D652D6E6F2D6465762F4553504173796E63544350202845535038323636295D2868747470733A2F2F6769746875622E636F6D2F6D652D6E6F2D6465762F4553504173796E6354435029207C205B6D652D6E6F2D6465762F4173796E6354435020284553503332295D2868747470733A2F2F6769746875622E636F6D2F6D652D6E6F2D6465762F4173796E6354435029202E0A23232046656174757265730A0A2A20436F6D706C69616E7420776974682074686520332E312E312076657273696F6E206F66207468652070726F746F636F6C0A2A2046756C6C79206173796E6368726F6E6F75730A2A2053756273637269626520617420516F5320302C203120616E6420320A2A205075626C69736820617420516F5320302C203120616E6420320A2A2053534C2F544C5320737570706F72740A2A20417661696C61626C6520696E20746865205B506C6174666F726D494F2072656769737472795D28687474703A2F2F706C6174666F726D696F2E6F72672F6C69622F73686F772F3334362F4173796E634D717474436C69656E74290A0A232320526571756972656D656E74732C20696E7374616C6C6174696F6E20616E642075736167650A0A5468652070726F6A65637420697320646F63756D656E74656420696E20746865205B2F646F637320666F6C6465725D28646F6373292E0A .md scripts get-fingerprint get-fingerprint 23212F7573722F62696E2F656E7620707974686F6E0A0A696D706F72742061726770617273650A696D706F72742073736C0A696D706F727420686173686C69620A0A706172736572203D2061726770617273652E417267756D656E74506172736572286465736372697074696F6E3D27436F6D707574652053534C2F544C532066696E6765727072696E74732E27290A7061727365722E6164645F617267756D656E7428272D2D686F7374272C2072657175697265643D54727565290A7061727365722E6164645F617267756D656E7428272D2D706F7274272C2064656661756C743D38383833290A0A61726773203D207061727365722E70617273655F6172677328290A7072696E7428617267732E686F7374290A0A636572745F70656D203D2073736C2E6765745F7365727665725F63657274696669636174652828617267732E686F73742C20617267732E706F727429290A636572745F646572203D2073736C2E50454D5F636572745F746F5F4445525F6365727428636572745F70656D290A0A6D6435203D20686173686C69622E6D643528636572745F646572292E68657864696765737428290A73686131203D20686173686C69622E7368613128636572745F646572292E68657864696765737428290A736861323536203D20686173686C69622E73686132353628636572745F646572292E68657864696765737428290A7072696E7428224D44353A2022202B206D6435290A7072696E742822534841313A2022202B2073686131290A7072696E7428225348413235363A2022202B20736861323536290A0A7072696E7428225C6E5348413120617320617272617920696E697469616C697A65723A22290A7072696E742822636F6E73742075696E74385F742066696E6765727072696E745B5D203D207B307822202B20222C203078222E6A6F696E285B736861315B693A692B325D20666F72206920696E2072616E676528302C206C656E2873686131292C2032295D29202B20227D3B22290A0A7072696E7428225C6E534841312061732066756E6374696F6E2063616C6C3A22290A7072696E7428226D717474436C69656E742E61646453657276657246696E6765727072696E742828636F6E73742075696E74385F745B5D297B307822202B20222C203078222E6A6F696E285B736861315B693A692B325D20666F72206920696E2072616E676528302C206C656E2873686131292C2032295D29202B20227D293B22290A .py src AsyncMqttClient Callbacks 23707261676D61206F6E63650D0A0D0A23696E636C756465203C66756E6374696F6E616C3E0D0A0D0A23696E636C7564652022446973636F6E6E656374526561736F6E732E687070220D0A23696E636C75646520224D65737361676550726F706572746965732E687070220D0A0D0A6E616D657370616365204173796E634D717474436C69656E74496E7465726E616C73207B0D0A2F2F20757365722063616C6C6261636B730D0A74797065646566207374643A3A66756E6374696F6E3C766F696428626F6F6C2073657373696F6E50726573656E74293E204F6E436F6E6E6563745573657243616C6C6261636B3B0D0A74797065646566207374643A3A66756E6374696F6E3C766F6964284173796E634D717474436C69656E74446973636F6E6E656374526561736F6E20726561736F6E293E204F6E446973636F6E6E6563745573657243616C6C6261636B3B0D0A74797065646566207374643A3A66756E6374696F6E3C766F69642875696E7431365F74207061636B657449642C2075696E74385F7420716F73293E204F6E5375627363726962655573657243616C6C6261636B3B0D0A74797065646566207374643A3A66756E6374696F6E3C766F69642875696E7431365F74207061636B65744964293E204F6E556E7375627363726962655573657243616C6C6261636B3B0D0A74797065646566207374643A3A66756E6374696F6E3C766F696428636861722A20746F7069632C20636861722A207061796C6F61642C204173796E634D717474436C69656E744D65737361676550726F706572746965732070726F706572746965732C2073697A655F74206C656E2C2073697A655F7420696E6465782C2073697A655F7420746F74616C293E204F6E4D6573736167655573657243616C6C6261636B3B0D0A74797065646566207374643A3A66756E6374696F6E3C766F69642875696E7431365F74207061636B65744964293E204F6E5075626C6973685573657243616C6C6261636B3B0D0A0D0A2F2F20696E7465726E616C2063616C6C6261636B730D0A74797065646566207374643A3A66756E6374696F6E3C766F696428626F6F6C2073657373696F6E50726573656E742C2075696E74385F7420636F6E6E65637452657475726E436F6465293E204F6E436F6E6E41636B496E7465726E616C43616C6C6261636B3B0D0A74797065646566207374643A3A66756E6374696F6E3C766F696428293E204F6E50696E6752657370496E7465726E616C43616C6C6261636B3B0D0A74797065646566207374643A3A66756E6374696F6E3C766F69642875696E7431365F74207061636B657449642C206368617220737461747573293E204F6E53756241636B496E7465726E616C43616C6C6261636B3B0D0A74797065646566207374643A3A66756E6374696F6E3C766F69642875696E7431365F74207061636B65744964293E204F6E556E73756241636B496E7465726E616C43616C6C6261636B3B0D0A74797065646566207374643A3A66756E6374696F6E3C766F696428636861722A20746F7069632C20636861722A207061796C6F61642C2075696E74385F7420716F732C20626F6F6C206475702C20626F6F6C2072657461696E2C2073697A655F74206C656E2C2073697A655F7420696E6465782C2073697A655F7420746F74616C2C2075696E7431365F74207061636B65744964293E204F6E4D657373616765496E7465726E616C43616C6C6261636B3B0D0A74797065646566207374643A3A66756E6374696F6E3C766F69642875696E7431365F74207061636B657449642C2075696E74385F7420716F73293E204F6E5075626C697368496E7465726E616C43616C6C6261636B3B0D0A74797065646566207374643A3A66756E6374696F6E3C766F69642875696E7431365F74207061636B65744964293E204F6E50756252656C496E7465726E616C43616C6C6261636B3B0D0A74797065646566207374643A3A66756E6374696F6E3C766F69642875696E7431365F74207061636B65744964293E204F6E50756241636B496E7465726E616C43616C6C6261636B3B0D0A74797065646566207374643A3A66756E6374696F6E3C766F69642875696E7431365F74207061636B65744964293E204F6E507562526563496E7465726E616C43616C6C6261636B3B0D0A74797065646566207374643A3A66756E6374696F6E3C766F69642875696E7431365F74207061636B65744964293E204F6E507562436F6D70496E7465726E616C43616C6C6261636B3B0D0A7D20202F2F206E616D657370616365204173796E634D717474436C69656E74496E7465726E616C730D0A .hpp DisconnectReasons 23707261676D61206F6E63650A0A656E756D20636C617373204173796E634D717474436C69656E74446973636F6E6E656374526561736F6E203A20696E74385F74207B0A20205443505F444953434F4E4E4543544544203D20302C0A0A20204D5154545F554E41434345505441424C455F50524F544F434F4C5F56455253494F4E203D20312C0A20204D5154545F4944454E5449464945525F52454A4543544544203D20322C0A20204D5154545F5345525645525F554E415641494C41424C45203D20332C0A20204D5154545F4D414C464F524D45445F43524544454E5449414C53203D20342C0A20204D5154545F4E4F545F415554484F52495A4544203D20352C0A0A2020455350383236365F4E4F545F454E4F5547485F5350414345203D20362C0A0A2020544C535F4241445F46494E4745525052494E54203D20370A7D3B0A .hpp Flags 23707261676D61206F6E63650A0A6E616D657370616365204173796E634D717474436C69656E74496E7465726E616C73207B0A636F6E73746578707220737472756374207B0A2020636F6E73742075696E74385F74205245534552564544202020203D20303B0A2020636F6E73742075696E74385F7420434F4E4E45435420202020203D20313B0A2020636F6E73742075696E74385F7420434F4E4E41434B20202020203D20323B0A2020636F6E73742075696E74385F74205055424C49534820202020203D20333B0A2020636F6E73742075696E74385F742050554241434B2020202020203D20343B0A2020636F6E73742075696E74385F74205055425245432020202020203D20353B0A2020636F6E73742075696E74385F742050554252454C2020202020203D20363B0A2020636F6E73742075696E74385F7420505542434F4D5020202020203D20373B0A2020636F6E73742075696E74385F74205355425343524942452020203D20383B0A2020636F6E73742075696E74385F742053554241434B2020202020203D20393B0A2020636F6E73742075696E74385F7420554E535542534352494245203D2031303B0A2020636F6E73742075696E74385F7420554E53554241434B202020203D2031313B0A2020636F6E73742075696E74385F742050494E4752455120202020203D2031323B0A2020636F6E73742075696E74385F742050494E4752455350202020203D2031333B0A2020636F6E73742075696E74385F7420444953434F4E4E45435420203D2031343B0A2020636F6E73742075696E74385F74205245534552564544322020203D20313B0A7D205061636B6574547970653B0A0A636F6E73746578707220737472756374207B0A2020636F6E73742075696E74385F7420434F4E4E4543545F524553455256454420202020203D20307830303B0A2020636F6E73742075696E74385F7420434F4E4E41434B5F524553455256454420202020203D20307830303B0A2020636F6E73742075696E74385F74205055424C4953485F445550202020202020202020203D20307830383B0A2020636F6E73742075696E74385F74205055424C4953485F514F53302020202020202020203D20307830303B0A2020636F6E73742075696E74385F74205055424C4953485F514F53312020202020202020203D20307830323B0A2020636F6E73742075696E74385F74205055424C4953485F514F53322020202020202020203D20307830343B0A2020636F6E73742075696E74385F74205055424C4953485F514F53524553455256454420203D20307830363B0A2020636F6E73742075696E74385F74205055424C4953485F52455441494E202020202020203D20307830313B0A2020636F6E73742075696E74385F742050554241434B5F52455345525645442020202020203D20307830303B0A2020636F6E73742075696E74385F74205055425245435F52455345525645442020202020203D20307830303B0A2020636F6E73742075696E74385F742050554252454C5F52455345525645442020202020203D20307830323B0A2020636F6E73742075696E74385F7420505542434F4D505F524553455256454420202020203D20307830303B0A2020636F6E73742075696E74385F74205355425343524942455F52455345525645442020203D20307830323B0A2020636F6E73742075696E74385F742053554241434B5F52455345525645442020202020203D20307830303B0A2020636F6E73742075696E74385F7420554E5355425343524942455F5245534552564544203D20307830323B0A2020636F6E73742075696E74385F7420554E53554241434B5F5245534552564544202020203D20307830303B0A2020636F6E73742075696E74385F742050494E475245515F524553455256454420202020203D20307830303B0A2020636F6E73742075696E74385F742050494E47524553505F5245534552564544202020203D20307830303B0A2020636F6E73742075696E74385F7420444953434F4E4E4543545F524553455256454420203D20307830303B0A2020636F6E73742075696E74385F74205245534552564544325F52455345525645442020203D20307830303B0A7D20486561646572466C61673B0A0A636F6E73746578707220737472756374207B0A2020636F6E73742075696E74385F7420555345524E414D452020202020203D20307838303B0A2020636F6E73742075696E74385F742050415353574F52442020202020203D20307834303B0A2020636F6E73742075696E74385F742057494C4C5F52455441494E2020203D20307832303B0A2020636F6E73742075696E74385F742057494C4C5F514F533020202020203D20307830303B0A2020636F6E73742075696E74385F742057494C4C5F514F533120202020203D20307830383B0A2020636F6E73742075696E74385F742057494C4C5F514F533220202020203D20307831303B0A2020636F6E73742075696E74385F742057494C4C202020202020202020203D20307830343B0A2020636F6E73742075696E74385F7420434C45414E5F53455353494F4E203D20307830323B0A2020636F6E73742075696E74385F742052455345525645442020202020203D20307830303B0A7D20436F6E6E656374466C61673B0A7D20202F2F206E616D657370616365204173796E634D717474436C69656E74496E7465726E616C730A .hpp Helpers 23707261676D61206F6E63650D0A0D0A6E616D657370616365204173796E634D717474436C69656E74496E7465726E616C73207B0D0A636C6173732048656C70657273207B0D0A207075626C69633A0D0A20207374617469632075696E7433325F74206465636F646552656D61696E696E674C656E67746828636861722A20627974657329207B0D0A2020202075696E7433325F74206D756C7469706C696572203D20313B0D0A2020202075696E7433325F742076616C7565203D20303B0D0A2020202075696E74385F742063757272656E7442797465203D20303B0D0A2020202075696E74385F7420656E636F646564427974653B0D0A20202020646F207B0D0A202020202020656E636F64656442797465203D2062797465735B63757272656E74427974652B2B5D3B0D0A20202020202076616C7565202B3D2028656E636F6465644279746520262031323729202A206D756C7469706C6965723B0D0A2020202020206D756C7469706C696572202A3D203132383B0D0A202020207D207768696C65202828656E636F646564427974652026203132382920213D2030293B0D0A0D0A2020202072657475726E2076616C75653B0D0A20207D0D0A0D0A20207374617469632075696E74385F7420656E636F646552656D61696E696E674C656E6774682875696E7433325F742072656D61696E696E674C656E6774682C20636861722A2064657374696E6174696F6E29207B0D0A2020202075696E74385F742063757272656E7442797465203D20303B0D0A2020202075696E74385F742062797465734E6565646564203D20303B0D0A0D0A20202020646F207B0D0A20202020202075696E74385F7420656E636F64656442797465203D2072656D61696E696E674C656E6774682025203132383B0D0A20202020202072656D61696E696E674C656E677468202F3D203132383B0D0A2020202020206966202872656D61696E696E674C656E677468203E203029207B0D0A2020202020202020656E636F64656442797465203D20656E636F64656442797465207C203132383B0D0A2020202020207D0D0A0D0A20202020202064657374696E6174696F6E5B63757272656E74427974652B2B5D203D20656E636F646564427974653B0D0A20202020202062797465734E65656465642B2B3B0D0A202020207D207768696C65202872656D61696E696E674C656E677468203E2030293B0D0A0D0A2020202072657475726E2062797465734E65656465643B0D0A20207D0D0A7D3B0D0A7D20202F2F206E616D657370616365204173796E634D717474436C69656E74496E7465726E616C730D0A .hpp MessageProperties 23707261676D61206F6E63650A0A737472756374204173796E634D717474436C69656E744D65737361676550726F70657274696573207B0A202075696E74385F7420716F733B0A2020626F6F6C206475703B0A2020626F6F6C2072657461696E3B0A7D3B0A .hpp Packets ConnAckPacket 23696E636C7564652022436F6E6E41636B5061636B65742E687070220D0A0D0A7573696E67204173796E634D717474436C69656E74496E7465726E616C733A3A436F6E6E41636B5061636B65743B0D0A0D0A436F6E6E41636B5061636B65743A3A436F6E6E41636B5061636B65742850617273696E67496E666F726D6174696F6E2A2070617273696E67496E666F726D6174696F6E2C204F6E436F6E6E41636B496E7465726E616C43616C6C6261636B2063616C6C6261636B290D0A3A205F70617273696E67496E666F726D6174696F6E2870617273696E67496E666F726D6174696F6E290D0A2C205F63616C6C6261636B2863616C6C6261636B290D0A2C205F62797465506F736974696F6E2830290D0A2C205F73657373696F6E50726573656E742866616C7365290D0A2C205F636F6E6E65637452657475726E436F6465283029207B0D0A7D0D0A0D0A436F6E6E41636B5061636B65743A3A7E436F6E6E41636B5061636B65742829207B0D0A7D0D0A0D0A766F696420436F6E6E41636B5061636B65743A3A70617273655661726961626C6548656164657228636861722A20646174612C2073697A655F74206C656E2C2073697A655F742A2063757272656E7442797465506F736974696F6E29207B0D0A2020636861722063757272656E7442797465203D20646174615B282A63757272656E7442797465506F736974696F6E292B2B5D3B0D0A2020696620285F62797465506F736974696F6E2B2B203D3D203029207B0D0A202020205F73657373696F6E50726573656E74203D202863757272656E7442797465203C3C203729203E3E20373B0D0A20207D20656C7365207B0D0A202020205F636F6E6E65637452657475726E436F6465203D2063757272656E74427974653B0D0A202020205F70617273696E67496E666F726D6174696F6E2D3E6275666665725374617465203D2042756666657253746174653A3A4E4F4E453B0D0A202020205F63616C6C6261636B285F73657373696F6E50726573656E742C205F636F6E6E65637452657475726E436F6465293B0D0A20207D0D0A7D0D0A0D0A766F696420436F6E6E41636B5061636B65743A3A70617273655061796C6F616428636861722A20646174612C2073697A655F74206C656E2C2073697A655F742A2063757272656E7442797465506F736974696F6E29207B0D0A202028766F696429646174613B0D0A202028766F69642963757272656E7442797465506F736974696F6E3B0D0A7D0D0A .cpp ConnAckPacket 23707261676D61206F6E63650D0A0D0A23696E636C756465202241726475696E6F2E68220D0A23696E636C75646520225061636B65742E687070220D0A23696E636C75646520222E2E2F50617273696E67496E666F726D6174696F6E2E687070220D0A23696E636C75646520222E2E2F43616C6C6261636B732E687070220D0A0D0A6E616D657370616365204173796E634D717474436C69656E74496E7465726E616C73207B0D0A636C61737320436F6E6E41636B5061636B6574203A207075626C6963205061636B6574207B0D0A207075626C69633A0D0A20206578706C6963697420436F6E6E41636B5061636B65742850617273696E67496E666F726D6174696F6E2A2070617273696E67496E666F726D6174696F6E2C204F6E436F6E6E41636B496E7465726E616C43616C6C6261636B2063616C6C6261636B293B0D0A20207E436F6E6E41636B5061636B657428293B0D0A0D0A2020766F69642070617273655661726961626C6548656164657228636861722A20646174612C2073697A655F74206C656E2C2073697A655F742A2063757272656E7442797465506F736974696F6E293B0D0A2020766F69642070617273655061796C6F616428636861722A20646174612C2073697A655F74206C656E2C2073697A655F742A2063757272656E7442797465506F736974696F6E293B0D0A0D0A20707269766174653A0D0A202050617273696E67496E666F726D6174696F6E2A205F70617273696E67496E666F726D6174696F6E3B0D0A20204F6E436F6E6E41636B496E7465726E616C43616C6C6261636B205F63616C6C6261636B3B0D0A0D0A202075696E74385F74205F62797465506F736974696F6E3B0D0A2020626F6F6C205F73657373696F6E50726573656E743B0D0A202075696E74385F74205F636F6E6E65637452657475726E436F64653B0D0A7D3B0D0A7D20202F2F206E616D657370616365204173796E634D717474436C69656E74496E7465726E616C730D0A .hpp Packet 23707261676D61206F6E63650D0A0D0A6E616D657370616365204173796E634D717474436C69656E74496E7465726E616C73207B0D0A636C617373205061636B6574207B0D0A207075626C69633A0D0A20207669727475616C207E5061636B65742829207B7D0D0A0D0A20207669727475616C20766F69642070617273655661726961626C6548656164657228636861722A20646174612C2073697A655F74206C656E2C2073697A655F742A2063757272656E7442797465506F736974696F6E29203D20303B0D0A20207669727475616C20766F69642070617273655061796C6F616428636861722A20646174612C2073697A655F74206C656E2C2073697A655F742A2063757272656E7442797465506F736974696F6E29203D20303B0D0A7D3B0D0A7D20202F2F206E616D657370616365204173796E634D717474436C69656E74496E7465726E616C730D0A .hpp PingRespPacket 23696E636C756465202250696E67526573705061636B65742E687070220D0A0D0A7573696E67204173796E634D717474436C69656E74496E7465726E616C733A3A50696E67526573705061636B65743B0D0A0D0A50696E67526573705061636B65743A3A50696E67526573705061636B65742850617273696E67496E666F726D6174696F6E2A2070617273696E67496E666F726D6174696F6E2C204F6E50696E6752657370496E7465726E616C43616C6C6261636B2063616C6C6261636B290D0A3A205F70617273696E67496E666F726D6174696F6E2870617273696E67496E666F726D6174696F6E290D0A2C205F63616C6C6261636B2863616C6C6261636B29207B0D0A7D0D0A0D0A50696E67526573705061636B65743A3A7E50696E67526573705061636B65742829207B0D0A7D0D0A0D0A766F69642050696E67526573705061636B65743A3A70617273655661726961626C6548656164657228636861722A20646174612C2073697A655F74206C656E2C2073697A655F742A2063757272656E7442797465506F736974696F6E29207B0D0A202028766F696429646174613B0D0A202028766F69642963757272656E7442797465506F736974696F6E3B0D0A7D0D0A0D0A766F69642050696E67526573705061636B65743A3A70617273655061796C6F616428636861722A20646174612C2073697A655F74206C656E2C2073697A655F742A2063757272656E7442797465506F736974696F6E29207B0D0A202028766F696429646174613B0D0A202028766F69642963757272656E7442797465506F736974696F6E3B0D0A7D0D0A .cpp PingRespPacket 23707261676D61206F6E63650D0A0D0A23696E636C756465202241726475696E6F2E68220D0A23696E636C75646520225061636B65742E687070220D0A23696E636C75646520222E2E2F50617273696E67496E666F726D6174696F6E2E687070220D0A23696E636C75646520222E2E2F43616C6C6261636B732E687070220D0A0D0A6E616D657370616365204173796E634D717474436C69656E74496E7465726E616C73207B0D0A636C6173732050696E67526573705061636B6574203A207075626C6963205061636B6574207B0D0A207075626C69633A0D0A20206578706C696369742050696E67526573705061636B65742850617273696E67496E666F726D6174696F6E2A2070617273696E67496E666F726D6174696F6E2C204F6E50696E6752657370496E7465726E616C43616C6C6261636B2063616C6C6261636B293B0D0A20207E50696E67526573705061636B657428293B0D0A0D0A2020766F69642070617273655661726961626C6548656164657228636861722A20646174612C2073697A655F74206C656E2C2073697A655F742A2063757272656E7442797465506F736974696F6E293B0D0A2020766F69642070617273655061796C6F616428636861722A20646174612C2073697A655F74206C656E2C2073697A655F742A2063757272656E7442797465506F736974696F6E293B0D0A0D0A20707269766174653A0D0A202050617273696E67496E666F726D6174696F6E2A205F70617273696E67496E666F726D6174696F6E3B0D0A20204F6E50696E6752657370496E7465726E616C43616C6C6261636B205F63616C6C6261636B3B0D0A7D3B0D0A7D20202F2F206E616D657370616365204173796E634D717474436C69656E74496E7465726E616C730D0A .hpp PubAckPacket 23696E636C756465202250756241636B5061636B65742E687070220D0A0D0A7573696E67204173796E634D717474436C69656E74496E7465726E616C733A3A50756241636B5061636B65743B0D0A0D0A50756241636B5061636B65743A3A50756241636B5061636B65742850617273696E67496E666F726D6174696F6E2A2070617273696E67496E666F726D6174696F6E2C204F6E50756241636B496E7465726E616C43616C6C6261636B2063616C6C6261636B290D0A3A205F70617273696E67496E666F726D6174696F6E2870617273696E67496E666F726D6174696F6E290D0A2C205F63616C6C6261636B2863616C6C6261636B290D0A2C205F62797465506F736974696F6E2830290D0A2C205F7061636B657449644D73622830290D0A2C205F7061636B65744964283029207B0D0A7D0D0A0D0A50756241636B5061636B65743A3A7E50756241636B5061636B65742829207B0D0A7D0D0A0D0A766F69642050756241636B5061636B65743A3A70617273655661726961626C6548656164657228636861722A20646174612C2073697A655F74206C656E2C2073697A655F742A2063757272656E7442797465506F736974696F6E29207B0D0A2020636861722063757272656E7442797465203D20646174615B282A63757272656E7442797465506F736974696F6E292B2B5D3B0D0A2020696620285F62797465506F736974696F6E2B2B203D3D203029207B0D0A202020205F7061636B657449644D7362203D2063757272656E74427974653B0D0A20207D20656C7365207B0D0A202020205F7061636B65744964203D2063757272656E7442797465207C205F7061636B657449644D7362203C3C20383B0D0A202020205F70617273696E67496E666F726D6174696F6E2D3E6275666665725374617465203D2042756666657253746174653A3A4E4F4E453B0D0A202020205F63616C6C6261636B285F7061636B65744964293B0D0A20207D0D0A7D0D0A0D0A766F69642050756241636B5061636B65743A3A70617273655061796C6F616428636861722A20646174612C2073697A655F74206C656E2C2073697A655F742A2063757272656E7442797465506F736974696F6E29207B0D0A202028766F696429646174613B0D0A202028766F69642963757272656E7442797465506F736974696F6E3B0D0A7D0D0A .cpp PubAckPacket 23707261676D61206F6E63650D0A0D0A23696E636C756465202241726475696E6F2E68220D0A23696E636C75646520225061636B65742E687070220D0A23696E636C75646520222E2E2F50617273696E67496E666F726D6174696F6E2E687070220D0A23696E636C75646520222E2E2F43616C6C6261636B732E687070220D0A0D0A6E616D657370616365204173796E634D717474436C69656E74496E7465726E616C73207B0D0A636C6173732050756241636B5061636B6574203A207075626C6963205061636B6574207B0D0A207075626C69633A0D0A20206578706C696369742050756241636B5061636B65742850617273696E67496E666F726D6174696F6E2A2070617273696E67496E666F726D6174696F6E2C204F6E50756241636B496E7465726E616C43616C6C6261636B2063616C6C6261636B293B0D0A20207E50756241636B5061636B657428293B0D0A0D0A2020766F69642070617273655661726961626C6548656164657228636861722A20646174612C2073697A655F74206C656E2C2073697A655F742A2063757272656E7442797465506F736974696F6E293B0D0A2020766F69642070617273655061796C6F616428636861722A20646174612C2073697A655F74206C656E2C2073697A655F742A2063757272656E7442797465506F736974696F6E293B0D0A0D0A20707269766174653A0D0A202050617273696E67496E666F726D6174696F6E2A205F70617273696E67496E666F726D6174696F6E3B0D0A20204F6E50756241636B496E7465726E616C43616C6C6261636B205F63616C6C6261636B3B0D0A0D0A202075696E74385F74205F62797465506F736974696F6E3B0D0A202063686172205F7061636B657449644D73623B0D0A202075696E7431365F74205F7061636B657449643B0D0A7D3B0D0A7D20202F2F206E616D657370616365204173796E634D717474436C69656E74496E7465726E616C730D0A .hpp PubCompPacket 23696E636C7564652022507562436F6D705061636B65742E687070220D0A0D0A7573696E67204173796E634D717474436C69656E74496E7465726E616C733A3A507562436F6D705061636B65743B0D0A0D0A507562436F6D705061636B65743A3A507562436F6D705061636B65742850617273696E67496E666F726D6174696F6E2A2070617273696E67496E666F726D6174696F6E2C204F6E507562436F6D70496E7465726E616C43616C6C6261636B2063616C6C6261636B290D0A3A205F70617273696E67496E666F726D6174696F6E2870617273696E67496E666F726D6174696F6E290D0A2C205F63616C6C6261636B2863616C6C6261636B290D0A2C205F62797465506F736974696F6E2830290D0A2C205F7061636B657449644D73622830290D0A2C205F7061636B65744964283029207B0D0A7D0D0A0D0A507562436F6D705061636B65743A3A7E507562436F6D705061636B65742829207B0D0A7D0D0A0D0A766F696420507562436F6D705061636B65743A3A70617273655661726961626C6548656164657228636861722A20646174612C2073697A655F74206C656E2C2073697A655F742A2063757272656E7442797465506F736974696F6E29207B0D0A2020636861722063757272656E7442797465203D20646174615B282A63757272656E7442797465506F736974696F6E292B2B5D3B0D0A2020696620285F62797465506F736974696F6E2B2B203D3D203029207B0D0A202020205F7061636B657449644D7362203D2063757272656E74427974653B0D0A20207D20656C7365207B0D0A202020205F7061636B65744964203D2063757272656E7442797465207C205F7061636B657449644D7362203C3C20383B0D0A202020205F70617273696E67496E666F726D6174696F6E2D3E6275666665725374617465203D2042756666657253746174653A3A4E4F4E453B0D0A202020205F63616C6C6261636B285F7061636B65744964293B0D0A20207D0D0A7D0D0A0D0A766F696420507562436F6D705061636B65743A3A70617273655061796C6F616428636861722A20646174612C2073697A655F74206C656E2C2073697A655F742A2063757272656E7442797465506F736974696F6E29207B0D0A202028766F696429646174613B0D0A202028766F69642963757272656E7442797465506F736974696F6E3B0D0A7D0D0A .cpp PubCompPacket 23707261676D61206F6E63650D0A0D0A23696E636C756465202241726475696E6F2E68220D0A23696E636C75646520225061636B65742E687070220D0A23696E636C75646520222E2E2F50617273696E67496E666F726D6174696F6E2E687070220D0A23696E636C75646520222E2E2F43616C6C6261636B732E687070220D0A0D0A6E616D657370616365204173796E634D717474436C69656E74496E7465726E616C73207B0D0A636C61737320507562436F6D705061636B6574203A207075626C6963205061636B6574207B0D0A207075626C69633A0D0A20206578706C6963697420507562436F6D705061636B65742850617273696E67496E666F726D6174696F6E2A2070617273696E67496E666F726D6174696F6E2C204F6E507562436F6D70496E7465726E616C43616C6C6261636B2063616C6C6261636B293B0D0A20207E507562436F6D705061636B657428293B0D0A0D0A2020766F69642070617273655661726961626C6548656164657228636861722A20646174612C2073697A655F74206C656E2C2073697A655F742A2063757272656E7442797465506F736974696F6E293B0D0A2020766F69642070617273655061796C6F616428636861722A20646174612C2073697A655F74206C656E2C2073697A655F742A2063757272656E7442797465506F736974696F6E293B0D0A0D0A20707269766174653A0D0A202050617273696E67496E666F726D6174696F6E2A205F70617273696E67496E666F726D6174696F6E3B0D0A20204F6E507562436F6D70496E7465726E616C43616C6C6261636B205F63616C6C6261636B3B0D0A0D0A202075696E74385F74205F62797465506F736974696F6E3B0D0A202063686172205F7061636B657449644D73623B0D0A202075696E7431365F74205F7061636B657449643B0D0A7D3B0D0A7D20202F2F206E616D657370616365204173796E634D717474436C69656E74496E7465726E616C730D0A .hpp PublishPacket 23696E636C75646520225075626C6973685061636B65742E687070220D0A0D0A7573696E67204173796E634D717474436C69656E74496E7465726E616C733A3A5075626C6973685061636B65743B0D0A0D0A5075626C6973685061636B65743A3A5075626C6973685061636B65742850617273696E67496E666F726D6174696F6E2A2070617273696E67496E666F726D6174696F6E2C204F6E4D657373616765496E7465726E616C43616C6C6261636B206461746143616C6C6261636B2C204F6E5075626C697368496E7465726E616C43616C6C6261636B20636F6D706C65746543616C6C6261636B290D0A3A205F70617273696E67496E666F726D6174696F6E2870617273696E67496E666F726D6174696F6E290D0A2C205F6461746143616C6C6261636B286461746143616C6C6261636B290D0A2C205F636F6D706C65746543616C6C6261636B28636F6D706C65746543616C6C6261636B290D0A2C205F6475702866616C7365290D0A2C205F716F732830290D0A2C205F72657461696E2830290D0A2C205F62797465506F736974696F6E2830290D0A2C205F746F7069634C656E6774684D73622830290D0A2C205F746F7069634C656E6774682830290D0A2C205F69676E6F72652866616C7365290D0A2C205F7061636B657449644D73622830290D0A2C205F7061636B657449642830290D0A2C205F7061796C6F61644C656E6774682830290D0A2C205F7061796C6F6164427974657352656164283029207B0D0A202020205F647570203D205F70617273696E67496E666F726D6174696F6E2D3E7061636B6574466C616773202620486561646572466C61672E5055424C4953485F4455503B0D0A202020205F72657461696E203D205F70617273696E67496E666F726D6174696F6E2D3E7061636B6574466C616773202620486561646572466C61672E5055424C4953485F52455441494E3B0D0A202020206368617220716F734D61736B6564203D205F70617273696E67496E666F726D6174696F6E2D3E7061636B6574466C616773202620307830363B0D0A202020207377697463682028716F734D61736B656429207B0D0A2020202020206361736520486561646572466C61672E5055424C4953485F514F53303A0D0A20202020202020205F716F73203D20303B0D0A2020202020202020627265616B3B0D0A2020202020206361736520486561646572466C61672E5055424C4953485F514F53313A0D0A20202020202020205F716F73203D20313B0D0A2020202020202020627265616B3B0D0A2020202020206361736520486561646572466C61672E5055424C4953485F514F53323A0D0A20202020202020205F716F73203D20323B0D0A2020202020202020627265616B3B0D0A202020207D0D0A7D0D0A0D0A5075626C6973685061636B65743A3A7E5075626C6973685061636B65742829207B0D0A7D0D0A0D0A766F6964205075626C6973685061636B65743A3A70617273655661726961626C6548656164657228636861722A20646174612C2073697A655F74206C656E2C2073697A655F742A2063757272656E7442797465506F736974696F6E29207B0D0A2020636861722063757272656E7442797465203D20646174615B282A63757272656E7442797465506F736974696F6E292B2B5D3B0D0A2020696620285F62797465506F736974696F6E203D3D203029207B0D0A202020205F746F7069634C656E6774684D7362203D2063757272656E74427974653B0D0A20207D20656C736520696620285F62797465506F736974696F6E203D3D203129207B0D0A202020205F746F7069634C656E677468203D2063757272656E7442797465207C205F746F7069634C656E6774684D7362203C3C20383B0D0A20202020696620285F746F7069634C656E677468203E205F70617273696E67496E666F726D6174696F6E2D3E6D6178546F7069634C656E67746829207B0D0A2020202020205F69676E6F7265203D20747275653B0D0A202020207D20656C7365207B0D0A2020202020205F70617273696E67496E666F726D6174696F6E2D3E746F7069634275666665725B5F746F7069634C656E6774685D203D20275C30273B0D0A202020207D0D0A20207D20656C736520696620285F62797465506F736974696F6E203E3D2032202626205F62797465506F736974696F6E203C2032202B205F746F7069634C656E67746829207B0D0A202020202F2F205374617274696E672066726F6D20686572652C205F69676E6F7265206D6967687420626520747275650D0A2020202069662028215F69676E6F726529205F70617273696E67496E666F726D6174696F6E2D3E746F7069634275666665725B5F62797465506F736974696F6E202D20325D203D2063757272656E74427974653B0D0A20202020696620285F62797465506F736974696F6E203D3D2032202B205F746F7069634C656E677468202D2031202626205F716F73203D3D203029207B0D0A2020202020205F707265706172655061796C6F616448616E646C696E67285F70617273696E67496E666F726D6174696F6E2D3E72656D61696E696E674C656E677468202D20285F62797465506F736974696F6E202B203129293B0D0A20202020202072657475726E3B0D0A202020207D0D0A20207D20656C736520696620285F62797465506F736974696F6E203D3D2032202B205F746F7069634C656E67746829207B0D0A202020205F7061636B657449644D7362203D2063757272656E74427974653B0D0A20207D20656C7365207B0D0A202020205F7061636B65744964203D2063757272656E7442797465207C205F7061636B657449644D7362203C3C20383B0D0A202020205F707265706172655061796C6F616448616E646C696E67285F70617273696E67496E666F726D6174696F6E2D3E72656D61696E696E674C656E677468202D20285F62797465506F736974696F6E202B203129293B0D0A20207D0D0A20205F62797465506F736974696F6E2B2B3B0D0A7D0D0A0D0A766F6964205075626C6973685061636B65743A3A5F707265706172655061796C6F616448616E646C696E672875696E7433325F74207061796C6F61644C656E67746829207B0D0A20205F7061796C6F61644C656E677468203D207061796C6F61644C656E6774683B0D0A2020696620287061796C6F61644C656E677468203D3D203029207B0D0A202020205F70617273696E67496E666F726D6174696F6E2D3E6275666665725374617465203D2042756666657253746174653A3A4E4F4E453B0D0A2020202069662028215F69676E6F726529207B0D0A2020202020205F6461746143616C6C6261636B285F70617273696E67496E666F726D6174696F6E2D3E746F7069634275666665722C206E756C6C7074722C205F716F732C205F6475702C205F72657461696E2C20302C20302C20302C205F7061636B65744964293B0D0A2020202020205F636F6D706C65746543616C6C6261636B285F7061636B657449642C205F716F73293B0D0A202020207D0D0A20207D20656C7365207B0D0A202020205F70617273696E67496E666F726D6174696F6E2D3E6275666665725374617465203D2042756666657253746174653A3A5041594C4F41443B0D0A20207D0D0A7D0D0A0D0A766F6964205075626C6973685061636B65743A3A70617273655061796C6F616428636861722A20646174612C2073697A655F74206C656E2C2073697A655F742A2063757272656E7442797465506F736974696F6E29207B0D0A202073697A655F742072656D61696E546F52656164203D206C656E202D20282A63757272656E7442797465506F736974696F6E293B0D0A2020696620285F7061796C6F6164427974657352656164202B2072656D61696E546F52656164203E205F7061796C6F61644C656E677468292072656D61696E546F52656164203D205F7061796C6F61644C656E677468202D205F7061796C6F61644279746573526561643B0D0A0D0A202069662028215F69676E6F726529205F6461746143616C6C6261636B285F70617273696E67496E666F726D6174696F6E2D3E746F7069634275666665722C2064617461202B20282A63757272656E7442797465506F736974696F6E292C205F716F732C205F6475702C205F72657461696E2C2072656D61696E546F526561642C205F7061796C6F61644279746573526561642C205F7061796C6F61644C656E6774682C205F7061636B65744964293B0D0A20205F7061796C6F6164427974657352656164202B3D2072656D61696E546F526561643B0D0A2020282A63757272656E7442797465506F736974696F6E29202B3D2072656D61696E546F526561643B0D0A0D0A2020696620285F7061796C6F6164427974657352656164203D3D205F7061796C6F61644C656E67746829207B0D0A202020205F70617273696E67496E666F726D6174696F6E2D3E6275666665725374617465203D2042756666657253746174653A3A4E4F4E453B0D0A2020202069662028215F69676E6F726529205F636F6D706C65746543616C6C6261636B285F7061636B657449642C205F716F73293B0D0A20207D0D0A7D0D0A .cpp PublishPacket 23707261676D61206F6E63650D0A0D0A23696E636C756465202241726475696E6F2E68220D0A23696E636C75646520225061636B65742E687070220D0A23696E636C75646520222E2E2F466C6167732E687070220D0A23696E636C75646520222E2E2F50617273696E67496E666F726D6174696F6E2E687070220D0A23696E636C75646520222E2E2F43616C6C6261636B732E687070220D0A0D0A6E616D657370616365204173796E634D717474436C69656E74496E7465726E616C73207B0D0A636C617373205075626C6973685061636B6574203A207075626C6963205061636B6574207B0D0A207075626C69633A0D0A20206578706C69636974205075626C6973685061636B65742850617273696E67496E666F726D6174696F6E2A2070617273696E67496E666F726D6174696F6E2C204F6E4D657373616765496E7465726E616C43616C6C6261636B206461746143616C6C6261636B2C204F6E5075626C697368496E7465726E616C43616C6C6261636B20636F6D706C65746543616C6C6261636B293B0D0A20207E5075626C6973685061636B657428293B0D0A0D0A2020766F69642070617273655661726961626C6548656164657228636861722A20646174612C2073697A655F74206C656E2C2073697A655F742A2063757272656E7442797465506F736974696F6E293B0D0A2020766F69642070617273655061796C6F616428636861722A20646174612C2073697A655F74206C656E2C2073697A655F742A2063757272656E7442797465506F736974696F6E293B0D0A0D0A20707269766174653A0D0A202050617273696E67496E666F726D6174696F6E2A205F70617273696E67496E666F726D6174696F6E3B0D0A20204F6E4D657373616765496E7465726E616C43616C6C6261636B205F6461746143616C6C6261636B3B0D0A20204F6E5075626C697368496E7465726E616C43616C6C6261636B205F636F6D706C65746543616C6C6261636B3B0D0A0D0A2020766F6964205F707265706172655061796C6F616448616E646C696E672875696E7433325F74207061796C6F61644C656E677468293B0D0A0D0A2020626F6F6C205F6475703B0D0A202075696E74385F74205F716F733B0D0A2020626F6F6C205F72657461696E3B0D0A0D0A202075696E74385F74205F62797465506F736974696F6E3B0D0A202063686172205F746F7069634C656E6774684D73623B0D0A202075696E7431365F74205F746F7069634C656E6774683B0D0A2020626F6F6C205F69676E6F72653B0D0A202063686172205F7061636B657449644D73623B0D0A202075696E7431365F74205F7061636B657449643B0D0A202075696E7433325F74205F7061796C6F61644C656E6774683B0D0A202075696E7433325F74205F7061796C6F61644279746573526561643B0D0A7D3B0D0A7D20202F2F206E616D657370616365204173796E634D717474436C69656E74496E7465726E616C730D0A .hpp PubRecPacket 23696E636C75646520225075625265635061636B65742E687070220D0A0D0A7573696E67204173796E634D717474436C69656E74496E7465726E616C733A3A5075625265635061636B65743B0D0A0D0A5075625265635061636B65743A3A5075625265635061636B65742850617273696E67496E666F726D6174696F6E2A2070617273696E67496E666F726D6174696F6E2C204F6E507562526563496E7465726E616C43616C6C6261636B2063616C6C6261636B290D0A3A205F70617273696E67496E666F726D6174696F6E2870617273696E67496E666F726D6174696F6E290D0A2C205F63616C6C6261636B2863616C6C6261636B290D0A2C205F62797465506F736974696F6E2830290D0A2C205F7061636B657449644D73622830290D0A2C205F7061636B65744964283029207B0D0A7D0D0A0D0A5075625265635061636B65743A3A7E5075625265635061636B65742829207B0D0A7D0D0A0D0A766F6964205075625265635061636B65743A3A70617273655661726961626C6548656164657228636861722A20646174612C2073697A655F74206C656E2C2073697A655F742A2063757272656E7442797465506F736974696F6E29207B0D0A2020636861722063757272656E7442797465203D20646174615B282A63757272656E7442797465506F736974696F6E292B2B5D3B0D0A2020696620285F62797465506F736974696F6E2B2B203D3D203029207B0D0A202020205F7061636B657449644D7362203D2063757272656E74427974653B0D0A20207D20656C7365207B0D0A202020205F7061636B65744964203D2063757272656E7442797465207C205F7061636B657449644D7362203C3C20383B0D0A202020205F70617273696E67496E666F726D6174696F6E2D3E6275666665725374617465203D2042756666657253746174653A3A4E4F4E453B0D0A202020205F63616C6C6261636B285F7061636B65744964293B0D0A20207D0D0A7D0D0A0D0A766F6964205075625265635061636B65743A3A70617273655061796C6F616428636861722A20646174612C2073697A655F74206C656E2C2073697A655F742A2063757272656E7442797465506F736974696F6E29207B0D0A202028766F696429646174613B0D0A202028766F69642963757272656E7442797465506F736974696F6E3B0D0A7D0D0A .cpp PubRecPacket 23707261676D61206F6E63650D0A0D0A23696E636C756465202241726475696E6F2E68220D0A23696E636C75646520225061636B65742E687070220D0A23696E636C75646520222E2E2F50617273696E67496E666F726D6174696F6E2E687070220D0A23696E636C75646520222E2E2F43616C6C6261636B732E687070220D0A0D0A6E616D657370616365204173796E634D717474436C69656E74496E7465726E616C73207B0D0A636C617373205075625265635061636B6574203A207075626C6963205061636B6574207B0D0A207075626C69633A0D0A20206578706C69636974205075625265635061636B65742850617273696E67496E666F726D6174696F6E2A2070617273696E67496E666F726D6174696F6E2C204F6E507562526563496E7465726E616C43616C6C6261636B2063616C6C6261636B293B0D0A20207E5075625265635061636B657428293B0D0A0D0A2020766F69642070617273655661726961626C6548656164657228636861722A20646174612C2073697A655F74206C656E2C2073697A655F742A2063757272656E7442797465506F736974696F6E293B0D0A2020766F69642070617273655061796C6F616428636861722A20646174612C2073697A655F74206C656E2C2073697A655F742A2063757272656E7442797465506F736974696F6E293B0D0A0D0A20707269766174653A0D0A202050617273696E67496E666F726D6174696F6E2A205F70617273696E67496E666F726D6174696F6E3B0D0A20204F6E507562526563496E7465726E616C43616C6C6261636B205F63616C6C6261636B3B0D0A0D0A202075696E74385F74205F62797465506F736974696F6E3B0D0A202063686172205F7061636B657449644D73623B0D0A202075696E7431365F74205F7061636B657449643B0D0A7D3B0D0A7D20202F2F206E616D657370616365204173796E634D717474436C69656E74496E7465726E616C730D0A .hpp PubRelPacket 23696E636C756465202250756252656C5061636B65742E687070220D0A0D0A7573696E67204173796E634D717474436C69656E74496E7465726E616C733A3A50756252656C5061636B65743B0D0A0D0A50756252656C5061636B65743A3A50756252656C5061636B65742850617273696E67496E666F726D6174696F6E2A2070617273696E67496E666F726D6174696F6E2C204F6E50756252656C496E7465726E616C43616C6C6261636B2063616C6C6261636B290D0A3A205F70617273696E67496E666F726D6174696F6E2870617273696E67496E666F726D6174696F6E290D0A2C205F63616C6C6261636B2863616C6C6261636B290D0A2C205F62797465506F736974696F6E2830290D0A2C205F7061636B657449644D73622830290D0A2C205F7061636B65744964283029207B0D0A7D0D0A0D0A50756252656C5061636B65743A3A7E50756252656C5061636B65742829207B0D0A7D0D0A0D0A766F69642050756252656C5061636B65743A3A70617273655661726961626C6548656164657228636861722A20646174612C2073697A655F74206C656E2C2073697A655F742A2063757272656E7442797465506F736974696F6E29207B0D0A2020636861722063757272656E7442797465203D20646174615B282A63757272656E7442797465506F736974696F6E292B2B5D3B0D0A2020696620285F62797465506F736974696F6E2B2B203D3D203029207B0D0A202020205F7061636B657449644D7362203D2063757272656E74427974653B0D0A20207D20656C7365207B0D0A202020205F7061636B65744964203D2063757272656E7442797465207C205F7061636B657449644D7362203C3C20383B0D0A202020205F70617273696E67496E666F726D6174696F6E2D3E6275666665725374617465203D2042756666657253746174653A3A4E4F4E453B0D0A202020205F63616C6C6261636B285F7061636B65744964293B0D0A20207D0D0A7D0D0A0D0A766F69642050756252656C5061636B65743A3A70617273655061796C6F616428636861722A20646174612C2073697A655F74206C656E2C2073697A655F742A2063757272656E7442797465506F736974696F6E29207B0D0A202028766F696429646174613B0D0A202028766F69642963757272656E7442797465506F736974696F6E3B0D0A7D0D0A .cpp PubRelPacket 23707261676D61206F6E63650D0A0D0A23696E636C756465202241726475696E6F2E68220D0A23696E636C75646520225061636B65742E687070220D0A23696E636C75646520222E2E2F50617273696E67496E666F726D6174696F6E2E687070220D0A23696E636C75646520222E2E2F43616C6C6261636B732E687070220D0A0D0A6E616D657370616365204173796E634D717474436C69656E74496E7465726E616C73207B0D0A636C6173732050756252656C5061636B6574203A207075626C6963205061636B6574207B0D0A207075626C69633A0D0A20206578706C696369742050756252656C5061636B65742850617273696E67496E666F726D6174696F6E2A2070617273696E67496E666F726D6174696F6E2C204F6E50756252656C496E7465726E616C43616C6C6261636B2063616C6C6261636B293B0D0A20207E50756252656C5061636B657428293B0D0A0D0A2020766F69642070617273655661726961626C6548656164657228636861722A20646174612C2073697A655F74206C656E2C2073697A655F742A2063757272656E7442797465506F736974696F6E293B0D0A2020766F69642070617273655061796C6F616428636861722A20646174612C2073697A655F74206C656E2C2073697A655F742A2063757272656E7442797465506F736974696F6E293B0D0A0D0A20707269766174653A0D0A202050617273696E67496E666F726D6174696F6E2A205F70617273696E67496E666F726D6174696F6E3B0D0A20204F6E50756252656C496E7465726E616C43616C6C6261636B205F63616C6C6261636B3B0D0A0D0A202075696E74385F74205F62797465506F736974696F6E3B0D0A202063686172205F7061636B657449644D73623B0D0A202075696E7431365F74205F7061636B657449643B0D0A7D3B0D0A7D20202F2F206E616D657370616365204173796E634D717474436C69656E74496E7465726E616C730D0A .hpp SubAckPacket 23696E636C756465202253756241636B5061636B65742E687070220D0A0D0A7573696E67204173796E634D717474436C69656E74496E7465726E616C733A3A53756241636B5061636B65743B0D0A0D0A53756241636B5061636B65743A3A53756241636B5061636B65742850617273696E67496E666F726D6174696F6E2A2070617273696E67496E666F726D6174696F6E2C204F6E53756241636B496E7465726E616C43616C6C6261636B2063616C6C6261636B290D0A3A205F70617273696E67496E666F726D6174696F6E2870617273696E67496E666F726D6174696F6E290D0A2C205F63616C6C6261636B2863616C6C6261636B290D0A2C205F62797465506F736974696F6E2830290D0A2C205F7061636B657449644D73622830290D0A2C205F7061636B65744964283029207B0D0A7D0D0A0D0A53756241636B5061636B65743A3A7E53756241636B5061636B65742829207B0D0A7D0D0A0D0A766F69642053756241636B5061636B65743A3A70617273655661726961626C6548656164657228636861722A20646174612C2073697A655F74206C656E2C2073697A655F742A2063757272656E7442797465506F736974696F6E29207B0D0A2020636861722063757272656E7442797465203D20646174615B282A63757272656E7442797465506F736974696F6E292B2B5D3B0D0A2020696620285F62797465506F736974696F6E2B2B203D3D203029207B0D0A202020205F7061636B657449644D7362203D2063757272656E74427974653B0D0A20207D20656C7365207B0D0A202020205F7061636B65744964203D2063757272656E7442797465207C205F7061636B657449644D7362203C3C20383B0D0A202020205F70617273696E67496E666F726D6174696F6E2D3E6275666665725374617465203D2042756666657253746174653A3A5041594C4F41443B0D0A20207D0D0A7D0D0A0D0A766F69642053756241636B5061636B65743A3A70617273655061796C6F616428636861722A20646174612C2073697A655F74206C656E2C2073697A655F742A2063757272656E7442797465506F736974696F6E29207B0D0A20206368617220737461747573203D20646174615B282A63757272656E7442797465506F736974696F6E292B2B5D3B0D0A0D0A20202F2A20737769746368202873746174757329207B0D0A202020206361736520303A0D0A20202020202053657269616C2E7072696E746C6E28225375636365737320516F53203022293B0D0A202020202020627265616B3B0D0A202020206361736520313A0D0A20202020202053657269616C2E7072696E746C6E28225375636365737320516F53203122293B0D0A202020202020627265616B3B0D0A202020206361736520323A0D0A20202020202053657269616C2E7072696E746C6E28225375636365737320516F53203222293B0D0A202020202020627265616B3B0D0A202020206361736520307838303A0D0A20202020202053657269616C2E7072696E746C6E28224661696C75726522293B0D0A202020202020627265616B3B0D0A20207D202A2F0D0A0D0A20205F70617273696E67496E666F726D6174696F6E2D3E6275666665725374617465203D2042756666657253746174653A3A4E4F4E453B0D0A20205F63616C6C6261636B285F7061636B657449642C20737461747573293B0D0A7D0D0A .cpp SubAckPacket 23707261676D61206F6E63650D0A0D0A23696E636C756465202241726475696E6F2E68220D0A23696E636C75646520225061636B65742E687070220D0A23696E636C75646520222E2E2F50617273696E67496E666F726D6174696F6E2E687070220D0A23696E636C75646520222E2E2F43616C6C6261636B732E687070220D0A0D0A6E616D657370616365204173796E634D717474436C69656E74496E7465726E616C73207B0D0A636C6173732053756241636B5061636B6574203A207075626C6963205061636B6574207B0D0A207075626C69633A0D0A20206578706C696369742053756241636B5061636B65742850617273696E67496E666F726D6174696F6E2A2070617273696E67496E666F726D6174696F6E2C204F6E53756241636B496E7465726E616C43616C6C6261636B2063616C6C6261636B293B0D0A20207E53756241636B5061636B657428293B0D0A0D0A2020766F69642070617273655661726961626C6548656164657228636861722A20646174612C2073697A655F74206C656E2C2073697A655F742A2063757272656E7442797465506F736974696F6E293B0D0A2020766F69642070617273655061796C6F616428636861722A20646174612C2073697A655F74206C656E2C2073697A655F742A2063757272656E7442797465506F736974696F6E293B0D0A0D0A20707269766174653A0D0A202050617273696E67496E666F726D6174696F6E2A205F70617273696E67496E666F726D6174696F6E3B0D0A20204F6E53756241636B496E7465726E616C43616C6C6261636B205F63616C6C6261636B3B0D0A0D0A202075696E74385F74205F62797465506F736974696F6E3B0D0A202063686172205F7061636B657449644D73623B0D0A202075696E7431365F74205F7061636B657449643B0D0A7D3B0D0A7D20202F2F206E616D657370616365204173796E634D717474436C69656E74496E7465726E616C730D0A .hpp UnsubAckPacket 23696E636C7564652022556E73756241636B5061636B65742E687070220D0A0D0A7573696E67204173796E634D717474436C69656E74496E7465726E616C733A3A556E73756241636B5061636B65743B0D0A0D0A556E73756241636B5061636B65743A3A556E73756241636B5061636B65742850617273696E67496E666F726D6174696F6E2A2070617273696E67496E666F726D6174696F6E2C204F6E556E73756241636B496E7465726E616C43616C6C6261636B2063616C6C6261636B290D0A3A205F70617273696E67496E666F726D6174696F6E2870617273696E67496E666F726D6174696F6E290D0A2C205F63616C6C6261636B2863616C6C6261636B290D0A2C205F62797465506F736974696F6E2830290D0A2C205F7061636B657449644D73622830290D0A2C205F7061636B65744964283029207B0D0A7D0D0A0D0A556E73756241636B5061636B65743A3A7E556E73756241636B5061636B65742829207B0D0A7D0D0A0D0A766F696420556E73756241636B5061636B65743A3A70617273655661726961626C6548656164657228636861722A20646174612C2073697A655F74206C656E2C2073697A655F742A2063757272656E7442797465506F736974696F6E29207B0D0A2020636861722063757272656E7442797465203D20646174615B282A63757272656E7442797465506F736974696F6E292B2B5D3B0D0A2020696620285F62797465506F736974696F6E2B2B203D3D203029207B0D0A202020205F7061636B657449644D7362203D2063757272656E74427974653B0D0A20207D20656C7365207B0D0A202020205F7061636B65744964203D2063757272656E7442797465207C205F7061636B657449644D7362203C3C20383B0D0A202020205F70617273696E67496E666F726D6174696F6E2D3E6275666665725374617465203D2042756666657253746174653A3A4E4F4E453B0D0A202020205F63616C6C6261636B285F7061636B65744964293B0D0A20207D0D0A7D0D0A0D0A766F696420556E73756241636B5061636B65743A3A70617273655061796C6F616428636861722A20646174612C2073697A655F74206C656E2C2073697A655F742A2063757272656E7442797465506F736974696F6E29207B0D0A202028766F696429646174613B0D0A202028766F69642963757272656E7442797465506F736974696F6E3B0D0A7D0D0A .cpp UnsubAckPacket 23707261676D61206F6E63650D0A0D0A23696E636C756465202241726475696E6F2E68220D0A23696E636C75646520225061636B65742E687070220D0A23696E636C75646520222E2E2F50617273696E67496E666F726D6174696F6E2E687070220D0A23696E636C75646520222E2E2F43616C6C6261636B732E687070220D0A0D0A6E616D657370616365204173796E634D717474436C69656E74496E7465726E616C73207B0D0A636C61737320556E73756241636B5061636B6574203A207075626C6963205061636B6574207B0D0A207075626C69633A0D0A20206578706C6963697420556E73756241636B5061636B65742850617273696E67496E666F726D6174696F6E2A2070617273696E67496E666F726D6174696F6E2C204F6E556E73756241636B496E7465726E616C43616C6C6261636B2063616C6C6261636B293B0D0A20207E556E73756241636B5061636B657428293B0D0A0D0A2020766F69642070617273655661726961626C6548656164657228636861722A20646174612C2073697A655F74206C656E2C2073697A655F742A2063757272656E7442797465506F736974696F6E293B0D0A2020766F69642070617273655061796C6F616428636861722A20646174612C2073697A655F74206C656E2C2073697A655F742A2063757272656E7442797465506F736974696F6E293B0D0A0D0A20707269766174653A0D0A202050617273696E67496E666F726D6174696F6E2A205F70617273696E67496E666F726D6174696F6E3B0D0A20204F6E556E73756241636B496E7465726E616C43616C6C6261636B205F63616C6C6261636B3B0D0A0D0A202075696E74385F74205F62797465506F736974696F6E3B0D0A202063686172205F7061636B657449644D73623B0D0A202075696E7431365F74205F7061636B657449643B0D0A7D3B0D0A7D20202F2F206E616D657370616365204173796E634D717474436C69656E74496E7465726E616C730D0A .hpp ParsingInformation 23707261676D61206F6E63650D0A0D0A6E616D657370616365204173796E634D717474436C69656E74496E7465726E616C73207B0D0A656E756D20636C617373204275666665725374617465203A2075696E74385F74207B0D0A20204E4F4E45203D20302C0D0A202052454D41494E494E475F4C454E475448203D20322C0D0A20205641524941424C455F484541444552203D20332C0D0A20205041594C4F4144203D20340D0A7D3B0D0A0D0A7374727563742050617273696E67496E666F726D6174696F6E207B0D0A202042756666657253746174652062756666657253746174653B0D0A0D0A202075696E7431365F74206D6178546F7069634C656E6774683B0D0A2020636861722A20746F7069634275666665723B0D0A0D0A202075696E74385F74207061636B6574547970653B0D0A202075696E7431365F74207061636B6574466C6167733B0D0A202075696E7433325F742072656D61696E696E674C656E6774683B0D0A7D3B0D0A7D20202F2F206E616D657370616365204173796E634D717474436C69656E74496E7465726E616C730D0A .hpp Storage 23707261676D61206F6E63650A0A6E616D657370616365204173796E634D717474436C69656E74496E7465726E616C73207B0A7374727563742050656E64696E6750756252656C207B0A202075696E7431365F74207061636B657449643B0A7D3B0A0A7374727563742050656E64696E6741636B207B0A202075696E74385F74207061636B6574547970653B0A202075696E74385F7420686561646572466C61673B0A202075696E7431365F74207061636B657449643B0A7D3B0A7D20202F2F206E616D657370616365204173796E634D717474436C69656E74496E7465726E616C730A .hpp AsyncMqttClient 23696E636C75646520224173796E634D717474436C69656E742E687070220A0A4173796E634D717474436C69656E743A3A4173796E634D717474436C69656E7428290A3A205F636F6E6E65637465642866616C7365290A2C205F636F6E6E6563745061636B65744E6F74456E6F75676853706163652866616C7365290A2C205F646973636F6E6E6563744F6E506F6C6C2866616C7365290A2C205F746C7342616446696E6765727072696E742866616C7365290A2C205F6C617374436C69656E7441637469766974792830290A2C205F6C61737453657276657241637469766974792830290A2C205F6C61737450696E675265717565737454696D652830290A2C205F686F7374286E756C6C707472290A2C205F75736549702866616C7365290A236966204153594E435F5443505F53534C5F454E41424C45440A2C205F7365637572652866616C7365290A23656E6469660A2C205F706F72742830290A2C205F6B656570416C697665283135290A2C205F636C65616E53657373696F6E2874727565290A2C205F636C69656E744964286E756C6C707472290A2C205F757365726E616D65286E756C6C707472290A2C205F70617373776F7264286E756C6C707472290A2C205F77696C6C546F706963286E756C6C707472290A2C205F77696C6C5061796C6F6164286E756C6C707472290A2C205F77696C6C5061796C6F61644C656E6774682830290A2C205F77696C6C516F732830290A2C205F77696C6C52657461696E2866616C7365290A2C205F70617273696E67496E666F726D6174696F6E207B202E6275666665725374617465203D204173796E634D717474436C69656E74496E7465726E616C733A3A42756666657253746174653A3A4E4F4E45207D0A2C205F63757272656E745061727365645061636B6574286E756C6C707472290A2C205F72656D61696E696E674C656E677468427566666572506F736974696F6E2830290A2C205F6E6578745061636B65744964283129207B0A20205F636C69656E742E6F6E436F6E6E656374285B5D28766F69642A206F626A2C204173796E63436C69656E742A206329207B20287374617469635F636173743C4173796E634D717474436C69656E742A3E286F626A29292D3E5F6F6E436F6E6E6563742863293B207D2C2074686973293B0A20205F636C69656E742E6F6E446973636F6E6E656374285B5D28766F69642A206F626A2C204173796E63436C69656E742A206329207B20287374617469635F636173743C4173796E634D717474436C69656E742A3E286F626A29292D3E5F6F6E446973636F6E6E6563742863293B207D2C2074686973293B0A20205F636C69656E742E6F6E4572726F72285B5D28766F69642A206F626A2C204173796E63436C69656E742A20632C20696E74385F74206572726F7229207B20287374617469635F636173743C4173796E634D717474436C69656E742A3E286F626A29292D3E5F6F6E4572726F7228632C206572726F72293B207D2C2074686973293B0A20205F636C69656E742E6F6E54696D656F7574285B5D28766F69642A206F626A2C204173796E63436C69656E742A20632C2075696E7433325F742074696D6529207B20287374617469635F636173743C4173796E634D717474436C69656E742A3E286F626A29292D3E5F6F6E54696D656F757428632C2074696D65293B207D2C2074686973293B0A20205F636C69656E742E6F6E41636B285B5D28766F69642A206F626A2C204173796E63436C69656E742A20632C2073697A655F74206C656E2C2075696E7433325F742074696D6529207B20287374617469635F636173743C4173796E634D717474436C69656E742A3E286F626A29292D3E5F6F6E41636B28632C206C656E2C2074696D65293B207D2C2074686973293B0A20205F636C69656E742E6F6E44617461285B5D28766F69642A206F626A2C204173796E63436C69656E742A20632C20766F69642A20646174612C2073697A655F74206C656E29207B20287374617469635F636173743C4173796E634D717474436C69656E742A3E286F626A29292D3E5F6F6E4461746128632C207374617469635F636173743C636861722A3E2864617461292C206C656E293B207D2C2074686973293B0A20205F636C69656E742E6F6E506F6C6C285B5D28766F69642A206F626A2C204173796E63436C69656E742A206329207B20287374617469635F636173743C4173796E634D717474436C69656E742A3E286F626A29292D3E5F6F6E506F6C6C2863293B207D2C2074686973293B0A0A2369666465662045535033320A2020737072696E7466285F67656E657261746564436C69656E7449642C202265737033322D2530366C6C78222C204553502E67657445667573654D61632829293B0A20205F7853656D6170686F7265203D207853656D6170686F72654372656174654D7574657828293B0A23656C696620646566696E65642845535038323636290A2020737072696E7466285F67656E657261746564436C69656E7449642C2022657370383236362D25303678222C204553502E6765744368697049642829293B0A23656E6469660A20205F636C69656E744964203D205F67656E657261746564436C69656E7449643B0A0A20207365744D6178546F7069634C656E67746828313238293B0A7D0A0A4173796E634D717474436C69656E743A3A7E4173796E634D717474436C69656E742829207B0A202064656C657465205F63757272656E745061727365645061636B65743B0A202064656C6574655B5D205F70617273696E67496E666F726D6174696F6E2E746F7069634275666665723B0A2369666465662045535033320A20207653656D6170686F726544656C657465285F7853656D6170686F7265293B0A23656E6469660A7D0A0A4173796E634D717474436C69656E7426204173796E634D717474436C69656E743A3A7365744B656570416C6976652875696E7431365F74206B656570416C69766529207B0A20205F6B656570416C697665203D206B656570416C6976653B0A202072657475726E202A746869733B0A7D0A0A4173796E634D717474436C69656E7426204173796E634D717474436C69656E743A3A736574436C69656E74496428636F6E737420636861722A20636C69656E74496429207B0A20205F636C69656E744964203D20636C69656E7449643B0A202072657475726E202A746869733B0A7D0A0A4173796E634D717474436C69656E7426204173796E634D717474436C69656E743A3A736574436C65616E53657373696F6E28626F6F6C20636C65616E53657373696F6E29207B0A20205F636C65616E53657373696F6E203D20636C65616E53657373696F6E3B0A202072657475726E202A746869733B0A7D0A0A4173796E634D717474436C69656E7426204173796E634D717474436C69656E743A3A7365744D6178546F7069634C656E6774682875696E7431365F74206D6178546F7069634C656E67746829207B0A20205F70617273696E67496E666F726D6174696F6E2E6D6178546F7069634C656E677468203D206D6178546F7069634C656E6774683B0A202064656C6574655B5D205F70617273696E67496E666F726D6174696F6E2E746F7069634275666665723B0A20205F70617273696E67496E666F726D6174696F6E2E746F706963427566666572203D206E657720636861725B6D6178546F7069634C656E677468202B20315D3B0A202072657475726E202A746869733B0A7D0A0A4173796E634D717474436C69656E7426204173796E634D717474436C69656E743A3A73657443726564656E7469616C7328636F6E737420636861722A20757365726E616D652C20636F6E737420636861722A2070617373776F726429207B0A20205F757365726E616D65203D20757365726E616D653B0A20205F70617373776F7264203D2070617373776F72643B0A202072657475726E202A746869733B0A7D0A0A4173796E634D717474436C69656E7426204173796E634D717474436C69656E743A3A73657457696C6C28636F6E737420636861722A20746F7069632C2075696E74385F7420716F732C20626F6F6C2072657461696E2C20636F6E737420636861722A207061796C6F61642C2073697A655F74206C656E67746829207B0A20205F77696C6C546F706963203D20746F7069633B0A20205F77696C6C516F73203D20716F733B0A20205F77696C6C52657461696E203D2072657461696E3B0A20205F77696C6C5061796C6F6164203D207061796C6F61643B0A20205F77696C6C5061796C6F61644C656E677468203D206C656E6774683B0A202072657475726E202A746869733B0A7D0A0A4173796E634D717474436C69656E7426204173796E634D717474436C69656E743A3A736574536572766572284950416464726573732069702C2075696E7431365F7420706F727429207B0A20205F7573654970203D20747275653B0A20205F6970203D2069703B0A20205F706F7274203D20706F72743B0A202072657475726E202A746869733B0A7D0A0A4173796E634D717474436C69656E7426204173796E634D717474436C69656E743A3A73657453657276657228636F6E737420636861722A20686F73742C2075696E7431365F7420706F727429207B0A20205F7573654970203D2066616C73653B0A20205F686F7374203D20686F73743B0A20205F706F7274203D20706F72743B0A202072657475726E202A746869733B0A7D0A0A236966204153594E435F5443505F53534C5F454E41424C45440A4173796E634D717474436C69656E7426204173796E634D717474436C69656E743A3A73657453656375726528626F6F6C2073656375726529207B0A20205F736563757265203D207365637572653B0A202072657475726E202A746869733B0A7D0A0A4173796E634D717474436C69656E7426204173796E634D717474436C69656E743A3A61646453657276657246696E6765727072696E7428636F6E73742075696E74385F742A2066696E6765727072696E7429207B0A20207374643A3A61727261793C75696E74385F742C20534841315F53495A453E206E657746696E6765727072696E743B0A20206D656D637079286E657746696E6765727072696E742E6461746128292C2066696E6765727072696E742C20534841315F53495A45293B0A20205F73656375726553657276657246696E6765727072696E74732E707573685F6261636B286E657746696E6765727072696E74293B0A202072657475726E202A746869733B0A7D0A23656E6469660A0A4173796E634D717474436C69656E7426204173796E634D717474436C69656E743A3A6F6E436F6E6E656374284173796E634D717474436C69656E74496E7465726E616C733A3A4F6E436F6E6E6563745573657243616C6C6261636B2063616C6C6261636B29207B0A20205F6F6E436F6E6E6563745573657243616C6C6261636B732E707573685F6261636B2863616C6C6261636B293B0A202072657475726E202A746869733B0A7D0A0A4173796E634D717474436C69656E7426204173796E634D717474436C69656E743A3A6F6E446973636F6E6E656374284173796E634D717474436C69656E74496E7465726E616C733A3A4F6E446973636F6E6E6563745573657243616C6C6261636B2063616C6C6261636B29207B0A20205F6F6E446973636F6E6E6563745573657243616C6C6261636B732E707573685F6261636B2863616C6C6261636B293B0A202072657475726E202A746869733B0A7D0A0A4173796E634D717474436C69656E7426204173796E634D717474436C69656E743A3A6F6E537562736372696265284173796E634D717474436C69656E74496E7465726E616C733A3A4F6E5375627363726962655573657243616C6C6261636B2063616C6C6261636B29207B0A20205F6F6E5375627363726962655573657243616C6C6261636B732E707573685F6261636B2863616C6C6261636B293B0A202072657475726E202A746869733B0A7D0A0A4173796E634D717474436C69656E7426204173796E634D717474436C69656E743A3A6F6E556E737562736372696265284173796E634D717474436C69656E74496E7465726E616C733A3A4F6E556E7375627363726962655573657243616C6C6261636B2063616C6C6261636B29207B0A20205F6F6E556E7375627363726962655573657243616C6C6261636B732E707573685F6261636B2863616C6C6261636B293B0A202072657475726E202A746869733B0A7D0A0A4173796E634D717474436C69656E7426204173796E634D717474436C69656E743A3A6F6E4D657373616765284173796E634D717474436C69656E74496E7465726E616C733A3A4F6E4D6573736167655573657243616C6C6261636B2063616C6C6261636B29207B0A20205F6F6E4D6573736167655573657243616C6C6261636B732E707573685F6261636B2863616C6C6261636B293B0A202072657475726E202A746869733B0A7D0A0A4173796E634D717474436C69656E7426204173796E634D717474436C69656E743A3A6F6E5075626C697368284173796E634D717474436C69656E74496E7465726E616C733A3A4F6E5075626C6973685573657243616C6C6261636B2063616C6C6261636B29207B0A20205F6F6E5075626C6973685573657243616C6C6261636B732E707573685F6261636B2863616C6C6261636B293B0A202072657475726E202A746869733B0A7D0A0A766F6964204173796E634D717474436C69656E743A3A5F6672656543757272656E745061727365645061636B65742829207B0A202064656C657465205F63757272656E745061727365645061636B65743B0A20205F63757272656E745061727365645061636B6574203D206E756C6C7074723B0A7D0A0A766F6964204173796E634D717474436C69656E743A3A5F636C6561722829207B0A20205F6C61737450696E675265717565737454696D65203D20303B0A20205F636F6E6E6563746564203D2066616C73653B0A20205F646973636F6E6E6563744F6E506F6C6C203D2066616C73653B0A20205F636F6E6E6563745061636B65744E6F74456E6F7567685370616365203D2066616C73653B0A20205F746C7342616446696E6765727072696E74203D2066616C73653B0A20205F6672656543757272656E745061727365645061636B657428293B0A0A20205F70656E64696E6750756252656C732E636C65617228293B0A20205F70656E64696E6750756252656C732E736872696E6B5F746F5F66697428293B0A0A20205F746F53656E6441636B732E636C65617228293B0A20205F746F53656E6441636B732E736872696E6B5F746F5F66697428293B0A0A20205F6E6578745061636B65744964203D20313B0A20205F70617273696E67496E666F726D6174696F6E2E6275666665725374617465203D204173796E634D717474436C69656E74496E7465726E616C733A3A42756666657253746174653A3A4E4F4E453B0A7D0A0A2F2A20544350202A2F0A766F6964204173796E634D717474436C69656E743A3A5F6F6E436F6E6E656374284173796E63436C69656E742A20636C69656E7429207B0A202028766F696429636C69656E743B0A0A236966204153594E435F5443505F53534C5F454E41424C45440A2020696620285F736563757265202626205F73656375726553657276657246696E6765727072696E74732E73697A652829203E203029207B0A2020202053534C2A20636C69656E7453736C203D205F636C69656E742E67657453534C28293B0A0A20202020626F6F6C2073736C466F756E6446696E6765727072696E74203D2066616C73653B0A20202020666F7220287374643A3A61727261793C75696E74385F742C20534841315F53495A453E2066696E6765727072696E74203A205F73656375726553657276657246696E6765727072696E747329207B0A2020202020206966202873736C5F6D617463685F66696E6765727072696E7428636C69656E7453736C2C2066696E6765727072696E742E64617461282929203D3D2053534C5F4F4B29207B0A202020202020202073736C466F756E6446696E6765727072696E74203D20747275653B0A2020202020202020627265616B3B0A2020202020207D0A202020207D0A0A20202020696620282173736C466F756E6446696E6765727072696E7429207B0A2020202020205F746C7342616446696E6765727072696E74203D20747275653B0A2020202020205F636C69656E742E636C6F73652874727565293B0A20202020202072657475726E3B0A202020207D0A20207D0A23656E6469660A0A2020636861722066697865644865616465725B355D3B0A202066697865644865616465725B305D203D204173796E634D717474436C69656E74496E7465726E616C733A3A5061636B6574547970652E434F4E4E4543543B0A202066697865644865616465725B305D203D2066697865644865616465725B305D203C3C20343B0A202066697865644865616465725B305D203D2066697865644865616465725B305D207C204173796E634D717474436C69656E74496E7465726E616C733A3A486561646572466C61672E434F4E4E4543545F52455345525645443B0A0A202075696E7431365F742070726F746F636F6C4E616D654C656E677468203D20343B0A2020636861722070726F746F636F6C4E616D654C656E67746842797465735B325D3B0A202070726F746F636F6C4E616D654C656E67746842797465735B305D203D2070726F746F636F6C4E616D654C656E677468203E3E20383B0A202070726F746F636F6C4E616D654C656E67746842797465735B315D203D2070726F746F636F6C4E616D654C656E677468202620307846463B0A0A2020636861722070726F746F636F6C4C6576656C5B315D3B0A202070726F746F636F6C4C6576656C5B305D203D20307830343B0A0A20206368617220636F6E6E656374466C6167735B315D3B0A2020636F6E6E656374466C6167735B305D203D20303B0A2020696620285F636C65616E53657373696F6E2920636F6E6E656374466C6167735B305D207C3D204173796E634D717474436C69656E74496E7465726E616C733A3A436F6E6E656374466C61672E434C45414E5F53455353494F4E3B0A2020696620285F757365726E616D6520213D206E756C6C7074722920636F6E6E656374466C6167735B305D207C3D204173796E634D717474436C69656E74496E7465726E616C733A3A436F6E6E656374466C61672E555345524E414D453B0A2020696620285F70617373776F726420213D206E756C6C7074722920636F6E6E656374466C6167735B305D207C3D204173796E634D717474436C69656E74496E7465726E616C733A3A436F6E6E656374466C61672E50415353574F52443B0A2020696620285F77696C6C546F70696320213D206E756C6C70747229207B0A20202020636F6E6E656374466C6167735B305D207C3D204173796E634D717474436C69656E74496E7465726E616C733A3A436F6E6E656374466C61672E57494C4C3B0A20202020696620285F77696C6C52657461696E2920636F6E6E656374466C6167735B305D207C3D204173796E634D717474436C69656E74496E7465726E616C733A3A436F6E6E656374466C61672E57494C4C5F52455441494E3B0A2020202073776974636820285F77696C6C516F7329207B0A2020202020206361736520303A0A2020202020202020636F6E6E656374466C6167735B305D207C3D204173796E634D717474436C69656E74496E7465726E616C733A3A436F6E6E656374466C61672E57494C4C5F514F53303B0A2020202020202020627265616B3B0A2020202020206361736520313A0A2020202020202020636F6E6E656374466C6167735B305D207C3D204173796E634D717474436C69656E74496E7465726E616C733A3A436F6E6E656374466C61672E57494C4C5F514F53313B0A2020202020202020627265616B3B0A2020202020206361736520323A0A2020202020202020636F6E6E656374466C6167735B305D207C3D204173796E634D717474436C69656E74496E7465726E616C733A3A436F6E6E656374466C61672E57494C4C5F514F53323B0A2020202020202020627265616B3B0A202020207D0A20207D0A0A202063686172206B656570416C69766542797465735B325D3B0A20206B656570416C69766542797465735B305D203D205F6B656570416C697665203E3E20383B0A20206B656570416C69766542797465735B315D203D205F6B656570416C697665202620307846463B0A0A202075696E7431365F7420636C69656E7449644C656E677468203D207374726C656E285F636C69656E744964293B0A20206368617220636C69656E7449644C656E67746842797465735B325D3B0A2020636C69656E7449644C656E67746842797465735B305D203D20636C69656E7449644C656E677468203E3E20383B0A2020636C69656E7449644C656E67746842797465735B315D203D20636C69656E7449644C656E677468202620307846463B0A0A20202F2F204F7074696F6E616C206669656C64730A202075696E7431365F742077696C6C546F7069634C656E677468203D20303B0A2020636861722077696C6C546F7069634C656E67746842797465735B325D3B0A202075696E7431365F742077696C6C5061796C6F61644C656E677468203D205F77696C6C5061796C6F61644C656E6774683B0A2020636861722077696C6C5061796C6F61644C656E67746842797465735B325D3B0A2020696620285F77696C6C546F70696320213D206E756C6C70747229207B0A2020202077696C6C546F7069634C656E677468203D207374726C656E285F77696C6C546F706963293B0A2020202077696C6C546F7069634C656E67746842797465735B305D203D2077696C6C546F7069634C656E677468203E3E20383B0A2020202077696C6C546F7069634C656E67746842797465735B315D203D2077696C6C546F7069634C656E677468202620307846463B0A0A20202020696620285F77696C6C5061796C6F616420213D206E756C6C7074722026262077696C6C5061796C6F61644C656E677468203D3D2030292077696C6C5061796C6F61644C656E677468203D207374726C656E285F77696C6C5061796C6F6164293B0A0A2020202077696C6C5061796C6F61644C656E67746842797465735B305D203D2077696C6C5061796C6F61644C656E677468203E3E20383B0A2020202077696C6C5061796C6F61644C656E67746842797465735B315D203D2077696C6C5061796C6F61644C656E677468202620307846463B0A20207D0A0A202075696E7431365F7420757365726E616D654C656E677468203D20303B0A20206368617220757365726E616D654C656E67746842797465735B325D3B0A2020696620285F757365726E616D6520213D206E756C6C70747229207B0A20202020757365726E616D654C656E677468203D207374726C656E285F757365726E616D65293B0A20202020757365726E616D654C656E67746842797465735B305D203D20757365726E616D654C656E677468203E3E20383B0A20202020757365726E616D654C656E67746842797465735B315D203D20757365726E616D654C656E677468202620307846463B0A20207D0A0A202075696E7431365F742070617373776F72644C656E677468203D20303B0A2020636861722070617373776F72644C656E67746842797465735B325D3B0A2020696620285F70617373776F726420213D206E756C6C70747229207B0A2020202070617373776F72644C656E677468203D207374726C656E285F70617373776F7264293B0A2020202070617373776F72644C656E67746842797465735B305D203D2070617373776F72644C656E677468203E3E20383B0A2020202070617373776F72644C656E67746842797465735B315D203D2070617373776F72644C656E677468202620307846463B0A20207D0A0A202075696E7433325F742072656D61696E696E674C656E677468203D2032202B2070726F746F636F6C4E616D654C656E677468202B2031202B2031202B2032202B2032202B20636C69656E7449644C656E6774683B20202F2F20616C776179732070726573656E740A2020696620285F77696C6C546F70696320213D206E756C6C707472292072656D61696E696E674C656E677468202B3D2032202B2077696C6C546F7069634C656E677468202B2032202B2077696C6C5061796C6F61644C656E6774683B0A2020696620285F757365726E616D6520213D206E756C6C707472292072656D61696E696E674C656E677468202B3D2032202B20757365726E616D654C656E6774683B0A2020696620285F70617373776F726420213D206E756C6C707472292072656D61696E696E674C656E677468202B3D2032202B2070617373776F72644C656E6774683B0A202075696E74385F742072656D61696E696E674C656E6774684C656E677468203D204173796E634D717474436C69656E74496E7465726E616C733A3A48656C706572733A3A656E636F646552656D61696E696E674C656E6774682872656D61696E696E674C656E6774682C206669786564486561646572202B2031293B0A0A202075696E7433325F74206E65656465645370616365203D2031202B2072656D61696E696E674C656E6774684C656E6774683B0A20206E65656465645370616365202B3D20323B0A20206E65656465645370616365202B3D2070726F746F636F6C4E616D654C656E6774683B0A20206E65656465645370616365202B3D20313B0A20206E65656465645370616365202B3D20313B0A20206E65656465645370616365202B3D20323B0A20206E65656465645370616365202B3D20323B0A20206E65656465645370616365202B3D20636C69656E7449644C656E6774683B0A2020696620285F77696C6C546F70696320213D206E756C6C70747229207B0A202020206E65656465645370616365202B3D20323B0A202020206E65656465645370616365202B3D2077696C6C546F7069634C656E6774683B0A0A202020206E65656465645370616365202B3D20323B0A20202020696620285F77696C6C5061796C6F616420213D206E756C6C70747229206E65656465645370616365202B3D2077696C6C5061796C6F61644C656E6774683B0A20207D0A2020696620285F757365726E616D6520213D206E756C6C70747229207B0A202020206E65656465645370616365202B3D20323B0A202020206E65656465645370616365202B3D20757365726E616D654C656E6774683B0A20207D0A2020696620285F70617373776F726420213D206E756C6C70747229207B0A202020206E65656465645370616365202B3D20323B0A202020206E65656465645370616365202B3D2070617373776F72644C656E6774683B0A20207D0A0A202053454D4150484F52455F54414B4528293B0A2020696620285F636C69656E742E73706163652829203C206E6565646564537061636529207B0A202020205F636F6E6E6563745061636B65744E6F74456E6F7567685370616365203D20747275653B0A202020205F636C69656E742E636C6F73652874727565293B0A2020202053454D4150484F52455F4749564528293B0A2020202072657475726E3B0A20207D0A0A20205F636C69656E742E6164642866697865644865616465722C2031202B2072656D61696E696E674C656E6774684C656E677468293B0A0A20202F2F205573696E6720612073656E6462756666657220746F20666978206275672073657477696C6C206F6E2053534C206E6F7420776F726B696E670A2020636861722073656E646275666665725B31325D3B0A202073656E646275666665725B305D203D2070726F746F636F6C4E616D654C656E67746842797465735B305D3B0A202073656E646275666665725B315D203D2070726F746F636F6C4E616D654C656E67746842797465735B315D3B0A0A202073656E646275666665725B325D203D20274D273B0A202073656E646275666665725B335D203D202751273B0A202073656E646275666665725B345D203D202754273B0A202073656E646275666665725B355D203D202754273B0A20200A202073656E646275666665725B365D203D2070726F746F636F6C4C6576656C5B305D3B0A202073656E646275666665725B375D203D20636F6E6E656374466C6167735B305D3B0A202073656E646275666665725B385D203D206B656570416C69766542797465735B305D3B0A202073656E646275666665725B395D203D206B656570416C69766542797465735B315D3B0A202073656E646275666665725B31305D203D20636C69656E7449644C656E67746842797465735B305D3B0A202073656E646275666665725B31315D203D20636C69656E7449644C656E67746842797465735B315D3B0A0A20205F636C69656E742E6164642873656E646275666665722C203132293B0A0A20205F636C69656E742E616464285F636C69656E7449642C20636C69656E7449644C656E677468293B0A2020696620285F77696C6C546F70696320213D206E756C6C70747229207B0A202020205F636C69656E742E6164642877696C6C546F7069634C656E67746842797465732C2032293B0A202020205F636C69656E742E616464285F77696C6C546F7069632C2077696C6C546F7069634C656E677468293B0A0A202020205F636C69656E742E6164642877696C6C5061796C6F61644C656E67746842797465732C2032293B0A20202020696620285F77696C6C5061796C6F616420213D206E756C6C70747229205F636C69656E742E616464285F77696C6C5061796C6F61642C2077696C6C5061796C6F61644C656E677468293B0A20207D0A2020696620285F757365726E616D6520213D206E756C6C70747229207B0A202020205F636C69656E742E61646428757365726E616D654C656E67746842797465732C2032293B0A202020205F636C69656E742E616464285F757365726E616D652C20757365726E616D654C656E677468293B0A20207D0A2020696620285F70617373776F726420213D206E756C6C70747229207B0A202020205F636C69656E742E6164642870617373776F72644C656E67746842797465732C2032293B0A202020205F636C69656E742E616464285F70617373776F72642C2070617373776F72644C656E677468293B0A20207D0A20205F636C69656E742E73656E6428293B0A20205F6C617374436C69656E744163746976697479203D206D696C6C697328293B0A202053454D4150484F52455F4749564528293B0A7D0A0A766F6964204173796E634D717474436C69656E743A3A5F6F6E446973636F6E6E656374284173796E63436C69656E742A20636C69656E7429207B0A202028766F696429636C69656E743B0A20204173796E634D717474436C69656E74446973636F6E6E656374526561736F6E20726561736F6E3B0A0A2020696620285F636F6E6E6563745061636B65744E6F74456E6F756768537061636529207B0A20202020726561736F6E203D204173796E634D717474436C69656E74446973636F6E6E656374526561736F6E3A3A455350383236365F4E4F545F454E4F5547485F53504143453B0A20207D20656C736520696620285F746C7342616446696E6765727072696E7429207B0A20202020726561736F6E203D204173796E634D717474436C69656E74446973636F6E6E656374526561736F6E3A3A544C535F4241445F46494E4745525052494E543B0A20207D20656C7365207B0A20202020726561736F6E203D204173796E634D717474436C69656E74446973636F6E6E656374526561736F6E3A3A5443505F444953434F4E4E45435445443B0A20207D0A0A20205F636C65617228293B0A0A2020666F7220286175746F2063616C6C6261636B203A205F6F6E446973636F6E6E6563745573657243616C6C6261636B73292063616C6C6261636B28726561736F6E293B0A7D0A0A766F6964204173796E634D717474436C69656E743A3A5F6F6E4572726F72284173796E63436C69656E742A20636C69656E742C20696E74385F74206572726F7229207B0A202028766F696429636C69656E743B0A202028766F6964296572726F723B0A20202F2F205F6F6E446973636F6E6E6563742063616C6C656420616E797761790A7D0A0A766F6964204173796E634D717474436C69656E743A3A5F6F6E54696D656F7574284173796E63436C69656E742A20636C69656E742C2075696E7433325F742074696D6529207B0A202028766F696429636C69656E743B0A202028766F69642974696D653B0A20202F2F20646973636F6E6E656374696F6E2077696C6C2062652068616E646C65642062792070696E672F706F6E67206D616E6167656D656E740A7D0A0A766F6964204173796E634D717474436C69656E743A3A5F6F6E41636B284173796E63436C69656E742A20636C69656E742C2073697A655F74206C656E2C2075696E7433325F742074696D6529207B0A202028766F696429636C69656E743B0A202028766F6964296C656E3B0A202028766F69642974696D653B0A7D0A0A766F6964204173796E634D717474436C69656E743A3A5F6F6E44617461284173796E63436C69656E742A20636C69656E742C20636861722A20646174612C2073697A655F74206C656E29207B0A202028766F696429636C69656E743B0A202073697A655F742063757272656E7442797465506F736974696F6E203D20303B0A2020636861722063757272656E74427974653B0A2020646F207B0A2020202073776974636820285F70617273696E67496E666F726D6174696F6E2E627566666572537461746529207B0A20202020202063617365204173796E634D717474436C69656E74496E7465726E616C733A3A42756666657253746174653A3A4E4F4E453A0A202020202020202063757272656E7442797465203D20646174615B63757272656E7442797465506F736974696F6E2B2B5D3B0A20202020202020205F70617273696E67496E666F726D6174696F6E2E7061636B657454797065203D2063757272656E7442797465203E3E20343B0A20202020202020205F70617273696E67496E666F726D6174696F6E2E7061636B6574466C616773203D202863757272656E7442797465203C3C203429203E3E20343B0A20202020202020205F70617273696E67496E666F726D6174696F6E2E6275666665725374617465203D204173796E634D717474436C69656E74496E7465726E616C733A3A42756666657253746174653A3A52454D41494E494E475F4C454E4754483B0A20202020202020205F6C6173745365727665724163746976697479203D206D696C6C697328293B0A202020202020202073776974636820285F70617273696E67496E666F726D6174696F6E2E7061636B65745479706529207B0A2020202020202020202063617365204173796E634D717474436C69656E74496E7465726E616C733A3A5061636B6574547970652E434F4E4E41434B3A0A2020202020202020202020205F63757272656E745061727365645061636B6574203D206E6577204173796E634D717474436C69656E74496E7465726E616C733A3A436F6E6E41636B5061636B657428265F70617273696E67496E666F726D6174696F6E2C207374643A3A62696E6428264173796E634D717474436C69656E743A3A5F6F6E436F6E6E41636B2C20746869732C207374643A3A706C616365686F6C646572733A3A5F312C207374643A3A706C616365686F6C646572733A3A5F3229293B0A202020202020202020202020627265616B3B0A2020202020202020202063617365204173796E634D717474436C69656E74496E7465726E616C733A3A5061636B6574547970652E50494E47524553503A0A2020202020202020202020205F63757272656E745061727365645061636B6574203D206E6577204173796E634D717474436C69656E74496E7465726E616C733A3A50696E67526573705061636B657428265F70617273696E67496E666F726D6174696F6E2C207374643A3A62696E6428264173796E634D717474436C69656E743A3A5F6F6E50696E67526573702C207468697329293B0A202020202020202020202020627265616B3B0A2020202020202020202063617365204173796E634D717474436C69656E74496E7465726E616C733A3A5061636B6574547970652E53554241434B3A0A2020202020202020202020205F63757272656E745061727365645061636B6574203D206E6577204173796E634D717474436C69656E74496E7465726E616C733A3A53756241636B5061636B657428265F70617273696E67496E666F726D6174696F6E2C207374643A3A62696E6428264173796E634D717474436C69656E743A3A5F6F6E53756241636B2C20746869732C207374643A3A706C616365686F6C646572733A3A5F312C207374643A3A706C616365686F6C646572733A3A5F3229293B0A202020202020202020202020627265616B3B0A2020202020202020202063617365204173796E634D717474436C69656E74496E7465726E616C733A3A5061636B6574547970652E554E53554241434B3A0A2020202020202020202020205F63757272656E745061727365645061636B6574203D206E6577204173796E634D717474436C69656E74496E7465726E616C733A3A556E73756241636B5061636B657428265F70617273696E67496E666F726D6174696F6E2C207374643A3A62696E6428264173796E634D717474436C69656E743A3A5F6F6E556E73756241636B2C20746869732C207374643A3A706C616365686F6C646572733A3A5F3129293B0A202020202020202020202020627265616B3B0A2020202020202020202063617365204173796E634D717474436C69656E74496E7465726E616C733A3A5061636B6574547970652E5055424C4953483A0A2020202020202020202020205F63757272656E745061727365645061636B6574203D206E6577204173796E634D717474436C69656E74496E7465726E616C733A3A5075626C6973685061636B657428265F70617273696E67496E666F726D6174696F6E2C207374643A3A62696E6428264173796E634D717474436C69656E743A3A5F6F6E4D6573736167652C20746869732C207374643A3A706C616365686F6C646572733A3A5F312C207374643A3A706C616365686F6C646572733A3A5F322C207374643A3A706C616365686F6C646572733A3A5F332C207374643A3A706C616365686F6C646572733A3A5F342C207374643A3A706C616365686F6C646572733A3A5F352C207374643A3A706C616365686F6C646572733A3A5F362C207374643A3A706C616365686F6C646572733A3A5F372C207374643A3A706C616365686F6C646572733A3A5F382C207374643A3A706C616365686F6C646572733A3A5F39292C207374643A3A62696E6428264173796E634D717474436C69656E743A3A5F6F6E5075626C6973682C20746869732C207374643A3A706C616365686F6C646572733A3A5F312C207374643A3A706C616365686F6C646572733A3A5F3229293B0A202020202020202020202020627265616B3B0A2020202020202020202063617365204173796E634D717474436C69656E74496E7465726E616C733A3A5061636B6574547970652E50554252454C3A0A2020202020202020202020205F63757272656E745061727365645061636B6574203D206E6577204173796E634D717474436C69656E74496E7465726E616C733A3A50756252656C5061636B657428265F70617273696E67496E666F726D6174696F6E2C207374643A3A62696E6428264173796E634D717474436C69656E743A3A5F6F6E50756252656C2C20746869732C207374643A3A706C616365686F6C646572733A3A5F3129293B0A202020202020202020202020627265616B3B0A2020202020202020202063617365204173796E634D717474436C69656E74496E7465726E616C733A3A5061636B6574547970652E50554241434B3A0A2020202020202020202020205F63757272656E745061727365645061636B6574203D206E6577204173796E634D717474436C69656E74496E7465726E616C733A3A50756241636B5061636B657428265F70617273696E67496E666F726D6174696F6E2C207374643A3A62696E6428264173796E634D717474436C69656E743A3A5F6F6E50756241636B2C20746869732C207374643A3A706C616365686F6C646572733A3A5F3129293B0A202020202020202020202020627265616B3B0A2020202020202020202063617365204173796E634D717474436C69656E74496E7465726E616C733A3A5061636B6574547970652E5055425245433A0A2020202020202020202020205F63757272656E745061727365645061636B6574203D206E6577204173796E634D717474436C69656E74496E7465726E616C733A3A5075625265635061636B657428265F70617273696E67496E666F726D6174696F6E2C207374643A3A62696E6428264173796E634D717474436C69656E743A3A5F6F6E5075625265632C20746869732C207374643A3A706C616365686F6C646572733A3A5F3129293B0A202020202020202020202020627265616B3B0A2020202020202020202063617365204173796E634D717474436C69656E74496E7465726E616C733A3A5061636B6574547970652E505542434F4D503A0A2020202020202020202020205F63757272656E745061727365645061636B6574203D206E6577204173796E634D717474436C69656E74496E7465726E616C733A3A507562436F6D705061636B657428265F70617273696E67496E666F726D6174696F6E2C207374643A3A62696E6428264173796E634D717474436C69656E743A3A5F6F6E507562436F6D702C20746869732C207374643A3A706C616365686F6C646572733A3A5F3129293B0A202020202020202020202020627265616B3B0A2020202020202020202064656661756C743A0A202020202020202020202020627265616B3B0A20202020202020207D0A2020202020202020627265616B3B0A20202020202063617365204173796E634D717474436C69656E74496E7465726E616C733A3A42756666657253746174653A3A52454D41494E494E475F4C454E4754483A0A202020202020202063757272656E7442797465203D20646174615B63757272656E7442797465506F736974696F6E2B2B5D3B0A20202020202020205F72656D61696E696E674C656E6774684275666665725B5F72656D61696E696E674C656E677468427566666572506F736974696F6E2B2B5D203D2063757272656E74427974653B0A20202020202020206966202863757272656E7442797465203E3E2037203D3D203029207B0A202020202020202020205F70617273696E67496E666F726D6174696F6E2E72656D61696E696E674C656E677468203D204173796E634D717474436C69656E74496E7465726E616C733A3A48656C706572733A3A6465636F646552656D61696E696E674C656E677468285F72656D61696E696E674C656E677468427566666572293B0A202020202020202020205F72656D61696E696E674C656E677468427566666572506F736974696F6E203D20303B0A20202020202020202020696620285F70617273696E67496E666F726D6174696F6E2E72656D61696E696E674C656E677468203E203029207B0A2020202020202020202020205F70617273696E67496E666F726D6174696F6E2E6275666665725374617465203D204173796E634D717474436C69656E74496E7465726E616C733A3A42756666657253746174653A3A5641524941424C455F4845414445523B0A202020202020202020207D20656C7365207B0A2020202020202020202020202F2F2050494E47524553502069732061207370656369616C206361736520776865726520697420686173206E6F207661726961626C65206865616465722C20736F20746865207061636B657420656E647320726967687420686572650A2020202020202020202020205F70617273696E67496E666F726D6174696F6E2E6275666665725374617465203D204173796E634D717474436C69656E74496E7465726E616C733A3A42756666657253746174653A3A4E4F4E453B0A2020202020202020202020205F6F6E50696E675265737028293B0A202020202020202020207D0A20202020202020207D0A2020202020202020627265616B3B0A20202020202063617365204173796E634D717474436C69656E74496E7465726E616C733A3A42756666657253746174653A3A5641524941424C455F4845414445523A0A20202020202020205F63757272656E745061727365645061636B65742D3E70617273655661726961626C6548656164657228646174612C206C656E2C202663757272656E7442797465506F736974696F6E293B0A2020202020202020627265616B3B0A20202020202063617365204173796E634D717474436C69656E74496E7465726E616C733A3A42756666657253746174653A3A5041594C4F41443A0A20202020202020205F63757272656E745061727365645061636B65742D3E70617273655061796C6F616428646174612C206C656E2C202663757272656E7442797465506F736974696F6E293B0A2020202020202020627265616B3B0A20202020202064656661756C743A0A202020202020202063757272656E7442797465506F736974696F6E203D206C656E3B0A202020207D0A20207D207768696C65202863757272656E7442797465506F736974696F6E20213D206C656E293B0A7D0A0A766F6964204173796E634D717474436C69656E743A3A5F6F6E506F6C6C284173796E63436C69656E742A20636C69656E7429207B0A202069662028215F636F6E6E6563746564292072657475726E3B0A0A20202F2F20696620746865726520697320746F6F206D7563682074696D652074686520636C69656E74206861732073656E7420612070696E67207265717565737420776974686F7574206120726573706F6E73652C20646973636F6E6E65637420636C69656E7420746F2061766F69642068616C66206F70656E20636F6E6E656374696F6E730A2020696620285F6C61737450696E675265717565737454696D6520213D203020262620286D696C6C69732829202D205F6C61737450696E675265717565737454696D6529203E3D20285F6B656570416C697665202A2031303030202A20322929207B0A20202020646973636F6E6E65637428293B0A2020202072657475726E3B0A20202F2F2073656E642070696E6720746F20656E7375726520746865207365727665722077696C6C2072656365697665206174206C65617374206F6E65206D65737361676520696E73696465206B656570616C6976652077696E646F770A20207D20656C736520696620285F6C61737450696E675265717565737454696D65203D3D203020262620286D696C6C69732829202D205F6C617374436C69656E74416374697669747929203E3D20285F6B656570416C697665202A2031303030202A20302E372929207B0A202020205F73656E6450696E6728293B0A0A20202F2F2073656E642070696E6720746F207665726966792069662074686520736572766572206973207374696C6C2074686572652028656E737572652074686973206973206E6F7420612068616C6620636F6E6E656374696F6E290A20207D20656C736520696620285F636F6E6E6563746564202626205F6C61737450696E675265717565737454696D65203D3D203020262620286D696C6C69732829202D205F6C617374536572766572416374697669747929203E3D20285F6B656570416C697665202A2031303030202A20302E372929207B0A202020205F73656E6450696E6728293B0A20207D0A0A0A20202F2F2068616E646C6520746F2073656E642061636B207061636B6574730A0A20205F73656E6441636B7328293B0A0A20202F2F2068616E646C6520646973636F6E6E6563740A0A2020696620285F646973636F6E6E6563744F6E506F6C6C29207B0A202020205F73656E64446973636F6E6E65637428293B0A20207D0A7D0A0A2F2A204D515454202A2F0A766F6964204173796E634D717474436C69656E743A3A5F6F6E50696E67526573702829207B0A20205F6672656543757272656E745061727365645061636B657428293B0A20205F6C61737450696E675265717565737454696D65203D20303B0A7D0A0A766F6964204173796E634D717474436C69656E743A3A5F6F6E436F6E6E41636B28626F6F6C2073657373696F6E50726573656E742C2075696E74385F7420636F6E6E65637452657475726E436F646529207B0A202028766F69642973657373696F6E50726573656E743B0A20205F6672656543757272656E745061727365645061636B657428293B0A0A202069662028636F6E6E65637452657475726E436F6465203D3D203029207B0A202020205F636F6E6E6563746564203D20747275653B0A20202020666F7220286175746F2063616C6C6261636B203A205F6F6E436F6E6E6563745573657243616C6C6261636B73292063616C6C6261636B2873657373696F6E50726573656E74293B0A20207D20656C7365207B0A202020202F2F2043616C6C6261636B73206172652068616E646C656420627920746865206F6E646973636F6E6E6563742066756E6374696F6E2077686963682069732063616C6C65642066726F6D20746865204173796E63546370206C69620A20207D0A7D0A0A766F6964204173796E634D717474436C69656E743A3A5F6F6E53756241636B2875696E7431365F74207061636B657449642C20636861722073746174757329207B0A20205F6672656543757272656E745061727365645061636B657428293B0A0A2020666F7220286175746F2063616C6C6261636B203A205F6F6E5375627363726962655573657243616C6C6261636B73292063616C6C6261636B287061636B657449642C20737461747573293B0A7D0A0A766F6964204173796E634D717474436C69656E743A3A5F6F6E556E73756241636B2875696E7431365F74207061636B6574496429207B0A20205F6672656543757272656E745061727365645061636B657428293B0A0A2020666F7220286175746F2063616C6C6261636B203A205F6F6E556E7375627363726962655573657243616C6C6261636B73292063616C6C6261636B287061636B65744964293B0A7D0A0A766F6964204173796E634D717474436C69656E743A3A5F6F6E4D65737361676528636861722A20746F7069632C20636861722A207061796C6F61642C2075696E74385F7420716F732C20626F6F6C206475702C20626F6F6C2072657461696E2C2073697A655F74206C656E2C2073697A655F7420696E6465782C2073697A655F7420746F74616C2C2075696E7431365F74207061636B6574496429207B0A2020626F6F6C206E6F746966795075626C697368203D20747275653B0A0A202069662028716F73203D3D203229207B0A20202020666F7220284173796E634D717474436C69656E74496E7465726E616C733A3A50656E64696E6750756252656C2070656E64696E6750756252656C203A205F70656E64696E6750756252656C7329207B0A2020202020206966202870656E64696E6750756252656C2E7061636B65744964203D3D207061636B6574496429207B0A20202020202020206E6F746966795075626C697368203D2066616C73653B0A2020202020202020627265616B3B0A2020202020207D0A202020207D0A20207D0A0A2020696620286E6F746966795075626C69736829207B0A202020204173796E634D717474436C69656E744D65737361676550726F706572746965732070726F706572746965733B0A2020202070726F706572746965732E716F73203D20716F733B0A2020202070726F706572746965732E647570203D206475703B0A2020202070726F706572746965732E72657461696E203D2072657461696E3B0A0A20202020666F7220286175746F2063616C6C6261636B203A205F6F6E4D6573736167655573657243616C6C6261636B73292063616C6C6261636B28746F7069632C207061796C6F61642C2070726F706572746965732C206C656E2C20696E6465782C20746F74616C293B0A20207D0A7D0A0A766F6964204173796E634D717474436C69656E743A3A5F6F6E5075626C6973682875696E7431365F74207061636B657449642C2075696E74385F7420716F7329207B0A20204173796E634D717474436C69656E74496E7465726E616C733A3A50656E64696E6741636B2070656E64696E6741636B3B0A0A202069662028716F73203D3D203129207B0A2020202070656E64696E6741636B2E7061636B657454797065203D204173796E634D717474436C69656E74496E7465726E616C733A3A5061636B6574547970652E50554241434B3B0A2020202070656E64696E6741636B2E686561646572466C6167203D204173796E634D717474436C69656E74496E7465726E616C733A3A486561646572466C61672E50554241434B5F52455345525645443B0A2020202070656E64696E6741636B2E7061636B65744964203D207061636B657449643B0A202020205F746F53656E6441636B732E707573685F6261636B2870656E64696E6741636B293B0A20207D20656C73652069662028716F73203D3D203229207B0A2020202070656E64696E6741636B2E7061636B657454797065203D204173796E634D717474436C69656E74496E7465726E616C733A3A5061636B6574547970652E5055425245433B0A2020202070656E64696E6741636B2E686561646572466C6167203D204173796E634D717474436C69656E74496E7465726E616C733A3A486561646572466C61672E5055425245435F52455345525645443B0A2020202070656E64696E6741636B2E7061636B65744964203D207061636B657449643B0A202020205F746F53656E6441636B732E707573685F6261636B2870656E64696E6741636B293B0A0A20202020626F6F6C2070756252656C4177616974696E67203D2066616C73653B0A20202020666F7220284173796E634D717474436C69656E74496E7465726E616C733A3A50656E64696E6750756252656C2070656E64696E6750756252656C203A205F70656E64696E6750756252656C7329207B0A2020202020206966202870656E64696E6750756252656C2E7061636B65744964203D3D207061636B6574496429207B0A202020202020202070756252656C4177616974696E67203D20747275653B0A2020202020202020627265616B3B0A2020202020207D0A202020207D0A0A20202020696620282170756252656C4177616974696E6729207B0A2020202020204173796E634D717474436C69656E74496E7465726E616C733A3A50656E64696E6750756252656C2070656E64696E6750756252656C3B0A20202020202070656E64696E6750756252656C2E7061636B65744964203D207061636B657449643B0A2020202020205F70656E64696E6750756252656C732E707573685F6261636B2870656E64696E6750756252656C293B0A202020207D0A0A202020205F73656E6441636B7328293B0A20207D0A0A20205F6672656543757272656E745061727365645061636B657428293B0A7D0A0A766F6964204173796E634D717474436C69656E743A3A5F6F6E50756252656C2875696E7431365F74207061636B6574496429207B0A20205F6672656543757272656E745061727365645061636B657428293B0A0A20204173796E634D717474436C69656E74496E7465726E616C733A3A50656E64696E6741636B2070656E64696E6741636B3B0A202070656E64696E6741636B2E7061636B657454797065203D204173796E634D717474436C69656E74496E7465726E616C733A3A5061636B6574547970652E505542434F4D503B0A202070656E64696E6741636B2E686561646572466C6167203D204173796E634D717474436C69656E74496E7465726E616C733A3A486561646572466C61672E505542434F4D505F52455345525645443B0A202070656E64696E6741636B2E7061636B65744964203D207061636B657449643B0A20205F746F53656E6441636B732E707573685F6261636B2870656E64696E6741636B293B0A0A2020666F72202873697A655F742069203D20303B2069203C205F70656E64696E6750756252656C732E73697A6528293B20692B2B29207B0A20202020696620285F70656E64696E6750756252656C735B695D2E7061636B65744964203D3D207061636B6574496429207B0A2020202020205F70656E64696E6750756252656C732E6572617365285F70656E64696E6750756252656C732E626567696E2829202B2069293B0A2020202020205F70656E64696E6750756252656C732E736872696E6B5F746F5F66697428293B0A202020207D0A20207D0A0A20205F73656E6441636B7328293B0A7D0A0A766F6964204173796E634D717474436C69656E743A3A5F6F6E50756241636B2875696E7431365F74207061636B6574496429207B0A20205F6672656543757272656E745061727365645061636B657428293B0A0A2020666F7220286175746F2063616C6C6261636B203A205F6F6E5075626C6973685573657243616C6C6261636B73292063616C6C6261636B287061636B65744964293B0A7D0A0A766F6964204173796E634D717474436C69656E743A3A5F6F6E5075625265632875696E7431365F74207061636B6574496429207B0A20205F6672656543757272656E745061727365645061636B657428293B0A0A20204173796E634D717474436C69656E74496E7465726E616C733A3A50656E64696E6741636B2070656E64696E6741636B3B0A202070656E64696E6741636B2E7061636B657454797065203D204173796E634D717474436C69656E74496E7465726E616C733A3A5061636B6574547970652E50554252454C3B0A202070656E64696E6741636B2E686561646572466C6167203D204173796E634D717474436C69656E74496E7465726E616C733A3A486561646572466C61672E50554252454C5F52455345525645443B0A202070656E64696E6741636B2E7061636B65744964203D207061636B657449643B0A20205F746F53656E6441636B732E707573685F6261636B2870656E64696E6741636B293B0A0A20205F73656E6441636B7328293B0A7D0A0A766F6964204173796E634D717474436C69656E743A3A5F6F6E507562436F6D702875696E7431365F74207061636B6574496429207B0A20205F6672656543757272656E745061727365645061636B657428293B0A0A2020666F7220286175746F2063616C6C6261636B203A205F6F6E5075626C6973685573657243616C6C6261636B73292063616C6C6261636B287061636B65744964293B0A7D0A0A626F6F6C204173796E634D717474436C69656E743A3A5F73656E6450696E672829207B0A2020636861722066697865644865616465725B325D3B0A202066697865644865616465725B305D203D204173796E634D717474436C69656E74496E7465726E616C733A3A5061636B6574547970652E50494E475245513B0A202066697865644865616465725B305D203D2066697865644865616465725B305D203C3C20343B0A202066697865644865616465725B305D203D2066697865644865616465725B305D207C204173796E634D717474436C69656E74496E7465726E616C733A3A486561646572466C61672E50494E475245515F52455345525645443B0A202066697865644865616465725B315D203D20303B0A0A202073697A655F74206E65656465645370616365203D20323B0A0A202053454D4150484F52455F54414B452866616C7365293B0A2020696620285F636C69656E742E73706163652829203C206E6565646564537061636529207B2053454D4150484F52455F4749564528293B2072657475726E2066616C73653B207D0A0A20205F636C69656E742E6164642866697865644865616465722C2032293B0A20205F636C69656E742E73656E6428293B0A20205F6C617374436C69656E744163746976697479203D206D696C6C697328293B0A20205F6C61737450696E675265717565737454696D65203D206D696C6C697328293B0A0A202053454D4150484F52455F4749564528293B0A202072657475726E20747275653B0A7D0A0A766F6964204173796E634D717474436C69656E743A3A5F73656E6441636B732829207B0A202075696E74385F74206E656564656441636B5370616365203D2032202B20323B0A0A202053454D4150484F52455F54414B4528293B0A2020666F72202873697A655F742069203D20303B2069203C205F746F53656E6441636B732E73697A6528293B20692B2B29207B0A20202020696620285F636C69656E742E73706163652829203C206E656564656441636B53706163652920627265616B3B0A0A202020204173796E634D717474436C69656E74496E7465726E616C733A3A50656E64696E6741636B2070656E64696E6741636B203D205F746F53656E6441636B735B695D3B0A0A20202020636861722066697865644865616465725B325D3B0A2020202066697865644865616465725B305D203D2070656E64696E6741636B2E7061636B6574547970653B0A2020202066697865644865616465725B305D203D2066697865644865616465725B305D203C3C20343B0A2020202066697865644865616465725B305D203D2066697865644865616465725B305D207C2070656E64696E6741636B2E686561646572466C61673B0A2020202066697865644865616465725B315D203D20323B0A0A2020202063686172207061636B6574496442797465735B325D3B0A202020207061636B6574496442797465735B305D203D2070656E64696E6741636B2E7061636B65744964203E3E20383B0A202020207061636B6574496442797465735B315D203D2070656E64696E6741636B2E7061636B65744964202620307846463B0A0A202020205F636C69656E742E6164642866697865644865616465722C2032293B0A202020205F636C69656E742E616464287061636B6574496442797465732C2032293B0A202020205F636C69656E742E73656E6428293B0A0A202020205F746F53656E6441636B732E6572617365285F746F53656E6441636B732E626567696E2829202B2069293B0A202020205F746F53656E6441636B732E736872696E6B5F746F5F66697428293B0A0A202020205F6C617374436C69656E744163746976697479203D206D696C6C697328293B0A20207D0A202053454D4150484F52455F4749564528293B0A7D0A0A626F6F6C204173796E634D717474436C69656E743A3A5F73656E64446973636F6E6E6563742829207B0A202069662028215F636F6E6E6563746564292072657475726E20747275653B0A0A2020636F6E73742075696E74385F74206E65656465645370616365203D20323B0A0A202053454D4150484F52455F54414B452866616C7365293B0A0A2020696620285F636C69656E742E73706163652829203C206E6565646564537061636529207B2053454D4150484F52455F4749564528293B2072657475726E2066616C73653B207D0A0A2020636861722066697865644865616465725B325D3B0A202066697865644865616465725B305D203D204173796E634D717474436C69656E74496E7465726E616C733A3A5061636B6574547970652E444953434F4E4E4543543B0A202066697865644865616465725B305D203D2066697865644865616465725B305D203C3C20343B0A202066697865644865616465725B305D203D2066697865644865616465725B305D207C204173796E634D717474436C69656E74496E7465726E616C733A3A486561646572466C61672E444953434F4E4E4543545F52455345525645443B0A202066697865644865616465725B315D203D20303B0A0A20205F636C69656E742E6164642866697865644865616465722C2032293B0A20205F636C69656E742E73656E6428293B0A20205F636C69656E742E636C6F73652874727565293B0A0A20205F646973636F6E6E6563744F6E506F6C6C203D2066616C73653B0A0A202053454D4150484F52455F4749564528293B0A202072657475726E20747275653B0A7D0A0A75696E7431365F74204173796E634D717474436C69656E743A3A5F6765744E6578745061636B657449642829207B0A202075696E7431365F74206E6578745061636B65744964203D205F6E6578745061636B657449643B0A0A2020696620285F6E6578745061636B65744964203D3D20363535333529205F6E6578745061636B65744964203D20303B20202F2F203020697320666F7262696464656E0A20205F6E6578745061636B657449642B2B3B0A0A202072657475726E206E6578745061636B657449643B0A7D0A0A626F6F6C204173796E634D717474436C69656E743A3A636F6E6E6563746564282920636F6E7374207B0A202072657475726E205F636F6E6E65637465643B0A7D0A0A766F6964204173796E634D717474436C69656E743A3A636F6E6E6563742829207B0A2020696620285F636F6E6E6563746564292072657475726E3B0A0A236966204153594E435F5443505F53534C5F454E41424C45440A2020696620285F757365497029207B0A202020205F636C69656E742E636F6E6E656374285F69702C205F706F72742C205F736563757265293B0A20207D20656C7365207B0A202020205F636C69656E742E636F6E6E656374285F686F73742C205F706F72742C205F736563757265293B0A20207D0A23656C73650A2020696620285F757365497029207B0A202020205F636C69656E742E636F6E6E656374285F69702C205F706F7274293B0A20207D20656C7365207B0A202020205F636C69656E742E636F6E6E656374285F686F73742C205F706F7274293B0A20207D0A23656E6469660A7D0A0A766F6964204173796E634D717474436C69656E743A3A646973636F6E6E65637428626F6F6C20666F72636529207B0A202069662028215F636F6E6E6563746564292072657475726E3B0A0A202069662028666F72636529207B0A202020205F636C69656E742E636C6F73652874727565293B0A20207D20656C7365207B0A202020205F73656E64446973636F6E6E65637428293B0A202020205F646973636F6E6E6563744F6E506F6C6C203D2066616C73653B0A20207D0A7D0A0A75696E7431365F74204173796E634D717474436C69656E743A3A73756273637269626528636F6E737420636861722A20746F7069632C2075696E74385F7420716F7329207B0A202069662028215F636F6E6E6563746564292072657475726E20303B0A0A2020636861722066697865644865616465725B355D3B0A202066697865644865616465725B305D203D204173796E634D717474436C69656E74496E7465726E616C733A3A5061636B6574547970652E5355425343524942453B0A202066697865644865616465725B305D203D2066697865644865616465725B305D203C3C20343B0A202066697865644865616465725B305D203D2066697865644865616465725B305D207C204173796E634D717474436C69656E74496E7465726E616C733A3A486561646572466C61672E5355425343524942455F52455345525645443B0A0A202075696E7431365F7420746F7069634C656E677468203D207374726C656E28746F706963293B0A20206368617220746F7069634C656E67746842797465735B325D3B0A2020746F7069634C656E67746842797465735B305D203D20746F7069634C656E677468203E3E20383B0A2020746F7069634C656E67746842797465735B315D203D20746F7069634C656E677468202620307846463B0A0A20206368617220716F73427974655B315D3B0A2020716F73427974655B305D203D20716F733B0A0A202075696E74385F742072656D61696E696E674C656E6774684C656E677468203D204173796E634D717474436C69656E74496E7465726E616C733A3A48656C706572733A3A656E636F646552656D61696E696E674C656E6774682832202B2032202B20746F7069634C656E677468202B20312C206669786564486561646572202B2031293B0A0A202073697A655F74206E65656465645370616365203D20303B0A20206E65656465645370616365202B3D2031202B2072656D61696E696E674C656E6774684C656E6774683B0A20206E65656465645370616365202B3D20323B0A20206E65656465645370616365202B3D20323B0A20206E65656465645370616365202B3D20746F7069634C656E6774683B0A20206E65656465645370616365202B3D20313B0A0A202053454D4150484F52455F54414B452830293B0A2020696620285F636C69656E742E73706163652829203C206E6565646564537061636529207B2053454D4150484F52455F4749564528293B2072657475726E20303B207D0A0A202075696E7431365F74207061636B65744964203D205F6765744E6578745061636B6574496428293B0A202063686172207061636B6574496442797465735B325D3B0A20207061636B6574496442797465735B305D203D207061636B65744964203E3E20383B0A20207061636B6574496442797465735B315D203D207061636B65744964202620307846463B0A0A20205F636C69656E742E6164642866697865644865616465722C2031202B2072656D61696E696E674C656E6774684C656E677468293B0A20205F636C69656E742E616464287061636B6574496442797465732C2032293B0A20205F636C69656E742E61646428746F7069634C656E67746842797465732C2032293B0A20205F636C69656E742E61646428746F7069632C20746F7069634C656E677468293B0A20205F636C69656E742E61646428716F73427974652C2031293B0A20205F636C69656E742E73656E6428293B0A20205F6C617374436C69656E744163746976697479203D206D696C6C697328293B0A0A202053454D4150484F52455F4749564528293B0A202072657475726E207061636B657449643B0A7D0A0A75696E7431365F74204173796E634D717474436C69656E743A3A756E73756273637269626528636F6E737420636861722A20746F70696329207B0A202069662028215F636F6E6E6563746564292072657475726E20303B0A0A2020636861722066697865644865616465725B355D3B0A202066697865644865616465725B305D203D204173796E634D717474436C69656E74496E7465726E616C733A3A5061636B6574547970652E554E5355425343524942453B0A202066697865644865616465725B305D203D2066697865644865616465725B305D203C3C20343B0A202066697865644865616465725B305D203D2066697865644865616465725B305D207C204173796E634D717474436C69656E74496E7465726E616C733A3A486561646572466C61672E554E5355425343524942455F52455345525645443B0A0A202075696E7431365F7420746F7069634C656E677468203D207374726C656E28746F706963293B0A20206368617220746F7069634C656E67746842797465735B325D3B0A2020746F7069634C656E67746842797465735B305D203D20746F7069634C656E677468203E3E20383B0A2020746F7069634C656E67746842797465735B315D203D20746F7069634C656E677468202620307846463B0A0A202075696E74385F742072656D61696E696E674C656E6774684C656E677468203D204173796E634D717474436C69656E74496E7465726E616C733A3A48656C706572733A3A656E636F646552656D61696E696E674C656E6774682832202B2032202B20746F7069634C656E6774682C206669786564486561646572202B2031293B0A0A202073697A655F74206E65656465645370616365203D20303B0A20206E65656465645370616365202B3D2031202B2072656D61696E696E674C656E6774684C656E6774683B0A20206E65656465645370616365202B3D20323B0A20206E65656465645370616365202B3D20323B0A20206E65656465645370616365202B3D20746F7069634C656E6774683B0A0A202053454D4150484F52455F54414B452830293B0A2020696620285F636C69656E742E73706163652829203C206E6565646564537061636529207B2053454D4150484F52455F4749564528293B2072657475726E20303B207D0A0A202075696E7431365F74207061636B65744964203D205F6765744E6578745061636B6574496428293B0A202063686172207061636B6574496442797465735B325D3B0A20207061636B6574496442797465735B305D203D207061636B65744964203E3E20383B0A20207061636B6574496442797465735B315D203D207061636B65744964202620307846463B0A0A20205F636C69656E742E6164642866697865644865616465722C2031202B2072656D61696E696E674C656E6774684C656E677468293B0A20205F636C69656E742E616464287061636B6574496442797465732C2032293B0A20205F636C69656E742E61646428746F7069634C656E67746842797465732C2032293B0A20205F636C69656E742E61646428746F7069632C20746F7069634C656E677468293B0A20205F636C69656E742E73656E6428293B0A20205F6C617374436C69656E744163746976697479203D206D696C6C697328293B0A0A202053454D4150484F52455F4749564528293B0A202072657475726E207061636B657449643B0A7D0A0A75696E7431365F74204173796E634D717474436C69656E743A3A7075626C69736828636F6E737420636861722A20746F7069632C2075696E74385F7420716F732C20626F6F6C2072657461696E2C20636F6E737420636861722A207061796C6F61642C2073697A655F74206C656E6774682C20626F6F6C206475702C2075696E7431365F74206D6573736167655F696429207B0A202069662028215F636F6E6E6563746564292072657475726E20303B0A0A2020636861722066697865644865616465725B355D3B0A202066697865644865616465725B305D203D204173796E634D717474436C69656E74496E7465726E616C733A3A5061636B6574547970652E5055424C4953483B0A202066697865644865616465725B305D203D2066697865644865616465725B305D203C3C20343B0A202069662028647570292066697865644865616465725B305D207C3D204173796E634D717474436C69656E74496E7465726E616C733A3A486561646572466C61672E5055424C4953485F4455503B0A20206966202872657461696E292066697865644865616465725B305D207C3D204173796E634D717474436C69656E74496E7465726E616C733A3A486561646572466C61672E5055424C4953485F52455441494E3B0A20207377697463682028716F7329207B0A202020206361736520303A0A20202020202066697865644865616465725B305D207C3D204173796E634D717474436C69656E74496E7465726E616C733A3A486561646572466C61672E5055424C4953485F514F53303B0A202020202020627265616B3B0A202020206361736520313A0A20202020202066697865644865616465725B305D207C3D204173796E634D717474436C69656E74496E7465726E616C733A3A486561646572466C61672E5055424C4953485F514F53313B0A202020202020627265616B3B0A202020206361736520323A0A20202020202066697865644865616465725B305D207C3D204173796E634D717474436C69656E74496E7465726E616C733A3A486561646572466C61672E5055424C4953485F514F53323B0A202020202020627265616B3B0A20207D0A0A202075696E7431365F7420746F7069634C656E677468203D207374726C656E28746F706963293B0A20206368617220746F7069634C656E67746842797465735B325D3B0A2020746F7069634C656E67746842797465735B305D203D20746F7069634C656E677468203E3E20383B0A2020746F7069634C656E67746842797465735B315D203D20746F7069634C656E677468202620307846463B0A0A202075696E7433325F74207061796C6F61644C656E677468203D206C656E6774683B0A2020696620287061796C6F616420213D206E756C6C707472202626207061796C6F61644C656E677468203D3D203029207061796C6F61644C656E677468203D207374726C656E287061796C6F6164293B0A0A202075696E7433325F742072656D61696E696E674C656E677468203D2032202B20746F7069634C656E677468202B207061796C6F61644C656E6774683B0A202069662028716F7320213D2030292072656D61696E696E674C656E677468202B3D20323B0A202075696E74385F742072656D61696E696E674C656E6774684C656E677468203D204173796E634D717474436C69656E74496E7465726E616C733A3A48656C706572733A3A656E636F646552656D61696E696E674C656E6774682872656D61696E696E674C656E6774682C206669786564486561646572202B2031293B0A0A202073697A655F74206E65656465645370616365203D20303B0A20206E65656465645370616365202B3D2031202B2072656D61696E696E674C656E6774684C656E6774683B0A20206E65656465645370616365202B3D20323B0A20206E65656465645370616365202B3D20746F7069634C656E6774683B0A202069662028716F7320213D203029206E65656465645370616365202B3D20323B0A2020696620287061796C6F616420213D206E756C6C70747229206E65656465645370616365202B3D207061796C6F61644C656E6774683B0A0A202053454D4150484F52455F54414B452830293B0A2020696620285F636C69656E742E73706163652829203C206E6565646564537061636529207B2053454D4150484F52455F4749564528293B2072657475726E20303B207D0A0A202075696E7431365F74207061636B65744964203D20303B0A202063686172207061636B6574496442797465735B325D3B0A202069662028716F7320213D203029207B0A2020202069662028647570202626206D6573736167655F6964203E203029207B0A2020202020207061636B65744964203D206D6573736167655F69643B0A202020207D20656C7365207B0A2020202020207061636B65744964203D205F6765744E6578745061636B6574496428293B0A202020207D0A0A202020207061636B6574496442797465735B305D203D207061636B65744964203E3E20383B0A202020207061636B6574496442797465735B315D203D207061636B65744964202620307846463B0A20207D0A0A20205F636C69656E742E6164642866697865644865616465722C2031202B2072656D61696E696E674C656E6774684C656E677468293B0A20205F636C69656E742E61646428746F7069634C656E67746842797465732C2032293B0A20205F636C69656E742E61646428746F7069632C20746F7069634C656E677468293B0A202069662028716F7320213D203029205F636C69656E742E616464287061636B6574496442797465732C2032293B0A2020696620287061796C6F616420213D206E756C6C70747229205F636C69656E742E616464287061796C6F61642C207061796C6F61644C656E677468293B0A20205F636C69656E742E73656E6428293B0A20205F6C617374436C69656E744163746976697479203D206D696C6C697328293B0A0A202053454D4150484F52455F4749564528293B0A202069662028716F7320213D203029207B0A2020202072657475726E207061636B657449643B0A20207D20656C7365207B0A2020202072657475726E20313B0A20207D0A7D0A0A636F6E737420636861722A204173796E634D717474436C69656E743A3A676574436C69656E7449642829207B0A202072657475726E205F636C69656E7449643B0A7D .cpp AsyncMqttClient 2369666E646566205352435F4153594E434D515454434C49454E545F485F0A23646566696E65205352435F4153594E434D515454434C49454E545F485F0A0A23696E636C75646520224173796E634D717474436C69656E742E687070220A0A23656E64696620202F2F205352435F4153594E434D515454434C49454E545F485F0A .h AsyncMqttClient 23707261676D61206F6E63650A0A23696E636C756465203C66756E6374696F6E616C3E0A23696E636C756465203C766563746F723E0A0A23696E636C756465202241726475696E6F2E68220A0A2369666465662045535033320A23696E636C756465203C4173796E635443502E683E0A23696E636C756465203C6672656572746F732F73656D7068722E683E0A23656C696620646566696E65642845535038323636290A23696E636C756465203C4553504173796E635443502E683E0A23656C73650A236572726F7220506C6174666F726D206E6F7420737570706F727465640A23656E6469660A0A236966204153594E435F5443505F53534C5F454E41424C45440A23696E636C756465203C7463705F6178746C732E683E0A23646566696E6520534841315F53495A452032300A23656E6469660A0A23696E636C75646520224173796E634D717474436C69656E742F466C6167732E687070220A23696E636C75646520224173796E634D717474436C69656E742F50617273696E67496E666F726D6174696F6E2E687070220A23696E636C75646520224173796E634D717474436C69656E742F4D65737361676550726F706572746965732E687070220A23696E636C75646520224173796E634D717474436C69656E742F48656C706572732E687070220A23696E636C75646520224173796E634D717474436C69656E742F43616C6C6261636B732E687070220A23696E636C75646520224173796E634D717474436C69656E742F446973636F6E6E656374526561736F6E732E687070220A23696E636C75646520224173796E634D717474436C69656E742F53746F726167652E687070220A0A23696E636C75646520224173796E634D717474436C69656E742F5061636B6574732F5061636B65742E687070220A23696E636C75646520224173796E634D717474436C69656E742F5061636B6574732F436F6E6E41636B5061636B65742E687070220A23696E636C75646520224173796E634D717474436C69656E742F5061636B6574732F50696E67526573705061636B65742E687070220A23696E636C75646520224173796E634D717474436C69656E742F5061636B6574732F53756241636B5061636B65742E687070220A23696E636C75646520224173796E634D717474436C69656E742F5061636B6574732F556E73756241636B5061636B65742E687070220A23696E636C75646520224173796E634D717474436C69656E742F5061636B6574732F5075626C6973685061636B65742E687070220A23696E636C75646520224173796E634D717474436C69656E742F5061636B6574732F50756252656C5061636B65742E687070220A23696E636C75646520224173796E634D717474436C69656E742F5061636B6574732F50756241636B5061636B65742E687070220A23696E636C75646520224173796E634D717474436C69656E742F5061636B6574732F5075625265635061636B65742E687070220A23696E636C75646520224173796E634D717474436C69656E742F5061636B6574732F507562436F6D705061636B65742E687070220A0A2369662045535033320A23646566696E652053454D4150484F52455F54414B4528582920696620287853656D6170686F726554616B65285F7853656D6170686F72652C2031303030202F20706F72745449434B5F504552494F445F4D532920213D2070645452554529207B2072657475726E20583B207D20202F2F205761697473206D617820313030306D730A23646566696E652053454D4150484F52455F474956452829207853656D6170686F726547697665285F7853656D6170686F7265293B0A23656C696620646566696E65642845535038323636290A23646566696E652053454D4150484F52455F54414B4528582920766F696428290A23646566696E652053454D4150484F52455F47495645282920766F696428290A23656E6469660A0A636C617373204173796E634D717474436C69656E74207B0A207075626C69633A0A20204173796E634D717474436C69656E7428293B0A20207E4173796E634D717474436C69656E7428293B0A0A20204173796E634D717474436C69656E7426207365744B656570416C6976652875696E7431365F74206B656570416C697665293B0A20204173796E634D717474436C69656E742620736574436C69656E74496428636F6E737420636861722A20636C69656E744964293B0A20204173796E634D717474436C69656E742620736574436C65616E53657373696F6E28626F6F6C20636C65616E53657373696F6E293B0A20204173796E634D717474436C69656E7426207365744D6178546F7069634C656E6774682875696E7431365F74206D6178546F7069634C656E677468293B0A20204173796E634D717474436C69656E74262073657443726564656E7469616C7328636F6E737420636861722A20757365726E616D652C20636F6E737420636861722A2070617373776F7264203D206E756C6C707472293B0A20204173796E634D717474436C69656E74262073657457696C6C28636F6E737420636861722A20746F7069632C2075696E74385F7420716F732C20626F6F6C2072657461696E2C20636F6E737420636861722A207061796C6F6164203D206E756C6C7074722C2073697A655F74206C656E677468203D2030293B0A20204173796E634D717474436C69656E742620736574536572766572284950416464726573732069702C2075696E7431365F7420706F7274293B0A20204173796E634D717474436C69656E74262073657453657276657228636F6E737420636861722A20686F73742C2075696E7431365F7420706F7274293B0A236966204153594E435F5443505F53534C5F454E41424C45440A20204173796E634D717474436C69656E74262073657453656375726528626F6F6C20736563757265293B0A20204173796E634D717474436C69656E74262061646453657276657246696E6765727072696E7428636F6E73742075696E74385F742A2066696E6765727072696E74293B0A23656E6469660A0A20204173796E634D717474436C69656E7426206F6E436F6E6E656374284173796E634D717474436C69656E74496E7465726E616C733A3A4F6E436F6E6E6563745573657243616C6C6261636B2063616C6C6261636B293B0A20204173796E634D717474436C69656E7426206F6E446973636F6E6E656374284173796E634D717474436C69656E74496E7465726E616C733A3A4F6E446973636F6E6E6563745573657243616C6C6261636B2063616C6C6261636B293B0A20204173796E634D717474436C69656E7426206F6E537562736372696265284173796E634D717474436C69656E74496E7465726E616C733A3A4F6E5375627363726962655573657243616C6C6261636B2063616C6C6261636B293B0A20204173796E634D717474436C69656E7426206F6E556E737562736372696265284173796E634D717474436C69656E74496E7465726E616C733A3A4F6E556E7375627363726962655573657243616C6C6261636B2063616C6C6261636B293B0A20204173796E634D717474436C69656E7426206F6E4D657373616765284173796E634D717474436C69656E74496E7465726E616C733A3A4F6E4D6573736167655573657243616C6C6261636B2063616C6C6261636B293B0A20204173796E634D717474436C69656E7426206F6E5075626C697368284173796E634D717474436C69656E74496E7465726E616C733A3A4F6E5075626C6973685573657243616C6C6261636B2063616C6C6261636B293B0A0A2020626F6F6C20636F6E6E6563746564282920636F6E73743B0A2020766F696420636F6E6E65637428293B0A2020766F696420646973636F6E6E65637428626F6F6C20666F726365203D2066616C7365293B0A202075696E7431365F742073756273637269626528636F6E737420636861722A20746F7069632C2075696E74385F7420716F73293B0A202075696E7431365F7420756E73756273637269626528636F6E737420636861722A20746F706963293B0A202075696E7431365F74207075626C69736828636F6E737420636861722A20746F7069632C2075696E74385F7420716F732C20626F6F6C2072657461696E2C20636F6E737420636861722A207061796C6F6164203D206E756C6C7074722C2073697A655F74206C656E677468203D20302C20626F6F6C20647570203D2066616C73652C2075696E7431365F74206D6573736167655F6964203D2030293B0A0A2020636F6E737420636861722A20676574436C69656E74496428293B0A0A20707269766174653A0A20204173796E63436C69656E74205F636C69656E743B0A0A2020626F6F6C205F636F6E6E65637465643B0A2020626F6F6C205F636F6E6E6563745061636B65744E6F74456E6F75676853706163653B0A2020626F6F6C205F646973636F6E6E6563744F6E506F6C6C3B0A2020626F6F6C205F746C7342616446696E6765727072696E743B0A202075696E7433325F74205F6C617374436C69656E7441637469766974793B0A202075696E7433325F74205F6C61737453657276657241637469766974793B0A202075696E7433325F74205F6C61737450696E675265717565737454696D653B0A0A202063686172205F67656E657261746564436C69656E7449645B3138202B20315D3B20202F2F20657370383236362D61626331323320616E642065737033322D616263646566313233343536200A2020495041646472657373205F69703B0A2020636F6E737420636861722A205F686F73743B0A2020626F6F6C205F75736549703B0A236966204153594E435F5443505F53534C5F454E41424C45440A2020626F6F6C205F7365637572653B0A23656E6469660A202075696E7431365F74205F706F72743B0A202075696E7431365F74205F6B656570416C6976653B0A2020626F6F6C205F636C65616E53657373696F6E3B0A2020636F6E737420636861722A205F636C69656E7449643B0A2020636F6E737420636861722A205F757365726E616D653B0A2020636F6E737420636861722A205F70617373776F72643B0A2020636F6E737420636861722A205F77696C6C546F7069633B0A2020636F6E737420636861722A205F77696C6C5061796C6F61643B0A202075696E7431365F74205F77696C6C5061796C6F61644C656E6774683B0A202075696E74385F74205F77696C6C516F733B0A2020626F6F6C205F77696C6C52657461696E3B0A0A236966204153594E435F5443505F53534C5F454E41424C45440A20207374643A3A766563746F723C7374643A3A61727261793C75696E74385F742C20534841315F53495A453E3E205F73656375726553657276657246696E6765727072696E74733B0A23656E6469660A0A20207374643A3A766563746F723C4173796E634D717474436C69656E74496E7465726E616C733A3A4F6E436F6E6E6563745573657243616C6C6261636B3E205F6F6E436F6E6E6563745573657243616C6C6261636B733B0A20207374643A3A766563746F723C4173796E634D717474436C69656E74496E7465726E616C733A3A4F6E446973636F6E6E6563745573657243616C6C6261636B3E205F6F6E446973636F6E6E6563745573657243616C6C6261636B733B0A20207374643A3A766563746F723C4173796E634D717474436C69656E74496E7465726E616C733A3A4F6E5375627363726962655573657243616C6C6261636B3E205F6F6E5375627363726962655573657243616C6C6261636B733B0A20207374643A3A766563746F723C4173796E634D717474436C69656E74496E7465726E616C733A3A4F6E556E7375627363726962655573657243616C6C6261636B3E205F6F6E556E7375627363726962655573657243616C6C6261636B733B0A20207374643A3A766563746F723C4173796E634D717474436C69656E74496E7465726E616C733A3A4F6E4D6573736167655573657243616C6C6261636B3E205F6F6E4D6573736167655573657243616C6C6261636B733B0A20207374643A3A766563746F723C4173796E634D717474436C69656E74496E7465726E616C733A3A4F6E5075626C6973685573657243616C6C6261636B3E205F6F6E5075626C6973685573657243616C6C6261636B733B0A0A20204173796E634D717474436C69656E74496E7465726E616C733A3A50617273696E67496E666F726D6174696F6E205F70617273696E67496E666F726D6174696F6E3B0A20204173796E634D717474436C69656E74496E7465726E616C733A3A5061636B65742A205F63757272656E745061727365645061636B65743B0A202075696E74385F74205F72656D61696E696E674C656E677468427566666572506F736974696F6E3B0A202063686172205F72656D61696E696E674C656E6774684275666665725B345D3B0A0A202075696E7431365F74205F6E6578745061636B657449643B0A0A20207374643A3A766563746F723C4173796E634D717474436C69656E74496E7465726E616C733A3A50656E64696E6750756252656C3E205F70656E64696E6750756252656C733B0A0A20207374643A3A766563746F723C4173796E634D717474436C69656E74496E7465726E616C733A3A50656E64696E6741636B3E205F746F53656E6441636B733B0A0A2369666465662045535033320A202053656D6170686F726548616E646C655F74205F7853656D6170686F7265203D206E756C6C7074723B0A23656E6469660A0A2020766F6964205F636C65617228293B0A2020766F6964205F6672656543757272656E745061727365645061636B657428293B0A0A20202F2F205443500A2020766F6964205F6F6E436F6E6E656374284173796E63436C69656E742A20636C69656E74293B0A2020766F6964205F6F6E446973636F6E6E656374284173796E63436C69656E742A20636C69656E74293B0A202073746174696320766F6964205F6F6E4572726F72284173796E63436C69656E742A20636C69656E742C20696E74385F74206572726F72293B0A2020766F6964205F6F6E54696D656F7574284173796E63436C69656E742A20636C69656E742C2075696E7433325F742074696D65293B0A202073746174696320766F6964205F6F6E41636B284173796E63436C69656E742A20636C69656E742C2073697A655F74206C656E2C2075696E7433325F742074696D65293B0A2020766F6964205F6F6E44617461284173796E63436C69656E742A20636C69656E742C20636861722A20646174612C2073697A655F74206C656E293B0A2020766F6964205F6F6E506F6C6C284173796E63436C69656E742A20636C69656E74293B0A0A20202F2F204D5154540A2020766F6964205F6F6E50696E675265737028293B0A2020766F6964205F6F6E436F6E6E41636B28626F6F6C2073657373696F6E50726573656E742C2075696E74385F7420636F6E6E65637452657475726E436F6465293B0A2020766F6964205F6F6E53756241636B2875696E7431365F74207061636B657449642C206368617220737461747573293B0A2020766F6964205F6F6E556E73756241636B2875696E7431365F74207061636B65744964293B0A2020766F6964205F6F6E4D65737361676528636861722A20746F7069632C20636861722A207061796C6F61642C2075696E74385F7420716F732C20626F6F6C206475702C20626F6F6C2072657461696E2C2073697A655F74206C656E2C2073697A655F7420696E6465782C2073697A655F7420746F74616C2C2075696E7431365F74207061636B65744964293B0A2020766F6964205F6F6E5075626C6973682875696E7431365F74207061636B657449642C2075696E74385F7420716F73293B0A2020766F6964205F6F6E50756252656C2875696E7431365F74207061636B65744964293B0A2020766F6964205F6F6E50756241636B2875696E7431365F74207061636B65744964293B0A2020766F6964205F6F6E5075625265632875696E7431365F74207061636B65744964293B0A2020766F6964205F6F6E507562436F6D702875696E7431365F74207061636B65744964293B0A0A2020626F6F6C205F73656E6450696E6728293B0A2020766F6964205F73656E6441636B7328293B0A2020626F6F6C205F73656E64446973636F6E6E65637428293B0A0A202075696E7431365F74205F6765744E6578745061636B6574496428293B0A7D3B .hpp mqttConnected c31c666f-064d-408c-8ecb-e6fd0bc134a8 MQTT_ESP_Main_6_6 - На выходе mqttConnected будет единица, если esp подключена к брокеру. - LWT сообщение - сообщение, которое будет отправлено в указанный топик, после отключения клиента от брокера. Пример: мы указали в настройках: willMessageOnline: 1; willMessageOffline: 0; willTopic: client1/status; После старта esp и подключению к брокеру, в топик client1/status будет отправлено сообщение 1, а при отключении esp от брокера в топик client1/status будет отправлено сообщение 0. Тема на форуме: https://forum.flprog.ru/viewtopic.php?t=4276 529 keepAlive 15 Через сколько секунд брокер разорвет соединение с esp, если esp станет недоступна 12db8ac8-c14f-4872-9820-b600fc727ad6 19b8e04c-3b65-4976-aa05-e396f0edc436 cleanSession b094b028-a5dc-44c0-bf4d-25d3a3db2909 135c0851-bc62-4e36-b95e-c6bcc91602c1 willTopic LWT топик, если ничего не указано, то по умолчанию топик ваш_clientId/status a9c6647e-68a8-4c6b-86ab-2070c4037400 client1/status LWT топик d7befd79-1503-46db-8e1c-2fd0afce63f0 willMessageOnline 1 LWT сообщение при подключении esp к брокеру e655ca2f-9aef-4c43-848e-a85165f1d7f3 35bf451e-9614-4ebc-bc5a-36b10070a85a willMessageOffline 0 LWT сообщение при отключении esp от брокера e12eaeeb-27f6-4858-8d8a-8c2e4e1be040 3774823c-d771-42c7-8bce-a563652c61f2 willRetain LWT Retain c53a2d76-f94f-4b24-af6d-15a8df33f288 39ffd1f5-9825-467f-9323-59a7fe223cc5 willQos LWT QoS 5b6ad7f4-8b02-4914-a18b-e0c05346a9b4 bdd21db4-592c-4048-96cc-5fed6a2cb989 if (!oneTimeDisconnect && mqttDisconnect) { mqttClient.disconnect(); oneTimeDisconnect = true; } else { oneTimeDisconnect = false; } 135 wifiConnectHandler = WiFi.onStationModeGotIP(onWifiConnect); wifiDisconnectHandler = WiFi.onStationModeDisconnected(onWifiDisconnect); mqttClient.onMessage(messageReceived); mqttClient.onConnect(onMqttConnect); mqttClient.onDisconnect(onMqttDisconnect); mqttClient.onPublish(onMqttPublish); if (willTopic == "") { willTopic = mqttClientId+"/status"; } mqttClient.setWill(willTopic, willQos, willRetain, willMessageOffline); mqttClient.setKeepAlive(keepAlive); mqttClient.setCleanSession(cleanSession); 504 #include <Ticker.h> #include <AsyncMqttClient.h> inputTopic ; std::vector<String> inputMessage ; std::vector<String> mqttClient ; AsyncMqttClient mqttReconnectTimer ; Ticker wifiConnectHandler ; WiFiEventHandler wifiDisconnectHandler ; WiFiEventHandler pubPacketId ; uint16_t oneTimeDisconnect ; bool String tpc; String msg; for (uint8_t i = 0; i < strlen(topic); i++) { tpc += topic[i]; } for (size_t i = 0; i < len; i++) { msg += payload[i]; } inputTopic.push_back(tpc); inputMessage.push_back(msg); 202 void messageReceived char* topic char* payload AsyncMqttClientMessageProperties properties size_t len size_t index size_t total connectToMqtt(); 16 void onWifiConnect const WiFiEventStationModeGotIP& event mqttReconnectTimer.detach(); 28 void onWifiDisconnect const WiFiEventStationModeDisconnected& event if (!mqttDisconnect) { mqttClient.setClientId(mqttClientId); mqttClient.setServer(mqttServer, mqttPort); mqttClient.setCredentials(mqttUser, mqttPassword); mqttClient.connect(); } 183 void connectToMqtt mqttConnected = false; if (WiFi.isConnected()) { mqttReconnectTimer.once(2, connectToMqtt); } 100 void onMqttDisconnect AsyncMqttClientDisconnectReason reason mqttClient.publish(willTopic, willQos, willRetain, willMessageOnline); mqttConnected = true; void onMqttConnect bool sessionPresent pubPacketId = packetId; 23 void onMqttPublish uint16_t packetId 160@90 corner: 180@110 160@120 180@120 135.0d@123.5d 160@110 corner: 180@130 160@140 180@140 160@130 corner: 180@150 160@160 180@160 160@150 corner: 180@170 ESP32 160@180 180@180 126.0d@183.5d 160@170 corner: 180@190 328.0d@170 corner: 348.0d@190 160@100 160@120 160@180 348.0d@180 MQTT ESP32 Main v6.8 0a0fce50-7818-42ad-89f8-2918cb51090e MQTT_ESP32_Main_6_8 - mqttServer - ip или домен mqtt брокера (нужно указывать без https://). - mqttPort - порт mqtt брокера (по умолчанию: 1883). - mqttUser - имя пользователя на брокере, можно использовать один логин и пароль на всех mqtt клиентах. - mqttPassword - пароль. - mqttClientId - любое уникальное название на английском, нужно для идентификации на брокере. Для всех клиентов должно быть разное. - Выход mqttConnected - на данном выходе будет единица, если есть подключение к брокеру. - Last Will сообщение - сообщение, которое будет отправлено в указанный топик, после отключения клиента от брокера. По умолчанию Will топик равен установленному значению на входе mqttClientId. Пример: мы указали в настройках: willMessageOnline: 1; willMessageOffline: 0; willTopic: client1; После старта esp и подключению к брокеру, в топик client1 будет отправлено сообщение 1, а при отключении esp от брокера в топик client1 будет отправлено сообщение 0. Тема на форуме: https://forum.flprog.ru/viewtopic.php?t=4276 995 reconnectTime 5 Через сколько секунд делать попытку подключиться к брокеру, если он недоступен bba906e4-9ccc-49ec-988b-73b50e1c2869 68e7d697-80aa-40dc-942a-4ca4b9bfbb1c default По умолчанию Will топик равен установленному значению на входе mqttClientId, можно указать любой другой топик вместо слова default Last Will сообщение при подключении esp к брокеру Last Will сообщение при отключении esp от брокера Last Will Retain Last Will QoS WiFi.onEvent(WiFiEvent); mqttClient.onMessage(onMqttMessage); mqttClient.onConnect(onMqttConnect); mqttClient.onDisconnect(onMqttDisconnect); mqttClient.onPublish(onMqttPublish); mqttClient.setKeepAlive(keepAlive); mqttClient.setCleanSession(cleanSession); 258 #include <Ticker.h> #include <AsyncMqttClient.h> inputTopic ; std::vector<String> inputMessage ; std::vector<String> mqttClient ; AsyncMqttClient mqttReconnectTimer ; Ticker pubPacketId ; uint16_t char msg[len + 1]; for (size_t i = 0; i < len; i++) { msg[i] = payload[i]; } msg[len] = '\0'; inputTopic.push_back(String(topic)); inputMessage.push_back(String(msg)); 168 void onMqttMessage char* topic char* payload AsyncMqttClientMessageProperties properties size_t len size_t index size_t total if (willTopic == "default") { mqttClient.setWill(mqttClientId.c_str(), willQos, willRetain, willMessageOffline); } else { mqttClient.setWill(willTopic, willQos, willRetain, willMessageOffline); } mqttClient.setClientId(mqttClientId.c_str()); mqttClient.setServer(mqttServer.c_str(), mqttPort); mqttClient.setCredentials(mqttUser.c_str(), mqttPassword.c_str()); mqttClient.connect(); 385 mqttConnected = false; if (WiFi.isConnected()) { mqttReconnectTimer.once(reconnectTime, connectToMqtt); } 109 mqttConnected = true; if (willTopic == "default") { mqttClient.publish(mqttClientId.c_str(), willQos, willRetain, willMessageOnline); } else { mqttClient.publish(willTopic, willQos, willRetain, willMessageOnline); } 217 received = false; if (unsubscribe) { if (!rTrig) { uint16_t packetId = mqttClient.unsubscribe(topic.c_str()); if (packetId > 0) { rTrig = true; subscribed = false; for (uint8_t i = 0; i < inputTopic.size(); i++) { if (inputTopic[i] == topic) { inputTopic.erase(inputTopic.begin() + i); inputMessage.erase(inputMessage.begin() + i); if (inputTopic.empty()) { inputTopic.shrink_to_fit(); inputMessage.shrink_to_fit(); } } } } } } else { rTrig = false; for (uint8_t i = 0; i < inputTopic.size(); i++) { if (inputTopic[i] == topic) { received = true; message = inputMessage[i]; inputTopic.erase(inputTopic.begin() + i); inputMessage.erase(inputMessage.begin() + i); if (inputTopic.empty()) { inputTopic.shrink_to_fit(); inputMessage.shrink_to_fit(); } break; } } if (mqttClient.connected()) { if (!subscribed) { uint16_t packetId = mqttClient.subscribe(topic.c_str(), qos); if (packetId > 0) { subscribed = true; } } } else { subscribed = false; } } 1064 void sub const String &topic String &message const byte &qos bool &received bool &subscribed const bool &unsubscribe bool &rTrig if (send) { if (!rTrig) { packetId = mqttClient.publish(topic.c_str(), qos, retain, message.c_str()); if (packetId > 0) { rTrig = true; } } } else { rTrig = false; qosDelivered = false; } if (packetId > 1 && packetId == pubPacketId) { qosDelivered = true; packetId = 0; } 287 void pub const bool &send const String &topic const String &message const byte &qos const bool &retain bool &qosDelivered uint16_t &packetId bool &rTrig if (event == SYSTEM_EVENT_STA_GOT_IP) connectToMqtt(); else if (event == SYSTEM_EVENT_STA_DISCONNECTED) mqttReconnectTimer.detach(); 132 void WiFiEvent WiFiEvent_t event 148.0d 73.0d 328.0d@180 348.0d@180 corner: 348.0d@180 D 430@180 450@180 430@170 corner: 450@190 9600 22 rx 3 RX0 digital tx TX0 none any 1000 271.0d arduinoIDE 54 4096 180811712 247645603 workStatus client mac 20 ssid password ip subnet gateway dns isDHCP connectStatus ESP32 WROOM DEVKIT V1 215230342 6 7 9 10 11 12 13 14 default Contr'1' ControllerSetting'1' ESP8266WifiSettingsRoot'1' ProjectTreeESP8266WifiInterfaceRoot'1'Client ProjectTreeESP8266SettingsPageRoot'1' 0@0 433