tx · CjPr1ZUbvHhwCp5H3doEPXc15xKDeNpQkf3Wk5L56KHH

3MtMZPVohRyxckRk11RZM4geun6itShmcXy:  -0.07000000 Waves

2022.11.29 21:15 [2338737] smart account 3MtMZPVohRyxckRk11RZM4geun6itShmcXy > SELF 0.00000000 Waves

{ "type": 13, "id": "CjPr1ZUbvHhwCp5H3doEPXc15xKDeNpQkf3Wk5L56KHH", "fee": 7000000, "feeAssetId": null, "timestamp": 1669745783122, "version": 2, "chainId": 84, "sender": "3MtMZPVohRyxckRk11RZM4geun6itShmcXy", "senderPublicKey": "AcX4fkfjTbNodAULoBzLJcZwKsACkfzdq78cpEww7RP8", "proofs": [ "54phxHWiYeWyGdnsiTu2LoiRDxhE5xCPvs3u1D4HDUEN2ZejGyiEZVSp3hC8Sznj9TTNNE6qcDciePojnZVDNqpZ" ], "script": "base64:BgJtCAISABIAEgMKAQESAwoBARILCgkBAQEBAQEBAQESEAoOAQEBAQEBAQgICAEBAQESAwoBARIFCgMBAQESBgoEAQEBCBIAEgMKAQESABIDCgEIEgASABIDCgEIEgMKAQgSAwoBARIAEgASAwoBCLABAAlrX29yYV9rZXkCCWtfb3JhX2tleQAPa19vcmFfYmxvY2tfa2V5Ag9rX29yYV9ibG9ja19rZXkABWtfb3JhAgVrX29yYQAJa19iYWxhbmNlAglrX2JhbGFuY2UADmtfcG9zaXRpb25TaXplAg5rX3Bvc2l0aW9uU2l6ZQAQa19wb3NpdGlvbk1hcmdpbgIQa19wb3NpdGlvbk1hcmdpbgAWa19wb3NpdGlvbk9wZW5Ob3Rpb25hbAIWa19wb3NpdGlvbk9wZW5Ob3Rpb25hbAAua19wb3NpdGlvbkxhc3RVcGRhdGVkQ3VtdWxhdGl2ZVByZW1pdW1GcmFjdGlvbgISa19wb3NpdGlvbkZyYWN0aW9uABRrX3Bvc2l0aW9uQ2xvc2VkRGF0ZQIUa19wb3NpdGlvbkNsb3NlZERhdGUAD2tfcG9zaXRpb25Bc3NldAIPa19wb3NpdGlvbkFzc2V0AA1rX2luaXRpYWxpemVkAg1rX2luaXRpYWxpemVkAAhrX3BhdXNlZAIIa19wYXVzZWQABWtfZmVlAgVrX2ZlZQAPa19mdW5kaW5nUGVyaW9kAg9rX2Z1bmRpbmdQZXJpb2QAEWtfaW5pdE1hcmdpblJhdGlvAhFrX2luaXRNYXJnaW5SYXRpbwAYa19tYWludGVuYW5jZU1hcmdpblJhdGlvAgVrX21tcgAVa19saXF1aWRhdGlvbkZlZVJhdGlvAhVrX2xpcXVpZGF0aW9uRmVlUmF0aW8AGWtfcGFydGlhbExpcXVpZGF0aW9uUmF0aW8CFmtfcGFydExpcXVpZGF0aW9uUmF0aW8ADWtfc3ByZWFkTGltaXQCDWtfc3ByZWFkTGltaXQAEGtfbWF4UHJpY2VJbXBhY3QCEGtfbWF4UHJpY2VJbXBhY3QAEGtfbWF4UHJpY2VTcHJlYWQCEGtfbWF4UHJpY2VTcHJlYWQADWtfbGFzdERhdGFTdHICDWtfbGFzdERhdGFTdHIADmtfbGFzdE1pbnV0ZUlkAg5rX2xhc3RNaW51dGVJZAAda190d2FwRGF0YUxhc3RDdW11bGF0aXZlUHJpY2UCHWtfdHdhcERhdGFMYXN0Q3VtdWxhdGl2ZVByaWNlABNrX3R3YXBEYXRhTGFzdFByaWNlAhNrX3R3YXBEYXRhTGFzdFByaWNlABprX3R3YXBEYXRhUHJldmlvdXNNaW51dGVJZAIaa190d2FwRGF0YVByZXZpb3VzTWludXRlSWQAJWtfbGF0ZXN0TG9uZ0N1bXVsYXRpdmVQcmVtaXVtRnJhY3Rpb24CG2tfbGF0ZXN0TG9uZ1ByZW1pdW1GcmFjdGlvbgAma19sYXRlc3RTaG9ydEN1bXVsYXRpdmVQcmVtaXVtRnJhY3Rpb24CHGtfbGF0ZXN0U2hvcnRQcmVtaXVtRnJhY3Rpb24AEmtfbmV4dEZ1bmRpbmdCbG9jawIea19uZXh0RnVuZGluZ0Jsb2NrTWluVGltZXN0YW1wABFrX2xvbmdGdW5kaW5nUmF0ZQIRa19sb25nRnVuZGluZ1JhdGUAEmtfc2hvcnRGdW5kaW5nUmF0ZQISa19zaG9ydEZ1bmRpbmdSYXRlABNrX3F1b3RlQXNzZXRSZXNlcnZlAghrX3F0QXN0UgASa19iYXNlQXNzZXRSZXNlcnZlAghrX2JzQXN0UgASa19xdW90ZUFzc2V0V2VpZ2h0AghrX3F0QXN0VwARa19iYXNlQXNzZXRXZWlnaHQCCGtfYnNBc3RXABNrX3RvdGFsUG9zaXRpb25TaXplAhNrX3RvdGFsUG9zaXRpb25TaXplABdrX3RvdGFsTG9uZ1Bvc2l0aW9uU2l6ZQIXa190b3RhbExvbmdQb3NpdGlvblNpemUAGGtfdG90YWxTaG9ydFBvc2l0aW9uU2l6ZQIYa190b3RhbFNob3J0UG9zaXRpb25TaXplABRrX2N1bXVsYXRpdmVOb3Rpb25hbAIUa19jdW11bGF0aXZlTm90aW9uYWwAFmtfb3BlbkludGVyZXN0Tm90aW9uYWwCFmtfb3BlbkludGVyZXN0Tm90aW9uYWwAFGtfY29vcmRpbmF0b3JBZGRyZXNzAhRrX2Nvb3JkaW5hdG9yQWRkcmVzcwAPa192YXVsdF9hZGRyZXNzAg9rX3ZhdWx0X2FkZHJlc3MAD2tfYWRtaW5fYWRkcmVzcwIPa19hZG1pbl9hZGRyZXNzABJrX2FkbWluX3B1YmxpY19rZXkCEmtfYWRtaW5fcHVibGljX2tleQANa19xdW90ZV9hc3NldAINa19xdW90ZV9hc3NldAAPa19xdW90ZV9zdGFraW5nAg9rX3F1b3RlX3N0YWtpbmcAEWtfc3Rha2luZ19hZGRyZXNzAhFrX3N0YWtpbmdfYWRkcmVzcwAPa19taW5lcl9hZGRyZXNzAg9rX21pbmVyX2FkZHJlc3MAEGtfb3JkZXJzX2FkZHJlc3MCEGtfb3JkZXJzX2FkZHJlc3MAEmtfcmVmZXJyYWxfYWRkcmVzcwISa19yZWZlcnJhbF9hZGRyZXNzABFrX21hbmFnZXJfYWRkcmVzcwIRa19tYW5hZ2VyX2FkZHJlc3MAFGtfY29sbGF0ZXJhbF9hZGRyZXNzAhRrX2NvbGxhdGVyYWxfYWRkcmVzcwASa19leGNoYW5nZV9hZGRyZXNzAhJrX2V4Y2hhbmdlX2FkZHJlc3MAFWtfbmZ0X21hbmFnZXJfYWRkcmVzcwIVa19uZnRfbWFuYWdlcl9hZGRyZXNzACBrX3RyYWRlcl9tYXJrZXRfYXNzZXRfY29sbGF0ZXJhbAIga190cmFkZXJfbWFya2V0X2Fzc2V0X2NvbGxhdGVyYWwBDnRvQ29tcG9zaXRlS2V5AgRfa2V5CF9hZGRyZXNzCQCsAgIJAKwCAgUEX2tleQIBXwUIX2FkZHJlc3MBC2Nvb3JkaW5hdG9yAAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJARFAZXh0ck5hdGl2ZSgxMDUzKQIFBHRoaXMFFGtfY29vcmRpbmF0b3JBZGRyZXNzAhNDb29yZGluYXRvciBub3Qgc2V0AQxhZG1pbkFkZHJlc3MACQCmCAEJARFAZXh0ck5hdGl2ZSgxMDUzKQIJAQtjb29yZGluYXRvcgAFD2tfYWRtaW5fYWRkcmVzcwEOYWRtaW5QdWJsaWNLZXkACQDZBAEJARFAZXh0ck5hdGl2ZSgxMDUzKQIJAQtjb29yZGluYXRvcgAFEmtfYWRtaW5fcHVibGljX2tleQEKcXVvdGVBc3NldAAJANkEAQkBEUBleHRyTmF0aXZlKDEwNTMpAgkBC2Nvb3JkaW5hdG9yAAUNa19xdW90ZV9hc3NldAERcXVvdGVBc3NldFN0YWtpbmcACQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkBEUBleHRyTmF0aXZlKDEwNTMpAgkBC2Nvb3JkaW5hdG9yAAUPa19xdW90ZV9zdGFraW5nAhtRdW90ZSBhc3NldCBzdGFraW5nIG5vdCBzZXQBDnN0YWtpbmdBZGRyZXNzAAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJARFAZXh0ck5hdGl2ZSgxMDUzKQIJAQtjb29yZGluYXRvcgAFEWtfc3Rha2luZ19hZGRyZXNzAg9TdGFraW5nIG5vdCBzZXQBDHZhdWx0QWRkcmVzcwAJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQERQGV4dHJOYXRpdmUoMTA1MykCCQELY29vcmRpbmF0b3IABQ9rX3ZhdWx0X2FkZHJlc3MCDVZhdWx0IG5vdCBzZXQBDG1pbmVyQWRkcmVzcwAJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQERQGV4dHJOYXRpdmUoMTA1MykCCQELY29vcmRpbmF0b3IABQ9rX21pbmVyX2FkZHJlc3MCDU1pbmVyIG5vdCBzZXQBDW9yZGVyc0FkZHJlc3MACQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkBEUBleHRyTmF0aXZlKDEwNTMpAgkBC2Nvb3JkaW5hdG9yAAUQa19vcmRlcnNfYWRkcmVzcwIOT3JkZXJzIG5vdCBzZXQBD3JlZmVycmFsQWRkcmVzcwAJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQERQGV4dHJOYXRpdmUoMTA1MykCCQELY29vcmRpbmF0b3IABRJrX3JlZmVycmFsX2FkZHJlc3MCEFJlZmVycmFsIG5vdCBzZXQBEW5mdE1hbmFnZXJBZGRyZXNzAAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJARFAZXh0ck5hdGl2ZSgxMDUzKQIJAQtjb29yZGluYXRvcgAFFWtfbmZ0X21hbmFnZXJfYWRkcmVzcwITTkZUIE1hbmFnZXIgbm90IHNldAERY29sbGF0ZXJhbEFkZHJlc3MACQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkBEUBleHRyTmF0aXZlKDEwNTMpAgkBC2Nvb3JkaW5hdG9yAAUUa19jb2xsYXRlcmFsX2FkZHJlc3MCGkNvbGxhdGVyYWwgTWFuYWdlciBub3Qgc2V0AQtzd2FwQWRkcmVzcwAJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgkBC2Nvb3JkaW5hdG9yAAUSa19leGNoYW5nZV9hZGRyZXNzAg9ObyBzd2FwIGFkZHJlc3MCFEludmFsaWQgc3dhcCBhZGRyZXNzABFrX3doaXRlbGlzdF9hc3NldAIRa193aGl0ZWxpc3RfYXNzZXQBEGlzV2hpdGVsaXN0QXNzZXQBCF9hc3NldElkCQELdmFsdWVPckVsc2UCCQCbCAIJARFjb2xsYXRlcmFsQWRkcmVzcwAJAQ50b0NvbXBvc2l0ZUtleQIFEWtfd2hpdGVsaXN0X2Fzc2V0BQhfYXNzZXRJZAcADWtfdG9rZW5fcGFyYW0CDWtfdG9rZW5fcGFyYW0ADGtfdG9rZW5fdHlwZQIMa190b2tlbl90eXBlABhGRUVfUkVEVUNUSU9OX1RPS0VOX1RZUEUCDWZlZV9yZWR1Y3Rpb24ACERJUl9MT05HAAEACURJUl9TSE9SVAACAA1UV0FQX0lOVEVSVkFMAA8AD09SQUNMRV9JTlRFUlZBTAAPAAdTRUNPTkRTAOgHAA9ERUNJTUFMX05VTUJFUlMABgAMREVDSU1BTF9VTklUCQBoAgABCQBoAgkAaAIJAGgCCQBoAgkAaAIACgAKAAoACgAKAAoAB09ORV9EQVkJAGgCAICjBQUMREVDSU1BTF9VTklUAAhBTExfRkVFUwBkAA9QTkxfT1BUSU9OX1NQT1QAAQARUE5MX09QVElPTl9PUkFDTEUAAgEBcwECX3gJAKwCAgkApAMBBQJfeAIBLAEEZGl2ZAICX3gCX3kJAG4EBQJfeAUMREVDSU1BTF9VTklUBQJfeQUISEFMRkVWRU4BBG11bGQCAl94Al95CQBuBAUCX3gFAl95BQxERUNJTUFMX1VOSVQFCEhBTEZFVkVOAQVzcXJ0ZAECX3gJAQRzcXJ0BAUCX3gFD0RFQ0lNQUxfTlVNQkVSUwUPREVDSU1BTF9OVU1CRVJTBQhIQUxGRVZFTgEEcG93ZAICX3gCX3kJAGwGBQJfeAUPREVDSU1BTF9OVU1CRVJTBQJfeQUPREVDSU1BTF9OVU1CRVJTBQ9ERUNJTUFMX05VTUJFUlMFCEhBTEZFVkVOAQViZGl2ZAICX3gCX3kJAL0CBAUCX3gJALYCAQUMREVDSU1BTF9VTklUBQJfeQUISEFMRkVWRU4BBWJtdWxkAgJfeAJfeQkAvQIEBQJfeAUCX3kJALYCAQUMREVDSU1BTF9VTklUBQhIQUxGRVZFTgEGYnNxcnRkAQJfeAkBCnNxcnRCaWdJbnQEBQJfeAUPREVDSU1BTF9OVU1CRVJTBQ9ERUNJTUFMX05VTUJFUlMFCEhBTEZFVkVOAQVicG93ZAICX3gCX3kJAHYGBQJfeAUPREVDSU1BTF9OVU1CRVJTBQJfeQUPREVDSU1BTF9OVU1CRVJTBQ9ERUNJTUFMX05VTUJFUlMFCEhBTEZFVkVOAQNhYnMBAl94AwkAZgIFAl94AAAFAl94CQEBLQEFAl94AQR2bWF4AgJfeAJfeQMJAGcCBQJfeAUCX3kFAl94BQJfeQEJbGlzdFRvU3RyAQVfbGlzdAoBBV9qb2luAgthY2N1bXVsYXRvcgN2YWwJAKwCAgkArAICBQthY2N1bXVsYXRvcgUDdmFsAgEsBApuZXdMaXN0U3RyCgACJGwFBV9saXN0CgACJHMJAJADAQUCJGwKAAUkYWNjMAIACgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQVfam9pbgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMjAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUBAtuZXdMaXN0U3RyVQkAswICBQpuZXdMaXN0U3RyAAEEC25ld0xpc3RTdHJSAwkAAAIJAK8CAgULbmV3TGlzdFN0clUAAQIBLAkAsAICBQtuZXdMaXN0U3RyVQABBQtuZXdMaXN0U3RyVQULbmV3TGlzdFN0clIBCXN0clRvTGlzdAEEX3N0cgkAtQkCBQRfc3RyAgEsAQtwdXNoVG9RdWV1ZQMFX2xpc3QIX21heFNpemUGX3ZhbHVlAwkAZgIJAJADAQUFX2xpc3QFCF9tYXhTaXplCQDNCAIJANEIAgUFX2xpc3QAAAUGX3ZhbHVlCQDNCAIFBV9saXN0BQZfdmFsdWUBA2ludAEBawkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFBHRoaXMFAWsJAKwCAgINbm8gdmFsdWUgZm9yIAUBawEFaW50T3ICAWsDZGVmCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFAWsFA2RlZgEEc3RyQQIIX2FkZHJlc3MEX2tleQQDdmFsCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUIX2FkZHJlc3MFBF9rZXkJAKwCAgIRTm8gdmFsdWUgZm9yIGtleSAFBF9rZXkFA3ZhbAEEaW50QQIIX2FkZHJlc3MEX2tleQQDdmFsCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUIX2FkZHJlc3MFBF9rZXkJAKwCAgIRTm8gdmFsdWUgZm9yIGtleSAFBF9rZXkFA3ZhbAEIY2JhbGFuY2UACQEDaW50AQUJa19iYWxhbmNlAQNmZWUACQEDaW50AQUFa19mZWUBD2luaXRNYXJnaW5SYXRpbwAJAQNpbnQBBRFrX2luaXRNYXJnaW5SYXRpbwEGcXRBc3RSAAkBA2ludAEFE2tfcXVvdGVBc3NldFJlc2VydmUBBmJzQXN0UgAJAQNpbnQBBRJrX2Jhc2VBc3NldFJlc2VydmUBBnF0QXN0VwAJAQVpbnRPcgIFEmtfcXVvdGVBc3NldFdlaWdodAUMREVDSU1BTF9VTklUAQZic0FzdFcACQEFaW50T3ICBRFrX2Jhc2VBc3NldFdlaWdodAUMREVDSU1BTF9VTklUARF0b3RhbFBvc2l0aW9uU2l6ZQAJAQNpbnQBBRNrX3RvdGFsUG9zaXRpb25TaXplARJjdW11bGF0aXZlTm90aW9uYWwACQEDaW50AQUUa19jdW11bGF0aXZlTm90aW9uYWwBFG9wZW5JbnRlcmVzdE5vdGlvbmFsAAkBA2ludAEFFmtfb3BlbkludGVyZXN0Tm90aW9uYWwBGW5leHRGdW5kaW5nQmxvY2tUaW1lc3RhbXAACQEDaW50AQUSa19uZXh0RnVuZGluZ0Jsb2NrARBmdW5kaW5nUGVyaW9kUmF3AAkBA2ludAEFD2tfZnVuZGluZ1BlcmlvZAEUZnVuZGluZ1BlcmlvZERlY2ltYWwACQBoAgkBEGZ1bmRpbmdQZXJpb2RSYXcABQxERUNJTUFMX1VOSVQBFGZ1bmRpbmdQZXJpb2RTZWNvbmRzAAkAaAIJARBmdW5kaW5nUGVyaW9kUmF3AAUHU0VDT05EUwEWbWFpbnRlbmFuY2VNYXJnaW5SYXRpbwAJAQNpbnQBBRhrX21haW50ZW5hbmNlTWFyZ2luUmF0aW8BE2xpcXVpZGF0aW9uRmVlUmF0aW8ACQEDaW50AQUVa19saXF1aWRhdGlvbkZlZVJhdGlvARdwYXJ0aWFsTGlxdWlkYXRpb25SYXRpbwAJAQNpbnQBBRlrX3BhcnRpYWxMaXF1aWRhdGlvblJhdGlvAQtzcHJlYWRMaW1pdAAJAQNpbnQBBQ1rX3NwcmVhZExpbWl0AQ5tYXhQcmljZUltcGFjdAAJAQNpbnQBBRBrX21heFByaWNlSW1wYWN0AQ5tYXhQcmljZVNwcmVhZAAJAQNpbnQBBRBrX21heFByaWNlU3ByZWFkASNsYXRlc3RMb25nQ3VtdWxhdGl2ZVByZW1pdW1GcmFjdGlvbgAJAQNpbnQBBSVrX2xhdGVzdExvbmdDdW11bGF0aXZlUHJlbWl1bUZyYWN0aW9uASRsYXRlc3RTaG9ydEN1bXVsYXRpdmVQcmVtaXVtRnJhY3Rpb24ACQEDaW50AQUma19sYXRlc3RTaG9ydEN1bXVsYXRpdmVQcmVtaXVtRnJhY3Rpb24BFnRvdGFsU2hvcnRQb3NpdGlvblNpemUACQEDaW50AQUYa190b3RhbFNob3J0UG9zaXRpb25TaXplARV0b3RhbExvbmdQb3NpdGlvblNpemUACQEDaW50AQUXa190b3RhbExvbmdQb3NpdGlvblNpemUBD2dldEFjdHVhbENhbGxlcgEBaQkBC3ZhbHVlT3JFbHNlAgkAnQgCCQENb3JkZXJzQWRkcmVzcwACCGtfc2VuZGVyCQClCAEIBQFpBmNhbGxlcgEWcmVxdWlyZU1vcmVNYXJnaW5SYXRpbwMMX21hcmdpblJhdGlvEF9iYXNlTWFyZ2luUmF0aW8UX2xhcmdlclRoYW5PckVxdWFsVG8EFHJlbWFpbmluZ01hcmdpblJhdGlvCQBlAgUMX21hcmdpblJhdGlvBRBfYmFzZU1hcmdpblJhdGlvAwMFFF9sYXJnZXJUaGFuT3JFcXVhbFRvCQBmAgAABRRyZW1haW5pbmdNYXJnaW5SYXRpbwcJAAIBAg5JbnZhbGlkIG1hcmdpbgMDCQEBIQEFFF9sYXJnZXJUaGFuT3JFcXVhbFRvCQBnAgUUcmVtYWluaW5nTWFyZ2luUmF0aW8AAAcJAAIBAg5JbnZhbGlkIG1hcmdpbgYBH2xhdGVzdEN1bXVsYXRpdmVQcmVtaXVtRnJhY3Rpb24BDV9wb3NpdGlvblNpemUDCQAAAgUNX3Bvc2l0aW9uU2l6ZQAACQACAQIsU2hvdWxkIG5vdCBiZSBjYWxsZWQgd2l0aCBfcG9zaXRpb25TaXplID09IDADCQBmAgUNX3Bvc2l0aW9uU2l6ZQAACQEjbGF0ZXN0TG9uZ0N1bXVsYXRpdmVQcmVtaXVtRnJhY3Rpb24ACQEkbGF0ZXN0U2hvcnRDdW11bGF0aXZlUHJlbWl1bUZyYWN0aW9uAAELZ2V0UG9zaXRpb24BB190cmFkZXIED3Bvc2l0aW9uU2l6ZU9wdAkAmggCBQR0aGlzCQEOdG9Db21wb3NpdGVLZXkCBQ5rX3Bvc2l0aW9uU2l6ZQUHX3RyYWRlcgQHJG1hdGNoMAUPcG9zaXRpb25TaXplT3B0AwkAAQIFByRtYXRjaDACA0ludAQMcG9zaXRpb25TaXplBQckbWF0Y2gwCQCWCgQFDHBvc2l0aW9uU2l6ZQkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwkBDnRvQ29tcG9zaXRlS2V5AgUQa19wb3NpdGlvbk1hcmdpbgUHX3RyYWRlcgkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwkBDnRvQ29tcG9zaXRlS2V5AgUWa19wb3NpdGlvbk9wZW5Ob3Rpb25hbAUHX3RyYWRlcgkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwkBDnRvQ29tcG9zaXRlS2V5AgUua19wb3NpdGlvbkxhc3RVcGRhdGVkQ3VtdWxhdGl2ZVByZW1pdW1GcmFjdGlvbgUHX3RyYWRlcgkAlgoEAAAAAAAAAAABEGdldFBvc2l0aW9uQXNzZXQBB190cmFkZXIEEHBvc2l0aW9uQXNzZXRPcHQJAJ0IAgUEdGhpcwkBDnRvQ29tcG9zaXRlS2V5AgUPa19wb3NpdGlvbkFzc2V0BQdfdHJhZGVyBAckbWF0Y2gwBRBwb3NpdGlvbkFzc2V0T3B0AwkAAQIFByRtYXRjaDACBlN0cmluZwQNcG9zaXRpb25Bc3NldAUHJG1hdGNoMAUNcG9zaXRpb25Bc3NldAkA2AQBCQEKcXVvdGVBc3NldAABE3JlcXVpcmVPcGVuUG9zaXRpb24BB190cmFkZXIDCQAAAggJAQtnZXRQb3NpdGlvbgEFB190cmFkZXICXzEAAAkAAgECEE5vIG9wZW4gcG9zaXRpb24GAQtpbml0aWFsaXplZAAJAQt2YWx1ZU9yRWxzZQIJAJsIAgUEdGhpcwUNa19pbml0aWFsaXplZAcBBnBhdXNlZAAJAQt2YWx1ZU9yRWxzZQIJAJsIAgUEdGhpcwUIa19wYXVzZWQHAQ11cGRhdGVSZXNlcnZlAwZfaXNBZGQRX3F1b3RlQXNzZXRBbW91bnQQX2Jhc2VBc3NldEFtb3VudAMFBl9pc0FkZAQHbmV3QmFzZQkAZQIJAQZic0FzdFIABRBfYmFzZUFzc2V0QW1vdW50AwkAZwIAAAUHbmV3QmFzZQkAAgECKlR4IGxlYWQgdG8gYmFzZSBhc3NldCByZXNlcnZlIDw9IDAsIHJldmVydAkAlgoECQBkAgkBBnF0QXN0UgAFEV9xdW90ZUFzc2V0QW1vdW50BQduZXdCYXNlCQBkAgkBEXRvdGFsUG9zaXRpb25TaXplAAUQX2Jhc2VBc3NldEFtb3VudAkAZAIJARJjdW11bGF0aXZlTm90aW9uYWwABRFfcXVvdGVBc3NldEFtb3VudAQIbmV3UXVvdGUJAGUCCQEGcXRBc3RSAAURX3F1b3RlQXNzZXRBbW91bnQDCQBnAgAABQhuZXdRdW90ZQkAAgECKlR4IGxlYWQgdG8gYmFzZSBxdW90ZSByZXNlcnZlIDw9IDAsIHJldmVydAkAlgoEBQhuZXdRdW90ZQkAZAIJAQZic0FzdFIABRBfYmFzZUFzc2V0QW1vdW50CQBlAgkBEXRvdGFsUG9zaXRpb25TaXplAAUQX2Jhc2VBc3NldEFtb3VudAkAZQIJARJjdW11bGF0aXZlTm90aW9uYWwABRFfcXVvdGVBc3NldEFtb3VudAENY2FsY0ludmFyaWFudAQHX3F0QXN0UgdfcXRBc3RXB19ic0FzdFIHX2JzQXN0VwkBBG11bGQCCQEEbXVsZAIFB19xdEFzdFIFB19xdEFzdFcJAQRtdWxkAgUHX2JzQXN0UgUHX2JzQXN0VwEJc3dhcElucHV0AgZfaXNBZGQRX3F1b3RlQXNzZXRBbW91bnQEB19xdEFzdFIJAQZxdEFzdFIABAdfYnNBc3RSCQEGYnNBc3RSAAQHX3F0QXN0VwkBBnF0QXN0VwAEB19ic0FzdFcJAQZic0FzdFcABAFrCQENY2FsY0ludmFyaWFudAQFB19xdEFzdFIFB19xdEFzdFcFB19ic0FzdFIFB19ic0FzdFcEFnF1b3RlQXNzZXRSZXNlcnZlQWZ0ZXIDBQZfaXNBZGQJAGQCBQdfcXRBc3RSBRFfcXVvdGVBc3NldEFtb3VudAkAZQIFB19xdEFzdFIFEV9xdW90ZUFzc2V0QW1vdW50BBViYXNlQXNzZXRSZXNlcnZlQWZ0ZXIJAQRkaXZkAgUBawUWcXVvdGVBc3NldFJlc2VydmVBZnRlcgQYYW1vdW50QmFzZUFzc2V0Qm91Z2h0QWJzCQEEZGl2ZAIJAQNhYnMBCQBlAgUVYmFzZUFzc2V0UmVzZXJ2ZUFmdGVyBQdfYnNBc3RSBQdfcXRBc3RXBBVhbW91bnRCYXNlQXNzZXRCb3VnaHQDBQZfaXNBZGQFGGFtb3VudEJhc2VBc3NldEJvdWdodEFicwkBAS0BBRhhbW91bnRCYXNlQXNzZXRCb3VnaHRBYnMEDSR0MDE2MzE5MTY1MTIJAQ11cGRhdGVSZXNlcnZlAwUGX2lzQWRkBRFfcXVvdGVBc3NldEFtb3VudAUYYW1vdW50QmFzZUFzc2V0Qm91Z2h0QWJzBBdxdW90ZUFzc2V0UmVzZXJ2ZUFmdGVyMQgFDSR0MDE2MzE5MTY1MTICXzEEFmJhc2VBc3NldFJlc2VydmVBZnRlcjEIBQ0kdDAxNjMxOTE2NTEyAl8yBBd0b3RhbFBvc2l0aW9uU2l6ZUFmdGVyMQgFDSR0MDE2MzE5MTY1MTICXzMEGGN1bXVsYXRpdmVOb3Rpb25hbEFmdGVyMQgFDSR0MDE2MzE5MTY1MTICXzQEC3ByaWNlQmVmb3JlCQEEZGl2ZAIJAQRtdWxkAgUHX3F0QXN0UgUHX3F0QXN0VwkBBG11bGQCBQdfYnNBc3RSBQdfYnNBc3RXBAttYXJrZXRQcmljZQkBBGRpdmQCBRFfcXVvdGVBc3NldEFtb3VudAUYYW1vdW50QmFzZUFzc2V0Qm91Z2h0QWJzBAlwcmljZURpZmYJAQNhYnMBCQBlAgULcHJpY2VCZWZvcmUFC21hcmtldFByaWNlBAtwcmljZUltcGFjdAkAZQIFDERFQ0lNQUxfVU5JVAkBBGRpdmQCBQtwcmljZUJlZm9yZQkAZAIFC3ByaWNlQmVmb3JlBQlwcmljZURpZmYEE21heFByaWNlSW1wYWN0VmFsdWUJAQ5tYXhQcmljZUltcGFjdAADCQBmAgULcHJpY2VJbXBhY3QFE21heFByaWNlSW1wYWN0VmFsdWUJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICDVByaWNlIGltcGFjdCAJAKQDAQULcHJpY2VJbXBhY3QCFCA+IG1heCBwcmljZSBpbXBhY3QgCQCkAwEFE21heFByaWNlSW1wYWN0VmFsdWUCFSBiZWZvcmUgcXVvdGUgYXNzZXQ6IAkApAMBBQdfcXRBc3RSAhQgYmVmb3JlIGJhc2UgYXNzZXQ6IAkApAMBBQdfYnNBc3RSAiEgcXVvdGUgYXNzZXQgYW1vdW50IHRvIGV4Y2hhbmdlOiAJAKQDAQURX3F1b3RlQXNzZXRBbW91bnQCDyBwcmljZSBiZWZvcmU6IAkApAMBBQtwcmljZUJlZm9yZQIOIG1hcmtldFByaWNlOiAJAKQDAQULbWFya2V0UHJpY2UJAJcKBQUVYW1vdW50QmFzZUFzc2V0Qm91Z2h0BRdxdW90ZUFzc2V0UmVzZXJ2ZUFmdGVyMQUWYmFzZUFzc2V0UmVzZXJ2ZUFmdGVyMQUXdG90YWxQb3NpdGlvblNpemVBZnRlcjEFGGN1bXVsYXRpdmVOb3Rpb25hbEFmdGVyMQEiY2FsY1JlbWFpbk1hcmdpbldpdGhGdW5kaW5nUGF5bWVudAQQX29sZFBvc2l0aW9uU2l6ZRJfb2xkUG9zaXRpb25NYXJnaW4lX29sZFBvc2l0aW9uQ3VtdWxhdGl2ZVByZW1pdW1GcmFjdGlvbgxfbWFyZ2luRGVsdGEEDmZ1bmRpbmdQYXltZW50AwkBAiE9AgUQX29sZFBvc2l0aW9uU2l6ZQAABCBfbGF0ZXN0Q3VtdWxhdGl2ZVByZW1pdW1GcmFjdGlvbgkBH2xhdGVzdEN1bXVsYXRpdmVQcmVtaXVtRnJhY3Rpb24BBRBfb2xkUG9zaXRpb25TaXplCQEEbXVsZAIJAGUCBSBfbGF0ZXN0Q3VtdWxhdGl2ZVByZW1pdW1GcmFjdGlvbgUlX29sZFBvc2l0aW9uQ3VtdWxhdGl2ZVByZW1pdW1GcmFjdGlvbgUQX29sZFBvc2l0aW9uU2l6ZQAABAxzaWduZWRNYXJnaW4JAGQCCQBlAgUMX21hcmdpbkRlbHRhBQ5mdW5kaW5nUGF5bWVudAUSX29sZFBvc2l0aW9uTWFyZ2luBA0kdDAxODAzMTE4MTU4AwkAZgIAAAUMc2lnbmVkTWFyZ2luCQCUCgIAAAkBA2FicwEFDHNpZ25lZE1hcmdpbgkAlAoCCQEDYWJzAQUMc2lnbmVkTWFyZ2luAAAEDHJlbWFpbk1hcmdpbggFDSR0MDE4MDMxMTgxNTgCXzEEB2JhZERlYnQIBQ0kdDAxODAzMTE4MTU4Al8yCQCVCgMFDHJlbWFpbk1hcmdpbgUHYmFkRGVidAUOZnVuZGluZ1BheW1lbnQBFnN3YXBPdXRwdXRXaXRoUmVzZXJ2ZXMHBl9pc0FkZBBfYmFzZUFzc2V0QW1vdW50FF9jaGVja01heFByaWNlSW1wYWN0El9xdW90ZUFzc2V0UmVzZXJ2ZRFfcXVvdGVBc3NldFdlaWdodBFfYmFzZUFzc2V0UmVzZXJ2ZRBfYmFzZUFzc2V0V2VpZ2h0BAtwcmljZUJlZm9yZQkBBGRpdmQCCQEEbXVsZAIFEl9xdW90ZUFzc2V0UmVzZXJ2ZQURX3F1b3RlQXNzZXRXZWlnaHQJAQRtdWxkAgURX2Jhc2VBc3NldFJlc2VydmUFEF9iYXNlQXNzZXRXZWlnaHQDCQAAAgUQX2Jhc2VBc3NldEFtb3VudAAACQACAQIZSW52YWxpZCBiYXNlIGFzc2V0IGFtb3VudAQBawkBDWNhbGNJbnZhcmlhbnQEBRJfcXVvdGVBc3NldFJlc2VydmUFEV9xdW90ZUFzc2V0V2VpZ2h0BRFfYmFzZUFzc2V0UmVzZXJ2ZQUQX2Jhc2VBc3NldFdlaWdodAQYYmFzZUFzc2V0UG9vbEFtb3VudEFmdGVyAwUGX2lzQWRkCQBkAgURX2Jhc2VBc3NldFJlc2VydmUFEF9iYXNlQXNzZXRBbW91bnQJAGUCBRFfYmFzZUFzc2V0UmVzZXJ2ZQUQX2Jhc2VBc3NldEFtb3VudAQPcXVvdGVBc3NldEFmdGVyCQEEZGl2ZAIFAWsJAQRtdWxkAgUYYmFzZUFzc2V0UG9vbEFtb3VudEFmdGVyBRBfYmFzZUFzc2V0V2VpZ2h0BA5xdW90ZUFzc2V0U29sZAkBA2FicwEJAGUCBQ9xdW90ZUFzc2V0QWZ0ZXIJAQRtdWxkAgUSX3F1b3RlQXNzZXRSZXNlcnZlBRFfcXVvdGVBc3NldFdlaWdodAQTbWF4UHJpY2VJbXBhY3RWYWx1ZQkBDm1heFByaWNlSW1wYWN0AAQNJHQwMTkzMjYxOTUxOQkBDXVwZGF0ZVJlc2VydmUDCQEBIQEFBl9pc0FkZAUOcXVvdGVBc3NldFNvbGQFEF9iYXNlQXNzZXRBbW91bnQEF3F1b3RlQXNzZXRSZXNlcnZlQWZ0ZXIxCAUNJHQwMTkzMjYxOTUxOQJfMQQWYmFzZUFzc2V0UmVzZXJ2ZUFmdGVyMQgFDSR0MDE5MzI2MTk1MTkCXzIEF3RvdGFsUG9zaXRpb25TaXplQWZ0ZXIxCAUNJHQwMTkzMjYxOTUxOQJfMwQYY3VtdWxhdGl2ZU5vdGlvbmFsQWZ0ZXIxCAUNJHQwMTkzMjYxOTUxOQJfNAQLbWFya2V0UHJpY2UJAQRkaXZkAgUOcXVvdGVBc3NldFNvbGQFEF9iYXNlQXNzZXRBbW91bnQECXByaWNlRGlmZgkBA2FicwEJAGUCBQtwcmljZUJlZm9yZQULbWFya2V0UHJpY2UEC3ByaWNlSW1wYWN0CQBlAgUMREVDSU1BTF9VTklUCQEEZGl2ZAIFC3ByaWNlQmVmb3JlCQBkAgULcHJpY2VCZWZvcmUFCXByaWNlRGlmZgMDCQBmAgULcHJpY2VJbXBhY3QFE21heFByaWNlSW1wYWN0VmFsdWUFFF9jaGVja01heFByaWNlSW1wYWN0BwkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgINUHJpY2UgaW1wYWN0IAkApAMBBQtwcmljZUltcGFjdAIUID4gbWF4IHByaWNlIGltcGFjdCAJAKQDAQUTbWF4UHJpY2VJbXBhY3RWYWx1ZQIVIGJlZm9yZSBxdW90ZSBhc3NldDogCQCkAwEFEl9xdW90ZUFzc2V0UmVzZXJ2ZQIUIGJlZm9yZSBiYXNlIGFzc2V0OiAJAKQDAQURX2Jhc2VBc3NldFJlc2VydmUCICBiYXNlIGFzc2V0IGFtb3VudCB0byBleGNoYW5nZTogCQCkAwEFEF9iYXNlQXNzZXRBbW91bnQCDyBwcmljZSBiZWZvcmU6IAkApAMBBQtwcmljZUJlZm9yZQIPIG1hcmtldCBwcmljZTogCQCkAwEFC21hcmtldFByaWNlCQCaCggFDnF1b3RlQXNzZXRTb2xkBRdxdW90ZUFzc2V0UmVzZXJ2ZUFmdGVyMQUWYmFzZUFzc2V0UmVzZXJ2ZUFmdGVyMQUXdG90YWxQb3NpdGlvblNpemVBZnRlcjEFGGN1bXVsYXRpdmVOb3Rpb25hbEFmdGVyMQkAZQIJARV0b3RhbExvbmdQb3NpdGlvblNpemUAAwUGX2lzQWRkCQEDYWJzAQUQX2Jhc2VBc3NldEFtb3VudAAACQBlAgkBFnRvdGFsU2hvcnRQb3NpdGlvblNpemUAAwkBASEBBQZfaXNBZGQJAQNhYnMBBRBfYmFzZUFzc2V0QW1vdW50AAAFC3ByaWNlSW1wYWN0AQpzd2FwT3V0cHV0AwZfaXNBZGQQX2Jhc2VBc3NldEFtb3VudBRfY2hlY2tNYXhQcmljZUltcGFjdAkBFnN3YXBPdXRwdXRXaXRoUmVzZXJ2ZXMHBQZfaXNBZGQFEF9iYXNlQXNzZXRBbW91bnQFFF9jaGVja01heFByaWNlSW1wYWN0CQEGcXRBc3RSAAkBBnF0QXN0VwAJAQZic0FzdFIACQEGYnNBc3RXAAESZ2V0T3JhY2xlVHdhcFByaWNlAAQGb3JhY2xlCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkBEUBleHRyTmF0aXZlKDEwNTMpAgUEdGhpcwUFa19vcmECAAQIcHJpY2VLZXkJARFAZXh0ck5hdGl2ZSgxMDUzKQIFBHRoaXMFCWtfb3JhX2tleQQIYmxvY2tLZXkJARFAZXh0ck5hdGl2ZSgxMDUzKQIFBHRoaXMFD2tfb3JhX2Jsb2NrX2tleQQJbGFzdFZhbHVlCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUGb3JhY2xlBQhwcmljZUtleQkArAICCQCsAgIJAKwCAgIiQ2FuIG5vdCBnZXQgb3JhY2xlIHByaWNlLiBPcmFjbGU6IAkApQgBBQZvcmFjbGUCBiBrZXk6IAUIcHJpY2VLZXkFCWxhc3RWYWx1ZQEZcmVxdWlyZU5vdE92ZXJTcHJlYWRMaW1pdAISX3F1b3RlQXNzZXRSZXNlcnZlEV9iYXNlQXNzZXRSZXNlcnZlBAtvcmFjbGVQcmljZQkBEmdldE9yYWNsZVR3YXBQcmljZQAECnByaWNlQWZ0ZXIJAQRkaXZkAgUSX3F1b3RlQXNzZXRSZXNlcnZlBRFfYmFzZUFzc2V0UmVzZXJ2ZQQMYXZlcmFnZVByaWNlCQEEZGl2ZAIJAGQCBQtvcmFjbGVQcmljZQUKcHJpY2VBZnRlcgkAaAIAAgUMREVDSU1BTF9VTklUBAxhYnNQcmljZURpZmYJAQRkaXZkAgkBA2FicwEJAGUCBQtvcmFjbGVQcmljZQUKcHJpY2VBZnRlcgUMYXZlcmFnZVByaWNlAwkAZgIFDGFic1ByaWNlRGlmZgkBDm1heFByaWNlU3ByZWFkAAkAAgEJAKwCAgkArAICCQCsAgICDVByaWNlIHNwcmVhZCAJAKQDAQUMYWJzUHJpY2VEaWZmAhQgPiBtYXggcHJpY2Ugc3ByZWFkIAkApAMBCQEObWF4UHJpY2VTcHJlYWQABgEMZ2V0U3BvdFByaWNlAAQSX3F1b3RlQXNzZXRSZXNlcnZlCQEGcXRBc3RSAAQRX2Jhc2VBc3NldFJlc2VydmUJAQZic0FzdFIABAdfcXRBc3RXCQEGcXRBc3RXAAQHX2JzQXN0VwkBBmJzQXN0VwAJAQRkaXZkAgkBBG11bGQCBRJfcXVvdGVBc3NldFJlc2VydmUFB19xdEFzdFcJAQRtdWxkAgURX2Jhc2VBc3NldFJlc2VydmUFB19ic0FzdFcBFmlzT3ZlckZsdWN0dWF0aW9uTGltaXQABAtvcmFjbGVQcmljZQkBEmdldE9yYWNsZVR3YXBQcmljZQAEDGN1cnJlbnRQcmljZQkBDGdldFNwb3RQcmljZQAJAGYCCQEEZGl2ZAIJAQNhYnMBCQBlAgULb3JhY2xlUHJpY2UFDGN1cnJlbnRQcmljZQULb3JhY2xlUHJpY2UJAQtzcHJlYWRMaW1pdAABH2dldFBvc2l0aW9uQWRqdXN0ZWRPcGVuTm90aW9uYWwGDV9wb3NpdGlvblNpemUHX29wdGlvbhJfcXVvdGVBc3NldFJlc2VydmURX3F1b3RlQXNzZXRXZWlnaHQRX2Jhc2VBc3NldFJlc2VydmUQX2Jhc2VBc3NldFdlaWdodAQPcG9zaXRpb25TaXplQWJzCQEDYWJzAQUNX3Bvc2l0aW9uU2l6ZQQHaXNTaG9ydAkAZgIAAAUNX3Bvc2l0aW9uU2l6ZQQQcG9zaXRpb25Ob3Rpb25hbAMJAAACBQdfb3B0aW9uBQ9QTkxfT1BUSU9OX1NQT1QEDSR0MDIyODk0MjMxMTQJARZzd2FwT3V0cHV0V2l0aFJlc2VydmVzBwkBASEBBQdpc1Nob3J0BQ9wb3NpdGlvblNpemVBYnMHBRJfcXVvdGVBc3NldFJlc2VydmUFEV9xdW90ZUFzc2V0V2VpZ2h0BRFfYmFzZUFzc2V0UmVzZXJ2ZQUQX2Jhc2VBc3NldFdlaWdodAQTb3V0UG9zaXRpb25Ob3Rpb25hbAgFDSR0MDIyODk0MjMxMTQCXzEEAngxCAUNJHQwMjI4OTQyMzExNAJfMgQCeDIIBQ0kdDAyMjg5NDIzMTE0Al8zBAJ4MwgFDSR0MDIyODk0MjMxMTQCXzQFE291dFBvc2l0aW9uTm90aW9uYWwJAQRtdWxkAgUPcG9zaXRpb25TaXplQWJzCQESZ2V0T3JhY2xlVHdhcFByaWNlAAUQcG9zaXRpb25Ob3Rpb25hbAErZ2V0UG9zaXRpb25Ob3Rpb25hbEFuZFVucmVhbGl6ZWRQbmxCeVZhbHVlcwcNX3Bvc2l0aW9uU2l6ZRVfcG9zaXRpb25PcGVuTm90aW9uYWwSX3F1b3RlQXNzZXRSZXNlcnZlEV9xdW90ZUFzc2V0V2VpZ2h0EV9iYXNlQXNzZXRSZXNlcnZlEF9iYXNlQXNzZXRXZWlnaHQHX29wdGlvbgMJAAACBQ1fcG9zaXRpb25TaXplAAAJAAIBAhVJbnZhbGlkIHBvc2l0aW9uIHNpemUEB2lzU2hvcnQJAGYCAAAFDV9wb3NpdGlvblNpemUEEHBvc2l0aW9uTm90aW9uYWwJAR9nZXRQb3NpdGlvbkFkanVzdGVkT3Blbk5vdGlvbmFsBgUNX3Bvc2l0aW9uU2l6ZQUHX29wdGlvbgUSX3F1b3RlQXNzZXRSZXNlcnZlBRFfcXVvdGVBc3NldFdlaWdodAURX2Jhc2VBc3NldFJlc2VydmUFEF9iYXNlQXNzZXRXZWlnaHQEDXVucmVhbGl6ZWRQbmwDBQdpc1Nob3J0CQBlAgUVX3Bvc2l0aW9uT3Blbk5vdGlvbmFsBRBwb3NpdGlvbk5vdGlvbmFsCQBlAgUQcG9zaXRpb25Ob3Rpb25hbAUVX3Bvc2l0aW9uT3Blbk5vdGlvbmFsCQCUCgIFEHBvc2l0aW9uTm90aW9uYWwFDXVucmVhbGl6ZWRQbmwBI2dldFBvc2l0aW9uTm90aW9uYWxBbmRVbnJlYWxpemVkUG5sAgdfdHJhZGVyB19vcHRpb24EDSR0MDI0NTM5MjQ2NjcJAQtnZXRQb3NpdGlvbgEFB190cmFkZXIEDHBvc2l0aW9uU2l6ZQgFDSR0MDI0NTM5MjQ2NjcCXzEEDnBvc2l0aW9uTWFyZ2luCAUNJHQwMjQ1MzkyNDY2NwJfMgQUcG9zaXRpb25PcGVuTm90aW9uYWwIBQ0kdDAyNDUzOTI0NjY3Al8zBBFwb3NpdGlvbkxzdFVwZENQRggFDSR0MDI0NTM5MjQ2NjcCXzQJAStnZXRQb3NpdGlvbk5vdGlvbmFsQW5kVW5yZWFsaXplZFBubEJ5VmFsdWVzBwUMcG9zaXRpb25TaXplBRRwb3NpdGlvbk9wZW5Ob3Rpb25hbAkBBnF0QXN0UgAJAQZxdEFzdFcACQEGYnNBc3RSAAkBBmJzQXN0VwAFB19vcHRpb24BD2NhbGNNYXJnaW5SYXRpbwMNX3JlbWFpbk1hcmdpbghfYmFkRGVidBFfcG9zaXRpb25Ob3Rpb25hbAkBBGRpdmQCCQBlAgUNX3JlbWFpbk1hcmdpbgUIX2JhZERlYnQFEV9wb3NpdGlvbk5vdGlvbmFsARZnZXRNYXJnaW5SYXRpb0J5T3B0aW9uAgdfdHJhZGVyB19vcHRpb24EDSR0MDI1MTgwMjUyOTEJAQtnZXRQb3NpdGlvbgEFB190cmFkZXIEDHBvc2l0aW9uU2l6ZQgFDSR0MDI1MTgwMjUyOTECXzEEDnBvc2l0aW9uTWFyZ2luCAUNJHQwMjUxODAyNTI5MQJfMgQDcG9uCAUNJHQwMjUxODAyNTI5MQJfMwQRcG9zaXRpb25Mc3RVcGRDUEYIBQ0kdDAyNTE4MDI1MjkxAl80BA0kdDAyNTI5NzI1MzkwCQEjZ2V0UG9zaXRpb25Ob3Rpb25hbEFuZFVucmVhbGl6ZWRQbmwCBQdfdHJhZGVyBQdfb3B0aW9uBBBwb3NpdGlvbk5vdGlvbmFsCAUNJHQwMjUyOTcyNTM5MAJfMQQNdW5yZWFsaXplZFBubAgFDSR0MDI1Mjk3MjUzOTACXzIEDSR0MDI1Mzk1MjU1NjEJASJjYWxjUmVtYWluTWFyZ2luV2l0aEZ1bmRpbmdQYXltZW50BAUMcG9zaXRpb25TaXplBQ5wb3NpdGlvbk1hcmdpbgURcG9zaXRpb25Mc3RVcGRDUEYFDXVucmVhbGl6ZWRQbmwEDHJlbWFpbk1hcmdpbggFDSR0MDI1Mzk1MjU1NjECXzEEB2JhZERlYnQIBQ0kdDAyNTM5NTI1NTYxAl8yCQEPY2FsY01hcmdpblJhdGlvAwUMcmVtYWluTWFyZ2luBQdiYWREZWJ0BRBwb3NpdGlvbk5vdGlvbmFsAQ5nZXRNYXJnaW5SYXRpbwEHX3RyYWRlcgkBFmdldE1hcmdpblJhdGlvQnlPcHRpb24CBQdfdHJhZGVyBQ9QTkxfT1BUSU9OX1NQT1QBG2dldFBhcnRpYWxMaXF1aWRhdGlvbkFtb3VudAIHX3RyYWRlcg1fcG9zaXRpb25TaXplBAxtYXhpbXVtUmF0aW8JAQR2bWF4AgkBF3BhcnRpYWxMaXF1aWRhdGlvblJhdGlvAAkAZQIFDERFQ0lNQUxfVU5JVAkBBGRpdmQCCQEOZ2V0TWFyZ2luUmF0aW8BBQdfdHJhZGVyCQEWbWFpbnRlbmFuY2VNYXJnaW5SYXRpbwAEGG1heEV4Y2hhbmdlZFBvc2l0aW9uU2l6ZQkBBG11bGQCCQEDYWJzAQUNX3Bvc2l0aW9uU2l6ZQUMbWF4aW11bVJhdGlvBApzd2FwUmVzdWx0CQEKc3dhcE91dHB1dAMJAGYCBQ1fcG9zaXRpb25TaXplAAAFGG1heEV4Y2hhbmdlZFBvc2l0aW9uU2l6ZQcEHG1heEV4Y2hhbmdlZFF1b3RlQXNzZXRBbW91bnQIBQpzd2FwUmVzdWx0Al8xBAtwcmljZUltcGFjdAgFCnN3YXBSZXN1bHQCXzgDCQBmAgkBDm1heFByaWNlSW1wYWN0AAULcHJpY2VJbXBhY3QFHG1heEV4Y2hhbmdlZFF1b3RlQXNzZXRBbW91bnQEFWV4Y2hhbmdlZFBvc2l0aW9uU2l6ZQkBBG11bGQCCQEDYWJzAQUNX3Bvc2l0aW9uU2l6ZQkBF3BhcnRpYWxMaXF1aWRhdGlvblJhdGlvAAQZZXhjaGFuZ2VkUXVvdGVBc3NldEFtb3VudAgJAQpzd2FwT3V0cHV0AwkAZgIFDV9wb3NpdGlvblNpemUAAAUVZXhjaGFuZ2VkUG9zaXRpb25TaXplBwJfMQUZZXhjaGFuZ2VkUXVvdGVBc3NldEFtb3VudAEVaW50ZXJuYWxDbG9zZVBvc2l0aW9uAgdfdHJhZGVyFF9jaGVja01heFByaWNlSW1wYWN0BA0kdDAyNjc5NDI2OTIyCQELZ2V0UG9zaXRpb24BBQdfdHJhZGVyBAxwb3NpdGlvblNpemUIBQ0kdDAyNjc5NDI2OTIyAl8xBA5wb3NpdGlvbk1hcmdpbggFDSR0MDI2Nzk0MjY5MjICXzIEFHBvc2l0aW9uT3Blbk5vdGlvbmFsCAUNJHQwMjY3OTQyNjkyMgJfMwQRcG9zaXRpb25Mc3RVcGRDUEYIBQ0kdDAyNjc5NDI2OTIyAl80BA11bnJlYWxpemVkUG5sCAkBI2dldFBvc2l0aW9uTm90aW9uYWxBbmRVbnJlYWxpemVkUG5sAgUHX3RyYWRlcgUPUE5MX09QVElPTl9TUE9UAl8yBA0kdDAyNzAxNzI3MTg1CQEiY2FsY1JlbWFpbk1hcmdpbldpdGhGdW5kaW5nUGF5bWVudAQFDHBvc2l0aW9uU2l6ZQUOcG9zaXRpb25NYXJnaW4FEXBvc2l0aW9uTHN0VXBkQ1BGBQ11bnJlYWxpemVkUG5sBAxyZW1haW5NYXJnaW4IBQ0kdDAyNzAxNzI3MTg1Al8xBAdiYWREZWJ0CAUNJHQwMjcwMTcyNzE4NQJfMgQVZXhjaGFuZ2VkUG9zaXRpb25TaXplCQEBLQEFDHBvc2l0aW9uU2l6ZQQLcmVhbGl6ZWRQbmwFDXVucmVhbGl6ZWRQbmwEDW1hcmdpblRvVmF1bHQJAQEtAQUMcmVtYWluTWFyZ2luBA0kdDAyNzMxMjI3NjE3CQEKc3dhcE91dHB1dAMJAGYCBQxwb3NpdGlvblNpemUAAAkBA2FicwEFDHBvc2l0aW9uU2l6ZQUUX2NoZWNrTWF4UHJpY2VJbXBhY3QEGWV4Y2hhbmdlZFF1b3RlQXNzZXRBbW91bnQIBQ0kdDAyNzMxMjI3NjE3Al8xBBZxdW90ZUFzc2V0UmVzZXJ2ZUFmdGVyCAUNJHQwMjczMTIyNzYxNwJfMgQVYmFzZUFzc2V0UmVzZXJ2ZUFmdGVyCAUNJHQwMjczMTIyNzYxNwJfMwQWdG90YWxQb3NpdGlvblNpemVBZnRlcggFDSR0MDI3MzEyMjc2MTcCXzQEF2N1bXVsYXRpdmVOb3Rpb25hbEFmdGVyCAUNJHQwMjczMTIyNzYxNwJfNQQOdG90YWxMb25nQWZ0ZXIIBQ0kdDAyNzMxMjI3NjE3Al82BA90b3RhbFNob3J0QWZ0ZXIIBQ0kdDAyNzMxMjI3NjE3Al83BBlvcGVuSW50ZXJlc3ROb3Rpb25hbEFmdGVyCQBlAgkBFG9wZW5JbnRlcmVzdE5vdGlvbmFsAAUUcG9zaXRpb25PcGVuTm90aW9uYWwJAJ4KDAUVZXhjaGFuZ2VkUG9zaXRpb25TaXplBQdiYWREZWJ0BQtyZWFsaXplZFBubAUNbWFyZ2luVG9WYXVsdAUWcXVvdGVBc3NldFJlc2VydmVBZnRlcgUVYmFzZUFzc2V0UmVzZXJ2ZUFmdGVyBRZ0b3RhbFBvc2l0aW9uU2l6ZUFmdGVyBRdjdW11bGF0aXZlTm90aW9uYWxBZnRlcgUZb3BlbkludGVyZXN0Tm90aW9uYWxBZnRlcgUZZXhjaGFuZ2VkUXVvdGVBc3NldEFtb3VudAUOdG90YWxMb25nQWZ0ZXIFD3RvdGFsU2hvcnRBZnRlcgEQZ2V0VHdhcFNwb3RQcmljZQAECG1pbnV0ZUlkCQBpAgkAaQIIBQlsYXN0QmxvY2sJdGltZXN0YW1wAOgHADwEDXN0YXJ0TWludXRlSWQJAGUCBQhtaW51dGVJZAUNVFdBUF9JTlRFUlZBTAQHbGlzdFN0cgkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzBQ1rX2xhc3REYXRhU3RyAgAEBGxpc3QJALUJAgUHbGlzdFN0cgIBLAoBCGZpbHRlckZuAgthY2N1bXVsYXRvcgRuZXh0AwkAZwIFDXN0YXJ0TWludXRlSWQJAQ1wYXJzZUludFZhbHVlAQUEbmV4dAkAzQgCBQthY2N1bXVsYXRvcgkBDXBhcnNlSW50VmFsdWUBBQRuZXh0BQthY2N1bXVsYXRvcgQFbGlzdEYKAAIkbAUEbGlzdAoAAiRzCQCQAwEFAiRsCgAFJGFjYzAFA25pbAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEIZmlsdGVyRm4CBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDIwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQASABMAFAQIbWF4SW5kZXgDCQBmAgkAkAMBBQVsaXN0RgAACQCWAwEFBWxpc3RGCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEbGlzdAAABAxsYXN0TWludXRlSWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUOa19sYXN0TWludXRlSWQAAAQWZW5kTGFzdEN1bXVsYXRpdmVQcmljZQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIJAKwCAgUda190d2FwRGF0YUxhc3RDdW11bGF0aXZlUHJpY2UCAV8JAKQDAQUMbGFzdE1pbnV0ZUlkAAAEDGVuZExhc3RQcmljZQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIJAKwCAgUTa190d2FwRGF0YUxhc3RQcmljZQIBXwkApAMBBQxsYXN0TWludXRlSWQAAAQSbm93Q3VtdWxhdGl2ZVByaWNlCQBkAgUWZW5kTGFzdEN1bXVsYXRpdmVQcmljZQkAaAIJAGUCBQhtaW51dGVJZAUMbGFzdE1pbnV0ZUlkBQxlbmRMYXN0UHJpY2UEGHN0YXJ0TGFzdEN1bXVsYXRpdmVQcmljZQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIJAKwCAgUda190d2FwRGF0YUxhc3RDdW11bGF0aXZlUHJpY2UCAV8JAKQDAQUIbWF4SW5kZXgAAAQOc3RhcnRMYXN0UHJpY2UJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICCQCsAgIFE2tfdHdhcERhdGFMYXN0UHJpY2UCAV8JAKQDAQUIbWF4SW5kZXgAAAQUc3RhcnRDdW11bGF0aXZlUHJpY2UJAGQCBRhzdGFydExhc3RDdW11bGF0aXZlUHJpY2UJAGgCCQBlAgUNc3RhcnRNaW51dGVJZAUIbWF4SW5kZXgFDnN0YXJ0TGFzdFByaWNlCQBpAgkAZQIFEm5vd0N1bXVsYXRpdmVQcmljZQUUc3RhcnRDdW11bGF0aXZlUHJpY2UFDVRXQVBfSU5URVJWQUwBE2dldFRlcm1pbmFsQW1tU3RhdGUABA1fcG9zaXRpb25TaXplCQERdG90YWxQb3NpdGlvblNpemUAAwkAAAIFDV9wb3NpdGlvblNpemUAAAkAlAoCCQEGcXRBc3RSAAkBBmJzQXN0UgAECWRpcmVjdGlvbgkAZgIFDV9wb3NpdGlvblNpemUAAAQNJHQwMjk2MDQyOTc4MwkBCnN3YXBPdXRwdXQDBQlkaXJlY3Rpb24JAQNhYnMBBQ1fcG9zaXRpb25TaXplBwQVY3VycmVudE5ldE1hcmtldFZhbHVlCAUNJHQwMjk2MDQyOTc4MwJfMQQZdGVybWluYWxRdW90ZUFzc2V0UmVzZXJ2ZQgFDSR0MDI5NjA0Mjk3ODMCXzIEGHRlcm1pbmFsQmFzZUFzc2V0UmVzZXJ2ZQgFDSR0MDI5NjA0Mjk3ODMCXzMJAJQKAgUZdGVybWluYWxRdW90ZUFzc2V0UmVzZXJ2ZQUYdGVybWluYWxCYXNlQXNzZXRSZXNlcnZlARNnZXRRdW90ZUFzc2V0V2VpZ2h0BBBiYXNlQXNzZXRSZXNlcnZlEXRvdGFsUG9zaXRpb25TaXplEXF1b3RlQXNzZXRSZXNlcnZlC3RhcmdldFByaWNlBAFiCQC2AgEFEGJhc2VBc3NldFJlc2VydmUEAnN6CQC2AgEFEXRvdGFsUG9zaXRpb25TaXplBAFxCQC2AgEFEXF1b3RlQXNzZXRSZXNlcnZlBAFwCQC2AgEFC3RhcmdldFByaWNlBANiczIJAQVicG93ZAIJALcCAgUBYgUCc3oJALYCAQkAaAIAAgUMREVDSU1BTF9VTklUBARxYnMyCQEFYm11bGQCBQFxBQNiczIEA3BzNAkAuQICCQC2AgEABAkBBWJtdWxkAgUBcAUCc3oEA3NxcgkBBmJzcXJ0ZAEJAQVibXVsZAIFBHFiczIJALgCAgUBcQUDcHM0BAJicQkBBWJtdWxkAgUBYgUBcQQCcXMJAQVibXVsZAIFAXEFAnN6BAN0b3AJALcCAgkAtwICCQC+AgEFA3NxcgUCYnEFAnFzBANib3QJALkCAgkAtgIBAAIJAQVibXVsZAIFAXEFAnN6BAZyZXN1bHQJAQViZGl2ZAIFA3RvcAUDYm90CQCgAwEFBnJlc3VsdAEUZ2V0U3luY1Rlcm1pbmFsUHJpY2UBDl90ZXJtaW5hbFByaWNlBA1fcG9zaXRpb25TaXplCQERdG90YWxQb3NpdGlvblNpemUAAwkAAAIFDV9wb3NpdGlvblNpemUAAAQHX3F0QXN0UgkBBnF0QXN0UgAEB19ic0FzdFIJAQZic0FzdFIABAluZXdRdEFzdFcJAQRkaXZkAgkBBG11bGQCBQ5fdGVybWluYWxQcmljZQUHX2JzQXN0UgUHX3F0QXN0UgkAlQoDBQluZXdRdEFzdFcFDERFQ0lNQUxfVU5JVAAABAlkaXJlY3Rpb24JAGYCBQ1fcG9zaXRpb25TaXplAAAEFWN1cnJlbnROZXRNYXJrZXRWYWx1ZQgJAQpzd2FwT3V0cHV0AwUJZGlyZWN0aW9uCQEDYWJzAQUNX3Bvc2l0aW9uU2l6ZQcCXzEEB19xdEFzdFIJAQZxdEFzdFIABAdfYnNBc3RSCQEGYnNBc3RSAAQJbmV3UXRBc3RXCQETZ2V0UXVvdGVBc3NldFdlaWdodAQFB19ic0FzdFIFDV9wb3NpdGlvblNpemUFB19xdEFzdFIFDl90ZXJtaW5hbFByaWNlBAluZXdCc0FzdFcFDERFQ0lNQUxfVU5JVAQNbWFyZ2luVG9WYXVsdAgJAStnZXRQb3NpdGlvbk5vdGlvbmFsQW5kVW5yZWFsaXplZFBubEJ5VmFsdWVzBwUNX3Bvc2l0aW9uU2l6ZQUVY3VycmVudE5ldE1hcmtldFZhbHVlBQdfcXRBc3RSBQluZXdRdEFzdFcFB19ic0FzdFIFCW5ld0JzQXN0VwUPUE5MX09QVElPTl9TUE9UAl8yCQCVCgMFCW5ld1F0QXN0VwUJbmV3QnNBc3RXBQ1tYXJnaW5Ub1ZhdWx0AQpnZXRGdW5kaW5nAAQPdW5kZXJseWluZ1ByaWNlCQESZ2V0T3JhY2xlVHdhcFByaWNlAAQNc3BvdFR3YXBQcmljZQkBEGdldFR3YXBTcG90UHJpY2UABAdwcmVtaXVtCQBlAgUNc3BvdFR3YXBQcmljZQUPdW5kZXJseWluZ1ByaWNlAwMJAAACCQEWdG90YWxTaG9ydFBvc2l0aW9uU2l6ZQAAAAYJAAACCQEVdG90YWxMb25nUG9zaXRpb25TaXplAAAACQCUCgIAAAAAAwkAZgIAAAUHcHJlbWl1bQQUc2hvcnRQcmVtaXVtRnJhY3Rpb24JAQRkaXZkAgkBBG11bGQCBQdwcmVtaXVtCQEUZnVuZGluZ1BlcmlvZERlY2ltYWwABQdPTkVfREFZBBNsb25nUHJlbWl1bUZyYWN0aW9uCQEEZGl2ZAIJAQRtdWxkAgUUc2hvcnRQcmVtaXVtRnJhY3Rpb24JARZ0b3RhbFNob3J0UG9zaXRpb25TaXplAAkBFXRvdGFsTG9uZ1Bvc2l0aW9uU2l6ZQAJAJQKAgUUc2hvcnRQcmVtaXVtRnJhY3Rpb24FE2xvbmdQcmVtaXVtRnJhY3Rpb24EE2xvbmdQcmVtaXVtRnJhY3Rpb24JAQRkaXZkAgkBBG11bGQCBQdwcmVtaXVtCQEUZnVuZGluZ1BlcmlvZERlY2ltYWwABQdPTkVfREFZBBRzaG9ydFByZW1pdW1GcmFjdGlvbgkBBGRpdmQCCQEEbXVsZAIFE2xvbmdQcmVtaXVtRnJhY3Rpb24JARV0b3RhbExvbmdQb3NpdGlvblNpemUACQEWdG90YWxTaG9ydFBvc2l0aW9uU2l6ZQAJAJQKAgUUc2hvcnRQcmVtaXVtRnJhY3Rpb24FE2xvbmdQcmVtaXVtRnJhY3Rpb24BDmdldEFkanVzdGVkRmVlAgFpEF9iYXNlRmVlRGlzY291bnQECmJhc2VGZWVSYXcJAQNmZWUABAdiYXNlRmVlCQEEbXVsZAIFCmJhc2VGZWVSYXcFEF9iYXNlRmVlRGlzY291bnQEDSR0MDMyODc2MzM0ODQDCQBmAgkAkAMBCAUBaQhwYXltZW50cwABBAphcnRpZmFjdElkCQDYBAEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAggJAJEDAggFAWkIcGF5bWVudHMAAQdhc3NldElkAhlJbnZhbGlkIGF0dGFjaGVkIGFydGlmYWN0BAxhcnRpZmFjdEtpbmQJAQRzdHJBAgkBEW5mdE1hbmFnZXJBZGRyZXNzAAkBDnRvQ29tcG9zaXRlS2V5AgUMa190b2tlbl90eXBlBQphcnRpZmFjdElkAwkAAAIFDGFydGlmYWN0S2luZAUYRkVFX1JFRFVDVElPTl9UT0tFTl9UWVBFBAlyZWR1Y3Rpb24JAQRpbnRBAgkBEW5mdE1hbmFnZXJBZGRyZXNzAAkBDnRvQ29tcG9zaXRlS2V5AgUNa190b2tlbl9wYXJhbQUKYXJ0aWZhY3RJZAQLYWRqdXN0ZWRGZWUJAQRtdWxkAgUHYmFzZUZlZQUJcmVkdWN0aW9uCQCUCgIFC2FkanVzdGVkRmVlBgkAAgECGUludmFsaWQgYXR0YWNoZWQgYXJ0aWZhY3QJAJQKAgUHYmFzZUZlZQcEC2FkanVzdGVkRmVlCAUNJHQwMzI4NzYzMzQ4NAJfMQQMYnVybkFydGlmYWN0CAUNJHQwMzI4NzYzMzQ4NAJfMgkAlAoCBQthZGp1c3RlZEZlZQUMYnVybkFydGlmYWN0AQ51cGRhdGVTZXR0aW5ncwkQX2luaXRNYXJnaW5SYXRpbwRfbW1yFF9saXF1aWRhdGlvbkZlZVJhdGlvDl9mdW5kaW5nUGVyaW9kBF9mZWUMX3NwcmVhZExpbWl0D19tYXhQcmljZUltcGFjdBhfcGFydGlhbExpcXVpZGF0aW9uUmF0aW8PX21heFByaWNlU3ByZWFkCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRFrX2luaXRNYXJnaW5SYXRpbwUQX2luaXRNYXJnaW5SYXRpbwkAzAgCCQEMSW50ZWdlckVudHJ5AgUYa19tYWludGVuYW5jZU1hcmdpblJhdGlvBQRfbW1yCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRVrX2xpcXVpZGF0aW9uRmVlUmF0aW8FFF9saXF1aWRhdGlvbkZlZVJhdGlvCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQ9rX2Z1bmRpbmdQZXJpb2QFDl9mdW5kaW5nUGVyaW9kCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQVrX2ZlZQUEX2ZlZQkAzAgCCQEMSW50ZWdlckVudHJ5AgUNa19zcHJlYWRMaW1pdAUMX3NwcmVhZExpbWl0CQDMCAIJAQxJbnRlZ2VyRW50cnkCBRBrX21heFByaWNlSW1wYWN0BQ9fbWF4UHJpY2VJbXBhY3QJAMwIAgkBDEludGVnZXJFbnRyeQIFGWtfcGFydGlhbExpcXVpZGF0aW9uUmF0aW8FGF9wYXJ0aWFsTGlxdWlkYXRpb25SYXRpbwkAzAgCCQEMSW50ZWdlckVudHJ5AgUQa19tYXhQcmljZVNwcmVhZAUPX21heFByaWNlU3ByZWFkBQNuaWwBDXVwZGF0ZUZ1bmRpbmcFEV9uZXh0RnVuZGluZ0Jsb2NrJF9sYXRlc3RMb25nQ3VtdWxhdGl2ZVByZW1pdW1GcmFjdGlvbiVfbGF0ZXN0U2hvcnRDdW11bGF0aXZlUHJlbWl1bUZyYWN0aW9uEF9sb25nRnVuZGluZ1JhdGURX3Nob3J0RnVuZGluZ1JhdGUJAMwIAgkBDEludGVnZXJFbnRyeQIFEmtfbmV4dEZ1bmRpbmdCbG9jawURX25leHRGdW5kaW5nQmxvY2sJAMwIAgkBDEludGVnZXJFbnRyeQIFJWtfbGF0ZXN0TG9uZ0N1bXVsYXRpdmVQcmVtaXVtRnJhY3Rpb24FJF9sYXRlc3RMb25nQ3VtdWxhdGl2ZVByZW1pdW1GcmFjdGlvbgkAzAgCCQEMSW50ZWdlckVudHJ5AgUma19sYXRlc3RTaG9ydEN1bXVsYXRpdmVQcmVtaXVtRnJhY3Rpb24FJV9sYXRlc3RTaG9ydEN1bXVsYXRpdmVQcmVtaXVtRnJhY3Rpb24JAMwIAgkBDEludGVnZXJFbnRyeQIFEWtfbG9uZ0Z1bmRpbmdSYXRlBRBfbG9uZ0Z1bmRpbmdSYXRlCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRJrX3Nob3J0RnVuZGluZ1JhdGUFEV9zaG9ydEZ1bmRpbmdSYXRlBQNuaWwBE3VwZGF0ZVBvc2l0aW9uQXNzZXQCCF9hZGRyZXNzCF9hc3NldElkCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQ50b0NvbXBvc2l0ZUtleQIFD2tfcG9zaXRpb25Bc3NldAUIX2FkZHJlc3MFCF9hc3NldElkBQNuaWwBDnVwZGF0ZVBvc2l0aW9uBQhfYWRkcmVzcwVfc2l6ZQdfbWFyZ2luDV9vcGVuTm90aW9uYWwgX2xhdGVzdEN1bXVsYXRpdmVQcmVtaXVtRnJhY3Rpb24JAMwIAgkBDEludGVnZXJFbnRyeQIJAQ50b0NvbXBvc2l0ZUtleQIFDmtfcG9zaXRpb25TaXplBQhfYWRkcmVzcwUFX3NpemUJAMwIAgkBDEludGVnZXJFbnRyeQIJAQ50b0NvbXBvc2l0ZUtleQIFEGtfcG9zaXRpb25NYXJnaW4FCF9hZGRyZXNzBQdfbWFyZ2luCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEOdG9Db21wb3NpdGVLZXkCBRZrX3Bvc2l0aW9uT3Blbk5vdGlvbmFsBQhfYWRkcmVzcwUNX29wZW5Ob3Rpb25hbAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBDnRvQ29tcG9zaXRlS2V5AgUua19wb3NpdGlvbkxhc3RVcGRhdGVkQ3VtdWxhdGl2ZVByZW1pdW1GcmFjdGlvbgUIX2FkZHJlc3MFIF9sYXRlc3RDdW11bGF0aXZlUHJlbWl1bUZyYWN0aW9uBQNuaWwBCmFwcGVuZFR3YXABBXByaWNlBAhtaW51dGVJZAkAaQIJAGkCCAUJbGFzdEJsb2NrCXRpbWVzdGFtcADoBwA8BBBwcmV2aW91c01pbnV0ZUlkCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFDmtfbGFzdE1pbnV0ZUlkAAADCQBmAgUQcHJldmlvdXNNaW51dGVJZAUIbWludXRlSWQJAAIBAhFUV0FQIG91dC1vZi1vcmRlcgQMbGFzdE1pbnV0ZUlkAwkAAAIFEHByZXZpb3VzTWludXRlSWQAAAUIbWludXRlSWQFEHByZXZpb3VzTWludXRlSWQDCQBmAgUIbWludXRlSWQFEHByZXZpb3VzTWludXRlSWQEE3ByZXZDdW11bGF0aXZlUHJpY2UJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICCQCsAgIFHWtfdHdhcERhdGFMYXN0Q3VtdWxhdGl2ZVByaWNlAgFfCQCkAwEFEHByZXZpb3VzTWludXRlSWQAAAQJcHJldlByaWNlCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgkArAICBRNrX3R3YXBEYXRhTGFzdFByaWNlAgFfCQCkAwEFEHByZXZpb3VzTWludXRlSWQFBXByaWNlBBNsYXN0Q3VtdWxhdGl2ZVByaWNlCQBkAgUTcHJldkN1bXVsYXRpdmVQcmljZQkAaAIJAGUCBQhtaW51dGVJZAUMbGFzdE1pbnV0ZUlkBQlwcmV2UHJpY2UEBGxpc3QJAQtwdXNoVG9RdWV1ZQMJAQlzdHJUb0xpc3QBCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMFDWtfbGFzdERhdGFTdHICAAUNVFdBUF9JTlRFUlZBTAkApAMBBQhtaW51dGVJZAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBDnRvQ29tcG9zaXRlS2V5AgUda190d2FwRGF0YUxhc3RDdW11bGF0aXZlUHJpY2UJAKQDAQUIbWludXRlSWQFE2xhc3RDdW11bGF0aXZlUHJpY2UJAMwIAgkBDEludGVnZXJFbnRyeQIJAQ50b0NvbXBvc2l0ZUtleQIFE2tfdHdhcERhdGFMYXN0UHJpY2UJAKQDAQUIbWludXRlSWQFBXByaWNlCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEOdG9Db21wb3NpdGVLZXkCBRprX3R3YXBEYXRhUHJldmlvdXNNaW51dGVJZAkApAMBBQhtaW51dGVJZAUQcHJldmlvdXNNaW51dGVJZAkAzAgCCQEMSW50ZWdlckVudHJ5AgUOa19sYXN0TWludXRlSWQFCG1pbnV0ZUlkCQDMCAIJAQtTdHJpbmdFbnRyeQIFDWtfbGFzdERhdGFTdHIJAQlsaXN0VG9TdHIBBQRsaXN0BQNuaWwEGHR3YXBEYXRhUHJldmlvdXNNaW51dGVJZAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQEOdG9Db21wb3NpdGVLZXkCBRprX3R3YXBEYXRhUHJldmlvdXNNaW51dGVJZAkApAMBBQhtaW51dGVJZAAABBNwcmV2Q3VtdWxhdGl2ZVByaWNlCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAQ50b0NvbXBvc2l0ZUtleQIFHWtfdHdhcERhdGFMYXN0Q3VtdWxhdGl2ZVByaWNlCQCkAwEFGHR3YXBEYXRhUHJldmlvdXNNaW51dGVJZAAABAlwcmV2UHJpY2UJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBDnRvQ29tcG9zaXRlS2V5AgUTa190d2FwRGF0YUxhc3RQcmljZQkApAMBBRh0d2FwRGF0YVByZXZpb3VzTWludXRlSWQFBXByaWNlBBNsYXN0Q3VtdWxhdGl2ZVByaWNlCQBkAgUTcHJldkN1bXVsYXRpdmVQcmljZQkAaAIJAGUCBQhtaW51dGVJZAUYdHdhcERhdGFQcmV2aW91c01pbnV0ZUlkBQlwcmV2UHJpY2UJAMwIAgkBDEludGVnZXJFbnRyeQIJAQ50b0NvbXBvc2l0ZUtleQIFHWtfdHdhcERhdGFMYXN0Q3VtdWxhdGl2ZVByaWNlCQCkAwEFCG1pbnV0ZUlkBRNsYXN0Q3VtdWxhdGl2ZVByaWNlCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEOdG9Db21wb3NpdGVLZXkCBRNrX3R3YXBEYXRhTGFzdFByaWNlCQCkAwEFCG1pbnV0ZUlkBQVwcmljZQUDbmlsARF1cGRhdGVBbW1SZXNlcnZlcwIHX3F0QXN0UgdfYnNBc3RSCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRNrX3F1b3RlQXNzZXRSZXNlcnZlBQdfcXRBc3RSCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRJrX2Jhc2VBc3NldFJlc2VydmUFB19ic0FzdFIFA25pbAEQdXBkYXRlQW1tV2VpZ2h0cwIHX3F0QXN0VwdfYnNBc3RXCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRJrX3F1b3RlQXNzZXRXZWlnaHQFB19xdEFzdFcJAMwIAgkBDEludGVnZXJFbnRyeQIFEWtfYmFzZUFzc2V0V2VpZ2h0BQdfYnNBc3RXBQNuaWwBCXVwZGF0ZUFtbQcHX3F0QXN0UgdfYnNBc3RSF190b3RhbFBvc2l0aW9uU2l6ZUFmdGVyGF9jdW11bGF0aXZlTm90aW9uYWxBZnRlchVfb3BlbkludGVyZXN0Tm90aW9uYWwWX3RvdGFsTG9uZ1Bvc2l0aW9uU2l6ZRdfdG90YWxTaG9ydFBvc2l0aW9uU2l6ZQQHX3F0QXN0VwkBBnF0QXN0VwAEB19ic0FzdFcJAQZic0FzdFcAAwkBAiE9AgkAZQIFFl90b3RhbExvbmdQb3NpdGlvblNpemUFF190b3RhbFNob3J0UG9zaXRpb25TaXplBRdfdG90YWxQb3NpdGlvblNpemVBZnRlcgkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAhhJbnZhbGlkIEFNTSBzdGF0ZSBkYXRhOiAJAKQDAQUWX3RvdGFsTG9uZ1Bvc2l0aW9uU2l6ZQIEICsgIAkApAMBBRdfdG90YWxTaG9ydFBvc2l0aW9uU2l6ZQIEICE9IAkApAMBBRdfdG90YWxQb3NpdGlvblNpemVBZnRlcgkAzggCCQDOCAIJARF1cGRhdGVBbW1SZXNlcnZlcwIFB19xdEFzdFIFB19ic0FzdFIJAMwIAgkBDEludGVnZXJFbnRyeQIFE2tfdG90YWxQb3NpdGlvblNpemUFF190b3RhbFBvc2l0aW9uU2l6ZUFmdGVyCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRRrX2N1bXVsYXRpdmVOb3Rpb25hbAUYX2N1bXVsYXRpdmVOb3Rpb25hbEFmdGVyCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRZrX29wZW5JbnRlcmVzdE5vdGlvbmFsBRVfb3BlbkludGVyZXN0Tm90aW9uYWwJAMwIAgkBDEludGVnZXJFbnRyeQIFF2tfdG90YWxMb25nUG9zaXRpb25TaXplBRZfdG90YWxMb25nUG9zaXRpb25TaXplCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRhrX3RvdGFsU2hvcnRQb3NpdGlvblNpemUFF190b3RhbFNob3J0UG9zaXRpb25TaXplBQNuaWwJAQphcHBlbmRUd2FwAQkBBGRpdmQCCQEEbXVsZAIFB19xdEFzdFIFB19xdEFzdFcJAQRtdWxkAgUHX2JzQXN0UgUHX2JzQXN0VwEOZGVsZXRlUG9zaXRpb24BCF9hZGRyZXNzCQDMCAIJAQtEZWxldGVFbnRyeQEJAQ50b0NvbXBvc2l0ZUtleQIFDmtfcG9zaXRpb25TaXplBQhfYWRkcmVzcwkAzAgCCQELRGVsZXRlRW50cnkBCQEOdG9Db21wb3NpdGVLZXkCBRBrX3Bvc2l0aW9uTWFyZ2luBQhfYWRkcmVzcwkAzAgCCQELRGVsZXRlRW50cnkBCQEOdG9Db21wb3NpdGVLZXkCBRZrX3Bvc2l0aW9uT3Blbk5vdGlvbmFsBQhfYWRkcmVzcwkAzAgCCQELRGVsZXRlRW50cnkBCQEOdG9Db21wb3NpdGVLZXkCBS5rX3Bvc2l0aW9uTGFzdFVwZGF0ZWRDdW11bGF0aXZlUHJlbWl1bUZyYWN0aW9uBQhfYWRkcmVzcwkAzAgCCQELRGVsZXRlRW50cnkBCQEOdG9Db21wb3NpdGVLZXkCBQ9rX3Bvc2l0aW9uQXNzZXQFCF9hZGRyZXNzCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEOdG9Db21wb3NpdGVLZXkCBRRrX3Bvc2l0aW9uQ2xvc2VkRGF0ZQUIX2FkZHJlc3MIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQNuaWwBCHdpdGhkcmF3AghfYWRkcmVzcwdfYW1vdW50BAdiYWxhbmNlCQDwBwIFBHRoaXMJAQpxdW90ZUFzc2V0AAMJAGYCBQdfYW1vdW50BQdiYWxhbmNlCQACAQkArAICCQCsAgIJAKwCAgITVW5hYmxlIHRvIHdpdGhkcmF3IAkApAMBBQdfYW1vdW50AhcgZnJvbSBjb250cmFjdCBiYWxhbmNlIAkApAMBBQdiYWxhbmNlCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFCF9hZGRyZXNzBQdfYW1vdW50CQEKcXVvdGVBc3NldAAFA25pbAENdXBkYXRlQmFsYW5jZQEBaQMJAGYCAAAFAWkJAAIBAgdCYWxhbmNlCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQlrX2JhbGFuY2UFAWkFA25pbAELdHJhbnNmZXJGZWUBAWkJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBDnN0YWtpbmdBZGRyZXNzAAUBaQkBCnF1b3RlQXNzZXQABQNuaWwBDmRvQnVybkFydGlmYWN0Ag1fYnVybkFydGlmYWN0AWkDBQ1fYnVybkFydGlmYWN0CQDMCAIJAQRCdXJuAgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCAkAkQMCCAUBaQhwYXltZW50cwABB2Fzc2V0SWQCEEludmFsaWQgYXJ0aWZhY3QAAQUDbmlsBQNuaWwBF2lzU2FtZUFzc2V0T3JOb1Bvc2l0aW9uAgdfdHJhZGVyCF9hc3NldElkBA9vbGRQb3NpdGlvblNpemUICQELZ2V0UG9zaXRpb24BBQdfdHJhZGVyAl8xAwkAAAIFD29sZFBvc2l0aW9uU2l6ZQAABgkAAAIJARBnZXRQb3NpdGlvbkFzc2V0AQUHX3RyYWRlcgUIX2Fzc2V0SWQBC2lzU2FtZUFzc2V0AgdfdHJhZGVyCF9hc3NldElkCQAAAgkBEGdldFBvc2l0aW9uQXNzZXQBBQdfdHJhZGVyBQhfYXNzZXRJZAEeZ2V0Qm9ycm93ZWRCeVRyYWRlckluTWFya2V0S2V5AwRfYW1tCF9hc3NldElkB190cmFkZXIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIFIGtfdHJhZGVyX21hcmtldF9hc3NldF9jb2xsYXRlcmFsAgFfBQRfYW1tAgFfBQhfYXNzZXRJZAIBXwUHX3RyYWRlcgETZ2V0Qm9ycm93ZWRCeVRyYWRlcgEHX3RyYWRlcgQNcG9zaXRpb25Bc3NldAkBEGdldFBvc2l0aW9uQXNzZXQBBQdfdHJhZGVyAwkAAAIFDXBvc2l0aW9uQXNzZXQJANgEAQkBCnF1b3RlQXNzZXQACQCUCgIAAAUNcG9zaXRpb25Bc3NldAQDa2V5CQEeZ2V0Qm9ycm93ZWRCeVRyYWRlckluTWFya2V0S2V5AwkApQgBBQR0aGlzBQ1wb3NpdGlvbkFzc2V0BQdfdHJhZGVyBAZib3Jyb3cJAQt2YWx1ZU9yRWxzZQIJAJoIAgkBEWNvbGxhdGVyYWxBZGRyZXNzAAUDa2V5AAAJAJQKAgUGYm9ycm93BQ1wb3NpdGlvbkFzc2V0FQFpAQVwYXVzZQADCQECIT0CCAUBaQZjYWxsZXIJAQxhZG1pbkFkZHJlc3MACQACAQIaSW52YWxpZCB0b2dnbGVQYXVzZSBwYXJhbXMJAMwIAgkBDEJvb2xlYW5FbnRyeQIFCGtfcGF1c2VkBgUDbmlsAWkBB3VucGF1c2UAAwkBAiE9AggFAWkGY2FsbGVyCQEMYWRtaW5BZGRyZXNzAAkAAgECGkludmFsaWQgdG9nZ2xlUGF1c2UgcGFyYW1zCQDMCAIJAQxCb29sZWFuRW50cnkCBQhrX3BhdXNlZAcFA25pbAFpAQxhZGRMaXF1aWRpdHkBEV9xdW90ZUFzc2V0QW1vdW50AwMJAQIhPQIIBQFpBmNhbGxlcgkBDGFkbWluQWRkcmVzcwAGCQBnAgAABRFfcXVvdGVBc3NldEFtb3VudAkAAgECG0ludmFsaWQgYWRkTGlxdWlkaXR5IHBhcmFtcwQHX3F0QXN0UgkBBnF0QXN0UgAEB19ic0FzdFIJAQZic0FzdFIABAdfcXRBc3RXCQEGcXRBc3RXAAQHX2JzQXN0VwkBBmJzQXN0VwAEBXByaWNlCQEEZGl2ZAIJAQRtdWxkAgUHX3F0QXN0UgUHX3F0QXN0VwkBBG11bGQCBQdfYnNBc3RSBQdfYnNBc3RXBBRiYXNlQXNzZXRBbW91bnRUb0FkZAkBBGRpdmQCBRFfcXVvdGVBc3NldEFtb3VudAUFcHJpY2UEC3F0QXN0UkFmdGVyCQBkAgUHX3F0QXN0UgURX3F1b3RlQXNzZXRBbW91bnQEC2JzQXN0UkFmdGVyCQBkAgUHX2JzQXN0UgUUYmFzZUFzc2V0QW1vdW50VG9BZGQJARF1cGRhdGVBbW1SZXNlcnZlcwIFC3F0QXN0UkFmdGVyBQtic0FzdFJBZnRlcgFpAQ9yZW1vdmVMaXF1aWRpdHkBEV9xdW90ZUFzc2V0QW1vdW50AwMJAQIhPQIIBQFpBmNhbGxlcgkBDGFkbWluQWRkcmVzcwAGCQBnAgAABRFfcXVvdGVBc3NldEFtb3VudAkAAgECHkludmFsaWQgcmVtb3ZlTGlxdWlkaXR5IHBhcmFtcwQHX3F0QXN0UgkBBnF0QXN0UgAEB19ic0FzdFIJAQZic0FzdFIABAdfcXRBc3RXCQEGcXRBc3RXAAQHX2JzQXN0VwkBBmJzQXN0VwAEBXByaWNlCQEEZGl2ZAIJAQRtdWxkAgUHX3F0QXN0UgUHX3F0QXN0VwkBBG11bGQCBQdfYnNBc3RSBQdfYnNBc3RXBBdiYXNlQXNzZXRBbW91bnRUb1JlbW92ZQkBBGRpdmQCBRFfcXVvdGVBc3NldEFtb3VudAUFcHJpY2UEC3F0QXN0UkFmdGVyCQBlAgUHX3F0QXN0UgURX3F1b3RlQXNzZXRBbW91bnQEC2JzQXN0UkFmdGVyCQBlAgUHX2JzQXN0UgUXYmFzZUFzc2V0QW1vdW50VG9SZW1vdmUJARF1cGRhdGVBbW1SZXNlcnZlcwIFC3F0QXN0UkFmdGVyBQtic0FzdFJBZnRlcgFpAQ5jaGFuZ2VTZXR0aW5ncwkQX2luaXRNYXJnaW5SYXRpbwRfbW1yFF9saXF1aWRhdGlvbkZlZVJhdGlvDl9mdW5kaW5nUGVyaW9kBF9mZWUMX3NwcmVhZExpbWl0D19tYXhQcmljZUltcGFjdBhfcGFydGlhbExpcXVpZGF0aW9uUmF0aW8PX21heFByaWNlU3ByZWFkAwkBAiE9AggFAWkGY2FsbGVyCQEMYWRtaW5BZGRyZXNzAAkAAgECHUludmFsaWQgY2hhbmdlU2V0dGluZ3MgcGFyYW1zCQEOdXBkYXRlU2V0dGluZ3MJBRBfaW5pdE1hcmdpblJhdGlvBQRfbW1yBRRfbGlxdWlkYXRpb25GZWVSYXRpbwUOX2Z1bmRpbmdQZXJpb2QFBF9mZWUFDF9zcHJlYWRMaW1pdAUPX21heFByaWNlSW1wYWN0BRhfcGFydGlhbExpcXVpZGF0aW9uUmF0aW8FD19tYXhQcmljZVNwcmVhZAFpAQppbml0aWFsaXplDgdfcXRBc3RSB19ic0FzdFIOX2Z1bmRpbmdQZXJpb2QQX2luaXRNYXJnaW5SYXRpbwRfbW1yFF9saXF1aWRhdGlvbkZlZVJhdGlvBF9mZWUHX29yYWNsZQpfb3JhY2xlS2V5DF9jb29yZGluYXRvcgxfc3ByZWFkTGltaXQPX21heFByaWNlSW1wYWN0GF9wYXJ0aWFsTGlxdWlkYXRpb25SYXRpbw9fbWF4UHJpY2VTcHJlYWQDAwMDAwMDAwMDAwMJAGcCAAAFB19xdEFzdFIGCQBnAgAABQdfYnNBc3RSBgkAZwIAAAUOX2Z1bmRpbmdQZXJpb2QGCQBnAgAABRBfaW5pdE1hcmdpblJhdGlvBgkAZwIAAAUEX21tcgYJAGcCAAAFFF9saXF1aWRhdGlvbkZlZVJhdGlvBgkAZwIAAAUEX2ZlZQYJAGcCAAAFDF9zcHJlYWRMaW1pdAYJAGcCAAAFD19tYXhQcmljZUltcGFjdAYJAGcCAAAFGF9wYXJ0aWFsTGlxdWlkYXRpb25SYXRpbwYJAGcCAAAFD19tYXhQcmljZVNwcmVhZAYJAQtpbml0aWFsaXplZAAJAAIBAh1JbnZhbGlkIGluaXRpYWxpemUgcGFyYW1ldGVycwkAzggCCQDOCAIJAM4IAgkAzggCCQEJdXBkYXRlQW1tBwUHX3F0QXN0UgUHX2JzQXN0UgAAAAAAAAAAAAAJAQ51cGRhdGVTZXR0aW5ncwkFEF9pbml0TWFyZ2luUmF0aW8FBF9tbXIFFF9saXF1aWRhdGlvbkZlZVJhdGlvBQ5fZnVuZGluZ1BlcmlvZAUEX2ZlZQUMX3NwcmVhZExpbWl0BQ9fbWF4UHJpY2VJbXBhY3QFGF9wYXJ0aWFsTGlxdWlkYXRpb25SYXRpbwUPX21heFByaWNlU3ByZWFkCQENdXBkYXRlRnVuZGluZwUJAGQCCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUOX2Z1bmRpbmdQZXJpb2QAAAAAAAAAAAkBDXVwZGF0ZUJhbGFuY2UBAAAJAMwIAgkBDEJvb2xlYW5FbnRyeQIFDWtfaW5pdGlhbGl6ZWQGCQDMCAIJAQtTdHJpbmdFbnRyeQIFBWtfb3JhBQdfb3JhY2xlCQDMCAIJAQtTdHJpbmdFbnRyeQIFCWtfb3JhX2tleQUKX29yYWNsZUtleQkAzAgCCQELU3RyaW5nRW50cnkCBRRrX2Nvb3JkaW5hdG9yQWRkcmVzcwUMX2Nvb3JkaW5hdG9yBQNuaWwBaQESc2V0SW5pdE1hcmdpblJhdGlvARBfaW5pdE1hcmdpblJhdGlvAwMJAGcCAAAFEF9pbml0TWFyZ2luUmF0aW8GCQEBIQEJAQtpbml0aWFsaXplZAAJAAIBAiVJbnZhbGlkIHNldEluaXRNYXJnaW5SYXRpbyBwYXJhbWV0ZXJzCQEOdXBkYXRlU2V0dGluZ3MJBRBfaW5pdE1hcmdpblJhdGlvCQEWbWFpbnRlbmFuY2VNYXJnaW5SYXRpbwAJARNsaXF1aWRhdGlvbkZlZVJhdGlvAAkBEGZ1bmRpbmdQZXJpb2RSYXcACQEDZmVlAAkBC3NwcmVhZExpbWl0AAkBDm1heFByaWNlSW1wYWN0AAkBF3BhcnRpYWxMaXF1aWRhdGlvblJhdGlvAAkBDm1heFByaWNlU3ByZWFkAAFpARBkZWNyZWFzZVBvc2l0aW9uAwdfYW1vdW50CV9sZXZlcmFnZRNfbWluQmFzZUFzc2V0QW1vdW50BARzeW5jCQD8BwQFBHRoaXMCGXN5bmNUZXJtaW5hbFByaWNlVG9PcmFjbGUFA25pbAUDbmlsAwkAAAIFBHN5bmMFBHN5bmMDAwMDAwkAZwIAAAUHX2Ftb3VudAYJAQEhAQkBC2luaXRpYWxpemVkAAYJAQEhAQkBFnJlcXVpcmVNb3JlTWFyZ2luUmF0aW8DCQEEZGl2ZAIFDERFQ0lNQUxfVU5JVAUJX2xldmVyYWdlCQEPaW5pdE1hcmdpblJhdGlvAAYGCQEBIQEJARNyZXF1aXJlT3BlblBvc2l0aW9uAQkApQgBCAUBaQZjYWxsZXIGCQEGcGF1c2VkAAkAAgECI0ludmFsaWQgZGVjcmVhc2VQb3NpdGlvbiBwYXJhbWV0ZXJzBA0kdDA0NTQ2NDQ1NjE2CQELZ2V0UG9zaXRpb24BCQClCAEIBQFpBmNhbGxlcgQPb2xkUG9zaXRpb25TaXplCAUNJHQwNDU0NjQ0NTYxNgJfMQQRb2xkUG9zaXRpb25NYXJnaW4IBQ0kdDA0NTQ2NDQ1NjE2Al8yBBdvbGRQb3NpdGlvbk9wZW5Ob3Rpb25hbAgFDSR0MDQ1NDY0NDU2MTYCXzMEFG9sZFBvc2l0aW9uTHN0VXBkQ1BGCAUNJHQwNDU0NjQ0NTYxNgJfNAQKX2RpcmVjdGlvbgMJAGYCBQ9vbGRQb3NpdGlvblNpemUAAAUJRElSX1NIT1JUBQhESVJfTE9ORwQFaXNBZGQJAAACBQpfZGlyZWN0aW9uBQhESVJfTE9ORwQMb3Blbk5vdGlvbmFsCQEEbXVsZAIFB19hbW91bnQFCV9sZXZlcmFnZQQNJHQwNDU3ODk0NTkwNQkBI2dldFBvc2l0aW9uTm90aW9uYWxBbmRVbnJlYWxpemVkUG5sAgkApQgBCAUBaQZjYWxsZXIFD1BOTF9PUFRJT05fU1BPVAQTb2xkUG9zaXRpb25Ob3Rpb25hbAgFDSR0MDQ1Nzg5NDU5MDUCXzEEDXVucmVhbGl6ZWRQbmwIBQ0kdDA0NTc4OTQ1OTA1Al8yBA0kdDA0NTkxMTQ4NDYwAwkAZgIFE29sZFBvc2l0aW9uTm90aW9uYWwFDG9wZW5Ob3Rpb25hbAQNJHQwNDYyODg0NjUwNwkBCXN3YXBJbnB1dAIFBWlzQWRkBQxvcGVuTm90aW9uYWwEFWV4Y2hhbmdlZFBvc2l0aW9uU2l6ZQgFDSR0MDQ2Mjg4NDY1MDcCXzEEFnF1b3RlQXNzZXRSZXNlcnZlQWZ0ZXIIBQ0kdDA0NjI4ODQ2NTA3Al8yBBViYXNlQXNzZXRSZXNlcnZlQWZ0ZXIIBQ0kdDA0NjI4ODQ2NTA3Al8zBBZ0b3RhbFBvc2l0aW9uU2l6ZUFmdGVyCAUNJHQwNDYyODg0NjUwNwJfNAQXY3VtdWxhdGl2ZU5vdGlvbmFsQWZ0ZXIIBQ0kdDA0NjI4ODQ2NTA3Al81BBhleGNoYW5nZWRQb3NpdGlvblNpemVBYnMJAQNhYnMBBRVleGNoYW5nZWRQb3NpdGlvblNpemUDAwkBAiE9AgUTX21pbkJhc2VBc3NldEFtb3VudAAACQBmAgUTX21pbkJhc2VBc3NldEFtb3VudAUYZXhjaGFuZ2VkUG9zaXRpb25TaXplQWJzBwkAAgEJAKwCAgkArAICCQCsAgICJVRvbyBsaXR0bGUgYmFzZSBhc3NldCBleGNoYW5nZWQsIGdvdCAJAKQDAQUYZXhjaGFuZ2VkUG9zaXRpb25TaXplQWJzAgogZXhwZWN0ZWQgCQCkAwEFE19taW5CYXNlQXNzZXRBbW91bnQEC3JlYWxpemVkUG5sCQEEZGl2ZAIJAQRtdWxkAgUNdW5yZWFsaXplZFBubAUYZXhjaGFuZ2VkUG9zaXRpb25TaXplQWJzCQEDYWJzAQUPb2xkUG9zaXRpb25TaXplBA0kdDA0Njk0NDQ3MTg5CQEiY2FsY1JlbWFpbk1hcmdpbldpdGhGdW5kaW5nUGF5bWVudAQFD29sZFBvc2l0aW9uU2l6ZQURb2xkUG9zaXRpb25NYXJnaW4FFG9sZFBvc2l0aW9uTHN0VXBkQ1BGBQtyZWFsaXplZFBubAQMcmVtYWluTWFyZ2luCAUNJHQwNDY5NDQ0NzE4OQJfMQQHYmFkRGVidAgFDSR0MDQ2OTQ0NDcxODkCXzIEDmZ1bmRpbmdQYXltZW50CAUNJHQwNDY5NDQ0NzE4OQJfMwQZZXhjaGFuZ2VkUXVvdGVBc3NldEFtb3VudAUMb3Blbk5vdGlvbmFsBBJ1bnJlYWxpemVkUG5sQWZ0ZXIJAGUCBQ11bnJlYWxpemVkUG5sBQtyZWFsaXplZFBubAQScmVtYWluT3Blbk5vdGlvbmFsAwkAZgIFD29sZFBvc2l0aW9uU2l6ZQAACQBlAgkAZQIFE29sZFBvc2l0aW9uTm90aW9uYWwFGWV4Y2hhbmdlZFF1b3RlQXNzZXRBbW91bnQFEnVucmVhbGl6ZWRQbmxBZnRlcgkAZQIJAGQCBRJ1bnJlYWxpemVkUG5sQWZ0ZXIFE29sZFBvc2l0aW9uTm90aW9uYWwFGWV4Y2hhbmdlZFF1b3RlQXNzZXRBbW91bnQED25ld1Bvc2l0aW9uU2l6ZQkAZAIFD29sZFBvc2l0aW9uU2l6ZQUVZXhjaGFuZ2VkUG9zaXRpb25TaXplCQCdCgsFD25ld1Bvc2l0aW9uU2l6ZQUMcmVtYWluTWFyZ2luCQEDYWJzAQUScmVtYWluT3Blbk5vdGlvbmFsCQEfbGF0ZXN0Q3VtdWxhdGl2ZVByZW1pdW1GcmFjdGlvbgEFD25ld1Bvc2l0aW9uU2l6ZQUVYmFzZUFzc2V0UmVzZXJ2ZUFmdGVyBRZxdW90ZUFzc2V0UmVzZXJ2ZUFmdGVyBRZ0b3RhbFBvc2l0aW9uU2l6ZUFmdGVyBRdjdW11bGF0aXZlTm90aW9uYWxBZnRlcgkAZQIJARRvcGVuSW50ZXJlc3ROb3Rpb25hbAAFDG9wZW5Ob3Rpb25hbAkAZQIJARV0b3RhbExvbmdQb3NpdGlvblNpemUAAwkAZgIFD25ld1Bvc2l0aW9uU2l6ZQAACQEDYWJzAQUVZXhjaGFuZ2VkUG9zaXRpb25TaXplAAAJAGUCCQEWdG90YWxTaG9ydFBvc2l0aW9uU2l6ZQADCQBmAgAABQ9uZXdQb3NpdGlvblNpemUJAQNhYnMBBRVleGNoYW5nZWRQb3NpdGlvblNpemUAAAkAAgECFENsb3NlIHBvc2l0aW9uIGZpcnN0BA9uZXdQb3NpdGlvblNpemUIBQ0kdDA0NTkxMTQ4NDYwAl8xBBduZXdQb3NpdGlvblJlbWFpbk1hcmdpbggFDSR0MDQ1OTExNDg0NjACXzIEF25ld1Bvc2l0aW9uT3Blbk5vdGlvbmFsCAUNJHQwNDU5MTE0ODQ2MAJfMwQUbmV3UG9zaXRpb25MYXRlc3RDUEYIBQ0kdDA0NTkxMTQ4NDYwAl80BBViYXNlQXNzZXRSZXNlcnZlQWZ0ZXIIBQ0kdDA0NTkxMTQ4NDYwAl81BBZxdW90ZUFzc2V0UmVzZXJ2ZUFmdGVyCAUNJHQwNDU5MTE0ODQ2MAJfNgQWdG90YWxQb3NpdGlvblNpemVBZnRlcggFDSR0MDQ1OTExNDg0NjACXzcEF2N1bXVsYXRpdmVOb3Rpb25hbEFmdGVyCAUNJHQwNDU5MTE0ODQ2MAJfOAQZb3BlbkludGVyZXN0Tm90aW9uYWxBZnRlcggFDSR0MDQ1OTExNDg0NjACXzkEDnRvdGFsTG9uZ0FmdGVyCAUNJHQwNDU5MTE0ODQ2MANfMTAED3RvdGFsU2hvcnRBZnRlcggFDSR0MDQ1OTExNDg0NjADXzExBA5ub3RpZnlOb3Rpb25hbAkA/AcECQEMbWluZXJBZGRyZXNzAAIObm90aWZ5Tm90aW9uYWwJAMwIAgkApQgBCAUBaQZjYWxsZXIJAMwIAgUXbmV3UG9zaXRpb25PcGVuTm90aW9uYWwFA25pbAUDbmlsAwkAAAIFDm5vdGlmeU5vdGlvbmFsBQ5ub3RpZnlOb3Rpb25hbAkAzggCCQEOdXBkYXRlUG9zaXRpb24FCQClCAEIBQFpBmNhbGxlcgUPbmV3UG9zaXRpb25TaXplBRduZXdQb3NpdGlvblJlbWFpbk1hcmdpbgUXbmV3UG9zaXRpb25PcGVuTm90aW9uYWwFFG5ld1Bvc2l0aW9uTGF0ZXN0Q1BGCQEJdXBkYXRlQW1tBwUWcXVvdGVBc3NldFJlc2VydmVBZnRlcgUVYmFzZUFzc2V0UmVzZXJ2ZUFmdGVyBRZ0b3RhbFBvc2l0aW9uU2l6ZUFmdGVyBRdjdW11bGF0aXZlTm90aW9uYWxBZnRlcgUZb3BlbkludGVyZXN0Tm90aW9uYWxBZnRlcgUOdG90YWxMb25nQWZ0ZXIFD3RvdGFsU2hvcnRBZnRlcgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARBpbmNyZWFzZVBvc2l0aW9uBApfZGlyZWN0aW9uCV9sZXZlcmFnZRNfbWluQmFzZUFzc2V0QW1vdW50CF9yZWZMaW5rBARzeW5jCQD8BwQFBHRoaXMCGXN5bmNUZXJtaW5hbFByaWNlVG9PcmFjbGUFA25pbAUDbmlsAwkAAAIFBHN5bmMFBHN5bmMEB190cmFkZXIJAKUIAQgFAWkGY2FsbGVyBApfcmF3QW1vdW50CAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAQIX2Fzc2V0SWQICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAQLX2Fzc2V0SWRTdHIJANgEAQkBBXZhbHVlAQUIX2Fzc2V0SWQEDGlzUXVvdGVBc3NldAkAAAIFCF9hc3NldElkCQEKcXVvdGVBc3NldAAEEWlzQ29sbGF0ZXJhbEFzc2V0CQEQaXNXaGl0ZWxpc3RBc3NldAEFC19hc3NldElkU3RyAwMDAwMDAwMJAQIhPQIFCl9kaXJlY3Rpb24FCERJUl9MT05HCQECIT0CBQpfZGlyZWN0aW9uBQlESVJfU0hPUlQHBgkAZwIAAAUKX3Jhd0Ftb3VudAYJAQEhAQkBC2luaXRpYWxpemVkAAYDCQEBIQEFDGlzUXVvdGVBc3NldAkBASEBBRFpc0NvbGxhdGVyYWxBc3NldAcGCQEBIQEJARdpc1NhbWVBc3NldE9yTm9Qb3NpdGlvbgIFB190cmFkZXIFC19hc3NldElkU3RyBgkBASEBCQEWcmVxdWlyZU1vcmVNYXJnaW5SYXRpbwMJAQRkaXZkAgUMREVDSU1BTF9VTklUBQlfbGV2ZXJhZ2UJAQ9pbml0TWFyZ2luUmF0aW8ABgYJAQZwYXVzZWQACQACAQIjSW52YWxpZCBpbmNyZWFzZVBvc2l0aW9uIHBhcmFtZXRlcnMEEGRvR2V0RmVlRGlzY291bnQJAPwHBAkBDG1pbmVyQWRkcmVzcwACEmNvbXB1dGVGZWVEaXNjb3VudAkAzAgCBQdfdHJhZGVyBQNuaWwFA25pbAMJAAACBRBkb0dldEZlZURpc2NvdW50BRBkb0dldEZlZURpc2NvdW50BAtmZWVEaXNjb3VudAQHJG1hdGNoMAUQZG9HZXRGZWVEaXNjb3VudAMJAAECBQckbWF0Y2gwAgNJbnQEAXgFByRtYXRjaDAFAXgJAAIBAiFJbnZhbGlkIGNvbXB1dGVGZWVEaXNjb3VudCByZXN1bHQEDSR0MDUwMTIzNTAxODcJAQ5nZXRBZGp1c3RlZEZlZQIFAWkFC2ZlZURpc2NvdW50BAthZGp1c3RlZEZlZQgFDSR0MDUwMTIzNTAxODcCXzEEDGJ1cm5BcnRpZmFjdAgFDSR0MDUwMTIzNTAxODcCXzIEDHJhd0ZlZUFtb3VudAkBBG11bGQCBQpfcmF3QW1vdW50BQthZGp1c3RlZEZlZQQHX2Ftb3VudAkAZQIFCl9yYXdBbW91bnQFDHJhd0ZlZUFtb3VudAQTZGlzdHJpYnV0ZUZlZUFtb3VudAMFEWlzQ29sbGF0ZXJhbEFzc2V0BAhkb0JvcnJvdwkA/AcECQERY29sbGF0ZXJhbEFkZHJlc3MAAgZib3Jyb3cJAMwIAgUHX3RyYWRlcgUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQhfYXNzZXRJZAUHX2Ftb3VudAUDbmlsAwkAAAIFCGRvQm9ycm93BQhkb0JvcnJvdwQNYmFsYW5jZUJlZm9yZQkA8AcCBQR0aGlzCQEKcXVvdGVBc3NldAADCQAAAgUNYmFsYW5jZUJlZm9yZQUNYmFsYW5jZUJlZm9yZQQGZG9Td2FwCQD8BwQJAQtzd2FwQWRkcmVzcwACBHN3YXAJAMwIAgkA2AQBCQEKcXVvdGVBc3NldAAJAMwIAgAABQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFCF9hc3NldElkBQxyYXdGZWVBbW91bnQFA25pbAMJAAACBQZkb1N3YXAFBmRvU3dhcAQMYmFsYW5jZUFmdGVyCQDwBwIFBHRoaXMJAQpxdW90ZUFzc2V0AAMJAAACBQxiYWxhbmNlQWZ0ZXIFDGJhbGFuY2VBZnRlcgQPZXhjaGFuZ2VkQW1vdW50CQBlAgUMYmFsYW5jZUFmdGVyBQ1iYWxhbmNlQmVmb3JlAwkAAAIFD2V4Y2hhbmdlZEFtb3VudAUPZXhjaGFuZ2VkQW1vdW50BQ9leGNoYW5nZWRBbW91bnQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4FDHJhd0ZlZUFtb3VudAMJAAACBRNkaXN0cmlidXRlRmVlQW1vdW50BRNkaXN0cmlidXRlRmVlQW1vdW50BA5yZWZlcnJlckZlZUFueQkA/AcECQEPcmVmZXJyYWxBZGRyZXNzAAIVYWNjZXB0UGF5bWVudFdpdGhMaW5rCQDMCAIFB190cmFkZXIJAMwIAgUIX3JlZkxpbmsFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkBCnF1b3RlQXNzZXQABRNkaXN0cmlidXRlRmVlQW1vdW50BQNuaWwDCQAAAgUOcmVmZXJyZXJGZWVBbnkFDnJlZmVycmVyRmVlQW55BAtyZWZlcnJlckZlZQQHJG1hdGNoMAUOcmVmZXJyZXJGZWVBbnkDCQABAgUHJG1hdGNoMAIDSW50BAF4BQckbWF0Y2gwBQF4CQACAQITSW52YWxpZCByZWZlcnJlckZlZQQJZmVlQW1vdW50CQBlAgUTZGlzdHJpYnV0ZUZlZUFtb3VudAULcmVmZXJyZXJGZWUEDSR0MDUxNTAzNTE2NDMJAQtnZXRQb3NpdGlvbgEFB190cmFkZXIED29sZFBvc2l0aW9uU2l6ZQgFDSR0MDUxNTAzNTE2NDMCXzEEEW9sZFBvc2l0aW9uTWFyZ2luCAUNJHQwNTE1MDM1MTY0MwJfMgQXb2xkUG9zaXRpb25PcGVuTm90aW9uYWwIBQ0kdDA1MTUwMzUxNjQzAl8zBBRvbGRQb3NpdGlvbkxzdFVwZENQRggFDSR0MDUxNTAzNTE2NDMCXzQEDWlzTmV3UG9zaXRpb24JAAACBQ9vbGRQb3NpdGlvblNpemUAAAQPaXNTYW1lRGlyZWN0aW9uAwkAZgIFD29sZFBvc2l0aW9uU2l6ZQAACQAAAgUKX2RpcmVjdGlvbgUIRElSX0xPTkcJAAACBQpfZGlyZWN0aW9uBQlESVJfU0hPUlQEDmV4cGFuZEV4aXN0aW5nAwkBASEBBQ1pc05ld1Bvc2l0aW9uBQ9pc1NhbWVEaXJlY3Rpb24HBAVpc0FkZAkAAAIFCl9kaXJlY3Rpb24FCERJUl9MT05HBA0kdDA1MTkzMjU0NTE3AwMFDWlzTmV3UG9zaXRpb24GBQ5leHBhbmRFeGlzdGluZwQMb3Blbk5vdGlvbmFsCQEEbXVsZAIFB19hbW91bnQFCV9sZXZlcmFnZQQNJHQwNTIzNTY1MjU2MgkBCXN3YXBJbnB1dAIFBWlzQWRkBQxvcGVuTm90aW9uYWwEFWFtb3VudEJhc2VBc3NldEJvdWdodAgFDSR0MDUyMzU2NTI1NjICXzEEFnF1b3RlQXNzZXRSZXNlcnZlQWZ0ZXIIBQ0kdDA1MjM1NjUyNTYyAl8yBBViYXNlQXNzZXRSZXNlcnZlQWZ0ZXIIBQ0kdDA1MjM1NjUyNTYyAl8zBBZ0b3RhbFBvc2l0aW9uU2l6ZUFmdGVyCAUNJHQwNTIzNTY1MjU2MgJfNAQXY3VtdWxhdGl2ZU5vdGlvbmFsQWZ0ZXIIBQ0kdDA1MjM1NjUyNTYyAl81AwMJAQIhPQIFE19taW5CYXNlQXNzZXRBbW91bnQAAAkAZgIFE19taW5CYXNlQXNzZXRBbW91bnQJAQNhYnMBBRVhbW91bnRCYXNlQXNzZXRCb3VnaHQHCQACAQkArAICCQCsAgIJAKwCAgINTGltaXQgZXJyb3I6IAkApAMBCQEDYWJzAQUVYW1vdW50QmFzZUFzc2V0Qm91Z2h0AgMgPCAJAKQDAQUTX21pbkJhc2VBc3NldEFtb3VudAQPbmV3UG9zaXRpb25TaXplCQBkAgUPb2xkUG9zaXRpb25TaXplBRVhbW91bnRCYXNlQXNzZXRCb3VnaHQEGWluY3JlYXNlTWFyZ2luUmVxdWlyZW1lbnQJAQRkaXZkAgUMb3Blbk5vdGlvbmFsBQlfbGV2ZXJhZ2UEDSR0MDUyOTQzNTMxODIJASJjYWxjUmVtYWluTWFyZ2luV2l0aEZ1bmRpbmdQYXltZW50BAUPb2xkUG9zaXRpb25TaXplBRFvbGRQb3NpdGlvbk1hcmdpbgUUb2xkUG9zaXRpb25Mc3RVcGRDUEYFGWluY3JlYXNlTWFyZ2luUmVxdWlyZW1lbnQEDHJlbWFpbk1hcmdpbggFDSR0MDUyOTQzNTMxODICXzEEAngxCAUNJHQwNTI5NDM1MzE4MgJfMgQCeDIIBQ0kdDA1Mjk0MzUzMTgyAl8zAwkBASEBCQEZcmVxdWlyZU5vdE92ZXJTcHJlYWRMaW1pdAIFFnF1b3RlQXNzZXRSZXNlcnZlQWZ0ZXIFFWJhc2VBc3NldFJlc2VydmVBZnRlcgkAAgECFU92ZXIgbWF4IHNwcmVhZCBsaW1pdAkAnQoLBQ9uZXdQb3NpdGlvblNpemUFDHJlbWFpbk1hcmdpbgkAZAIFF29sZFBvc2l0aW9uT3Blbk5vdGlvbmFsBQxvcGVuTm90aW9uYWwJAR9sYXRlc3RDdW11bGF0aXZlUHJlbWl1bUZyYWN0aW9uAQUPbmV3UG9zaXRpb25TaXplBRViYXNlQXNzZXRSZXNlcnZlQWZ0ZXIFFnF1b3RlQXNzZXRSZXNlcnZlQWZ0ZXIFFnRvdGFsUG9zaXRpb25TaXplQWZ0ZXIFF2N1bXVsYXRpdmVOb3Rpb25hbEFmdGVyCQBkAgkBFG9wZW5JbnRlcmVzdE5vdGlvbmFsAAUMb3Blbk5vdGlvbmFsCQBkAgkBFXRvdGFsTG9uZ1Bvc2l0aW9uU2l6ZQADCQBmAgUPbmV3UG9zaXRpb25TaXplAAAJAQNhYnMBBRVhbW91bnRCYXNlQXNzZXRCb3VnaHQAAAkAZAIJARZ0b3RhbFNob3J0UG9zaXRpb25TaXplAAMJAGYCAAAFD25ld1Bvc2l0aW9uU2l6ZQkBA2FicwEFFWFtb3VudEJhc2VBc3NldEJvdWdodAAABAxvcGVuTm90aW9uYWwJAQRtdWxkAgUHX2Ftb3VudAUJX2xldmVyYWdlBA0kdDA1NDIxMDU0MzI2CQEjZ2V0UG9zaXRpb25Ob3Rpb25hbEFuZFVucmVhbGl6ZWRQbmwCCQClCAEIBQFpBmNhbGxlcgUPUE5MX09QVElPTl9TUE9UBBNvbGRQb3NpdGlvbk5vdGlvbmFsCAUNJHQwNTQyMTA1NDMyNgJfMQQNdW5yZWFsaXplZFBubAgFDSR0MDU0MjEwNTQzMjYCXzIDCQBmAgUTb2xkUG9zaXRpb25Ob3Rpb25hbAUMb3Blbk5vdGlvbmFsCQACAQIuVXNlIGRlY3JlYXNlUG9zaXRpb24gdG8gZGVjcmVhc2UgcG9zaXRpb24gc2l6ZQkAAgECFENsb3NlIHBvc2l0aW9uIGZpcnN0BA9uZXdQb3NpdGlvblNpemUIBQ0kdDA1MTkzMjU0NTE3Al8xBBduZXdQb3NpdGlvblJlbWFpbk1hcmdpbggFDSR0MDUxOTMyNTQ1MTcCXzIEF25ld1Bvc2l0aW9uT3Blbk5vdGlvbmFsCAUNJHQwNTE5MzI1NDUxNwJfMwQUbmV3UG9zaXRpb25MYXRlc3RDUEYIBQ0kdDA1MTkzMjU0NTE3Al80BBViYXNlQXNzZXRSZXNlcnZlQWZ0ZXIIBQ0kdDA1MTkzMjU0NTE3Al81BBZxdW90ZUFzc2V0UmVzZXJ2ZUFmdGVyCAUNJHQwNTE5MzI1NDUxNwJfNgQWdG90YWxQb3NpdGlvblNpemVBZnRlcggFDSR0MDUxOTMyNTQ1MTcCXzcEF2N1bXVsYXRpdmVOb3Rpb25hbEFmdGVyCAUNJHQwNTE5MzI1NDUxNwJfOAQZb3BlbkludGVyZXN0Tm90aW9uYWxBZnRlcggFDSR0MDUxOTMyNTQ1MTcCXzkEDnRvdGFsTG9uZ0FmdGVyCAUNJHQwNTE5MzI1NDUxNwNfMTAED3RvdGFsU2hvcnRBZnRlcggFDSR0MDUxOTMyNTQ1MTcDXzExBAxmZWVUb1N0YWtlcnMJAGkCBQlmZWVBbW91bnQAAgQOZmVlVG9JbnN1cmFuY2UJAGUCBQlmZWVBbW91bnQFDGZlZVRvU3Rha2VycwQFc3Rha2UJAPwHBAkBDHZhdWx0QWRkcmVzcwACCWFkZExvY2tlZAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQEKcXVvdGVBc3NldAAFB19hbW91bnQFA25pbAMJAAACBQVzdGFrZQUFc3Rha2UEEGRlcG9zaXRJbnN1cmFuY2UJAPwHBAkBDHZhdWx0QWRkcmVzcwACB2FkZEZyZWUFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkBCnF1b3RlQXNzZXQABQ5mZWVUb0luc3VyYW5jZQUDbmlsAwkAAAIFEGRlcG9zaXRJbnN1cmFuY2UFEGRlcG9zaXRJbnN1cmFuY2UECW5vdGlmeUZlZQkA/AcECQEMbWluZXJBZGRyZXNzAAIKbm90aWZ5RmVlcwkAzAgCBQdfdHJhZGVyCQDMCAIFCWZlZUFtb3VudAUDbmlsBQNuaWwDCQAAAgUJbm90aWZ5RmVlBQlub3RpZnlGZWUEDm5vdGlmeU5vdGlvbmFsCQD8BwQJAQxtaW5lckFkZHJlc3MAAg5ub3RpZnlOb3Rpb25hbAkAzAgCBQdfdHJhZGVyCQDMCAIFF25ld1Bvc2l0aW9uT3Blbk5vdGlvbmFsBQNuaWwFA25pbAMJAAACBQ5ub3RpZnlOb3Rpb25hbAUObm90aWZ5Tm90aW9uYWwJAM4IAgkAzggCCQDOCAIJAM4IAgkAzggCCQEOdXBkYXRlUG9zaXRpb24FBQdfdHJhZGVyBQ9uZXdQb3NpdGlvblNpemUFF25ld1Bvc2l0aW9uUmVtYWluTWFyZ2luBRduZXdQb3NpdGlvbk9wZW5Ob3Rpb25hbAUUbmV3UG9zaXRpb25MYXRlc3RDUEYJARN1cGRhdGVQb3NpdGlvbkFzc2V0AgUHX3RyYWRlcgULX2Fzc2V0SWRTdHIJAQl1cGRhdGVBbW0HBRZxdW90ZUFzc2V0UmVzZXJ2ZUFmdGVyBRViYXNlQXNzZXRSZXNlcnZlQWZ0ZXIFFnRvdGFsUG9zaXRpb25TaXplQWZ0ZXIFF2N1bXVsYXRpdmVOb3Rpb25hbEFmdGVyBRlvcGVuSW50ZXJlc3ROb3Rpb25hbEFmdGVyBQ50b3RhbExvbmdBZnRlcgUPdG90YWxTaG9ydEFmdGVyCQELdHJhbnNmZXJGZWUBBQxmZWVUb1N0YWtlcnMJAQ11cGRhdGVCYWxhbmNlAQkAZAIJAQhjYmFsYW5jZQAFB19hbW91bnQJAQ5kb0J1cm5BcnRpZmFjdAIFDGJ1cm5BcnRpZmFjdAUBaQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQlhZGRNYXJnaW4ABARzeW5jCQD8BwQFBHRoaXMCGXN5bmNUZXJtaW5hbFByaWNlVG9PcmFjbGUFA25pbAUDbmlsAwkAAAIFBHN5bmMFBHN5bmMEB190cmFkZXIJAKUIAQgFAWkGY2FsbGVyBApfcmF3QW1vdW50CAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAQIX2Fzc2V0SWQICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAQLX2Fzc2V0SWRTdHIJANgEAQkBBXZhbHVlAQUIX2Fzc2V0SWQEDGlzUXVvdGVBc3NldAkAAAIFCF9hc3NldElkCQEKcXVvdGVBc3NldAAEEWlzQ29sbGF0ZXJhbEFzc2V0CQEQaXNXaGl0ZWxpc3RBc3NldAEFC19hc3NldElkU3RyAwMDAwMDCQEBIQEFDGlzUXVvdGVBc3NldAkBASEBBRFpc0NvbGxhdGVyYWxBc3NldAcGCQEBIQEJARNyZXF1aXJlT3BlblBvc2l0aW9uAQkApQgBCAUBaQZjYWxsZXIGCQEBIQEJAQtpc1NhbWVBc3NldAIFB190cmFkZXIFC19hc3NldElkU3RyBgkBASEBCQELaW5pdGlhbGl6ZWQABgkBBnBhdXNlZAAJAAIBAhxJbnZhbGlkIGFkZE1hcmdpbiBwYXJhbWV0ZXJzBBBkb0dldEZlZURpc2NvdW50CQD8BwQJAQxtaW5lckFkZHJlc3MAAhJjb21wdXRlRmVlRGlzY291bnQJAMwIAgUHX3RyYWRlcgUDbmlsBQNuaWwDCQAAAgUQZG9HZXRGZWVEaXNjb3VudAUQZG9HZXRGZWVEaXNjb3VudAQLZmVlRGlzY291bnQEByRtYXRjaDAFEGRvR2V0RmVlRGlzY291bnQDCQABAgUHJG1hdGNoMAIDSW50BAF4BQckbWF0Y2gwBQF4CQACAQIhSW52YWxpZCBjb21wdXRlRmVlRGlzY291bnQgcmVzdWx0BA0kdDA1NjU5NDU2NjU4CQEOZ2V0QWRqdXN0ZWRGZWUCBQFpBQtmZWVEaXNjb3VudAQLYWRqdXN0ZWRGZWUIBQ0kdDA1NjU5NDU2NjU4Al8xBAxidXJuQXJ0aWZhY3QIBQ0kdDA1NjU5NDU2NjU4Al8yBAxyYXdGZWVBbW91bnQJAQRtdWxkAgUKX3Jhd0Ftb3VudAULYWRqdXN0ZWRGZWUEB19hbW91bnQJAGUCBQpfcmF3QW1vdW50BQxyYXdGZWVBbW91bnQEE2Rpc3RyaWJ1dGVGZWVBbW91bnQDBRFpc0NvbGxhdGVyYWxBc3NldAQIZG9Cb3Jyb3cJAPwHBAkBEWNvbGxhdGVyYWxBZGRyZXNzAAIGYm9ycm93CQDMCAIFB190cmFkZXIFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUIX2Fzc2V0SWQFB19hbW91bnQFA25pbAMJAAACBQhkb0JvcnJvdwUIZG9Cb3Jyb3cEDWJhbGFuY2VCZWZvcmUJAPAHAgUEdGhpcwkBCnF1b3RlQXNzZXQAAwkAAAIFDWJhbGFuY2VCZWZvcmUFDWJhbGFuY2VCZWZvcmUEBmRvU3dhcAkA/AcECQELc3dhcEFkZHJlc3MAAgRzd2FwCQDMCAIJANgEAQkBCnF1b3RlQXNzZXQACQDMCAIAAAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQhfYXNzZXRJZAUMcmF3RmVlQW1vdW50BQNuaWwDCQAAAgUGZG9Td2FwBQZkb1N3YXAEDGJhbGFuY2VBZnRlcgkA8AcCBQR0aGlzCQEKcXVvdGVBc3NldAADCQAAAgUMYmFsYW5jZUFmdGVyBQxiYWxhbmNlQWZ0ZXIED2V4Y2hhbmdlZEFtb3VudAkAZQIFDGJhbGFuY2VBZnRlcgUNYmFsYW5jZUJlZm9yZQMJAAACBQ9leGNoYW5nZWRBbW91bnQFD2V4Y2hhbmdlZEFtb3VudAUPZXhjaGFuZ2VkQW1vdW50CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBQxyYXdGZWVBbW91bnQDCQAAAgUTZGlzdHJpYnV0ZUZlZUFtb3VudAUTZGlzdHJpYnV0ZUZlZUFtb3VudAQOcmVmZXJyZXJGZWVBbnkJAPwHBAkBD3JlZmVycmFsQWRkcmVzcwACDWFjY2VwdFBheW1lbnQJAMwIAgUHX3RyYWRlcgUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQEKcXVvdGVBc3NldAAFE2Rpc3RyaWJ1dGVGZWVBbW91bnQFA25pbAMJAAACBQ5yZWZlcnJlckZlZUFueQUOcmVmZXJyZXJGZWVBbnkEC3JlZmVycmVyRmVlBAckbWF0Y2gwBQ5yZWZlcnJlckZlZUFueQMJAAECBQckbWF0Y2gwAgNJbnQEAXgFByRtYXRjaDAFAXgJAAIBAhNJbnZhbGlkIHJlZmVycmVyRmVlBAlmZWVBbW91bnQJAGUCBRNkaXN0cmlidXRlRmVlQW1vdW50BQtyZWZlcnJlckZlZQQNJHQwNTc5NTc1ODA5NwkBC2dldFBvc2l0aW9uAQUHX3RyYWRlcgQPb2xkUG9zaXRpb25TaXplCAUNJHQwNTc5NTc1ODA5NwJfMQQRb2xkUG9zaXRpb25NYXJnaW4IBQ0kdDA1Nzk1NzU4MDk3Al8yBBdvbGRQb3NpdGlvbk9wZW5Ob3Rpb25hbAgFDSR0MDU3OTU3NTgwOTcCXzMEFG9sZFBvc2l0aW9uTHN0VXBkQ1BGCAUNJHQwNTc5NTc1ODA5NwJfNAQMZmVlVG9TdGFrZXJzCQBpAgUJZmVlQW1vdW50AAIEDmZlZVRvSW5zdXJhbmNlCQBlAgUJZmVlQW1vdW50BQxmZWVUb1N0YWtlcnMEBXN0YWtlCQD8BwQJAQx2YXVsdEFkZHJlc3MAAglhZGRMb2NrZWQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkBCnF1b3RlQXNzZXQABQdfYW1vdW50BQNuaWwDCQAAAgUFc3Rha2UFBXN0YWtlBBBkZXBvc2l0SW5zdXJhbmNlCQD8BwQJAQx2YXVsdEFkZHJlc3MAAgdhZGRGcmVlBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIJAQpxdW90ZUFzc2V0AAUOZmVlVG9JbnN1cmFuY2UFA25pbAMJAAACBRBkZXBvc2l0SW5zdXJhbmNlBRBkZXBvc2l0SW5zdXJhbmNlBAlub3RpZnlGZWUJAPwHBAkBDG1pbmVyQWRkcmVzcwACCm5vdGlmeUZlZXMJAMwIAgUHX3RyYWRlcgkAzAgCBQlmZWVBbW91bnQFA25pbAUDbmlsAwkAAAIFCW5vdGlmeUZlZQUJbm90aWZ5RmVlCQDOCAIJAM4IAgkAzggCCQEOdXBkYXRlUG9zaXRpb24FBQdfdHJhZGVyBQ9vbGRQb3NpdGlvblNpemUJAGQCBRFvbGRQb3NpdGlvbk1hcmdpbgUHX2Ftb3VudAUXb2xkUG9zaXRpb25PcGVuTm90aW9uYWwFFG9sZFBvc2l0aW9uTHN0VXBkQ1BGCQELdHJhbnNmZXJGZWUBBQxmZWVUb1N0YWtlcnMJAQ11cGRhdGVCYWxhbmNlAQkAZAIJAQhjYmFsYW5jZQAFB19hbW91bnQJAQ5kb0J1cm5BcnRpZmFjdAIFDGJ1cm5BcnRpZmFjdAUBaQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQxyZW1vdmVNYXJnaW4BB19hbW91bnQEBHN5bmMJAPwHBAUEdGhpcwIZc3luY1Rlcm1pbmFsUHJpY2VUb09yYWNsZQUDbmlsBQNuaWwDCQAAAgUEc3luYwUEc3luYwQHX3RyYWRlcgkApQgBCAUBaQZjYWxsZXIDAwMDCQBnAgAABQdfYW1vdW50BgkBASEBCQETcmVxdWlyZU9wZW5Qb3NpdGlvbgEFB190cmFkZXIGCQEBIQEJAQtpbml0aWFsaXplZAAGCQEGcGF1c2VkAAkAAgECH0ludmFsaWQgcmVtb3ZlTWFyZ2luIHBhcmFtZXRlcnMEDSR0MDU5MjAzNTkzNDMJAQtnZXRQb3NpdGlvbgEFB190cmFkZXIED29sZFBvc2l0aW9uU2l6ZQgFDSR0MDU5MjAzNTkzNDMCXzEEEW9sZFBvc2l0aW9uTWFyZ2luCAUNJHQwNTkyMDM1OTM0MwJfMgQXb2xkUG9zaXRpb25PcGVuTm90aW9uYWwIBQ0kdDA1OTIwMzU5MzQzAl8zBBRvbGRQb3NpdGlvbkxzdFVwZENQRggFDSR0MDU5MjAzNTkzNDMCXzQEC21hcmdpbkRlbHRhCQEBLQEFB19hbW91bnQEDSR0MDU5MzgwNTk1NTkJASJjYWxjUmVtYWluTWFyZ2luV2l0aEZ1bmRpbmdQYXltZW50BAUPb2xkUG9zaXRpb25TaXplBRFvbGRQb3NpdGlvbk1hcmdpbgUUb2xkUG9zaXRpb25Mc3RVcGRDUEYFC21hcmdpbkRlbHRhBAxyZW1haW5NYXJnaW4IBQ0kdDA1OTM4MDU5NTU5Al8xBAdiYWREZWJ0CAUNJHQwNTkzODA1OTU1OQJfMgMJAQIhPQIFB2JhZERlYnQAAAkAAgECHUludmFsaWQgcmVtb3ZlZCBtYXJnaW4gYW1vdW50BAttYXJnaW5SYXRpbwkBD2NhbGNNYXJnaW5SYXRpbwMFDHJlbWFpbk1hcmdpbgUHYmFkRGVidAUXb2xkUG9zaXRpb25PcGVuTm90aW9uYWwDCQEBIQEJARZyZXF1aXJlTW9yZU1hcmdpblJhdGlvAwULbWFyZ2luUmF0aW8JAQ9pbml0TWFyZ2luUmF0aW8ABgkAAgEJAKwCAgkArAICCQCsAgICGVRvbyBtdWNoIG1hcmdpbiByZW1vdmVkOiAJAKQDAQULbWFyZ2luUmF0aW8CAyA8IAkApAMBCQEPaW5pdE1hcmdpblJhdGlvAAQNcXVvdGVBc3NldFN0cgkA2AQBCQEKcXVvdGVBc3NldAAEDSR0MDYwMDAzNjAwNTcJARNnZXRCb3Jyb3dlZEJ5VHJhZGVyAQUHX3RyYWRlcgQIYm9ycm93ZWQIBQ0kdDA2MDAwMzYwMDU3Al8xBAdhc3NldElkCAUNJHQwNjAwMDM2MDA1NwJfMgQHdG9SZXBheQMJAGYCBQdfYW1vdW50BQhib3Jyb3dlZAUIYm9ycm93ZWQFB19hbW91bnQECnRvV2l0aGRyYXcDCQBmAgUIYm9ycm93ZWQFB19hbW91bnQAAAkAZQIFB19hbW91bnQFCGJvcnJvd2VkBAtmaW5hbEJvcnJvdwkAZQIFCGJvcnJvd2VkBQd0b1JlcGF5BBVzd2l0Y2hQb3NpdGlvblRvUXVvdGUDCQBmAgULZmluYWxCb3Jyb3cAAAUDbmlsCQETdXBkYXRlUG9zaXRpb25Bc3NldAIFB190cmFkZXIFDXF1b3RlQXNzZXRTdHIEDWRvU2FuaXR5Q2hlY2sDCQECIT0CCQBkAgUHdG9SZXBheQUKdG9XaXRoZHJhdwUHX2Ftb3VudAkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAgh0b1JlcGF5PQkApAMBBQd0b1JlcGF5Ag4gKyB0b1dpdGhkcmF3PQkApAMBBQp0b1dpdGhkcmF3AgQgIT0gCQCkAwEFB19hbW91bnQFA25pbAMJAAACBQ1kb1Nhbml0eUNoZWNrBQ1kb1Nhbml0eUNoZWNrBAlkb1Vuc3Rha2UJAPwHBAkBDHZhdWx0QWRkcmVzcwACDndpdGhkcmF3TG9ja2VkCQDMCAIFB19hbW91bnQFA25pbAUDbmlsAwkAAAIFCWRvVW5zdGFrZQUJZG9VbnN0YWtlBBZyZXR1cm5Db2xsYXRlcmFsQWN0aW9uAwkAZgIFB3RvUmVwYXkAAAQHZG9SZXBheQkA/AcECQERY29sbGF0ZXJhbEFkZHJlc3MAAgVyZXBheQkAzAgCBQdfdHJhZGVyCQDMCAIFB2Fzc2V0SWQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkBCnF1b3RlQXNzZXQABQd0b1JlcGF5BQNuaWwDCQAAAgUHZG9SZXBheQUHZG9SZXBheQkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFB3RvUmVwYXkJANkEAQUHYXNzZXRJZAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBQNuaWwDCQAAAgUWcmV0dXJuQ29sbGF0ZXJhbEFjdGlvbgUWcmV0dXJuQ29sbGF0ZXJhbEFjdGlvbgkAzggCCQDOCAIJAM4IAgkAzggCCQEOdXBkYXRlUG9zaXRpb24FBQdfdHJhZGVyBQ9vbGRQb3NpdGlvblNpemUFDHJlbWFpbk1hcmdpbgUXb2xkUG9zaXRpb25PcGVuTm90aW9uYWwJAR9sYXRlc3RDdW11bGF0aXZlUHJlbWl1bUZyYWN0aW9uAQUPb2xkUG9zaXRpb25TaXplAwkAZgIFCnRvV2l0aGRyYXcAAAkBCHdpdGhkcmF3AggFAWkGY2FsbGVyBQp0b1dpdGhkcmF3BQNuaWwJAQ11cGRhdGVCYWxhbmNlAQkAZQIJAQhjYmFsYW5jZQAFB19hbW91bnQFFXN3aXRjaFBvc2l0aW9uVG9RdW90ZQUWcmV0dXJuQ29sbGF0ZXJhbEFjdGlvbgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQ1jbG9zZVBvc2l0aW9uAAQEc3luYwkA/AcEBQR0aGlzAhlzeW5jVGVybWluYWxQcmljZVRvT3JhY2xlBQNuaWwFA25pbAMJAAACBQRzeW5jBQRzeW5jBAdfdHJhZGVyCQEPZ2V0QWN0dWFsQ2FsbGVyAQUBaQQOX3RyYWRlckFkZHJlc3MJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBBQdfdHJhZGVyAg5JbnZhbGlkIGNhbGxlcgMDAwkBASEBCQETcmVxdWlyZU9wZW5Qb3NpdGlvbgEFB190cmFkZXIGCQEBIQEJAQtpbml0aWFsaXplZAAGCQEGcGF1c2VkAAkAAgECIEludmFsaWQgY2xvc2VQb3NpdGlvbiBwYXJhbWV0ZXJzBA0kdDA2MjMwNzYyNjg1CQEVaW50ZXJuYWxDbG9zZVBvc2l0aW9uAgUHX3RyYWRlcgYEAngxCAUNJHQwNjIzMDc2MjY4NQJfMQQPcG9zaXRpb25CYWREZWJ0CAUNJHQwNjIzMDc2MjY4NQJfMgQLcmVhbGl6ZWRQbmwIBQ0kdDA2MjMwNzYyNjg1Al8zBA1tYXJnaW5Ub1ZhdWx0CAUNJHQwNjIzMDc2MjY4NQJfNAQWcXVvdGVBc3NldFJlc2VydmVBZnRlcggFDSR0MDYyMzA3NjI2ODUCXzUEFWJhc2VBc3NldFJlc2VydmVBZnRlcggFDSR0MDYyMzA3NjI2ODUCXzYEFnRvdGFsUG9zaXRpb25TaXplQWZ0ZXIIBQ0kdDA2MjMwNzYyNjg1Al83BBdjdW11bGF0aXZlTm90aW9uYWxBZnRlcggFDSR0MDYyMzA3NjI2ODUCXzgEGW9wZW5JbnRlcmVzdE5vdGlvbmFsQWZ0ZXIIBQ0kdDA2MjMwNzYyNjg1Al85BAJ4MggFDSR0MDYyMzA3NjI2ODUDXzEwBA50b3RhbExvbmdBZnRlcggFDSR0MDYyMzA3NjI2ODUDXzExBA90b3RhbFNob3J0QWZ0ZXIIBQ0kdDA2MjMwNzYyNjg1A18xMgMJAGYCBQ9wb3NpdGlvbkJhZERlYnQAAAkAAgECJlVuYWJsZSB0byBjbG9zZSBwb3NpdGlvbiB3aXRoIGJhZCBkZWJ0BA53aXRoZHJhd0Ftb3VudAkBA2FicwEFDW1hcmdpblRvVmF1bHQECmFtbUJhbGFuY2UJAGUCCQEIY2JhbGFuY2UABQ53aXRoZHJhd0Ftb3VudAQNJHQwNjMwMDk2MzUyNAMJAGYCAAAFCmFtbUJhbGFuY2UJAJQKAgAACQEDYWJzAQUKYW1tQmFsYW5jZQkAlAoCBQphbW1CYWxhbmNlAAAEDWFtbU5ld0JhbGFuY2UIBQ0kdDA2MzAwOTYzNTI0Al8xBAN4MTEIBQ0kdDA2MzAwOTYzNTI0Al8yBAd1bnN0YWtlCQD8BwQJAQx2YXVsdEFkZHJlc3MAAg53aXRoZHJhd0xvY2tlZAkAzAgCBQ53aXRoZHJhd0Ftb3VudAUDbmlsBQNuaWwDCQAAAgUHdW5zdGFrZQUHdW5zdGFrZQQNJHQwNjM3MzY2Mzc5MAkBE2dldEJvcnJvd2VkQnlUcmFkZXIBBQdfdHJhZGVyBAhib3Jyb3dlZAgFDSR0MDYzNzM2NjM3OTACXzEEB2Fzc2V0SWQIBQ0kdDA2MzczNjYzNzkwAl8yBA0kdDA2MzgwNTY0NzIyAwkAZgIFCGJvcnJvd2VkAAADCQBnAgUOd2l0aGRyYXdBbW91bnQFCGJvcnJvd2VkBAdkb1JlcGF5CQD8BwQJARFjb2xsYXRlcmFsQWRkcmVzcwACBXJlcGF5CQDMCAIFB190cmFkZXIJAMwIAgUHYXNzZXRJZAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQEKcXVvdGVBc3NldAAFCGJvcnJvd2VkBQNuaWwDCQAAAgUHZG9SZXBheQUHZG9SZXBheQkAlAoCCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFDl90cmFkZXJBZGRyZXNzBQhib3Jyb3dlZAkA2QQBBQdhc3NldElkBQNuaWwJAGUCBQ53aXRoZHJhd0Ftb3VudAUIYm9ycm93ZWQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4ED3JlYWxpemVBbmRDbG9zZQkA/AcECQERY29sbGF0ZXJhbEFkZHJlc3MAAhhyZWFsaXplUGFydGlhbGx5QW5kQ2xvc2UJAMwIAgUHX3RyYWRlcgkAzAgCBQdhc3NldElkBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIJAQpxdW90ZUFzc2V0AAUOd2l0aGRyYXdBbW91bnQFA25pbAMJAAACBQ9yZWFsaXplQW5kQ2xvc2UFD3JlYWxpemVBbmRDbG9zZQkAlAoCCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFDl90cmFkZXJBZGRyZXNzBQ53aXRoZHJhd0Ftb3VudAkA2QQBBQdhc3NldElkBQNuaWwAAAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAlAoCBQNuaWwFDndpdGhkcmF3QW1vdW50AwkAAAIFDSR0MDYzODA1NjQ3MjIFDSR0MDYzODA1NjQ3MjIEE3F1b3RlV2l0aGRyYXdBbW91bnQIBQ0kdDA2MzgwNTY0NzIyAl8yBBRzZW5kQ29sbGF0ZXJhbEFjdGlvbggFDSR0MDYzODA1NjQ3MjICXzEEDm5vdGlmeU5vdGlvbmFsCQD8BwQJAQxtaW5lckFkZHJlc3MAAg5ub3RpZnlOb3Rpb25hbAkAzAgCBQdfdHJhZGVyCQDMCAIAAAUDbmlsBQNuaWwDCQAAAgUObm90aWZ5Tm90aW9uYWwFDm5vdGlmeU5vdGlvbmFsCQDOCAIJAM4IAgkAzggCCQDOCAIJAQ5kZWxldGVQb3NpdGlvbgEFB190cmFkZXIJAQl1cGRhdGVBbW0HBRZxdW90ZUFzc2V0UmVzZXJ2ZUFmdGVyBRViYXNlQXNzZXRSZXNlcnZlQWZ0ZXIFFnRvdGFsUG9zaXRpb25TaXplQWZ0ZXIFF2N1bXVsYXRpdmVOb3Rpb25hbEFmdGVyBRlvcGVuSW50ZXJlc3ROb3Rpb25hbEFmdGVyBQ50b3RhbExvbmdBZnRlcgUPdG90YWxTaG9ydEFmdGVyAwkAZgIFE3F1b3RlV2l0aGRyYXdBbW91bnQAAAkBCHdpdGhkcmF3AgUOX3RyYWRlckFkZHJlc3MFE3F1b3RlV2l0aGRyYXdBbW91bnQFA25pbAkBDXVwZGF0ZUJhbGFuY2UBBQ1hbW1OZXdCYWxhbmNlBRRzZW5kQ29sbGF0ZXJhbEFjdGlvbgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQlsaXF1aWRhdGUBB190cmFkZXIEBHN5bmMJAPwHBAUEdGhpcwIZc3luY1Rlcm1pbmFsUHJpY2VUb09yYWNsZQUDbmlsBQNuaWwDCQAAAgUEc3luYwUEc3luYwQPc3BvdE1hcmdpblJhdGlvCQEWZ2V0TWFyZ2luUmF0aW9CeU9wdGlvbgIFB190cmFkZXIFD1BOTF9PUFRJT05fU1BPVAQLbWFyZ2luUmF0aW8DCQEWaXNPdmVyRmx1Y3R1YXRpb25MaW1pdAAEEW9yYWNsZU1hcmdpblJhdGlvCQEWZ2V0TWFyZ2luUmF0aW9CeU9wdGlvbgIFB190cmFkZXIFEVBOTF9PUFRJT05fT1JBQ0xFCQEEdm1heAIFD3Nwb3RNYXJnaW5SYXRpbwURb3JhY2xlTWFyZ2luUmF0aW8FD3Nwb3RNYXJnaW5SYXRpbwMDAwMJAQEhAQkBFnJlcXVpcmVNb3JlTWFyZ2luUmF0aW8DBQttYXJnaW5SYXRpbwkBFm1haW50ZW5hbmNlTWFyZ2luUmF0aW8ABwYJAQEhAQkBE3JlcXVpcmVPcGVuUG9zaXRpb24BBQdfdHJhZGVyBgkBASEBCQELaW5pdGlhbGl6ZWQABgkBBnBhdXNlZAAJAAIBAhNVbmFibGUgdG8gbGlxdWlkYXRlAwMDCQBmAgUPc3BvdE1hcmdpblJhdGlvCQETbGlxdWlkYXRpb25GZWVSYXRpbwAJAGYCCQEXcGFydGlhbExpcXVpZGF0aW9uUmF0aW8AAAAHCQBmAgUMREVDSU1BTF9VTklUCQEXcGFydGlhbExpcXVpZGF0aW9uUmF0aW8ABwQNJHQwNjY0OTA2NjY0MAkBC2dldFBvc2l0aW9uAQUHX3RyYWRlcgQPb2xkUG9zaXRpb25TaXplCAUNJHQwNjY0OTA2NjY0MAJfMQQRb2xkUG9zaXRpb25NYXJnaW4IBQ0kdDA2NjQ5MDY2NjQwAl8yBBdvbGRQb3NpdGlvbk9wZW5Ob3Rpb25hbAgFDSR0MDY2NDkwNjY2NDACXzMEFG9sZFBvc2l0aW9uTHN0VXBkQ1BGCAUNJHQwNjY0OTA2NjY0MAJfNAQKX2RpcmVjdGlvbgMJAGYCBQ9vbGRQb3NpdGlvblNpemUAAAUJRElSX1NIT1JUBQhESVJfTE9ORwQFaXNBZGQJAAACBQpfZGlyZWN0aW9uBQhESVJfTE9ORwQZZXhjaGFuZ2VkUXVvdGVBc3NldEFtb3VudAkBG2dldFBhcnRpYWxMaXF1aWRhdGlvbkFtb3VudAIFB190cmFkZXIFD29sZFBvc2l0aW9uU2l6ZQQNJHQwNjY4NjU2Njk2OQkBI2dldFBvc2l0aW9uTm90aW9uYWxBbmRVbnJlYWxpemVkUG5sAgUHX3RyYWRlcgUPUE5MX09QVElPTl9TUE9UBBNvbGRQb3NpdGlvbk5vdGlvbmFsCAUNJHQwNjY4NjU2Njk2OQJfMQQNdW5yZWFsaXplZFBubAgFDSR0MDY2ODY1NjY5NjkCXzIEDSR0MDY2OTc3NjcyMDkJAQlzd2FwSW5wdXQCBQVpc0FkZAUZZXhjaGFuZ2VkUXVvdGVBc3NldEFtb3VudAQVZXhjaGFuZ2VkUG9zaXRpb25TaXplCAUNJHQwNjY5Nzc2NzIwOQJfMQQWcXVvdGVBc3NldFJlc2VydmVBZnRlcggFDSR0MDY2OTc3NjcyMDkCXzIEFWJhc2VBc3NldFJlc2VydmVBZnRlcggFDSR0MDY2OTc3NjcyMDkCXzMEFnRvdGFsUG9zaXRpb25TaXplQWZ0ZXIIBQ0kdDA2Njk3NzY3MjA5Al80BBdjdW11bGF0aXZlTm90aW9uYWxBZnRlcggFDSR0MDY2OTc3NjcyMDkCXzUEEGxpcXVpZGF0aW9uUmF0aW8JAQRkaXZkAgkBA2FicwEFFWV4Y2hhbmdlZFBvc2l0aW9uU2l6ZQkBA2FicwEFD29sZFBvc2l0aW9uU2l6ZQQLcmVhbGl6ZWRQbmwJAQRtdWxkAgUNdW5yZWFsaXplZFBubAUQbGlxdWlkYXRpb25SYXRpbwQNJHQwNjc0OTg2NzczMQkBImNhbGNSZW1haW5NYXJnaW5XaXRoRnVuZGluZ1BheW1lbnQEBQ9vbGRQb3NpdGlvblNpemUFEW9sZFBvc2l0aW9uTWFyZ2luBRRvbGRQb3NpdGlvbkxzdFVwZENQRgULcmVhbGl6ZWRQbmwEDHJlbWFpbk1hcmdpbggFDSR0MDY3NDk4Njc3MzECXzEEB2JhZERlYnQIBQ0kdDA2NzQ5ODY3NzMxAl8yBA5mdW5kaW5nUGF5bWVudAgFDSR0MDY3NDk4Njc3MzECXzMEEnVucmVhbGl6ZWRQbmxBZnRlcgkAZQIFDXVucmVhbGl6ZWRQbmwFC3JlYWxpemVkUG5sBBJyZW1haW5PcGVuTm90aW9uYWwDCQBmAgUPb2xkUG9zaXRpb25TaXplAAAJAGUCCQBlAgUTb2xkUG9zaXRpb25Ob3Rpb25hbAUZZXhjaGFuZ2VkUXVvdGVBc3NldEFtb3VudAUSdW5yZWFsaXplZFBubEFmdGVyCQBlAgkAZAIFEnVucmVhbGl6ZWRQbmxBZnRlcgUTb2xkUG9zaXRpb25Ob3Rpb25hbAUZZXhjaGFuZ2VkUXVvdGVBc3NldEFtb3VudAQSbGlxdWlkYXRpb25QZW5hbHR5CQEEbXVsZAIFGWV4Y2hhbmdlZFF1b3RlQXNzZXRBbW91bnQJARNsaXF1aWRhdGlvbkZlZVJhdGlvAAQPZmVlVG9MaXF1aWRhdG9yCQBpAgUSbGlxdWlkYXRpb25QZW5hbHR5AAIEDmZlZVRvSW5zdXJhbmNlCQBlAgUSbGlxdWlkYXRpb25QZW5hbHR5BQ9mZWVUb0xpcXVpZGF0b3IEEW5ld1Bvc2l0aW9uTWFyZ2luCQBlAgUMcmVtYWluTWFyZ2luBRJsaXF1aWRhdGlvblBlbmFsdHkED25ld1Bvc2l0aW9uU2l6ZQkAZAIFD29sZFBvc2l0aW9uU2l6ZQUVZXhjaGFuZ2VkUG9zaXRpb25TaXplBBduZXdQb3NpdGlvbk9wZW5Ob3Rpb25hbAkBA2FicwEFEnJlbWFpbk9wZW5Ob3Rpb25hbAQUbmV3UG9zaXRpb25Mc3RVcGRDUEYJAR9sYXRlc3RDdW11bGF0aXZlUHJlbWl1bUZyYWN0aW9uAQUPbmV3UG9zaXRpb25TaXplBBlvcGVuSW50ZXJlc3ROb3Rpb25hbEFmdGVyCQBlAgkBFG9wZW5JbnRlcmVzdE5vdGlvbmFsAAUZZXhjaGFuZ2VkUXVvdGVBc3NldEFtb3VudAQKYW1tQmFsYW5jZQkAZQIJAQhjYmFsYW5jZQAFEmxpcXVpZGF0aW9uUGVuYWx0eQQNJHQwNjg5MDQ2OTAzMwMJAGYCAAAFCmFtbUJhbGFuY2UJAJQKAgAACQEDYWJzAQUKYW1tQmFsYW5jZQkAlAoCBQphbW1CYWxhbmNlAAAEDW5ld0FtbUJhbGFuY2UIBQ0kdDA2ODkwNDY5MDMzAl8xBAN4MTEIBQ0kdDA2ODkwNDY5MDMzAl8yBA0kdDA2OTA0MTY5MDk1CQETZ2V0Qm9ycm93ZWRCeVRyYWRlcgEFB190cmFkZXIECGJvcnJvd2VkCAUNJHQwNjkwNDE2OTA5NQJfMQQHYXNzZXRJZAgFDSR0MDY5MDQxNjkwOTUCXzIEFWRvTGlxdWlkYXRlQ29sbGF0ZXJhbAMJAGYCBQhib3Jyb3dlZAAABBBjb2xsYXRlcmFsVG9TZWxsCQEEbXVsZAIFCGJvcnJvd2VkBRBsaXF1aWRhdGlvblJhdGlvBA9yZWFsaXplQW5kQ2xvc2UJAPwHBAkBEWNvbGxhdGVyYWxBZGRyZXNzAAIQcmVhbGl6ZVBhcnRpYWxseQkAzAgCBQdfdHJhZGVyCQDMCAIFB2Fzc2V0SWQJAMwIAgUQY29sbGF0ZXJhbFRvU2VsbAUDbmlsBQNuaWwDCQAAAgUPcmVhbGl6ZUFuZENsb3NlBQ9yZWFsaXplQW5kQ2xvc2UFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgUDbmlsAwkAAAIFFWRvTGlxdWlkYXRlQ29sbGF0ZXJhbAUVZG9MaXF1aWRhdGVDb2xsYXRlcmFsBAd1bnN0YWtlCQD8BwQJAQx2YXVsdEFkZHJlc3MAAg53aXRoZHJhd0xvY2tlZAkAzAgCBRJsaXF1aWRhdGlvblBlbmFsdHkFA25pbAUDbmlsAwkAAAIFB3Vuc3Rha2UFB3Vuc3Rha2UEEGRlcG9zaXRJbnN1cmFuY2UJAPwHBAkBDHZhdWx0QWRkcmVzcwACB2FkZEZyZWUFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkBCnF1b3RlQXNzZXQABQ5mZWVUb0luc3VyYW5jZQUDbmlsAwkAAAIFEGRlcG9zaXRJbnN1cmFuY2UFEGRlcG9zaXRJbnN1cmFuY2UEDm5vdGlmeU5vdGlvbmFsCQD8BwQJAQxtaW5lckFkZHJlc3MAAg5ub3RpZnlOb3Rpb25hbAkAzAgCBQdfdHJhZGVyCQDMCAIFF25ld1Bvc2l0aW9uT3Blbk5vdGlvbmFsBQNuaWwFA25pbAMJAAACBQ5ub3RpZnlOb3Rpb25hbAUObm90aWZ5Tm90aW9uYWwJAM4IAgkAzggCCQDOCAIJAQ51cGRhdGVQb3NpdGlvbgUFB190cmFkZXIFD25ld1Bvc2l0aW9uU2l6ZQURbmV3UG9zaXRpb25NYXJnaW4FF25ld1Bvc2l0aW9uT3Blbk5vdGlvbmFsBRRuZXdQb3NpdGlvbkxzdFVwZENQRgkBCXVwZGF0ZUFtbQcFFnF1b3RlQXNzZXRSZXNlcnZlQWZ0ZXIFFWJhc2VBc3NldFJlc2VydmVBZnRlcgUWdG90YWxQb3NpdGlvblNpemVBZnRlcgUXY3VtdWxhdGl2ZU5vdGlvbmFsQWZ0ZXIFGW9wZW5JbnRlcmVzdE5vdGlvbmFsQWZ0ZXIJAGUCCQEVdG90YWxMb25nUG9zaXRpb25TaXplAAMJAGYCBQ9uZXdQb3NpdGlvblNpemUAAAkBA2FicwEFFWV4Y2hhbmdlZFBvc2l0aW9uU2l6ZQAACQBlAgkBFnRvdGFsU2hvcnRQb3NpdGlvblNpemUAAwkAZgIAAAUPbmV3UG9zaXRpb25TaXplCQEDYWJzAQUVZXhjaGFuZ2VkUG9zaXRpb25TaXplAAAJAQh3aXRoZHJhdwIIBQFpBmNhbGxlcgUPZmVlVG9MaXF1aWRhdG9yCQENdXBkYXRlQmFsYW5jZQEFDW5ld0FtbUJhbGFuY2UJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4EDSR0MDcwOTAwNzEzNTUJARVpbnRlcm5hbENsb3NlUG9zaXRpb24CBQdfdHJhZGVyBwQCeDEIBQ0kdDA3MDkwMDcxMzU1Al8xBAdiYWREZWJ0CAUNJHQwNzA5MDA3MTM1NQJfMgQCeDIIBQ0kdDA3MDkwMDcxMzU1Al8zBAJ4MwgFDSR0MDcwOTAwNzEzNTUCXzQEFnF1b3RlQXNzZXRSZXNlcnZlQWZ0ZXIIBQ0kdDA3MDkwMDcxMzU1Al81BBViYXNlQXNzZXRSZXNlcnZlQWZ0ZXIIBQ0kdDA3MDkwMDcxMzU1Al82BBZ0b3RhbFBvc2l0aW9uU2l6ZUFmdGVyCAUNJHQwNzA5MDA3MTM1NQJfNwQXY3VtdWxhdGl2ZU5vdGlvbmFsQWZ0ZXIIBQ0kdDA3MDkwMDcxMzU1Al84BBlvcGVuSW50ZXJlc3ROb3Rpb25hbEFmdGVyCAUNJHQwNzA5MDA3MTM1NQJfOQQZZXhjaGFuZ2VkUXVvdGVBc3NldEFtb3VudAgFDSR0MDcwOTAwNzEzNTUDXzEwBA50b3RhbExvbmdBZnRlcggFDSR0MDcwOTAwNzEzNTUDXzExBA90b3RhbFNob3J0QWZ0ZXIIBQ0kdDA3MDkwMDcxMzU1A18xMgQSbGlxdWlkYXRpb25QZW5hbHR5CQEEbXVsZAIFGWV4Y2hhbmdlZFF1b3RlQXNzZXRBbW91bnQJARNsaXF1aWRhdGlvbkZlZVJhdGlvAAQPZmVlVG9MaXF1aWRhdG9yCQBpAgUSbGlxdWlkYXRpb25QZW5hbHR5AAIEDmZlZVRvSW5zdXJhbmNlCQBlAgUSbGlxdWlkYXRpb25QZW5hbHR5BQ9mZWVUb0xpcXVpZGF0b3IECmFtbUJhbGFuY2UJAGUCCQEIY2JhbGFuY2UABRJsaXF1aWRhdGlvblBlbmFsdHkEDSR0MDcxNzY3NzE4OTYDCQBmAgAABQphbW1CYWxhbmNlCQCUCgIAAAkBA2FicwEFCmFtbUJhbGFuY2UJAJQKAgUKYW1tQmFsYW5jZQAABA1uZXdBbW1CYWxhbmNlCAUNJHQwNzE3Njc3MTg5NgJfMQQDeDExCAUNJHQwNzE3Njc3MTg5NgJfMgQNJHQwNzE5MDQ3MTk1OAkBE2dldEJvcnJvd2VkQnlUcmFkZXIBBQdfdHJhZGVyBAhib3Jyb3dlZAgFDSR0MDcxOTA0NzE5NTgCXzEEB2Fzc2V0SWQIBQ0kdDA3MTkwNDcxOTU4Al8yBBVkb0xpcXVpZGF0ZUNvbGxhdGVyYWwDCQBmAgUIYm9ycm93ZWQAAAQPcmVhbGl6ZUFuZENsb3NlCQD8BwQJARFjb2xsYXRlcmFsQWRkcmVzcwACGHJlYWxpemVQYXJ0aWFsbHlBbmRDbG9zZQkAzAgCBQdfdHJhZGVyCQDMCAIFB2Fzc2V0SWQFA25pbAUDbmlsAwkAAAIFD3JlYWxpemVBbmRDbG9zZQUPcmVhbGl6ZUFuZENsb3NlBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4FA25pbAMJAAACBRVkb0xpcXVpZGF0ZUNvbGxhdGVyYWwFFWRvTGlxdWlkYXRlQ29sbGF0ZXJhbAQBeAMJAGYCBQdiYWREZWJ0AAAEC2xvY2tCYWREZWJ0CQD8BwQJAQx2YXVsdEFkZHJlc3MAAhVleGNoYW5nZUZyZWVBbmRMb2NrZWQJAMwIAgUHYmFkRGVidAUDbmlsBQNuaWwDCQAAAgULbG9ja0JhZERlYnQFC2xvY2tCYWREZWJ0BQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4FA25pbAMJAAACBQF4BQF4BAd1bnN0YWtlCQD8BwQJAQx2YXVsdEFkZHJlc3MAAg53aXRoZHJhd0xvY2tlZAkAzAgCBRJsaXF1aWRhdGlvblBlbmFsdHkFA25pbAUDbmlsAwkAAAIFB3Vuc3Rha2UFB3Vuc3Rha2UEEGRlcG9zaXRJbnN1cmFuY2UJAPwHBAkBDHZhdWx0QWRkcmVzcwACB2FkZEZyZWUFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkBCnF1b3RlQXNzZXQABQ5mZWVUb0luc3VyYW5jZQUDbmlsAwkAAAIFEGRlcG9zaXRJbnN1cmFuY2UFEGRlcG9zaXRJbnN1cmFuY2UEDm5vdGlmeU5vdGlvbmFsCQD8BwQJAQxtaW5lckFkZHJlc3MAAg5ub3RpZnlOb3Rpb25hbAkAzAgCBQdfdHJhZGVyCQDMCAIAAAUDbmlsBQNuaWwDCQAAAgUObm90aWZ5Tm90aW9uYWwFDm5vdGlmeU5vdGlvbmFsCQDOCAIJAM4IAgkAzggCCQEOZGVsZXRlUG9zaXRpb24BBQdfdHJhZGVyCQEJdXBkYXRlQW1tBwUWcXVvdGVBc3NldFJlc2VydmVBZnRlcgUVYmFzZUFzc2V0UmVzZXJ2ZUFmdGVyBRZ0b3RhbFBvc2l0aW9uU2l6ZUFmdGVyBRdjdW11bGF0aXZlTm90aW9uYWxBZnRlcgUZb3BlbkludGVyZXN0Tm90aW9uYWxBZnRlcgUOdG90YWxMb25nQWZ0ZXIFD3RvdGFsU2hvcnRBZnRlcgkBCHdpdGhkcmF3AggFAWkGY2FsbGVyBQ9mZWVUb0xpcXVpZGF0b3IJAQ11cGRhdGVCYWxhbmNlAQUNbmV3QW1tQmFsYW5jZQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQpwYXlGdW5kaW5nAAQVZnVuZGluZ0Jsb2NrVGltZXN0YW1wCQEZbmV4dEZ1bmRpbmdCbG9ja1RpbWVzdGFtcAADAwMJAGYCBRVmdW5kaW5nQmxvY2tUaW1lc3RhbXAIBQlsYXN0QmxvY2sJdGltZXN0YW1wBgkBASEBCQELaW5pdGlhbGl6ZWQABgkBBnBhdXNlZAAJAAIBCQCsAgIJAKwCAgkArAICAiFJbnZhbGlkIGZ1bmRpbmcgYmxvY2sgdGltZXN0YW1wOiAJAKQDAQgFCWxhc3RCbG9jawl0aW1lc3RhbXACAyA8IAkApAMBBRVmdW5kaW5nQmxvY2tUaW1lc3RhbXAED3VuZGVybHlpbmdQcmljZQkBEmdldE9yYWNsZVR3YXBQcmljZQAEDSR0MDczOTg1NzQwNDcJAQpnZXRGdW5kaW5nAAQUc2hvcnRQcmVtaXVtRnJhY3Rpb24IBQ0kdDA3Mzk4NTc0MDQ3Al8xBBNsb25nUHJlbWl1bUZyYWN0aW9uCAUNJHQwNzM5ODU3NDA0NwJfMgkBDXVwZGF0ZUZ1bmRpbmcFCQBkAgUVZnVuZGluZ0Jsb2NrVGltZXN0YW1wCQEUZnVuZGluZ1BlcmlvZFNlY29uZHMACQBkAgkBI2xhdGVzdExvbmdDdW11bGF0aXZlUHJlbWl1bUZyYWN0aW9uAAUTbG9uZ1ByZW1pdW1GcmFjdGlvbgkAZAIJASRsYXRlc3RTaG9ydEN1bXVsYXRpdmVQcmVtaXVtRnJhY3Rpb24ABRRzaG9ydFByZW1pdW1GcmFjdGlvbgkBBGRpdmQCBRNsb25nUHJlbWl1bUZyYWN0aW9uBQ91bmRlcmx5aW5nUHJpY2UJAQRkaXZkAgUUc2hvcnRQcmVtaXVtRnJhY3Rpb24FD3VuZGVybHlpbmdQcmljZQFpARlzeW5jVGVybWluYWxQcmljZVRvT3JhY2xlAAQNJHQwNzQ0Mjk3NDU1MAkBFGdldFN5bmNUZXJtaW5hbFByaWNlAQkBEmdldE9yYWNsZVR3YXBQcmljZQAEE25ld1F1b3RlQXNzZXRXZWlnaHQIBQ0kdDA3NDQyOTc0NTUwAl8xBBJuZXdCYXNlQXNzZXRXZWlnaHQIBQ0kdDA3NDQyOTc0NTUwAl8yBA1tYXJnaW5Ub1ZhdWx0CAUNJHQwNzQ0Mjk3NDU1MAJfMwkBEHVwZGF0ZUFtbVdlaWdodHMCBRNuZXdRdW90ZUFzc2V0V2VpZ2h0BRJuZXdCYXNlQXNzZXRXZWlnaHQBaQEFdl9nZXQBB190cmFkZXIEBHN5bmMJAPwHBAUEdGhpcwIZc3luY1Rlcm1pbmFsUHJpY2VUb09yYWNsZQUDbmlsBQNuaWwDCQAAAgUEc3luYwUEc3luYwQNJHQwNzQ3Mjg3NDc4OAkBFWludGVybmFsQ2xvc2VQb3NpdGlvbgIFB190cmFkZXIHBAJ4MQgFDSR0MDc0NzI4NzQ3ODgCXzEEAngyCAUNJHQwNzQ3Mjg3NDc4OAJfMgQCeDMIBQ0kdDA3NDcyODc0Nzg4Al8zBAJ4NAgFDSR0MDc0NzI4NzQ3ODgCXzQJAAIBCQCsAgIJAKwCAgkArAICCQEBcwEFAngyCQEBcwEFAngzCQEBcwEFAng0CQEBcwEJAQ5nZXRNYXJnaW5SYXRpbwEFB190cmFkZXIJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEndmlld19jYWxjUmVtYWluTWFyZ2luV2l0aEZ1bmRpbmdQYXltZW50AQdfdHJhZGVyBARzeW5jCQD8BwQFBHRoaXMCGXN5bmNUZXJtaW5hbFByaWNlVG9PcmFjbGUFA25pbAUDbmlsAwkAAAIFBHN5bmMFBHN5bmMEDSR0MDc0OTk5NzUxMDAJAQtnZXRQb3NpdGlvbgEFB190cmFkZXIEDHBvc2l0aW9uU2l6ZQgFDSR0MDc0OTk5NzUxMDACXzEEDnBvc2l0aW9uTWFyZ2luCAUNJHQwNzQ5OTk3NTEwMAJfMgQDcG9uCAUNJHQwNzQ5OTk3NTEwMAJfMwQRcG9zaXRpb25Mc3RVcGRDUEYIBQ0kdDA3NDk5OTc1MTAwAl80BA0kdDA3NTEwMzc1MjA0CQEjZ2V0UG9zaXRpb25Ob3Rpb25hbEFuZFVucmVhbGl6ZWRQbmwCBQdfdHJhZGVyBQ9QTkxfT1BUSU9OX1NQT1QEEHBvc2l0aW9uTm90aW9uYWwIBQ0kdDA3NTEwMzc1MjA0Al8xBA11bnJlYWxpemVkUG5sCAUNJHQwNzUxMDM3NTIwNAJfMgQNJHQwNzUyMDc3NTM3OQkBImNhbGNSZW1haW5NYXJnaW5XaXRoRnVuZGluZ1BheW1lbnQEBQxwb3NpdGlvblNpemUFDnBvc2l0aW9uTWFyZ2luBRFwb3NpdGlvbkxzdFVwZENQRgUNdW5yZWFsaXplZFBubAQMcmVtYWluTWFyZ2luCAUNJHQwNzUyMDc3NTM3OQJfMQQHYmFkRGVidAgFDSR0MDc1MjA3NzUzNzkCXzIEDmZ1bmRpbmdQYXltZW50CAUNJHQwNzUyMDc3NTM3OQJfMwkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQEBcwEFDHJlbWFpbk1hcmdpbgkBAXMBBQ5mdW5kaW5nUGF5bWVudAkBAXMBCQEOZ2V0TWFyZ2luUmF0aW8BBQdfdHJhZGVyCQEBcwEFDXVucmVhbGl6ZWRQbmwJAQFzAQUHYmFkRGVidAkBAXMBBRBwb3NpdGlvbk5vdGlvbmFsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBFXZpZXdfZ2V0UGVnQWRqdXN0Q29zdAEGX3ByaWNlBAZyZXN1bHQJARRnZXRTeW5jVGVybWluYWxQcmljZQEFBl9wcmljZQkAAgEJAKQDAQgFBnJlc3VsdAJfMwFpARh2aWV3X2dldFRlcm1pbmFsQW1tUHJpY2UABA0kdDA3NTcyNjc1ODA3CQETZ2V0VGVybWluYWxBbW1TdGF0ZQAEGXRlcm1pbmFsUXVvdGVBc3NldFJlc2VydmUIBQ0kdDA3NTcyNjc1ODA3Al8xBBh0ZXJtaW5hbEJhc2VBc3NldFJlc2VydmUIBQ0kdDA3NTcyNjc1ODA3Al8yBAVwcmljZQkBBGRpdmQCCQEEbXVsZAIFGXRlcm1pbmFsUXVvdGVBc3NldFJlc2VydmUJAQZxdEFzdFcACQEEbXVsZAIFGHRlcm1pbmFsQmFzZUFzc2V0UmVzZXJ2ZQkBBmJzQXN0VwAJAAIBCQCkAwEFBXByaWNlAWkBD3ZpZXdfZ2V0RnVuZGluZwAED3VuZGVybHlpbmdQcmljZQkBEmdldE9yYWNsZVR3YXBQcmljZQAEDSR0MDc2MDI2NzYwODgJAQpnZXRGdW5kaW5nAAQUc2hvcnRQcmVtaXVtRnJhY3Rpb24IBQ0kdDA3NjAyNjc2MDg4Al8xBBNsb25nUHJlbWl1bUZyYWN0aW9uCAUNJHQwNzYwMjY3NjA4OAJfMgQLbG9uZ0Z1bmRpbmcJAQRkaXZkAgUTbG9uZ1ByZW1pdW1GcmFjdGlvbgUPdW5kZXJseWluZ1ByaWNlBAxzaG9ydEZ1bmRpbmcJAQRkaXZkAgUUc2hvcnRQcmVtaXVtRnJhY3Rpb24FD3VuZGVybHlpbmdQcmljZQkAAgEJAKwCAgkArAICCQCsAgIJAQFzAQULbG9uZ0Z1bmRpbmcJAQFzAQUMc2hvcnRGdW5kaW5nCQEBcwEJARBnZXRUd2FwU3BvdFByaWNlAAkBAXMBCQESZ2V0T3JhY2xlVHdhcFByaWNlAAFpARh2aWV3X2dldEJvcnJvd2VkQnlUcmFkZXIBB190cmFkZXIEDSR0MDc2Mzc4NzY0MzIJARNnZXRCb3Jyb3dlZEJ5VHJhZGVyAQUHX3RyYWRlcgQIYm9ycm93ZWQIBQ0kdDA3NjM3ODc2NDMyAl8xBAdhc3NldElkCAUNJHQwNzYzNzg3NjQzMgJfMgkAAgEJAKwCAgkBAXMBBQhib3Jyb3dlZAUHYXNzZXRJZAECdHgBBnZlcmlmeQAJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAJAQ5hZG1pblB1YmxpY0tleQAfwpEX", "height": 2338737, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: A446MLvcKn12ufD9TA9yURkoQiQah9C2wdWVqw62chFU Next: J7uKdaq1NavAeqpr1qshcZMfEx9sZ3mPT65fzBXvvu8G Diff:
OldNewDifferences
328328 func bO () = br(s)
329329
330330
331-func bP () = 10000000000
331+func bP () = br(t)
332332
333333
334334 func bQ () = br(u)
432432 let cB = if (cq)
433433 then (cw + cr)
434434 else (cw - cr)
435- let cC = aM(bs, aO(aO(cB, cx), cz))
436- let cD = aV((cC - cy))
435+ let cC = aM(bs, cB)
436+ let cD = aM(aV((cC - cy)), cx)
437437 let cE = if (cq)
438438 then cD
439439 else -(cD)
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "k_ora_key"
55
66 let b = "k_ora_block_key"
77
88 let c = "k_ora"
99
1010 let d = "k_balance"
1111
1212 let e = "k_positionSize"
1313
1414 let f = "k_positionMargin"
1515
1616 let g = "k_positionOpenNotional"
1717
1818 let h = "k_positionFraction"
1919
2020 let i = "k_positionClosedDate"
2121
2222 let j = "k_positionAsset"
2323
2424 let k = "k_initialized"
2525
2626 let l = "k_paused"
2727
2828 let m = "k_fee"
2929
3030 let n = "k_fundingPeriod"
3131
3232 let o = "k_initMarginRatio"
3333
3434 let p = "k_mmr"
3535
3636 let q = "k_liquidationFeeRatio"
3737
3838 let r = "k_partLiquidationRatio"
3939
4040 let s = "k_spreadLimit"
4141
4242 let t = "k_maxPriceImpact"
4343
4444 let u = "k_maxPriceSpread"
4545
4646 let v = "k_lastDataStr"
4747
4848 let w = "k_lastMinuteId"
4949
5050 let x = "k_twapDataLastCumulativePrice"
5151
5252 let y = "k_twapDataLastPrice"
5353
5454 let z = "k_twapDataPreviousMinuteId"
5555
5656 let A = "k_latestLongPremiumFraction"
5757
5858 let B = "k_latestShortPremiumFraction"
5959
6060 let C = "k_nextFundingBlockMinTimestamp"
6161
6262 let D = "k_longFundingRate"
6363
6464 let E = "k_shortFundingRate"
6565
6666 let F = "k_qtAstR"
6767
6868 let G = "k_bsAstR"
6969
7070 let H = "k_qtAstW"
7171
7272 let I = "k_bsAstW"
7373
7474 let J = "k_totalPositionSize"
7575
7676 let K = "k_totalLongPositionSize"
7777
7878 let L = "k_totalShortPositionSize"
7979
8080 let M = "k_cumulativeNotional"
8181
8282 let N = "k_openInterestNotional"
8383
8484 let O = "k_coordinatorAddress"
8585
8686 let P = "k_vault_address"
8787
8888 let Q = "k_admin_address"
8989
9090 let R = "k_admin_public_key"
9191
9292 let S = "k_quote_asset"
9393
9494 let T = "k_quote_staking"
9595
9696 let U = "k_staking_address"
9797
9898 let V = "k_miner_address"
9999
100100 let W = "k_orders_address"
101101
102102 let X = "k_referral_address"
103103
104104 let Y = "k_manager_address"
105105
106106 let Z = "k_collateral_address"
107107
108108 let aa = "k_exchange_address"
109109
110110 let ab = "k_nft_manager_address"
111111
112112 let ac = "k_trader_market_asset_collateral"
113113
114114 func ad (ae,af) = ((ae + "_") + af)
115115
116116
117117 func ag () = valueOrErrorMessage(addressFromString(getStringValue(this, O)), "Coordinator not set")
118118
119119
120120 func ah () = addressFromString(getStringValue(ag(), Q))
121121
122122
123123 func ai () = fromBase58String(getStringValue(ag(), R))
124124
125125
126126 func aj () = fromBase58String(getStringValue(ag(), S))
127127
128128
129129 func ak () = valueOrErrorMessage(addressFromString(getStringValue(ag(), T)), "Quote asset staking not set")
130130
131131
132132 func al () = valueOrErrorMessage(addressFromString(getStringValue(ag(), U)), "Staking not set")
133133
134134
135135 func am () = valueOrErrorMessage(addressFromString(getStringValue(ag(), P)), "Vault not set")
136136
137137
138138 func an () = valueOrErrorMessage(addressFromString(getStringValue(ag(), V)), "Miner not set")
139139
140140
141141 func ao () = valueOrErrorMessage(addressFromString(getStringValue(ag(), W)), "Orders not set")
142142
143143
144144 func ap () = valueOrErrorMessage(addressFromString(getStringValue(ag(), X)), "Referral not set")
145145
146146
147147 func aq () = valueOrErrorMessage(addressFromString(getStringValue(ag(), ab)), "NFT Manager not set")
148148
149149
150150 func ar () = valueOrErrorMessage(addressFromString(getStringValue(ag(), Z)), "Collateral Manager not set")
151151
152152
153153 func as () = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(ag(), aa), "No swap address")), "Invalid swap address")
154154
155155
156156 let at = "k_whitelist_asset"
157157
158158 func au (av) = valueOrElse(getBoolean(ar(), ad(at, av)), false)
159159
160160
161161 let aw = "k_token_param"
162162
163163 let ax = "k_token_type"
164164
165165 let ay = "fee_reduction"
166166
167167 let az = 1
168168
169169 let aA = 2
170170
171171 let aB = 15
172172
173173 let aC = 15
174174
175175 let aD = 1000
176176
177177 let aE = 6
178178
179179 let aF = (1 * (((((10 * 10) * 10) * 10) * 10) * 10))
180180
181181 let aG = (86400 * aF)
182182
183183 let aH = 100
184184
185185 let aI = 1
186186
187187 let aJ = 2
188188
189189 func aK (aL) = (toString(aL) + ",")
190190
191191
192192 func aM (aL,aN) = fraction(aL, aF, aN, HALFEVEN)
193193
194194
195195 func aO (aL,aN) = fraction(aL, aN, aF, HALFEVEN)
196196
197197
198198 func aP (aL) = sqrt(aL, aE, aE, HALFEVEN)
199199
200200
201201 func aQ (aL,aN) = pow(aL, aE, aN, aE, aE, HALFEVEN)
202202
203203
204204 func aR (aL,aN) = fraction(aL, toBigInt(aF), aN, HALFEVEN)
205205
206206
207207 func aS (aL,aN) = fraction(aL, aN, toBigInt(aF), HALFEVEN)
208208
209209
210210 func aT (aL) = sqrtBigInt(aL, aE, aE, HALFEVEN)
211211
212212
213213 func aU (aL,aN) = pow(aL, aE, aN, aE, aE, HALFEVEN)
214214
215215
216216 func aV (aL) = if ((aL > 0))
217217 then aL
218218 else -(aL)
219219
220220
221221 func aW (aL,aN) = if ((aL >= aN))
222222 then aL
223223 else aN
224224
225225
226226 func aX (aY) = {
227227 func aZ (ba,bb) = ((ba + bb) + ",")
228228
229229 let bc = {
230230 let bd = aY
231231 let be = size(bd)
232232 let bf = ""
233233 func bg (bh,bi) = if ((bi >= be))
234234 then bh
235235 else aZ(bh, bd[bi])
236236
237237 func bj (bh,bi) = if ((bi >= be))
238238 then bh
239239 else throw("List size exceeds 20")
240240
241241 bj(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bf, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
242242 }
243243 let bk = dropRight(bc, 1)
244244 let bl = if ((take(bk, 1) == ","))
245245 then drop(bk, 1)
246246 else bk
247247 bl
248248 }
249249
250250
251251 func bm (bn) = split(bn, ",")
252252
253253
254254 func bo (aY,bp,bq) = if ((size(aY) > bp))
255255 then (removeByIndex(aY, 0) :+ bq)
256256 else (aY :+ bq)
257257
258258
259259 func br (bs) = valueOrErrorMessage(getInteger(this, bs), ("no value for " + bs))
260260
261261
262262 func bt (bs,bu) = valueOrElse(getInteger(this, bs), bu)
263263
264264
265265 func bv (af,ae) = {
266266 let bb = valueOrErrorMessage(getString(af, ae), ("No value for key " + ae))
267267 bb
268268 }
269269
270270
271271 func bw (af,ae) = {
272272 let bb = valueOrErrorMessage(getInteger(af, ae), ("No value for key " + ae))
273273 bb
274274 }
275275
276276
277277 func bx () = br(d)
278278
279279
280280 func by () = br(m)
281281
282282
283283 func bz () = br(o)
284284
285285
286286 func bA () = br(F)
287287
288288
289289 func bB () = br(G)
290290
291291
292292 func bC () = bt(H, aF)
293293
294294
295295 func bD () = bt(I, aF)
296296
297297
298298 func bE () = br(J)
299299
300300
301301 func bF () = br(M)
302302
303303
304304 func bG () = br(N)
305305
306306
307307 func bH () = br(C)
308308
309309
310310 func bI () = br(n)
311311
312312
313313 func bJ () = (bI() * aF)
314314
315315
316316 func bK () = (bI() * aD)
317317
318318
319319 func bL () = br(p)
320320
321321
322322 func bM () = br(q)
323323
324324
325325 func bN () = br(r)
326326
327327
328328 func bO () = br(s)
329329
330330
331-func bP () = 10000000000
331+func bP () = br(t)
332332
333333
334334 func bQ () = br(u)
335335
336336
337337 func bR () = br(A)
338338
339339
340340 func bS () = br(B)
341341
342342
343343 func bT () = br(L)
344344
345345
346346 func bU () = br(K)
347347
348348
349349 func bV (bW) = valueOrElse(getString(ao(), "k_sender"), toString(bW.caller))
350350
351351
352352 func bX (bY,bZ,ca) = {
353353 let cb = (bY - bZ)
354354 if (if (ca)
355355 then (0 > cb)
356356 else false)
357357 then throw("Invalid margin")
358358 else if (if (!(ca))
359359 then (cb >= 0)
360360 else false)
361361 then throw("Invalid margin")
362362 else true
363363 }
364364
365365
366366 func cc (cd) = if ((cd == 0))
367367 then throw("Should not be called with _positionSize == 0")
368368 else if ((cd > 0))
369369 then bR()
370370 else bS()
371371
372372
373373 func ce (cf) = {
374374 let cg = getInteger(this, ad(e, cf))
375375 let ch = cg
376376 if ($isInstanceOf(ch, "Int"))
377377 then {
378378 let ci = ch
379379 $Tuple4(ci, getIntegerValue(this, ad(f, cf)), getIntegerValue(this, ad(g, cf)), getIntegerValue(this, ad(h, cf)))
380380 }
381381 else $Tuple4(0, 0, 0, 0)
382382 }
383383
384384
385385 func cj (cf) = {
386386 let ck = getString(this, ad(j, cf))
387387 let ch = ck
388388 if ($isInstanceOf(ch, "String"))
389389 then {
390390 let cl = ch
391391 cl
392392 }
393393 else toBase58String(aj())
394394 }
395395
396396
397397 func cm (cf) = if ((ce(cf)._1 == 0))
398398 then throw("No open position")
399399 else true
400400
401401
402402 func cn () = valueOrElse(getBoolean(this, k), false)
403403
404404
405405 func co () = valueOrElse(getBoolean(this, l), false)
406406
407407
408408 func cp (cq,cr,cs) = if (cq)
409409 then {
410410 let ct = (bB() - cs)
411411 if ((0 >= ct))
412412 then throw("Tx lead to base asset reserve <= 0, revert")
413413 else $Tuple4((bA() + cr), ct, (bE() + cs), (bF() + cr))
414414 }
415415 else {
416416 let cu = (bA() - cr)
417417 if ((0 >= cu))
418418 then throw("Tx lead to base quote reserve <= 0, revert")
419419 else $Tuple4(cu, (bB() + cs), (bE() - cs), (bF() - cr))
420420 }
421421
422422
423423 func cv (cw,cx,cy,cz) = aO(aO(cw, cx), aO(cy, cz))
424424
425425
426426 func cA (cq,cr) = {
427427 let cw = bA()
428428 let cy = bB()
429429 let cx = bC()
430430 let cz = bD()
431431 let bs = cv(cw, cx, cy, cz)
432432 let cB = if (cq)
433433 then (cw + cr)
434434 else (cw - cr)
435- let cC = aM(bs, aO(aO(cB, cx), cz))
436- let cD = aV((cC - cy))
435+ let cC = aM(bs, cB)
436+ let cD = aM(aV((cC - cy)), cx)
437437 let cE = if (cq)
438438 then cD
439439 else -(cD)
440440 let cF = cp(cq, cr, cD)
441441 let cG = cF._1
442442 let cH = cF._2
443443 let cI = cF._3
444444 let cJ = cF._4
445445 let cK = aM(aO(cw, cx), aO(cy, cz))
446446 let cL = aM(cr, cD)
447447 let cM = aV((cK - cL))
448448 let cN = (aF - aM(cK, (cK + cM)))
449449 let cO = bP()
450450 if ((cN > cO))
451451 then throw(((((((((((((("Price impact " + toString(cN)) + " > max price impact ") + toString(cO)) + " before quote asset: ") + toString(cw)) + " before base asset: ") + toString(cy)) + " quote asset amount to exchange: ") + toString(cr)) + " price before: ") + toString(cK)) + " marketPrice: ") + toString(cL)))
452452 else $Tuple5(cE, cG, cH, cI, cJ)
453453 }
454454
455455
456456 func cP (cQ,cR,cS,cT) = {
457457 let cU = if ((cQ != 0))
458458 then {
459459 let cV = cc(cQ)
460460 aO((cV - cS), cQ)
461461 }
462462 else 0
463463 let cW = ((cT - cU) + cR)
464464 let cX = if ((0 > cW))
465465 then $Tuple2(0, aV(cW))
466466 else $Tuple2(aV(cW), 0)
467467 let cY = cX._1
468468 let cZ = cX._2
469469 $Tuple3(cY, cZ, cU)
470470 }
471471
472472
473473 func da (cq,cs,db,dc,dd,de,df) = {
474474 let cK = aM(aO(dc, dd), aO(de, df))
475475 if ((cs == 0))
476476 then throw("Invalid base asset amount")
477477 else {
478478 let bs = cv(dc, dd, de, df)
479479 let dg = if (cq)
480480 then (de + cs)
481481 else (de - cs)
482482 let dh = aM(bs, aO(dg, df))
483483 let di = aV((dh - aO(dc, dd)))
484484 let cO = bP()
485485 let dj = cp(!(cq), di, cs)
486486 let cG = dj._1
487487 let cH = dj._2
488488 let cI = dj._3
489489 let cJ = dj._4
490490 let cL = aM(di, cs)
491491 let cM = aV((cK - cL))
492492 let cN = (aF - aM(cK, (cK + cM)))
493493 if (if ((cN > cO))
494494 then db
495495 else false)
496496 then throw(((((((((((((("Price impact " + toString(cN)) + " > max price impact ") + toString(cO)) + " before quote asset: ") + toString(dc)) + " before base asset: ") + toString(de)) + " base asset amount to exchange: ") + toString(cs)) + " price before: ") + toString(cK)) + " market price: ") + toString(cL)))
497497 else $Tuple8(di, cG, cH, cI, cJ, (bU() - (if (cq)
498498 then aV(cs)
499499 else 0)), (bT() - (if (!(cq))
500500 then aV(cs)
501501 else 0)), cN)
502502 }
503503 }
504504
505505
506506 func dk (cq,cs,db) = da(cq, cs, db, bA(), bC(), bB(), bD())
507507
508508
509509 func dl () = {
510510 let dm = valueOrErrorMessage(addressFromString(getStringValue(this, c)), "")
511511 let dn = getStringValue(this, a)
512512 let do = getStringValue(this, b)
513513 let dp = valueOrErrorMessage(getInteger(dm, dn), ((("Can not get oracle price. Oracle: " + toString(dm)) + " key: ") + dn))
514514 dp
515515 }
516516
517517
518518 func dq (dc,de) = {
519519 let dr = dl()
520520 let ds = aM(dc, de)
521521 let dt = aM((dr + ds), (2 * aF))
522522 let du = aM(aV((dr - ds)), dt)
523523 if ((du > bQ()))
524524 then throw(((("Price spread " + toString(du)) + " > max price spread ") + toString(bQ())))
525525 else true
526526 }
527527
528528
529529 func dv () = {
530530 let dc = bA()
531531 let de = bB()
532532 let cx = bC()
533533 let cz = bD()
534534 aM(aO(dc, cx), aO(de, cz))
535535 }
536536
537537
538538 func dw () = {
539539 let dr = dl()
540540 let dx = dv()
541541 (aM(aV((dr - dx)), dr) > bO())
542542 }
543543
544544
545545 func dy (cd,dz,dc,dd,de,df) = {
546546 let dA = aV(cd)
547547 let dB = (0 > cd)
548548 let dC = if ((dz == aI))
549549 then {
550550 let dD = da(!(dB), dA, false, dc, dd, de, df)
551551 let dE = dD._1
552552 let dF = dD._2
553553 let dG = dD._3
554554 let dH = dD._4
555555 dE
556556 }
557557 else aO(dA, dl())
558558 dC
559559 }
560560
561561
562562 func dI (cd,dJ,dc,dd,de,df,dz) = if ((cd == 0))
563563 then throw("Invalid position size")
564564 else {
565565 let dB = (0 > cd)
566566 let dC = dy(cd, dz, dc, dd, de, df)
567567 let dK = if (dB)
568568 then (dJ - dC)
569569 else (dC - dJ)
570570 $Tuple2(dC, dK)
571571 }
572572
573573
574574 func dL (cf,dz) = {
575575 let dM = ce(cf)
576576 let ci = dM._1
577577 let dN = dM._2
578578 let dO = dM._3
579579 let dP = dM._4
580580 dI(ci, dO, bA(), bC(), bB(), bD(), dz)
581581 }
582582
583583
584584 func dQ (dR,dS,dT) = aM((dR - dS), dT)
585585
586586
587587 func dU (cf,dz) = {
588588 let dV = ce(cf)
589589 let ci = dV._1
590590 let dN = dV._2
591591 let dW = dV._3
592592 let dP = dV._4
593593 let dX = dL(cf, dz)
594594 let dC = dX._1
595595 let dK = dX._2
596596 let dY = cP(ci, dN, dP, dK)
597597 let cY = dY._1
598598 let cZ = dY._2
599599 dQ(cY, cZ, dC)
600600 }
601601
602602
603603 func dZ (cf) = dU(cf, aI)
604604
605605
606606 func ea (cf,cd) = {
607607 let eb = aW(bN(), (aF - aM(dZ(cf), bL())))
608608 let ec = aO(aV(cd), eb)
609609 let ed = dk((cd > 0), ec, false)
610610 let ee = ed._1
611611 let cN = ed._8
612612 if ((bP() > cN))
613613 then ee
614614 else {
615615 let ef = aO(aV(cd), bN())
616616 let eg = dk((cd > 0), ef, false)._1
617617 eg
618618 }
619619 }
620620
621621
622622 func eh (cf,db) = {
623623 let ei = ce(cf)
624624 let ci = ei._1
625625 let dN = ei._2
626626 let dO = ei._3
627627 let dP = ei._4
628628 let dK = dL(cf, aI)._2
629629 let ej = cP(ci, dN, dP, dK)
630630 let cY = ej._1
631631 let cZ = ej._2
632632 let ef = -(ci)
633633 let ek = dK
634634 let el = -(cY)
635635 let em = dk((ci > 0), aV(ci), db)
636636 let eg = em._1
637637 let cB = em._2
638638 let cC = em._3
639639 let en = em._4
640640 let eo = em._5
641641 let ep = em._6
642642 let eq = em._7
643643 let er = (bG() - dO)
644644 $Tuple12(ef, cZ, ek, el, cB, cC, en, eo, er, eg, ep, eq)
645645 }
646646
647647
648648 func es () = {
649649 let et = ((lastBlock.timestamp / 1000) / 60)
650650 let eu = (et - aB)
651651 let ev = valueOrElse(getString(this, v), "")
652652 let ew = split(ev, ",")
653653 func ex (ba,ey) = if ((eu >= parseIntValue(ey)))
654654 then (ba :+ parseIntValue(ey))
655655 else ba
656656
657657 let ez = {
658658 let bd = ew
659659 let be = size(bd)
660660 let bf = nil
661661 func bg (bh,bi) = if ((bi >= be))
662662 then bh
663663 else ex(bh, bd[bi])
664664
665665 func bj (bh,bi) = if ((bi >= be))
666666 then bh
667667 else throw("List size exceeds 20")
668668
669669 bj(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bf, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
670670 }
671671 let eA = if ((size(ez) > 0))
672672 then max(ez)
673673 else parseIntValue(ew[0])
674674 let eB = valueOrElse(getInteger(this, w), 0)
675675 let eC = valueOrElse(getInteger(this, ((x + "_") + toString(eB))), 0)
676676 let eD = valueOrElse(getInteger(this, ((y + "_") + toString(eB))), 0)
677677 let eE = (eC + ((et - eB) * eD))
678678 let eF = valueOrElse(getInteger(this, ((x + "_") + toString(eA))), 0)
679679 let eG = valueOrElse(getInteger(this, ((y + "_") + toString(eA))), 0)
680680 let eH = (eF + ((eu - eA) * eG))
681681 ((eE - eH) / aB)
682682 }
683683
684684
685685 func eI () = {
686686 let cd = bE()
687687 if ((cd == 0))
688688 then $Tuple2(bA(), bB())
689689 else {
690690 let eJ = (cd > 0)
691691 let eK = dk(eJ, aV(cd), false)
692692 let eL = eK._1
693693 let eM = eK._2
694694 let eN = eK._3
695695 $Tuple2(eM, eN)
696696 }
697697 }
698698
699699
700700 func eO (eP,bE,eQ,eR) = {
701701 let eS = toBigInt(eP)
702702 let eT = toBigInt(bE)
703703 let eU = toBigInt(eQ)
704704 let eV = toBigInt(eR)
705705 let eW = aU((eS + eT), toBigInt((2 * aF)))
706706 let eX = aS(eU, eW)
707707 let eY = (toBigInt(4) * aS(eV, eT))
708708 let eZ = aT(aS(eX, (eU - eY)))
709709 let fa = aS(eS, eU)
710710 let fb = aS(eU, eT)
711711 let fc = ((-(eZ) + fa) + fb)
712712 let fd = (toBigInt(2) * aS(eU, eT))
713713 let fe = aR(fc, fd)
714714 toInt(fe)
715715 }
716716
717717
718718 func ff (fg) = {
719719 let cd = bE()
720720 if ((cd == 0))
721721 then {
722722 let cw = bA()
723723 let cy = bB()
724724 let fh = aM(aO(fg, cy), cw)
725725 $Tuple3(fh, aF, 0)
726726 }
727727 else {
728728 let eJ = (cd > 0)
729729 let eL = dk(eJ, aV(cd), false)._1
730730 let cw = bA()
731731 let cy = bB()
732732 let fh = eO(cy, cd, cw, fg)
733733 let fi = aF
734734 let el = dI(cd, eL, cw, fh, cy, fi, aI)._2
735735 $Tuple3(fh, fi, el)
736736 }
737737 }
738738
739739
740740 func fj () = {
741741 let fk = dl()
742742 let fl = es()
743743 let fm = (fl - fk)
744744 if (if ((bT() == 0))
745745 then true
746746 else (bU() == 0))
747747 then $Tuple2(0, 0)
748748 else if ((0 > fm))
749749 then {
750750 let fn = aM(aO(fm, bJ()), aG)
751751 let fo = aM(aO(fn, bT()), bU())
752752 $Tuple2(fn, fo)
753753 }
754754 else {
755755 let fo = aM(aO(fm, bJ()), aG)
756756 let fn = aM(aO(fo, bU()), bT())
757757 $Tuple2(fn, fo)
758758 }
759759 }
760760
761761
762762 func fp (bW,fq) = {
763763 let fr = by()
764764 let fs = aO(fr, fq)
765765 let ft = if ((size(bW.payments) > 1))
766766 then {
767767 let fu = toBase58String(valueOrErrorMessage(bW.payments[1].assetId, "Invalid attached artifact"))
768768 let fv = bv(aq(), ad(ax, fu))
769769 if ((fv == ay))
770770 then {
771771 let fw = bw(aq(), ad(aw, fu))
772772 let fx = aO(fs, fw)
773773 $Tuple2(fx, true)
774774 }
775775 else throw("Invalid attached artifact")
776776 }
777777 else $Tuple2(fs, false)
778778 let fx = ft._1
779779 let fy = ft._2
780780 $Tuple2(fx, fy)
781781 }
782782
783783
784784 func fz (fA,fB,fC,fD,fE,fF,fG,fH,fI) = [IntegerEntry(o, fA), IntegerEntry(p, fB), IntegerEntry(q, fC), IntegerEntry(n, fD), IntegerEntry(m, fE), IntegerEntry(s, fF), IntegerEntry(t, fG), IntegerEntry(r, fH), IntegerEntry(u, fI)]
785785
786786
787787 func fJ (fK,fL,fM,fN,fO) = [IntegerEntry(C, fK), IntegerEntry(A, fL), IntegerEntry(B, fM), IntegerEntry(D, fN), IntegerEntry(E, fO)]
788788
789789
790790 func fP (af,av) = [StringEntry(ad(j, af), av)]
791791
792792
793793 func fQ (af,fR,fS,fT,cV) = [IntegerEntry(ad(e, af), fR), IntegerEntry(ad(f, af), fS), IntegerEntry(ad(g, af), fT), IntegerEntry(ad(h, af), cV)]
794794
795795
796796 func fU (fV) = {
797797 let et = ((lastBlock.timestamp / 1000) / 60)
798798 let fW = valueOrElse(getInteger(this, w), 0)
799799 if ((fW > et))
800800 then throw("TWAP out-of-order")
801801 else {
802802 let eB = if ((fW == 0))
803803 then et
804804 else fW
805805 if ((et > fW))
806806 then {
807807 let fX = valueOrElse(getInteger(this, ((x + "_") + toString(fW))), 0)
808808 let fY = valueOrElse(getInteger(this, ((y + "_") + toString(fW))), fV)
809809 let fZ = (fX + ((et - eB) * fY))
810810 let ew = bo(bm(valueOrElse(getString(this, v), "")), aB, toString(et))
811811 [IntegerEntry(ad(x, toString(et)), fZ), IntegerEntry(ad(y, toString(et)), fV), IntegerEntry(ad(z, toString(et)), fW), IntegerEntry(w, et), StringEntry(v, aX(ew))]
812812 }
813813 else {
814814 let ga = valueOrElse(getInteger(this, ad(z, toString(et))), 0)
815815 let fX = valueOrElse(getInteger(this, ad(x, toString(ga))), 0)
816816 let fY = valueOrElse(getInteger(this, ad(y, toString(ga))), fV)
817817 let fZ = (fX + ((et - ga) * fY))
818818 [IntegerEntry(ad(x, toString(et)), fZ), IntegerEntry(ad(y, toString(et)), fV)]
819819 }
820820 }
821821 }
822822
823823
824824 func gb (cw,cy) = [IntegerEntry(F, cw), IntegerEntry(G, cy)]
825825
826826
827827 func gc (cx,cz) = [IntegerEntry(H, cx), IntegerEntry(I, cz)]
828828
829829
830830 func gd (cw,cy,ge,gf,gg,gh,gi) = {
831831 let cx = bC()
832832 let cz = bD()
833833 if (((gh - gi) != ge))
834834 then throw(((((("Invalid AMM state data: " + toString(gh)) + " + ") + toString(gi)) + " != ") + toString(ge)))
835835 else ((gb(cw, cy) ++ [IntegerEntry(J, ge), IntegerEntry(M, gf), IntegerEntry(N, gg), IntegerEntry(K, gh), IntegerEntry(L, gi)]) ++ fU(aM(aO(cw, cx), aO(cy, cz))))
836836 }
837837
838838
839839 func gj (af) = [DeleteEntry(ad(e, af)), DeleteEntry(ad(f, af)), DeleteEntry(ad(g, af)), DeleteEntry(ad(h, af)), DeleteEntry(ad(j, af)), IntegerEntry(ad(i, af), lastBlock.timestamp)]
840840
841841
842842 func gk (af,gl) = {
843843 let gm = assetBalance(this, aj())
844844 if ((gl > gm))
845845 then throw(((("Unable to withdraw " + toString(gl)) + " from contract balance ") + toString(gm)))
846846 else [ScriptTransfer(af, gl, aj())]
847847 }
848848
849849
850850 func gn (bW) = if ((0 > bW))
851851 then throw("Balance")
852852 else [IntegerEntry(d, bW)]
853853
854854
855855 func go (bW) = [ScriptTransfer(al(), bW, aj())]
856856
857857
858858 func gp (gq,bW) = if (gq)
859859 then [Burn(valueOrErrorMessage(bW.payments[1].assetId, "Invalid artifact"), 1)]
860860 else nil
861861
862862
863863 func gr (cf,av) = {
864864 let gs = ce(cf)._1
865865 if ((gs == 0))
866866 then true
867867 else (cj(cf) == av)
868868 }
869869
870870
871871 func gt (cf,av) = (cj(cf) == av)
872872
873873
874874 func gu (gv,av,cf) = ((((((ac + "_") + gv) + "_") + av) + "_") + cf)
875875
876876
877877 func gw (cf) = {
878878 let cl = cj(cf)
879879 if ((cl == toBase58String(aj())))
880880 then $Tuple2(0, cl)
881881 else {
882882 let gx = gu(toString(this), cl, cf)
883883 let gy = valueOrElse(getInteger(ar(), gx), 0)
884884 $Tuple2(gy, cl)
885885 }
886886 }
887887
888888
889889 @Callable(bW)
890890 func pause () = if ((bW.caller != ah()))
891891 then throw("Invalid togglePause params")
892892 else [BooleanEntry(l, true)]
893893
894894
895895
896896 @Callable(bW)
897897 func unpause () = if ((bW.caller != ah()))
898898 then throw("Invalid togglePause params")
899899 else [BooleanEntry(l, false)]
900900
901901
902902
903903 @Callable(bW)
904904 func addLiquidity (cr) = if (if ((bW.caller != ah()))
905905 then true
906906 else (0 >= cr))
907907 then throw("Invalid addLiquidity params")
908908 else {
909909 let cw = bA()
910910 let cy = bB()
911911 let cx = bC()
912912 let cz = bD()
913913 let fV = aM(aO(cw, cx), aO(cy, cz))
914914 let gz = aM(cr, fV)
915915 let gA = (cw + cr)
916916 let gB = (cy + gz)
917917 gb(gA, gB)
918918 }
919919
920920
921921
922922 @Callable(bW)
923923 func removeLiquidity (cr) = if (if ((bW.caller != ah()))
924924 then true
925925 else (0 >= cr))
926926 then throw("Invalid removeLiquidity params")
927927 else {
928928 let cw = bA()
929929 let cy = bB()
930930 let cx = bC()
931931 let cz = bD()
932932 let fV = aM(aO(cw, cx), aO(cy, cz))
933933 let gC = aM(cr, fV)
934934 let gA = (cw - cr)
935935 let gB = (cy - gC)
936936 gb(gA, gB)
937937 }
938938
939939
940940
941941 @Callable(bW)
942942 func changeSettings (fA,fB,fC,fD,fE,fF,fG,fH,fI) = if ((bW.caller != ah()))
943943 then throw("Invalid changeSettings params")
944944 else fz(fA, fB, fC, fD, fE, fF, fG, fH, fI)
945945
946946
947947
948948 @Callable(bW)
949949 func initialize (cw,cy,fD,fA,fB,fC,fE,gD,gE,gF,fF,fG,fH,fI) = if (if (if (if (if (if (if (if (if (if (if (if ((0 >= cw))
950950 then true
951951 else (0 >= cy))
952952 then true
953953 else (0 >= fD))
954954 then true
955955 else (0 >= fA))
956956 then true
957957 else (0 >= fB))
958958 then true
959959 else (0 >= fC))
960960 then true
961961 else (0 >= fE))
962962 then true
963963 else (0 >= fF))
964964 then true
965965 else (0 >= fG))
966966 then true
967967 else (0 >= fH))
968968 then true
969969 else (0 >= fI))
970970 then true
971971 else cn())
972972 then throw("Invalid initialize parameters")
973973 else ((((gd(cw, cy, 0, 0, 0, 0, 0) ++ fz(fA, fB, fC, fD, fE, fF, fG, fH, fI)) ++ fJ((lastBlock.timestamp + fD), 0, 0, 0, 0)) ++ gn(0)) ++ [BooleanEntry(k, true), StringEntry(c, gD), StringEntry(a, gE), StringEntry(O, gF)])
974974
975975
976976
977977 @Callable(bW)
978978 func setInitMarginRatio (fA) = if (if ((0 >= fA))
979979 then true
980980 else !(cn()))
981981 then throw("Invalid setInitMarginRatio parameters")
982982 else fz(fA, bL(), bM(), bI(), by(), bO(), bP(), bN(), bQ())
983983
984984
985985
986986 @Callable(bW)
987987 func decreasePosition (gl,gG,gH) = {
988988 let gI = invoke(this, "syncTerminalPriceToOracle", nil, nil)
989989 if ((gI == gI))
990990 then if (if (if (if (if ((0 >= gl))
991991 then true
992992 else !(cn()))
993993 then true
994994 else !(bX(aM(aF, gG), bz(), true)))
995995 then true
996996 else !(cm(toString(bW.caller))))
997997 then true
998998 else co())
999999 then throw("Invalid decreasePosition parameters")
10001000 else {
10011001 let gJ = ce(toString(bW.caller))
10021002 let gs = gJ._1
10031003 let gK = gJ._2
10041004 let gL = gJ._3
10051005 let gM = gJ._4
10061006 let gN = if ((gs > 0))
10071007 then aA
10081008 else az
10091009 let gO = (gN == az)
10101010 let gP = aO(gl, gG)
10111011 let gQ = dL(toString(bW.caller), aI)
10121012 let gR = gQ._1
10131013 let dK = gQ._2
10141014 let gS = if ((gR > gP))
10151015 then {
10161016 let gT = cA(gO, gP)
10171017 let ef = gT._1
10181018 let cB = gT._2
10191019 let cC = gT._3
10201020 let en = gT._4
10211021 let eo = gT._5
10221022 let gU = aV(ef)
10231023 if (if ((gH != 0))
10241024 then (gH > gU)
10251025 else false)
10261026 then throw(((("Too little base asset exchanged, got " + toString(gU)) + " expected ") + toString(gH)))
10271027 else {
10281028 let ek = aM(aO(dK, gU), aV(gs))
10291029 let gV = cP(gs, gK, gM, ek)
10301030 let cY = gV._1
10311031 let cZ = gV._2
10321032 let cU = gV._3
10331033 let eg = gP
10341034 let gW = (dK - ek)
10351035 let gX = if ((gs > 0))
10361036 then ((gR - eg) - gW)
10371037 else ((gW + gR) - eg)
10381038 let gY = (gs + ef)
10391039 $Tuple11(gY, cY, aV(gX), cc(gY), cC, cB, en, eo, (bG() - gP), (bU() - (if ((gY > 0))
10401040 then aV(ef)
10411041 else 0)), (bT() - (if ((0 > gY))
10421042 then aV(ef)
10431043 else 0)))
10441044 }
10451045 }
10461046 else throw("Close position first")
10471047 let gY = gS._1
10481048 let gZ = gS._2
10491049 let ha = gS._3
10501050 let hb = gS._4
10511051 let cC = gS._5
10521052 let cB = gS._6
10531053 let en = gS._7
10541054 let eo = gS._8
10551055 let er = gS._9
10561056 let ep = gS._10
10571057 let eq = gS._11
10581058 let hc = invoke(an(), "notifyNotional", [toString(bW.caller), ha], nil)
10591059 if ((hc == hc))
10601060 then (fQ(toString(bW.caller), gY, gZ, ha, hb) ++ gd(cB, cC, en, eo, er, ep, eq))
10611061 else throw("Strict value is not equal to itself.")
10621062 }
10631063 else throw("Strict value is not equal to itself.")
10641064 }
10651065
10661066
10671067
10681068 @Callable(bW)
10691069 func increasePosition (gN,gG,gH,hd) = {
10701070 let gI = invoke(this, "syncTerminalPriceToOracle", nil, nil)
10711071 if ((gI == gI))
10721072 then {
10731073 let cf = toString(bW.caller)
10741074 let he = bW.payments[0].amount
10751075 let av = bW.payments[0].assetId
10761076 let hf = toBase58String(value(av))
10771077 let hg = (av == aj())
10781078 let hh = au(hf)
10791079 if (if (if (if (if (if (if (if ((gN != az))
10801080 then (gN != aA)
10811081 else false)
10821082 then true
10831083 else (0 >= he))
10841084 then true
10851085 else !(cn()))
10861086 then true
10871087 else if (!(hg))
10881088 then !(hh)
10891089 else false)
10901090 then true
10911091 else !(gr(cf, hf)))
10921092 then true
10931093 else !(bX(aM(aF, gG), bz(), true)))
10941094 then true
10951095 else co())
10961096 then throw("Invalid increasePosition parameters")
10971097 else {
10981098 let hi = invoke(an(), "computeFeeDiscount", [cf], nil)
10991099 if ((hi == hi))
11001100 then {
11011101 let hj = {
11021102 let ch = hi
11031103 if ($isInstanceOf(ch, "Int"))
11041104 then {
11051105 let hk = ch
11061106 hk
11071107 }
11081108 else throw("Invalid computeFeeDiscount result")
11091109 }
11101110 let hl = fp(bW, hj)
11111111 let fx = hl._1
11121112 let fy = hl._2
11131113 let hm = aO(he, fx)
11141114 let gl = (he - hm)
11151115 let hn = if (hh)
11161116 then {
11171117 let ho = invoke(ar(), "borrow", [cf], [AttachedPayment(av, gl)])
11181118 if ((ho == ho))
11191119 then {
11201120 let hp = assetBalance(this, aj())
11211121 if ((hp == hp))
11221122 then {
11231123 let hq = invoke(as(), "swap", [toBase58String(aj()), 0], [AttachedPayment(av, hm)])
11241124 if ((hq == hq))
11251125 then {
11261126 let hr = assetBalance(this, aj())
11271127 if ((hr == hr))
11281128 then {
11291129 let hs = (hr - hp)
11301130 if ((hs == hs))
11311131 then hs
11321132 else throw("Strict value is not equal to itself.")
11331133 }
11341134 else throw("Strict value is not equal to itself.")
11351135 }
11361136 else throw("Strict value is not equal to itself.")
11371137 }
11381138 else throw("Strict value is not equal to itself.")
11391139 }
11401140 else throw("Strict value is not equal to itself.")
11411141 }
11421142 else hm
11431143 if ((hn == hn))
11441144 then {
11451145 let ht = invoke(ap(), "acceptPaymentWithLink", [cf, hd], [AttachedPayment(aj(), hn)])
11461146 if ((ht == ht))
11471147 then {
11481148 let hu = {
11491149 let ch = ht
11501150 if ($isInstanceOf(ch, "Int"))
11511151 then {
11521152 let hk = ch
11531153 hk
11541154 }
11551155 else throw("Invalid referrerFee")
11561156 }
11571157 let hv = (hn - hu)
11581158 let hw = ce(cf)
11591159 let gs = hw._1
11601160 let gK = hw._2
11611161 let gL = hw._3
11621162 let gM = hw._4
11631163 let hx = (gs == 0)
11641164 let hy = if ((gs > 0))
11651165 then (gN == az)
11661166 else (gN == aA)
11671167 let hz = if (!(hx))
11681168 then hy
11691169 else false
11701170 let gO = (gN == az)
11711171 let hA = if (if (hx)
11721172 then true
11731173 else hz)
11741174 then {
11751175 let gP = aO(gl, gG)
11761176 let hB = cA(gO, gP)
11771177 let cE = hB._1
11781178 let cB = hB._2
11791179 let cC = hB._3
11801180 let en = hB._4
11811181 let eo = hB._5
11821182 if (if ((gH != 0))
11831183 then (gH > aV(cE))
11841184 else false)
11851185 then throw(((("Limit error: " + toString(aV(cE))) + " < ") + toString(gH)))
11861186 else {
11871187 let gY = (gs + cE)
11881188 let hC = aM(gP, gG)
11891189 let hD = cP(gs, gK, gM, hC)
11901190 let cY = hD._1
11911191 let dF = hD._2
11921192 let dG = hD._3
11931193 if (!(dq(cB, cC)))
11941194 then throw("Over max spread limit")
11951195 else $Tuple11(gY, cY, (gL + gP), cc(gY), cC, cB, en, eo, (bG() + gP), (bU() + (if ((gY > 0))
11961196 then aV(cE)
11971197 else 0)), (bT() + (if ((0 > gY))
11981198 then aV(cE)
11991199 else 0)))
12001200 }
12011201 }
12021202 else {
12031203 let gP = aO(gl, gG)
12041204 let hE = dL(toString(bW.caller), aI)
12051205 let gR = hE._1
12061206 let dK = hE._2
12071207 if ((gR > gP))
12081208 then throw("Use decreasePosition to decrease position size")
12091209 else throw("Close position first")
12101210 }
12111211 let gY = hA._1
12121212 let gZ = hA._2
12131213 let ha = hA._3
12141214 let hb = hA._4
12151215 let cC = hA._5
12161216 let cB = hA._6
12171217 let en = hA._7
12181218 let eo = hA._8
12191219 let er = hA._9
12201220 let ep = hA._10
12211221 let eq = hA._11
12221222 let hF = (hv / 2)
12231223 let hG = (hv - hF)
12241224 let hH = invoke(am(), "addLocked", nil, [AttachedPayment(aj(), gl)])
12251225 if ((hH == hH))
12261226 then {
12271227 let hI = invoke(am(), "addFree", nil, [AttachedPayment(aj(), hG)])
12281228 if ((hI == hI))
12291229 then {
12301230 let hJ = invoke(an(), "notifyFees", [cf, hv], nil)
12311231 if ((hJ == hJ))
12321232 then {
12331233 let hc = invoke(an(), "notifyNotional", [cf, ha], nil)
12341234 if ((hc == hc))
12351235 then (((((fQ(cf, gY, gZ, ha, hb) ++ fP(cf, hf)) ++ gd(cB, cC, en, eo, er, ep, eq)) ++ go(hF)) ++ gn((bx() + gl))) ++ gp(fy, bW))
12361236 else throw("Strict value is not equal to itself.")
12371237 }
12381238 else throw("Strict value is not equal to itself.")
12391239 }
12401240 else throw("Strict value is not equal to itself.")
12411241 }
12421242 else throw("Strict value is not equal to itself.")
12431243 }
12441244 else throw("Strict value is not equal to itself.")
12451245 }
12461246 else throw("Strict value is not equal to itself.")
12471247 }
12481248 else throw("Strict value is not equal to itself.")
12491249 }
12501250 }
12511251 else throw("Strict value is not equal to itself.")
12521252 }
12531253
12541254
12551255
12561256 @Callable(bW)
12571257 func addMargin () = {
12581258 let gI = invoke(this, "syncTerminalPriceToOracle", nil, nil)
12591259 if ((gI == gI))
12601260 then {
12611261 let cf = toString(bW.caller)
12621262 let he = bW.payments[0].amount
12631263 let av = bW.payments[0].assetId
12641264 let hf = toBase58String(value(av))
12651265 let hg = (av == aj())
12661266 let hh = au(hf)
12671267 if (if (if (if (if (if (!(hg))
12681268 then !(hh)
12691269 else false)
12701270 then true
12711271 else !(cm(toString(bW.caller))))
12721272 then true
12731273 else !(gt(cf, hf)))
12741274 then true
12751275 else !(cn()))
12761276 then true
12771277 else co())
12781278 then throw("Invalid addMargin parameters")
12791279 else {
12801280 let hi = invoke(an(), "computeFeeDiscount", [cf], nil)
12811281 if ((hi == hi))
12821282 then {
12831283 let hj = {
12841284 let ch = hi
12851285 if ($isInstanceOf(ch, "Int"))
12861286 then {
12871287 let hk = ch
12881288 hk
12891289 }
12901290 else throw("Invalid computeFeeDiscount result")
12911291 }
12921292 let hK = fp(bW, hj)
12931293 let fx = hK._1
12941294 let fy = hK._2
12951295 let hm = aO(he, fx)
12961296 let gl = (he - hm)
12971297 let hn = if (hh)
12981298 then {
12991299 let ho = invoke(ar(), "borrow", [cf], [AttachedPayment(av, gl)])
13001300 if ((ho == ho))
13011301 then {
13021302 let hp = assetBalance(this, aj())
13031303 if ((hp == hp))
13041304 then {
13051305 let hq = invoke(as(), "swap", [toBase58String(aj()), 0], [AttachedPayment(av, hm)])
13061306 if ((hq == hq))
13071307 then {
13081308 let hr = assetBalance(this, aj())
13091309 if ((hr == hr))
13101310 then {
13111311 let hs = (hr - hp)
13121312 if ((hs == hs))
13131313 then hs
13141314 else throw("Strict value is not equal to itself.")
13151315 }
13161316 else throw("Strict value is not equal to itself.")
13171317 }
13181318 else throw("Strict value is not equal to itself.")
13191319 }
13201320 else throw("Strict value is not equal to itself.")
13211321 }
13221322 else throw("Strict value is not equal to itself.")
13231323 }
13241324 else hm
13251325 if ((hn == hn))
13261326 then {
13271327 let ht = invoke(ap(), "acceptPayment", [cf], [AttachedPayment(aj(), hn)])
13281328 if ((ht == ht))
13291329 then {
13301330 let hu = {
13311331 let ch = ht
13321332 if ($isInstanceOf(ch, "Int"))
13331333 then {
13341334 let hk = ch
13351335 hk
13361336 }
13371337 else throw("Invalid referrerFee")
13381338 }
13391339 let hv = (hn - hu)
13401340 let hL = ce(cf)
13411341 let gs = hL._1
13421342 let gK = hL._2
13431343 let gL = hL._3
13441344 let gM = hL._4
13451345 let hF = (hv / 2)
13461346 let hG = (hv - hF)
13471347 let hH = invoke(am(), "addLocked", nil, [AttachedPayment(aj(), gl)])
13481348 if ((hH == hH))
13491349 then {
13501350 let hI = invoke(am(), "addFree", nil, [AttachedPayment(aj(), hG)])
13511351 if ((hI == hI))
13521352 then {
13531353 let hJ = invoke(an(), "notifyFees", [cf, hv], nil)
13541354 if ((hJ == hJ))
13551355 then (((fQ(cf, gs, (gK + gl), gL, gM) ++ go(hF)) ++ gn((bx() + gl))) ++ gp(fy, bW))
13561356 else throw("Strict value is not equal to itself.")
13571357 }
13581358 else throw("Strict value is not equal to itself.")
13591359 }
13601360 else throw("Strict value is not equal to itself.")
13611361 }
13621362 else throw("Strict value is not equal to itself.")
13631363 }
13641364 else throw("Strict value is not equal to itself.")
13651365 }
13661366 else throw("Strict value is not equal to itself.")
13671367 }
13681368 }
13691369 else throw("Strict value is not equal to itself.")
13701370 }
13711371
13721372
13731373
13741374 @Callable(bW)
13751375 func removeMargin (gl) = {
13761376 let gI = invoke(this, "syncTerminalPriceToOracle", nil, nil)
13771377 if ((gI == gI))
13781378 then {
13791379 let cf = toString(bW.caller)
13801380 if (if (if (if ((0 >= gl))
13811381 then true
13821382 else !(cm(cf)))
13831383 then true
13841384 else !(cn()))
13851385 then true
13861386 else co())
13871387 then throw("Invalid removeMargin parameters")
13881388 else {
13891389 let hM = ce(cf)
13901390 let gs = hM._1
13911391 let gK = hM._2
13921392 let gL = hM._3
13931393 let gM = hM._4
13941394 let hN = -(gl)
13951395 let hO = cP(gs, gK, gM, hN)
13961396 let cY = hO._1
13971397 let cZ = hO._2
13981398 if ((cZ != 0))
13991399 then throw("Invalid removed margin amount")
14001400 else {
14011401 let hP = dQ(cY, cZ, gL)
14021402 if (!(bX(hP, bz(), true)))
14031403 then throw(((("Too much margin removed: " + toString(hP)) + " < ") + toString(bz())))
14041404 else {
14051405 let hQ = toBase58String(aj())
14061406 let hR = gw(cf)
14071407 let hS = hR._1
14081408 let hT = hR._2
14091409 let hU = if ((gl > hS))
14101410 then hS
14111411 else gl
14121412 let hV = if ((hS > gl))
14131413 then 0
14141414 else (gl - hS)
14151415 let hW = (hS - hU)
14161416 let hX = if ((hW > 0))
14171417 then nil
14181418 else fP(cf, hQ)
14191419 let hY = if (((hU + hV) != gl))
14201420 then throw(((((("toRepay=" + toString(hU)) + " + toWithdraw=") + toString(hV)) + " != ") + toString(gl)))
14211421 else nil
14221422 if ((hY == hY))
14231423 then {
14241424 let hZ = invoke(am(), "withdrawLocked", [gl], nil)
14251425 if ((hZ == hZ))
14261426 then {
14271427 let ia = if ((hU > 0))
14281428 then {
14291429 let ib = invoke(ar(), "repay", [cf, hT], [AttachedPayment(aj(), hU)])
14301430 if ((ib == ib))
14311431 then [ScriptTransfer(bW.caller, hU, fromBase58String(hT))]
14321432 else throw("Strict value is not equal to itself.")
14331433 }
14341434 else nil
14351435 if ((ia == ia))
14361436 then ((((fQ(cf, gs, cY, gL, cc(gs)) ++ (if ((hV > 0))
14371437 then gk(bW.caller, hV)
14381438 else nil)) ++ gn((bx() - gl))) ++ hX) ++ ia)
14391439 else throw("Strict value is not equal to itself.")
14401440 }
14411441 else throw("Strict value is not equal to itself.")
14421442 }
14431443 else throw("Strict value is not equal to itself.")
14441444 }
14451445 }
14461446 }
14471447 }
14481448 else throw("Strict value is not equal to itself.")
14491449 }
14501450
14511451
14521452
14531453 @Callable(bW)
14541454 func closePosition () = {
14551455 let gI = invoke(this, "syncTerminalPriceToOracle", nil, nil)
14561456 if ((gI == gI))
14571457 then {
14581458 let cf = bV(bW)
14591459 let ic = valueOrErrorMessage(addressFromString(cf), "Invalid caller")
14601460 if (if (if (!(cm(cf)))
14611461 then true
14621462 else !(cn()))
14631463 then true
14641464 else co())
14651465 then throw("Invalid closePosition parameters")
14661466 else {
14671467 let id = eh(cf, true)
14681468 let dF = id._1
14691469 let ie = id._2
14701470 let ek = id._3
14711471 let el = id._4
14721472 let cB = id._5
14731473 let cC = id._6
14741474 let en = id._7
14751475 let eo = id._8
14761476 let er = id._9
14771477 let dG = id._10
14781478 let ep = id._11
14791479 let eq = id._12
14801480 if ((ie > 0))
14811481 then throw("Unable to close position with bad debt")
14821482 else {
14831483 let if = aV(el)
14841484 let ig = (bx() - if)
14851485 let ih = if ((0 > ig))
14861486 then $Tuple2(0, aV(ig))
14871487 else $Tuple2(ig, 0)
14881488 let ii = ih._1
14891489 let ij = ih._2
14901490 let ik = invoke(am(), "withdrawLocked", [if], nil)
14911491 if ((ik == ik))
14921492 then {
14931493 let il = gw(cf)
14941494 let hS = il._1
14951495 let hT = il._2
14961496 let im = if ((hS > 0))
14971497 then if ((if >= hS))
14981498 then {
14991499 let ib = invoke(ar(), "repay", [cf, hT], [AttachedPayment(aj(), hS)])
15001500 if ((ib == ib))
15011501 then $Tuple2([ScriptTransfer(ic, hS, fromBase58String(hT))], (if - hS))
15021502 else throw("Strict value is not equal to itself.")
15031503 }
15041504 else {
15051505 let in = invoke(ar(), "realizePartiallyAndClose", [cf, hT], [AttachedPayment(aj(), if)])
15061506 if ((in == in))
15071507 then $Tuple2([ScriptTransfer(ic, if, fromBase58String(hT))], 0)
15081508 else throw("Strict value is not equal to itself.")
15091509 }
15101510 else $Tuple2(nil, if)
15111511 if ((im == im))
15121512 then {
15131513 let io = im._2
15141514 let ip = im._1
15151515 let hc = invoke(an(), "notifyNotional", [cf, 0], nil)
15161516 if ((hc == hc))
15171517 then ((((gj(cf) ++ gd(cB, cC, en, eo, er, ep, eq)) ++ (if ((io > 0))
15181518 then gk(ic, io)
15191519 else nil)) ++ gn(ii)) ++ ip)
15201520 else throw("Strict value is not equal to itself.")
15211521 }
15221522 else throw("Strict value is not equal to itself.")
15231523 }
15241524 else throw("Strict value is not equal to itself.")
15251525 }
15261526 }
15271527 }
15281528 else throw("Strict value is not equal to itself.")
15291529 }
15301530
15311531
15321532
15331533 @Callable(bW)
15341534 func liquidate (cf) = {
15351535 let gI = invoke(this, "syncTerminalPriceToOracle", nil, nil)
15361536 if ((gI == gI))
15371537 then {
15381538 let iq = dU(cf, aI)
15391539 let hP = if (dw())
15401540 then {
15411541 let ir = dU(cf, aJ)
15421542 aW(iq, ir)
15431543 }
15441544 else iq
15451545 if (if (if (if (!(bX(hP, bL(), false)))
15461546 then true
15471547 else !(cm(cf)))
15481548 then true
15491549 else !(cn()))
15501550 then true
15511551 else co())
15521552 then throw("Unable to liquidate")
15531553 else if (if (if ((iq > bM()))
15541554 then (bN() > 0)
15551555 else false)
15561556 then (aF > bN())
15571557 else false)
15581558 then {
15591559 let is = ce(cf)
15601560 let gs = is._1
15611561 let gK = is._2
15621562 let gL = is._3
15631563 let gM = is._4
15641564 let gN = if ((gs > 0))
15651565 then aA
15661566 else az
15671567 let gO = (gN == az)
15681568 let eg = ea(cf, gs)
15691569 let it = dL(cf, aI)
15701570 let gR = it._1
15711571 let dK = it._2
15721572 let iu = cA(gO, eg)
15731573 let ef = iu._1
15741574 let cB = iu._2
15751575 let cC = iu._3
15761576 let en = iu._4
15771577 let eo = iu._5
15781578 let iv = aM(aV(ef), aV(gs))
15791579 let ek = aO(dK, iv)
15801580 let iw = cP(gs, gK, gM, ek)
15811581 let cY = iw._1
15821582 let cZ = iw._2
15831583 let cU = iw._3
15841584 let gW = (dK - ek)
15851585 let gX = if ((gs > 0))
15861586 then ((gR - eg) - gW)
15871587 else ((gW + gR) - eg)
15881588 let ix = aO(eg, bM())
15891589 let iy = (ix / 2)
15901590 let hG = (ix - iy)
15911591 let iz = (cY - ix)
15921592 let gY = (gs + ef)
15931593 let ha = aV(gX)
15941594 let iA = cc(gY)
15951595 let er = (bG() - eg)
15961596 let ig = (bx() - ix)
15971597 let iB = if ((0 > ig))
15981598 then $Tuple2(0, aV(ig))
15991599 else $Tuple2(ig, 0)
16001600 let iC = iB._1
16011601 let ij = iB._2
16021602 let iD = gw(cf)
16031603 let hS = iD._1
16041604 let hT = iD._2
16051605 let iE = if ((hS > 0))
16061606 then {
16071607 let iF = aO(hS, iv)
16081608 let in = invoke(ar(), "realizePartially", [cf, hT, iF], nil)
16091609 if ((in == in))
16101610 then nil
16111611 else throw("Strict value is not equal to itself.")
16121612 }
16131613 else nil
16141614 if ((iE == iE))
16151615 then {
16161616 let ik = invoke(am(), "withdrawLocked", [ix], nil)
16171617 if ((ik == ik))
16181618 then {
16191619 let hI = invoke(am(), "addFree", nil, [AttachedPayment(aj(), hG)])
16201620 if ((hI == hI))
16211621 then {
16221622 let hc = invoke(an(), "notifyNotional", [cf, ha], nil)
16231623 if ((hc == hc))
16241624 then (((fQ(cf, gY, iz, ha, iA) ++ gd(cB, cC, en, eo, er, (bU() - (if ((gY > 0))
16251625 then aV(ef)
16261626 else 0)), (bT() - (if ((0 > gY))
16271627 then aV(ef)
16281628 else 0)))) ++ gk(bW.caller, iy)) ++ gn(iC))
16291629 else throw("Strict value is not equal to itself.")
16301630 }
16311631 else throw("Strict value is not equal to itself.")
16321632 }
16331633 else throw("Strict value is not equal to itself.")
16341634 }
16351635 else throw("Strict value is not equal to itself.")
16361636 }
16371637 else {
16381638 let iG = eh(cf, false)
16391639 let dF = iG._1
16401640 let cZ = iG._2
16411641 let dG = iG._3
16421642 let dH = iG._4
16431643 let cB = iG._5
16441644 let cC = iG._6
16451645 let en = iG._7
16461646 let eo = iG._8
16471647 let er = iG._9
16481648 let eg = iG._10
16491649 let ep = iG._11
16501650 let eq = iG._12
16511651 let ix = aO(eg, bM())
16521652 let iy = (ix / 2)
16531653 let hG = (ix - iy)
16541654 let ig = (bx() - ix)
16551655 let iH = if ((0 > ig))
16561656 then $Tuple2(0, aV(ig))
16571657 else $Tuple2(ig, 0)
16581658 let iC = iH._1
16591659 let ij = iH._2
16601660 let iI = gw(cf)
16611661 let hS = iI._1
16621662 let hT = iI._2
16631663 let iE = if ((hS > 0))
16641664 then {
16651665 let in = invoke(ar(), "realizePartiallyAndClose", [cf, hT], nil)
16661666 if ((in == in))
16671667 then nil
16681668 else throw("Strict value is not equal to itself.")
16691669 }
16701670 else nil
16711671 if ((iE == iE))
16721672 then {
16731673 let hk = if ((cZ > 0))
16741674 then {
16751675 let iJ = invoke(am(), "exchangeFreeAndLocked", [cZ], nil)
16761676 if ((iJ == iJ))
16771677 then nil
16781678 else throw("Strict value is not equal to itself.")
16791679 }
16801680 else nil
16811681 if ((hk == hk))
16821682 then {
16831683 let ik = invoke(am(), "withdrawLocked", [ix], nil)
16841684 if ((ik == ik))
16851685 then {
16861686 let hI = invoke(am(), "addFree", nil, [AttachedPayment(aj(), hG)])
16871687 if ((hI == hI))
16881688 then {
16891689 let hc = invoke(an(), "notifyNotional", [cf, 0], nil)
16901690 if ((hc == hc))
16911691 then (((gj(cf) ++ gd(cB, cC, en, eo, er, ep, eq)) ++ gk(bW.caller, iy)) ++ gn(iC))
16921692 else throw("Strict value is not equal to itself.")
16931693 }
16941694 else throw("Strict value is not equal to itself.")
16951695 }
16961696 else throw("Strict value is not equal to itself.")
16971697 }
16981698 else throw("Strict value is not equal to itself.")
16991699 }
17001700 else throw("Strict value is not equal to itself.")
17011701 }
17021702 }
17031703 else throw("Strict value is not equal to itself.")
17041704 }
17051705
17061706
17071707
17081708 @Callable(bW)
17091709 func payFunding () = {
17101710 let iK = bH()
17111711 if (if (if ((iK > lastBlock.timestamp))
17121712 then true
17131713 else !(cn()))
17141714 then true
17151715 else co())
17161716 then throw(((("Invalid funding block timestamp: " + toString(lastBlock.timestamp)) + " < ") + toString(iK)))
17171717 else {
17181718 let fk = dl()
17191719 let iL = fj()
17201720 let fn = iL._1
17211721 let fo = iL._2
17221722 fJ((iK + bK()), (bR() + fo), (bS() + fn), aM(fo, fk), aM(fn, fk))
17231723 }
17241724 }
17251725
17261726
17271727
17281728 @Callable(bW)
17291729 func syncTerminalPriceToOracle () = {
17301730 let iM = ff(dl())
17311731 let iN = iM._1
17321732 let iO = iM._2
17331733 let el = iM._3
17341734 gc(iN, iO)
17351735 }
17361736
17371737
17381738
17391739 @Callable(bW)
17401740 func v_get (cf) = {
17411741 let gI = invoke(this, "syncTerminalPriceToOracle", nil, nil)
17421742 if ((gI == gI))
17431743 then {
17441744 let iP = eh(cf, false)
17451745 let dF = iP._1
17461746 let dG = iP._2
17471747 let dH = iP._3
17481748 let iQ = iP._4
17491749 throw((((aK(dG) + aK(dH)) + aK(iQ)) + aK(dZ(cf))))
17501750 }
17511751 else throw("Strict value is not equal to itself.")
17521752 }
17531753
17541754
17551755
17561756 @Callable(bW)
17571757 func view_calcRemainMarginWithFundingPayment (cf) = {
17581758 let gI = invoke(this, "syncTerminalPriceToOracle", nil, nil)
17591759 if ((gI == gI))
17601760 then {
17611761 let iR = ce(cf)
17621762 let ci = iR._1
17631763 let dN = iR._2
17641764 let dW = iR._3
17651765 let dP = iR._4
17661766 let iS = dL(cf, aI)
17671767 let dC = iS._1
17681768 let dK = iS._2
17691769 let iT = cP(ci, dN, dP, dK)
17701770 let cY = iT._1
17711771 let cZ = iT._2
17721772 let cU = iT._3
17731773 throw((((((aK(cY) + aK(cU)) + aK(dZ(cf))) + aK(dK)) + aK(cZ)) + aK(dC)))
17741774 }
17751775 else throw("Strict value is not equal to itself.")
17761776 }
17771777
17781778
17791779
17801780 @Callable(bW)
17811781 func view_getPegAdjustCost (iU) = {
17821782 let fe = ff(iU)
17831783 throw(toString(fe._3))
17841784 }
17851785
17861786
17871787
17881788 @Callable(bW)
17891789 func view_getTerminalAmmPrice () = {
17901790 let iV = eI()
17911791 let eM = iV._1
17921792 let eN = iV._2
17931793 let fV = aM(aO(eM, bC()), aO(eN, bD()))
17941794 throw(toString(fV))
17951795 }
17961796
17971797
17981798
17991799 @Callable(bW)
18001800 func view_getFunding () = {
18011801 let fk = dl()
18021802 let iW = fj()
18031803 let fn = iW._1
18041804 let fo = iW._2
18051805 let iX = aM(fo, fk)
18061806 let iY = aM(fn, fk)
18071807 throw((((aK(iX) + aK(iY)) + aK(es())) + aK(dl())))
18081808 }
18091809
18101810
18111811
18121812 @Callable(bW)
18131813 func view_getBorrowedByTrader (cf) = {
18141814 let iZ = gw(cf)
18151815 let hS = iZ._1
18161816 let hT = iZ._2
18171817 throw((aK(hS) + hT))
18181818 }
18191819
18201820
18211821 @Verifier(ja)
18221822 func jb () = sigVerify(ja.bodyBytes, ja.proofs[0], ai())
18231823

github/deemru/w8io/169f3d6 
185.20 ms