tx · D29kBp3N4g14JqRFvanaL1j4Q5p1Dcy3VdjVk1cMkr6W

3NDCyBG5q85JuaRiigUeEtainyjCQT3XpZm:  -0.06700000 Waves

2023.06.21 14:30 [2632347] smart account 3NDCyBG5q85JuaRiigUeEtainyjCQT3XpZm > SELF 0.00000000 Waves

{ "type": 13, "id": "D29kBp3N4g14JqRFvanaL1j4Q5p1Dcy3VdjVk1cMkr6W", "fee": 6700000, "feeAssetId": null, "timestamp": 1687347060762, "version": 2, "chainId": 84, "sender": "3NDCyBG5q85JuaRiigUeEtainyjCQT3XpZm", "senderPublicKey": "EVooykMNV691Venwp1dHUTBd7KWequzUcda57Wd3LQEX", "proofs": [ "iVeFxM3dvPb8xhVDCRWSfXH27wdASKUzuQ3fAmxumiADrsYS6ivXtzs9u77wfnmdVwQ6geubJSoGU3yVTTAs7PD" ], "script": "base64:BgKYAQgCEgMKAQgSAwoBBBIAEgMKAQgSABIDCgEIEgQKAgEIEgQKAgEIEgQKAgICEgUKAwEBARIAEgQKAggIEgASBAoCAgISAwoBCBIDCgEIEgQKAggIEgMKARgSAwoBGBIECgIICBIECgIICBIDCgEIEgMKAQgSBQoDCAgIEgQKAggIEgMKAQESBQoDAQEIEgMKAQgSAwoBCBIAwAEABWNoYWluCQDJAQIJAMoBAggFBHRoaXMFYnl0ZXMAAQABAAt1c2R0QXNzZXRJZAQHJG1hdGNoMAUFY2hhaW4DCQAAAgEBVwUHJG1hdGNoMAEghNp6sggDP07Ru8qO7ouTvMmC3Qtd+geWqNQj+agP/7kDCQAAAgEBVAUHJG1hdGNoMAEgVbHYn3KHgu/l41uNrAWrZd6aQ6EvFrsF8xq3h6XxxRgJAAIBAg1Vbmtub3duIGNoYWluABVkZWZhdWx0UmVzdEFkZHJlc3NTdHIEByRtYXRjaDAFBWNoYWluAwkAAAIBAVcFByRtYXRjaDACIzNQUUN1dkZidmg0TGtQVW5yblUxejNqbmJBMXA5bTNXTmh2AwkAAAIBAVQFByRtYXRjaDACIzNNdW1rR0d6dENLQVhwV0RxeGtkZG9mcVhTVWJxUWt2U0p5CQACAQINVW5rbm93biBjaGFpbgARSW5mcmFVcGdyYWRlQ29zdFMEByRtYXRjaDAFBWNoYWluAwkAAAIBAVcFByRtYXRjaDAAgMivoCUDCQAAAgEBVAUHJG1hdGNoMACAwtcvCQACAQINVW5rbm93biBjaGFpbgADU0VQAgJfXwAFTVVMVDYAwIQ9AAVNVUxUNwCAreIEAAVNVUxUOACAwtcvAAZNVUxUMTAAgMivoCUACkxBTkRQUkVGSVgCBExBTkQACkRVQ0tQUkVGSVgCBERVQ0sACkFSVFBSRVNBTEUCB1BSRVNBTEUABk5VTVJFUwAGAAVTU0laRQAZAAVNU0laRQBkAAVMU0laRQDhAQAGWExTSVpFAJADAAdYWExTSVpFAPEEAA9EQUlMWVJFU0JZUElFQ0UAgPjSAQAJREFZTUlMTElTAIC4mSkADFdITVVMVElQTElFUgCAyK+gJQAPREVGQVVMVExPQ0FUSU9OAg9BZnJpY2FfRl9BZnJpY2EAEFJFU09VUkNFUFJJQ0VNSU4A1bUCAA1FU01BWFBBQ0tBR0VTAAMACUVTQlVZQ09FRgAEAApFU1NFTExDT0VGAAoABU1BWEhQAGQACHJlc1R5cGVzCQDMCAICA09pbAkAzAgCAgNPcmUJAMwIAgIEV29vZAkAzAgCAgRTYW5kCQDMCAICBENsYXkJAMwIAgIHT3JnYW5pYwUDbmlsAAhtYXRUeXBlcwkAzAgCAgRGdWVsCQDMCAICBU1ldGFsCQDMCAICBVBsYW5rCQDMCAICBUdsYXNzCQDMCAICB1BsYXN0aWMJAMwIAgIHUHJvdGVpbgUDbmlsAAlwcm9kVHlwZXMJAMwIAgIQRmlyc3QgQWlkIEtpdCBMMQkAzAgCAhBGaXJzdCBBaWQgS2l0IEwyCQDMCAICEEZpcnN0IEFpZCBLaXQgTDMJAMwIAgILQmFja3BhY2sgTDEJAMwIAgILQmFja3BhY2sgTDIJAMwIAgILQmFja3BhY2sgTDMJAMwIAgIORm9vZCBSYXRpb24gTDEJAMwIAgIORm9vZCBSYXRpb24gTDIJAMwIAgIORm9vZCBSYXRpb24gTDMJAMwIAgILSmV0IFBhY2sgTDEJAMwIAgILSmV0IFBhY2sgTDIJAMwIAgILSmV0IFBhY2sgTDMJAMwIAgIJU2hpZWxkIEwxCQDMCAICCVNoaWVsZCBMMgkAzAgCAglTaGllbGQgTDMFA25pbAAKY29udGluZW50cwkAzAgCAghBbWVyaWNhcwkAzAgCAgZFdXJvcGUJAMwIAgIEQXNpYQkAzAgCAgZBZnJpY2EJAMwIAgIHT2NlYW5pYQUDbmlsABBwcm9kdWN0aW9uTWF0cml4CQDMCAICEjFfMV8xXzJfMl81XzFfMTBfMAkAzAgCAhMyXzJfMl80XzRfMTBfMV8xMF8wCQDMCAICEzNfM18zXzZfNl8xNV8xXzEwXzAJAMwIAgITMl81XzVfMl83XzVfMl8xMDBfMQkAzAgCAhc0XzEwXzEwXzRfMTRfMTBfMl8xMDBfMQkAzAgCAhc2XzE1XzE1XzZfMjFfMTVfMl8xMDBfMQkAzAgCAhIxXzFfMV8xXzFfOF8xXzEwXzIJAMwIAgITMl8yXzJfMl8yXzE2XzFfMTBfMgkAzAgCAhMzXzNfM18zXzNfMjRfMV8xMF8yCQDMCAICEzlfOV8xXzVfNV8xXzVfMTAwXzMJAMwIAgIXMThfMThfMl8xMF8xMF8yXzVfMTAwXzMJAMwIAgIXMjdfMjdfM18xNV8xNV8zXzVfMTAwXzMJAMwIAgISMl8yXzFfMl8yXzJfMV8xMF80CQDMCAICEjRfNF8yXzRfNF80XzFfMTBfNAkAzAgCAhI2XzZfM182XzZfNl8xXzEwXzQFA25pbAAPY29udElkeEFtZXJpY2FzAAAADWNvbnRJZHhFdXJvcGUAAQALY29udElkeEFzaWEAAgANY29udElkeEFmcmljYQADAA5jb250SWR4T2NlYW5pYQAEAA1yZWNpcGVJZHhGdWVsAAAADnJlY2lwZUlkeE1ldGFsAAEADnJlY2lwZUlkeFBsYW5rAAIADnJlY2lwZUlkeEdsYXNzAAMAEHJlY2lwZUlkeFBsYXN0aWMABAAQcmVjaXBlSWR4UHJvdGVpbgAFAA9yZWNpcGVJZHhXZWlnaHQABgARcmVjaXBlSWR4UGFja3NpemUABwAScmVjaXBlSWR4Q29udGluZW50AAgACnJlY0xhbmROdW0AAAALcmVjTGFuZFNpemUAAQALcmVjVGVycmFpbnMAAgAMcmVjQ29udGluZW50AAMAC3doSWR4TGV2ZWxzAAAACHdoSWR4UmVzAAEACHdoSWR4TWF0AAIACXdoSWR4UHJvZAADAAl3aElkeExPRlQABAAJdm9sTG9ja2VkAAAAC3ZvbE9jY3VwaWVkAAEAB3ZvbEZyZWUAAgAIdm9sVG90YWwAAwAKYnBJZHhMZXZlbAAAAAhicElkeFJlcwABAAhicElkeE1hdAACAAlicElkeFByb2QAAwEKZ2V0UGtnU2l6ZQEHcHJvZElkeAkBDXBhcnNlSW50VmFsdWUBCQCRAwIJALUJAgkAkQMCBRBwcm9kdWN0aW9uTWF0cml4BQdwcm9kSWR4AgFfBRFyZWNpcGVJZHhQYWNrc2l6ZQEPZ2V0U3RyaW5nT3JGYWlsAgdhZGRyZXNzA2tleQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFB2FkZHJlc3MFA2tleQkAuQkCCQDMCAICCm1hbmRhdG9yeSAJAMwIAgkApQgBBQdhZGRyZXNzCQDMCAICAS4JAMwIAgUDa2V5CQDMCAICDyBpcyBub3QgZGVmaW5lZAUDbmlsAgABDGdldEludE9yRWxzZQIDa2V5CmRlZmF1bHRWYWwJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUDa2V5BQpkZWZhdWx0VmFsABFJZHhDZmdTdGFraW5nRGFwcAABABFJZHhDZmdFY29ub215RGFwcAACABRJZHhDZmdHb3Zlcm5hbmNlRGFwcAADAA1JZHhDZmdXbGdEYXBwAAQBCmtleVJlc3RDZmcAAg4lc19fcmVzdENvbmZpZwEOa2V5UmVzdEFkZHJlc3MAAgwlc19fcmVzdEFkZHIBEXJlYWRSZXN0Q2ZnT3JGYWlsAQRyZXN0CQC8CQIJAQ9nZXRTdHJpbmdPckZhaWwCBQRyZXN0CQEKa2V5UmVzdENmZwAFA1NFUAEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgdyZXN0Q2ZnA2lkeAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUHcmVzdENmZwUDaWR4CQCsAgICKlJlc3QgY2ZnIGRvZXNuJ3QgY29udGFpbiBhZGRyZXNzIGF0IGluZGV4IAkApAMBBQNpZHgADHJlc3RDb250cmFjdAkBEUBleHRyTmF0aXZlKDEwNjIpAQkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzCQEOa2V5UmVzdEFkZHJlc3MABRVkZWZhdWx0UmVzdEFkZHJlc3NTdHIAB3Jlc3RDZmcJARFyZWFkUmVzdENmZ09yRmFpbAEFDHJlc3RDb250cmFjdAAPc3Rha2luZ0NvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUHcmVzdENmZwURSWR4Q2ZnU3Rha2luZ0RhcHAAD2Vjb25vbXlDb250cmFjdAkBGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIFB3Jlc3RDZmcFEUlkeENmZ0Vjb25vbXlEYXBwAAtnb3ZDb250cmFjdAkBGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIFB3Jlc3RDZmcFFElkeENmZ0dvdmVybmFuY2VEYXBwAAt3bGdDb250cmFjdAkBGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIFB3Jlc3RDZmcFDUlkeENmZ1dsZ0RhcHABEWtleUxhc3RUeElkQnlVc2VyAQRhZGRyCQCsAgICD2xhc3RUeElkQnlVc2VyXwUEYWRkcgEVa2V5TGFuZEFzc2V0SWRUb093bmVyAQdhc3NldElkCQCsAgICCW5mdE93bmVyXwUHYXNzZXRJZAEaa2V5TGFuZEFzc2V0SWRUb0N1c3RvbU5hbWUBB2Fzc2V0SWQJAKwCAgIYbGFuZEN1c3RvbU5hbWVCeUFzc2V0SWRfBQdhc3NldElkARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQdhc3NldElkCQCsAgICC3N0YWtlZFRpbWVfBQdhc3NldElkARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQdhc3NldElkCQCsAgICC2luZnJhTGV2ZWxfBQdhc3NldElkASBrZXlMYW5kQXJ0U3RhdHVzQnlUeXBlQW5kQXNzZXRJZAIEdHlwZQdhc3NldElkCQC5CQIJAMwIAgINbGFuZEFydFN0YXR1cwkAzAgCBQR0eXBlCQDMCAIFB2Fzc2V0SWQFA25pbAIBXwEia2V5U3Rha2VkVGltZUJ5VHlwZUFzc2V0SWRBbmRPd25lcgMHbmZ0VHlwZQdhc3NldElkCW93bmVyQWRkcgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICIHN0YWtlZFRpbWVCeVR5cGVBc3NldElkQW5kT3duZXJfBQduZnRUeXBlAgFfBQdhc3NldElkAgFfBQlvd25lckFkZHIBEmtleVdhcmVob3VzZUJ5TGFuZAELbGFuZEFzc2V0SWQJAKwCAgIKd2FyZUhvdXNlXwULbGFuZEFzc2V0SWQBFWtleVN0YWtlZExhbmRzQnlPd25lcgEJb3duZXJBZGRyCQCsAgICE3N0YWtlZExhbmRzQnlPd25lcl8FCW93bmVyQWRkcgEWa2V5U3Rha2VkUGllY2VzQnlPd25lcgEJb3duZXJBZGRyCQCsAgICFHN0YWtlZFBpZWNlc0J5T3duZXJfBQlvd25lckFkZHIBGmtleUR1Y2tBc3NldElkVG9DdXN0b21OYW1lAQdhc3NldElkCQCsAgICGGR1Y2tDdXN0b21OYW1lQnlBc3NldElkXwUHYXNzZXRJZAEWa2V5QWRkcmVzc1RvQ3VzdG9tTmFtZQEEYWRkcgkArAICAhhhY2NvdW50Q3VzdG9tTmFtZUJ5QWRkcl8FBGFkZHIBD2tleUFkZHJlc3NSZWZCeQEEYWRkcgkArAICAglhY2NSZWZCeV8FBGFkZHIBE2tleUFkZHJlc3NSZWZlcnJhbHMBBGFkZHIJAKwCAgINYWNjUmVmZXJyYWxzXwUEYWRkcgEQa2V5RHVja0lkVG9Pd25lcgEHYXNzZXRJZAkArAICAgpkdWNrT3duZXJfBQdhc3NldElkARRrZXlTdGFrZWREdWNrQnlPd25lcgEJb3duZXJBZGRyCQCsAgICEnN0YWtlZER1Y2tCeU93bmVyXwUJb3duZXJBZGRyARFrZXlCYWNrcGFja0J5RHVjawELZHVja0Fzc2V0SWQJAKwCAgIJYmFja1BhY2tfBQtkdWNrQXNzZXRJZAEPa2V5RHVja0xvY2F0aW9uAQtkdWNrQXNzZXRJZAkArAICAg1kdWNrTG9jYXRpb25fBQtkdWNrQXNzZXRJZAENa2V5RHVja0hlYWx0aAELZHVja0Fzc2V0SWQJAKwCAgILZHVja0hlYWx0aF8FC2R1Y2tBc3NldElkARFrZXlSZXNQcm9wb3J0aW9ucwACE3Jlc1R5cGVzUHJvcG9ydGlvbnMBCmtleUJsb2NrZWQAAhBjb250cmFjdHNCbG9ja2VkARVrZXlVc2VyR3dsUmVsZWFzZVRpbWUBCHVzZXJBZGRyCQCsAgICGiVzJXNfX3VzZXJHd2xSZWxlYXNlVGltZV9fBQh1c2VyQWRkcgEOa2V5T3JkZXJCeUxhbmQBC2xhbmRBc3NldElkCQCsAgICCmxhbmRPcmRlcl8FC2xhbmRBc3NldElkAQ5rZXlFc1dhcmVob3VzZQACGmVtZXJnZW5jeVdhcmVob3VzZVByb2R1Y3RzAA9sb2NJZHhDb250aW5lbnQAAAAKbG9jSWR4VHlwZQABAAhsb2NJZHhJZAACAQhhc1N0cmluZwEBdgQHJG1hdGNoMAUBdgMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXMFByRtYXRjaDAFAXMJAAIBAhhmYWlsIHRvIGNhc3QgaW50byBTdHJpbmcBBWFzSW50AQF2BAckbWF0Y2gwBQF2AwkAAQIFByRtYXRjaDACA0ludAQBbgUHJG1hdGNoMAUBbgkAAgECFWZhaWwgdG8gY2FzdCBpbnRvIEludAEJYXNBbnlMaXN0AQF2BAckbWF0Y2gwBQF2AwkAAQIFByRtYXRjaDACCUxpc3RbQW55XQQBbAUHJG1hdGNoMAUBbAkAAgECG2ZhaWwgdG8gY2FzdCBpbnRvIExpc3RbQW55XQEJYXNCb29sZWFuAQF2BAckbWF0Y2gwBQF2AwkAAQIFByRtYXRjaDACB0Jvb2xlYW4EAXMFByRtYXRjaDAFAXMJAAIBAhlmYWlsIHRvIGNhc3QgaW50byBCb29sZWFuAQ9udW1QaWVjZXNCeVNpemUBCGxhbmRTaXplBAckbWF0Y2gwBQhsYW5kU2l6ZQMJAAACAgFTBQckbWF0Y2gwBQVTU0laRQMJAAACAgFNBQckbWF0Y2gwBQVNU0laRQMJAAACAgFMBQckbWF0Y2gwBQVMU0laRQMJAAACAgJYTAUHJG1hdGNoMAUGWExTSVpFAwkAAAICA1hYTAUHJG1hdGNoMAUHWFhMU0laRQkAAgECEVVua25vd24gbGFuZCBzaXplAAtJZHhFZmZUb3RhbAAAAApJZHhFZmZVc2VyAAEBDmdldFZvdGluZ1Bvd2VyARJ1c2VyQWRkclN0ck9yRW1wdHkEBXByb3BzCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUPc3Rha2luZ0NvbnRyYWN0CQERa2V5UmVzUHJvcG9ydGlvbnMAAgswXzBfMF8wXzBfMAIBXwoBBWFkZGVyAgNhY2MEaXRlbQkAZAIFA2FjYwkBDXBhcnNlSW50VmFsdWUBBQRpdGVtBAp0b3RhbFBvd2VyCgACJGwFBXByb3BzCgACJHMJAJADAQUCJGwKAAUkYWNjMAAACgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQVhZGRlcgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNgkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgQKdXNlcnNQb3dlcgMJAAACBRJ1c2VyQWRkclN0ck9yRW1wdHkCAAAABAhsYW5kc1N0cgkAnQgCBQ9zdGFraW5nQ29udHJhY3QJARVrZXlTdGFrZWRMYW5kc0J5T3duZXIBBRJ1c2VyQWRkclN0ck9yRW1wdHkEBWxh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TkRTAPQDARJrZXlOZXh0RnJlZUxhbmROdW0AAgtuZXh0TGFuZE51bQEQa2V5TGFuZFRvQXNzZXRJZAEHbGFuZE51bQkArAICAgxsYW5kVG9Bc3NldF8FB2xhbmROdW0BGmtleUxhbmRDdXN0b21OYW1lVG9Bc3NldElkAQRuYW1lCQCsAgICEWxhbmRCeUN1c3RvbU5hbWVfBQRuYW1lAR5rZXlJbmZyYUxldmVsQnlBc3NldElkQW5kT3duZXICB2Fzc2V0SWQJb3duZXJBZGRyCQCsAgIJAKwCAgkArAICAhxpbmZyYUxldmVsQnlBc3NldElkQW5kT3duZXJfBQdhc3NldElkAgFfBQlvd25lckFkZHIBJWtleUxhbmRBcnRTdGF0dXNCeVR5cGVBc3NldElkQW5kT3duZXIDBHR5cGUHYXNzZXRJZAlvd25lckFkZHIJALkJAgkAzAgCAiJsYW5kQXJ0U3RhdHVzQnlUeXBlQXNzZXRJZEFuZE93bmVyCQDMCAIFBHR5cGUJAMwIAgUHYXNzZXRJZAkAzAgCBQlvd25lckFkZHIFA25pbAIBXwERa2V5TGFuZE51bVRvT3duZXIBB2xhbmROdW0JAKwCAgIKbGFuZE93bmVyXwUHbGFuZE51bQEaa2V5RHVja0N1c3RvbU5hbWVUb0Fzc2V0SWQBBG5hbWUJAKwCAgIRZHVja0J5Q3VzdG9tTmFtZV8FBG5hbWUBFmtleUN1c3RvbU5hbWVUb0FkZHJlc3MBBG5hbWUJAKwCAgIUYWNjb3VudEJ5Q3VzdG9tTmFtZV8FBG5hbWUBCWtleU9sZGllcwACCm9sZGllc0xpc3QAC2NsYWltTW9kZVdoAAAADWNsYWltTW9kZUR1Y2sAAQATY2xhaW1Nb2RlV2hUaGVuRHVjawACAAhmbEhlYWx0aAAAAAlmbE1pc3Npb24AAQALZmxPYnN0YWNsZXMAAgAHZmxXaW5kcwADAAZmbFBhdGgABAALZmxUaW1lc3RhbXAABQAHZmxCb251cwAGAAtmbFByb2RzVXNlZAAHAQduZnROYW1lAgdsYW5kTnVtCGxhbmRTaXplCQCsAgIJAKwCAgUKTEFORFBSRUZJWAUHbGFuZE51bQUIbGFuZFNpemUBE2Rpc3RyaWJ1dGVCeVdlaWdodHMCBXRvdGFsB3dlaWdodHMEA3N1bQkAZAIJAGQCCQBkAgkAZAIJAGQCCQCRAwIFB3dlaWdodHMAAAkAkQMCBQd3ZWlnaHRzAAEJAJEDAgUHd2VpZ2h0cwACCQCRAwIFB3dlaWdodHMAAwkAkQMCBQd3ZWlnaHRzAAQJAJEDAgUHd2VpZ2h0cwAFAwkAZwIAAAUDc3VtCQACAQIQWmVybyB3ZWlnaHRzIHN1bQQFbm9ybTYJAGsDBQV0b3RhbAUFTVVMVDYFA3N1bQoBCm5vcm1hbGl6ZXICA2FjYwRlbGVtCQDNCAIFA2FjYwkAawMFBGVsZW0FBW5vcm02BQVNVUxUNgoAAiRsBQd3ZWlnaHRzCgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQpub3JtYWxpemVyAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA2CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGARJnZXROZWVkZWRNYXRlcmlhbHMBBXRvdGFsBAVwcm9wcwkAtQkCCQEFdmFsdWUBCQCiCAEJARFrZXlSZXNQcm9wb3J0aW9ucwACAV8DCQECIT0CCQCQAwEFBXByb3BzBQZOVU1SRVMJAAIBAhZXcm9uZyBwcm9wb3J0aW9ucyBkYXRhBAFyCQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwcm9wcwAACQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwcm9wcwABCQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwcm9wcwACCQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwcm9wcwADCQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwcm9wcwAECQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwcm9wcwAFBQNuaWwJARNkaXN0cmlidXRlQnlXZWlnaHRzAgUFdG90YWwFAXIBEXN1YnRyYWN0TWF0ZXJpYWxzAwxz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cAUIYnBJZHhSZXMCCzBfMF8wXzBfMF8wCQDMCAIDCQAAAgkAkAMBCQC1CQIJAJEDAgUBcAUIYnBJZHhNYXQCAV8FBk5VTVJFUwkAkQMCBQFwBQhicElkeE1hdAILMF8wXzBfMF8wXzAJAMwIAgkAkQMCBQFwBQlicElkeFByb2QFA25pbAEXZ2V0V2FyZWhvdXNlVG90YWxWb2x1bWUBCXZvbFByZWZpeAQFcGFydHMJALUJAgUJdm9sUHJlZml4AgFfCQBoAgkAaAIFDFdITVVMVElQTElFUgkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwYXJ0cwABAAEJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwYXJ0cwAAARdnZXRXYXJlaG91c2VPY2N1cGllZFZvbAEJY3VycmVudFdoBAVnb29kcwkAkQMCBQljdXJyZW50V2gFCXdoSWR4UHJvZAoBCXN1bVJlc01hdAIDYWNjBGl0ZW0JAGQCBQNhY2MJAQ1wYXJzZUludFZhbHVlAQUEaXRlbQoBB3N1bVByb2QCA2FjYwRpdGVtBANpZHgIBQNhY2MCXzEEB3BrZ1NpemUJAQpnZXRQa2dTaXplAQUDaWR4BARwa2dzCQBpAgkAZQIJAGQCCQENcGFyc2VJbnRWYWx1ZQEFBGl0ZW0FB3BrZ1NpemUAAQUHcGtnU2l6ZQkAlAoCCQBkAgUDaWR4AAEJAGQCCAUDYWNjAl8yCQBoAgUEcGtncwUFTVVMVDgECHdoUmVzVm9sCgACJGwJALUJAgkAkQMCBQljdXJyZW50V2gFCHdoSWR4UmVzAgFfCgACJHMJAJADAQUCJGwKAAUkYWNjMAAACgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQlzdW1SZXNNYXQCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDYJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYECHdoTWF0Vm9sCgACJGwJALUJAgkAkQMCBQljdXJyZW50V2gFCHdoSWR4TWF0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aAUId2hJZHhSZXMCCzBfMF8wXzBfMF8wCQDMCAIDCQAAAgkAkAMBCQC1CQIJAJEDAgUCd2gFCHdoSWR4TWF0AgFfBQZOVU1SRVMJAJEDAgUCd2gFCHdoSWR4TWF0AgswXzBfMF8wXzBfMAkAzAgCCQCRAwIFAndoBQl3aElkeFByb2QJAMwIAgUGd2hMb2Z0BQNuaWwBFWdldFdhcmVob3VzZVNwYWNlTGVmdAEJY3VycmVudFdoBAtvY2N1cGllZFZvbAkBF2dldFdhcmVob3VzZU9jY3VwaWVkVm9sAQUJY3VycmVudFdoBA9jdXJyV2hMb2NrZWRWb2wJAQ1wYXJzZUludFZhbHVlAQkAkQMCCQC1CQIJAJEDAgUJY3VycmVudFdoBQl3aElkeExPRlQCAV8FCXZvbExvY2tlZAkAZQIJAGUCCQEXZ2V0V2FyZWhvdXNlVG90YWxWb2x1bWUBCQCRAwIFCWN1cnJlbnRXaAULd2hJZHhMZXZlbHMFC29jY3VwaWVkVm9sBQ9jdXJyV2hMb2NrZWRWb2wBCHRvVm9sdW1lAgZhbW91bnQHcGtnU2l6ZQQEcGtncwMJAGcCBQZhbW91bnQAAAkAaQIJAGUCCQBkAgUGYW1vdW50BQdwa2dTaXplAAEFB3BrZ1NpemUJAQEtAQkAaQIJAGUCCQBkAgkBAS0BBQZhbW91bnQFB3BrZ1NpemUAAQUHcGtnU2l6ZQkAaAIFBHBrZ3MFBU1VTFQ4AQltb3ZlU3R1ZmYDCmNhcmdvUGFydHMJY3VycmVudFdoC2N1cnJlbnRQYWNrAwkBAiE9AgkAkAMBBQpjYXJnb1BhcnRzAAMJAAIBAjRjYXJnb0xpc3RTdHIgc2hvdWxkIGNvbnRhaW4gZXhhY3RseSAyICc6JyBzZXBhcmF0b3JzBAhyZXNQYXJ0cwkAtQkCCQCRAwIFCmNhcmdvUGFydHMAAAIBXwQIbWF0UGFydHMJALUJAgkAkQMCBQpjYXJnb1BhcnRzAAECAV8ECXByb2RQYXJ0cwMJAAACCQCRAwIFCmNhcmdvUGFydHMAAgIABQNuaWwJALUJAgkAkQMCBQpjYXJnb1BhcnRzAAICAV8DCQECIT0CCQCQAwEFCHJlc1BhcnRzBQZOVU1SRVMJAAIBAiBBbGwgNiByZXNvdXJjZXMgc2hvdWxkIGJlIHBhc3NlZAMJAQIhPQIJAJADAQUIbWF0UGFydHMFBk5VTVJFUwkAAgECIEFsbCA2IG1hdGVyaWFscyBzaG91bGQgYmUgcGFzc2VkBAt3aFNwYWNlTGVmdAkBFWdldFdhcmVob3VzZVNwYWNlTGVmdAEFCWN1cnJlbnRXaAQJY3VycldoUmVzCQC1CQIJAJEDAgUJY3VycmVudFdoBQh3aElkeFJlcwIBXwQJY3VycldoTWF0CQC1CQIJAJEDAgUJY3VycmVudFdoBQh3aElkeE1hdAIBXwQKY3VycldoUHJvZAMJAAACCQCRAwIFCWN1cnJlbnRXaAUJd2hJZHhQcm9kAgAFA25pbAkAtQkCCQCRAwIFCWN1cnJlbnRXaAUJd2hJZHhQcm9kAgFfBA5jdXJyZW50UGFja1JlcwkAtQkCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeFJlcwIBXwQOY3VycmVudFBhY2tNYXQJALUJAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhNYXQCAV8ED2N1cnJlbnRQYWNrUHJvZAMJAAACCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QCAAUDbmlsCQC1CQIJAJEDAgULY3VycmVudFBhY2sFCWJwSWR4UHJvZAIBXwoBA212UgIDYWNjBGl0ZW0EAWkIBQNhY2MCXzEEAmFtCQENcGFyc2VJbnRWYWx1ZQEFBGl0ZW0EA3docgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCWN1cnJXaFJlcwUBaQQDYnByCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUOY3VycmVudFBhY2tSZXMFAWkDCQAAAgUCYW0AAAkAlgoECQBkAgUBaQABCQDNCAIIBQNhY2MCXzIJAJEDAgUJY3VycldoUmVzBQFpCQDNCAIIBQNhY2MCXzMJAJEDAgUOY3VycmVudFBhY2tSZXMFAWkIBQNhY2MCXzQDCQBmAgUCYW0AAAMJAGYCBQJhbQUDYnByCQACAQkArAICCQCsAgIJAKwCAgkArAICAhBBdHRlbXB0IHRvIHRha2UgBQRpdGVtAhkgZnJvbSBiYWNrcGFjaywgYnV0IG9ubHkgCQCkAwEFA2JwcgIKIGF2YWlsYWJsZQkAlgoECQBkAgUBaQABCQDNCAIIBQNhY2MCXzIJAKQD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RnJlZUxhbmROdW0ACQBkAgUPUFJFU0FMRU5VTUxBTkRTAAEEB2xhbmROdW0JAKQDAQUHZnJlZU51bQQMY29udGluZW50SWR4CQCgAwEJALsCAgUGYmlnTnVtBQVGSVZFWAQIdGVycmFpbnMJAQtnZW5UZXJyYWlucwIFBmJpZ051bQUMY29udGluZW50SWR4BAljb250aW5lbnQJAJEDAgUKY29udGluZW50cwUMY29udGluZW50SWR4BAVpc3N1ZQkAwggFCQEHbmZ0TmFtZQIFB2xhbmROdW0CAVMJALkJAgkAzAgCBQdsYW5kTnVtCQDMCAICAVMJAMwIAgUIdGVycmFpbnMJAMwIAgUJY29udGluZW50BQNuaWwCAV8AAQAABwQHYXNzZXRJZAkAuAgBBQVpc3N1ZQQCaWQJANgEAQUHYXNzZXRJZAkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQESa2V5TmV4dEZyZWVMYW5kTnVtAAkAZAIFB2ZyZWVOdW0AAQkAzAgCBQVpc3N1ZQkAzAgCCQELU3RyaW5nRW50cnkCCQEQa2V5TGFuZFRvQXNzZXRJZAEFB2xhbmROdW0FAmlkCQDMCAIJAQtTdHJpbmdFbnRyeQIJARVrZXlMYW5kQXNzZXRJZFRvT3duZXIBBQJpZAUIdXNlckFkZHIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBEWtleUxhbmROdW1Ub093bmVyAQUHbGFuZE51bQUIdXNlckFkZHIJAMwIAgkBDEludGVnZXJFbnRyeQIJARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQUCaWQAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBHmtleUluZnJhTGV2ZWxCeUFzc2V0SWRBbmRPd25lcgIFAmlkBQh1c2VyQWRkcgAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFBmNhbGxlcgABBQdhc3NldElkBQNuaWwJAJQKAgUCaWQFCWNvbnRpbmVudAEMZmxpZ2h0Q29tbW9uAwh1c2VyQWRkcgdtZXNzYWdlA3NpZwMJAQEhAQkAxBMDBQdtZXNzYWdlBQNzaWcFA3B1YgkAAgECGHNpZ25hdHVyZSBkb2VzIG5vdCBtYXRjaAQFcGFydHMJALUJAgkAsAkBBQdtZXNzYWdlAgE7BAlmbGlnaHRMb2cJALUJAgkAkQMCBQVwYXJ0cwAAAgF8BAJocAkAtQkCCQCRAwIFCWZsaWdodExvZwUIZmxIZWFsdGgCAV8EBWN1ckhQCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCaHAAAAQFbmV3SFAJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJocAABBAtuZXdMb2NUeFZlcgkAtQkCCQCRAwIFBXBhcnRzAAECAToEC25ld0xvY2F0aW9uCQCRAwIFC25ld0xvY1R4VmVyAAAEBHRpbWUJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQlmbGlnaHRMb2cFC2ZsVGltZXN0YW1wAwMJAGYCBQR0aW1lCQBkAggFCWxhc3RCbG9jawl0aW1lc3RhbXAFEUZJVkVNSU5VVEVTTUlMTElTBgkAZgIJAGUCCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAURRklWRU1JTlVURVNNSUxMSVMFBHRpbWUJAAIBCQCsAgIJAKwCAgkArAICAhxzaWduYXR1cmUgb3V0ZGF0ZWQ6IGxvZ1RpbWU9CQCkAwEFBHRpbWUCCSwgYmNUaW1lPQkApAMBCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQJdHhGcm9tTXNnCQCRAwIFC25ld0xvY1R4VmVyAAEEBmxhc3RUeAkBC3ZhbHVlT3JFbHNlAgkAoggBCQERa2V5TGFzdFR4SWRCeVVzZXIBBQh1c2VyQWRkcgIAAwkBAiE9AgUGbGFzdFR4BQl0eEZyb21Nc2cJAAIBCQCsAgIJAKwCAgkArAICAh5UeCBpZHMgZG9uJ3QgbWF0Y2ghIEluIHN0YXRlOiAFBmxhc3RUeAIKLCBpbiBtc2c6IAUJdHhGcm9tTXNnBAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFCHVzZXJBZGRyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkBAlrZXlIZWFsdGgJAQ1rZXlEdWNrSGVhbHRoAQULZHVja0Fzc2V0SWQEDG9sZEZyb21TdGF0ZQkBC3ZhbHVlT3JFbHNlAgkAnwgBBQlrZXlIZWFsdGgAZAMJAQIhPQIFDG9sZEZyb21TdGF0ZQUFY3VySFAJAAIBCQCsAgIJAKwCAgkArAICAgpvbGRIZWFsdGg9CQCkAwEJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJa2V5SGVhbHRoAGQCLyBmcm9tIHN0YXRlIGRvZXMgbm90IG1hdGNoIG9uZSBmcm9tIGZsaWdodCBsb2c9CQCkAwEFBWN1ckhQAwkAZwIAAAUFY3VySFAJAAIBAh5Zb3UgY2FuJ3QgZmx5IHdpdGggemVybyBoZWFsdGgEBWJvbnVzAwkAZgIJAJADAQUJZmxpZ2h0TG9nBQdmbEJvbnVzCQCRAwIFCWZsaWdodExvZwUHZmxCb251cwIABAhwcm9kVXNlZAMJAGYCCQCQAwEFCWZsaWdodExvZwULZmxQcm9kc1VzZWQJAJEDAgUJZmxpZ2h0TG9nBQtmbFByb2RzVXNlZAIABApzZW50QW1vdW50AwMJAGYCBQVuZXdIUAAACQAAAgUFYm9udXMCASQHCQEFYXNJbnQBCQD8BwQFDHJlc3RDb250cmFjdAINc2VuZFVzZHRQcml6ZQkAzAgCBQh1c2VyQWRkcgUDbmlsBQNuaWwAAAkAlwoFBQVuZXdIUAULZHVja0Fzc2V0SWQFCnNlbnRBbW91bnQFC25ld0xvY2F0aW9uBQhwcm9kVXNlZAEQZXhwZWRpdGlvbkNvbW1vbgQGY2FsbGVyBHR4SWQHbWVzc2FnZQNzaWcECHVzZXJBZGRyCQClCAEFBmNhbGxlcgQBZgkBDGZsaWdodENvbW1vbgMFCHVzZXJBZGRyBQdtZXNzYWdlBQNzaWcECWtleUhlYWx0aAkBDWtleUR1Y2tIZWFsdGgBCAUBZgJfMgQFYnBLZXkJARFrZXlCYWNrcGFja0J5RHVjawEIBQFmAl8yBAtjdXJyZW50UGFjawkBC2dldEJhY2twYWNrAQUFYnBLZXkEBW1MaXN0CQC1CQIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4TWF0AgFfBAZuZXdNYXQJALkJAgkBEXN1YnRyYWN0TWF0ZXJpYWxzAwYFBW1MaXN0BQxFWFBNQVRFUklBTFMCAV8EB25ld1Byb2QJARBzdWJ0cmFjdFByb2R1Y3RzAgkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kCAUBZgJfNQMJAGcCAAAIBQFmAl8xCQCVCgMJAMwIAgkBDEludGVnZXJFbnRyeQIFCWtleUhlYWx0aAAACQDMCAIJAQtTdHJpbmdFbnRyeQIFBWJwS2V5CQC5CQIJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUKYnBJZHhMZXZlbAkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeFJlcwkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeE1hdAkAzAgCBQduZXdQcm9kBQNuaWwCAToFA25pbAIAAAAEAWUJARJleHBlZGl0aW9uSW50ZXJuYWwCBQZjYWxsZXIFBHR4SWQEAmlkCAgFAWUCXzICXzEJAJUKAwkAzQgCCQDNCAIJAM0IAggFAWUCXzEJAQtTdHJpbmdFbnRyeQIJAQ9rZXlEdWNrTG9jYXRpb24BCAUBZgJfMgkAuQkCCQDMCAIICAUBZQJfMgJfMgkAzAgCAgFMCQDMCAIFAmlkBQNuaWwCAV8JAQxJbnRlZ2VyRW50cnkCBQlrZXlIZWFsdGgIBQFmAl8xCQELU3RyaW5nRW50cnkCBQVicEtleQkAuQkCCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCmJwSWR4TGV2ZWwJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhSZXMJAMwIAgUGbmV3TWF0CQDMCAIFB25ld1Byb2QFA25pbAIBOgUCaWQIBQFmAl8zAQxhcHBseUJvbnVzZXMCC2xhbmRBc3NldElkBnBpZWNlcwQKaW5mcmFMZXZlbAkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEWa2V5SW5mcmFMZXZlbEJ5QXNzZXRJZAEFC2xhbmRBc3NldElkAAAECWFydFBpZWNlcwkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEga2V5TGFuZEFydFN0YXR1c0J5VHlwZUFuZEFzc2V0SWQCBQpBUlRQUkVTQUxFBQtsYW5kQXNzZXRJZAAABARhZGQ2CQBpAgUKaW5mcmFMZXZlbAAGBARhZGQ3CQBpAgUKaW5mcmFMZXZlbAAHCQBkAgkAZAIFD0RBSUxZUkVTQllQSUVDRQkAawMFD0RBSUxZUkVTQllQSUVDRQkAZAIJAGQCBQppbmZyYUxldmVsBQRhZGQ2CQBoAgACBQRhZGQ3AAUJAGsDBQ9EQUlMWVJFU0JZUElFQ0UFCWFydFBpZWNlcwkAaAIFBnBpZWNlcwAFARRjaGVja0NsYWltQ29uZGl0aW9ucwMEYWRkcgljbGFpbU1vZGUNbGFuZEFzc2V0SWRJbgQNJHQwMjQ0MjIyNDk2MQMJAAACBQljbGFpbU1vZGUFC2NsYWltTW9kZVdoCQCUCgIFDWxhbmRBc3NldElkSW4JAQt2YWx1ZU9yRWxzZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUEYWRkcgIABAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFBGFkZHICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQEC2N1ckxvY2F0aW9uCQELdmFsdWVPckVsc2UCCQCiCAEJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAUPREVGQVVMVExPQ0FUSU9OBANsb2MJALUJAgkBBXZhbHVlAQULY3VyTG9jYXRpb24CAV8DCQECIT0CCQCRAwIFA2xvYwUKbG9jSWR4VHlwZQIBTAkAAgEJAKwCAgkArAICAhZEdWNrIGxvY2F0aW9uIHR5cGUgaXMgCQCRAwIFA2xvYwUKbG9jSWR4VHlwZQIRLCBidXQgc2hvdWxkIGJlIEwJAJQKAgkAkQMCBQNsb2MFCGxvY0lkeElkBQtkdWNrQXNzZXRJZAQLbGFuZEFzc2V0SWQIBQ0kdDAyNDQyMjI0OTYxAl8xBAZkdWNrSWQIBQ0kdDAyNDQyMjI0OTYxAl8yBAVhc3NldAkBBXZhbHVlAQkA7AcBCQDZBAEFC2xhbmRBc3NldElkBAd0aW1lS2V5CQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFC2xhbmRBc3NldElkBAlzYXZlZFRpbWUJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnwgBBQd0aW1lS2V5CQCsAgIJAKwCAgIFTGFuZCAIBQVhc3NldARuYW1lAg4gaXMgbm90IHN0YWtlZAQFb3duZXIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEVa2V5TGFuZEFzc2V0SWRUb093bmVyAQULbGFuZEFzc2V0SWQJAKwCAgkArAICAgRORlQgCAUFYXNzZXQEbmFtZQIMIGlzIG9ycGhhbmVkAwkBAiE9AgUFb3duZXIFBGFkZHIJAAIBCQCsAgIFCkxBTkRQUkVGSVgCDSBpcyBub3QgeW91cnMEAWQJALUJAggFBWFzc2V0C2Rlc2NyaXB0aW9uAgFfCQCWCgQFBmR1Y2tJZAULbGFuZEFzc2V0SWQFAWQFCXNhdmVkVGltZQEQY2xhaW1SZXNJbnRlcm5hbAQEYWRkcgZhbW91bnQJY2xhaW1Nb2RlDWxhbmRBc3NldElkSW4DCQBmAgAABQZhbW91bnQJAAIBAg9OZWdhdGl2ZSBhbW91bnQEAWMJARRjaGVja0NsYWltQ29uZGl0aW9ucwMFBGFkZHIFCWNsYWltTW9kZQUNbGFuZEFzc2V0SWRJbgQIbGFuZFNpemUJAJEDAggFAWMCXzMFC3JlY0xhbmRTaXplBA10ZXJyYWluQ291bnRzCQENY291bnRUZXJyYWlucwEJAJEDAggFAWMCXzMFC3JlY1RlcnJhaW5zBAlkZWx0YVRpbWUJAGUCCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAgFAWMCXzQDCQBmAgAABQlkZWx0YVRpbWUJAAIBCQCsAgIJAKwCAgkArAICAiZTYXZlZCB0aW1lc3RhbXAgaXMgaW4gZnV0dXJlLCBzYXZlZCA9IAkApAMBCAUBYwJfNAIMLCBjdXJyZW50ID0gCQCkAwEIBQlsYXN0QmxvY2sJdGltZXN0YW1wBAZwaWVjZXMJAQ9udW1QaWVjZXNCeVNpemUBBQhsYW5kU2l6ZQQWZGFpbHlQcm9kdWN0aW9uQnlQaWVjZQkBDGFwcGx5Qm9udXNlcwIIBQFjAl8yBQZwaWVjZXMECGF2YWlsUmVzCQBrAwUJZGVsdGFUaW1lCQBoAgUWZGFpbHlQcm9kdWN0aW9uQnlQaWVjZQUGcGllY2VzBQlEQVlNSUxMSVMDCQBmAgUGYW1vdW50BQhhdmFpbFJlcwkAAgEJAKwCAgkArAICCQCsAgICIk5vdCBlbm91Z2ggcmVzb3VyY2VzLCBhdmFpbGFibGUgPSAJAKQDAQUIYXZhaWxSZXMCDiwgcmVxdWVzdGVkID0gCQCkAwEFBmFtb3VudAQMbmV3RGVsdGFUaW1lCQBrAwkAZQIFCGF2YWlsUmVzBQZhbW91bnQFCURBWU1JTExJUwkAaAIFFmRhaWx5UHJvZHVjdGlvbkJ5UGllY2UFBnBpZWNlcwQMbmV3VGltZXN0YW1wCQBlAggFCWxhc3RCbG9jawl0aW1lc3RhbXAFDG5ld0RlbHRhVGltZQQJbGFuZEluZGV4CQBpAgUGcGllY2VzBQVTU0laRQQKcmVzVG9DbGFpbQkBCXZpcnRDbGFpbQQFDXRlcnJhaW5Db3VudHMJAGUCBQlkZWx0YVRpbWUFDG5ld0RlbHRhVGltZQUJbGFuZEluZGV4BRZkYWlseVByb2R1Y3Rpb25CeVBpZWNlBAV3aEtleQkBEmtleVdhcmVob3VzZUJ5TGFuZAEIBQFjAl8yBAppbmZyYUxldmVsCQELdmFsdWVPckVsc2UCCQCfCAEJARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQgFAWMCXzIAAAQJY3VycmVudFdoCQEMZ2V0V2FyZWhvdXNlAwUFd2hLZXkFCWxhbmRJbmRleAUKaW5mcmFMZXZlbAQEbG9mdAkAtQkCCQCRAwIFCWN1cnJlbnRXaAUJd2hJZHhMT0ZUAgFfBAt3aFNwYWNlTGVmdAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFB3ZvbEZyZWUDAwkAAAIFCWNsYWltTW9kZQULY2xhaW1Nb2RlV2gJAGYCBQZhbW91bnQFC3doU3BhY2VMZWZ0BwkAAgEJAKwCAgkArAICAgVPbmx5IAkApAMBBQt3aFNwYWNlTGVmdAIYIHNwYWNlIGxlZnQgaW4gd2FyZWhvdXNlBAVicEtleQkBEWtleUJhY2twYWNrQnlEdWNrAQgFAWMCXzEEC2N1cnJlbnRQYWNrCQELZ2V0QmFja3BhY2sBBQVicEtleQQOY3VycmVudFBhY2tSZXMJALUJAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhSZXMCAV8EDGN1cnJlbnRXaFJlcwkAtQkCCQCRAwIFCWN1cnJlbnRXaAUId2hJZHhSZXMCAV8EDSR0MDI3MzM1MjgyMDYDCQAAAgUJY2xhaW1Nb2RlBQtjbGFpbU1vZGVXaAkAlgoECQEGYWRkUmVzBQUMY3VycmVudFdoUmVzBQ10ZXJyYWluQ291bnRzCQBlAgUJZGVsdGFUaW1lBQxuZXdEZWx0YVRpbWUFCWxhbmRJbmRleAUWZGFpbHlQcm9kdWN0aW9uQnlQaWVjZQkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhSZXMJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEbG9mdAULdm9sT2NjdXBpZWQIBQpyZXNUb0NsYWltAl8yCQBlAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFB3ZvbEZyZWUIBQpyZXNUb0NsYWltAl8yAwkAAAIFCWNsYWltTW9kZQUNY2xhaW1Nb2RlRHVjawkAlgoECQCRAwIFCWN1cnJlbnRXaAUId2hJZHhSZXMJAQZhZGRSZXMFBQ5jdXJyZW50UGFja1JlcwUNdGVycmFpbkNvdW50cwkAZQIFCWRlbHRhVGltZQUMbmV3RGVsdGFUaW1lBQlsYW5kSW5kZXgFFmRhaWx5UHJvZHVjdGlvbkJ5UGllY2UJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQt2b2xPY2N1cGllZAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFB3ZvbEZyZWUEBWRpc3RyCQENZGlzdHJpYnV0ZVJlcwQFDGN1cnJlbnRXaFJlcwUOY3VycmVudFBhY2tSZXMFCnJlc1RvQ2xhaW0FC3doU3BhY2VMZWZ0BAR3aEFtCQCXAwEJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFB3ZvbEZyZWUJAMwIAggFCnJlc1RvQ2xhaW0CXzIFA25pbAkAlgoECAUFZGlzdHICXzEIBQVkaXN0cgJfMgkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQt2b2xPY2N1cGllZAUEd2hBbQkAZQIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQd2b2xGcmVlBQR3aEFtBAV3aFJlcwgFDSR0MDI3MzM1MjgyMDYCXzEEBWJwUmVzCAUNJHQwMjczMzUyODIwNgJfMgQFbG9mdE8IBQ0kdDAyNzMzNTI4MjA2Al8zBAVsb2Z0RggFDSR0MDI3MzM1MjgyMDYCXzQJAJcKBQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBCAUBYwJfMgUMbmV3VGltZXN0YW1wCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEia2V5U3Rha2VkVGltZUJ5VHlwZUFzc2V0SWRBbmRPd25lcgMFCkxBTkRQUkVGSVgIBQFjAl8yBQRhZGRyBQxuZXdUaW1lc3RhbXAFA25pbAUFYnBLZXkJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUKYnBJZHhMZXZlbAkAzAgCBQVicFJlcwkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeE1hdAkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QFA25pbAUFd2hLZXkJAMwIAgkAkQMCBQljdXJyZW50V2gFC3doSWR4TGV2ZWxzCQDMCAIFBXdoUmVzCQDMCAIJAJEDAgUJY3VycmVudFdoBQh3aElkeE1hdAkAzAgCCQCRAwIFCWN1cnJlbnRXaAUJd2hJZHhQcm9kCQDMCAIJALkJAgkAzAgCCQCRAwIFBGxvZnQFCXZvbExvY2tlZAkAzAgCCQCkAwEFBWxvZnRPCQDMCAIJAKQDAQUFbG9mdEYJAMwIAgkAkQMCBQRsb2Z0BQh2b2xUb3RhbAUDbmlsAgFfBQNuaWwBCGNsYWltQWxsBARhZGRyC2xhbmRBc3NldElkBnBpZWNlcwljbGFpbU1vZGUEB3RpbWVLZXkJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQULbGFuZEFzc2V0SWQECXNhdmVkVGltZQkBBXZhbHVlAQkAnwgBBQd0aW1lS2V5BAhhdmFpbFJlcwkAaAIJAGsDCQBlAggFCWxhc3RCbG9jawl0aW1lc3RhbXAFCXNhdmVkVGltZQkBDGFwcGx5Qm9udXNlcwIFC2xhbmRBc3NldElkBQZwaWVjZXMFCURBWU1JTExJUwUGcGllY2VzCQEQY2xhaW1SZXNJbnRlcm5hbAQFBGFkZHIFCGF2YWlsUmVzBQljbGFpbU1vZGUFC2xhbmRBc3NldElkAQ11cEluZnJhQ29tbW9uBAxzaG91bGRVc2VNYXQGY2FsbGVyDXBheW1lbnRBbW91bnQLbGFuZEFzc2V0SWQEBGFkZHIJAKUIAQUGY2FsbGVyBAFjCQEUY2hlY2tDbGFpbUNvbmRpdGlvbnMDBQRhZGRyBRNjbGFpbU1vZGVXaFRoZW5EdWNrBQtsYW5kQXNzZXRJZAQGcGllY2VzCQEPbnVtUGllY2VzQnlTaXplAQkAkQMCCAUBYwJfMwULcmVjTGFuZFNpemUECGluZnJhS2V5CQEWa2V5SW5mcmFMZXZlbEJ5QXNzZXRJZAEIBQFjAl8yBAhjdXJMZXZlbAkBC3ZhbHVlT3JFbHNlAgkAnwgBBQhpbmZyYUtleQAAAwkAZwIFCGN1ckxldmVsAAMJAAIBAiZDdXJyZW50bHkgbWF4IGluZnJhc3RydWN0dXJlIGxldmVsID0gMwQIbmV3TGV2ZWwJAGQCBQhjdXJMZXZlbAABBARjb3N0CQBrAwUVSW5mcmFVcGdyYWRlQ29zdFNVc2R0CQBoAgUGcGllY2VzBQhuZXdMZXZlbAUFU1NJWkUDAwkBASEBBQxzaG91bGRVc2VNYXQJAQIhPQIFDXBheW1lbnRBbW91bnQFBGNvc3QHCQACAQkArAICAhtQYXltZW50IGF0dGFjaGVkIHNob3VsZCBiZSAJAKQDAQUEY29zdAQFYnBLZXkJARFrZXlCYWNrcGFja0J5RHVjawEIBQFjAl8xBAtjdXJyZW50UGFjawkBC2dldEJhY2twYWNrAQUFYnBLZXkEBW1MaXN0CQC1CQIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4TWF0AgFfBAZuZXdNYXQJALkJAgkBEXN1YnRyYWN0TWF0ZXJpYWxzAwUMc2hvdWxkVXNlTWF0BQVtTGlzdAkAawMFEUluZnJhVXBncmFkZUNvc3RTCQBoAgUGcGllY2VzBQhuZXdMZXZlbAUFU1NJWkUCAV8EC2NsYWltUmVzdWx0CQEIY2xhaW1BbGwEBQRhZGRyCAUBYwJfMgUGcGllY2VzBRNjbGFpbU1vZGVXaFRoZW5EdWNrBAZ3aERhdGEIBQtjbGFpbVJlc3VsdAJfNQQGb2xkVm9sCQEXZ2V0V2FyZWhvdXNlVG90YWxWb2x1bWUBCQCRAwIFBndoRGF0YQULd2hJZHhMZXZlbHMECm5ld1ZvbERhdGEJALkJAgkAzAgCCQCRAwIJALUJAgkAkQMCBQZ3aERhdGEFC3doSWR4TGV2ZWxzAgFfAAAJAMwIAgkApAMBBQhuZXdMZXZlbAUDbmlsAgFfBAZuZXdWb2wJARdnZXRXYXJlaG91c2VUb3RhbFZvbHVtZQEFCm5ld1ZvbERhdGEEBGxvZnQJALUJAgkAkQMCBQZ3aERhdGEFCXdoSWR4TE9GVAIBXwQKbmV3TG9mdFN0cgkAuQkCCQDMCAIJAJEDAgUEbG9mdAUJdm9sTG9ja2VkCQDMCAIJAJEDAgUEbG9mdAULdm9sT2NjdXBpZWQJAMwIAgkApAMBCQBlAgkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQd2b2xGcmVlBQZuZXdWb2wFBm9sZFZvbAkAzAgCCQCkAwEFBm5ld1ZvbAUDbmlsAgFfCQCUCgIJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUIaW5mcmFLZXkFCG5ld0xldmVsCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEea2V5SW5mcmFMZXZlbEJ5QXNzZXRJZEFuZE93bmVyAggFAWMCXzIFBGFkZHIFCG5ld0xldmVsCQDMCAIJAQtTdHJpbmdFbnRyeQIFBWJwS2V5CQC5CQIJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUKYnBJZHhMZXZlbAkAzAgCCQCRAwIIBQtjbGFpbVJlc3VsdAJfMwUIYnBJZHhSZXMJAMwIAgUGbmV3TWF0CQDMCAIJAJEDAgULY3VycmVudFBhY2sFCWJwSWR4UHJvZAUDbmlsAgE6CQDMCAIJAQtTdHJpbmdFbnRyeQIIBQtjbGFpbVJlc3VsdAJfNAkAuQkCCQDMCAIFCm5ld1ZvbERhdGEJAMwIAgkAkQMCBQZ3aERhdGEFCHdoSWR4UmVzCQDMCAIJAJEDAgUGd2hEYXRhBQh3aElkeE1hdAkAzAgCCQCRAwIFBndoRGF0YQUJd2hJZHhQcm9kCQDMCAIFCm5ld0xvZnRTdHIFA25pbAIBOgUDbmlsCAULY2xhaW1SZXN1bHQCXzEFCG5ld0xldmVsARJhY3RpdmF0ZU9uYm9hcmRBcnQBBGFkZHIAAAESYWN0aXZhdGVQcmVzYWxlQXJ0AgRhZGRyDWxhbmRBc3NldElkSW4EAWMJARRjaGVja0NsYWltQ29uZGl0aW9ucwMFBGFkZHIFE2NsYWltTW9kZVdoVGhlbkR1Y2sFDWxhbmRBc3NldElkSW4EC2xhbmRBc3NldElkCAUBYwJfMgQGcGllY2VzCQEPbnVtUGllY2VzQnlTaXplAQkAkQMCCAUBYwJfMwULcmVjTGFuZFNpemUEDWFjdGl2YXRpb25LZXkJASBrZXlMYW5kQXJ0U3RhdHVzQnlUeXBlQW5kQXNzZXRJZAIFCkFSVFBSRVNBTEUFC2xhbmRBc3NldElkAwkAZgIJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUNYWN0aXZhdGlvbktleQAAAAAJAAIBAiVQcmVzYWxlIGFydGlmYWN0IGlzIGFscmVhZHkgYWN0aXZhdGVkAwkAZgIJAQ1wYXJzZUludFZhbHVlAQkAkQMCCAUBYwJfMwUKcmVjTGFuZE51bQUPUFJFU0FMRU5VTUxBTkRTCQACAQkArAICCQCsAgIJAKwCAgUKTEFORFBSRUZJWAIBIAULbGFuZEFzc2V0SWQCJSBpcyBub3QgZWxpZ2libGUgZm9yIHByZXNhbGUgYXJ0aWZhY3QEC2NsYWltUmVzdWx0CQEIY2xhaW1BbGwEBQRhZGRyBQtsYW5kQXNzZXRJZAUGcGllY2VzBRNjbGFpbU1vZGVXaFRoZW5EdWNrCQDNCAIJAM0IAgkAzQgCCQDNCAIIBQtjbGFpbVJlc3VsdAJfMQkBDEludGVnZXJFbnRyeQIFDWFjdGl2YXRpb25LZXkFBnBpZWNlcwkBDEludGVnZXJFbnRyeQIJASVrZXlMYW5kQXJ0U3RhdHVzQnlUeXBlQXNzZXRJZEFuZE93bmVyAwUKQVJUUFJFU0FMRQULbGFuZEFzc2V0SWQFBGFkZHIFBnBpZWNlcwkBC1N0cmluZ0VudHJ5AggFC2NsYWltUmVzdWx0Al8yCQC5CQIIBQtjbGFpbVJlc3VsdAJfMwIBOgkBC1N0cmluZ0VudHJ5AggFC2NsYWltUmVzdWx0Al80CQC5CQIIBQtjbGFpbVJlc3VsdAJfNQIBOgENbWVyZ2VJbnRlcm5hbAcLbmV3TGFuZFNpemUIbmV3TGV2ZWwHZm9ybXVsYQRhZGRyDGxhbmRBc3NldElkcwR0eElkB25lZWRNYXQEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUEYWRkcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAoBCmNoZWNrTWVyZ2UCA2FjYwtsYW5kQXNzZXRJZAQFYXNzZXQJAQV2YWx1ZQEJAOwHAQkA2QQBBQtsYW5kQXNzZXRJZAQHdGltZUtleQkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAQJc2F2ZWRUaW1lCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ8IAQUHdGltZUtleQkArAICCQCsAgICBE5GVCAIBQVhc3NldARuYW1lAg4gaXMgbm90IHN0YWtlZAQFb3duZXIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEVa2V5TGFuZEFzc2V0SWRUb093bmVyAQULbGFuZEFzc2V0SWQJAKwCAgkArAICAgRORlQgCAUFYXNzZXQEbmFtZQIMIGlzIG9ycGhhbmVkAwkBAiE9AgUFb3duZXIFBGFkZHIJAAIBCQCsAgIFCkxBTkRQUkVGSVgCDSBpcyBub3QgeW91cnMEAWQJALUJAggFBWFzc2V0C2Rlc2NyaXB0aW9uAgFfBAljb250aW5lbnQJAJEDAgUBZAUMcmVjQ29udGluZW50AwMJAQIhPQIIBQNhY2MCXzMCAAkBAiE9AggFA2FjYwJfMwUJY29udGluZW50BwkAAgECLkxhbmRzIHNob3VsZCBiZSBvbiB0aGUgc2FtZSBjb250aW5lbnQgdG8gbWVyZ2UECGxhbmRTaXplCQCRAwIFAWQFC3JlY0xhbmRTaXplBAdzaXplc0luCAUDYWNjAl8xBAFpCQETdmFsdWVPckVycm9yTWVzc2FnZQIJALMJAgUHc2l6ZXNJbgUIbGFuZFNpemUCJ1lvdSBoYXZlbid0IHBhc3NlZCBhbGwgdGhlIGxhbmRzIG5lZWRlZAQIc2l6ZXNPdXQJAKwCAgkArwICBQdzaXplc0luBQFpCQCwAgIFB3NpemVzSW4JAGQCBQFpAAEEBnBpZWNlcwkBD251bVBpZWNlc0J5U2l6ZQEFCGxhbmRTaXplBARhcnRzCQBkAggFA2FjYwJfMgkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEga2V5TGFuZEFydFN0YXR1c0J5VHlwZUFuZEFzc2V0SWQCBQpBUlRQUkVTQUxFBQtsYW5kQXNzZXRJZAAABAppbmZyYUxldmVsCQELdmFsdWVPckVsc2UCCQCfCAEJARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQULbGFuZEFzc2V0SWQAAAQIcmVxTGV2ZWwEByRtYXRjaDAFCGxhbmRTaXplAwkAAAICAVMFByRtYXRjaDAAAwMJAAACAgFNBQckbWF0Y2gwAAQDCQAAAgIBTAUHJG1hdGNoMAAFAwkAAAICAlhMBQckbWF0Y2gwAAYJAAIBAhpPbmx5IFMsIE0sIEwsIFhMIGNhbiBtZXJnZQMJAQIhPQIFCmluZnJhTGV2ZWwFCHJlcUxldmVsCQACAQIiQWxsIGxhbmRzIHNob3VsZCBiZSBtYXhlZCB0byBtZXJnZQQHbGFuZE51bQkAkQMCBQFkBQpyZWNMYW5kTnVtBA10ZXJyYWluQ291bnRzCQENY291bnRUZXJyYWlucwEJAJEDAgUBZAULcmVjVGVycmFpbnMECWRlbHRhVGltZQkAZQIIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQlzYXZlZFRpbWUDCQBmAgAABQlkZWx0YVRpbWUJAAIBCQCsAgIJAKwCAgkArAICAiZTYXZlZCB0aW1lc3RhbXAgaXMgaW4gZnV0dXJlLCBzYXZlZCA9IAkApAMBBQlzYXZlZFRpbWUCDCwgY3VycmVudCA9IAkApAMBCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQWZGFpbHlQcm9kdWN0aW9uQnlQaWVjZQkBDGFwcGx5Qm9udXNlcwIFC2xhbmRBc3NldElkBQZwaWVjZXMECWxhbmRJbmRleAkAaQIFBnBpZWNlcwUFU1NJWkUEBWJwUmVzCQEGYWRkUmVzBQkAtQkCCAUDYWNjAl80AgFfBQ10ZXJyYWluQ291bnRzBQlkZWx0YVRpbWUFCWxhbmRJbmRleAUWZGFpbHlQcm9kdWN0aW9uQnlQaWVjZQQFcHJvcHMJARl1cGRhdGVQcm9wb3J0aW9uc0ludGVybmFsBAkAtQkCCAUDYWNjAl82AgFfBQ10ZXJyYWluQ291bnRzBQlsYW5kSW5kZXgA////////////AQQFbGFuZHMIBQNhY2MCXzcEA2lkeAkAzwgCBQVsYW5kcwULbGFuZEFzc2V0SWQDCQEBIQEJAQlpc0RlZmluZWQBBQNpZHgJAAIBCQCsAgICIFlvdXIgc3Rha2VkIGxhbmRzIGRvbid0IGNvbnRhaW4gBQtsYW5kQXNzZXRJZAQJY3VzdG9tS2V5CQEaa2V5TGFuZEFzc2V0SWRUb0N1c3RvbU5hbWUBBQtsYW5kQXNzZXRJZAQKY3VzdG9tTmFtZQkBC3ZhbHVlT3JFbHNlAgkAoggBBQljdXN0b21LZXkCAAkAmgoIBQhzaXplc091dAUEYXJ0cwUJY29udGluZW50BQVicFJlcwkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCAUDYWNjAl81CQELRGVsZXRlRW50cnkBCQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFC2xhbmRBc3NldElkCQELRGVsZXRlRW50cnkBCQEia2V5U3Rha2VkVGltZUJ5VHlwZUFzc2V0SWRBbmRPd25lcgMFCkxBTkRQUkVGSVgFC2xhbmRBc3NldElkBQRhZGRyCQELRGVsZXRlRW50cnkBCQEQa2V5TGFuZFRvQXNzZXRJZAEFB2xhbmROdW0JAQtEZWxldGVFbnRyeQEJARVrZXlMYW5kQXNzZXRJZFRvT3duZXIBBQtsYW5kQXNzZXRJZAkBC0RlbGV0ZUVudHJ5AQkBFmtleUluZnJhTGV2ZWxCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAkBC0RlbGV0ZUVudHJ5AQkBHmtleUluZnJhTGV2ZWxCeUFzc2V0SWRBbmRPd25lcgIFC2xhbmRBc3NldElkBQRhZGRyCQELRGVsZXRlRW50cnkBCQEga2V5TGFuZEFydFN0YXR1c0J5VHlwZUFuZEFzc2V0SWQCBQpBUlRQUkVTQUxFBQtsYW5kQXNzZXRJZAkBC0RlbGV0ZUVudHJ5AQkBJWtleUxhbmRBcnRTdGF0dXNCeVR5cGVBc3NldElkQW5kT3duZXIDBQpBUlRQUkVTQUxFBQtsYW5kQXNzZXRJZAUEYWRkcgkBC0RlbGV0ZUVudHJ5AQkBEWtleUxhbmROdW1Ub093bmVyAQUHbGFuZE51bQkBC0RlbGV0ZUVudHJ5AQkBEmtleVdhcmVob3VzZUJ5TGFuZAEFC2xhbmRBc3NldElkCQELRGVsZXRlRW50cnkBBQljdXN0b21LZXkJAQtEZWxldGVFbnRyeQEJARprZXlMYW5kQ3VzdG9tTmFtZVRvQXNzZXRJZAEFCmN1c3RvbU5hbWUJAQRCdXJuAgkA2QQBBQtsYW5kQXNzZXRJZAABBQVwcm9wcwkA0QgCBQVsYW5kcwkBBXZhbHVlAQUDaWR4CQBkAggFA2FjYwJfOAUGcGllY2VzBAVicEtleQkBEWtleUJhY2twYWNrQnlEdWNrAQULZHVja0Fzc2V0SWQEC2N1cnJlbnRQYWNrCQELZ2V0QmFja3BhY2sBBQVicEtleQQHcHJvcFN0cgkBC3ZhbHVlT3JFbHNlAgkAoggBCQERa2V5UmVzUHJvcG9ydGlvbnMAAgswXzBfMF8wXzBfMAQIbGFuZHNLZXkJARVrZXlTdGFrZWRMYW5kc0J5T3duZXIBBQRhZGRyBAhsYW5kc1N0cgkAoggBBQhsYW5kc0tleQQHbGFuZHNJbgMJAQlpc0RlZmluZWQBBQhsYW5kc1N0cgkAvQkCCQEFdmFsdWUBBQhsYW5kc1N0cgIBXwUDbmlsBAFyCgACJGwFDGxhbmRBc3NldElkcwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJoKCAUHZm9ybXVsYQAAAgAJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4UmVzBQNuaWwFB3Byb3BTdHIFB2xhbmRzSW4AAAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEKY2hlY2tNZXJnZQIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNQkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUECWNvbnRpbmVudAgFAXICXzMEDGNvbnRpbmVudElkeAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDPCAIFCmNvbnRpbmVudHMFCWNvbnRpbmVudAkArAICAhNVbmtub3duIGNvbnRpbmVudDogBQljb250aW5lbnQECHRlcnJhaW5zCQELZ2VuVGVycmFpbnMCCQEDYWJzAQkAngMBBQR0eElkBQxjb250aW5lbnRJZHgEB2ZyZWVOdW0JAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBEmtleU5leHRGcmVlTGFuZE51bQAJAGQCBQ9QUkVTQUxFTlVNTEFORFMAAQQKbmV3TGFuZE51bQkApAMBBQdmcmVlTnVtBAVpc3N1ZQkAwggFCQEHbmZ0TmFtZQIFCm5ld0xhbmROdW0FC25ld0xhbmRTaXplCQC5CQIJAMwIAgUKbmV3TGFuZE51bQkAzAgCBQtuZXdMYW5kU2l6ZQkAzAgCBQh0ZXJyYWlucwkAzAgCBQljb250aW5lbnQFA25pbAIBXwABAAAHBAdhc3NldElkCQC4CAEFBWlzc3VlBA5uZXdMYW5kQXNzZXRJZAkA2AQBBQdhc3NldElkBAZuZXdNYXQJALkJAgkBEXN1YnRyYWN0TWF0ZXJpYWxzAwkAZgIFB25lZWRNYXQAAAkAtQkCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeE1hdAIBXwUHbmVlZE1hdAIBXwQJcGllY2VzS2V5CQEWa2V5U3Rha2VkUGllY2VzQnlPd25lcgEFBGFkZHIEDHN0YWtlZFBpZWNlcwkBC3ZhbHVlT3JFbHNlAgkAnwgBBQlwaWVjZXNLZXkAAAkAlAoCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCAUBcgJfNQMJAGYCCQCQAwEIBQFyAl83AAAJAQtTdHJpbmdFbnRyeQIFCGxhbmRzS2V5CQC7CQIIBQFyAl83AgFfCQELRGVsZXRlRW50cnkBBQhsYW5kc0tleQkBDEludGVnZXJFbnRyeQIFCXBpZWNlc0tleQMJAGYCCAUBcgJfOAUMc3Rha2VkUGllY2VzAAAJAGUCBQxzdGFrZWRQaWVjZXMIBQFyAl84CQEMSW50ZWdlckVudHJ5AgkBEmtleU5leHRGcmVlTGFuZE51bQAJAGQCBQdmcmVlTnVtAAEFBWlzc3VlCQELU3RyaW5nRW50cnkCCQEQa2V5TGFuZFRvQXNzZXRJZAEFCm5ld0xhbmROdW0FDm5ld0xhbmRBc3NldElkCQELU3RyaW5nRW50cnkCCQEVa2V5TGFuZEFzc2V0SWRUb093bmVyAQUObmV3TGFuZEFzc2V0SWQFBGFkZHIJAQtTdHJpbmdFbnRyeQIJARFrZXlMYW5kTnVtVG9Pd25lcgEFCm5ld0xhbmROdW0FBGFkZHIJAQxJbnRlZ2VyRW50cnkCCQEga2V5TGFuZEFydFN0YXR1c0J5VHlwZUFuZEFzc2V0SWQCBQpBUlRQUkVTQUxFBQ5uZXdMYW5kQXNzZXRJZAgFAXICXzIJAQxJbnRlZ2VyRW50cnkCCQEla2V5TGFuZEFydFN0YXR1c0J5VHlwZUFzc2V0SWRBbmRPd25lcgMFCkFSVFBSRVNBTEUFDm5ld0xhbmRBc3NldElkBQRhZGRyCAUBcgJfMgkBDEludGVnZXJFbnRyeQIJARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQUObmV3TGFuZEFzc2V0SWQFCG5ld0xldmVsCQEMSW50ZWdlckVudHJ5AgkBHmtleUluZnJhTGV2ZWxCeUFzc2V0SWRBbmRPd25lcgIFDm5ld0xhbmRBc3NldElkBQRhZGRyBQhuZXdMZXZlbAkBC1N0cmluZ0VudHJ5AgUFYnBLZXkJALkJAgkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQpicElkeExldmVsCQDMCAIIBQFyAl80CQDMCAIFBm5ld01hdAkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QFA25pbAIBOgkBC1N0cmluZ0VudHJ5AgkBEWtleVJlc1Byb3BvcnRpb25zAAgFAXICXzYJAQtTdHJpbmdFbnRyeQIJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAkAuQkCCQDMCAIFCWNvbnRpbmVudAkAzAgCAgFMCQDMCAIFDm5ld0xhbmRBc3NldElkBQNuaWwCAV8JAQ5TY3JpcHRUcmFuc2ZlcgMJARFAZXh0ck5hdGl2ZSgxMDYyKQEFBGFkZHIAAQUHYXNzZXRJZAUObmV3TGFuZEFzc2V0SWQBA3MybQMEYWRkcgxsYW5kQXNzZXRJZHMEdHhJZAkBDW1lcmdlSW50ZXJuYWwHAgFNAAMCBFNTU1MFBGFkZHIFDGxhbmRBc3NldElkcwUEdHhJZAAAAQNtMmwFBGFkZHIMbGFuZEFzc2V0SWRzBHR4SWQMc2hvdWxkVXNlTWF0DXBheW1lbnRBbW91bnQEBGNvc3QJAGgCBRVJbmZyYVVwZ3JhZGVDb3N0U1VzZHQABAMDCQEBIQEFDHNob3VsZFVzZU1hdAkBAiE9AgUNcGF5bWVudEFtb3VudAUEY29zdAcJAAIBCQCsAgICG1BheW1lbnQgYXR0YWNoZWQgc2hvdWxkIGJlIAkApAMBBQRjb3N0CQENbWVyZ2VJbnRlcm5hbAcCAUwABAIDU01NBQRhZGRyBQxsYW5kQXNzZXRJZHMFBHR4SWQJAGgCBRFJbmZyYVVwZ3JhZGVDb3N0UwAEAQRsMnhsBQRhZGRyDGxhbmRBc3NldElkcwR0eElkDHNob3VsZFVzZU1hdA1wYXltZW50QW1vdW50BARjb3N0CQBoAgUVSW5mcmFVcGdyYWRlQ29zdFNVc2R0AC8DAwkBASEBBQxzaG91bGRVc2VNYXQJAQIhPQIFDXBheW1lbnRBbW91bnQFBGNvc3QHCQACAQkArAICAhtQYXltZW50IGF0dGFjaGVkIHNob3VsZCBiZSAJAKQDAQUEY29zdAkBDW1lcmdlSW50ZXJuYWwHAgJYTAAFAgVTU1NNTAUEYWRkcgUMbGFuZEFzc2V0SWRzBQR0eElkCQBoAgURSW5mcmFVcGdyYWRlQ29zdFMALwEGeGwyeHhsBQRhZGRyDGxhbmRBc3NldElkcwR0eElkDHNob3VsZFVzZU1hdA1wYXltZW50QW1vdW50BARjb3N0CQBoAgUVSW5mcmFVcGdyYWRlQ29zdFNVc2R0ADYDAwkBASEBBQxzaG91bGRVc2VNYXQJAQIhPQIFDXBheW1lbnRBbW91bnQFBGNvc3QHCQACAQkArAICAhtQYXltZW50IGF0dGFjaGVkIHNob3VsZCBiZSAJAKQDAQUEY29zdAkBDW1lcmdlSW50ZXJuYWwHAgNYWEwABgIDTFhMBQRhZGRyBQxsYW5kQXNzZXRJZHMFBHR4SWQJAGgCBRFJbmZyYVVwZ3JhZGVDb3N0UwA2AQttZXJnZUNvbW1vbgUMc2hvdWxkVXNlTWF0BGFkZHINcGF5bWVudEFtb3VudAxsYW5kQXNzZXRJZHMEdHhJZAQLbWVyZ2VSZXN1bHQEByRtYXRjaDAJAJADAQUMbGFuZEFzc2V0SWRzAwkAAAIABAUHJG1hdGNoMAkBA3MybQMFBGFkZHIFDGxhbmRBc3NldElkcwUEdHhJZAMJAAACAAMFByRtYXRjaDAJAQNtMmwFBQRhZGRyBQxsYW5kQXNzZXRJZHMFBHR4SWQFDHNob3VsZFVzZU1hdAUNcGF5bWVudEFtb3VudAMJAAACAAUFByRtYXRjaDAJAQRsMnhsBQUEYWRkcgUMbGFuZEFzc2V0SWRzBQR0eElkBQxzaG91bGRVc2VNYXQFDXBheW1lbnRBbW91bnQDCQAAAgACBQckbWF0Y2gwCQEGeGwyeHhsBQUEYWRkcgUMbGFuZEFzc2V0SWRzBQR0eElkBQxzaG91bGRVc2VNYXQFDXBheW1lbnRBbW91bnQJAAIBAg1Vbmtub3duIG1lcmdlBQttZXJnZVJlc3VsdAEGcHJvbG9nAQFpAwMJAQIhPQIIBQFpDG9yaWdpbkNhbGxlcgUMcmVzdENvbnRyYWN0CQELdmFsdWVPckVsc2UCCQCgCAEJAQprZXlCbG9ja2VkAAcHCQACAQIfQ29udHJhY3RzIGFyZSB1bmRlciBtYWludGVuYW5jZQkBC1N0cmluZ0VudHJ5AgkBEWtleUxhc3RUeElkQnlVc2VyAQkApQgBCAUBaQxvcmlnaW5DYWxsZXIJANgEAQgFAWkNdHJhbnNhY3Rpb25JZB4BaQENY29uc3RydWN0b3JWMQEIcmVzdEFkZHIDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAhFQZXJtaXNzaW9uIGRlbmllZAkAzAgCCQELU3RyaW5nRW50cnkCCQEOa2V5UmVzdEFkZHJlc3MABQhyZXN0QWRkcgUDbmlsAWkBCnNldEJsb2NrZWQBCWlzQmxvY2tlZAMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECEXBlcm1pc3Npb24gZGVuaWVkCQDMCAIJAQxCb29sZWFuRW50cnkCCQEKa2V5QmxvY2tlZAAFCWlzQmxvY2tlZAUDbmlsAWkBCXN0YWtlTGFuZAAEDHByb2xvZ0FjdGlvbgkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAhxFeGFjdGx5IG9uZSBwYXltZW50IHJlcXVpcmVkBANwbXQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAQHYXNzZXRJZAkBBXZhbHVlAQgFA3BtdAdhc3NldElkBAdhZGRyZXNzCQClCAEIBQFpBmNhbGxlcgMJAQIhPQIIBQNwbXQGYW1vdW50AAEJAAIBCQCsAgIJAKwCAgIETkZUIAUKTEFORFBSRUZJWAIkIHRva2VuIHNob3VsZCBiZSBhdHRhY2hlZCBhcyBwYXltZW50BAVhc3NldAkBBXZhbHVlAQkA7AcBBQdhc3NldElkAwkBAiE9AggFBWFzc2V0Bmlzc3VlcgUEdGhpcwkAAgECF1Vua25vd24gaXNzdWVyIG9mIHRva2VuAwkBASEBCQEIY29udGFpbnMCCAUFYXNzZXQEbmFtZQUKTEFORFBSRUZJWAkAAgEJAKwCAgkArAICAglPbmx5IE5GVCAFCkxBTkRQUkVGSVgCFCB0b2tlbnMgYXJlIGFjY2VwdGVkBAtsYW5kTnVtU2l6ZQkAsAICCAUFYXNzZXQEbmFtZQAEBAdsYW5kTnVtAwkBCGNvbnRhaW5zAgULbGFuZE51bVNpemUCA1hYTAkAswICBQtsYW5kTnVtU2l6ZQADAwkBCGNvbnRhaW5zAgULbGFuZE51bVNpemUCAlhMCQCzAgIFC2xhbmROdW1TaXplAAIJALMCAgULbGFuZE51bVNpemUAAQMJAQEhAQkBCWlzRGVmaW5lZAEJALYJAQUHbGFuZE51bQkAAgEJAKwCAgIeQ2Fubm90IHBhcnNlIGxhbmQgbnVtYmVyIGZyb20gCAUFYXNzZXQEbmFtZQQLbGFuZEFzc2V0SWQJANgEAQUHYXNzZXRJZAQHdGltZUtleQkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAMJAQlpc0RlZmluZWQBCQCfCAEFB3RpbWVLZXkJAAIBCQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCEiBpcyBhbHJlYWR5IHN0YWtlZAQBZAkAtQkCCAUFYXNzZXQLZGVzY3JpcHRpb24CAV8EDXRlcnJhaW5Db3VudHMJAQ1jb3VudFRlcnJhaW5zAQkAkQMCBQFkBQtyZWNUZXJyYWlucwQGcGllY2VzCQEPbnVtUGllY2VzQnlTaXplAQkAkQMCBQFkBQtyZWNMYW5kU2l6ZQQFcHJvcHMJARF1cGRhdGVQcm9wb3J0aW9ucwMFDXRlcnJhaW5Db3VudHMJAGkCBQZwaWVjZXMFBVNTSVpFAAEECWFydFBpZWNlcwkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEga2V5TGFuZEFydFN0YXR1c0J5VHlwZUFuZEFzc2V0SWQCBQpBUlRQUkVTQUxFBQtsYW5kQXNzZXRJZAAABAhsYW5kc0tleQkBFWtleVN0YWtlZExhbmRzQnlPd25lcgEFB2FkZHJlc3MECGxhbmRzU3RyCQCiCAEFCGxhbmRzS2V5BAVsYW5kcwMJAQlpc0RlZmluZWQBBQhsYW5kc1N0cgkAvQkCCQEFdmFsdWUBBQhsYW5kc1N0cgIBXwUDbmlsAwkBD2NvbnRhaW5zRWxlbWVudAIFBWxhbmRzBQtsYW5kQXNzZXRJZAkAAgEJAKwCAgIiWW91ciBzdGFrZWQgbGFuZHMgYWxyZWFkeSBjb250YWluIAULbGFuZEFzc2V0SWQECmluZnJhTGV2ZWwJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBFmtleUluZnJhTGV2ZWxCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAAABAlwaWVjZXNLZXkJARZrZXlTdGFrZWRQaWVjZXNCeU93bmVyAQUHYWRkcmVzcwQJb2xkUGllY2VzCQELdmFsdWVPckVsc2UCCQCfCAEFCXBpZWNlc0tleQAABAl3bGdSZXN1bHQDCQAAAgUJb2xkUGllY2VzAAAJAQVhc0ludAEJAPwHBAULd2xnQ29udHJhY3QCC29uU3Rha2VMYW5kCQDMCAIFB2FkZHJlc3MFA25pbAUDbmlsAP///////////wEJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUHdGltZUtleQgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJASJrZXlTdGFrZWRUaW1lQnlUeXBlQXNzZXRJZEFuZE93bmVyAwUKTEFORFBSRUZJWAULbGFuZEFzc2V0SWQFB2FkZHJlc3MIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQtTdHJpbmdFbnRyeQIFCGxhbmRzS2V5CQC7CQIJAM0IAgUFbGFuZHMFC2xhbmRBc3NldElkAgFfCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQlwaWVjZXNLZXkJAGQCBQlvbGRQaWVjZXMFBnBpZWNlcwkAzAgCCQELU3RyaW5nRW50cnkCCQEVa2V5TGFuZEFzc2V0SWRUb093bmVyAQULbGFuZEFzc2V0SWQFB2FkZHJlc3MJAMwIAgkBC1N0cmluZ0VudHJ5AgkBEWtleUxhbmROdW1Ub093bmVyAQUHbGFuZE51bQUHYWRkcmVzcwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBJWtleUxhbmRBcnRTdGF0dXNCeVR5cGVBc3NldElkQW5kT3duZXIDBQpBUlRQUkVTQUxFBQtsYW5kQXNzZXRJZAUHYWRkcmVzcwUJYXJ0UGllY2VzCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEea2V5SW5mcmFMZXZlbEJ5QXNzZXRJZEFuZE93bmVyAgULbGFuZEFzc2V0SWQFB2FkZHJlc3MFCmluZnJhTGV2ZWwJAMwIAgkBC1N0cmluZ0VudHJ5AgkBEWtleVJlc1Byb3BvcnRpb25zAAUFcHJvcHMJAMwIAgUMcHJvbG9nQWN0aW9uBQNuaWwFCXdsZ1Jlc3VsdAFpAQt1bnN0YWtlTGFuZAENbGFuZEFzc2V0SWRJbgQMcHJvbG9nQWN0aW9uCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBARhZGRyCQClCAEIBQFpBmNhbGxlcgQBYwkBFGNoZWNrQ2xhaW1Db25kaXRpb25zAwUEYWRkcgUNY2xhaW1Nb2RlRHVjawUNbGFuZEFzc2V0SWRJbgQLbGFuZEFzc2V0SWQIBQFjAl8yBAhsYW5kc0tleQkBFWtleVN0YWtlZExhbmRzQnlPd25lcgEFBGFkZHIEDXRlcnJhaW5Db3VudHMJAQ1jb3VudFRlcnJhaW5zAQkAkQMCCAUBYwJfMwULcmVjVGVycmFpbnMEBnBpZWNlcwkBD251bVBpZWNlc0J5U2l6ZQEJAJEDAggFAWMCXzMFC3JlY0xhbmRTaXplBAVwcm9wcwkBEXVwZGF0ZVByb3BvcnRpb25zAwUNdGVycmFpbkNvdW50cwkAaQIFBnBpZWNlcwUFU1NJWkUA////////////AQQLY2xhaW1SZXN1bHQJAQhjbGFpbUFsbAQFBGFkZHIFC2xhbmRBc3NldElkBQZwaWVjZXMFDWNsYWltTW9kZUR1Y2sEBWxhbmRzCQC9CQIJAQt2YWx1ZU9yRWxzZQIJAKIIAQUIbGFuZHNLZXkCAAIBXwQDaWR4CQDPCAIFBWxhbmRzBQtsYW5kQXNzZXRJZAMJAQEhAQkBCWlzRGVmaW5lZAEFA2lkeAkAAgEJAKwCAgIgWW91ciBzdGFrZWQgbGFuZHMgZG9uJ3QgY29udGFpbiAFC2xhbmRBc3NldElkBAF0CAkBBXZhbHVlAQkA7QcBBQZoZWlnaHQJdGltZXN0YW1wBAtyZWxlYXNlVGltZQkBC3ZhbHVlT3JFbHNlAgkAmggCBQtnb3ZDb250cmFjdAkBFWtleVVzZXJHd2xSZWxlYXNlVGltZQEFBGFkZHIAAAMJAGcCBQtyZWxlYXNlVGltZQUBdAkAAgEJAKwCAgI5WW91ciBnV0wgYXJlIHRha2luZyBwYXJ0IGluIHZvdGluZywgY2Fubm90IHVuc3Rha2UgdW50aWwgCQCkAwEFC3JlbGVhc2VUaW1lBAlwaWVjZXNLZXkJARZrZXlTdGFrZWRQaWVjZXNCeU93bmVyAQUEYWRkcgQMc3Rha2VkUGllY2VzCQELdmFsdWVPckVsc2UCCQCfCAEFCXBpZWNlc0tleQAABAluZXdQaWVjZXMDCQBmAgUGcGllY2VzBQxzdGFrZWRQaWVjZXMAAAkAZQIFDHN0YWtlZFBpZWNlcwUGcGllY2VzBAl3bGdSZXN1bHQDCQAAAgUJbmV3UGllY2VzAAAJAQVhc0ludAEJAPwHBAULd2xnQ29udHJhY3QCDW9uVW5zdGFrZUxhbmQJAMwIAgUEYWRkcgUDbmlsBQNuaWwA////////////AQkAlAoCCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgABCQDZBAEFC2xhbmRBc3NldElkCQDMCAIJAQtEZWxldGVFbnRyeQEJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQULbGFuZEFzc2V0SWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBImtleVN0YWtlZFRpbWVCeVR5cGVBc3NldElkQW5kT3duZXIDBQpMQU5EUFJFRklYBQtsYW5kQXNzZXRJZAUEYWRkcgkAzAgCCQELU3RyaW5nRW50cnkCCQERa2V5UmVzUHJvcG9ydGlvbnMABQVwcm9wcwkAzAgCCQELU3RyaW5nRW50cnkCCAULY2xhaW1SZXN1bHQCXzIJALkJAggFC2NsYWltUmVzdWx0Al8zAgE6CQDMCAIDCQBmAgkAkAMBBQVsYW5kcwABCQELU3RyaW5nRW50cnkCBQhsYW5kc0tleQkAuwkCCQDRCAIFBWxhbmRzCQEFdmFsdWUBBQNpZHgCAV8JAQtEZWxldGVFbnRyeQEFCGxhbmRzS2V5CQDMCAIJAQxJbnRlZ2VyRW50cnkCBQlwaWVjZXNLZXkFCW5ld1BpZWNlcwkAzAgCBQxwcm9sb2dBY3Rpb24FA25pbAUJd2xnUmVzdWx0AWkBCXN0YWtlRHVjawAEDHByb2xvZ0FjdGlvbgkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAhxFeGFjdGx5IG9uZSBwYXltZW50IHJlcXVpcmVkBANwbXQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAQHYXNzZXRJZAkBBXZhbHVlAQgFA3BtdAdhc3NldElkBAdhZGRyZXNzCQClCAEIBQFpBmNhbGxlcgMJAQIhPQIIBQNwbXQGYW1vdW50AAEJAAIBCQCsAgIJAKwCAgIETkZUIAUKRFVDS1BSRUZJWAIkIHRva2VuIHNob3VsZCBiZSBhdHRhY2hlZCBhcyBwYXltZW50BAVhc3NldAkBBXZhbHVlAQkA7AcBBQdhc3NldElkAwMJAQIhPQIIBQVhc3NldAZpc3N1ZXIFDWluY3ViYXRvckFkZHIJAQIhPQIIBQVhc3NldAZpc3N1ZXIFC2JyZWVkZXJBZGRyBwkAAgEJAKwCAgkArAICAhJVbmtub3duIGlzc3VlciBvZiAFCkRVQ0tQUkVGSVgCBiB0b2tlbgMJAQEhAQkBCGNvbnRhaW5zAggFBWFzc2V0BG5hbWUFCkRVQ0tQUkVGSVgJAAIBCQCsAgIJAKwCAgIJT25seSBORlQgBQpEVUNLUFJFRklYAhQgdG9rZW5zIGFyZSBhY2NlcHRlZAQKYXNzZXRJZFN0cgkA2AQBBQdhc3NldElkBAd0aW1lS2V5CQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFCmFzc2V0SWRTdHIDCQEJaXNEZWZpbmVkAQkAnwgBBQd0aW1lS2V5CQACAQkArAICCQCsAgICBE5GVCAIBQVhc3NldARuYW1lAhIgaXMgYWxyZWFkeSBzdGFrZWQDCQEJaXNEZWZpbmVkAQkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQdhZGRyZXNzCQACAQkArAICAh1Zb3UgYWxyZWFkeSBzdGFrZWQgb25lIGR1Y2s6IAgFBWFzc2V0BG5hbWUEBmxvY0tleQkBD2tleUR1Y2tMb2NhdGlvbgEFCmFzc2V0SWRTdHIECGxvY2F0aW9uCQCiCAEFBmxvY0tleQQFYnBLZXkJARFrZXlCYWNrcGFja0J5RHVjawEFCmFzc2V0SWRTdHIECGJhY2twYWNrCQCiCAEFBWJwS2V5CQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIFB3RpbWVLZXkIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEia2V5U3Rha2VkVGltZUJ5VHlwZUFzc2V0SWRBbmRPd25lcgMFCkRVQ0tQUkVGSVgJANgEAQUHYXNzZXRJZAUHYWRkcmVzcwgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBC1N0cmluZ0VudHJ5AgkBEGtleUR1Y2tJZFRvT3duZXIBBQphc3NldElkU3RyBQdhZGRyZXNzCQDMCAIJAQtTdHJpbmdFbnRyeQIJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFB2FkZHJlc3MFCmFzc2V0SWRTdHIFA25pbAMJAQlpc0RlZmluZWQBBQhsb2NhdGlvbgUDbmlsCQDOCAIJAMwIAgkBC1N0cmluZ0VudHJ5AgUGbG9jS2V5BQ9ERUZBVUxUTE9DQVRJT04FA25pbAMJAQlpc0RlZmluZWQBBQhiYWNrcGFjawUDbmlsCQDNCAIJAM0IAgkAzAgCCQELU3RyaW5nRW50cnkCBQVicEtleQIaMDowXzBfMF8wXzBfMDowXzBfMF8wXzBfMDoFA25pbAkBDEludGVnZXJFbnRyeQIJAQ1rZXlEdWNrSGVhbHRoAQUKYXNzZXRJZFN0cgBkBQxwcm9sb2dBY3Rpb24BaQELdW5zdGFrZUR1Y2sBCmFzc2V0SWRTdHIEDHByb2xvZ0FjdGlvbgkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQHYXNzZXRJZAkA2QQBBQphc3NldElkU3RyBAdhZGRyZXNzCQClCAEIBQFpBmNhbGxlcgQFYXNzZXQJAQV2YWx1ZQEJAOwHAQUHYXNzZXRJZAQHdGltZUtleQkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBCQDYBAEFB2Fzc2V0SWQDCQEBIQEJAQlpc0RlZmluZWQBCQCfCAEFB3RpbWVLZXkJAAIBCQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCDiBpcyBub3Qgc3Rha2VkAwkBASEBCQEJaXNEZWZpbmVkAQkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQdhZGRyZXNzCQACAQkArAICCQCsAgICCVRoZSBkdWNrIAgFBWFzc2V0BG5hbWUCDiBpcyBub3Qgc3Rha2VkBAVvd25lcgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARBrZXlEdWNrSWRUb093bmVyAQkA2AQBBQdhc3NldElkCQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCDCBpcyBvcnBoYW5lZAMJAQIhPQIFBW93bmVyBQdhZGRyZXNzCQACAQIXU3Rha2VkIE5GVCBpcyBub3QgeW91cnMECWtleUhlYWx0aAkBDWtleUR1Y2tIZWFsdGgBBQphc3NldElkU3RyBAZoZWFsdGgJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJa2V5SGVhbHRoAGQDCQBmAgBkBQZoZWFsdGgJAAIBAiZQbGVhc2UgaGVhbCB5b3VyIGR1Y2sgYmVmb3JlIHVuc3Rha2luZwkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIAAQUHYXNzZXRJZAkAzAgCCQELRGVsZXRlRW50cnkBBQd0aW1lS2V5CQDMCAIJAQtEZWxldGVFbnRyeQEFCWtleUhlYWx0aAkAzAgCCQELRGVsZXRlRW50cnkBCQEPa2V5RHVja0xvY2F0aW9uAQUKYXNzZXRJZFN0cgkAzAgCCQELRGVsZXRlRW50cnkBCQEQa2V5RHVja0lkVG9Pd25lcgEFCmFzc2V0SWRTdHIJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBImtleVN0YWtlZFRpbWVCeVR5cGVBc3NldElkQW5kT3duZXIDBQpEVUNLUFJFRklYBQphc3NldElkU3RyBQdhZGRyZXNzCQDMCAIJAQtEZWxldGVFbnRyeQEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFB2FkZHJlc3MJAMwIAgUMcHJvbG9nQWN0aW9uBQNuaWwBaQEIY2xhaW1SZXMCBmFtb3VudA5sYW5kQXNzZXRJZFN0cgQMcHJvbG9nQWN0aW9uCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBARhZGRyCQClCAEIBQFpDG9yaWdpbkNhbGxlcgQGcmVzdWx0CQEQY2xhaW1SZXNJbnRlcm5hbAQFBGFkZHIFBmFtb3VudAUNY2xhaW1Nb2RlRHVjawUObGFuZEFzc2V0SWRTdHIJAJQKAgkAzQgCCQDNCAIJAM0IAggFBnJlc3VsdAJfMQkBC1N0cmluZ0VudHJ5AggFBnJlc3VsdAJfMgkAuQkCCAUGcmVzdWx0Al8zAgE6CQELU3RyaW5nRW50cnkCCAUGcmVzdWx0Al80CQC5CQIIBQZyZXN1bHQCXzUCAToFDHByb2xvZ0FjdGlvbgkAkQMCCAUGcmVzdWx0Al8zBQhicElkeFJlcwFpAQxjbGFpbVJlc1RvV0gCBmFtb3VudA5sYW5kQXNzZXRJZFN0cgQMcHJvbG9nQWN0aW9uCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBARhZGRyCQClCAEIBQFpDG9yaWdpbkNhbGxlcgQGcmVzdWx0CQEQY2xhaW1SZXNJbnRlcm5hbAQFBGFkZHIFBmFtb3VudAULY2xhaW1Nb2RlV2gFDmxhbmRBc3NldElkU3RyCQCUCgIJAM0IAgkAzQgCCQDNCAIIBQZyZXN1bHQCXzEJAQtTdHJpbmdFbnRyeQIIBQZyZXN1bHQCXzIJALkJAggFBnJlc3VsdAJfMwIBOgkBC1N0cmluZ0VudHJ5AggFBnJlc3VsdAJfNAkAuQkCCAUGcmVzdWx0Al81AgE6BQxwcm9sb2dBY3Rpb24JAJEDAggFBnJlc3VsdAJfNQUId2hJZHhSZXMBaQEGZmxpZ2h0AgdtZXNzYWdlA3NpZwQMcHJvbG9nQWN0aW9uCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBAh1c2VyQWRkcgkApQgBCAUBaQZjYWxsZXIEAWYJAQxmbGlnaHRDb21tb24DBQh1c2VyQWRkcgUHbWVzc2FnZQUDc2lnBAZsb2NLZXkJAQ9rZXlEdWNrTG9jYXRpb24BCAUBZgJfMgQLY3VyTG9jYXRpb24JAQt2YWx1ZU9yRWxzZQIJAKIIAQUGbG9jS2V5BQ9ERUZBVUxUTE9DQVRJT04DCQAAAggFAWYCXzQFC2N1ckxvY2F0aW9uCQACAQIiWW91IGNhbid0IGZseSB0byB0aGUgc2FtZSBsb2NhdGlvbgQFYnBLZXkJARFrZXlCYWNrcGFja0J5RHVjawEIBQFmAl8yBAtjdXJyZW50UGFjawkBC2dldEJhY2twYWNrAQUFYnBLZXkEB25ld1Byb2QJARBzdWJ0cmFjdFByb2R1Y3RzAgkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kCAUBZgJfNQkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQIFBmxvY0tleQMJAGYCCAUBZgJfMQAACAUBZgJfNAULY3VyTG9jYXRpb24JAMwIAgkBC1N0cmluZ0VudHJ5AgUFYnBLZXkJALkJAgkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQpicElkeExldmVsCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4UmVzCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4TWF0CQDMCAIFB25ld1Byb2QFA25pbAIBOgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBDWtleUR1Y2tIZWFsdGgBCAUBZgJfMggFAWYCXzEJAMwIAgUMcHJvbG9nQWN0aW9uBQNuaWwIBQFmAl8zAWkBBGhlYWwDCnF1YW50aXR5TDEKcXVhbnRpdHlMMgpxdWFudGl0eUwzBAxwcm9sb2dBY3Rpb24JAQZwcm9sb2cBBQFpAwMDCQBmAgAABQpxdWFudGl0eUwxBgkAZgIAAAUKcXVhbnRpdHlMMgYJAGYCAAAFCnF1YW50aXR5TDMJAAIBAhtRdWFudGl0eSBjYW5ub3QgYmUgbmVnYXRpdmUEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQkApQgBCAUBaQZjYWxsZXICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQEA3F0cwkAzAgCBQpxdWFudGl0eUwxCQDMCAIFCnF1YW50aXR5TDIJAMwIAgUKcXVhbnRpdHlMMwUDbmlsBAlrZXlIZWFsdGgJAQ1rZXlEdWNrSGVhbHRoAQULZHVja0Fzc2V0SWQECW9sZEhlYWx0aAkBC3ZhbHVlT3JFbHNlAgkAnwgBBQlrZXlIZWFsdGgAZAMJAGcCBQlvbGRIZWFsdGgFBU1BWEhQCQACAQkArAICCQCsAgICD0hQIHNob3VsZCBiZSA8IAkApAMBBQVNQVhIUAIIIHRvIGhlYWwEBWJwS2V5CQERa2V5QmFja3BhY2tCeUR1Y2sBBQtkdWNrQXNzZXRJZAQLY3VycmVudFBhY2sJAQtnZXRCYWNrcGFjawEFBWJwS2V5BAhwcm9kTGlzdAMJAAACCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QCAAUDbmlsCQC1CQIJAJEDAgULY3VycmVudFBhY2sFCWJwSWR4UHJvZAIBXwoBC2l0ZXJhdGVQcm9kAgNhY2MLaWdub3JlZEl0ZW0EAW4IBQNhY2MCXzIEAXgDCQBmAgkAkAMBBQhwcm9kTGlzdAUBbgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCHByb2RMaXN0BQFuAAADCQBmAgADBQFuBAFxCQCRAwIFA3F0cwUBbgMJAGYCBQFxBQF4CQACAQkArAICCQCsAgIJAKwCAgIOWW91IGhhdmUgb25seSAJAKQDAQUBeAIEIG9mIAkAkQMCBQlwcm9kVHlwZXMFAW4JAJUKAwkAzQgCCAUDYWNjAl8xCQCkAwEJAGUCBQF4BQFxCQBkAgUBbgABCQBkAggFA2FjYwJfMwkAaAIJAJEDAgUIbWVkS2l0SHAFAW4FAXEJAJUKAwkAzQgCCAUDYWNjAl8xCQCkAwEFAXgJAGQCBQFuAAEIBQNhY2MCXzMEBnJlc3VsdAoAAiRsBRBwcm9kdWN0aW9uTWF0cml4CgACJHMJAJADAQUCJGwKAAUkYWNjMAkAlQoDBQNuaWwAAAAACgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQtpdGVyYXRlUHJvZAIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgNTAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyBAluZXdIZWFsdGgJAJcDAQkAzAgCBQVNQVhIUAkAzAgCCQBkAgUJb2xkSGVhbHRoCAUGcmVzdWx0Al8zBQNuaWwJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUJa2V5SGVhbHRoBQluZXdIZWFsdGgJAMwIAgkBC1N0cmluZ0VudHJ5AgUFYnBLZXkJALoJAgkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQpicElkeExldmVsCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4UmVzCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4TWF0CQDMCAIJALkJAggFBnJlc3VsdAJfMQIBXwUDbmlsAgE6CQDMCAIFDHByb2xvZ0FjdGlvbgUDbmlsBQluZXdIZWFsdGgBaQEGaGVhbEVTAAQMcHJvbG9nQWN0aW9uCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECHEV4YWN0bHkgb25lIHBheW1lbnQgcmVxdWlyZWQEA3BtdAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAAAwkBAiE9AggFA3BtdAdhc3NldElkBQt1c2R0QXNzZXRJZAkAAgECGkFsbG93ZWQgVVNEVCBwYXltZW50IG9ubHkhBAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEJAKUIAQgFAWkGY2FsbGVyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkBAlrZXlIZWFsdGgJAQ1rZXlEdWNrSGVhbHRoAQULZHVja0Fzc2V0SWQECW9sZEhlYWx0aAkBC3ZhbHVlT3JFbHNlAgkAnwgBBQlrZXlIZWFsdGgAZAMJAGYCBQlvbGRIZWFsdGgAAAkAAgECKEhQIHNob3VsZCBiZSAwIHRvIGNhbGwgRW1lcmdlbmN5IFNlcnZpY2UEBWJwS2V5CQERa2V5QmFja3BhY2tCeUR1Y2sBBQtkdWNrQXNzZXRJZAQLY3VycmVudFBhY2sJAQtnZXRCYWNrcGFjawEFBWJwS2V5BAhwcm9kTGlzdAMJAAACCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QCAAUDbmlsCQC1CQIJAJEDAgULY3VycmVudFBhY2sFCWJwSWR4UHJvZAIBXwQNbWVkS2l0QW1vdW50MQMJAGYCCQCQAwEFCHByb2RMaXN0AAAJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQhwcm9kTGlzdAAAAAAEDW1lZEtpdEFtb3VudDIDCQBmAgkAkAMBBQhwcm9kTGlzdAABCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUIcHJvZExpc3QAAQAABA1tZWRLaXRBbW91bnQzAwkAZgIJAJADAQUIcHJvZExpc3QAAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCHByb2RMaXN0AAIAAAMDAwkAZgIFDW1lZEtpdEFtb3VudDEAAAYJAGYCBQ1tZWRLaXRBbW91bnQyAAAGCQBmAgUNbWVkS2l0QW1vdW50MwAACQACAQIfWW91IGhhdmUgdG8gdXNlIG93biBNZWRpY2FsIEtpdAQIZXhpc3RTdHIJAJ0IAgUPZWNvbm9teUNvbnRyYWN0CQEOa2V5RXNXYXJlaG91c2UABAxleGlzdEFtb3VudHMDCQEJaXNEZWZpbmVkAQUIZXhpc3RTdHIJALUJAgkBBXZhbHVlAQUIZXhpc3RTdHICAV8FA25pbAQLZXhpc3RBbW91bnQDCQBmAgkAkAMBBQxleGlzdEFtb3VudHMAAAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFDGV4aXN0QW1vdW50cwAAAAADCQBnAgAABQtleGlzdEFtb3VudAkAAgECOVRoZXJlIGFyZSBubyBNZWRpY2FsIEtpdHMgTDEgYXQgRW1lcmdlbmN5IFNlcnZpY2Ugc3RvcmFnZQQJbmV3SGVhbHRoCQBkAgUJb2xkSGVhbHRoCQCRAwIFCG1lZEtpdEhwAAAEBW5ld0VTCQC5CQIJAMwIAgkApAMBCQBlAgULZXhpc3RBbW91bnQAAQkA0QgCBQxleGlzdEFtb3VudHMAAAIBXwQGcmVjaXBlCQC1CQIJAJEDAgUQcHJvZHVjdGlvbk1hdHJpeAAAAgFfBAh0b3RhbE1hdAkBEmdldFJlY2lwZU1hdGVyaWFscwEFBnJlY2lwZQQIcGFja1NpemUJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQZyZWNpcGUFEXJlY2lwZUlkeFBhY2tzaXplBAlzZWxsUHJpY2UJAGsDCQBoAgUIdG90YWxNYXQFCkVTU0VMTENPRUYFEFJFU09VUkNFUFJJQ0VNSU4JAGgCAAoFCHBhY2tTaXplAwkBAiE9AggFA3BtdAZhbW91bnQFCXNlbGxQcmljZQkAAgEJAKwCAgIbUGF5bWVudCBhdHRhY2hlZCBzaG91bGQgYmUgCQCkAwEFCXNlbGxQcmljZQQGcmVzdWx0CQEIYXNTdHJpbmcBCQD8BwQFD2Vjb25vbXlDb250cmFjdAIPdXBkYXRlRXNTdG9yYWdlCQDMCAIFBW5ld0VTBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFC3VzZHRBc3NldElkBQlzZWxsUHJpY2UFA25pbAkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQlrZXlIZWFsdGgFCW5ld0hlYWx0aAkAzAgCBQxwcm9sb2dBY3Rpb24FA25pbAUGcmVzdWx0AWkBDnVwZGF0ZUJhY2twYWNrAgtkdWNrQXNzZXRJZAduZXdQYWNrBAxwcm9sb2dBY3Rpb24JAQZwcm9sb2cBBQFpAwkBAiE9AggFAWkGY2FsbGVyBQ9lY29ub215Q29udHJhY3QJAAIBAhFwZXJtaXNzaW9uIGRlbmllZAkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQIJARFrZXlCYWNrcGFja0J5RHVjawEFC2R1Y2tBc3NldElkBQduZXdQYWNrCQDMCAIFDHByb2xvZ0FjdGlvbgUDbmlsBQduZXdQYWNrAWkBCGJ1eVNMYW5kAAQMcHJvbG9nQWN0aW9uCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECHEV4YWN0bHkgb25lIHBheW1lbnQgcmVxdWlyZWQEA3BtdAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAAAwkBAiE9AggFA3BtdAdhc3NldElkBQt1c2R0QXNzZXRJZAkAAgECGkFsbG93ZWQgVVNEVCBwYXltZW50IG9ubHkhAwkBAiE9AggFA3BtdAZhbW91bnQFB0VYUFVTRFQJAAIBCQCsAgICG1BheW1lbnQgYXR0YWNoZWQgc2hvdWxkIGJlIAkApAMBBQdFWFBVU0RUBAZyZXN1bHQJARJleHBlZGl0aW9uSW50ZXJuYWwCCAUBaQZjYWxsZXIIBQFpDXRyYW5zYWN0aW9uSWQJAJQKAgkAzQgCCQDNCAIIBQZyZXN1bHQCXzEJAQ5TY3JpcHRUcmFuc2ZlcgMFD2Vjb25vbXlDb250cmFjdAgFA3BtdAZhbW91bnQFC3VzZHRBc3NldElkBQxwcm9sb2dBY3Rpb24ICAUGcmVzdWx0Al8yAl8xAWkBCmV4cGVkaXRpb24CB21lc3NhZ2UDc2lnBAxwcm9sb2dBY3Rpb24JAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQEBnJlc3VsdAkBEGV4cGVkaXRpb25Db21tb24ECAUBaQZjYWxsZXIIBQFpDXRyYW5zYWN0aW9uSWQFB21lc3NhZ2UFA3NpZwkAlAoCCQDNCAIIBQZyZXN1bHQCXzEFDHByb2xvZ0FjdGlvbgkAlAoCCAUGcmVzdWx0Al8yCAUGcmVzdWx0Al8zAWkBDHVwZ3JhZGVJbmZyYQELbGFuZEFzc2V0SWQEDHByb2xvZ0FjdGlvbgkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQGcmVzdWx0CQENdXBJbmZyYUNvbW1vbgQGCAUBaQZjYWxsZXIAAAULbGFuZEFzc2V0SWQJAJQKAgkAzQgCCAUGcmVzdWx0Al8xBQxwcm9sb2dBY3Rpb24IBQZyZXN1bHQCXzIBaQEQdXBncmFkZUluZnJhVXNkdAELbGFuZEFzc2V0SWQDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAhFQZXJtaXNzaW9uIGRlbmllZAQMcHJvbG9nQWN0aW9uCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECHEV4YWN0bHkgb25lIHBheW1lbnQgcmVxdWlyZWQEA3BtdAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAAAwkBAiE9AggFA3BtdAdhc3NldElkBQt1c2R0QXNzZXRJZAkAAgECGkFsbG93ZWQgVVNEVCBwYXltZW50IG9ubHkhBAZyZXN1bHQJAQ11cEluZnJhQ29tbW9uBAcIBQFpBmNhbGxlcggFA3BtdAZhbW91bnQFC2xhbmRBc3NldElkCQCUCgIJAM0IAgkAzQgCCAUGcmVzdWx0Al8xCQEOU2NyaXB0VHJhbnNmZXIDBQ9lY29ub215Q29udHJhY3QIBQNwbXQGYW1vdW50BQt1c2R0QXNzZXRJZAUMcHJvbG9nQWN0aW9uCAUGcmVzdWx0Al8yAWkBEGFjdGl2YXRlQXJ0aWZhY3QCB2FydE5hbWULbGFuZEFzc2V0SWQEDHByb2xvZ0FjdGlvbgkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQGcmVzdWx0BAckbWF0Y2gwBQdhcnROYW1lAwkAAAICB1BSRVNBTEUFByRtYXRjaDAJARJhY3RpdmF0ZVByZXNhbGVBcnQCCQClCAEIBQFpBmNhbGxlcgULbGFuZEFzc2V0SWQJAAIBAhBVbmtub3duIGFydGlmYWN0CQDNCAIFBnJlc3VsdAUMcHJvbG9nQWN0aW9uAWkBCm1lcmdlTGFuZHMBDGxhbmRBc3NldElkcwQMcHJvbG9nQWN0aW9uCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBAZyZXN1bHQJAQttZXJnZUNvbW1vbgUGCQClCAEIBQFpBmNhbGxlcgAABQxsYW5kQXNzZXRJZHMIBQFpDXRyYW5zYWN0aW9uSWQJAJQKAgkAzQgCCAUGcmVzdWx0Al8xBQxwcm9sb2dBY3Rpb24IBQZyZXN1bHQCXzIBaQEObWVyZ2VMYW5kc1VzZHQBDGxhbmRBc3NldElkcwQMcHJvbG9nQWN0aW9uCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECHEV4YWN0bHkgb25lIHBheW1lbnQgcmVxdWlyZWQEA3BtdAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAAAwkBAiE9AggFA3BtdAdhc3NldElkBQt1c2R0QXNzZXRJZAkAAgECGkFsbG93ZWQgVVNEVCBwYXltZW50IG9ubHkhBAZyZXN1bHQJAQttZXJnZUNvbW1vbgUHCQClCAEIBQFpBmNhbGxlcggFA3BtdAZhbW91bnQFDGxhbmRBc3NldElkcwgFAWkNdHJhbnNhY3Rpb25JZAkAlAoCCQDNCAIJAM0IAggFBnJlc3VsdAJfMQkBDlNjcmlwdFRyYW5zZmVyAwUPZWNvbm9teUNvbnRyYWN0CAUDcG10BmFtb3VudAULdXNkdEFzc2V0SWQFDHByb2xvZ0FjdGlvbggFBnJlc3VsdAJfMgFpAQ1jYXJnb0V4Y2hhbmdlAgxjYXJnb0xpc3RTdHILbGFuZEFzc2V0SWQEDHByb2xvZ0FjdGlvbgkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQKY2FyZ29QYXJ0cwkAvAkCBQxjYXJnb0xpc3RTdHICAToEBGFkZHIJAKUIAQgFAWkMb3JpZ2luQ2FsbGVyBAVhc3NldAkBBXZhbHVlAQkA7AcBCQDZBAEFC2xhbmRBc3NldElkBAd0aW1lS2V5CQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFC2xhbmRBc3NldElkAwkBASEBCQEJaXNEZWZpbmVkAQkAnwgBBQd0aW1lS2V5CQACAQkArAICCAUFYXNzZXQEbmFtZQIOIGlzIG5vdCBzdGFrZWQEBW93bmVyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFWtleUxhbmRBc3NldElkVG9Pd25lcgEFC2xhbmRBc3NldElkCQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCDCBpcyBvcnBoYW5lZAMJAQIhPQIFBW93bmVyBQRhZGRyCQACAQkArAICBQpMQU5EUFJFRklYAg0gaXMgbm90IHlvdXJzBAlsYW5kSW5kZXgJAGkCCQEPbnVtUGllY2VzQnlTaXplAQkAkQMCCQC1CQIIBQVhc3NldAtkZXNjcmlwdGlvbgIBXwULcmVjTGFuZFNpemUFBVNTSVpFBAppbmZyYUxldmVsCQELdmFsdWVPckVsc2UCCQCfCAEJARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQULbGFuZEFzc2V0SWQAAAQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQRhZGRyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkBAtjdXJMb2NhdGlvbgkBC3ZhbHVlT3JFbHNlAgkAoggBCQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQFD0RFRkFVTFRMT0NBVElPTgQDbG9jCQC1CQIJAQV2YWx1ZQEFC2N1ckxvY2F0aW9uAgFfAwkBAiE9AgkAkQMCBQNsb2MFCmxvY0lkeFR5cGUCAUwJAAIBCQCsAgIJAKwCAgIWRHVjayBsb2NhdGlvbiB0eXBlIGlzIAkAkQMCBQNsb2MFCmxvY0lkeFR5cGUCESwgYnV0IHNob3VsZCBiZSBMAwkBAiE9AgkAkQMCBQNsb2MFCGxvY0lkeElkBQtsYW5kQXNzZXRJZAkAAgEJAKwCAgIbRHVjayBzaG91bGQgYmUgb24gdGhlIGxhbmQgBQtsYW5kQXNzZXRJZAQFd2hLZXkJARJrZXlXYXJlaG91c2VCeUxhbmQBBQtsYW5kQXNzZXRJZAQJY3VycmVudFdoCQEMZ2V0V2FyZWhvdXNlAwUFd2hLZXkFCWxhbmRJbmRleAUKaW5mcmFMZXZlbAQFYnBLZXkJARFrZXlCYWNrcGFja0J5RHVjawEFC2R1Y2tBc3NldElkBAtjdXJyZW50UGFjawkBC2dldEJhY2twYWNrAQUFYnBLZXkEBnJlc3VsdAkBCW1vdmVTdHVmZgMFCmNhcmdvUGFydHMFCWN1cnJlbnRXaAULY3VycmVudFBhY2sEBGxvZnQJALUJAgkAkQMCBQljdXJyZW50V2gFCXdoSWR4TE9GVAIBXwQFbG9mdE8JAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEbG9mdAULdm9sT2NjdXBpZWQIBQZyZXN1bHQCXzcEBWxvZnRGCQBlAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFB3ZvbEZyZWUIBQZyZXN1bHQCXzcJAMwIAgkBC1N0cmluZ0VudHJ5AgUFYnBLZXkJALoJAgkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQpicElkeExldmVsCQDMCAIIBQZyZXN1bHQCXzQJAMwIAggFBnJlc3VsdAJfNQkAzAgCCAUGcmVzdWx0Al82BQNuaWwCAToJAMwIAgkBC1N0cmluZ0VudHJ5AgUFd2hLZXkJALoJAgkAzAgCCQCRAwIFCWN1cnJlbnRXaAULd2hJZHhMZXZlbHMJAMwIAggFBnJlc3VsdAJfMQkAzAgCCAUGcmVzdWx0Al8yCQDMCAIIBQZyZXN1bHQCXzMJAMwIAgkAuQkCCQDMCAIJAJEDAgUEbG9mdAUJdm9sTG9ja2VkCQDMCAIJAKQDAQUFbG9mdE8JAMwIAgkApAMBBQVsb2Z0RgkAzAgCCQCRAwIFBGxvZnQFCHZvbFRvdGFsBQNuaWwCAV8FA25pbAIBOgkAzAgCBQxwcm9sb2dBY3Rpb24FA25pbAFpAQ1zYXZlV2FyZWhvdXNlAgV3aFN0cgtsYW5kQXNzZXRJZAQMcHJvbG9nQWN0aW9uCQEGcHJvbG9nAQUBaQMJAQIhPQIIBQFpBmNhbGxlcgUPZWNvbm9teUNvbnRyYWN0CQACAQINQWNjZXNzIGRlbmllZAQFd2hLZXkJARJrZXlXYXJlaG91c2VCeUxhbmQBBQtsYW5kQXNzZXRJZAQCd2gJALwJAgUFd2hTdHICAToDCQECIT0CCQCQAwEFAndoAAUJAAIBAjB3YXJlaG91c2Ugc3RyaW5nIHNob3VsZCBjb250YWluIDQgJzonIHNlcGFyYXRvcnMEBWxvZnRMCQCRAwIJALUJAgkAkQMCBQJ3aAUJd2hJZHhMT0ZUAgFfBQl2b2xMb2NrZWQEBWxvZnRPCQEXZ2V0V2FyZWhvdXNlT2NjdXBpZWRWb2wBBQJ3aAQFbG9mdFQJARdnZXRXYXJlaG91c2VUb3RhbFZvbHVtZQEJAJEDAgUCd2gFC3doSWR4TGV2ZWxzBAVsb2Z0RgkAZQIJAGUCBQVsb2Z0VAkBDXBhcnNlSW50VmFsdWUBBQVsb2Z0TAUFbG9mdE8ECG5ld1doU3RyCQC6CQIJAMwIAgkAkQMCBQJ3aAULd2hJZHhMZXZlbHMJAMwIAgkAkQMCBQJ3aAUId2hJZHhSZXMJAMwIAgkAkQMCBQJ3aAUId2hJZHhNYXQJAMwIAgkAkQMCBQJ3aAUJd2hJZHhQcm9kCQDMCAIJALkJAgkAzAgCBQVsb2Z0TAkAzAgCCQCkAwEFBWxvZnRPCQDMCAIJAKQDAQUFbG9mdEYJAMwIAgkApAMBBQVsb2Z0VAUDbmlsAgFfBQNuaWwCAToJAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCBQV3aEtleQUIbmV3V2hTdHIJAMwIAgUMcHJvbG9nQWN0aW9uBQNuaWwFCG5ld1doU3RyAWkBEmZpeFdhcmVob3VzZUZvcm1hdAELbGFuZEFzc2V0SWQDCQECIT0CCAUBaQZjYWxsZXIFDHJlc3RDb250cmFjdAkAAgECDUFjY2VzcyBkZW5pZWQEBXdoS2V5CQESa2V5V2FyZWhvdXNlQnlMYW5kAQULbGFuZEFzc2V0SWQEBWFzc2V0CQEFdmFsdWUBCQDsBwEJANkEAQULbGFuZEFzc2V0SWQECWxhbmRJbmRleAkAaQIJAQ9udW1QaWVjZXNCeVNpemUBCQCRAwIJALUJAggFBWFzc2V0C2Rlc2NyaXB0aW9uAgFfBQtyZWNMYW5kU2l6ZQUFU1NJWkUECmluZnJhTGV2ZWwJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBFmtleUluZnJhTGV2ZWxCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAAABAJ3aAkBDGdldFdhcmVob3VzZQMFBXdoS2V5BQlsYW5kSW5kZXgFCmluZnJhTGV2ZWwEBWxvZnRMCQEFYXNJbnQBCQD8BwQFD2Vjb25vbXlDb250cmFjdAIacmVjYWxjTG9ja2VkVm9sdW1lUkVBRE9OTFkJAMwIAgULbGFuZEFzc2V0SWQJAMwIAgUCd2gFA25pbAUDbmlsBAVsb2Z0TwkBF2dldFdhcmVob3VzZU9jY3VwaWVkVm9sAQUCd2gEBWxvZnRUCQEXZ2V0V2FyZWhvdXNlVG90YWxWb2x1bWUBCQCRAwIFAndoBQt3aElkeExldmVscwQFbG9mdEYJAGUCCQBlAgUFbG9mdFQFBWxvZnRMBQVsb2Z0TwQIbmV3V2hTdHIJALoJAgkAzAgCCQCRAwIFAndoBQt3aElkeExldmVscwkAzAgCCQCRAwIFAndoBQh3aElkeFJlcwkAzAgCCQCRAwIFAndoBQh3aElkeE1hdAkAzAgCCQCRAwIFAndoBQl3aElkeFByb2QJAMwIAgkAuQkCCQDMCAIJAKQDAQUFbG9mdEwJAMwIAgkApAMBBQVsb2Z0TwkAzAgCCQCkAwEFBWxvZnRGCQDMCAIJAKQDAQUFbG9mdFQFA25pbAIBXwUDbmlsAgE6CQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgUFd2hLZXkFCG5ld1doU3RyBQNuaWwFCG5ld1doU3RyAWkBD2ZpeFN0YWtlZFBpZWNlcwEHYWRkcmVzcwMJAQIhPQIIBQFpBmNhbGxlcgUMcmVzdENvbnRyYWN0CQACAQINQWNjZXNzIGRlbmllZAQMc3Rha2VkUGllY2VzAwkAAAIFB2FkZHJlc3MCAAAABAhsYW5kc1N0cgkAnQgCBQ9zdGFraW5nQ29udHJhY3QJARVrZXlTdGFrZWRMYW5kc0J5T3duZXIBBQdhZGRyZXNzBAVsYW5kcwMJAQlpc0RlZmluZWQBBQhsYW5kc1N0cgkAvQkCCQEFdmFsdWUBBQhsYW5kc1N0cgIBXwUDbmlsCgEHb25lTGFuZAIDYWNjC2xhbmRBc3NldElkBAVhc3NldAkBBXZhbHVlAQkA7AcBCQDZBAEFC2xhbmRB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TmFtZQICX18JAAIBCQCsAgICHk5hbWUgc2hvdWxkIG5vdCBjb250YWluICdfXyc6IAUKY3VzdG9tTmFtZQMJAGYCCQCxAgEFCmN1c3RvbU5hbWUFCk1BWE5BTUVMRU4JAAIBCQCsAgICGU5hbWUgdG9vIGxvbmcsIG1heExlbmd0aD0JAKQDAQUKTUFYTkFNRUxFTgQEYWRkcgkApQgBCAUBaQxvcmlnaW5DYWxsZXIEB2FjdGlvbnMEByRtYXRjaDAFBHR5cGUDCQAAAgIHQUNDT1VOVAUHJG1hdGNoMAQKcmV2ZXJzZUtleQkBFmtleUN1c3RvbU5hbWVUb0FkZHJlc3MBBQpjdXN0b21OYW1lBAluYW1lT3duZXIJAKIIAQUKcmV2ZXJzZUtleQMJAQlpc0RlZmluZWQBBQluYW1lT3duZXIJAAIBCQCsAgICGU5hbWUgYWxyZWFkeSByZWdpc3RlcmVkOiAFCmN1c3RvbU5hbWUEDWFkZHJUb05hbWVLZXkJARZrZXlBZGRyZXNzVG9DdXN0b21OYW1lAQUEYWRkcgQHb2xkTmFtZQkAoggBBQ1hZGRyVG9OYW1lS2V5BAdmcmVlT2xkAwkBCWlzRGVmaW5lZAEFB29sZE5hbWUJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBFmtleUN1c3RvbU5hbWVUb0FkZHJlc3MBCQEFdmFsdWUBBQdvbGROYW1lBQNuaWwFA25pbAkAzQgCCQDNCAIFB2ZyZWVPbGQJAQtTdHJpbmdFbnRyeQIFDWFkZHJUb05hbWVLZXkFCmN1c3RvbU5hbWUJAQtTdHJpbmdFbnRyeQIFCnJldmVyc2VLZXkFBGFkZHIDCQAAAgIETEFORAUHJG1hdGNoMAQFYXNzZXQJAQV2YWx1ZQEJAOwHAQkA2QQBBQdhc3NldElkBAd0aW1lS2V5CQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFB2Fzc2V0SWQDCQEBIQEJAQlpc0RlZmluZWQBCQCfCAEFB3RpbWVLZXkJAAIBCQCsAgIIBQVhc3NldARuYW1lAg4gaXMgbm90IHN0YWtlZAQFb3duZXIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEVa2V5TGFuZEFzc2V0SWRUb093bmVyAQUHYXNzZXRJZAkArAICCQCsAgICBE5GVCAIBQVhc3NldARuYW1lAgwgaXMgb3JwaGFuZWQDCQECIT0CBQVvd25lcgUEYWRkcgkAAgEJAKwCAgUKTEFORFBSRUZJWAINIGlzIG5vdCB5b3VycwQKcmV2ZXJzZUtleQkBGmtleUxhbmRDdXN0b21OYW1lVG9Bc3NldElkAQUKY3VzdG9tTmFtZQQJbmFtZU93bmVyCQCiCAEFCnJldmVyc2VLZXkDCQEJaXNEZWZpbmVkAQUJbmFtZU93bmVyCQACAQkArAICAhlOYW1lIGFscmVhZHkgcmVnaXN0ZXJlZDogBQpjdXN0b21OYW1lBA5hc3NldFRvTmFtZUtleQkBGmtleUxhbmRBc3NldElkVG9DdXN0b21OYW1lAQUHYXNzZXRJZAQHb2xkTmFtZQkAoggBBQ5hc3NldFRvTmFtZUtleQQHZnJlZU9sZAMJAQlpc0RlZmluZWQBBQdvbGROYW1lCQDMCAIJAQtEZWxldGVFbnRyeQEJARprZXlMYW5kQ3VzdG9tTmFtZVRvQXNzZXRJZAEJAQV2YWx1ZQEFB29sZE5hbWUFA25pbAUDbmlsCQDNCAIJAM0IAgUHZnJlZU9sZAkBC1N0cmluZ0VudHJ5AgUOYXNzZXRUb05hbWVLZXkFCmN1c3RvbU5hbWUJAQtTdHJpbmdFbnRyeQIFCnJldmVyc2VLZXkFB2Fzc2V0SWQDCQAAAgIERFVDSwUHJG1hdGNoMAQFYXNzZXQJAQV2YWx1ZQEJAOwHAQkA2QQBBQdhc3NldElkBAd0aW1lS2V5CQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFB2Fzc2V0SWQDAwkBASEBCQEJaXNEZWZpbmVkAQkAnwgBBQd0aW1lS2V5BgkBASEBCQEJaXNEZWZpbmVkAQkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQRhZGRyCQACAQkArAICCAUFYXNzZXQEbmFtZQIOIGlzIG5vdCBzdGFrZWQEBW93bmVyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBEGtleUR1Y2tJZFRvT3duZXIBBQdhc3NldElkCQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCDCBpcyBvcnBoYW5lZAMJAQIhPQIFBW93bmVyBQRhZGRyCQACAQkArAICBQpEVUNLUFJFRklYAg0gaXMgbm90IHlvdXJzBApyZXZlcnNlS2V5CQEaa2V5RHVja0N1c3RvbU5hbWVUb0Fzc2V0SWQBBQpjdXN0b21OYW1lBAluYW1lT3duZXIJAKIIAQUKcmV2ZXJzZUtleQMJAQlpc0RlZmluZWQBBQluYW1lT3duZXIJAAIBCQCsAgICGU5hbWUgYWxyZWFkeSByZWdpc3RlcmVkOiAFCmN1c3RvbU5hbWUEDmFzc2V0VG9OYW1lS2V5CQEaa2V5RHVja0Fzc2V0SWRUb0N1c3RvbU5hbWUBBQdhc3NldElkBAdvbGROYW1lCQCiCAEFDmFzc2V0VG9OYW1lS2V5BAdmcmVlT2xkAwkBCWlzRGVmaW5lZAEFB29sZE5hbWUJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBGmtleUR1Y2tDdXN0b21OYW1lVG9Bc3NldElkAQkBBXZhbHVlAQUHb2xkTmFtZQUDbmlsBQNuaWwJAM0IAgkAzQgCBQdmcmVlT2xkCQELU3RyaW5nRW50cnkCBQ5hc3NldFRvTmFtZUtleQUKY3VzdG9tTmFtZQkBC1N0cmluZ0VudHJ5AgUKcmV2ZXJzZUtleQUHYXNzZXRJZAkAAgECE1Vua25vd24gZW50aXR5IHR5cGUJAJQKAgkAzQgCCQDNCAIFB2FjdGlvbnMJAQ5TY3JpcHRUcmFuc2ZlcgMFD2Vjb25vbXlDb250cmFjdAgFA3BtdAZhbW91bnQFC3VzZHRBc3NldElkBQxwcm9sb2dBY3Rpb24AAAFpAQxzZXRSZWZlcnJhbHMCCW9sZFBsYXllcgluZXdQbGF5ZXIDCQECIT0CCAUBaQ9jYWxsZXJQdWJsaWNLZXkFA3B1YgkAAgECEVBlcm1pc3Npb24gZGVuaWVkBAxwcm9sb2dBY3Rpb24JAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQDCQEBIQEJAQlpc0RlZmluZWQBCQCmCAEFCW9sZFBsYXllcgkAAgEJAKwCAgIRSW52YWxpZCBhZGRyZXNzOiAFCW9sZFBsYXllcgMJAQEhAQkBCWlzRGVmaW5lZAEJAKYIAQUJbmV3UGxheWVyCQACAQkArAICAhFJbnZhbGlkIGFkZHJlc3M6IAUJbmV3UGxheWVyBAdvbGRzS2V5CQEJa2V5T2xkaWVzAAQEb2xkcwkAoggBBQdvbGRzS2V5BAZvbGRpZXMDCQEJaXNEZWZpbmVkAQUEb2xkcwkAvAkCCQEFdmFsdWUBBQRvbGRzAgFfBQNuaWwDCQEPY29udGFpbnNFbGVtZW50AgUGb2xkaWVzBQluZXdQbGF5ZXIJAAIBCQCsAgIFCW5ld1BsYXllcgImIGlzIG5vdCBuZXdiaWUgKGFscmVhZHkgaGFzIHJlZmVycmFscykECHJlZkJ5S2V5CQEPa2V5QWRkcmVzc1JlZkJ5AQUJbmV3UGxheWVyBAVyZWZCeQkAoggBBQhyZWZCeUtleQMDCQEJaXNEZWZpbmVkAQUFcmVmQnkJAQlpc0RlZmluZWQBCQCmCAEJAQV2YWx1ZQEFBXJlZkJ5BwkAAgEJAKwCAgkArAICBQluZXdQbGF5ZXICFCBhbHJlYWR5IGhhcyByZWZCeTogCQEFdmFsdWUBBQVyZWZCeQQHcmVmc0tleQkBE2tleUFkZHJlc3NSZWZlcnJhbHMBBQlvbGRQbGF5ZXIEBHJlZnMJAKIIAQUHcmVmc0tleQQJcmVmc0FycmF5AwkBCWlzRGVmaW5lZAEFBHJlZnMJALwJAgkBBXZhbHVlAQUEcmVmcwIBXwUDbmlsAwkBD2NvbnRhaW5zRWxlbWVudAIFCXJlZnNBcnJheQUJbmV3UGxheWVyCQACAQkArAICCQCsAgIJAKwCAgUJb2xkUGxheWVyAhIgYWxyZWFkeSBjb250YWlucyAFCW5ld1BsYXllcgIRIHdpdGhpbiByZWZlcnJhbHMEB25ld1JlZnMJALoJAgkAzQgCBQlyZWZzQXJyYXkFCW5ld1BsYXllcgIBXwQHbmV3T2xkcwMJAQ9jb250YWluc0VsZW1lbnQCBQZvbGRpZXMFCW9sZFBsYXllcgkBBXZhbHVlAQUEb2xkcwkAugkCCQDNCAIFBm9sZGllcwUJb2xkUGxheWVyAgFfCQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgUIcmVmQnlLZXkFCW9sZFBsYXllcgkAzAgCCQELU3RyaW5nRW50cnkCBQdyZWZzS2V5BQduZXdSZWZzCQDMCAIJAQtTdHJpbmdFbnRyeQIFB29sZHNLZXkFB25ld09sZHMJAMwIAgUMcHJvbG9nQWN0aW9uBQNuaWwAAAFpARxzcGxpdEJ5R2xvYmFsV2VpZ2h0c1JFQURPTkxZAQZhbW91bnQJAJQKAgUDbmlsCQESZ2V0TmVlZGVkTWF0ZXJpYWxzAQUGYW1vdW50AWkBJHNwbGl0QnlHbG9iYWxBbmRMb2NhbFdlaWdodHNSRUFET05MWQMJbWF0QW1vdW50CXJlc0Ftb3VudAh0ZXJyYWlucwQNdGVycmFpbkNvdW50cwkBDWNvdW50VGVycmFpbnMBBQh0ZXJyYWlucwkAlAoCBQNuaWwJAJQKAgkBEmdldE5lZWRlZE1hdGVyaWFscwEFCW1hdEFtb3VudAkBE2Rpc3RyaWJ1dGVCeVdlaWdodHMCBQlyZXNBbW91bnQFDXRlcnJhaW5Db3VudHMBaQETZ2V0QmFja3BhY2tSRUFET05MWQELZHVja0Fzc2V0SWQJAJQKAgUDbmlsCQC5CQIJAQtnZXRCYWNrcGFjawEJARFrZXlCYWNrcGFja0J5RHVjawEFC2R1Y2tBc3NldElkAgE6AWkBFGdldFdhcmVob3VzZVJFQURPTkxZAQtsYW5kQXNzZXRJZAQFYXNzZXQJAQV2YWx1ZQEJAOwHAQkA2QQBBQtsYW5kQXNzZXRJZAQJbGFuZEluZGV4CQBpAgkBD251bVBpZWNlc0J5U2l6ZQEJAJEDAgkAtQkCCAUFYXNzZXQLZGVzY3JpcHRpb24CAV8FC3JlY0xhbmRTaXplBQVTU0laRQQKaW5mcmFMZXZlbAkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEWa2V5SW5mcmFMZXZlbEJ5QXNzZXRJZAEFC2xhbmRBc3NldElkAAAJAJQKAgUDbmlsCQC6CQIJAQxnZXRXYXJlaG91c2UDCQESa2V5V2FyZWhvdXNlQnlMYW5kAQULbGFuZEFzc2V0SWQFCWxhbmRJbmRleAUKaW5mcmFMZXZlbAIBOgFpAQpzYXZlTGFzdFR4AAMJAQIhPQIIBQFpBmNhbGxlcgULd2xnQ29udHJhY3QJAAIBAg1BY2Nlc3MgZGVuaWVkCQCUCgIJAMwIAgkBBnByb2xvZwEFAWkFA25pbAAqAMwg+sQ=", "height": 2632347, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: Yn7jTiNBWNi5G94z6SCngKNKXUP3d8VDT8A3VAf1UXs Next: 5BeNQiorLDbL2pTybbEdae74L8EtwFmKQ6QpnJMvrM4A Diff:
OldNewDifferences
15211521 then throw(("Your staked lands already contain " + aW))
15221522 else {
15231523 let eC = valueOrElse(getInteger(aP(aW)), 0)
1524-[IntegerEntry(gd, lastBlock.timestamp), IntegerEntry(aS(k, aW, ap), lastBlock.timestamp), StringEntry(gX, makeString_11C((bU :+ aW), "_")), IntegerEntry(aY(ap), (valueOrElse(getInteger(aY(ap)), 0) + fS)), StringEntry(aL(aW), ap), StringEntry(cC(cx), ap), IntegerEntry(cB(m, aW, ap), fT), IntegerEntry(cA(aW, ap), eC), StringEntry(bj(), bG), hm]
1524+ let hb = aY(ap)
1525+ let hp = valueOrElse(getInteger(hb), 0)
1526+ let hq = if ((hp == 0))
1527+ then bv(invoke(aI, "onStakeLand", [ap], nil))
1528+ else -1
1529+ $Tuple2([IntegerEntry(gd, lastBlock.timestamp), IntegerEntry(aS(k, aW, ap), lastBlock.timestamp), StringEntry(gX, makeString_11C((bU :+ aW), "_")), IntegerEntry(hb, (hp + fS)), StringEntry(aL(aW), ap), StringEntry(cC(cx), ap), IntegerEntry(cB(m, aW, ap), fT), IntegerEntry(cA(aW, ap), eC), StringEntry(bj(), bG), hm], hq)
15251530 }
15261531 }
15271532 }
15521557 then throw(("Your staked lands don't contain " + aW))
15531558 else {
15541559 let eh = value(blockInfoByHeight(height)).timestamp
1555- let hp = valueOrElse(getInteger(aH, bl(aK)), 0)
1556- if ((hp >= eh))
1557- then throw(("Your gWL are taking part in voting, cannot unstake until " + toString(hp)))
1560+ let hr = valueOrElse(getInteger(aH, bl(aK)), 0)
1561+ if ((hr >= eh))
1562+ then throw(("Your gWL are taking part in voting, cannot unstake until " + toString(hr)))
15581563 else {
15591564 let hb = aY(aK)
15601565 let hc = valueOrElse(getInteger(hb), 0)
1561-[ScriptTransfer(dB.caller, 1, fromBase58String(aW)), DeleteEntry(aO(aW)), DeleteEntry(aS(k, aW, aK)), StringEntry(bj(), bG), StringEntry(gB._2, makeString(gB._3, ":")), if ((size(bU) > 1))
1566+ let hs = if ((fS > hc))
1567+ then 0
1568+ else (hc - fS)
1569+ let hq = if ((hs == 0))
1570+ then bv(invoke(aI, "onUnstakeLand", [aK], nil))
1571+ else -1
1572+ $Tuple2([ScriptTransfer(dB.caller, 1, fromBase58String(aW)), DeleteEntry(aO(aW)), DeleteEntry(aS(k, aW, aK)), StringEntry(bj(), bG), StringEntry(gB._2, makeString(gB._3, ":")), if ((size(bU) > 1))
15621573 then StringEntry(gX, makeString_11C(removeByIndex(bU, value(aD)), "_"))
1563- else DeleteEntry(gX), IntegerEntry(hb, if ((fS > hc))
1564- then 0
1565- else (hc - fS)), hm]
1574+ else DeleteEntry(gX), IntegerEntry(hb, hs), hm], hq)
15661575 }
15671576 }
15681577 }
15901599 else if (!(contains(bW.name, l)))
15911600 then throw((("Only NFT " + l) + " tokens are accepted"))
15921601 else {
1593- let hq = toBase58String(aM)
1594- let gd = aO(hq)
1602+ let ht = toBase58String(aM)
1603+ let gd = aO(ht)
15951604 if (isDefined(getInteger(gd)))
15961605 then throw((("NFT " + bW.name) + " is already staked"))
15971606 else if (isDefined(getString(be(ap))))
15981607 then throw(("You already staked one duck: " + bW.name))
15991608 else {
1600- let hr = bh(hq)
1601- let hs = getString(hr)
1602- let ej = bf(hq)
1603- let ht = getString(ej)
1604- ([IntegerEntry(gd, lastBlock.timestamp), IntegerEntry(aS(l, toBase58String(aM), ap), lastBlock.timestamp), StringEntry(bd(hq), ap), StringEntry(be(ap), hq)] ++ (if (isDefined(hs))
1609+ let hu = bh(ht)
1610+ let hv = getString(hu)
1611+ let ej = bf(ht)
1612+ let hw = getString(ej)
1613+ ([IntegerEntry(gd, lastBlock.timestamp), IntegerEntry(aS(l, toBase58String(aM), ap), lastBlock.timestamp), StringEntry(bd(ht), ap), StringEntry(be(ap), ht)] ++ (if (isDefined(hv))
16051614 then nil
1606- else ([StringEntry(hr, w)] ++ (if (isDefined(ht))
1615+ else ([StringEntry(hu, w)] ++ (if (isDefined(hw))
16071616 then nil
1608- else (([StringEntry(ej, "0:0_0_0_0_0_0:0_0_0_0_0_0:")] :+ IntegerEntry(bi(hq), 100)) :+ hm)))))
1617+ else (([StringEntry(ej, "0:0_0_0_0_0_0:0_0_0_0_0_0:")] :+ IntegerEntry(bi(ht), 100)) :+ hm)))))
16091618 }
16101619 }
16111620 }
16151624
16161625
16171626 @Callable(dB)
1618-func unstakeDuck (hq) = {
1627+func unstakeDuck (ht) = {
16191628 let hm = hj(dB)
16201629 if ((size(dB.payments) != 0))
16211630 then throw("No payments required")
16221631 else {
1623- let aM = fromBase58String(hq)
1632+ let aM = fromBase58String(ht)
16241633 let ap = toString(dB.caller)
16251634 let bW = value(assetInfo(aM))
16261635 let gd = aO(toBase58String(aM))
16331642 if ((gf != ap))
16341643 then throw("Staked NFT is not yours")
16351644 else {
1636- let fI = bi(hq)
1637- let hu = valueOrElse(getInteger(fI), 100)
1638- if ((100 > hu))
1645+ let fI = bi(ht)
1646+ let hx = valueOrElse(getInteger(fI), 100)
1647+ if ((100 > hx))
16391648 then throw("Please heal your duck before unstaking")
1640- else [ScriptTransfer(dB.caller, 1, aM), DeleteEntry(gd), DeleteEntry(fI), DeleteEntry(bh(hq)), DeleteEntry(bd(hq)), DeleteEntry(aS(l, hq, ap)), DeleteEntry(be(ap)), hm]
1649+ else [ScriptTransfer(dB.caller, 1, aM), DeleteEntry(gd), DeleteEntry(fI), DeleteEntry(bh(ht)), DeleteEntry(bd(ht)), DeleteEntry(aS(l, ht, ap)), DeleteEntry(be(ap)), hm]
16411650 }
16421651 }
16431652 }
16461655
16471656
16481657 @Callable(dB)
1649-func claimRes (eP,hv) = {
1658+func claimRes (eP,hy) = {
16501659 let hm = hj(dB)
16511660 if ((size(dB.payments) != 0))
16521661 then throw("No payments required")
16531662 else {
16541663 let aK = toString(dB.originCaller)
1655- let dh = gh(aK, eP, cH, hv)
1664+ let dh = gh(aK, eP, cH, hy)
16561665 $Tuple2((((dh._1 :+ StringEntry(dh._2, makeString(dh._3, ":"))) :+ StringEntry(dh._4, makeString(dh._5, ":"))) :+ hm), dh._3[aj])
16571666 }
16581667 }
16601669
16611670
16621671 @Callable(dB)
1663-func claimResToWH (eP,hv) = {
1672+func claimResToWH (eP,hy) = {
16641673 let hm = hj(dB)
16651674 if ((size(dB.payments) != 0))
16661675 then throw("No payments required")
16671676 else {
16681677 let aK = toString(dB.originCaller)
1669- let dh = gh(aK, eP, cG, hv)
1678+ let dh = gh(aK, eP, cG, hy)
16701679 $Tuple2((((dh._1 :+ StringEntry(dh._2, makeString(dh._3, ":"))) :+ StringEntry(dh._4, makeString(dh._5, ":"))) :+ hm), dh._5[aa])
16711680 }
16721681 }
16811690 else {
16821691 let bm = toString(dB.caller)
16831692 let ef = fw(bm, fx, fy)
1684- let hr = bh(ef._2)
1685- let ga = valueOrElse(getString(hr), w)
1693+ let hu = bh(ef._2)
1694+ let ga = valueOrElse(getString(hu), w)
16861695 if ((ef._4 == ga))
16871696 then throw("You can't fly to the same location")
16881697 else {
16891698 let ej = bf(ef._2)
16901699 let eS = ei(ej)
16911700 let du = di(eS[al], ef._5)
1692- $Tuple2([StringEntry(hr, if ((ef._1 > 0))
1701+ $Tuple2([StringEntry(hu, if ((ef._1 > 0))
16931702 then ef._4
16941703 else ga), StringEntry(ej, makeString([eS[ai], eS[aj], eS[ak], du], ":")), IntegerEntry(bi(ef._2), ef._1), hm], ef._3)
16951704 }
16991708
17001709
17011710 @Callable(dB)
1702-func heal (hw,hx,hy) = {
1711+func heal (hz,hA,hB) = {
17031712 let hm = hj(dB)
1704- if (if (if ((0 > hw))
1713+ if (if (if ((0 > hz))
17051714 then true
1706- else (0 > hx))
1715+ else (0 > hA))
17071716 then true
1708- else (0 > hy))
1717+ else (0 > hB))
17091718 then throw("Quantity cannot be negative")
17101719 else {
17111720 let bg = valueOrErrorMessage(getString(be(toString(dB.caller))), "You don't have a duck staked")
1712- let hz = [hw, hx, hy]
1721+ let hC = [hz, hA, hB]
17131722 let fI = bi(bg)
1714- let hA = valueOrElse(getInteger(fI), 100)
1715- if ((hA >= B))
1723+ let hD = valueOrElse(getInteger(fI), 100)
1724+ if ((hD >= B))
17161725 then throw((("HP should be < " + toString(B)) + " to heal"))
17171726 else {
17181727 let ej = bf(bg)
17191728 let eS = ei(ej)
1720- let hB = if ((eS[al] == ""))
1729+ let hE = if ((eS[al] == ""))
17211730 then nil
17221731 else split(eS[al], "_")
1723- func hC (bI,hD) = {
1732+ func hF (bI,hG) = {
17241733 let bw = bI._2
1725- let dW = if ((size(hB) > bw))
1726- then parseIntValue(hB[bw])
1734+ let dW = if ((size(hE) > bw))
1735+ then parseIntValue(hE[bw])
17271736 else 0
17281737 if ((3 > bw))
17291738 then {
1730- let hE = hz[bw]
1731- if ((hE > dW))
1739+ let hH = hC[bw]
1740+ if ((hH > dW))
17321741 then throw(((("You have only " + toString(dW)) + " of ") + E[bw]))
1733- else $Tuple3((bI._1 :+ toString((dW - hE))), (bw + 1), (bI._3 + (ch[bw] * hE)))
1742+ else $Tuple3((bI._1 :+ toString((dW - hH))), (bw + 1), (bI._3 + (ch[bw] * hH)))
17341743 }
17351744 else $Tuple3((bI._1 :+ toString(dW)), (bw + 1), bI._3)
17361745 }
17411750 let bN = $Tuple3(nil, 0, 0)
17421751 func bO (bP,bQ) = if ((bQ >= bM))
17431752 then bP
1744- else hC(bP, bL[bQ])
1753+ else hF(bP, bL[bQ])
17451754
17461755 func bR (bP,bQ) = if ((bQ >= bM))
17471756 then bP
17491758
17501759 bR(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bN, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50)
17511760 }
1752- let hF = min([B, (hA + dh._3)])
1753- $Tuple2([IntegerEntry(fI, hF), StringEntry(ej, makeString_2C([eS[ai], eS[aj], eS[ak], makeString(dh._1, "_")], ":")), hm], hF)
1761+ let hI = min([B, (hD + dh._3)])
1762+ $Tuple2([IntegerEntry(fI, hI), StringEntry(ej, makeString_2C([eS[ai], eS[aj], eS[ak], makeString(dh._1, "_")], ":")), hm], hI)
17541763 }
17551764 }
17561765 }
17691778 else {
17701779 let bg = valueOrErrorMessage(getString(be(toString(dB.caller))), "You don't have a duck staked")
17711780 let fI = bi(bg)
1772- let hA = valueOrElse(getInteger(fI), 100)
1773- if ((hA > 0))
1781+ let hD = valueOrElse(getInteger(fI), 100)
1782+ if ((hD > 0))
17741783 then throw("HP should be 0 to call Emergency Service")
17751784 else {
17761785 let ej = bf(bg)
17771786 let eS = ei(ej)
1778- let hB = if ((eS[al] == ""))
1787+ let hE = if ((eS[al] == ""))
17791788 then nil
17801789 else split(eS[al], "_")
1781- let hG = if ((size(hB) > 0))
1782- then parseIntValue(hB[0])
1790+ let hJ = if ((size(hE) > 0))
1791+ then parseIntValue(hE[0])
17831792 else 0
1784- let hH = if ((size(hB) > 1))
1785- then parseIntValue(hB[1])
1793+ let hK = if ((size(hE) > 1))
1794+ then parseIntValue(hE[1])
17861795 else 0
1787- let hI = if ((size(hB) > 2))
1788- then parseIntValue(hB[2])
1796+ let hL = if ((size(hE) > 2))
1797+ then parseIntValue(hE[2])
17891798 else 0
1790- if (if (if ((hG > 0))
1799+ if (if (if ((hJ > 0))
17911800 then true
1792- else (hH > 0))
1801+ else (hK > 0))
17931802 then true
1794- else (hI > 0))
1803+ else (hL > 0))
17951804 then throw("You have to use own Medical Kit")
17961805 else {
1797- let hJ = getString(aG, bo())
1798- let hK = if (isDefined(hJ))
1799- then split(value(hJ), "_")
1806+ let hM = getString(aG, bo())
1807+ let hN = if (isDefined(hM))
1808+ then split(value(hM), "_")
18001809 else nil
1801- let hL = if ((size(hK) > 0))
1802- then parseIntValue(hK[0])
1810+ let hO = if ((size(hN) > 0))
1811+ then parseIntValue(hN[0])
18031812 else 0
1804- if ((0 >= hL))
1813+ if ((0 >= hO))
18051814 then throw("There are no Medical Kits L1 at Emergency Service storage")
18061815 else {
1807- let hF = (hA + ch[0])
1808- let hM = makeString([toString((hL - 1)), removeByIndex(hK, 0)], "_")
1816+ let hI = (hD + ch[0])
1817+ let hP = makeString([toString((hO - 1)), removeByIndex(hN, 0)], "_")
18091818 let ca = split(G[0], "_")
1810- let hN = bZ(ca)
1811- let hO = parseIntValue(ca[T])
1812- let hP = fraction((hN * A), x, (10 * hO))
1813- if ((hn.amount != hP))
1814- then throw(("Payment attached should be " + toString(hP)))
1819+ let hQ = bZ(ca)
1820+ let hR = parseIntValue(ca[T])
1821+ let hS = fraction((hQ * A), x, (10 * hR))
1822+ if ((hn.amount != hS))
1823+ then throw(("Payment attached should be " + toString(hS)))
18151824 else {
1816- let dh = bs(invoke(aG, "updateEsStorage", [hM], [AttachedPayment(b, hP)]))
1817- $Tuple2([IntegerEntry(fI, hF), hm], dh)
1825+ let dh = bs(invoke(aG, "updateEsStorage", [hP], [AttachedPayment(b, hS)]))
1826+ $Tuple2([IntegerEntry(fI, hI), hm], dh)
18181827 }
18191828 }
18201829 }
18261835
18271836
18281837 @Callable(dB)
1829-func updateBackpack (bg,hQ) = {
1838+func updateBackpack (bg,hT) = {
18301839 let hm = hj(dB)
18311840 if ((dB.caller != aG))
18321841 then throw("permission denied")
1833- else $Tuple2([StringEntry(bf(bg), hQ), hm], hQ)
1842+ else $Tuple2([StringEntry(bf(bg), hT), hm], hT)
18341843 }
18351844
18361845
19021911
19031912
19041913 @Callable(dB)
1905-func activateArtifact (hR,aW) = {
1914+func activateArtifact (hU,aW) = {
19061915 let hm = hj(dB)
19071916 if ((size(dB.payments) != 0))
19081917 then throw("No payments required")
19091918 else {
19101919 let dh = {
1911- let c = hR
1920+ let c = hU
19121921 if (("PRESALE" == c))
19131922 then gI(toString(dB.caller), aW)
19141923 else throw("Unknown artifact")
19511960
19521961
19531962 @Callable(dB)
1954-func cargoExchange (hS,aW) = {
1963+func cargoExchange (hV,aW) = {
19551964 let hm = hj(dB)
19561965 if ((size(dB.payments) != 0))
19571966 then throw("No payments required")
19581967 else {
1959- let eR = split_4C(hS, ":")
1968+ let eR = split_4C(hV, ":")
19601969 let aK = toString(dB.originCaller)
19611970 let bW = value(assetInfo(fromBase58String(aW)))
19621971 let gd = aO(aW)
20052014 if ((size(eF) != 5))
20062015 then throw("warehouse string should contain 4 ':' separators")
20072016 else {
2008- let hT = split(eF[ad], "_")[ae]
2017+ let hW = split(eF[ad], "_")[ae]
20092018 let gs = en(eF)
2010- let hU = el(eF[Z])
2011- let gt = ((hU - parseIntValue(hT)) - gs)
2012- let hV = makeString_2C([eF[Z], eF[aa], eF[ab], eF[ac], makeString([hT, toString(gs), toString(gt), toString(hU)], "_")], ":")
2013- $Tuple2([StringEntry(eA, hV), hm], hV)
2019+ let hX = el(eF[Z])
2020+ let gt = ((hX - parseIntValue(hW)) - gs)
2021+ let hY = makeString_2C([eF[Z], eF[aa], eF[ab], eF[ac], makeString([hW, toString(gs), toString(gt), toString(hX)], "_")], ":")
2022+ $Tuple2([StringEntry(eA, hY), hm], hY)
20142023 }
20152024 }
20162025 }
20262035 let eB = (bA(split(bW.description, "_")[W]) / o)
20272036 let eC = valueOrElse(getInteger(aP(aW)), 0)
20282037 let eF = ez(eA, eB, eC)
2029- let hT = bv(invoke(aG, "recalcLockedVolumeREADONLY", [aW, eF], nil))
2038+ let hW = bv(invoke(aG, "recalcLockedVolumeREADONLY", [aW, eF], nil))
20302039 let gs = en(eF)
2031- let hU = el(eF[Z])
2032- let gt = ((hU - hT) - gs)
2033- let hV = makeString_2C([eF[Z], eF[aa], eF[ab], eF[ac], makeString([toString(hT), toString(gs), toString(gt), toString(hU)], "_")], ":")
2034- $Tuple2([StringEntry(eA, hV)], hV)
2040+ let hX = el(eF[Z])
2041+ let gt = ((hX - hW) - gs)
2042+ let hY = makeString_2C([eF[Z], eF[aa], eF[ab], eF[ac], makeString([toString(hW), toString(gs), toString(gt), toString(hX)], "_")], ":")
2043+ $Tuple2([StringEntry(eA, hY)], hY)
20352044 }
20362045
20372046
20882097 then throw(("Name too long, maxLength=" + toString(ck)))
20892098 else {
20902099 let aK = toString(dB.originCaller)
2091- let hW = {
2100+ let hZ = {
20922101 let c = aR
20932102 if (("ACCOUNT" == c))
20942103 then {
2095- let hX = cE(gV)
2096- let hY = getString(hX)
2097- if (isDefined(hY))
2104+ let ia = cE(gV)
2105+ let ib = getString(ia)
2106+ if (isDefined(ib))
20982107 then throw(("Name already registered: " + gV))
20992108 else {
2100- let hZ = ba(aK)
2101- let ia = getString(hZ)
2102- let ib = if (isDefined(ia))
2103- then [DeleteEntry(cE(value(ia)))]
2109+ let ic = ba(aK)
2110+ let id = getString(ic)
2111+ let ie = if (isDefined(id))
2112+ then [DeleteEntry(cE(value(id)))]
21042113 else nil
2105- ((ib :+ StringEntry(hZ, gV)) :+ StringEntry(hX, aK))
2114+ ((ie :+ StringEntry(ic, gV)) :+ StringEntry(ia, aK))
21062115 }
21072116 }
21082117 else if (("LAND" == c))
21162125 if ((gf != aK))
21172126 then throw((k + " is not yours"))
21182127 else {
2119- let hX = cy(gV)
2120- let hY = getString(hX)
2121- if (isDefined(hY))
2128+ let ia = cy(gV)
2129+ let ib = getString(ia)
2130+ if (isDefined(ib))
21222131 then throw(("Name already registered: " + gV))
21232132 else {
2124- let ic = aN(aM)
2125- let ia = getString(ic)
2126- let ib = if (isDefined(ia))
2127- then [DeleteEntry(cy(value(ia)))]
2133+ let if = aN(aM)
2134+ let id = getString(if)
2135+ let ie = if (isDefined(id))
2136+ then [DeleteEntry(cy(value(id)))]
21282137 else nil
2129- ((ib :+ StringEntry(ic, gV)) :+ StringEntry(hX, aM))
2138+ ((ie :+ StringEntry(if, gV)) :+ StringEntry(ia, aM))
21302139 }
21312140 }
21322141 }
21442153 if ((gf != aK))
21452154 then throw((l + " is not yours"))
21462155 else {
2147- let hX = cD(gV)
2148- let hY = getString(hX)
2149- if (isDefined(hY))
2156+ let ia = cD(gV)
2157+ let ib = getString(ia)
2158+ if (isDefined(ib))
21502159 then throw(("Name already registered: " + gV))
21512160 else {
2152- let ic = aZ(aM)
2153- let ia = getString(ic)
2154- let ib = if (isDefined(ia))
2155- then [DeleteEntry(cD(value(ia)))]
2161+ let if = aZ(aM)
2162+ let id = getString(if)
2163+ let ie = if (isDefined(id))
2164+ then [DeleteEntry(cD(value(id)))]
21562165 else nil
2157- ((ib :+ StringEntry(ic, gV)) :+ StringEntry(hX, aM))
2166+ ((ie :+ StringEntry(if, gV)) :+ StringEntry(ia, aM))
21582167 }
21592168 }
21602169 }
21612170 }
21622171 else throw("Unknown entity type")
21632172 }
2164- $Tuple2(((hW :+ ScriptTransfer(aG, hn.amount, b)) :+ hm), 0)
2173+ $Tuple2(((hZ :+ ScriptTransfer(aG, hn.amount, b)) :+ hm), 0)
21652174 }
21662175 }
21672176 }
21692178
21702179
21712180 @Callable(dB)
2172-func setReferrals (id,ie) = if ((dB.callerPublicKey != cg))
2181+func setReferrals (ig,ih) = if ((dB.callerPublicKey != cg))
21732182 then throw("Permission denied")
21742183 else {
21752184 let hm = hj(dB)
21762185 if ((size(dB.payments) != 0))
21772186 then throw("No payments required")
2178- else if (!(isDefined(addressFromString(id))))
2179- then throw(("Invalid address: " + id))
2180- else if (!(isDefined(addressFromString(ie))))
2181- then throw(("Invalid address: " + ie))
2187+ else if (!(isDefined(addressFromString(ig))))
2188+ then throw(("Invalid address: " + ig))
2189+ else if (!(isDefined(addressFromString(ih))))
2190+ then throw(("Invalid address: " + ih))
21822191 else {
2183- let if = cF()
2184- let ig = getString(if)
2185- let ih = if (isDefined(ig))
2186- then split_4C(value(ig), "_")
2192+ let ii = cF()
2193+ let ij = getString(ii)
2194+ let ik = if (isDefined(ij))
2195+ then split_4C(value(ij), "_")
21872196 else nil
2188- if (containsElement(ih, ie))
2189- then throw((ie + " is not newbie (already has referrals)"))
2197+ if (containsElement(ik, ih))
2198+ then throw((ih + " is not newbie (already has referrals)"))
21902199 else {
2191- let ii = bb(ie)
2192- let ij = getString(ii)
2193- if (if (isDefined(ij))
2194- then isDefined(addressFromString(value(ij)))
2200+ let il = bb(ih)
2201+ let im = getString(il)
2202+ if (if (isDefined(im))
2203+ then isDefined(addressFromString(value(im)))
21952204 else false)
2196- then throw(((ie + " already has refBy: ") + value(ij)))
2205+ then throw(((ih + " already has refBy: ") + value(im)))
21972206 else {
2198- let ik = bc(id)
2199- let il = getString(ik)
2200- let im = if (isDefined(il))
2201- then split_4C(value(il), "_")
2207+ let in = bc(ig)
2208+ let io = getString(in)
2209+ let ip = if (isDefined(io))
2210+ then split_4C(value(io), "_")
22022211 else nil
2203- if (containsElement(im, ie))
2204- then throw((((id + " already contains ") + ie) + " within referrals"))
2212+ if (containsElement(ip, ih))
2213+ then throw((((ig + " already contains ") + ih) + " within referrals"))
22052214 else {
2206- let in = makeString_2C((im :+ ie), "_")
2207- let io = if (containsElement(ih, id))
2208- then value(ig)
2209- else makeString_2C((ih :+ id), "_")
2210- $Tuple2([StringEntry(ii, id), StringEntry(ik, in), StringEntry(if, io), hm], 0)
2215+ let iq = makeString_2C((ip :+ ih), "_")
2216+ let ir = if (containsElement(ik, ig))
2217+ then value(ij)
2218+ else makeString_2C((ik :+ ig), "_")
2219+ $Tuple2([StringEntry(il, ig), StringEntry(in, iq), StringEntry(ii, ir), hm], 0)
22112220 }
22122221 }
22132222 }
22222231
22232232
22242233 @Callable(dB)
2225-func splitByGlobalAndLocalWeightsREADONLY (ip,iq,dE) = {
2234+func splitByGlobalAndLocalWeightsREADONLY (is,it,dE) = {
22262235 let dx = dD(dE)
2227- $Tuple2(nil, $Tuple2(cZ(ip), cS(iq, dx)))
2236+ $Tuple2(nil, $Tuple2(cZ(is), cS(it, dx)))
22282237 }
22292238
22302239
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = take(drop(this.bytes, 1), 1)
55
66 let b = {
77 let c = a
88 if ((base58'2W' == c))
99 then base58'9wc3LXNA4TEBsXyKtoLE9mrbDD7WMHXvXrCjZvabLAsi'
1010 else if ((base58'2T' == c))
1111 then base58'6mWwf9mZBjVgkC54idpyaZLQfAosD914wT8fGf2iiY63'
1212 else throw("Unknown chain")
1313 }
1414
1515 let d = {
1616 let c = a
1717 if ((base58'2W' == c))
1818 then "3PQCuvFbvh4LkPUnrnU1z3jnbA1p9m3WNhv"
1919 else if ((base58'2T' == c))
2020 then "3MumkGGztCKAXpWDqxkddofqXSUbqQkvSJy"
2121 else throw("Unknown chain")
2222 }
2323
2424 let e = {
2525 let c = a
2626 if ((base58'2W' == c))
2727 then 10000000000
2828 else if ((base58'2T' == c))
2929 then 100000000
3030 else throw("Unknown chain")
3131 }
3232
3333 let f = "__"
3434
3535 let g = 1000000
3636
3737 let h = 10000000
3838
3939 let i = 100000000
4040
4141 let j = 10000000000
4242
4343 let k = "LAND"
4444
4545 let l = "DUCK"
4646
4747 let m = "PRESALE"
4848
4949 let n = 6
5050
5151 let o = 25
5252
5353 let p = 100
5454
5555 let q = 225
5656
5757 let r = 400
5858
5959 let s = 625
6060
6161 let t = 3456000
6262
6363 let u = 86400000
6464
6565 let v = 10000000000
6666
6767 let w = "Africa_F_Africa"
6868
6969 let x = 39637
7070
7171 let y = 3
7272
7373 let z = 4
7474
7575 let A = 10
7676
7777 let B = 100
7878
7979 let C = ["Oil", "Ore", "Wood", "Sand", "Clay", "Organic"]
8080
8181 let D = ["Fuel", "Metal", "Plank", "Glass", "Plastic", "Protein"]
8282
8383 let E = ["First Aid Kit L1", "First Aid Kit L2", "First Aid Kit L3", "Backpack L1", "Backpack L2", "Backpack L3", "Food Ration L1", "Food Ration L2", "Food Ration L3", "Jet Pack L1", "Jet Pack L2", "Jet Pack L3", "Shield L1", "Shield L2", "Shield L3"]
8484
8585 let F = ["Americas", "Europe", "Asia", "Africa", "Oceania"]
8686
8787 let G = ["1_1_1_2_2_5_1_10_0", "2_2_2_4_4_10_1_10_0", "3_3_3_6_6_15_1_10_0", "2_5_5_2_7_5_2_100_1", "4_10_10_4_14_10_2_100_1", "6_15_15_6_21_15_2_100_1", "1_1_1_1_1_8_1_10_2", "2_2_2_2_2_16_1_10_2", "3_3_3_3_3_24_1_10_2", "9_9_1_5_5_1_5_100_3", "18_18_2_10_10_2_5_100_3", "27_27_3_15_15_3_5_100_3", "2_2_1_2_2_2_1_10_4", "4_4_2_4_4_4_1_10_4", "6_6_3_6_6_6_1_10_4"]
8888
8989 let H = 0
9090
9191 let I = 1
9292
9393 let J = 2
9494
9595 let K = 3
9696
9797 let L = 4
9898
9999 let M = 0
100100
101101 let N = 1
102102
103103 let O = 2
104104
105105 let P = 3
106106
107107 let Q = 4
108108
109109 let R = 5
110110
111111 let S = 6
112112
113113 let T = 7
114114
115115 let U = 8
116116
117117 let V = 0
118118
119119 let W = 1
120120
121121 let X = 2
122122
123123 let Y = 3
124124
125125 let Z = 0
126126
127127 let aa = 1
128128
129129 let ab = 2
130130
131131 let ac = 3
132132
133133 let ad = 4
134134
135135 let ae = 0
136136
137137 let af = 1
138138
139139 let ag = 2
140140
141141 let ah = 3
142142
143143 let ai = 0
144144
145145 let aj = 1
146146
147147 let ak = 2
148148
149149 let al = 3
150150
151151 func am (an) = parseIntValue(split(G[an], "_")[T])
152152
153153
154154 func ao (ap,aq) = valueOrErrorMessage(getString(ap, aq), makeString(["mandatory ", toString(ap), ".", aq, " is not defined"], ""))
155155
156156
157157 func ar (aq,as) = valueOrElse(getInteger(this, aq), as)
158158
159159
160160 let at = 1
161161
162162 let au = 2
163163
164164 let av = 3
165165
166166 let aw = 4
167167
168168 func ax () = "%s__restConfig"
169169
170170
171171 func ay () = "%s__restAddr"
172172
173173
174174 func az (aA) = split_4C(ao(aA, ax()), f)
175175
176176
177177 func aB (aC,aD) = valueOrErrorMessage(addressFromString(aC[aD]), ("Rest cfg doesn't contain address at index " + toString(aD)))
178178
179179
180180 let aE = addressFromStringValue(valueOrElse(getString(this, ay()), d))
181181
182182 let aC = az(aE)
183183
184184 let aF = aB(aC, at)
185185
186186 let aG = aB(aC, au)
187187
188188 let aH = aB(aC, av)
189189
190190 let aI = aB(aC, aw)
191191
192192 func aJ (aK) = ("lastTxIdByUser_" + aK)
193193
194194
195195 func aL (aM) = ("nftOwner_" + aM)
196196
197197
198198 func aN (aM) = ("landCustomNameByAssetId_" + aM)
199199
200200
201201 func aO (aM) = ("stakedTime_" + aM)
202202
203203
204204 func aP (aM) = ("infraLevel_" + aM)
205205
206206
207207 func aQ (aR,aM) = makeString(["landArtStatus", aR, aM], "_")
208208
209209
210210 func aS (aT,aM,aU) = ((((("stakedTimeByTypeAssetIdAndOwner_" + aT) + "_") + aM) + "_") + aU)
211211
212212
213213 func aV (aW) = ("wareHouse_" + aW)
214214
215215
216216 func aX (aU) = ("stakedLandsByOwner_" + aU)
217217
218218
219219 func aY (aU) = ("stakedPiecesByOwner_" + aU)
220220
221221
222222 func aZ (aM) = ("duckCustomNameByAssetId_" + aM)
223223
224224
225225 func ba (aK) = ("accountCustomNameByAddr_" + aK)
226226
227227
228228 func bb (aK) = ("accRefBy_" + aK)
229229
230230
231231 func bc (aK) = ("accReferrals_" + aK)
232232
233233
234234 func bd (aM) = ("duckOwner_" + aM)
235235
236236
237237 func be (aU) = ("stakedDuckByOwner_" + aU)
238238
239239
240240 func bf (bg) = ("backPack_" + bg)
241241
242242
243243 func bh (bg) = ("duckLocation_" + bg)
244244
245245
246246 func bi (bg) = ("duckHealth_" + bg)
247247
248248
249249 func bj () = "resTypesProportions"
250250
251251
252252 func bk () = "contractsBlocked"
253253
254254
255255 func bl (bm) = ("%s%s__userGwlReleaseTime__" + bm)
256256
257257
258258 func bn (aW) = ("landOrder_" + aW)
259259
260260
261261 func bo () = "emergencyWarehouseProducts"
262262
263263
264264 let bp = 0
265265
266266 let bq = 1
267267
268268 let br = 2
269269
270270 func bs (bt) = {
271271 let c = bt
272272 if ($isInstanceOf(c, "String"))
273273 then {
274274 let bu = c
275275 bu
276276 }
277277 else throw("fail to cast into String")
278278 }
279279
280280
281281 func bv (bt) = {
282282 let c = bt
283283 if ($isInstanceOf(c, "Int"))
284284 then {
285285 let bw = c
286286 bw
287287 }
288288 else throw("fail to cast into Int")
289289 }
290290
291291
292292 func bx (bt) = {
293293 let c = bt
294294 if ($isInstanceOf(c, "List[Any]"))
295295 then {
296296 let by = c
297297 by
298298 }
299299 else throw("fail to cast into List[Any]")
300300 }
301301
302302
303303 func bz (bt) = {
304304 let c = bt
305305 if ($isInstanceOf(c, "Boolean"))
306306 then {
307307 let bu = c
308308 bu
309309 }
310310 else throw("fail to cast into Boolean")
311311 }
312312
313313
314314 func bA (bB) = {
315315 let c = bB
316316 if (("S" == c))
317317 then o
318318 else if (("M" == c))
319319 then p
320320 else if (("L" == c))
321321 then q
322322 else if (("XL" == c))
323323 then r
324324 else if (("XXL" == c))
325325 then s
326326 else throw("Unknown land size")
327327 }
328328
329329
330330 let bC = 0
331331
332332 let bD = 1
333333
334334 func bE (bF) = {
335335 let bG = split(valueOrElse(getString(aF, bj()), "0_0_0_0_0_0"), "_")
336336 func bH (bI,bJ) = (bI + parseIntValue(bJ))
337337
338338 let bK = {
339339 let bL = bG
340340 let bM = size(bL)
341341 let bN = 0
342342 func bO (bP,bQ) = if ((bQ >= bM))
343343 then bP
344344 else bH(bP, bL[bQ])
345345
346346 func bR (bP,bQ) = if ((bQ >= bM))
347347 then bP
348348 else throw("List size exceeds 6")
349349
350350 bR(bO(bO(bO(bO(bO(bO(bN, 0), 1), 2), 3), 4), 5), 6)
351351 }
352352 let bS = if ((bF == ""))
353353 then 0
354354 else {
355355 let bT = getString(aF, aX(bF))
356356 let bU = if (isDefined(bT))
357357 then split_51C(value(bT), "_")
358358 else nil
359359 func bV (bI,aW) = {
360360 let bW = value(assetInfo(fromBase58String(aW)))
361361 let bB = split(bW.description, "_")[W]
362362 (bI + bA(bB))
363363 }
364364
365365 let bL = bU
366366 let bM = size(bL)
367367 let bN = 0
368368 func bX (bP,bQ) = if ((bQ >= bM))
369369 then bP
370370 else bV(bP, bL[bQ])
371371
372372 func bY (bP,bQ) = if ((bQ >= bM))
373373 then bP
374374 else throw("List size exceeds 100")
375375
376376 bY(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bN, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100)
377377 }
378378 [bK, bS]
379379 }
380380
381381
382382 func bZ (ca) = {
383383 func cb (cc,cd) = (cc + parseIntValue(ca[cd]))
384384
385385 let bL = [0, 1, 2, 3, 4, 5]
386386 let bM = size(bL)
387387 let bN = 0
388388 func bO (bP,bQ) = if ((bQ >= bM))
389389 then bP
390390 else cb(bP, bL[bQ])
391391
392392 func bR (bP,bQ) = if ((bQ >= bM))
393393 then bP
394394 else throw("List size exceeds 6")
395395
396396 bR(bO(bO(bO(bO(bO(bO(bN, 0), 1), 2), 3), 4), 5), 6)
397397 }
398398
399399
400400 let ce = {
401401 let c = a
402402 if ((base58'2W' == c))
403403 then addressFromStringValue("3PEktVux2RhchSN63DsDo4b4mz4QqzKSeDv")
404404 else if ((base58'2T' == c))
405405 then this
406406 else throw("Unknown chain")
407407 }
408408
409409 let cf = {
410410 let c = a
411411 if ((base58'2W' == c))
412412 then addressFromStringValue("3PDVuU45H7Eh5dmtNbnRNRStGwULA7NY6Hb")
413413 else if ((base58'2T' == c))
414414 then this
415415 else throw("Unknown chain")
416416 }
417417
418418 let cg = base58'6LfPuKJjLgekmncBhMg2LZyMTNVzZBccXR28ySXm9uXD'
419419
420420 let ch = [30, 60, 120]
421421
422422 let ci = 300000
423423
424424 let cj = 5000000
425425
426426 let ck = 50
427427
428428 let cl = 10000000
429429
430430 let cm = {
431431 let c = a
432432 if ((base58'2W' == c))
433433 then 252289527462
434434 else if ((base58'2T' == c))
435435 then 2522895274
436436 else throw("Unknown chain")
437437 }
438438
439439 let cn = {
440440 let c = a
441441 if ((base58'2W' == c))
442442 then 250000000
443443 else if ((base58'2T' == c))
444444 then 250000000
445445 else throw("Unknown chain")
446446 }
447447
448448 let co = toBigInt(5)
449449
450450 let cp = toBigInt(20)
451451
452452 let cq = toBigInt((20 * 20))
453453
454454 let cr = toBigInt(((20 * 20) * 20))
455455
456456 let cs = toBigInt((((20 * 20) * 20) * 20))
457457
458458 let ct = toBigInt(((((20 * 20) * 20) * 20) * 20))
459459
460460 let cu = 500
461461
462462 func cv () = "nextLandNum"
463463
464464
465465 func cw (cx) = ("landToAsset_" + cx)
466466
467467
468468 func cy (cz) = ("landByCustomName_" + cz)
469469
470470
471471 func cA (aM,aU) = ((("infraLevelByAssetIdAndOwner_" + aM) + "_") + aU)
472472
473473
474474 func cB (aR,aM,aU) = makeString(["landArtStatusByTypeAssetIdAndOwner", aR, aM, aU], "_")
475475
476476
477477 func cC (cx) = ("landOwner_" + cx)
478478
479479
480480 func cD (cz) = ("duckByCustomName_" + cz)
481481
482482
483483 func cE (cz) = ("accountByCustomName_" + cz)
484484
485485
486486 func cF () = "oldiesList"
487487
488488
489489 let cG = 0
490490
491491 let cH = 1
492492
493493 let cI = 2
494494
495495 let cJ = 0
496496
497497 let cK = 1
498498
499499 let cL = 2
500500
501501 let cM = 3
502502
503503 let cN = 4
504504
505505 let cO = 5
506506
507507 let cP = 6
508508
509509 let cQ = 7
510510
511511 func cR (cx,bB) = ((k + cx) + bB)
512512
513513
514514 func cS (cT,cU) = {
515515 let cV = (((((cU[0] + cU[1]) + cU[2]) + cU[3]) + cU[4]) + cU[5])
516516 if ((0 >= cV))
517517 then throw("Zero weights sum")
518518 else {
519519 let cW = fraction(cT, g, cV)
520520 func cX (bI,cY) = (bI :+ fraction(cY, cW, g))
521521
522522 let bL = cU
523523 let bM = size(bL)
524524 let bN = nil
525525 func bO (bP,bQ) = if ((bQ >= bM))
526526 then bP
527527 else cX(bP, bL[bQ])
528528
529529 func bR (bP,bQ) = if ((bQ >= bM))
530530 then bP
531531 else throw("List size exceeds 6")
532532
533533 bR(bO(bO(bO(bO(bO(bO(bN, 0), 1), 2), 3), 4), 5), 6)
534534 }
535535 }
536536
537537
538538 func cZ (cT) = {
539539 let bG = split(value(getString(bj())), "_")
540540 if ((size(bG) != n))
541541 then throw("Wrong proportions data")
542542 else {
543543 let da = [parseIntValue(bG[0]), parseIntValue(bG[1]), parseIntValue(bG[2]), parseIntValue(bG[3]), parseIntValue(bG[4]), parseIntValue(bG[5])]
544544 cS(cT, da)
545545 }
546546 }
547547
548548
549549 func db (dc,dd,de) = {
550550 let df = cZ(de)
551551 func dg (bI,aD) = {
552552 let dh = (parseIntValue(dd[aD]) - df[aD])
553553 if ((0 > dh))
554554 then throw(((((("Not enough material idx=" + toString(aD)) + ", you have ") + dd[aD]) + ", but need ") + toString(df[aD])))
555555 else (bI :+ toString(dh))
556556 }
557557
558558 if (dc)
559559 then {
560560 let bL = [0, 1, 2, 3, 4, 5]
561561 let bM = size(bL)
562562 let bN = nil
563563 func bO (bP,bQ) = if ((bQ >= bM))
564564 then bP
565565 else dg(bP, bL[bQ])
566566
567567 func bR (bP,bQ) = if ((bQ >= bM))
568568 then bP
569569 else throw("List size exceeds 6")
570570
571571 bR(bO(bO(bO(bO(bO(bO(bN, 0), 1), 2), 3), 4), 5), 6)
572572 }
573573 else dd
574574 }
575575
576576
577577 func di (dj,dk) = if ((dk == ""))
578578 then dj
579579 else {
580580 let dl = if ((dj == ""))
581581 then nil
582582 else split(dj, "_")
583583 func dm (bI,bJ) = {
584584 let cd = bI._1
585585 func dn (cc,do) = {
586586 let dp = split(do, ",")
587587 if ((size(dp) != 2))
588588 then throw("Incorrect format, should be index,amount")
589589 else {
590590 let aD = parseIntValue(dp[0])
591591 if (if ((0 > aD))
592592 then true
593593 else (aD >= size(G)))
594594 then throw("Unknown product idx")
595595 else if ((aD != cd))
596596 then cc
597597 else {
598598 let dq = parseIntValue(dp[1])
599599 if ((0 >= dq))
600600 then throw("Pass only positive amounts")
601601 else (cc + dq)
602602 }
603603 }
604604 }
605605
606606 let dr = {
607607 let bL = split(dk, "_")
608608 let bM = size(bL)
609609 let bN = 0
610610 func bO (bP,bQ) = if ((bQ >= bM))
611611 then bP
612612 else dn(bP, bL[bQ])
613613
614614 func bR (bP,bQ) = if ((bQ >= bM))
615615 then bP
616616 else throw("List size exceeds 10")
617617
618618 bR(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bN, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
619619 }
620620 let ds = if ((size(dl) > cd))
621621 then parseIntValue(dl[cd])
622622 else 0
623623 let dt = if ((dr > ds))
624624 then throw(((((("You have " + toString(ds)) + " of ") + E[cd]) + ", but tried to use ") + toString(dr)))
625625 else (ds - dr)
626626 $Tuple2((cd + 1), (bI._2 :+ toString(dt)))
627627 }
628628
629629 let du = {
630630 let bL = G
631631 let bM = size(bL)
632632 let bN = $Tuple2(0, nil)
633633 func bO (bP,bQ) = if ((bQ >= bM))
634634 then bP
635635 else dm(bP, bL[bQ])
636636
637637 func bR (bP,bQ) = if ((bQ >= bM))
638638 then bP
639639 else throw("List size exceeds 50")
640640
641641 bR(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bN, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50)
642642 }
643643 makeString(du._2, "_")
644644 }
645645
646646
647647 func dv (dw,dx,dy,dz) = if ((size(dw) != n))
648648 then throw("Wrong proportions data")
649649 else {
650650 func dA (bI,dB) = {
651651 let dh = (parseIntValue(dw[dB]) + ((dz * dx[dB]) * dy))
652652 if ((0 > dh))
653653 then throw(((((((("Panic! Pieces of type=" + toString(dB)) + ", sign=") + toString(dz)) + ", terrainCounts[i]=") + toString(dx[dB])) + ", landSizeIndex=") + toString(dy)))
654654 else (bI :+ toString(dh))
655655 }
656656
657657 let da = {
658658 let bL = [0, 1, 2, 3, 4, 5]
659659 let bM = size(bL)
660660 let bN = nil
661661 func bO (bP,bQ) = if ((bQ >= bM))
662662 then bP
663663 else dA(bP, bL[bQ])
664664
665665 func bR (bP,bQ) = if ((bQ >= bM))
666666 then bP
667667 else throw("List size exceeds 6")
668668
669669 bR(bO(bO(bO(bO(bO(bO(bN, 0), 1), 2), 3), 4), 5), 6)
670670 }
671671 makeString(da, "_")
672672 }
673673
674674
675675 func dC (dx,dy,dz) = {
676676 let dw = split(valueOrElse(getString(bj()), "0_0_0_0_0_0"), "_")
677677 dv(dw, dx, dy, dz)
678678 }
679679
680680
681681 func dD (dE) = [(size(split(dE, "A")) - 1), (size(split(dE, "B")) - 1), (size(split(dE, "C")) - 1), (size(split(dE, "D")) - 1), (size(split(dE, "E")) - 1), (size(split(dE, "F")) - 1)]
682682
683683
684684 func dF (dG,dx,dH,dy,dI) = {
685685 func bH (bI,dB) = {
686686 let dJ = ((fraction(dH, dI, u) * dx[dB]) * dy)
687687 (bI :+ toString((parseIntValue(dG[dB]) + dJ)))
688688 }
689689
690690 let da = {
691691 let bL = [0, 1, 2, 3, 4, 5]
692692 let bM = size(bL)
693693 let bN = nil
694694 func bO (bP,bQ) = if ((bQ >= bM))
695695 then bP
696696 else bH(bP, bL[bQ])
697697
698698 func bR (bP,bQ) = if ((bQ >= bM))
699699 then bP
700700 else throw("List size exceeds 6")
701701
702702 bR(bO(bO(bO(bO(bO(bO(bN, 0), 1), 2), 3), 4), 5), 6)
703703 }
704704 makeString(da, "_")
705705 }
706706
707707
708708 func dK (dx,dH,dy,dI) = {
709709 func bH (bI,dB) = {
710710 let dJ = ((fraction(dH, dI, u) * dx[dB]) * dy)
711711 $Tuple2((bI._1 :+ dJ), (bI._2 + dJ))
712712 }
713713
714714 let bL = [0, 1, 2, 3, 4, 5]
715715 let bM = size(bL)
716716 let bN = $Tuple2(nil, 0)
717717 func bO (bP,bQ) = if ((bQ >= bM))
718718 then bP
719719 else bH(bP, bL[bQ])
720720
721721 func bR (bP,bQ) = if ((bQ >= bM))
722722 then bP
723723 else throw("List size exceeds 6")
724724
725725 bR(bO(bO(bO(bO(bO(bO(bN, 0), 1), 2), 3), 4), 5), 6)
726726 }
727727
728728
729729 func dL (dM,dN,dO,dP) = {
730730 let dQ = dO._1
731731 let dR = dO._2
732732 if ((dR == 0))
733733 then $Tuple2(makeString(dM, "_"), makeString(dN, "_"))
734734 else if ((dP >= dR))
735735 then {
736736 func dS (bI,dB) = (bI :+ toString((parseIntValue(dM[dB]) + dQ[dB])))
737737
738738 let da = {
739739 let bL = [0, 1, 2, 3, 4, 5]
740740 let bM = size(bL)
741741 let bN = nil
742742 func bO (bP,bQ) = if ((bQ >= bM))
743743 then bP
744744 else dS(bP, bL[bQ])
745745
746746 func bR (bP,bQ) = if ((bQ >= bM))
747747 then bP
748748 else throw("List size exceeds 6")
749749
750750 bR(bO(bO(bO(bO(bO(bO(bN, 0), 1), 2), 3), 4), 5), 6)
751751 }
752752 $Tuple2(makeString(da, "_"), makeString(dN, "_"))
753753 }
754754 else {
755755 func dT (bI,dB) = {
756756 let dU = fraction(dQ[dB], dP, dR)
757757 $Tuple2((bI._1 :+ toString((parseIntValue(dM[dB]) + dU))), (bI._2 :+ toString(((parseIntValue(dN[dB]) + dQ[dB]) - dU))))
758758 }
759759
760760 let da = {
761761 let bL = [0, 1, 2, 3, 4, 5]
762762 let bM = size(bL)
763763 let bN = $Tuple2(nil, nil)
764764 func bO (bP,bQ) = if ((bQ >= bM))
765765 then bP
766766 else dT(bP, bL[bQ])
767767
768768 func bR (bP,bQ) = if ((bQ >= bM))
769769 then bP
770770 else throw("List size exceeds 6")
771771
772772 bR(bO(bO(bO(bO(bO(bO(bN, 0), 1), 2), 3), 4), 5), 6)
773773 }
774774 $Tuple2(makeString(da._1, "_"), makeString(da._2, "_"))
775775 }
776776 }
777777
778778
779779 func dV (dW) = if ((dW >= toBigInt(0)))
780780 then dW
781781 else -(dW)
782782
783783
784784 let dX = [[6, 9, 14, 15, 16], [5, 8, 13, 14, 15], [1, 4, 9, 10, 15], [1, 6, 7, 15, 19], [4, 7, 8, 13, 18]]
785785
786786 func dY (bw,dZ) = {
787787 let ea = toInt((bw % cp))
788788 let eb = if ((dZ[0] > ea))
789789 then "A"
790790 else if ((dZ[1] > ea))
791791 then "B"
792792 else if ((dZ[2] > ea))
793793 then "C"
794794 else if ((dZ[3] > ea))
795795 then "D"
796796 else if ((dZ[4] > ea))
797797 then "E"
798798 else "F"
799799 eb
800800 }
801801
802802
803803 func ec (ed,ee) = {
804804 let ef = dX[ee]
805805 func eg (bI,cY) = $Tuple2((((((bI._1 + dY(bI._2, ef)) + dY((bI._2 / cp), ef)) + dY((bI._2 / cq), ef)) + dY((bI._2 / cr), ef)) + dY((bI._2 / cs), ef)), (bI._2 / ct))
806806
807807 let eh = {
808808 let bL = [1, 2, 3, 4, 5]
809809 let bM = size(bL)
810810 let bN = $Tuple2("", (ed / co))
811811 func bO (bP,bQ) = if ((bQ >= bM))
812812 then bP
813813 else eg(bP, bL[bQ])
814814
815815 func bR (bP,bQ) = if ((bQ >= bM))
816816 then bP
817817 else throw("List size exceeds 5")
818818
819819 bR(bO(bO(bO(bO(bO(bN, 0), 1), 2), 3), 4), 5)
820820 }
821821 eh._1
822822 }
823823
824824
825825 func ei (ej) = {
826826 let ek = split(valueOrElse(getString(ej), "0:0_0_0_0_0_0:0_0_0_0_0_0:"), ":")
827827 [toString(valueOrElse(parseInt(ek[ai]), 0)), if ((size(split(ek[aj], "_")) == n))
828828 then ek[aj]
829829 else "0_0_0_0_0_0", if ((size(split(ek[ak], "_")) == n))
830830 then ek[ak]
831831 else "0_0_0_0_0_0", ek[al]]
832832 }
833833
834834
835835 func el (em) = {
836836 let dp = split(em, "_")
837837 ((v * (parseIntValue(dp[1]) + 1)) * parseIntValue(dp[0]))
838838 }
839839
840840
841841 func en (eo) = {
842842 let ep = eo[ac]
843843 func eq (bI,bJ) = (bI + parseIntValue(bJ))
844844
845845 func er (bI,bJ) = {
846846 let aD = bI._1
847847 let es = am(aD)
848848 let et = (((parseIntValue(bJ) + es) - 1) / es)
849849 $Tuple2((aD + 1), (bI._2 + (et * i)))
850850 }
851851
852852 let eu = {
853853 let bL = split(eo[aa], "_")
854854 let bM = size(bL)
855855 let bN = 0
856856 func bO (bP,bQ) = if ((bQ >= bM))
857857 then bP
858858 else eq(bP, bL[bQ])
859859
860860 func bR (bP,bQ) = if ((bQ >= bM))
861861 then bP
862862 else throw("List size exceeds 6")
863863
864864 bR(bO(bO(bO(bO(bO(bO(bN, 0), 1), 2), 3), 4), 5), 6)
865865 }
866866 let ev = {
867867 let bL = split(eo[ab], "_")
868868 let bM = size(bL)
869869 let bN = 0
870870 func bX (bP,bQ) = if ((bQ >= bM))
871871 then bP
872872 else eq(bP, bL[bQ])
873873
874874 func bY (bP,bQ) = if ((bQ >= bM))
875875 then bP
876876 else throw("List size exceeds 6")
877877
878878 bY(bX(bX(bX(bX(bX(bX(bN, 0), 1), 2), 3), 4), 5), 6)
879879 }
880880 let ew = if ((ep == ""))
881881 then 0
882882 else ( let bL = split_4C(ep, "_")
883883 let bM = size(bL)
884884 let bN = $Tuple2(0, 0)
885885 func ex (bP,bQ) = if ((bQ >= bM))
886886 then bP
887887 else er(bP, bL[bQ])
888888
889889 func ey (bP,bQ) = if ((bQ >= bM))
890890 then bP
891891 else throw("List size exceeds 50")
892892
893893 ey(ex(ex(ex(ex(ex(ex(ex(ex(ex(ex(ex(ex(ex(ex(ex(ex(ex(ex(ex(ex(ex(ex(ex(ex(ex(ex(ex(ex(ex(ex(ex(ex(ex(ex(ex(ex(ex(ex(ex(ex(ex(ex(ex(ex(ex(ex(ex(ex(ex(ex(bN, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50))._2
894894 ((eu + ev) + ew)
895895 }
896896
897897
898898 func ez (eA,eB,eC) = {
899899 let em = ((toString(eB) + "_") + toString(eC))
900900 let eD = el(em)
901901 let eE = valueOrElse(getString(eA), (em + ":0_0_0_0_0_0:0_0_0_0_0_0::0"))
902902 let eF = split_4C(eE, ":")
903903 let eG = en(eF)
904904 let eH = if ((5 > size(eF)))
905905 then makeString(["0", toString(eG), toString((eD - eG)), toString(eD)], "_")
906906 else {
907907 let eI = split(eF[ad], "_")
908908 let eJ = parseIntValue(eI[ae])
909909 let eK = if ((size(eI) > 1))
910910 then parseIntValue(eI[af])
911911 else eG
912912 makeString([toString(eJ), toString(eK), toString(((eD - eJ) - eK)), toString(eD)], "_")
913913 }
914914 [eF[Z], if ((size(split(eF[aa], "_")) == n))
915915 then eF[aa]
916916 else "0_0_0_0_0_0", if ((size(split(eF[ab], "_")) == n))
917917 then eF[ab]
918918 else "0_0_0_0_0_0", eF[ac], eH]
919919 }
920920
921921
922922 func eL (eo) = {
923923 let eM = en(eo)
924924 let eN = parseIntValue(split(eo[ad], "_")[ae])
925925 ((el(eo[Z]) - eM) - eN)
926926 }
927927
928928
929929 func eO (eP,es) = {
930930 let et = if ((eP >= 0))
931931 then (((eP + es) - 1) / es)
932932 else -((((-(eP) + es) - 1) / es))
933933 (et * i)
934934 }
935935
936936
937937 func eQ (eR,eo,eS) = if ((size(eR) != 3))
938938 then throw("cargoListStr should contain exactly 2 ':' separators")
939939 else {
940940 let eT = split(eR[0], "_")
941941 let eU = split(eR[1], "_")
942942 let eV = if ((eR[2] == ""))
943943 then nil
944944 else split(eR[2], "_")
945945 if ((size(eT) != n))
946946 then throw("All 6 resources should be passed")
947947 else if ((size(eU) != n))
948948 then throw("All 6 materials should be passed")
949949 else {
950950 let dP = eL(eo)
951951 let eW = split(eo[aa], "_")
952952 let eX = split(eo[ab], "_")
953953 let eY = if ((eo[ac] == ""))
954954 then nil
955955 else split(eo[ac], "_")
956956 let dN = split(eS[aj], "_")
957957 let eZ = split(eS[ak], "_")
958958 let fa = if ((eS[al] == ""))
959959 then nil
960960 else split(eS[al], "_")
961961 func fb (bI,bJ) = {
962962 let dB = bI._1
963963 let fc = parseIntValue(bJ)
964964 let fd = parseIntValue(eW[dB])
965965 let fe = parseIntValue(dN[dB])
966966 if ((fc == 0))
967967 then $Tuple4((dB + 1), (bI._2 :+ eW[dB]), (bI._3 :+ dN[dB]), bI._4)
968968 else if ((fc > 0))
969969 then if ((fc > fe))
970970 then throw((((("Attempt to take " + bJ) + " from backpack, but only ") + toString(fe)) + " available"))
971971 else $Tuple4((dB + 1), (bI._2 :+ toString((fd + fc))), (bI._3 :+ toString((fe - fc))), (bI._4 + fc))
972972 else if ((-(fc) > fd))
973973 then throw((((("Attempt to take " + toString(-(fc))) + " from warehouse, but only ") + toString(fd)) + " available"))
974974 else $Tuple4((dB + 1), (bI._2 :+ toString((fd + fc))), (bI._3 :+ toString((fe - fc))), (bI._4 + fc))
975975 }
976976
977977 let da = {
978978 let bL = eT
979979 let bM = size(bL)
980980 let bN = $Tuple4(0, nil, nil, 0)
981981 func bO (bP,bQ) = if ((bQ >= bM))
982982 then bP
983983 else fb(bP, bL[bQ])
984984
985985 func bR (bP,bQ) = if ((bQ >= bM))
986986 then bP
987987 else throw("List size exceeds 6")
988988
989989 bR(bO(bO(bO(bO(bO(bO(bN, 0), 1), 2), 3), 4), 5), 6)
990990 }
991991 func ff (bI,bJ) = {
992992 let dB = bI._1
993993 let fc = parseIntValue(bJ)
994994 let fg = parseIntValue(eX[dB])
995995 let fh = parseIntValue(eZ[dB])
996996 if ((fc == 0))
997997 then $Tuple4((dB + 1), (bI._2 :+ eX[dB]), (bI._3 :+ eZ[dB]), bI._4)
998998 else if ((fc > 0))
999999 then if ((fc > fh))
10001000 then throw((((("Attempt to take " + bJ) + " from backpack, but only ") + toString(fh)) + " available"))
10011001 else $Tuple4((dB + 1), (bI._2 :+ toString((fg + fc))), (bI._3 :+ toString((fh - fc))), (bI._4 + fc))
10021002 else if ((-(fc) > fg))
10031003 then throw((((("Attempt to take " + toString(-(fc))) + " from warehouse, but only ") + toString(fg)) + " available"))
10041004 else $Tuple4((dB + 1), (bI._2 :+ toString((fg + fc))), (bI._3 :+ toString((fh - fc))), (bI._4 + fc))
10051005 }
10061006
10071007 let fi = {
10081008 let bL = eU
10091009 let bM = size(bL)
10101010 let bN = $Tuple4(0, nil, nil, da._4)
10111011 func bX (bP,bQ) = if ((bQ >= bM))
10121012 then bP
10131013 else ff(bP, bL[bQ])
10141014
10151015 func bY (bP,bQ) = if ((bQ >= bM))
10161016 then bP
10171017 else throw("List size exceeds 6")
10181018
10191019 bY(bX(bX(bX(bX(bX(bX(bN, 0), 1), 2), 3), 4), 5), 6)
10201020 }
10211021 func fj (bI,bJ) = {
10221022 let dB = bI._1
10231023 let es = am(dB)
10241024 let fc = parseIntValue(bJ)
10251025 let fk = if ((size(eY) > dB))
10261026 then parseIntValue(eY[dB])
10271027 else 0
10281028 let fl = if ((size(fa) > dB))
10291029 then parseIntValue(fa[dB])
10301030 else 0
10311031 if ((fc == 0))
10321032 then $Tuple4((dB + 1), (bI._2 :+ toString(fk)), (bI._3 :+ toString(fl)), bI._4)
10331033 else if ((fc > 0))
10341034 then if ((fc > fl))
10351035 then throw((((("Attempt to take " + bJ) + " from backpack, but only ") + toString(fl)) + " available"))
10361036 else {
10371037 let fm = (eO((fk + fc), es) - eO(fk, es))
10381038 $Tuple4((dB + 1), (bI._2 :+ toString((fk + fc))), (bI._3 :+ toString((fl - fc))), (bI._4 + fm))
10391039 }
10401040 else if ((-(fc) > fk))
10411041 then throw((((("Attempt to take " + toString(-(fc))) + " from warehouse, but only ") + toString(fk)) + " available"))
10421042 else {
10431043 let fm = (eO((fk + fc), es) - eO(fk, es))
10441044 $Tuple4((dB + 1), (bI._2 :+ toString((fk + fc))), (bI._3 :+ toString((fl - fc))), (bI._4 + fm))
10451045 }
10461046 }
10471047
10481048 let ek = if ((size(eV) != 0))
10491049 then {
10501050 let bL = eV
10511051 let bM = size(bL)
10521052 let bN = $Tuple4(0, nil, nil, fi._4)
10531053 func ex (bP,bQ) = if ((bQ >= bM))
10541054 then bP
10551055 else fj(bP, bL[bQ])
10561056
10571057 func ey (bP,bQ) = if ((bQ >= bM))
10581058 then bP
10591059 else throw("List size exceeds 50")
10601060
10611061 ey(ex(ex(ex(ex(ex(ex(ex(ex(ex(ex(ex(ex(ex(ex(ex(ex(ex(ex(ex(ex(ex(ex(ex(ex(ex(ex(ex(ex(ex(ex(ex(ex(ex(ex(ex(ex(ex(ex(ex(ex(ex(ex(ex(ex(ex(ex(ex(ex(ex(ex(bN, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50)
10621062 }
10631063 else $Tuple4(0, eY, fa, fi._4)
10641064 let fn = ek._4
10651065 if ((fn > dP))
10661066 then throw((((("Attempt to put total " + toString(fn)) + " stuff, but only ") + toString(dP)) + " warehouse space left"))
10671067 else $Tuple7(makeString(da._2, "_"), makeString(fi._2, "_"), makeString(ek._2, "_"), makeString(da._3, "_"), makeString(fi._3, "_"), makeString(ek._3, "_"), fn)
10681068 }
10691069 }
10701070
10711071
10721072 func fo (fp,fq) = {
10731073 let bm = toString(fp)
10741074 let fr = dV(toBigInt(fq))
10751075 let fs = valueOrElse(getInteger(cv()), (cu + 1))
10761076 let cx = toString(fs)
10771077 let ee = toInt((fr % co))
10781078 let dE = ec(fr, ee)
10791079 let ft = F[ee]
10801080 let fu = Issue(cR(cx, "S"), makeString([cx, "S", dE, ft], "_"), 1, 0, false)
10811081 let aM = calculateAssetId(fu)
10821082 let fv = toBase58String(aM)
10831083 $Tuple2([IntegerEntry(cv(), (fs + 1)), fu, StringEntry(cw(cx), fv), StringEntry(aL(fv), bm), StringEntry(cC(cx), bm), IntegerEntry(aP(fv), 0), IntegerEntry(cA(fv, bm), 0), ScriptTransfer(fp, 1, aM)], $Tuple2(fv, ft))
10841084 }
10851085
10861086
10871087 func fw (bm,fx,fy) = if (!(sigVerify_8Kb(fx, fy, cg)))
10881088 then throw("signature does not match")
10891089 else {
10901090 let dp = split(toUtf8String(fx), ";")
10911091 let fz = split(dp[0], "|")
10921092 let fA = split(fz[cJ], "_")
10931093 let fB = parseIntValue(fA[0])
10941094 let fC = parseIntValue(fA[1])
10951095 let fD = split(dp[1], ":")
10961096 let fE = fD[0]
10971097 let fF = parseIntValue(fz[cO])
10981098 if (if ((fF > (lastBlock.timestamp + ci)))
10991099 then true
11001100 else ((lastBlock.timestamp - ci) > fF))
11011101 then throw(((("signature outdated: logTime=" + toString(fF)) + ", bcTime=") + toString(lastBlock.timestamp)))
11021102 else {
11031103 let fG = fD[1]
11041104 let fH = valueOrElse(getString(aJ(bm)), "")
11051105 if ((fH != fG))
11061106 then throw(((("Tx ids don't match! In state: " + fH) + ", in msg: ") + fG))
11071107 else {
11081108 let bg = valueOrErrorMessage(getString(be(bm)), "You don't have a duck staked")
11091109 let fI = bi(bg)
11101110 let fJ = valueOrElse(getInteger(fI), 100)
11111111 if ((fJ != fB))
11121112 then throw(((("oldHealth=" + toString(valueOrElse(getInteger(fI), 100))) + " from state does not match one from flight log=") + toString(fB)))
11131113 else if ((0 >= fB))
11141114 then throw("You can't fly with zero health")
11151115 else {
11161116 let fK = if ((size(fz) > cP))
11171117 then fz[cP]
11181118 else ""
11191119 let fL = if ((size(fz) > cQ))
11201120 then fz[cQ]
11211121 else ""
11221122 let fM = if (if ((fC > 0))
11231123 then (fK == "$")
11241124 else false)
11251125 then bv(invoke(aE, "sendUsdtPrize", [bm], nil))
11261126 else 0
11271127 $Tuple5(fC, bg, fM, fE, fL)
11281128 }
11291129 }
11301130 }
11311131 }
11321132
11331133
11341134 func fN (fp,fq,fx,fy) = {
11351135 let bm = toString(fp)
11361136 let ef = fw(bm, fx, fy)
11371137 let fI = bi(ef._2)
11381138 let ej = bf(ef._2)
11391139 let eS = ei(ej)
11401140 let fO = split(eS[ak], "_")
11411141 let fP = makeString(db(true, fO, cm), "_")
11421142 let du = di(eS[al], ef._5)
11431143 if ((0 >= ef._1))
11441144 then $Tuple3([IntegerEntry(fI, 0), StringEntry(ej, makeString([eS[ai], eS[aj], eS[ak], du], ":"))], "", 0)
11451145 else {
11461146 let fQ = fo(fp, fq)
11471147 let fv = fQ._2._1
11481148 $Tuple3((((fQ._1 :+ StringEntry(bh(ef._2), makeString([fQ._2._2, "L", fv], "_"))) :+ IntegerEntry(fI, ef._1)) :+ StringEntry(ej, makeString([eS[ai], eS[aj], fP, du], ":"))), fv, ef._3)
11491149 }
11501150 }
11511151
11521152
11531153 func fR (aW,fS) = {
11541154 let eC = valueOrElse(getInteger(aP(aW)), 0)
11551155 let fT = valueOrElse(getInteger(aQ(m, aW)), 0)
11561156 let fU = (eC / 6)
11571157 let fV = (eC / 7)
11581158 ((t + fraction(t, ((eC + fU) + (2 * fV)), 5)) + fraction(t, fT, (fS * 5)))
11591159 }
11601160
11611161
11621162 func fW (aK,fX,fY) = {
11631163 let fZ = if ((fX == cG))
11641164 then $Tuple2(fY, valueOrElse(getString(be(aK)), ""))
11651165 else {
11661166 let bg = valueOrErrorMessage(getString(be(aK)), "You don't have a duck staked")
11671167 let ga = valueOrElse(getString(bh(bg)), w)
11681168 let gb = split(value(ga), "_")
11691169 if ((gb[bq] != "L"))
11701170 then throw((("Duck location type is " + gb[bq]) + ", but should be L"))
11711171 else $Tuple2(gb[br], bg)
11721172 }
11731173 let aW = fZ._1
11741174 let gc = fZ._2
11751175 let bW = value(assetInfo(fromBase58String(aW)))
11761176 let gd = aO(aW)
11771177 let ge = valueOrErrorMessage(getInteger(gd), (("Land " + bW.name) + " is not staked"))
11781178 let gf = valueOrErrorMessage(getString(aL(aW)), (("NFT " + bW.name) + " is orphaned"))
11791179 if ((gf != aK))
11801180 then throw((k + " is not yours"))
11811181 else {
11821182 let gg = split(bW.description, "_")
11831183 $Tuple4(gc, aW, gg, ge)
11841184 }
11851185 }
11861186
11871187
11881188 func gh (aK,eP,fX,fY) = if ((0 > eP))
11891189 then throw("Negative amount")
11901190 else {
11911191 let gi = fW(aK, fX, fY)
11921192 let bB = gi._3[W]
11931193 let dx = dD(gi._3[X])
11941194 let dH = (lastBlock.timestamp - gi._4)
11951195 if ((0 > dH))
11961196 then throw(((("Saved timestamp is in future, saved = " + toString(gi._4)) + ", current = ") + toString(lastBlock.timestamp)))
11971197 else {
11981198 let fS = bA(bB)
11991199 let gj = fR(gi._2, fS)
12001200 let gk = fraction(dH, (gj * fS), u)
12011201 if ((eP > gk))
12021202 then throw(((("Not enough resources, available = " + toString(gk)) + ", requested = ") + toString(eP)))
12031203 else {
12041204 let gl = fraction((gk - eP), u, (gj * fS))
12051205 let gm = (lastBlock.timestamp - gl)
12061206 let eB = (fS / o)
12071207 let dO = dK(dx, (dH - gl), eB, gj)
12081208 let eA = aV(gi._2)
12091209 let eC = valueOrElse(getInteger(aP(gi._2)), 0)
12101210 let eo = ez(eA, eB, eC)
12111211 let eI = split(eo[ad], "_")
12121212 let dP = parseIntValue(eI[ag])
12131213 if (if ((fX == cG))
12141214 then (eP > dP)
12151215 else false)
12161216 then throw((("Only " + toString(dP)) + " space left in warehouse"))
12171217 else {
12181218 let ej = bf(gi._1)
12191219 let eS = ei(ej)
12201220 let dN = split(eS[aj], "_")
12211221 let dM = split(eo[aa], "_")
12221222 let gn = if ((fX == cG))
12231223 then $Tuple4(dF(dM, dx, (dH - gl), eB, gj), eS[aj], (parseIntValue(eI[af]) + dO._2), (parseIntValue(eI[ag]) - dO._2))
12241224 else if ((fX == cH))
12251225 then $Tuple4(eo[aa], dF(dN, dx, (dH - gl), eB, gj), parseIntValue(eI[af]), parseIntValue(eI[ag]))
12261226 else {
12271227 let go = dL(dM, dN, dO, dP)
12281228 let gp = min([parseIntValue(eI[ag]), dO._2])
12291229 $Tuple4(go._1, go._2, (parseIntValue(eI[af]) + gp), (parseIntValue(eI[ag]) - gp))
12301230 }
12311231 let gq = gn._1
12321232 let gr = gn._2
12331233 let gs = gn._3
12341234 let gt = gn._4
12351235 $Tuple5([IntegerEntry(aO(gi._2), gm), IntegerEntry(aS(k, gi._2, aK), gm)], ej, [eS[ai], gr, eS[ak], eS[al]], eA, [eo[Z], gq, eo[ab], eo[ac], makeString([eI[ae], toString(gs), toString(gt), eI[ah]], "_")])
12361236 }
12371237 }
12381238 }
12391239 }
12401240
12411241
12421242 func gu (aK,aW,fS,fX) = {
12431243 let gd = aO(aW)
12441244 let ge = value(getInteger(gd))
12451245 let gk = (fraction((lastBlock.timestamp - ge), fR(aW, fS), u) * fS)
12461246 gh(aK, gk, fX, aW)
12471247 }
12481248
12491249
12501250 func gv (dc,fp,gw,aW) = {
12511251 let aK = toString(fp)
12521252 let gi = fW(aK, cI, aW)
12531253 let fS = bA(gi._3[W])
12541254 let gx = aP(gi._2)
12551255 let gy = valueOrElse(getInteger(gx), 0)
12561256 if ((gy >= 3))
12571257 then throw("Currently max infrastructure level = 3")
12581258 else {
12591259 let gz = (gy + 1)
12601260 let gA = fraction(cl, (fS * gz), o)
12611261 if (if (!(dc))
12621262 then (gw != gA)
12631263 else false)
12641264 then throw(("Payment attached should be " + toString(gA)))
12651265 else {
12661266 let ej = bf(gi._1)
12671267 let eS = ei(ej)
12681268 let fO = split(eS[ak], "_")
12691269 let fP = makeString(db(dc, fO, fraction(e, (fS * gz), o)), "_")
12701270 let gB = gu(aK, gi._2, fS, cI)
12711271 let gC = gB._5
12721272 let gD = el(gC[Z])
12731273 let gE = makeString([split(gC[Z], "_")[0], toString(gz)], "_")
12741274 let gF = el(gE)
12751275 let eI = split(gC[ad], "_")
12761276 let gG = makeString([eI[ae], eI[af], toString(((parseIntValue(eI[ag]) + gF) - gD)), toString(gF)], "_")
12771277 $Tuple2(([IntegerEntry(gx, gz), IntegerEntry(cA(gi._2, aK), gz), StringEntry(ej, makeString([eS[ai], gB._3[aj], fP, eS[al]], ":")), StringEntry(gB._4, makeString([gE, gC[aa], gC[ab], gC[ac], gG], ":"))] ++ gB._1), gz)
12781278 }
12791279 }
12801280 }
12811281
12821282
12831283 func gH (aK) = 0
12841284
12851285
12861286 func gI (aK,fY) = {
12871287 let gi = fW(aK, cI, fY)
12881288 let aW = gi._2
12891289 let fS = bA(gi._3[W])
12901290 let gJ = aQ(m, aW)
12911291 if ((valueOrElse(getInteger(gJ), 0) > 0))
12921292 then throw("Presale artifact is already activated")
12931293 else if ((parseIntValue(gi._3[V]) > cu))
12941294 then throw((((k + " ") + aW) + " is not eligible for presale artifact"))
12951295 else {
12961296 let gB = gu(aK, aW, fS, cI)
12971297 ((((gB._1 :+ IntegerEntry(gJ, fS)) :+ IntegerEntry(cB(m, aW, aK), fS)) :+ StringEntry(gB._2, makeString(gB._3, ":"))) :+ StringEntry(gB._4, makeString(gB._5, ":")))
12981298 }
12991299 }
13001300
13011301
13021302 func gK (gL,gz,gM,aK,gN,fq,gO) = {
13031303 let bg = valueOrErrorMessage(getString(be(aK)), "You don't have a duck staked")
13041304 func gP (bI,aW) = {
13051305 let bW = value(assetInfo(fromBase58String(aW)))
13061306 let gd = aO(aW)
13071307 let ge = valueOrErrorMessage(getInteger(gd), (("NFT " + bW.name) + " is not staked"))
13081308 let gf = valueOrErrorMessage(getString(aL(aW)), (("NFT " + bW.name) + " is orphaned"))
13091309 if ((gf != aK))
13101310 then throw((k + " is not yours"))
13111311 else {
13121312 let gg = split(bW.description, "_")
13131313 let ft = gg[Y]
13141314 if (if ((bI._3 != ""))
13151315 then (bI._3 != ft)
13161316 else false)
13171317 then throw("Lands should be on the same continent to merge")
13181318 else {
13191319 let bB = gg[W]
13201320 let gQ = bI._1
13211321 let dB = valueOrErrorMessage(indexOf(gQ, bB), "You haven't passed all the lands needed")
13221322 let gR = (take(gQ, dB) + drop(gQ, (dB + 1)))
13231323 let fS = bA(bB)
13241324 let gS = (bI._2 + valueOrElse(getInteger(aQ(m, aW)), 0))
13251325 let eC = valueOrElse(getInteger(aP(aW)), 0)
13261326 let gT = {
13271327 let c = bB
13281328 if (("S" == c))
13291329 then 3
13301330 else if (("M" == c))
13311331 then 4
13321332 else if (("L" == c))
13331333 then 5
13341334 else if (("XL" == c))
13351335 then 6
13361336 else throw("Only S, M, L, XL can merge")
13371337 }
13381338 if ((eC != gT))
13391339 then throw("All lands should be maxed to merge")
13401340 else {
13411341 let cx = gg[V]
13421342 let dx = dD(gg[X])
13431343 let dH = (lastBlock.timestamp - ge)
13441344 if ((0 > dH))
13451345 then throw(((("Saved timestamp is in future, saved = " + toString(ge)) + ", current = ") + toString(lastBlock.timestamp)))
13461346 else {
13471347 let gj = fR(aW, fS)
13481348 let eB = (fS / o)
13491349 let gr = dF(split(bI._4, "_"), dx, dH, eB, gj)
13501350 let bG = dv(split(bI._6, "_"), dx, eB, -1)
13511351 let bU = bI._7
13521352 let aD = indexOf(bU, aW)
13531353 if (!(isDefined(aD)))
13541354 then throw(("Your staked lands don't contain " + aW))
13551355 else {
13561356 let gU = aN(aW)
13571357 let gV = valueOrElse(getString(gU), "")
13581358 $Tuple8(gR, gS, ft, gr, (((((((((((((bI._5 :+ DeleteEntry(aO(aW))) :+ DeleteEntry(aS(k, aW, aK))) :+ DeleteEntry(cw(cx))) :+ DeleteEntry(aL(aW))) :+ DeleteEntry(aP(aW))) :+ DeleteEntry(cA(aW, aK))) :+ DeleteEntry(aQ(m, aW))) :+ DeleteEntry(cB(m, aW, aK))) :+ DeleteEntry(cC(cx))) :+ DeleteEntry(aV(aW))) :+ DeleteEntry(gU)) :+ DeleteEntry(cy(gV))) :+ Burn(fromBase58String(aW), 1)), bG, removeByIndex(bU, value(aD)), (bI._8 + fS))
13591359 }
13601360 }
13611361 }
13621362 }
13631363 }
13641364 }
13651365
13661366 let ej = bf(bg)
13671367 let eS = ei(ej)
13681368 let gW = valueOrElse(getString(bj()), "0_0_0_0_0_0")
13691369 let gX = aX(aK)
13701370 let bT = getString(gX)
13711371 let gY = if (isDefined(bT))
13721372 then split_51C(value(bT), "_")
13731373 else nil
13741374 let da = {
13751375 let bL = gN
13761376 let bM = size(bL)
13771377 let bN = $Tuple8(gM, 0, "", eS[aj], nil, gW, gY, 0)
13781378 func bO (bP,bQ) = if ((bQ >= bM))
13791379 then bP
13801380 else gP(bP, bL[bQ])
13811381
13821382 func bR (bP,bQ) = if ((bQ >= bM))
13831383 then bP
13841384 else throw("List size exceeds 5")
13851385
13861386 bR(bO(bO(bO(bO(bO(bN, 0), 1), 2), 3), 4), 5)
13871387 }
13881388 let ft = da._3
13891389 let ee = valueOrErrorMessage(indexOf(F, ft), ("Unknown continent: " + ft))
13901390 let dE = ec(dV(toBigInt(fq)), ee)
13911391 let fs = valueOrElse(getInteger(cv()), (cu + 1))
13921392 let gZ = toString(fs)
13931393 let fu = Issue(cR(gZ, gL), makeString([gZ, gL, dE, ft], "_"), 1, 0, false)
13941394 let aM = calculateAssetId(fu)
13951395 let ha = toBase58String(aM)
13961396 let fP = makeString(db((gO > 0), split(eS[ak], "_"), gO), "_")
13971397 let hb = aY(aK)
13981398 let hc = valueOrElse(getInteger(hb), 0)
13991399 $Tuple2((((((((((((((((da._5 :+ (if ((size(da._7) > 0))
14001400 then StringEntry(gX, makeString_11C(da._7, "_"))
14011401 else DeleteEntry(gX))) :+ IntegerEntry(hb, if ((da._8 > hc))
14021402 then 0
14031403 else (hc - da._8))) :+ IntegerEntry(cv(), (fs + 1))) :+ fu) :+ StringEntry(cw(gZ), ha)) :+ StringEntry(aL(ha), aK)) :+ StringEntry(cC(gZ), aK)) :+ IntegerEntry(aQ(m, ha), da._2)) :+ IntegerEntry(cB(m, ha, aK), da._2)) :+ IntegerEntry(aP(ha), gz)) :+ IntegerEntry(cA(ha, aK), gz)) :+ StringEntry(ej, makeString([eS[ai], da._4, fP, eS[al]], ":"))) :+ StringEntry(bj(), da._6)) :+ StringEntry(bh(bg), makeString([ft, "L", ha], "_"))) :+ ScriptTransfer(addressFromStringValue(aK), 1, aM)), ha)
14041404 }
14051405
14061406
14071407 func hd (aK,gN,fq) = gK("M", 3, "SSSS", aK, gN, fq, 0)
14081408
14091409
14101410 func he (aK,gN,fq,dc,gw) = {
14111411 let gA = (cl * 4)
14121412 if (if (!(dc))
14131413 then (gw != gA)
14141414 else false)
14151415 then throw(("Payment attached should be " + toString(gA)))
14161416 else gK("L", 4, "SMM", aK, gN, fq, (e * 4))
14171417 }
14181418
14191419
14201420 func hf (aK,gN,fq,dc,gw) = {
14211421 let gA = (cl * 47)
14221422 if (if (!(dc))
14231423 then (gw != gA)
14241424 else false)
14251425 then throw(("Payment attached should be " + toString(gA)))
14261426 else gK("XL", 5, "SSSML", aK, gN, fq, (e * 47))
14271427 }
14281428
14291429
14301430 func hg (aK,gN,fq,dc,gw) = {
14311431 let gA = (cl * 54)
14321432 if (if (!(dc))
14331433 then (gw != gA)
14341434 else false)
14351435 then throw(("Payment attached should be " + toString(gA)))
14361436 else gK("XXL", 6, "LXL", aK, gN, fq, (e * 54))
14371437 }
14381438
14391439
14401440 func hh (dc,aK,gw,gN,fq) = {
14411441 let hi = {
14421442 let c = size(gN)
14431443 if ((4 == c))
14441444 then hd(aK, gN, fq)
14451445 else if ((3 == c))
14461446 then he(aK, gN, fq, dc, gw)
14471447 else if ((5 == c))
14481448 then hf(aK, gN, fq, dc, gw)
14491449 else if ((2 == c))
14501450 then hg(aK, gN, fq, dc, gw)
14511451 else throw("Unknown merge")
14521452 }
14531453 hi
14541454 }
14551455
14561456
14571457 func hj (dB) = if (if ((dB.originCaller != aE))
14581458 then valueOrElse(getBoolean(bk()), false)
14591459 else false)
14601460 then throw("Contracts are under maintenance")
14611461 else StringEntry(aJ(toString(dB.originCaller)), toBase58String(dB.transactionId))
14621462
14631463
14641464 @Callable(dB)
14651465 func constructorV1 (hk) = if ((dB.caller != this))
14661466 then throw("Permission denied")
14671467 else [StringEntry(ay(), hk)]
14681468
14691469
14701470
14711471 @Callable(dB)
14721472 func setBlocked (hl) = if ((dB.caller != this))
14731473 then throw("permission denied")
14741474 else [BooleanEntry(bk(), hl)]
14751475
14761476
14771477
14781478 @Callable(dB)
14791479 func stakeLand () = {
14801480 let hm = hj(dB)
14811481 if ((size(dB.payments) != 1))
14821482 then throw("Exactly one payment required")
14831483 else {
14841484 let hn = value(dB.payments[0])
14851485 let aM = value(hn.assetId)
14861486 let ap = toString(dB.caller)
14871487 if ((hn.amount != 1))
14881488 then throw((("NFT " + k) + " token should be attached as payment"))
14891489 else {
14901490 let bW = value(assetInfo(aM))
14911491 if ((bW.issuer != this))
14921492 then throw("Unknown issuer of token")
14931493 else if (!(contains(bW.name, k)))
14941494 then throw((("Only NFT " + k) + " tokens are accepted"))
14951495 else {
14961496 let ho = drop(bW.name, 4)
14971497 let cx = if (contains(ho, "XXL"))
14981498 then dropRight(ho, 3)
14991499 else if (contains(ho, "XL"))
15001500 then dropRight(ho, 2)
15011501 else dropRight(ho, 1)
15021502 if (!(isDefined(parseInt(cx))))
15031503 then throw(("Cannot parse land number from " + bW.name))
15041504 else {
15051505 let aW = toBase58String(aM)
15061506 let gd = aO(aW)
15071507 if (isDefined(getInteger(gd)))
15081508 then throw((("NFT " + bW.name) + " is already staked"))
15091509 else {
15101510 let gg = split(bW.description, "_")
15111511 let dx = dD(gg[X])
15121512 let fS = bA(gg[W])
15131513 let bG = dC(dx, (fS / o), 1)
15141514 let fT = valueOrElse(getInteger(aQ(m, aW)), 0)
15151515 let gX = aX(ap)
15161516 let bT = getString(gX)
15171517 let bU = if (isDefined(bT))
15181518 then split_51C(value(bT), "_")
15191519 else nil
15201520 if (containsElement(bU, aW))
15211521 then throw(("Your staked lands already contain " + aW))
15221522 else {
15231523 let eC = valueOrElse(getInteger(aP(aW)), 0)
1524-[IntegerEntry(gd, lastBlock.timestamp), IntegerEntry(aS(k, aW, ap), lastBlock.timestamp), StringEntry(gX, makeString_11C((bU :+ aW), "_")), IntegerEntry(aY(ap), (valueOrElse(getInteger(aY(ap)), 0) + fS)), StringEntry(aL(aW), ap), StringEntry(cC(cx), ap), IntegerEntry(cB(m, aW, ap), fT), IntegerEntry(cA(aW, ap), eC), StringEntry(bj(), bG), hm]
1524+ let hb = aY(ap)
1525+ let hp = valueOrElse(getInteger(hb), 0)
1526+ let hq = if ((hp == 0))
1527+ then bv(invoke(aI, "onStakeLand", [ap], nil))
1528+ else -1
1529+ $Tuple2([IntegerEntry(gd, lastBlock.timestamp), IntegerEntry(aS(k, aW, ap), lastBlock.timestamp), StringEntry(gX, makeString_11C((bU :+ aW), "_")), IntegerEntry(hb, (hp + fS)), StringEntry(aL(aW), ap), StringEntry(cC(cx), ap), IntegerEntry(cB(m, aW, ap), fT), IntegerEntry(cA(aW, ap), eC), StringEntry(bj(), bG), hm], hq)
15251530 }
15261531 }
15271532 }
15281533 }
15291534 }
15301535 }
15311536 }
15321537
15331538
15341539
15351540 @Callable(dB)
15361541 func unstakeLand (fY) = {
15371542 let hm = hj(dB)
15381543 if ((size(dB.payments) != 0))
15391544 then throw("No payments required")
15401545 else {
15411546 let aK = toString(dB.caller)
15421547 let gi = fW(aK, cH, fY)
15431548 let aW = gi._2
15441549 let gX = aX(aK)
15451550 let dx = dD(gi._3[X])
15461551 let fS = bA(gi._3[W])
15471552 let bG = dC(dx, (fS / o), -1)
15481553 let gB = gu(aK, aW, fS, cH)
15491554 let bU = split_51C(valueOrElse(getString(gX), ""), "_")
15501555 let aD = indexOf(bU, aW)
15511556 if (!(isDefined(aD)))
15521557 then throw(("Your staked lands don't contain " + aW))
15531558 else {
15541559 let eh = value(blockInfoByHeight(height)).timestamp
1555- let hp = valueOrElse(getInteger(aH, bl(aK)), 0)
1556- if ((hp >= eh))
1557- then throw(("Your gWL are taking part in voting, cannot unstake until " + toString(hp)))
1560+ let hr = valueOrElse(getInteger(aH, bl(aK)), 0)
1561+ if ((hr >= eh))
1562+ then throw(("Your gWL are taking part in voting, cannot unstake until " + toString(hr)))
15581563 else {
15591564 let hb = aY(aK)
15601565 let hc = valueOrElse(getInteger(hb), 0)
1561-[ScriptTransfer(dB.caller, 1, fromBase58String(aW)), DeleteEntry(aO(aW)), DeleteEntry(aS(k, aW, aK)), StringEntry(bj(), bG), StringEntry(gB._2, makeString(gB._3, ":")), if ((size(bU) > 1))
1566+ let hs = if ((fS > hc))
1567+ then 0
1568+ else (hc - fS)
1569+ let hq = if ((hs == 0))
1570+ then bv(invoke(aI, "onUnstakeLand", [aK], nil))
1571+ else -1
1572+ $Tuple2([ScriptTransfer(dB.caller, 1, fromBase58String(aW)), DeleteEntry(aO(aW)), DeleteEntry(aS(k, aW, aK)), StringEntry(bj(), bG), StringEntry(gB._2, makeString(gB._3, ":")), if ((size(bU) > 1))
15621573 then StringEntry(gX, makeString_11C(removeByIndex(bU, value(aD)), "_"))
1563- else DeleteEntry(gX), IntegerEntry(hb, if ((fS > hc))
1564- then 0
1565- else (hc - fS)), hm]
1574+ else DeleteEntry(gX), IntegerEntry(hb, hs), hm], hq)
15661575 }
15671576 }
15681577 }
15691578 }
15701579
15711580
15721581
15731582 @Callable(dB)
15741583 func stakeDuck () = {
15751584 let hm = hj(dB)
15761585 if ((size(dB.payments) != 1))
15771586 then throw("Exactly one payment required")
15781587 else {
15791588 let hn = value(dB.payments[0])
15801589 let aM = value(hn.assetId)
15811590 let ap = toString(dB.caller)
15821591 if ((hn.amount != 1))
15831592 then throw((("NFT " + l) + " token should be attached as payment"))
15841593 else {
15851594 let bW = value(assetInfo(aM))
15861595 if (if ((bW.issuer != ce))
15871596 then (bW.issuer != cf)
15881597 else false)
15891598 then throw((("Unknown issuer of " + l) + " token"))
15901599 else if (!(contains(bW.name, l)))
15911600 then throw((("Only NFT " + l) + " tokens are accepted"))
15921601 else {
1593- let hq = toBase58String(aM)
1594- let gd = aO(hq)
1602+ let ht = toBase58String(aM)
1603+ let gd = aO(ht)
15951604 if (isDefined(getInteger(gd)))
15961605 then throw((("NFT " + bW.name) + " is already staked"))
15971606 else if (isDefined(getString(be(ap))))
15981607 then throw(("You already staked one duck: " + bW.name))
15991608 else {
1600- let hr = bh(hq)
1601- let hs = getString(hr)
1602- let ej = bf(hq)
1603- let ht = getString(ej)
1604- ([IntegerEntry(gd, lastBlock.timestamp), IntegerEntry(aS(l, toBase58String(aM), ap), lastBlock.timestamp), StringEntry(bd(hq), ap), StringEntry(be(ap), hq)] ++ (if (isDefined(hs))
1609+ let hu = bh(ht)
1610+ let hv = getString(hu)
1611+ let ej = bf(ht)
1612+ let hw = getString(ej)
1613+ ([IntegerEntry(gd, lastBlock.timestamp), IntegerEntry(aS(l, toBase58String(aM), ap), lastBlock.timestamp), StringEntry(bd(ht), ap), StringEntry(be(ap), ht)] ++ (if (isDefined(hv))
16051614 then nil
1606- else ([StringEntry(hr, w)] ++ (if (isDefined(ht))
1615+ else ([StringEntry(hu, w)] ++ (if (isDefined(hw))
16071616 then nil
1608- else (([StringEntry(ej, "0:0_0_0_0_0_0:0_0_0_0_0_0:")] :+ IntegerEntry(bi(hq), 100)) :+ hm)))))
1617+ else (([StringEntry(ej, "0:0_0_0_0_0_0:0_0_0_0_0_0:")] :+ IntegerEntry(bi(ht), 100)) :+ hm)))))
16091618 }
16101619 }
16111620 }
16121621 }
16131622 }
16141623
16151624
16161625
16171626 @Callable(dB)
1618-func unstakeDuck (hq) = {
1627+func unstakeDuck (ht) = {
16191628 let hm = hj(dB)
16201629 if ((size(dB.payments) != 0))
16211630 then throw("No payments required")
16221631 else {
1623- let aM = fromBase58String(hq)
1632+ let aM = fromBase58String(ht)
16241633 let ap = toString(dB.caller)
16251634 let bW = value(assetInfo(aM))
16261635 let gd = aO(toBase58String(aM))
16271636 if (!(isDefined(getInteger(gd))))
16281637 then throw((("NFT " + bW.name) + " is not staked"))
16291638 else if (!(isDefined(getString(be(ap)))))
16301639 then throw((("The duck " + bW.name) + " is not staked"))
16311640 else {
16321641 let gf = valueOrErrorMessage(getString(bd(toBase58String(aM))), (("NFT " + bW.name) + " is orphaned"))
16331642 if ((gf != ap))
16341643 then throw("Staked NFT is not yours")
16351644 else {
1636- let fI = bi(hq)
1637- let hu = valueOrElse(getInteger(fI), 100)
1638- if ((100 > hu))
1645+ let fI = bi(ht)
1646+ let hx = valueOrElse(getInteger(fI), 100)
1647+ if ((100 > hx))
16391648 then throw("Please heal your duck before unstaking")
1640- else [ScriptTransfer(dB.caller, 1, aM), DeleteEntry(gd), DeleteEntry(fI), DeleteEntry(bh(hq)), DeleteEntry(bd(hq)), DeleteEntry(aS(l, hq, ap)), DeleteEntry(be(ap)), hm]
1649+ else [ScriptTransfer(dB.caller, 1, aM), DeleteEntry(gd), DeleteEntry(fI), DeleteEntry(bh(ht)), DeleteEntry(bd(ht)), DeleteEntry(aS(l, ht, ap)), DeleteEntry(be(ap)), hm]
16411650 }
16421651 }
16431652 }
16441653 }
16451654
16461655
16471656
16481657 @Callable(dB)
1649-func claimRes (eP,hv) = {
1658+func claimRes (eP,hy) = {
16501659 let hm = hj(dB)
16511660 if ((size(dB.payments) != 0))
16521661 then throw("No payments required")
16531662 else {
16541663 let aK = toString(dB.originCaller)
1655- let dh = gh(aK, eP, cH, hv)
1664+ let dh = gh(aK, eP, cH, hy)
16561665 $Tuple2((((dh._1 :+ StringEntry(dh._2, makeString(dh._3, ":"))) :+ StringEntry(dh._4, makeString(dh._5, ":"))) :+ hm), dh._3[aj])
16571666 }
16581667 }
16591668
16601669
16611670
16621671 @Callable(dB)
1663-func claimResToWH (eP,hv) = {
1672+func claimResToWH (eP,hy) = {
16641673 let hm = hj(dB)
16651674 if ((size(dB.payments) != 0))
16661675 then throw("No payments required")
16671676 else {
16681677 let aK = toString(dB.originCaller)
1669- let dh = gh(aK, eP, cG, hv)
1678+ let dh = gh(aK, eP, cG, hy)
16701679 $Tuple2((((dh._1 :+ StringEntry(dh._2, makeString(dh._3, ":"))) :+ StringEntry(dh._4, makeString(dh._5, ":"))) :+ hm), dh._5[aa])
16711680 }
16721681 }
16731682
16741683
16751684
16761685 @Callable(dB)
16771686 func flight (fx,fy) = {
16781687 let hm = hj(dB)
16791688 if ((size(dB.payments) != 0))
16801689 then throw("No payments required")
16811690 else {
16821691 let bm = toString(dB.caller)
16831692 let ef = fw(bm, fx, fy)
1684- let hr = bh(ef._2)
1685- let ga = valueOrElse(getString(hr), w)
1693+ let hu = bh(ef._2)
1694+ let ga = valueOrElse(getString(hu), w)
16861695 if ((ef._4 == ga))
16871696 then throw("You can't fly to the same location")
16881697 else {
16891698 let ej = bf(ef._2)
16901699 let eS = ei(ej)
16911700 let du = di(eS[al], ef._5)
1692- $Tuple2([StringEntry(hr, if ((ef._1 > 0))
1701+ $Tuple2([StringEntry(hu, if ((ef._1 > 0))
16931702 then ef._4
16941703 else ga), StringEntry(ej, makeString([eS[ai], eS[aj], eS[ak], du], ":")), IntegerEntry(bi(ef._2), ef._1), hm], ef._3)
16951704 }
16961705 }
16971706 }
16981707
16991708
17001709
17011710 @Callable(dB)
1702-func heal (hw,hx,hy) = {
1711+func heal (hz,hA,hB) = {
17031712 let hm = hj(dB)
1704- if (if (if ((0 > hw))
1713+ if (if (if ((0 > hz))
17051714 then true
1706- else (0 > hx))
1715+ else (0 > hA))
17071716 then true
1708- else (0 > hy))
1717+ else (0 > hB))
17091718 then throw("Quantity cannot be negative")
17101719 else {
17111720 let bg = valueOrErrorMessage(getString(be(toString(dB.caller))), "You don't have a duck staked")
1712- let hz = [hw, hx, hy]
1721+ let hC = [hz, hA, hB]
17131722 let fI = bi(bg)
1714- let hA = valueOrElse(getInteger(fI), 100)
1715- if ((hA >= B))
1723+ let hD = valueOrElse(getInteger(fI), 100)
1724+ if ((hD >= B))
17161725 then throw((("HP should be < " + toString(B)) + " to heal"))
17171726 else {
17181727 let ej = bf(bg)
17191728 let eS = ei(ej)
1720- let hB = if ((eS[al] == ""))
1729+ let hE = if ((eS[al] == ""))
17211730 then nil
17221731 else split(eS[al], "_")
1723- func hC (bI,hD) = {
1732+ func hF (bI,hG) = {
17241733 let bw = bI._2
1725- let dW = if ((size(hB) > bw))
1726- then parseIntValue(hB[bw])
1734+ let dW = if ((size(hE) > bw))
1735+ then parseIntValue(hE[bw])
17271736 else 0
17281737 if ((3 > bw))
17291738 then {
1730- let hE = hz[bw]
1731- if ((hE > dW))
1739+ let hH = hC[bw]
1740+ if ((hH > dW))
17321741 then throw(((("You have only " + toString(dW)) + " of ") + E[bw]))
1733- else $Tuple3((bI._1 :+ toString((dW - hE))), (bw + 1), (bI._3 + (ch[bw] * hE)))
1742+ else $Tuple3((bI._1 :+ toString((dW - hH))), (bw + 1), (bI._3 + (ch[bw] * hH)))
17341743 }
17351744 else $Tuple3((bI._1 :+ toString(dW)), (bw + 1), bI._3)
17361745 }
17371746
17381747 let dh = {
17391748 let bL = G
17401749 let bM = size(bL)
17411750 let bN = $Tuple3(nil, 0, 0)
17421751 func bO (bP,bQ) = if ((bQ >= bM))
17431752 then bP
1744- else hC(bP, bL[bQ])
1753+ else hF(bP, bL[bQ])
17451754
17461755 func bR (bP,bQ) = if ((bQ >= bM))
17471756 then bP
17481757 else throw("List size exceeds 50")
17491758
17501759 bR(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bN, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50)
17511760 }
1752- let hF = min([B, (hA + dh._3)])
1753- $Tuple2([IntegerEntry(fI, hF), StringEntry(ej, makeString_2C([eS[ai], eS[aj], eS[ak], makeString(dh._1, "_")], ":")), hm], hF)
1761+ let hI = min([B, (hD + dh._3)])
1762+ $Tuple2([IntegerEntry(fI, hI), StringEntry(ej, makeString_2C([eS[ai], eS[aj], eS[ak], makeString(dh._1, "_")], ":")), hm], hI)
17541763 }
17551764 }
17561765 }
17571766
17581767
17591768
17601769 @Callable(dB)
17611770 func healES () = {
17621771 let hm = hj(dB)
17631772 if ((size(dB.payments) != 1))
17641773 then throw("Exactly one payment required")
17651774 else {
17661775 let hn = value(dB.payments[0])
17671776 if ((hn.assetId != b))
17681777 then throw("Allowed USDT payment only!")
17691778 else {
17701779 let bg = valueOrErrorMessage(getString(be(toString(dB.caller))), "You don't have a duck staked")
17711780 let fI = bi(bg)
1772- let hA = valueOrElse(getInteger(fI), 100)
1773- if ((hA > 0))
1781+ let hD = valueOrElse(getInteger(fI), 100)
1782+ if ((hD > 0))
17741783 then throw("HP should be 0 to call Emergency Service")
17751784 else {
17761785 let ej = bf(bg)
17771786 let eS = ei(ej)
1778- let hB = if ((eS[al] == ""))
1787+ let hE = if ((eS[al] == ""))
17791788 then nil
17801789 else split(eS[al], "_")
1781- let hG = if ((size(hB) > 0))
1782- then parseIntValue(hB[0])
1790+ let hJ = if ((size(hE) > 0))
1791+ then parseIntValue(hE[0])
17831792 else 0
1784- let hH = if ((size(hB) > 1))
1785- then parseIntValue(hB[1])
1793+ let hK = if ((size(hE) > 1))
1794+ then parseIntValue(hE[1])
17861795 else 0
1787- let hI = if ((size(hB) > 2))
1788- then parseIntValue(hB[2])
1796+ let hL = if ((size(hE) > 2))
1797+ then parseIntValue(hE[2])
17891798 else 0
1790- if (if (if ((hG > 0))
1799+ if (if (if ((hJ > 0))
17911800 then true
1792- else (hH > 0))
1801+ else (hK > 0))
17931802 then true
1794- else (hI > 0))
1803+ else (hL > 0))
17951804 then throw("You have to use own Medical Kit")
17961805 else {
1797- let hJ = getString(aG, bo())
1798- let hK = if (isDefined(hJ))
1799- then split(value(hJ), "_")
1806+ let hM = getString(aG, bo())
1807+ let hN = if (isDefined(hM))
1808+ then split(value(hM), "_")
18001809 else nil
1801- let hL = if ((size(hK) > 0))
1802- then parseIntValue(hK[0])
1810+ let hO = if ((size(hN) > 0))
1811+ then parseIntValue(hN[0])
18031812 else 0
1804- if ((0 >= hL))
1813+ if ((0 >= hO))
18051814 then throw("There are no Medical Kits L1 at Emergency Service storage")
18061815 else {
1807- let hF = (hA + ch[0])
1808- let hM = makeString([toString((hL - 1)), removeByIndex(hK, 0)], "_")
1816+ let hI = (hD + ch[0])
1817+ let hP = makeString([toString((hO - 1)), removeByIndex(hN, 0)], "_")
18091818 let ca = split(G[0], "_")
1810- let hN = bZ(ca)
1811- let hO = parseIntValue(ca[T])
1812- let hP = fraction((hN * A), x, (10 * hO))
1813- if ((hn.amount != hP))
1814- then throw(("Payment attached should be " + toString(hP)))
1819+ let hQ = bZ(ca)
1820+ let hR = parseIntValue(ca[T])
1821+ let hS = fraction((hQ * A), x, (10 * hR))
1822+ if ((hn.amount != hS))
1823+ then throw(("Payment attached should be " + toString(hS)))
18151824 else {
1816- let dh = bs(invoke(aG, "updateEsStorage", [hM], [AttachedPayment(b, hP)]))
1817- $Tuple2([IntegerEntry(fI, hF), hm], dh)
1825+ let dh = bs(invoke(aG, "updateEsStorage", [hP], [AttachedPayment(b, hS)]))
1826+ $Tuple2([IntegerEntry(fI, hI), hm], dh)
18181827 }
18191828 }
18201829 }
18211830 }
18221831 }
18231832 }
18241833 }
18251834
18261835
18271836
18281837 @Callable(dB)
1829-func updateBackpack (bg,hQ) = {
1838+func updateBackpack (bg,hT) = {
18301839 let hm = hj(dB)
18311840 if ((dB.caller != aG))
18321841 then throw("permission denied")
1833- else $Tuple2([StringEntry(bf(bg), hQ), hm], hQ)
1842+ else $Tuple2([StringEntry(bf(bg), hT), hm], hT)
18341843 }
18351844
18361845
18371846
18381847 @Callable(dB)
18391848 func buySLand () = {
18401849 let hm = hj(dB)
18411850 if ((size(dB.payments) != 1))
18421851 then throw("Exactly one payment required")
18431852 else {
18441853 let hn = value(dB.payments[0])
18451854 if ((hn.assetId != b))
18461855 then throw("Allowed USDT payment only!")
18471856 else if ((hn.amount != cn))
18481857 then throw(("Payment attached should be " + toString(cn)))
18491858 else {
18501859 let dh = fo(dB.caller, dB.transactionId)
18511860 $Tuple2(((dh._1 :+ ScriptTransfer(aG, hn.amount, b)) :+ hm), dh._2._1)
18521861 }
18531862 }
18541863 }
18551864
18561865
18571866
18581867 @Callable(dB)
18591868 func expedition (fx,fy) = {
18601869 let hm = hj(dB)
18611870 if ((size(dB.payments) != 0))
18621871 then throw("No payments required")
18631872 else {
18641873 let dh = fN(dB.caller, dB.transactionId, fx, fy)
18651874 $Tuple2((dh._1 :+ hm), $Tuple2(dh._2, dh._3))
18661875 }
18671876 }
18681877
18691878
18701879
18711880 @Callable(dB)
18721881 func upgradeInfra (aW) = {
18731882 let hm = hj(dB)
18741883 if ((size(dB.payments) != 0))
18751884 then throw("No payments required")
18761885 else {
18771886 let dh = gv(true, dB.caller, 0, aW)
18781887 $Tuple2((dh._1 :+ hm), dh._2)
18791888 }
18801889 }
18811890
18821891
18831892
18841893 @Callable(dB)
18851894 func upgradeInfraUsdt (aW) = if ((dB.caller != this))
18861895 then throw("Permission denied")
18871896 else {
18881897 let hm = hj(dB)
18891898 if ((size(dB.payments) != 1))
18901899 then throw("Exactly one payment required")
18911900 else {
18921901 let hn = value(dB.payments[0])
18931902 if ((hn.assetId != b))
18941903 then throw("Allowed USDT payment only!")
18951904 else {
18961905 let dh = gv(false, dB.caller, hn.amount, aW)
18971906 $Tuple2(((dh._1 :+ ScriptTransfer(aG, hn.amount, b)) :+ hm), dh._2)
18981907 }
18991908 }
19001909 }
19011910
19021911
19031912
19041913 @Callable(dB)
1905-func activateArtifact (hR,aW) = {
1914+func activateArtifact (hU,aW) = {
19061915 let hm = hj(dB)
19071916 if ((size(dB.payments) != 0))
19081917 then throw("No payments required")
19091918 else {
19101919 let dh = {
1911- let c = hR
1920+ let c = hU
19121921 if (("PRESALE" == c))
19131922 then gI(toString(dB.caller), aW)
19141923 else throw("Unknown artifact")
19151924 }
19161925 (dh :+ hm)
19171926 }
19181927 }
19191928
19201929
19211930
19221931 @Callable(dB)
19231932 func mergeLands (gN) = {
19241933 let hm = hj(dB)
19251934 if ((size(dB.payments) != 0))
19261935 then throw("No payments required")
19271936 else {
19281937 let dh = hh(true, toString(dB.caller), 0, gN, dB.transactionId)
19291938 $Tuple2((dh._1 :+ hm), dh._2)
19301939 }
19311940 }
19321941
19331942
19341943
19351944 @Callable(dB)
19361945 func mergeLandsUsdt (gN) = {
19371946 let hm = hj(dB)
19381947 if ((size(dB.payments) != 1))
19391948 then throw("Exactly one payment required")
19401949 else {
19411950 let hn = value(dB.payments[0])
19421951 if ((hn.assetId != b))
19431952 then throw("Allowed USDT payment only!")
19441953 else {
19451954 let dh = hh(false, toString(dB.caller), hn.amount, gN, dB.transactionId)
19461955 $Tuple2(((dh._1 :+ ScriptTransfer(aG, hn.amount, b)) :+ hm), dh._2)
19471956 }
19481957 }
19491958 }
19501959
19511960
19521961
19531962 @Callable(dB)
1954-func cargoExchange (hS,aW) = {
1963+func cargoExchange (hV,aW) = {
19551964 let hm = hj(dB)
19561965 if ((size(dB.payments) != 0))
19571966 then throw("No payments required")
19581967 else {
1959- let eR = split_4C(hS, ":")
1968+ let eR = split_4C(hV, ":")
19601969 let aK = toString(dB.originCaller)
19611970 let bW = value(assetInfo(fromBase58String(aW)))
19621971 let gd = aO(aW)
19631972 if (!(isDefined(getInteger(gd))))
19641973 then throw((bW.name + " is not staked"))
19651974 else {
19661975 let gf = valueOrErrorMessage(getString(aL(aW)), (("NFT " + bW.name) + " is orphaned"))
19671976 if ((gf != aK))
19681977 then throw((k + " is not yours"))
19691978 else {
19701979 let eB = (bA(split(bW.description, "_")[W]) / o)
19711980 let eC = valueOrElse(getInteger(aP(aW)), 0)
19721981 let bg = valueOrErrorMessage(getString(be(aK)), "You don't have a duck staked")
19731982 let ga = valueOrElse(getString(bh(bg)), w)
19741983 let gb = split(value(ga), "_")
19751984 if ((gb[bq] != "L"))
19761985 then throw((("Duck location type is " + gb[bq]) + ", but should be L"))
19771986 else if ((gb[br] != aW))
19781987 then throw(("Duck should be on the land " + aW))
19791988 else {
19801989 let eA = aV(aW)
19811990 let eo = ez(eA, eB, eC)
19821991 let ej = bf(bg)
19831992 let eS = ei(ej)
19841993 let dh = eQ(eR, eo, eS)
19851994 let eI = split(eo[ad], "_")
19861995 let gs = (parseIntValue(eI[af]) + dh._7)
19871996 let gt = (parseIntValue(eI[ag]) - dh._7)
19881997 [StringEntry(ej, makeString_2C([eS[ai], dh._4, dh._5, dh._6], ":")), StringEntry(eA, makeString_2C([eo[Z], dh._1, dh._2, dh._3, makeString([eI[ae], toString(gs), toString(gt), eI[ah]], "_")], ":")), hm]
19891998 }
19901999 }
19912000 }
19922001 }
19932002 }
19942003
19952004
19962005
19972006 @Callable(dB)
19982007 func saveWarehouse (eE,aW) = {
19992008 let hm = hj(dB)
20002009 if ((dB.caller != aG))
20012010 then throw("Access denied")
20022011 else {
20032012 let eA = aV(aW)
20042013 let eF = split_4C(eE, ":")
20052014 if ((size(eF) != 5))
20062015 then throw("warehouse string should contain 4 ':' separators")
20072016 else {
2008- let hT = split(eF[ad], "_")[ae]
2017+ let hW = split(eF[ad], "_")[ae]
20092018 let gs = en(eF)
2010- let hU = el(eF[Z])
2011- let gt = ((hU - parseIntValue(hT)) - gs)
2012- let hV = makeString_2C([eF[Z], eF[aa], eF[ab], eF[ac], makeString([hT, toString(gs), toString(gt), toString(hU)], "_")], ":")
2013- $Tuple2([StringEntry(eA, hV), hm], hV)
2019+ let hX = el(eF[Z])
2020+ let gt = ((hX - parseIntValue(hW)) - gs)
2021+ let hY = makeString_2C([eF[Z], eF[aa], eF[ab], eF[ac], makeString([hW, toString(gs), toString(gt), toString(hX)], "_")], ":")
2022+ $Tuple2([StringEntry(eA, hY), hm], hY)
20142023 }
20152024 }
20162025 }
20172026
20182027
20192028
20202029 @Callable(dB)
20212030 func fixWarehouseFormat (aW) = if ((dB.caller != aE))
20222031 then throw("Access denied")
20232032 else {
20242033 let eA = aV(aW)
20252034 let bW = value(assetInfo(fromBase58String(aW)))
20262035 let eB = (bA(split(bW.description, "_")[W]) / o)
20272036 let eC = valueOrElse(getInteger(aP(aW)), 0)
20282037 let eF = ez(eA, eB, eC)
2029- let hT = bv(invoke(aG, "recalcLockedVolumeREADONLY", [aW, eF], nil))
2038+ let hW = bv(invoke(aG, "recalcLockedVolumeREADONLY", [aW, eF], nil))
20302039 let gs = en(eF)
2031- let hU = el(eF[Z])
2032- let gt = ((hU - hT) - gs)
2033- let hV = makeString_2C([eF[Z], eF[aa], eF[ab], eF[ac], makeString([toString(hT), toString(gs), toString(gt), toString(hU)], "_")], ":")
2034- $Tuple2([StringEntry(eA, hV)], hV)
2040+ let hX = el(eF[Z])
2041+ let gt = ((hX - hW) - gs)
2042+ let hY = makeString_2C([eF[Z], eF[aa], eF[ab], eF[ac], makeString([toString(hW), toString(gs), toString(gt), toString(hX)], "_")], ":")
2043+ $Tuple2([StringEntry(eA, hY)], hY)
20352044 }
20362045
20372046
20382047
20392048 @Callable(dB)
20402049 func fixStakedPieces (ap) = if ((dB.caller != aE))
20412050 then throw("Access denied")
20422051 else {
20432052 let hc = if ((ap == ""))
20442053 then 0
20452054 else {
20462055 let bT = getString(aF, aX(ap))
20472056 let bU = if (isDefined(bT))
20482057 then split_51C(value(bT), "_")
20492058 else nil
20502059 func bV (bI,aW) = {
20512060 let bW = value(assetInfo(fromBase58String(aW)))
20522061 let bB = split(bW.description, "_")[W]
20532062 (bI + bA(bB))
20542063 }
20552064
20562065 let bL = bU
20572066 let bM = size(bL)
20582067 let bN = 0
20592068 func bO (bP,bQ) = if ((bQ >= bM))
20602069 then bP
20612070 else bV(bP, bL[bQ])
20622071
20632072 func bR (bP,bQ) = if ((bQ >= bM))
20642073 then bP
20652074 else throw("List size exceeds 100")
20662075
20672076 bR(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bN, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100)
20682077 }
20692078 $Tuple2([IntegerEntry(aY(ap), hc)], hc)
20702079 }
20712080
20722081
20732082
20742083 @Callable(dB)
20752084 func setCustomName (aM,gV,aR) = {
20762085 let hm = hj(dB)
20772086 if ((size(dB.payments) != 1))
20782087 then throw("Exactly one payment required")
20792088 else {
20802089 let hn = value(dB.payments[0])
20812090 if ((hn.assetId != b))
20822091 then throw("Allowed USDT payment only!")
20832092 else if ((hn.amount != cj))
20842093 then throw(("Payment should be " + toString(cj)))
20852094 else if (contains(gV, "__"))
20862095 then throw(("Name should not contain '__': " + gV))
20872096 else if ((size(gV) > ck))
20882097 then throw(("Name too long, maxLength=" + toString(ck)))
20892098 else {
20902099 let aK = toString(dB.originCaller)
2091- let hW = {
2100+ let hZ = {
20922101 let c = aR
20932102 if (("ACCOUNT" == c))
20942103 then {
2095- let hX = cE(gV)
2096- let hY = getString(hX)
2097- if (isDefined(hY))
2104+ let ia = cE(gV)
2105+ let ib = getString(ia)
2106+ if (isDefined(ib))
20982107 then throw(("Name already registered: " + gV))
20992108 else {
2100- let hZ = ba(aK)
2101- let ia = getString(hZ)
2102- let ib = if (isDefined(ia))
2103- then [DeleteEntry(cE(value(ia)))]
2109+ let ic = ba(aK)
2110+ let id = getString(ic)
2111+ let ie = if (isDefined(id))
2112+ then [DeleteEntry(cE(value(id)))]
21042113 else nil
2105- ((ib :+ StringEntry(hZ, gV)) :+ StringEntry(hX, aK))
2114+ ((ie :+ StringEntry(ic, gV)) :+ StringEntry(ia, aK))
21062115 }
21072116 }
21082117 else if (("LAND" == c))
21092118 then {
21102119 let bW = value(assetInfo(fromBase58String(aM)))
21112120 let gd = aO(aM)
21122121 if (!(isDefined(getInteger(gd))))
21132122 then throw((bW.name + " is not staked"))
21142123 else {
21152124 let gf = valueOrErrorMessage(getString(aL(aM)), (("NFT " + bW.name) + " is orphaned"))
21162125 if ((gf != aK))
21172126 then throw((k + " is not yours"))
21182127 else {
2119- let hX = cy(gV)
2120- let hY = getString(hX)
2121- if (isDefined(hY))
2128+ let ia = cy(gV)
2129+ let ib = getString(ia)
2130+ if (isDefined(ib))
21222131 then throw(("Name already registered: " + gV))
21232132 else {
2124- let ic = aN(aM)
2125- let ia = getString(ic)
2126- let ib = if (isDefined(ia))
2127- then [DeleteEntry(cy(value(ia)))]
2133+ let if = aN(aM)
2134+ let id = getString(if)
2135+ let ie = if (isDefined(id))
2136+ then [DeleteEntry(cy(value(id)))]
21282137 else nil
2129- ((ib :+ StringEntry(ic, gV)) :+ StringEntry(hX, aM))
2138+ ((ie :+ StringEntry(if, gV)) :+ StringEntry(ia, aM))
21302139 }
21312140 }
21322141 }
21332142 }
21342143 else if (("DUCK" == c))
21352144 then {
21362145 let bW = value(assetInfo(fromBase58String(aM)))
21372146 let gd = aO(aM)
21382147 if (if (!(isDefined(getInteger(gd))))
21392148 then true
21402149 else !(isDefined(getString(be(aK)))))
21412150 then throw((bW.name + " is not staked"))
21422151 else {
21432152 let gf = valueOrErrorMessage(getString(bd(aM)), (("NFT " + bW.name) + " is orphaned"))
21442153 if ((gf != aK))
21452154 then throw((l + " is not yours"))
21462155 else {
2147- let hX = cD(gV)
2148- let hY = getString(hX)
2149- if (isDefined(hY))
2156+ let ia = cD(gV)
2157+ let ib = getString(ia)
2158+ if (isDefined(ib))
21502159 then throw(("Name already registered: " + gV))
21512160 else {
2152- let ic = aZ(aM)
2153- let ia = getString(ic)
2154- let ib = if (isDefined(ia))
2155- then [DeleteEntry(cD(value(ia)))]
2161+ let if = aZ(aM)
2162+ let id = getString(if)
2163+ let ie = if (isDefined(id))
2164+ then [DeleteEntry(cD(value(id)))]
21562165 else nil
2157- ((ib :+ StringEntry(ic, gV)) :+ StringEntry(hX, aM))
2166+ ((ie :+ StringEntry(if, gV)) :+ StringEntry(ia, aM))
21582167 }
21592168 }
21602169 }
21612170 }
21622171 else throw("Unknown entity type")
21632172 }
2164- $Tuple2(((hW :+ ScriptTransfer(aG, hn.amount, b)) :+ hm), 0)
2173+ $Tuple2(((hZ :+ ScriptTransfer(aG, hn.amount, b)) :+ hm), 0)
21652174 }
21662175 }
21672176 }
21682177
21692178
21702179
21712180 @Callable(dB)
2172-func setReferrals (id,ie) = if ((dB.callerPublicKey != cg))
2181+func setReferrals (ig,ih) = if ((dB.callerPublicKey != cg))
21732182 then throw("Permission denied")
21742183 else {
21752184 let hm = hj(dB)
21762185 if ((size(dB.payments) != 0))
21772186 then throw("No payments required")
2178- else if (!(isDefined(addressFromString(id))))
2179- then throw(("Invalid address: " + id))
2180- else if (!(isDefined(addressFromString(ie))))
2181- then throw(("Invalid address: " + ie))
2187+ else if (!(isDefined(addressFromString(ig))))
2188+ then throw(("Invalid address: " + ig))
2189+ else if (!(isDefined(addressFromString(ih))))
2190+ then throw(("Invalid address: " + ih))
21822191 else {
2183- let if = cF()
2184- let ig = getString(if)
2185- let ih = if (isDefined(ig))
2186- then split_4C(value(ig), "_")
2192+ let ii = cF()
2193+ let ij = getString(ii)
2194+ let ik = if (isDefined(ij))
2195+ then split_4C(value(ij), "_")
21872196 else nil
2188- if (containsElement(ih, ie))
2189- then throw((ie + " is not newbie (already has referrals)"))
2197+ if (containsElement(ik, ih))
2198+ then throw((ih + " is not newbie (already has referrals)"))
21902199 else {
2191- let ii = bb(ie)
2192- let ij = getString(ii)
2193- if (if (isDefined(ij))
2194- then isDefined(addressFromString(value(ij)))
2200+ let il = bb(ih)
2201+ let im = getString(il)
2202+ if (if (isDefined(im))
2203+ then isDefined(addressFromString(value(im)))
21952204 else false)
2196- then throw(((ie + " already has refBy: ") + value(ij)))
2205+ then throw(((ih + " already has refBy: ") + value(im)))
21972206 else {
2198- let ik = bc(id)
2199- let il = getString(ik)
2200- let im = if (isDefined(il))
2201- then split_4C(value(il), "_")
2207+ let in = bc(ig)
2208+ let io = getString(in)
2209+ let ip = if (isDefined(io))
2210+ then split_4C(value(io), "_")
22022211 else nil
2203- if (containsElement(im, ie))
2204- then throw((((id + " already contains ") + ie) + " within referrals"))
2212+ if (containsElement(ip, ih))
2213+ then throw((((ig + " already contains ") + ih) + " within referrals"))
22052214 else {
2206- let in = makeString_2C((im :+ ie), "_")
2207- let io = if (containsElement(ih, id))
2208- then value(ig)
2209- else makeString_2C((ih :+ id), "_")
2210- $Tuple2([StringEntry(ii, id), StringEntry(ik, in), StringEntry(if, io), hm], 0)
2215+ let iq = makeString_2C((ip :+ ih), "_")
2216+ let ir = if (containsElement(ik, ig))
2217+ then value(ij)
2218+ else makeString_2C((ik :+ ig), "_")
2219+ $Tuple2([StringEntry(il, ig), StringEntry(in, iq), StringEntry(ii, ir), hm], 0)
22112220 }
22122221 }
22132222 }
22142223 }
22152224 }
22162225
22172226
22182227
22192228 @Callable(dB)
22202229 func splitByGlobalWeightsREADONLY (eP) = $Tuple2(nil, cZ(eP))
22212230
22222231
22232232
22242233 @Callable(dB)
2225-func splitByGlobalAndLocalWeightsREADONLY (ip,iq,dE) = {
2234+func splitByGlobalAndLocalWeightsREADONLY (is,it,dE) = {
22262235 let dx = dD(dE)
2227- $Tuple2(nil, $Tuple2(cZ(ip), cS(iq, dx)))
2236+ $Tuple2(nil, $Tuple2(cZ(is), cS(it, dx)))
22282237 }
22292238
22302239
22312240
22322241 @Callable(dB)
22332242 func getBackpackREADONLY (bg) = $Tuple2(nil, makeString(ei(bf(bg)), ":"))
22342243
22352244
22362245
22372246 @Callable(dB)
22382247 func getWarehouseREADONLY (aW) = {
22392248 let bW = value(assetInfo(fromBase58String(aW)))
22402249 let eB = (bA(split(bW.description, "_")[W]) / o)
22412250 let eC = valueOrElse(getInteger(aP(aW)), 0)
22422251 $Tuple2(nil, makeString_2C(ez(aV(aW), eB, eC), ":"))
22432252 }
22442253
22452254
22462255
22472256 @Callable(dB)
22482257 func saveLastTx () = if ((dB.caller != aI))
22492258 then throw("Access denied")
22502259 else $Tuple2([hj(dB)], 42)
22512260
22522261

github/deemru/w8io/03bedc9 
362.62 ms