tx · 9iCofFmGB55kmxJ8EUHWbiV5pWLtJsgmEgUBWMtaH6Cb 3NDCyBG5q85JuaRiigUeEtainyjCQT3XpZm: -0.10500000 Waves 2023.09.23 17:41 [2768161] smart account 3NDCyBG5q85JuaRiigUeEtainyjCQT3XpZm > SELF 0.00000000 Waves
{ "type": 13, "id": "9iCofFmGB55kmxJ8EUHWbiV5pWLtJsgmEgUBWMtaH6Cb", "fee": 10500000, "feeAssetId": null, "timestamp": 1695480077959, "version": 2, "chainId": 84, "sender": "3NDCyBG5q85JuaRiigUeEtainyjCQT3XpZm", "senderPublicKey": "EVooykMNV691Venwp1dHUTBd7KWequzUcda57Wd3LQEX", "proofs": [ "5PNJSh55MvaRAuuDXD2Kyw5gqksQdSbqC7YYetvXtCRysQLD1G8TtUL83n5e9qB4jXRUd5LjqhuvqyfYbsbguonJ" ], "script": "base64:BgLgAQgCEgMKAQgSAwoBBBIAEgMKAQgSABIDCgEIEgQKAgEIEgQKAgEIEgQKAgICEgUKAwEBARIAEgQKAggIEgASAwoBCBIAEgQKAgICEgASAwoBCBIECgIICBIDCgEYEgQKAggIEgQKAggIEgMKAQgSAwoBGBIDCgEIEgUKAwgICBIECgIICBIHCgUBAQEBARIDCgEBEgUKAwEBCBIDCgEIEgMKAQgSABIECgIIARIECgIIARIDCgEIEgQKAggIEgMKAQgSABIDCgEIEgMKAQgSAwoBCBIECgICAhIECgICAhIAmQIACURBWU1JTExJUwCAuJkpARRrZXlMYXN0QXJiVGltZUJ5VXNlcgEEYWRkcgkArAICAhBsYXN0QXJiVGltZVVzZXJfBQRhZGRyAAZTQ0FMRTgAgMLXLwAMeHBMZXZlbFNjYWxlAIAZAA94cExldmVsUmVjaXBQb3cAoB8AEm51bVBvaW50c09uTGV2ZWxVcAADAA5yb2JiZXJ5Q29zdE1pbgCAwtcvABRyb2JiZXJ5Q29vbGRvd25Db2VmZgCQAwAMcmVxdWlyZW1lbnRzCQDMCAICCFN0cmVuZ3RoCQDMCAICCEFjY3VyYWN5CQDMCAICCUludGVsbGVjdAkAzAgCAglFbmR1cmFuY2UJAMwIAgIJRGV4dGVyaXR5CQDMCAICBUxldmVsCQDMCAICBkhlYWx0aAUDbmlsAAxjaGFyU3RyZW5ndGgAAAAMY2hhckFjY3VyYWN5AAEADWNoYXJJbnRlbGxlY3QAAgANY2hhckVuZHVyYW5jZQADAA1jaGFyRGV4dGVyaXR5AAQAC3NlZ0JhY2twYWNrAAAAC05VTVNFR01FTlRTAAYACk5VTU1BSU5BVVgAAgAITUFYU0xPVFMAAgANTUFYUFJPRElOU0xPVAAeABBsYW5kUm9iQ29vbGRvd25zCQDMCAIAAAkAzAgCAMDPJAkAzAgCAKD3NgkAzAgCAIDczBQJAMwIAgCArqYKBQNuaWwADk1JTl9SRVNfVE9fUk9CAIDaxAkADHJvYklkeExvY2tlZAABAAtkdWNrSWR4RnJlZQAAABBkdWNrSWR4UHJlcGFyaW5nAAEBDWtleUR1Y2tIZWFsdGgBC2R1Y2tBc3NldElkCQCsAgICC2R1Y2tIZWFsdGhfBQtkdWNrQXNzZXRJZAEMa2V5RHVja0NoYXJzAQtkdWNrQXNzZXRJZAkArAICAgpkdWNrQ2hhcnNfBQtkdWNrQXNzZXRJZAEJa2V5RHVja1hQAQtkdWNrQXNzZXRJZAkArAICAgdkdWNrWFBfBQtkdWNrQXNzZXRJZAEMa2V5RHVja0xldmVsAQtkdWNrQXNzZXRJZAkArAICAgpkdWNrTGV2ZWxfBQtkdWNrQXNzZXRJZAERa2V5RHVja0ZyZWVQb2ludHMBC2R1Y2tBc3NldElkCQCsAgICD2R1Y2tGcmVlUG9pbnRzXwULZHVja0Fzc2V0SWQBEGtleUR1Y2tFcXVpcG1lbnQBC2R1Y2tBc3NldElkCQCsAgICDmR1Y2tFcXVpcG1lbnRfBQtkdWNrQXNzZXRJZAEJa2V5VXNlclhQAQRhZGRyCQCsAgICB3VzZXJYUF8FBGFkZHIBDGtleVVzZXJMZXZlbAEEYWRkcgkArAICAgp1c2VyTGV2ZWxfBQRhZGRyARFrZXlVc2VyRnJlZVBvaW50cwEEYWRkcgkArAICAg91c2VyRnJlZVBvaW50c18FBGFkZHIBDmtleVNhdmVkSGVhbHRoAQtkdWNrQXNzZXRJZAkArAICAgxzYXZlZEhlYWx0aF8FC2R1Y2tBc3NldElkARBrZXlTYXZlZExvY2F0aW9uAQtkdWNrQXNzZXRJZAkArAICAg5zYXZlZExvY2F0aW9uXwULZHVja0Fzc2V0SWQBDGtleUR1Y2tCdWZmcwELZHVja0Fzc2V0SWQJAKwCAgIKZHVja0J1ZmZzXwULZHVja0Fzc2V0SWQBGGtleUxhc3RSb2JiZXJ5VGltZUJ5RHVjawELZHVja0Fzc2V0SWQJAKwCAgIQbGFzdFJvYmJlcnlUaW1lXwULZHVja0Fzc2V0SWQBGGtleUxhc3RSb2JiZXJ5Q29zdEJ5RHVjawELZHVja0Fzc2V0SWQJAKwCAgIQbGFzdFJvYmJlcnlDb3N0XwULZHVja0Fzc2V0SWQBE2tleUxhbmRSb2JiZXJ5U3RhdGUBC2xhbmRBc3NldElkCQCsAgICEWxhbmRSb2JiZXJ5U3RhdGVfBQtsYW5kQXNzZXRJZAESa2V5TGFuZENvb2xkb3duRVRBAQtsYW5kQXNzZXRJZAkArAICAhBsYW5kQ29vbGRvd25FVEFfBQtsYW5kQXNzZXRJZAETa2V5RHVja1JvYmJlcnlTdGF0ZQELZHVja0Fzc2V0SWQJAKwCAgIRZHVja1JvYmJlcnlTdGF0ZV8FC2R1Y2tBc3NldElkARNrZXlMb2NrZWRMYW5kQnlEdWNrAQtkdWNrQXNzZXRJZAkArAICAhFsb2NrZWRMYW5kQnlEdWNrXwULZHVja0Fzc2V0SWQBFmtleURlbGl2ZXJ5RGVsYXlCeUR1Y2sBC2R1Y2tBc3NldElkCQCsAgICFGRlbGl2ZXJ5RGVsYXlCeUR1Y2tfBQtkdWNrQXNzZXRJZAAHeHBDbGFpbQCQTgAPeHBTdWNjZXNzRmxpZ2h0AJBOAAx4cEZhaWxGbGlnaHQA0A8ACHhwQ2FsbEVTAKCNBgAMeHBDdXN0b21OYW1lAMCEPQAKeHBOZXdTTGFuZADAlrECAA54cFVwZ3JhZGVJbmZyYQCQTgAHeHBNZXJnZQDAhD0ACXhwT25ib2FyZADAhD0ABnhwSGVhbACQTgEJbGV2ZWxCeVhQAQJ4cAkAawMFDHhwTGV2ZWxTY2FsZQkAbAYFAnhwAAQFD3hwTGV2ZWxSZWNpcFBvdwAEAAQFBERPV04FBlNDQUxFOAEJbWF4SGVhbHRoAQVsZXZlbAkAZAIAZAUFbGV2ZWwBB2xldmVsVXACCWN1cnJMZXZlbAVuZXdYUAQIbmV3TGV2ZWwJAQlsZXZlbEJ5WFABBQVuZXdYUAkAzAgCBQhuZXdMZXZlbAkAzAgCCQBoAgUSbnVtUG9pbnRzT25MZXZlbFVwCQBlAgUIbmV3TGV2ZWwFCWN1cnJMZXZlbAUDbmlsAQxnZXREdWNrU3RhdHMED3N0YWtpbmdDb250cmFjdAtkdWNrQXNzZXRJZApidWZmRWZmZWN0CmZvcmNlQnVmZnMEBWNoYXJzCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUPc3Rha2luZ0NvbnRyYWN0CQEMa2V5RHVja0NoYXJzAQULZHVja0Fzc2V0SWQCCTBfMF8wXzBfMAIBXwQDbHZsCQELdmFsdWVPckVsc2UCCQCaCAIFD3N0YWtpbmdDb250cmFjdAkBDGtleUR1Y2tMZXZlbAEFC2R1Y2tBc3NldElkAAAEBmhlYWx0aAkBC3ZhbHVlT3JFbHNlAgkAmggCBQ9zdGFraW5nQ29udHJhY3QJAQ1rZXlEdWNrSGVhbHRoAQULZHVja0Fzc2V0SWQJAQltYXhIZWFsdGgBBQNsdmwECnN0YXRlQnVmZnMJALUJAgkBC3ZhbHVlT3JFbHNlAgkAnQgCBQ9zdGFraW5nQ29udHJhY3QJAQxrZXlEdWNrQnVmZnMBBQtkdWNrQXNzZXRJZAIJMF8wXzBfMF8wAgFfCQDOCAIJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBWNoYXJzBQxjaGFyU3RyZW5ndGgJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBWNoYXJzBQxjaGFyQWNjdXJhY3kJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBWNoYXJzBQ1jaGFySW50ZWxsZWN0CQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVjaGFycwUNY2hhckVuZHVyYW5jZQkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFY2hhcnMFDWNoYXJEZXh0ZXJpdHkJAMwIAgUDbHZsCQDMCAIFBmhlYWx0aAUDbmlsAwUKZm9yY2VCdWZmcwkAzAgCBQpidWZmRWZmZWN0CQDMCAIFCmJ1ZmZFZmZlY3QJAMwIAgUKYnVmZkVmZmVjdAkAzAgCBQpidWZmRWZmZWN0CQDMCAIFCmJ1ZmZFZmZlY3QFA25pbAkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUKc3RhdGVCdWZmcwUMY2hhclN0cmVuZ3RoCQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQpzdGF0ZUJ1ZmZzBQxjaGFyQWNjdXJhY3kJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCnN0YXRlQnVmZnMFDWNoYXJJbnRlbGxlY3QJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCnN0YXRlQnVmZnMFDWNoYXJFbmR1cmFuY2UJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCnN0YXRlQnVmZnMFDWNoYXJEZXh0ZXJpdHkFA25pbAEOZ2V0Um9iYmVyeURhdGECD3N0YWtpbmdDb250cmFjdAtkdWNrQXNzZXRJZAQLbGFzdFJvYkNvc3QJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPc3Rha2luZ0NvbnRyYWN0CQEYa2V5TGFzdFJvYmJlcnlDb3N0QnlEdWNrAQULZHVja0Fzc2V0SWQAAAQLbGFzdFJvYlRpbWUJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPc3Rha2luZ0NvbnRyYWN0CQEYa2V5TGFzdFJvYmJlcnlUaW1lQnlEdWNrAQULZHVja0Fzc2V0SWQAAAQDbm93CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQHcm9iQ29zdAkAlgMBCQDMCAIFDnJvYmJlcnlDb3N0TWluCQDMCAIJAGUCBQtsYXN0Um9iQ29zdAkAaAIFFHJvYmJlcnlDb29sZG93bkNvZWZmCQBlAgUDbm93BQtsYXN0Um9iVGltZQUDbmlsBAlkdWNrU3RhdGUJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPc3Rha2luZ0NvbnRyYWN0CQETa2V5RHVja1JvYmJlcnlTdGF0ZQEFC2R1Y2tBc3NldElkAAAECmxvY2tlZExhbmQJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUPc3Rha2luZ0NvbnRyYWN0CQETa2V5TG9ja2VkTGFuZEJ5RHVjawEFC2R1Y2tBc3NldElkAgAEB2xhbmRFVEEJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPc3Rha2luZ0NvbnRyYWN0CQESa2V5TGFuZENvb2xkb3duRVRBAQUKbG9ja2VkTGFuZAAACQCXCgUFB3JvYkNvc3QFC2xhc3RSb2JUaW1lBQlkdWNrU3RhdGUFCmxvY2tlZExhbmQFB2xhbmRFVEEACkxBTkRQUkVGSVgCBExBTkQACkRVQ0tQUkVGSVgCBERVQ0sACkFSVFBSRVNBTEUCB1BSRVNBTEUABk5VTVJFUwAGABhNQVhfTEFORFNfU1RBS0VEX0JZX1VTRVIAGQAPREFJTFlSRVNCWVBJRUNFAID40gEADFdITVVMVElQTElFUgCAyK+gJQAPREVGQVVMVExPQ0FUSU9OAg9BZnJpY2FfRl9BZnJpY2EAEFJFU09VUkNFUFJJQ0VNSU4A1bUCAApFU1NFTExDT0VGAAoAFU1JTl9VU0RUX0ZFRV9ERUxJVkVSWQDQhgMAElRFTl9NSU5VVEVTX01JTExJUwDAzyQACXByb2RUeXBlcwkAzAgCAhBGaXJzdCBBaWQgS2l0IEwxCQDMCAICEEZpcnN0IEFpZCBLaXQgTDIJAMwIAgIQRmlyc3QgQWlkIEtpdCBMMwkAzAgCAgtCYWNrcGFjayBMMQkAzAgCAgtCYWNrcGFjayBMMgkAzAgCAgtCYWNrcGFjayBMMwkAzAgCAg5Gb29kIFJhdGlvbiBMMQkAzAgCAg5Gb29kIFJhdGlvbiBMMgkAzAgCAg5Gb29kIFJhdGlvbiBMMwkAzAgCAgtKZXQgUGFjayBMMQkAzAgCAgtKZXQgUGFjayBMMgkAzAgCAgtKZXQgUGFjayBMMwkAzAgCAglTaGllbGQgTDEJAMwIAgIJU2hpZWxkIEwyCQDMCAICCVNoaWVsZCBMMwkAzAgCAgdNaW5lIEwxCQDMCAICB01pbmUgTDIJAMwIAgIHTWluZSBMMwkAzAgCAgdUcmFwIEwxCQDMCAICB1RyYXAgTDIJAMwIAgIHVHJhcCBMMwUDbmlsAApjb250aW5lbnRzCQDMCAICCEFtZXJpY2FzCQDMCAICBkV1cm9wZQkAzAgCAgRBc2lhCQDMCAICBkFmcmljYQkAzAgCAgdPY2VhbmlhBQNuaWwACUNPRUZGMk1BVACAreIEABBmb3J0QWxsb3dlZFByb2RzCQDMCAIADwkAzAgCABAJAMwIAgARCQDMCAIAEgkAzAgCABMJAMwIAgAUBQNuaWwAEHByb2R1Y3Rpb25NYXRyaXgJAMwIAgIlOF84XzhfMTdfMTdfNDJfMTJfMF8zMF8wLDAsMCwwLDAsMCwwXwkAzAgCAiU4XzhfOF8xN18xN180Ml8yNF8wXzYwXzAsMCw1LDIsMCwwLDBfCQDMCAICJzhfOF84XzE3XzE3XzQyXzM2XzBfMTIwXzAsMCwxMCw0LDAsMCwwXwkAzAgCAik4XzE5XzE5XzhfMjdfMTlfMjZfMV8yMF8wLDAsMCwwLDAsMCwwXzAwMQkAzAgCAik4XzE5XzE5XzhfMjdfMTlfNTJfMV80MF8wLDAsMCwwLDAsMCwwXzAwMQkAzAgCAik4XzE5XzE5XzhfMjdfMTlfNzhfMV84MF8wLDAsMCwwLDAsMCwwXzAwMQkAzAgCAiU4XzhfOF84XzhfNjBfMTNfMl8yXzAsMCwwLDAsMCwwLDBfMDExCQDMCAICJThfOF84XzhfOF82MF8yNl8yXzRfMCwwLDAsMCwwLDAsMF8wMTEJAMwIAgIlOF84XzhfOF84XzYwXzM5XzJfOF8wLDAsMCwwLDAsMCwwXzAxMQkAzAgCAikzMF8zMF8zXzE3XzE3XzNfMzBfM18zMF8wLDAsMCwwLDAsMCwwXzExMQkAzAgCAikzMF8zMF8zXzE3XzE3XzNfNjBfM181MF8wLDAsMCwwLDAsMCwwXzExMQkAzAgCAikzMF8zMF8zXzE3XzE3XzNfOTBfM183MF8wLDAsMCwwLDAsMCwwXzExMQkAzAgCAisxOF8xOF8xMF8xOF8xOF8xOF8xMV80XzEwXzAsMCwwLDAsMCwwLDBfMjAxCQDMCAICKzE4XzE4XzEwXzE4XzE4XzE4XzIyXzRfMjBfMCwwLDAsMCwwLDAsMF8yMDEJAMwIAgIrMThfMThfMTBfMThfMThfMThfMzNfNF8zMF8wLDAsMCwwLDAsMCwwXzIwMQkAzAgCAio0XzEzXzIyXzRfMzVfMjJfMjNfMF81MCwxLDBfMCwwLDAsMCwwLDAsMF8JAMwIAgIqNF8xM18yMl80XzM1XzIyXzQ2XzBfNTAsMSwxXzAsMiw1LDAsMCwwLDBfCQDMCAICKzRfMTNfMjJfNF8zNV8yMl82OV8wXzUwLDIsMV8wLDUsMTAsMCwwLDAsMF8JAMwIAgIqNV8yNV80MF81XzEwXzE1XzIwXzFfMzAsMSwxXzAsMCwwLDAsMCwwLDBfCQDMCAICKjVfMjVfNDBfNV8xMF8xNV80MF8xXzMwLDEsMl8yLDEsMywwLDAsMCwwXwkAzAgCAio1XzI1XzQwXzVfMTBfMTVfNjBfMV8zMCwxLDNfNSwyLDgsMCwwLDAsMF8FA25pbAAJcklkeENvZWZmAAYACnJJZHhFZmZlY3QACAAQcklkeFJlcXVpcmVtZW50cwAJAAlySWR4U2xvdHMACgAOUFJPRFVDVFBLR1NJWkUACgALd2hJZHhMZXZlbHMAAAAId2hJZHhSZXMAAQAId2hJZHhNYXQAAgAJd2hJZHhQcm9kAAMACXdoSWR4TE9GVAAEAAl2b2xMb2NrZWQAAAALdm9sT2NjdXBpZWQAAQAHdm9sRnJlZQACAAh2b2xUb3RhbAADAApicElkeExldmVsAAAACGJwSWR4UmVzAAEACGJwSWR4TWF0AAIACWJwSWR4UHJvZAADAA9sb2NJZHhDb250aW5lbnQAAAAKbG9jSWR4VHlwZQABAAhsb2NJZHhJZAACARVrZXlMYW5kQXNzZXRJZFRvT3duZXIBB2Fzc2V0SWQJAKwCAgIDbm9fBQdhc3NldElkARprZXlMYW5kQXNzZXRJZFRvQ3VzdG9tTmFtZQEHYXNzZXRJZAkArAICAgVsY25hXwUHYXNzZXRJZAEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEHYXNzZXRJZAkArAICAgNzdF8FB2Fzc2V0SWQBIGtleUxhbmRBcnRTdGF0dXNCeVR5cGVBbmRBc3NldElkAgR0eXBlB2Fzc2V0SWQJALkJAgkAzAgCAgNsYXMJAMwIAgUEdHlwZQkAzAgCBQdhc3NldElkBQNuaWwCAV8BImtleVN0YWtlZFRpbWVCeVR5cGVBc3NldElkQW5kT3duZXIDB25mdFR5cGUHYXNzZXRJZAlvd25lckFkZHIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAgZzdHRhb18FB25mdFR5cGUCAV8FB2Fzc2V0SWQCAV8FCW93bmVyQWRkcgESa2V5V2FyZWhvdXNlQnlMYW5kAQtsYW5kQXNzZXRJZAkArAICAgN3aF8FC2xhbmRBc3NldElkARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQdhc3NldElkCQCsAgICC2luZnJhTGV2ZWxfBQdhc3NldElkARdrZXlGb3J0aWZpY2F0aW9uc0J5TGFuZAELbGFuZEFzc2V0SWQJAKwCAgIPZm9ydGlmaWNhdGlvbnNfBQtsYW5kQXNzZXRJZAEaa2V5RHVja0Fzc2V0SWRUb0N1c3RvbU5hbWUBB2Fzc2V0SWQJAKwCAgIYZHVja0N1c3RvbU5hbWVCeUFzc2V0SWRfBQdhc3NldElkARZrZXlBZGRyZXNzVG9DdXN0b21OYW1lAQRhZGRyCQCsAgICGGFjY291bnRDdXN0b21OYW1lQnlBZGRyXwUEYWRkcgEPa2V5QWRkcmVzc1JlZkJ5AQRhZGRyCQCsAgICCWFjY1JlZkJ5XwUEYWRkcgEca2V5T25ib2FyZEFydEFjdGl2YXRlZE9uRHVjawELZHVja0Fzc2V0SWQJAKwCAgIab25ib2FyZEFydEFjdGl2YXRlZE9uRHVja18FC2R1Y2tBc3NldElkARxrZXlPbmJvYXJkQXJ0RHVja0FjdGl2YXRlZEJ5AQRhZGRyCQCsAgICGm9uYm9hcmRBcnRBY3RpdmF0ZWREdWNrQnlfBQRhZGRyARNrZXlBZGRyZXNzUmVmZXJyYWxzAQRhZGRyCQCsAgICDWFjY1JlZmVycmFsc18FBGFkZHIBEGtleUR1Y2tJZFRvT3duZXIBB2Fzc2V0SWQJAKwCAgIKZHVja093bmVyXwUHYXNzZXRJZAEUa2V5U3Rha2VkRHVja0J5T3duZXIBCW93bmVyQWRkcgkArAICAhJzdGFrZWREdWNrQnlPd25lcl8FCW93bmVyQWRkcgERa2V5QmFja3BhY2tCeUR1Y2sBC2R1Y2tBc3NldElkCQCsAgICCWJhY2tQYWNrXwULZHVja0Fzc2V0SWQBD2tleUR1Y2tMb2NhdGlvbgELZHVja0Fzc2V0SWQJAKwCAgINZHVja0xvY2F0aW9uXwULZHVja0Fzc2V0SWQBFWtleVVzZXJHd2xSZWxlYXNlVGltZQEIdXNlckFkZHIJAKwCAgIaJXMlc19fdXNlckd3bFJlbGVhc2VUaW1lX18FCHVzZXJBZGRyAQ5rZXlFc1dhcmVob3VzZQACGmVtZXJnZW5jeVdhcmVob3VzZVByb2R1Y3RzAA9kZWxpdmVyeUZ1bmRLZXkCDGRlbGl2ZXJ5RnVuZAARZGVsaXZlcnlMb2NrZWRLZXkCDmRlbGl2ZXJ5TG9ja2VkAA1sYXN0VG91cklkS2V5Ag4lc19fbGFzdFRvdXJJZAEVa2V5VG91clN0YXRpY0RhdGFCeUlkAQN0SWQJAKwCAgIWJXMlZF9fdG91clN0YXRpY0RhdGFfXwkApAMBBQN0SWQBFmtleVRvdXJEeW5hbWljRGF0YUJ5SWQBA3RJZAkArAICAhclcyVkX190b3VyRHluYW1pY0RhdGFfXwkApAMBBQN0SWQBGmtleUJlc3RSZXN1bHRCeVRvdXJBbmREdWNrAgN0SWQLZHVja0Fzc2V0SWQJALkJAgkAzAgCAh8lcyVkJXNfX2Jlc3RSZXN1bHRCeVRvdXJBbmREdWNrCQDMCAIJAKQDAQUDdElkCQDMCAIFC2R1Y2tBc3NldElkBQNuaWwCAl9fAAlpZHhTdGF0aWMAAAAKaWR4RHluYW1pYwABAAp0U3RhdGljRW5kAAYADnREeW5hbWljU3RhdHVzAAEBC2dldFRvdXJEYXRhAgx0b3VyQ29udHJhY3QDdElkBAZzdGF0aWMJALUJAgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFDHRvdXJDb250cmFjdAkBFWtleVRvdXJTdGF0aWNEYXRhQnlJZAEFA3RJZAkArAICCQCsAgICGUVycm9yIHJlYWRpbmcgdG91cm5hbWVudCAJAKQDAQUDdElkAgUgZGF0YQICX18EB2R5bmFtaWMJALwJAgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFDHRvdXJDb250cmFjdAkBFmtleVRvdXJEeW5hbWljRGF0YUJ5SWQBBQN0SWQJAKwCAgkArAICAhlFcnJvciByZWFkaW5nIHRvdXJuYW1lbnQgCQCkAwEFA3RJZAIFIGRhdGECAl9fCQDMCAIFBnN0YXRpYwkAzAgCBQdkeW5hbWljBQNuaWwBDmlzSW5Ub3VybmFtZW50Agx0b3VyQ29udHJhY3QIbG9jYXRpb24EBmxhc3RJZAkBC3ZhbHVlT3JFbHNlAgkAmggCBQx0b3VyQ29udHJhY3QFDWxhc3RUb3VySWRLZXkAAAQDbG9jCQC1CQIFCGxvY2F0aW9uAgFfBANub3cIBQlsYXN0QmxvY2sJdGltZXN0YW1wBAV0RGF0YQkBC2dldFRvdXJEYXRhAgUMdG91ckNvbnRyYWN0BQZsYXN0SWQEBnN0YXRpYwkAkQMCBQV0RGF0YQUJaWR4U3RhdGljBAdkeW5hbWljCQCRAwIFBXREYXRhBQppZHhEeW5hbWljAwMDCQAAAgkAkQMCBQNsb2MFCmxvY0lkeFR5cGUCAVQJAAACCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDbG9jBQ9sb2NJZHhDb250aW5lbnQFBmxhc3RJZAcJAAACCQCRAwIFB2R5bmFtaWMFDnREeW5hbWljU3RhdHVzAgpJTlBST0dSRVNTBwkAZgIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQZzdGF0aWMFCnRTdGF0aWNFbmQFA25vdwcBDGlzSW5EZWxpdmVyeQEIbG9jYXRpb24EA2xvYwkAtQkCBQhsb2NhdGlvbgIBXwQDbm93CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQJc3RhcnRUaW1lCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDbG9jBQ9sb2NJZHhDb250aW5lbnQECGRpc3RhbmNlCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDbG9jBQhsb2NJZHhJZAMDCQAAAgkAkQMCBQNsb2MFCmxvY0lkeFR5cGUCAUQJAGYCBQNub3cJAGQCBQlzdGFydFRpbWUFElRFTl9NSU5VVEVTX01JTExJUwcJAGcCAAMFCGRpc3RhbmNlBwEPaXNVc3VhbExvY2F0aW9uAQhsb2NhdGlvbgQHbG9jVHlwZQkAkQMCCQC1CQIFCGxvY2F0aW9uAgFfBQpsb2NJZHhUeXBlAwkBAiE9AgUHbG9jVHlwZQIBVAkBAiE9AgUHbG9jVHlwZQIBRAcBDG5vdE9uTWlzc2lvbgIMdG91ckNvbnRyYWN0CGxvY2F0aW9uBAZsYXN0SWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUMdG91ckNvbnRyYWN0BQ1sYXN0VG91cklkS2V5AAAEA2xvYwkAtQkCBQhsb2NhdGlvbgIBXwQDbm93CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQFdERhdGEJAQtnZXRUb3VyRGF0YQIFDHRvdXJDb250cmFjdAUGbGFzdElkBAZzdGF0aWMJAJEDAgUFdERhdGEFCWlkeFN0YXRpYwQHZHluYW1pYwkAkQMCBQV0RGF0YQUKaWR4RHluYW1pYwQHbG9jVHlwZQkAkQMCBQNsb2MFCmxvY0lkeFR5cGUDAwkBAiE9AgUHbG9jVHlwZQIBVAkBAiE9AgUHbG9jVHlwZQIBRAcGCQEBIQEDAwMJAAACCQCRAwIFA2xvYwUKbG9jSWR4VHlwZQIBVAkAAAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNsb2MFD2xvY0lkeENvbnRpbmVudAUGbGFzdElkBwkAAAIJAJEDAgUHZHluYW1pYwUOdER5bmFtaWNTdGF0dXMCCklOUFJPR1JFU1MHCQBmAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBnN0YXRpYwUKdFN0YXRpY0VuZAUDbm93BwESZ2V0UmVjaXBlTWF0ZXJpYWxzAQZyZWNpcGUJAGgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUGcmVjaXBlBQlySWR4Q29lZmYFCUNPRUZGMk1BVAEMY2hlYXRBdHRlbXB0AgZvbGRMb2MGbmV3TG9jCQACAQkArAICCQCsAgIJAKwCAgIWQ2hlYXQgYXR0ZW1wdDogb2xkTG9jPQUGb2xkTG9jAgksIG5ld0xvYz0FBm5ld0xvYwAWS1NfU0VQQVJBVEVfUFVCTElDX0tFWQcAGEtTX0FMTE9XX0JJR19JTkZSQV9NRVJHRQcAEUtTX0FMTE9XX0RFTElWRVJZBgAFY2hhaW4JAMkBAgkAygECCAUEdGhpcwVieXRlcwABAAEAC3VzZHRBc3NldElkBAckbWF0Y2gwBQVjaGFpbgMJAAACAQFXBQckbWF0Y2gwASCE2nqyCAM/TtG7yo7ui5O8yYLdC136B5ao1CP5qA//uQMJAAACAQFUBQckbWF0Y2gwASBVsdifcoeC7+XjW42sBatl3ppDoS8WuwXzGreHpfHFGAkAAgECDVVua25vd24gY2hhaW4AFWRlZmF1bHRSZXN0QWRkcmVzc1N0cgQHJG1hdGNoMAUFY2hhaW4DCQAAAgEBVwUHJG1hdGNoMAIjM1BRQ3V2RmJ2aDRMa1BVbnJuVTF6M2puYkExcDltM1dOaHYDCQAAAgEBVAUHJG1hdGNoMAIjM011bWtHR3p0Q0tBWHBXRHF4a2Rkb2ZxWFNVYnFRa3ZTSnkJAAIBAg1Vbmtub3duIGNoYWluABFJbmZyYVVwZ3JhZGVDb3N0UwQHJG1hdGNoMAUFY2hhaW4DCQAAAgEBVwUHJG1hdGNoMACAyK+gJQMJAAACAQFUBQckbWF0Y2gwAIDC1y8JAAIBAg1Vbmtub3duIGNoYWluAA5hcmJpdHJhZ2VEZWxheQQHJG1hdGNoMAUFY2hhaW4DCQAAAgEBVwUHJG1hdGNoMACAuJkpAwkAAAIBAVQFByRtYXRjaDAA4NQDCQACAQINVW5rbm93biBjaGFpbgADU0VQAgJfXwAFTVVMVDYAwIQ9AAVNVUxUOACAwtcvAAVTU0laRQAZAAVNU0laRQBkAAVMU0laRQDhAQAGWExTSVpFAJADAAdYWExTSVpFAPEEAAVJVEVSNgkAzAgCAAAJAMwIAgABCQDMCAIAAgkAzAgCAAMJAMwIAgAECQDMCAIABQUDbmlsAQ9nZXRTdHJpbmdPckZhaWwCB2FkZHJlc3MDa2V5CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUHYWRkcmVzcwUDa2V5CQC5CQIJAMwIAgIKbWFuZGF0b3J5IAkAzAgCCQClCAEFB2FkZHJlc3MJAMwIAgIBLgkAzAgCBQNrZXkJAMwIAgIPIGlzIG5vdCBkZWZpbmVkBQNuaWwCAAARSWR4Q2ZnU3Rha2luZ0RhcHAAAQARSWR4Q2ZnRWNvbm9teURhcHAAAgAUSWR4Q2ZnR292ZXJuYW5jZURhcHAAAwANSWR4Q2ZnV2xnRGFwcAAEABRJZHhDZmdUb3VybmFtZW50RGFwcAAHAA9JZHhDZmdBY3Jlc0RhcHAACAEKa2V5UmVzdENmZwACDiVzX19yZXN0Q29uZmlnAQ5rZXlSZXN0QWRkcmVzcwACDCVzX19yZXN0QWRkcgERcmVhZFJlc3RDZmdPckZhaWwBBHJlc3QJALwJAgkBD2dldFN0cmluZ09yRmFpbAIFBHJlc3QJAQprZXlSZXN0Q2ZnAAUDU0VQARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCB3Jlc3RDZmcDaWR4CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQdyZXN0Q2ZnBQNpZHgJAKwCAgIqUmVzdCBjZmcgZG9lc24ndCBjb250YWluIGFkZHJlc3MgYXQgaW5kZXggCQCkAwEFA2lkeAAMcmVzdENvbnRyYWN0CQERQGV4dHJOYXRpdmUoMTA2MikBCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMJAQ5rZXlSZXN0QWRkcmVzcwAFFWRlZmF1bHRSZXN0QWRkcmVzc1N0cgAHcmVzdENmZwkBEXJlYWRSZXN0Q2ZnT3JGYWlsAQUMcmVzdENvbnRyYWN0AA9zdGFraW5nQ29udHJhY3QJARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCBQdyZXN0Q2ZnBRFJZHhDZmdTdGFraW5nRGFwcAAPZWNvbm9teUNvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUHcmVzdENmZwURSWR4Q2ZnRWNvbm9teURhcHAAC2dvdkNvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUHcmVzdENmZwUUSWR4Q2ZnR292ZXJuYW5jZURhcHAAC3dsZ0NvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUHcmVzdENmZwUNSWR4Q2ZnV2xnRGFwcAASdG91cm5hbWVudENvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUHcmVzdENmZwUUSWR4Q2ZnVG91cm5hbWVudERhcHAADWFjcmVzQ29udHJhY3QJARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCBQdyZXN0Q2ZnBQ9JZHhDZmdBY3Jlc0RhcHAACnJlY0xhbmROdW0AAAALcmVjTGFuZFNpemUAAQALcmVjVGVycmFpbnMAAgAMcmVjQ29udGluZW50AAMADXdsZ0Fzc2V0SWRLZXkCC3dsZ19hc3NldElkAAp3bGdBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJwIAgULd2xnQ29udHJhY3QFDXdsZ0Fzc2V0SWRLZXkCGFdMR09MRCBpcyBub3QgaXNzdWVkIHlldAAPYWNyZXNBc3NldElkS2V5AgxhY3Jlc0Fzc2V0SWQADGFjcmVzQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCcCAIFDWFjcmVzQ29udHJhY3QFD2FjcmVzQXNzZXRJZEtleQIXQUNSRVMgaXMgbm90IGlzc3VlZCB5ZXQAC3JhbmRvbURlbGF5AAIBCWtleUNvbW1pdAEHYWRkcmVzcwkArAICAhNmaW5pc2hCbG9ja0ZvckFkZHJfBQdhZGRyZXNzARFrZXlSZXNQcm9wb3J0aW9ucwACE3Jlc1R5cGVzUHJvcG9ydGlvbnMBFmtleVJlc1R5cGVzQnlDb250aW5lbnQBCWNvbnRpbmVudAkArAICAhRyZXNUeXBlc0J5Q29udGluZW50XwUJY29udGluZW50ARVrZXlTdGFrZWRMYW5kc0J5T3duZXIBCW93bmVyQWRkcgkArAICAhNzdGFrZWRMYW5kc0J5T3duZXJfBQlvd25lckFkZHIBFmtleVN0YWtlZFBpZWNlc0J5T3duZXIBCW93bmVyQWRkcgkArAICAhRzdGFrZWRQaWVjZXNCeU93bmVyXwUJb3duZXJBZGRyAQhhc1N0cmluZwEBdgQHJG1hdGNoMAUBdgMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXMFByRtYXRjaDAFAXMJAAIBAhhmYWlsIHRvIGNhc3QgaW50byBTdHJpbmcBBWFzSW50AQF2BAckbWF0Y2gwBQF2AwkAAQIFByRtYXRjaDACA0ludAQBbgUHJG1hdGNoMAUBbgkAAgECFWZhaWwgdG8gY2FzdCBpbnRvIEludAEJYXNCb29sZWFuAQF2BAckbWF0Y2gwBQF2AwkAAQIFByRtYXRjaDACB0Jvb2xlYW4EAXMFByRtYXRjaDAFAXMJAAIBAhlmYWlsIHRvIGNhc3QgaW50byBCb29sZWFuARBhc1N0cmluZ0ludFR1cGxlAQN2YWwEByRtYXRjaDAFA3ZhbAMJAAECBQckbWF0Y2gwAg0oU3RyaW5nLCBJbnQpBAJ0MgUHJG1hdGNoMAUCdDIJAAIBAh9mYWlsIHRvIGNhc3QgaW50byAoU3RyaW5nLCBJbnQpAQ9udW1QaWVjZXNCeVNpemUBCGxhbmRTaXplBAckbWF0Y2gwBQhsYW5kU2l6ZQMJAAACAgFTBQckbWF0Y2gwBQVTU0laRQMJAAACAgFNBQckbWF0Y2gwBQVNU0laRQMJAAACAgFMBQckbWF0Y2gwBQVMU0laRQMJAAACAgJYTAUHJG1hdGNoMAUGWExTSVpFAwkAAAICA1hYTAUHJG1hdGNoMAUHWFhMU0laRQkAAgECEVVua25vd24gbGFuZCBzaXplAQdpc0RpZ2l0AQFzCQEJaXNEZWZpbmVkAQkAtgkBBQFzAQprZXlCbG9ja2VkAAIQY29udHJhY3RzQmxvY2tlZAERa2V5TGFzdFR4SWRCeVVzZXIBBGFkZHIJAKwCAgIPbGFzdFR4SWRCeVVzZXJfBQRhZGRyAQpmaXhlZFBvaW50AgN2YWwIZGVjaW1hbHMEBnRlblBvdwkAbAYACgAABQhkZWNpbWFscwAAAAAFBERPV04EB2xvd1BhcnQJAKQDAQkAagIFA3ZhbAUGdGVuUG93BAZ6ZXJvZXMJALACAgkApAMBBQZ0ZW5Qb3cJAGQCAAEJALECAQUHbG93UGFydAkArAICCQCsAgIJAKwCAgkApAMBCQBpAgUDdmFsBQZ0ZW5Qb3cCAS4FBnplcm9lcwUHbG93UGFydAEPZ2V0UmFuZG9tTnVtYmVyAwhtYXhWYWx1ZQxmaW5pc2hIZWlnaHQKYXV4RW50cm9weQQPcmFuZG9tU2VlZEJsb2NrCQEFdmFsdWUBCQDtBwEFDGZpbmlzaEhlaWdodAQKcmFuZG9tSGFzaAkA9wMBCQDLAQIJAQV2YWx1ZQEIBQ9yYW5kb21TZWVkQmxvY2sDdnJmBQphdXhFbnRyb3B5CQBqAgkAsQkBBQpyYW5kb21IYXNoBQhtYXhWYWx1ZQANaW5jdWJhdG9yQWRkcgQHJG1hdGNoMAUFY2hhaW4DCQAAAgEBVwUHJG1hdGNoMAkBEUBleHRyTmF0aXZlKDEwNjIpAQIjM1BFa3RWdXgyUmhjaFNONjNEc0RvNGI0bXo0UXF6S1NlRHYDCQAAAgEBVAUHJG1hdGNoMAUEdGhpcwkAAgECDVVua25vd24gY2hhaW4AC2JyZWVkZXJBZGRyBAckbWF0Y2gwBQVjaGFpbgMJAAACAQFXBQckbWF0Y2gwCQERQGV4dHJOYXRpdmUoMTA2MikBAiMzUERWdVU0NUg3RWg1ZG10TmJuUk5SU3RHd1VMQTdOWTZIYgMJAAACAQFUBQckbWF0Y2gwBQR0aGlzCQACAQINVW5rbm93biBjaGFpbgADcHViBAckbWF0Y2gwBQVjaGFpbgMJAAACAQFXBQckbWF0Y2gwAwUWS1NfU0VQQVJBVEVfUFVCTElDX0tFWQEgqxdXjxVn41lUQbDWcutmm8Sj02Ze1ZmGUN+YNx+yCQgBIE9T4ho/VKjWnVJOEx1GJ1W9s1PzLHvJVFSw/0PBtBQoAwkAAAIBAVQFByRtYXRjaDABIE9T4ho/VKjWnVJOEx1GJ1W9s1PzLHvJVFSw/0PBtBQoCQACAQINVW5rbm93biBjaGFpbgAMRU1QVFlfUFJPRDUwAZADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARRklWRU1JTlVURVNNSUxMSVMA4KcSAAxSRU5BTUlOR0NPU1QAwJaxAgAKTUFYTkFNRUxFTgAyABVJbmZyYVVwZ3JhZGVDb3N0U1VzZHQAgK3iBAAMRVhQTUFURVJJQUxTBAckbWF0Y2gwBQVjaGFpbgMJAAACAQFXBQckbWF0Y2gwAKbdgu2rBwMJAAACAQFUBQckbWF0Y2gwAKqngbMJCQACAQINVW5rbm93biBjaGFpbgAHRVhQVVNEVAQHJG1hdGNoMAUFY2hhaW4DCQAAAgEBVwUHJG1hdGNoMACA5Zp3AwkAAAIBAVQFByRtYXRjaDAAgOWadwkAAgECDVVua25vd24gY2hhaW4ADFNfQ09TVF9BQ1JFUwCA8ouoCQAFRklWRVgJALYCAQAFAAdUV0VOVFlYCQC2AgEAFAAIVFdFTlRZMlgJALYCAQkAaAIAFAAUAAhUV0VOVFkzWAkAtgIBCQBoAgkAaAIAFAAUABQACFRXRU5UWTRYCQC2AgEJAGgCCQBoAgkAaAIAFAAUABQAFAAIVFdFTlRZNVgJALYCAQkAaAIJAGgCCQBoAgkAaAIAFAAUABQAFAAUAA9QUkVTQUxFTlVNTEFORFMA9AMBEmtleU5leHRGcmVlTGFuZE51bQACC25leHRMYW5kTnVtARprZXlMYW5kQ3VzdG9tTmFtZVRvQXNzZXRJZAEEbmFtZQkArAICAgRsY25fBQRuYW1lARBrZXlMYW5kVG9Bc3NldElkAQdsYW5kTnVtCQCsAgICA2xhXwUHbGFuZE51bQEea2V5SW5mcmFMZXZlbEJ5QXNzZXRJZEFuZE93bmVyAgdhc3NldElkCW93bmVyQWRkcgkArAICCQCsAgIJAKwCAgIFaWxhb18FB2Fzc2V0SWQCAV8FCW93bmVyQWRkcgERa2V5TGFuZE51bVRvT3duZXIBB2xhbmROdW0JAKwCAgIDbG9fBQdsYW5kTnVtARprZXlEdWNrQ3VzdG9tTmFtZVRvQXNzZXRJZAEEbmFtZQkArAICAhFkdWNrQnlDdXN0b21OYW1lXwUEbmFtZQEWa2V5Q3VzdG9tTmFtZVRvQWRkcmVzcwEEbmFtZQkArAICAhRhY2NvdW50QnlDdXN0b21OYW1lXwUEbmFtZQEJa2V5T2xkaWVzAAIKb2xkaWVzTGlzdAALY2xhaW1Nb2RlV2gAAAANY2xhaW1Nb2RlRHVjawABABNjbGFpbU1vZGVXaFRoZW5EdWNrAAIACGZsSGVhbHRoAAAAC2ZsVGltZXN0YW1wAAUAB2ZsQm9udXMABgALZmxQcm9kc1VzZWQABwEHbmZ0TmFtZQIHbGFuZE51bQhsYW5kU2l6ZQkArAICCQCsAgIFCkxBTkRQUkVGSVgFB2xhbmROdW0FCGxhbmRTaXplAQh0b1ZvbHVtZQIGYW1vdW50B3BrZ1NpemUEBHBrZ3MDCQBnAgUGYW1vdW50AAAJAGkCCQBlAgkAZAIFBmFtb3VudAUHcGtnU2l6ZQABBQdwa2dTaXplCQEBLQEJAGkCCQBlAgkAZAIJAQEtAQUGYW1vdW50BQdwa2dTaXplAAEFB3BrZ1NpemUJAGgCBQRwa2dzBQVNVUxUOAETZGlzdHJpYnV0ZUJ5V2VpZ2h0cwIFdG90YWwHd2VpZ2h0cwQDc3VtCQBkAgkAZAIJAGQCCQBkAgkAZAIJAJEDAgUHd2VpZ2h0cwAACQCRAwIFB3dlaWdodHMAAQkAkQMCBQd3ZWlnaHRzAAIJAJEDAgUHd2VpZ2h0cwADCQCRAwIFB3dlaWdodHMABAkAkQMCBQd3ZWlnaHRzAAUDCQBnAgAABQNzdW0JAAIBAhBaZXJvIHdlaWdodHMgc3VtBAVub3JtNgkAawMFBXRvdGFsBQVNVUxUNgUDc3VtCgEKbm9ybWFsaXplcgIDYWNjBGVsZW0JAM0IAgUDYWNjCQBrAwUEZWxlbQUFbm9ybTYFBU1VTFQ2CgACJGwFB3dlaWdodHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBCm5vcm1hbGl6ZXICBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDYJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYBEmdldE5lZWRlZE1hdGVyaWFscwEFdG90YWwEBXByb3BzCQC1CQIJAQV2YWx1ZQEJAKIIAQkBEWtleVJlc1Byb3BvcnRpb25zAAIBXwMJAQIhPQIJAJADAQUFcHJvcHMFBk5VTVJFUwkAAgECFldyb25nIHByb3BvcnRpb25zIGRhdGEEAXIJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXByb3BzAAAJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXByb3BzAAEJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXByb3BzAAIJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXByb3BzAAMJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXByb3BzAAQJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXByb3BzAAUFA25pbAkBE2Rpc3RyaWJ1dGVCeVdlaWdodHMCBQV0b3RhbAUBcgERc3VidHJhY3RNYXRlcmlhbHMDDHNob3VsZFVzZU1hdANoYXMJdG90YWxOZWVkBARuZWVkCQESZ2V0TmVlZGVkTWF0ZXJpYWxzAQUJdG90YWxOZWVkCgEKc3VidHJhY3RvcgIDYWNjA2lkeAQGcmVzdWx0CQBlAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFA2hhcwUDaWR4CQCRAwIFBG5lZWQFA2lkeAMJAGYCAAAFBnJlc3VsdAkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAhhOb3QgZW5vdWdoIG1hdGVyaWFsIGlkeD0JAKQDAQUDaWR4AgssIHlvdSBoYXZlIAkAkQMCBQNoYXMFA2lkeAILLCBidXQgbmVlZCAJAKQDAQkAkQMCBQRuZWVkBQNpZHgJAM0IAgUDYWNjCQCkAwEFBnJlc3VsdAMFDHNob3VsZFVzZU1hdAoAAiRsBQVJVEVSNgoAAiRzCQCQAwEFAiRsCgAFJGFjYzAFA25pbAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEKc3VidHJhY3RvcgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNgkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgUDaGFzARFzdWJ0cmFjdEVxdWlwbWVudAIFb2xkRXEFcFVzZWQDCQAAAgUFcFVzZWQCAAkAlAoCBQVvbGRFcQcKAQdzdWJVc2VkAgNhY2MGaWR4QW10BAVwYXJ0cwkAtQkCBQZpZHhBbXQCASwDCQECIT0CCQCQAwEFBXBhcnRzAAIJAAIBAihJbmNvcnJlY3QgZm9ybWF0LCBzaG91bGQgYmUgaW5kZXgsYW1vdW50BANpZHgJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwYXJ0cwAAAwMJAGYCAAAFA2lkeAYJAGcCBQNpZHgJAJADAQUQcHJvZHVjdGlvbk1hdHJpeAkAAgECE1Vua25vd24gcHJvZHVjdCBpZHgEA2FtdAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXBhcnRzAAEEB2VxUGFydHMJALUJAggFA2FjYwJfMQkArAICCQCRAwIFBXBhcnRzAAACAToDCQECIT0CCQCQAwEFB2VxUGFydHMAAgkAAgEJAKwCAgkArAICAg9Zb3UgZG9uJ3QgaGF2ZSAJAJEDAgUJcHJvZFR5cGVzBQNpZHgCCSBlcXVpcHBlZAQDdG1wCQCRAwIFB2VxUGFydHMAAQQGbnVtTGVuAwkBB2lzRGlnaXQBCQCvAgIJALACAgUDdG1wAAEAAQACAAEEBGN1cnIJAQ1wYXJzZUludFZhbHVlAQkArwICBQN0bXAFBm51bUxlbgQEdGFpbAkAsAICBQN0bXAFBm51bUxlbgQGbmV3QW10AwkAZwIFBGN1cnIFA2FtdAkAZQIFBGN1cnIFA2FtdAkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAg1Zb3UgZXF1aXBwZWQgCQCkAwEFBGN1cnICBCBvZiAJAJEDAgUJcHJvZFR5cGVzBQNpZHgCEywgYnV0IHRyaWVkIHRvIHVzZSAJAKQDAQUDYW10CQCUCgIJAKwCAgkArAICCQCsAgIJAKwCAgkAkQMCBQdlcVBhcnRzAAAJAJEDAgUFcGFydHMAAAIBOgkApAMBBQZuZXdBbXQFBHRhaWwDCAUDYWNjAl8yBgMDCQBnAgUDaWR4AAYJAGcCAAgFA2lkeAcJAAACBQZuZXdBbXQAAAcKAAIkbAkAtQkCBQVwVXNlZAIBXwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJQKAgUFb2xkRXEHCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQdzdWJVc2VkAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAQ5wcm9kU3RyVG9CeXRlcwEHcHJvZFN0cgQFcExpc3QDCQAAAgUHcHJvZFN0cgIABQNuaWwJALwJAgUHcHJvZFN0cgIBXwoBBHRvQlYCA2FjYwZyZWNpcGUEAWoJAGkCCQDIAQEFA2FjYwAIBARjdXJyAwkAZgIJAJADAQUFcExpc3QFAWoJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwTGlzdAUBagAACQDLAQIFA2FjYwkAmgMBBQRjdXJyCgACJGwFEHByb2R1Y3Rpb25NYXRyaXgKAAIkcwkAkAMBBQIkbAoABSRhY2MwAQAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBBHRvQlYCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDUwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAhACIAIwAkACUAJgAnACgAKQAqACsALAAtAC4ALwAwADEAMgEOYnl0ZXNUb1Byb2RTdHIBAmJ2CgEGZnJvbUJWAgNhY2MGcmVjaXBlBAFqCQCQAwEFA2FjYwQBYgkAyQECCQDKAQIFAmJ2CQBoAgAIBQFqAAgJAM0IAgUDYWNjCQCkAwEJALEJAQUBYgkAugkCCgACJGwFEHByb2R1Y3Rpb25NYXRyaXgKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBBmZyb21CVgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgNTAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyAgFfARVjaGVja1N0YXRSZXF1aXJlbWVudHMCCWR1Y2tTdGF0cwRyZXFzCgEFY2hlY2sCA2FjYwFqBARidWZmAwkAZgIJAJADAQUJZHVja1N0YXRzCQBkAgAHBQFqCQCRAwIFCWR1Y2tTdGF0cwkAZAIABwUBagAAAwkAZgIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRyZXFzBQFqCQBkAgkAkQMCBQlkdWNrU3RhdHMFAWoFBGJ1ZmYJAAIBCQCsAgICG1JlcXVpcmVtZW50IG5vdCBzYXRpc2ZpZWQ6IAkAkQMCBQxyZXF1aXJlbWVudHMFAWoGCgACJGwJAMwIAgAACQDMCAIAAQkAzAgCAAIJAMwIAgADCQDMCAIABAkAzAgCAAUJAMwIAgAGBQNuaWwKAAIkcwkAkAMBBQIkbAoABSRhY2MwBwoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEFY2hlY2sCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDcJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwEKcGxhY2VQcm9kQgYGaWR4Q250BXBMaXN0CmlzUG9zaXRpdmUJZHVja1N0YXRzCG9jY3VwaWVkBGZyZWUEBXBhcnRzCQC1CQIFBmlkeENudAIBOgMJAQIhPQIJAJADAQUFcGFydHMAAgkAAgECKEluY29ycmVjdCBmb3JtYXQsIHNob3VsZCBiZSBpbmRleDphbW91bnQDAwkBASEBBQppc1Bvc2l0aXZlCQECIT0CCQCxAgEJAJEDAgUFcGFydHMAAAACBwkAAgECK1Byb2R1Y3QgaWR4IHNob3VsZCBiZSAyIGRpZ2l0cywgemVybyBwYWRkZWQECnByb2R1Y3RJZHgJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwYXJ0cwAABAVjb3VudAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXBhcnRzAAEDCQEBIQEJAQ9jb250YWluc0VsZW1lbnQCBRBmb3J0QWxsb3dlZFByb2RzBQpwcm9kdWN0SWR4CQACAQkArAICCQCsAgICCVByb2R1Y3QgJwkAkQMCBQlwcm9kVHlwZXMFCnByb2R1Y3RJZHgCIScgY2Fubm90IGJlIHVzZWQgZm9yIGxhbmQgZGVmZW5zZQMJAGYCAAAFBWNvdW50CQACAQIXQ291bnQgY2FuJ3QgYmUgbmVnYXRpdmUDCQBmAgUFY291bnQFDU1BWFBST0RJTlNMT1QJAAIBCQCsAgIJAKwCAgkArAICAhRDYW4ndCBwdXQgbW9yZSB0aGFuIAkApAMBBQ1NQVhQUk9ESU5TTE9UAgQgb2YgCQCRAwIFCXByb2RUeXBlcwUKcHJvZHVjdElkeAMJAAACBQVjb3VudAAACQCVCgMFBXBMaXN0BQhvY2N1cGllZAUEZnJlZQQEaGVhZAkAyQECBQVwTGlzdAkAaAIACAUKcHJvZHVjdElkeAQEY3VycgkAsQkBCQDJAQIJAMoBAgUFcExpc3QJAGgCAAgFCnByb2R1Y3RJZHgACAQEdGFpbAkAygECBQVwTGlzdAkAaAIACAkAZAIFCnByb2R1Y3RJZHgAAQQGcmVjaXBlCQC1CQIJAJEDAgUQcHJvZHVjdGlvbk1hdHJpeAUKcHJvZHVjdElkeAIBXwMDCQEBIQEFCmlzUG9zaXRpdmUJAGYCBQVjb3VudAUEY3VycgcJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIJWW91IGhhdmUgCQCkAwEFBGN1cnICBCBvZiAJAJEDAgUJcHJvZFR5cGVzBQpwcm9kdWN0SWR4AhMsIGJ1dCB0cmllZCB0byB1c2UgCQCkAwEFBWNvdW50BAZuZXdBbXQDAwkBASEBBQppc1Bvc2l0aXZlCQEVY2hlY2tTdGF0UmVxdWlyZW1lbnRzAgUJZHVja1N0YXRzCQC1CQIJAJEDAgUGcmVjaXBlBRBySWR4UmVxdWlyZW1lbnRzAgEsBwkAZQIFBGN1cnIFBWNvdW50CQBkAgUEY3VycgUFY291bnQECGRlbHRhVm9sCQBlAgkBCHRvVm9sdW1lAgUGbmV3QW10BQ5QUk9EVUNUUEtHU0laRQkBCHRvVm9sdW1lAgUEY3VycgUOUFJPRFVDVFBLR1NJWkUJAJUKAwkAywECCQDLAQIFBGhlYWQJAJoDAQUGbmV3QW10BQR0YWlsCQBkAgUIb2NjdXBpZWQFCGRlbHRhVm9sCQBlAgUEZnJlZQUIZGVsdGFWb2wBCGFkZFByb2RCBwZpZHhDbnQFcExpc3QKaXNQb3NpdGl2ZQdzZWdtZW50B21haW5BdXgEc2xvdAlkdWNrU3RhdHMEBXBhcnRzCQC1CQIFBmlkeENudAIBOgMJAQIhPQIJAJADAQUFcGFydHMAAgkAAgECKEluY29ycmVjdCBmb3JtYXQsIHNob3VsZCBiZSBpbmRleDphbW91bnQDAwkBASEBBQppc1Bvc2l0aXZlCQECIT0CCQCxAgEJAJEDAgUFcGFydHMAAAACBwkAAgECK1Byb2R1Y3QgaWR4IHNob3VsZCBiZSAyIGRpZ2l0cywgemVybyBwYWRkZWQECnByb2R1Y3RJZHgJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwYXJ0cwAABAVjb3VudAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXBhcnRzAAEDAwkAZgIAAAUKcHJvZHVjdElkeAYJAGcCBQpwcm9kdWN0SWR4CQCQAwEFEHByb2R1Y3Rpb25NYXRyaXgJAAIBAhNVbmtub3duIHByb2R1Y3QgaWR4AwkAZgIAAAUFY291bnQJAAIBAhdDb3VudCBjYW4ndCBiZSBuZWdhdGl2ZQMJAGYCBQVjb3VudAUNTUFYUFJPRElOU0xPVAkAAgEJAKwCAgkArAICCQCsAgICFENhbid0IHB1dCBtb3JlIHRoYW4gCQCkAwEFDU1BWFBST0RJTlNMT1QCBCBvZiAJAJEDAgUJcHJvZFR5cGVzBQpwcm9kdWN0SWR4AwkAAAIFBWNvdW50AAAJAJQKAgUFcExpc3QHBARoZWFkCQDJAQIFBXBMaXN0CQBoAgAIBQpwcm9kdWN0SWR4BARjdXJyCQCxCQEJAMkBAgkAygECBQVwTGlzdAkAaAIACAUKcHJvZHVjdElkeAAIBAR0YWlsCQDKAQIFBXBMaXN0CQBoAgAICQBkAgUKcHJvZHVjdElkeAABBAZyZWNpcGUJALUJAgkAkQMCBRBwcm9kdWN0aW9uTWF0cml4BQpwcm9kdWN0SWR4AgFfAwMJAQEhAQUKaXNQb3NpdGl2ZQkAZgIFBWNvdW50BQRjdXJyBwkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAglZb3UgaGF2ZSAJAKQDAQUEY3VycgIEIG9mIAkAkQMCBQlwcm9kVHlwZXMFCnByb2R1Y3RJZHgCEywgYnV0IHRyaWVkIHRvIHVzZSAJAKQDAQUFY291bnQECWlzQmlnSXRlbQMDCQEBIQEFCmlzUG9zaXRpdmUJARVjaGVja1N0YXRSZXF1aXJlbWVudHMCBQlkdWNrU3RhdHMJALUJAgkAkQMCBQZyZWNpcGUFEHJJZHhSZXF1aXJlbWVudHMCASwHBAZjb21wYXQJAJEDAgUGcmVjaXBlBQlySWR4U2xvdHMDCQAAAgUGY29tcGF0AgAJAAIBAhdJdGVtIGNhbm5vdCBiZSBlcXVpcHBlZAQBYwkBDXBhcnNlSW50VmFsdWUBBQZjb21wYXQEBGNTZWcJAGkCBQFjAGQDCQECIT0CBQdzZWdtZW50BQRjU2VnCQACAQIUU2VnbWVudCBpbmNvbXBhdGlibGUECGNNYWluQXV4CQBpAgkAagIFAWMAZAAKAwkBAiE9AgUHbWFpbkF1eAUIY01haW5BdXgJAAIBAhFTbG90IGluY29tcGF0aWJsZQQJY051bVNsb3RzCQBqAgUBYwAKAwMJAQIhPQIFBHNsb3QAAAkAZgIFCWNOdW1TbG90cwABBwkAAgECHkJpZyBpdGVtcyBzaG91bGQgb2NjdXB5IHNsb3QgMAkAZgIFCWNOdW1TbG90cwABBwkAlAoCCQDLAQIJAMsBAgUEaGVhZAkAmgMBCQBkAgUEY3VycgMFCmlzUG9zaXRpdmUFBWNvdW50CQEBLQEFBWNvdW50BQR0YWlsBQlpc0JpZ0l0ZW0BC3Nsb3RzR3JvdXBCBgFnBGJwSW4KaXNQb3NpdGl2ZQdzZWdtZW50B21haW5BdXgFc3RhdHMDCQECIT0CBQFnAgAEBXNsb3RzCQC1CQIFAWcCASwDCQBmAgkAkAMBBQVzbG90cwUITUFYU0xPVFMJAAIBAhJXcm9uZyBzbG90cyBmb3JtYXQEAnMwCQCRAwIFBXNsb3RzAAAEAnMxAwkAZgIJAJADAQUFc2xvdHMAAQkAkQMCBQVzbG90cwABAgADAwkAAAIFAnMwAgAJAAACBQJzMQIABwUEYnBJbgQFdG1wUzADCQECIT0CBQJzMAIACQEIYWRkUHJvZEIHBQJzMAUEYnBJbgUKaXNQb3NpdGl2ZQUHc2VnbWVudAUHbWFpbkF1eAAABQVzdGF0cwkAlAoCBQRicEluBwMJAQIhPQIFAnMxAgADCAUFdG1wUzACXzIJAAIBAh5CaWcgaXRlbSBhbHJlYWR5IG9jY3VwaWVzIHNsb3QICQEIYWRkUHJvZEIHBQJzMQgFBXRtcFMwAl8xBQppc1Bvc2l0aXZlBQdzZWdtZW50BQdtYWluQXV4AAEFBXN0YXRzAl8xCAUFdG1wUzACXzEFBGJwSW4BBmRyZXNzQgQHc2VnTGlzdAZwQnl0ZXMKaXNQb3NpdGl2ZQVzdGF0cwoBB3NlZ21lbnQCA2FjYwNzZWcEAWoIBQNhY2MCXzEEB21haW5BdXgJALUJAgUDc2VnAgE7AwkBAiE9AgkAkAMBBQdtYWluQXV4BQpOVU1NQUlOQVVYCQACAQIUV3Jvbmcgc2VnbWVudCBmb3JtYXQEAW0JAJEDAgUHbWFpbkF1eAAABAFhCQCRAwIFB21haW5BdXgAAQMDCQAAAgUBbQIACQAAAgUBYQIABwkAlAoCCQBkAgUBagABCAUDYWNjAl8yBAR0bXBNCQELc2xvdHNHcm91cEIGBQFtCAUDYWNjAl8yBQppc1Bvc2l0aXZlBQFqAAAFBXN0YXRzCQCUCgIJAGQCBQFqAAEJAQtzbG90c0dyb3VwQgYFAWEFBHRtcE0FCmlzUG9zaXRpdmUFAWoAAQUFc3RhdHMICgACJGwFB3NlZ0xpc3QKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCUCgIAAAUGcEJ5dGVzCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQdzZWdtZW50AgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA2CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAl8yAQVmb3J0QgYHc2VnTGlzdAZwQnl0ZXMIb2NjdXBpZWQEZnJlZQppc1Bvc2l0aXZlCWR1Y2tTdGF0cwMJAGYCAAMJAJADAQUHc2VnTGlzdAkAAgECMUF0IGxlYXN0IGR1Y2ssIG1pbmVzIGFuZCB0cmFwcyBwYXJ0cyBhcmUgcmVxdWlyZWQKAQdzZWdtZW50AgNhY2MDc2VnBAFqCAUDYWNjAl8xAwkAAAIFAWoAAAkAlgoECQBkAgUBagABCAUDYWNjAl8yCAUDYWNjAl8zCAUDYWNjAl80BAFwCQEKcGxhY2VQcm9kQgYFA3NlZwgFA2FjYwJfMgUKaXNQb3NpdGl2ZQUJZHVja1N0YXRzCAUDYWNjAl8zCAUDYWNjAl80CQCWCgQJAGQCBQFqAAEIBQFwAl8xCAUBcAJfMggFAXACXzMEAXQKAAIkbAUHc2VnTGlzdAoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJYKBAAABQZwQnl0ZXMFCG9jY3VwaWVkBQRmcmVlCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQdzZWdtZW50AgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKCQCVCgMIBQF0Al8yCAUBdAJfMwgFAXQCXzQBF2NhbldlYXJDdXJyZW50RXF1aXBtZW50AQtkdWNrQXNzZXRJZAQFZXFLZXkJARBrZXlEdWNrRXF1aXBtZW50AQULZHVja0Fzc2V0SWQEBmN1cnJFcQkAtQkCCQELdmFsdWVPckVsc2UCCQCiCAEFBWVxS2V5AhcsOyxfLDssXyw7LF8sOyxfLDssXyw7LAIBXwQJdGVtcFByb2RCCQEGZHJlc3NCBAUGY3VyckVxBQxFTVBUWV9QUk9ENTAGBQNuaWwECHNlZ0JwQXV4CQCRAwIJALUJAgkAkQMCBQZjdXJyRXEFC3NlZ0JhY2twYWNrAgE7AAEECmJ1ZmZFZmZlY3QDCQAAAgUIc2VnQnBBdXgCAAAABARhdXgwCQCRAwIJALUJAgUIc2VnQnBBdXgCASwAAAMJAAACBQRhdXgwAgAAAAQGaWR4Q250CQC1CQIFBGF1eDACAToEA2lkeAkAkQMCBQZpZHhDbnQAAAQDY250CQCRAwIFBmlkeENudAABAwMDAwMJAAACBQNpZHgCAjA2BgkAAAIFA2lkeAICMDcGCQAAAgUDaWR4AgIwOAkBAiE9AgUDY250AgAHCQBmAgkBDXBhcnNlSW50VmFsdWUBBQNjbnQAAAcJAQ1wYXJzZUludFZhbHVlAQkAkQMCCQC1CQIJAJEDAgUQcHJvZHVjdGlvbk1hdHJpeAkBDXBhcnNlSW50VmFsdWUBBQNpZHgCAV8FCnJJZHhFZmZlY3QAAAQFc3RhdHMJAQxnZXREdWNrU3RhdHMEBQR0aGlzBQtkdWNrQXNzZXRJZAUKYnVmZkVmZmVjdAYECG5ld1Byb2RCCQEGZHJlc3NCBAUGY3VyckVxBQl0ZW1wUHJvZEIHBQVzdGF0cwkAAAIFCG5ld1Byb2RCBQhuZXdQcm9kQgEZdXBkYXRlUHJvcG9ydGlvbnNJbnRlcm5hbAQIcHJvcExpc3QNdGVycmFpbkNvdW50cw1sYW5kU2l6ZUluZGV4BHNpZ24DCQECIT0CCQCQAwEFCHByb3BMaXN0BQZOVU1SRVMJAAIBAhZXcm9uZyBwcm9wb3J0aW9ucyBkYXRhCgEHdXBkYXRlcgIDYWNjAWkEBnJlc3VsdAkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQhwcm9wTGlzdAUBaQkAaAIJAGgCBQRzaWduCQCRAwIFDXRlcnJhaW5Db3VudHMFAWkFDWxhbmRTaXplSW5kZXgDCQBmAgAABQZyZXN1bHQJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICFlBhbmljISBQaWVjZXMgb2YgdHlwZT0JAKQDAQUBaQIHLCBzaWduPQkApAMBBQRzaWduAhMsIHRlcnJhaW5Db3VudHNbaV09CQCkAwEJAJEDAgUNdGVycmFpbkNvdW50cwUBaQIQLCBsYW5kU2l6ZUluZGV4PQkApAMBBQ1sYW5kU2l6ZUluZGV4CQDNCAIFA2FjYwkApAMBBQZyZXN1bHQKAAIkbAUFSVRFUjYKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBB3VwZGF0ZXICBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDYJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYBEXVwZGF0ZVByb3BvcnRpb25zAw10ZXJyYWluQ291bnRzDWxhbmRTaXplSW5kZXgEc2lnbgQIcHJvcExpc3QJALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBCQERa2V5UmVzUHJvcG9ydGlvbnMAAgswXzBfMF8wXzBfMAIBXwkAuQkCCQEZdXBkYXRlUHJvcG9ydGlvbnNJbnRlcm5hbAQFCHByb3BMaXN0BQ10ZXJyYWluQ291bnRzBQ1sYW5kU2l6ZUluZGV4BQRzaWduAgFfAQ1jb3VudFRlcnJhaW5zAQh0ZXJyYWlucwkAzAgCCQBlAgkAkAMBCQC1CQIFCHRlcnJhaW5zAgFBAAEJAMwIAgkAZQIJAJADAQkAtQkCBQh0ZXJyYWlucwIBQgABCQDMCAIJAGUCCQCQAwEJALUJAgUIdGVycmFpbnMCAUMAAQkAzAgCCQBlAgkAkAMBCQC1CQIFCHRlcnJhaW5zAgFEAAEJAMwIAgkAZQIJAJADAQkAtQkCBQh0ZXJyYWlucwIBRQABCQDMCAIJAGUCCQCQAwEJALUJAgUIdGVycmFpbnMCAUYAAQUDbmlsAQZhZGRSZXMFCmN1cnJlbnRSZXMNdGVycmFpbkNvdW50cwlkZWx0YVRpbWUNbGFuZFNpemVJbmRleBdkYWlseUJ5UGllY2VXaXRoQm9udXNlcwoBBWFkZGVyAgNhY2MBaQQJcmVzT2ZUeXBlCQBoAgkAaAIJAGsDBQlkZWx0YVRpbWUFF2RhaWx5QnlQaWVjZVdpdGhCb251c2VzBQlEQVlNSUxMSVMJAJEDAgUNdGVycmFpbkNvdW50cwUBaQUNbGFuZFNpemVJbmRleAkAzQgCBQNhY2MJAKQDAQkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQpjdXJyZW50UmVzBQFpBQlyZXNPZlR5cGUEAXIKAAIkbAUFSVRFUjYKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBBWFkZGVyAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA2CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGCQC5CQIFAXICAV8BCXZpcnRDbGFpbQQNdGVycmFpbkNvdW50cwlkZWx0YVRpbWUNbGFuZFNpemVJbmRleBdkYWlseUJ5UGllY2VXaXRoQm9udXNlcwoBBWFkZGVyAgNhY2MBaQQJcmVzT2ZUeXBlCQBoAgkAaAIJAGsDBQlkZWx0YVRpbWUFF2RhaWx5QnlQaWVjZVdpdGhCb251c2VzBQlEQVlNSUxMSVMJAJEDAgUNdGVycmFpbkNvdW50cwUBaQUNbGFuZFNpemVJbmRleAkAlAoCCQDNCAIIBQNhY2MCXzEFCXJlc09mVHlwZQkAZAIIBQNhY2MCXzIFCXJlc09mVHlwZQoAAiRsBQVJVEVSNgoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJQKAgUDbmlsAAAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBBWFkZGVyAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA2CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAQ1kaXN0cmlidXRlUmVzBAxjdXJyZW50V2hSZXMOY3VycmVudFBhY2tSZXMKcmVzVG9DbGFpbQt3aFNwYWNlTGVmdAQOcmVzTGlzdFRvQ2xhaW0IBQpyZXNUb0NsYWltAl8xBAxyZXNBbVRvQ2xhaW0IBQpyZXNUb0NsYWltAl8yAwkAAAIFDHJlc0FtVG9DbGFpbQAACQCUCgIJALkJAgUMY3VycmVudFdoUmVzAgFfCQC5CQIFDmN1cnJlbnRQYWNrUmVzAgFfAwkAZwIFC3doU3BhY2VMZWZ0BQxyZXNBbVRvQ2xhaW0KAQhhZGRMaXN0cwIDYWNjAWkJAM0IAgUDYWNjCQCkAwEJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUMY3VycmVudFdoUmVzBQFpCQCRAwIFDnJlc0xpc3RUb0NsYWltBQFpBAFyCgACJGwFBUlURVI2CgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQhhZGRMaXN0cwIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNgkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgkAlAoCCQC5CQIFAXICAV8JALkJAgUOY3VycmVudFBhY2tSZXMCAV8KAQxhZGRQYXJ0TGlzdHMCA2FjYwFpBAZ3aFBhcnQJAGsDCQCRAwIFDnJlc0xpc3RUb0NsYWltBQFpBQt3aFNwYWNlTGVmdAUMcmVzQW1Ub0NsYWltCQCUCgIJAM0IAggFA2FjYwJfMQkApAMBCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFDGN1cnJlbnRXaFJlcwUBaQUGd2hQYXJ0CQDNCAIIBQNhY2MCXzIJAKQDAQkAZQIJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUOY3VycmVudFBhY2tSZXMFAWkJAJEDAgUOcmVzTGlzdFRvQ2xhaW0FAWkFBndoUGFydAQBcgoAAiRsBQVJVEVSNgoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJQKAgUDbmlsBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBDGFkZFBhcnRMaXN0cwIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNgkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgkAlAoCCQC5CQIIBQFyAl8xAgFfCQC5CQIIBQFyAl8yAgFfAQNhYnMBAXgDCQDAAgIFAXgJALYCAQAABQF4CQC+AgEFAXgABGZyZXEJAMwIAgkAzAgCAAYJAMwIAgAJCQDMCAIADgkAzAgCAA8JAMwIAgAQBQNuaWwJAMwIAgkAzAgCAAUJAMwIAgAICQDMCAIADQkAzAgCAA4JAMwIAgAPBQNuaWwJAMwIAgkAzAgCAAEJAMwIAgAECQDMCAIACQkAzAgCAAoJAMwIAgAPBQNuaWwJAMwIAgkAzAgCAAEJAMwIAgAGCQDMCAIABwkAzAgCAA8JAMwIAgATBQNuaWwJAMwIAgkAzAgCAAQJAMwIAgAHCQDMCAIACAkAzAgCAA0JAMwIAgASBQNuaWwFA25pbAEHZ2VuQ2hhcgIBbgVmcmVxcwQDcmVtCQCgAwEJALsCAgUBbgUHVFdFTlRZWAQGbGV0dGVyAwkAZgIJAJEDAgUFZnJlcXMAAAUDcmVtAgFBAwkAZgIJAJEDAgUFZnJlcXMAAQUDcmVtAgFCAwkAZgIJAJEDAgUFZnJlcXMAAgUDcmVtAgFDAwkAZgIJAJEDAgUFZnJlcXMAAwUDcmVtAgFEAwkAZgIJAJEDAgUFZnJlcXMABAUDcmVtAgFFAgFGBQZsZXR0ZXIBC2dlblRlcnJhaW5zAgRzZWVkDGNvbnRpbmVudElkeAQBZgkAkQMCBQRmcmVxBQxjb250aW5lbnRJZHgKARB0ZXJyYWluR2VuZXJhdG9yAgNhY2MEZWxlbQkAlAoCCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAggFA2FjYwJfMQkBB2dlbkNoYXICCAUDYWNjAl8yBQFmCQEHZ2VuQ2hhcgIJALoCAggFA2FjYwJfMgUHVFdFTlRZWAUBZgkBB2dlbkNoYXICCQC6AgIIBQNhY2MCXzIFCFRXRU5UWTJYBQFmCQEHZ2VuQ2hhcgIJALoCAggFA2FjYwJfMgUIVFdFTlRZM1gFAWYJAQdnZW5DaGFyAgkAugICCAUDYWNjAl8yBQhUV0VOVFk0WAUBZgkAugICCAUDYWNjAl8yBQhUV0VOVFk1WAQBdAoAAiRsCQDMCAIAAQkAzAgCAAIJAMwIAgADCQDMCAIABAkAzAgCAAUFA25pbAoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJQKAgIACQC6AgIFBHNlZWQFBUZJVkVYCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJARB0ZXJyYWluR2VuZXJhdG9yAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA1CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQgFAXQCXzEABlBFUk0yNQkAzAgCAAcJAMwIAgACCQDMCAIADwkAzAgCABMJAMwIAgAICQDMCAIAGAkAzAgCAAEJAMwIAgAVCQDMCAIAEAkAzAgCAAUJAMwIAgAACQDMCAIAFgkAzAgCABQJAMwIAgAXCQDMCAIACwkAzAgCAAQJAMwIAgASCQDMCAIADAkAzAgCAAYJAMwIAgAKCQDMCAIAAwkAzAgCABEJAMwIAgANCQDMCAIACQkAzAgCAA4FA25pbAAGVENIQVJTCQDMCAICAUEJAMwIAgIBQgkAzAgCAgFDCQDMCAICAUQJAMwIAgIBRQkAzAgCAgFGBQNuaWwBE2dlblRlcnJhaW5zRm9yTWVyZ2UCC3N1bVRlcnJhaW5zDWxhbmRTaXplSW5kZXgKAQVzdGVwMQIDYWNjAXMEAWoIBQNhY2MCXzIEAmVsCQENcGFyc2VJbnRWYWx1ZQEFAXMEAXgDCQAAAgUCZWwAAAAAAwkAZwIFAmVsCQBoAgAEBQ1sYW5kU2l6ZUluZGV4CQBpAgUCZWwFDWxhbmRTaXplSW5kZXgDCQBmAgUCZWwJAGgCAAMFDWxhbmRTaXplSW5kZXgAAwkAZAIJAGkCCQBlAgUCZWwAAQUNbGFuZFNpemVJbmRleAABCQCVCgMJAM0IAggFA2FjYwJfMQUBeAkAZAIIBQNhY2MCXzIAAQkAZAIIBQNhY2MCXzMFAXgEAXQKAAIkbAULc3VtVGVycmFpbnMKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCVCgMFA25pbAAAAAAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBBXN0ZXAxAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA2CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGBANhcnIIBQF0Al8xBAZtYXhJZHgJAQV2YWx1ZQEJAM8IAgUDYXJyCQCWAwEFA2FycgQFZGVsdGEJAGUCCAUBdAJfMwAZCgEGc3ViYmVyAgNhY2MDaWR4BAN2YWwDCQAAAgUDaWR4BQZtYXhJZHgJAGUCCQCRAwIFA2FycgUDaWR4BQVkZWx0YQkAkQMCBQNhcnIFA2lkeAQGemVyb2VzAwkAAAIFA3ZhbAAABQNuaWwJALUJAgkAsAICCQCkAwEJAGwGAAoAAAUDdmFsAAAAAAUERE9XTgABAgAEAWMJAJEDAgUGVENIQVJTBQNpZHgKAQdsaXN0R2VuAgJhYwdpZ25vcmVkCQDNCAIFAmFjBQFjBAF6CgACJGwFBnplcm9lcwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAFA25pbAoBBSRmMV8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEHbGlzdEdlbgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMV8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMjUJAQUkZjFfMgIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQkAzggCBQNhY2MFAXoEAXIKAAIkbAUFSVRFUjYKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjFfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBBnN1YmJlcgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMV8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNgkBBSRmMV8yAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgoBBnBlcm11dAIDYWNjAWoJAKwCAgUDYWNjCQCRAwIFAXIFAWoKAAIkbAUGUEVSTTI1CgACJHMJAJADAQUCJGwKAAUkYWNjMAIACgEFJGYyXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQZwZXJtdXQCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjJfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDI1CQEFJGYyXzICCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQASABMAFAAVABYAFwAYABkBC2dldEJhY2twYWNrAQVicEtleQQBcAkAtQkCCQELdmFsdWVPckVsc2UCCQCiCAEFBWJwS2V5AhowOjBfMF8wXzBfMF8wOjBfMF8wXzBfMF8wOgIBOgkAzAgCCQCkAwEJAQt2YWx1ZU9yRWxzZQIJALYJAQkAkQMCBQFwBQpicElkeExldmVsAAAJAMwIAgMJAAACCQCQAwEJALUJAgkAkQMCBQFwBQhicElkeFJlcwIBXwUGTlVNUkVTCQCRAwIFAXAFCGJwSWR4UmVzAgswXzBfMF8wXzBfMAkAzAgCAwkAAAIJAJADAQkAtQkCCQCRAwIFAXAFCGJwSWR4TWF0AgFfBQZOVU1SRVMJAJEDAgUBcAUIYnBJZHhNYXQCCzBfMF8wXzBfMF8wCQDMCAIJAJEDAgUBcAUJYnBJZHhQcm9kBQNuaWwBF2dldFdhcmVob3VzZVRvdGFsVm9sdW1lAQl2b2xQcmVmaXgEBXBhcnRzCQC1CQIFCXZvbFByZWZpeAIBXwkAaAIJAGgCBQxXSE1VTFRJUExJRVIJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFcGFydHMAAQABCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFcGFydHMAAAEXZ2V0V2FyZWhvdXNlT2NjdXBpZWRWb2wBCWN1cnJlbnRXaAQFZ29vZHMJAJEDAgUJY3VycmVudFdoBQl3aElkeFByb2QKAQlzdW1SZXNNYXQCA2FjYwRpdGVtCQBkAgUDYWNjCQENcGFyc2VJbnRWYWx1ZQEFBGl0ZW0KAQdzdW1Qcm9kAgNhY2MEaXRlbQQDaWR4CAUDYWNjAl8xBARwa2dzCQBpAgkAZQIJAGQCCQENcGFyc2VJbnRWYWx1ZQEFBGl0ZW0FDlBST0RVQ1RQS0dTSVpFAAEFDlBST0RVQ1RQS0dTSVpFCQCUCgIJAGQCBQNpZHgAAQkAZAIIBQNhY2MCXzIJAGgCBQRwa2dzBQVNVUxUOAQId2hSZXNWb2wKAAIkbAkAtQkCCQCRAwIFCWN1cnJlbnRXaAUId2hJZHhSZXMCAV8KAAIkcwkAkAMBBQIkbAoABSRhY2MwAAAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBCXN1bVJlc01hdAIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNgkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgQId2hNYXRWb2wKAAIkbAkAtQkCCQCRAwIFCWN1cnJlbnRXaAUId2hJZHhNYXQCAV8KAAIkcwkAkAMBBQIkbAoABSRhY2MwAAAKAQUkZjFfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBCXN1bVJlc01hdAIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMV8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNgkBBSRmMV8yAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgQKd2hHb29kc1ZvbAMJAAACBQVnb29kcwIAAAAICgACJGwJALwJAgUFZ29vZHMCAV8KAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCUCgIAAAAACgEFJGYyXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQdzdW1Qcm9kAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYyXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyA1MAkBBSRmMl8yAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiACMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADICXzIJAGQCCQBkAgUId2hSZXNWb2wFCHdoTWF0Vm9sBQp3aEdvb2RzVm9sAQxnZXRXYXJlaG91c2UDBXdoS2V5CWxhbmRJbmRleAppbmZyYUxldmVsBAl2b2xQcmVmaXgJAKwCAgkArAICCQCkAwEFCWxhbmRJbmRleAIBXwkApAMBBQppbmZyYUxldmVsBAd3aFRvdGFsCQEXZ2V0V2FyZWhvdXNlVG90YWxWb2x1bWUBBQl2b2xQcmVmaXgEBXdoU3RyCQELdmFsdWVPckVsc2UCCQCiCAEFBXdoS2V5CQCsAgIFCXZvbFByZWZpeAIbOjBfMF8wXzBfMF8wOjBfMF8wXzBfMF8wOjowBAJ3aAkAvAkCBQV3aFN0cgIBOgQKd2hPY2N1cGllZAkBF2dldFdhcmVob3VzZU9jY3VwaWVkVm9sAQUCd2gEBndoTG9mdAMJAGYCAAUJAJADAQUCd2gJALkJAgkAzAgCAgEwCQDMCAIJAKQDAQUKd2hPY2N1cGllZAkAzAgCCQCkAwEJAGUCBQd3aFRvdGFsBQp3aE9jY3VwaWVkCQDMCAIJAKQDAQUHd2hUb3RhbAUDbmlsAgFfBARsb2Z0CQC1CQIJAJEDAgUCd2gFCXdoSWR4TE9GVAIBXwQId2hMb2NrZWQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQl2b2xMb2NrZWQEA29jYwMJAGYCCQCQAwEFBGxvZnQAAQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFC3ZvbE9jY3VwaWVkBQp3aE9jY3VwaWVkCQC5CQIJAMwIAgkApAMBBQh3aExvY2tlZAkAzAgCCQCkAwEFA29jYwkAzAgCCQCkAwEJAGUCCQBlAgUHd2hUb3RhbAUId2hMb2NrZWQFA29jYwkAzAgCCQCkAwEFB3doVG90YWwFA25pbAIBXwkAzAgCCQCRAwIFAndoBQt3aElkeExldmVscwkAzAgCAwkAAAIJAJADAQkAtQkCCQCRAwIFAndoBQh3aElkeFJlcwIBXwUGTlVNUkVTCQCRAwIFAndoBQh3aElkeFJlcwILMF8wXzBfMF8wXzAJAMwIAgMJAAACCQCQAwEJALUJAgkAkQMCBQJ3aAUId2hJZHhNYXQCAV8FBk5VTVJFUwkAkQMCBQJ3aAUId2hJZHhNYXQCCzBfMF8wXzBfMF8wCQDMCAIJAJEDAgUCd2gFCXdoSWR4UHJvZAkAzAgCBQZ3aExvZnQFA25pbAEVZ2V0V2FyZWhvdXNlU3BhY2VMZWZ0AQljdXJyZW50V2gEC29jY3VwaWVkVm9sCQEXZ2V0V2FyZWhvdXNlT2NjdXBpZWRWb2wBBQljdXJyZW50V2gED2N1cnJXaExvY2tlZFZvbAkBDXBhcnNlSW50VmFsdWUBCQCRAwIJALUJAgkAkQMCBQljdXJyZW50V2gFCXdoSWR4TE9GVAIBXwUJdm9sTG9ja2VkCQBlAgkAZQIJARdnZXRXYXJlaG91c2VUb3RhbFZvbHVtZQEJAJEDAgUJY3VycmVudFdoBQt3aElkeExldmVscwULb2NjdXBpZWRWb2wFD2N1cnJXaExvY2tlZFZvbAEJbW92ZVN0dWZmAwpjYXJnb1BhcnRzCWN1cnJlbnRXaAtjdXJyZW50UGFjawMJAQIhPQIJAJADAQUKY2FyZ29QYXJ0cwADCQACAQI0Y2FyZ29MaXN0U3RyIHNob3VsZCBjb250YWluIGV4YWN0bHkgMiAnOicgc2VwYXJhdG9ycwQIcmVzUGFydHMJALUJAgkAkQMCBQpjYXJnb1BhcnRzAAACAV8ECG1hdFBhcnRzCQC1CQIJAJEDAgUKY2FyZ29QYXJ0cwABAgFfBAlwcm9kUGFydHMDCQAAAgkAkQMCBQpjYXJnb1BhcnRzAAICAAUDbmlsCQC8CQIJAJEDAgUKY2FyZ29QYXJ0cwACAgFfAwkBAiE9AgkAkAMBBQhyZXNQYXJ0cwUGTlVNUkVTCQACAQIgQWxsIDYgcmVzb3VyY2VzIHNob3VsZCBiZSBwYXNzZWQDCQECIT0CCQCQAwEFCG1hdFBhcnRzBQZOVU1SRVMJAAIBAiBBbGwgNiBtYXRlcmlhbHMgc2hvdWxkIGJlIHBhc3NlZAQLd2hTcGFjZUxlZnQJARVnZXRXYXJlaG91c2VTcGFjZUxlZnQBBQljdXJyZW50V2gECWN1cnJXaFJlcwkAtQkCCQCRAwIFCWN1cnJlbnRXaAUId2hJZHhSZXMCAV8ECWN1cnJXaE1hdAkAtQkCCQCRAwIFCWN1cnJlbnRXaAUId2hJZHhNYXQCAV8ECmN1cnJXaFByb2QDCQAAAgkAkQMCBQljdXJyZW50V2gFCXdoSWR4UHJvZAIABQNuaWwJALwJAgkAkQMCBQljdXJyZW50V2gFCXdoSWR4UHJvZAIBXwQOY3VycmVudFBhY2tSZXMJALUJAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhSZXMCAV8EDmN1cnJlbnRQYWNrTWF0CQC1CQIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4TWF0AgFfBA9jdXJyZW50UGFja1Byb2QDCQAAAgkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kAgAFA25pbAkAvAkCCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QCAV8KAQNtdlICA2FjYwRpdGVtBAFpCAUDYWNjAl8xBAJhbQkBDXBhcnNlSW50VmFsdWUBBQRpdGVtBAN3aHIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQljdXJyV2hSZXMFAWkEA2JwcgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFDmN1cnJlbnRQYWNrUmVzBQFpAwkAAAIFAmFtAAAJAJYKBAkAZAIFAWkAAQkAzQgCCAUDYWNjAl8yCQCRAwIFCWN1cnJXaFJlcwUBaQkAzQgCCAUDYWNjAl8zCQCRAwIFDmN1cnJlbnRQYWNrUmVzBQFpCAUDYWNjAl80AwkAZgIFAmFtAAADCQBmAgUCYW0FA2JwcgkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgIQQXR0ZW1wdCB0byB0YWtlIAUEaXRlbQIZIGZyb20gYmFja3BhY2ssIGJ1dCBvbmx5IAkApAMBBQNicHICCiBhdmFpbGFibGUJAJYKBAkAZAIFAWkAAQkAzQgCCAUDYWNjAl8yCQCkAwEJAGQCBQN3aHIFAmFtCQDNCAIIBQNhY2MCXzMJAKQDAQkAZQIFA2JwcgUCYW0JAGQCCAUDYWNjAl80BQJhbQMJAGYCCQEBLQEFAmFtBQN3aHIJAAIBCQCsAgIJAKwCAgkArAICCQCsAgICEEF0dGVtcHQgdG8gdGFrZSAJAKQDAQkBAS0BBQJhbQIaIGZyb20gd2FyZWhvdXNlLCBidXQgb25seSAJAKQDAQUDd2hyAgogYXZhaWxhYmxlCQCWCgQJAGQCBQFpAAEJAM0IAggFA2FjYwJfMgkApAMBCQBkAgUDd2hyBQJhbQkAzQgCCAUDYWNjAl8zCQCkAwEJAGUCBQNicHIFAmFtCQBkAggFA2FjYwJfNAUCYW0EAXIKAAIkbAUIcmVzUGFydHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCWCgQAAAUDbmlsBQNuaWwAAAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEDbXZSAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA2CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGCgEDbXZNAgNhY2MEaXRlbQQBaQgFA2FjYwJfMQQCYW0JAQ1wYXJzZUludFZhbHVlAQUEaXRlbQQDd2htCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUJY3VycldoTWF0BQFpBANicG0JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQ5jdXJyZW50UGFja01hdAUBaQMJAAACBQJhbQAACQCWCgQJAGQCBQFpAAEJAM0IAggFA2FjYwJfMgkAkQMCBQljdXJyV2hNYXQFAWkJAM0IAggFA2FjYwJfMwkAkQMCBQ5jdXJyZW50UGFja01hdAUBaQgFA2FjYwJfNAMJAGYCBQJhbQAAAwkAZgIFAmFtBQNicG0JAAIBCQCsAgIJAKwCAgkArAICCQCsAgICEEF0dGVtcHQgdG8gdGFrZSAFBGl0ZW0CGSBmcm9tIGJhY2twYWNrLCBidXQgb25seSAJAKQDAQUDYnBtAgogYXZhaWxhYmxlCQCWCgQJAGQCBQFpAAEJAM0IAggFA2FjYwJfMgkApAMBCQBkAgUDd2htBQJhbQkAzQgCCAUDYWNjAl8zCQCkAwEJAGUCBQNicG0FAmFtCQBkAggFA2FjYwJfNAUCYW0DCQBmAgkBAS0BBQJhbQUDd2htCQACAQkArAICCQCsAgIJAKwCAgkArAICAhBBdHRlbXB0IHRvIHRha2UgCQCkAwEJAQEtAQUCYW0CGiBmcm9tIHdhcmVob3VzZSwgYnV0IG9ubHkgCQCkAwEFA3dobQIKIGF2YWlsYWJsZQkAlgoECQBkAgUBaQABCQDNCAIIBQNhY2MCXzIJAKQDAQkAZAIFA3dobQUCYW0JAM0IAggFA2FjYwJfMwkApAMBCQBlAgUDYnBtBQJhbQkAZAIIBQNhY2MCXzQFAmFtBAFtCgACJGwFCG1hdFBhcnRzCgACJHMJAJADAQUCJGwKAAUkYWNjMAkAlgoEAAAFA25pbAUDbmlsCAUBcgJfNAoBBSRmMV8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEDbXZNAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYxXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA2CQEFJGYxXzICCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECBQUkYWNjMAAAAAEAAgADAAQABQAGCgEDbXZQAgNhY2MEaXRlbQQBaQgFA2FjYwJfMQQCYW0JAQ1wYXJzZUludFZhbHVlAQUEaXRlbQQDd2hwAwkAZgIJAJADAQUKY3VycldoUHJvZAUBaQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCmN1cnJXaFByb2QFAWkAAAQDYnBwAwkAZgIJAJADAQUPY3VycmVudFBhY2tQcm9kBQFpCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUPY3VycmVudFBhY2tQcm9kBQFpAAADCQAAAgUCYW0AAAkAlgoECQBkAgUBaQABCQDNCAIIBQNhY2MCXzIJAKQDAQUDd2hwCQDNCAIIBQNhY2MCXzMJAKQDAQUDYnBwCAUDYWNjAl80AwkAZgIFAmFtAAADCQBmAgUCYW0FA2JwcAkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgIQQXR0ZW1wdCB0byB0YWtlIAUEaXRlbQIZIGZyb20gYmFja3BhY2ssIGJ1dCBvbmx5IAkApAMBBQNicHACCiBhdmFpbGFibGUECGRlbHRhVm9sCQBlAgkBCHRvVm9sdW1lAgkAZAIFA3docAUCYW0FDlBST0RVQ1RQS0dTSVpFCQEIdG9Wb2x1bWUCBQN3aHAFDlBST0RVQ1RQS0dTSVpFCQCWCgQJAGQCBQFpAAEJAM0IAggFA2FjYwJfMgkApAMBCQBkAgUDd2hwBQJhbQkAzQgCCAUDYWNjAl8zCQCkAwEJAGUCBQNicHAFAmFtCQBkAggFA2FjYwJfNAUIZGVsdGFWb2wDCQBmAgkBAS0BBQJhbQUDd2hwCQACAQkArAICCQCsAgIJAKwCAgkArAICAhBBdHRlbXB0IHRvIHRha2UgCQCkAwEJAQEtAQUCYW0CGiBmcm9tIHdhcmVob3VzZSwgYnV0IG9ubHkgCQCkAwEFA3docAIKIGF2YWlsYWJsZQQIZGVsdGFWb2wJAGUCCQEIdG9Wb2x1bWUCCQBkAgUDd2hwBQJhbQUOUFJPRFVDVFBLR1NJWkUJAQh0b1ZvbHVtZQIFA3docAUOUFJPRFVDVFBLR1NJWkUJAJYKBAkAZAIFAWkAAQkAzQgCCAUDYWNjAl8yCQCkAwEJAGQCBQN3aHAFAmFtCQDNCAIIBQNhY2MCXzMJAKQDAQkAZQIFA2JwcAUCYW0JAGQCCAUDYWNjAl80BQhkZWx0YVZvbAQBcAMJAQIhPQIJAJADAQUJcHJvZFBhcnRzAAAKAAIkbAUJcHJvZFBhcnRzCgACJHMJAJADAQUCJGwKAAUkYWNjMAkAlgoEAAAFA25pbAUDbmlsCAUBbQJfNAoBBSRmMl8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEDbXZQAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYyXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyA1MAkBBSRmMl8yAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiACMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIJAJYKBAAABQpjdXJyV2hQcm9kBQ9jdXJyZW50UGFja1Byb2QIBQFtAl80BAh2b2xTYWxkbwgFAXACXzQDCQBmAgUIdm9sU2FsZG8FC3doU3BhY2VMZWZ0CQACAQkArAICCQCsAgIJAKwCAgkArAICAhVBdHRlbXB0IHRvIHB1dCB0b3RhbCAJAKQDAQUIdm9sU2FsZG8CESBzdHVmZiwgYnV0IG9ubHkgCQCkAwEFC3doU3BhY2VMZWZ0AhUgd2FyZWhvdXNlIHNwYWNlIGxlZnQJAJkKBwkAuQkCCAUBcgJfMgIBXwkAuQkCCAUBbQJfMgIBXwkAugkCCAUBcAJfMgIBXwkAuQkCCAUBcgJfMwIBXwkAuQkCCAUBbQJfMwIBXwkAugkCCAUBcAJfMwIBXwUIdm9sU2FsZG8BEmV4cGVkaXRpb25JbnRlcm5hbAIGY2FsbGVyBHR4SWQECHVzZXJBZGRyCQClCAEFBmNhbGxlcgQGYmlnTnVtCQEDYWJzAQkAngMBBQR0eElkBAdmcmVlTnVtCQELdmFsdWVPckVsc2UCCQCfCAEJARJrZXlOZXh0RnJlZUxhbmROdW0ACQBkAgUPUFJFU0FMRU5VTUxBTkRTAAEEB2xhbmROdW0JAKQDAQUHZnJlZU51bQQMY29udGluZW50SWR4CQCgAwEJALsCAgUGYmlnTnVtBQVGSVZFWAQIdGVycmFpbnMJAQtnZW5UZXJyYWlucwIFBmJpZ051bQUMY29udGluZW50SWR4BAljb250aW5lbnQJAJEDAgUKY29udGluZW50cwUMY29udGluZW50SWR4BAVpc3N1ZQkAwggFCQEHbmZ0TmFtZQIFB2xhbmROdW0CAVMJALkJAgkAzAgCBQdsYW5kTnVtCQDMCAICAVMJAMwIAgUIdGVycmFpbnMJAMwIAgUJY29udGluZW50BQNuaWwCAV8AAQAABwQHYXNzZXRJZAkAuAgBBQVpc3N1ZQQCaWQJANgEAQUHYXNzZXRJZAkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQESa2V5TmV4dEZyZWVMYW5kTnVtAAkAZAIFB2ZyZWVOdW0AAQkAzAgCBQVpc3N1ZQkAzAgCCQELU3RyaW5nRW50cnkCCQEQa2V5TGFuZFRvQXNzZXRJZAEFB2xhbmROdW0FAmlkCQDMCAIJAQtTdHJpbmdFbnRyeQIJARVrZXlMYW5kQXNzZXRJZFRvT3duZXIBBQJpZAUIdXNlckFkZHIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBEWtleUxhbmROdW1Ub093bmVyAQUHbGFuZE51bQUIdXNlckFkZHIJAMwIAgkBDEludGVnZXJFbnRyeQIJARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQUCaWQAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBHmtleUluZnJhTGV2ZWxCeUFzc2V0SWRBbmRPd25lcgIFAmlkBQh1c2VyQWRkcgAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFBmNhbGxlcgABBQdhc3NldElkBQNuaWwJAJQKAgUCaWQFCWNvbnRpbmVudAEMZmxpZ2h0Q29tbW9uAwh1c2VyQWRkcgdtZXNzYWdlA3NpZwMJAQEhAQkAxBMDBQdtZXNzYWdlBQNzaWcFA3B1YgkAAgECGHNpZ25hdHVyZSBkb2VzIG5vdCBtYXRjaAQFcGFydHMJALwJAgkAsAkBBQdtZXNzYWdlAgE7BAlmbGlnaHRMb2cJALwJAgkAkQMCBQVwYXJ0cwAAAgF8BAJocAkAtQkCCQCRAwIFCWZsaWdodExvZwUIZmxIZWFsdGgCAV8EBWN1ckhQCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCaHAAAAQFbmV3SFAJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJocAABBAtuZXdMb2NUeFZlcgkAtQkCCQCRAwIFBXBhcnRzAAECAToEC25ld0xvY2F0aW9uCQCRAwIFC25ld0xvY1R4VmVyAAAEBHRpbWUJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQlmbGlnaHRMb2cFC2ZsVGltZXN0YW1wAwMJAGYCBQR0aW1lCQBkAggFCWxhc3RCbG9jawl0aW1lc3RhbXAFEUZJVkVNSU5VVEVTTUlMTElTBgkAZgIJAGUCCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAURRklWRU1JTlVURVNNSUxMSVMFBHRpbWUJAAIBCQCsAgIJAKwCAgkArAICAhxzaWduYXR1cmUgb3V0ZGF0ZWQ6IGxvZ1RpbWU9CQCkAwEFBHRpbWUCCSwgYmNUaW1lPQkApAMBCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQJdHhGcm9tTXNnCQCRAwIFC25ld0xvY1R4VmVyAAEEBmxhc3RUeAkBC3ZhbHVlT3JFbHNlAgkAoggBCQERa2V5TGFzdFR4SWRCeVVzZXIBBQh1c2VyQWRkcgIAAwkBAiE9AgUGbGFzdFR4BQl0eEZyb21Nc2cJAAIBCQCsAgIJAKwCAgkArAICAh5UeCBpZHMgZG9uJ3QgbWF0Y2ghIEluIHN0YXRlOiAFBmxhc3RUeAIKLCBpbiBtc2c6IAUJdHhGcm9tTXNnBAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFCHVzZXJBZGRyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkBAlrZXlIZWFsdGgJAQ1rZXlEdWNrSGVhbHRoAQULZHVja0Fzc2V0SWQEBW1heEhQCQEJbWF4SGVhbHRoAQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEMa2V5RHVja0xldmVsAQULZHVja0Fzc2V0SWQAAAQMb2xkRnJvbVN0YXRlCQELdmFsdWVPckVsc2UCCQCfCAEFCWtleUhlYWx0aAUFbWF4SFADCQECIT0CBQxvbGRGcm9tU3RhdGUFBWN1ckhQCQACAQkArAICCQCsAgIJAKwCAgIKb2xkSGVhbHRoPQkApAMBBQxvbGRGcm9tU3RhdGUCLyBmcm9tIHN0YXRlIGRvZXMgbm90IG1hdGNoIG9uZSBmcm9tIGZsaWdodCBsb2c9CQCkAwEFBWN1ckhQAwkAZwIAAAUFY3VySFAJAAIBAh5Zb3UgY2FuJ3QgZmx5IHdpdGggemVybyBoZWFsdGgDCQEBIQEJARdjYW5XZWFyQ3VycmVudEVxdWlwbWVudAEFC2R1Y2tBc3NldElkCQACAQIWRXF1aXBtZW50IGluY29tcGF0aWJsZQQFYm9udXMDCQBmAgkAkAMBBQlmbGlnaHRMb2cFB2ZsQm9udXMJAJEDAgUJZmxpZ2h0TG9nBQdmbEJvbnVzAgAECHByb2RVc2VkAwkAZgIJAJADAQUJZmxpZ2h0TG9nBQtmbFByb2RzVXNlZAkAkQMCBQlmbGlnaHRMb2cFC2ZsUHJvZHNVc2VkAgAECnNlbnRBbW91bnQDAwkAZgIFBW5ld0hQAAAJAAACBQVib251cwIBJAcJAQVhc0ludAEJAPwHBAUMcmVzdENvbnRyYWN0Ag1zZW5kVXNkdFByaXplCQDMCAIFCHVzZXJBZGRyBQNuaWwFA25pbAAACQCXCgUFBW5ld0hQBQtkdWNrQXNzZXRJZAUKc2VudEFtb3VudAULbmV3TG9jYXRpb24FCHByb2RVc2VkAQxhcHBseUJvbnVzZXMCC2xhbmRBc3NldElkBnBpZWNlcwQKaW5mcmFMZXZlbAkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEWa2V5SW5mcmFMZXZlbEJ5QXNzZXRJZAEFC2xhbmRBc3NldElkAAAECWFydFBpZWNlcwkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEga2V5TGFuZEFydFN0YXR1c0J5VHlwZUFuZEFzc2V0SWQCBQpBUlRQUkVTQUxFBQtsYW5kQXNzZXRJZAAABARhZGQ2CQBpAgUKaW5mcmFMZXZlbAAGBARhZGQ3CQBpAgUKaW5mcmFMZXZlbAAHCQBkAgkAZAIFD0RBSUxZUkVTQllQSUVDRQkAawMFD0RBSUxZUkVTQllQSUVDRQkAZAIJAGQCBQppbmZyYUxldmVsBQRhZGQ2CQBoAgACBQRhZGQ3AAUJAGsDBQ9EQUlMWVJFU0JZUElFQ0UFCWFydFBpZWNlcwkAaAIFBnBpZWNlcwAFARRjaGVja0NsYWltQ29uZGl0aW9ucwMEYWRkcgljbGFpbU1vZGUNbGFuZEFzc2V0SWRJbgQNJHQwMzM3MzgzNDI3NwMJAAACBQljbGFpbU1vZGUFC2NsYWltTW9kZVdoCQCUCgIFDWxhbmRBc3NldElkSW4JAQt2YWx1ZU9yRWxzZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUEYWRkcgIABAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFBGFkZHICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQEC2N1ckxvY2F0aW9uCQELdmFsdWVPckVsc2UCCQCiCAEJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAUPREVGQVVMVExPQ0FUSU9OBANsb2MJALUJAgkBBXZhbHVlAQULY3VyTG9jYXRpb24CAV8DCQECIT0CCQCRAwIFA2xvYwUKbG9jSWR4VHlwZQIBTAkAAgEJAKwCAgkArAICAhZEdWNrIGxvY2F0aW9uIHR5cGUgaXMgCQCRAwIFA2xvYwUKbG9jSWR4VHlwZQIRLCBidXQgc2hvdWxkIGJlIEwJAJQKAgkAkQMCBQNsb2MFCGxvY0lkeElkBQtkdWNrQXNzZXRJZAQLbGFuZEFzc2V0SWQIBQ0kdDAzMzczODM0Mjc3Al8xBAZkdWNrSWQIBQ0kdDAzMzczODM0Mjc3Al8yBAVhc3NldAkBBXZhbHVlAQkA7AcBCQDZBAEFC2xhbmRBc3NldElkBAd0aW1lS2V5CQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFC2xhbmRBc3NldElkBAlzYXZlZFRpbWUJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnwgBBQd0aW1lS2V5CQCsAgIJAKwCAgIFTGFuZCAIBQVhc3NldARuYW1lAg4gaXMgbm90IHN0YWtlZAQFb3duZXIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEVa2V5TGFuZEFzc2V0SWRUb093bmVyAQULbGFuZEFzc2V0SWQJAKwCAgkArAICAgRORlQgCAUFYXNzZXQEbmFtZQIMIGlzIG9ycGhhbmVkAwkBAiE9AgUFb3duZXIFBGFkZHIJAAIBCQCsAgIFCkxBTkRQUkVGSVgCDSBpcyBub3QgeW91cnMEAWQJALUJAggFBWFzc2V0C2Rlc2NyaXB0aW9uAgFfCQCWCgQFBmR1Y2tJZAULbGFuZEFzc2V0SWQFAWQFCXNhdmVkVGltZQEQY2xhaW1SZXNJbnRlcm5hbAQEYWRkcgZhbW91bnQJY2xhaW1Nb2RlDWxhbmRBc3NldElkSW4DCQBmAgAABQZhbW91bnQJAAIBAg9OZWdhdGl2ZSBhbW91bnQEAWMJARRjaGVja0NsYWltQ29uZGl0aW9ucwMFBGFkZHIFCWNsYWltTW9kZQUNbGFuZEFzc2V0SWRJbgQIbGFuZFNpemUJAJEDAggFAWMCXzMFC3JlY0xhbmRTaXplBA10ZXJyYWluQ291bnRzCQENY291bnRUZXJyYWlucwEJAJEDAggFAWMCXzMFC3JlY1RlcnJhaW5zBAlkZWx0YVRpbWUJAGUCCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAgFAWMCXzQDCQBmAgAABQlkZWx0YVRpbWUJAAIBCQCsAgIJAKwCAgkArAICAiZTYXZlZCB0aW1lc3RhbXAgaXMgaW4gZnV0dXJlLCBzYXZlZCA9IAkApAMBCAUBYwJfNAIMLCBjdXJyZW50ID0gCQCkAwEIBQlsYXN0QmxvY2sJdGltZXN0YW1wBAZwaWVjZXMJAQ9udW1QaWVjZXNCeVNpemUBBQhsYW5kU2l6ZQQWZGFpbHlQcm9kdWN0aW9uQnlQaWVjZQkBDGFwcGx5Qm9udXNlcwIIBQFjAl8yBQZwaWVjZXMECGF2YWlsUmVzCQBrAwUJZGVsdGFUaW1lCQBoAgUWZGFpbHlQcm9kdWN0aW9uQnlQaWVjZQUGcGllY2VzBQlEQVlNSUxMSVMDCQBmAgUGYW1vdW50BQhhdmFpbFJlcwkAAgEJAKwCAgkArAICCQCsAgICIk5vdCBlbm91Z2ggcmVzb3VyY2VzLCBhdmFpbGFibGUgPSAJAKQDAQUIYXZhaWxSZXMCDiwgcmVxdWVzdGVkID0gCQCkAwEFBmFtb3VudAQMbmV3RGVsdGFUaW1lCQBrAwkAZQIFCGF2YWlsUmVzBQZhbW91bnQFCURBWU1JTExJUwkAaAIFFmRhaWx5UHJvZHVjdGlvbkJ5UGllY2UFBnBpZWNlcwQMbmV3VGltZXN0YW1wCQBlAggFCWxhc3RCbG9jawl0aW1lc3RhbXAFDG5ld0RlbHRhVGltZQQJbGFuZEluZGV4CQBpAgUGcGllY2VzBQVTU0laRQQKcmVzVG9DbGFpbQkBCXZpcnRDbGFpbQQFDXRlcnJhaW5Db3VudHMJAGUCBQlkZWx0YVRpbWUFDG5ld0RlbHRhVGltZQUJbGFuZEluZGV4BRZkYWlseVByb2R1Y3Rpb25CeVBpZWNlBAV3aEtleQkBEmtleVdhcmVob3VzZUJ5TGFuZAEIBQFjAl8yBAppbmZyYUxldmVsCQELdmFsdWVPckVsc2UCCQCfCAEJARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQgFAWMCXzIAAAQJY3VycmVudFdoCQEMZ2V0V2FyZWhvdXNlAwUFd2hLZXkFCWxhbmRJbmRleAUKaW5mcmFMZXZlbAQEbG9mdAkAtQkCCQCRAwIFCWN1cnJlbnRXaAUJd2hJZHhMT0ZUAgFfBAt3aFNwYWNlTGVmdAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFB3ZvbEZyZWUDAwkAAAIFCWNsYWltTW9kZQULY2xhaW1Nb2RlV2gJAGYCBQZhbW91bnQFC3doU3BhY2VMZWZ0BwkAAgEJAKwCAgkArAICAgVPbmx5IAkApAMBBQt3aFNwYWNlTGVmdAIYIHNwYWNlIGxlZnQgaW4gd2FyZWhvdXNlBAVicEtleQkBEWtleUJhY2twYWNrQnlEdWNrAQgFAWMCXzEEC2N1cnJlbnRQYWNrCQELZ2V0QmFja3BhY2sBBQVicEtleQQOY3VycmVudFBhY2tSZXMJALUJAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhSZXMCAV8EDGN1cnJlbnRXaFJlcwkAtQkCCQCRAwIFCWN1cnJlbnRXaAUId2hJZHhSZXMCAV8EDSR0MDM2NjUxMzc1MjIDCQAAAgUJY2xhaW1Nb2RlBQtjbGFpbU1vZGVXaAkAlgoECQEGYWRkUmVzBQUMY3VycmVudFdoUmVzBQ10ZXJyYWluQ291bnRzCQBlAgUJZGVsdGFUaW1lBQxuZXdEZWx0YVRpbWUFCWxhbmRJbmRleAUWZGFpbHlQcm9kdWN0aW9uQnlQaWVjZQkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhSZXMJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEbG9mdAULdm9sT2NjdXBpZWQIBQpyZXNUb0NsYWltAl8yCQBlAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFB3ZvbEZyZWUIBQpyZXNUb0NsYWltAl8yAwkAAAIFCWNsYWltTW9kZQUNY2xhaW1Nb2RlRHVjawkAlgoECQCRAwIFCWN1cnJlbnRXaAUId2hJZHhSZXMJAQZhZGRSZXMFBQ5jdXJyZW50UGFja1JlcwUNdGVycmFpbkNvdW50cwkAZQIFCWRlbHRhVGltZQUMbmV3RGVsdGFUaW1lBQlsYW5kSW5kZXgFFmRhaWx5UHJvZHVjdGlvbkJ5UGllY2UJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQt2b2xPY2N1cGllZAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFB3ZvbEZyZWUEBWRpc3RyCQENZGlzdHJpYnV0ZVJlcwQFDGN1cnJlbnRXaFJlcwUOY3VycmVudFBhY2tSZXMFCnJlc1RvQ2xhaW0FC3doU3BhY2VMZWZ0BAR3aEFtCQCXAwEJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFB3ZvbEZyZWUJAMwIAggFCnJlc1RvQ2xhaW0CXzIFA25pbAkAlgoECAUFZGlzdHICXzEIBQVkaXN0cgJfMgkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQt2b2xPY2N1cGllZAUEd2hBbQkAZQIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQd2b2xGcmVlBQR3aEFtBAV3aFJlcwgFDSR0MDM2NjUxMzc1MjICXzEEBWJwUmVzCAUNJHQwMzY2NTEzNzUyMgJfMgQFbG9mdE8IBQ0kdDAzNjY1MTM3NTIyAl8zBAVsb2Z0RggFDSR0MDM2NjUxMzc1MjICXzQJAJcKBQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBCAUBYwJfMgUMbmV3VGltZXN0YW1wCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEia2V5U3Rha2VkVGltZUJ5VHlwZUFzc2V0SWRBbmRPd25lcgMFCkxBTkRQUkVGSVgIBQFjAl8yBQRhZGRyBQxuZXdUaW1lc3RhbXAFA25pbAUFYnBLZXkJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUKYnBJZHhMZXZlbAkAzAgCBQVicFJlcwkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeE1hdAkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QFA25pbAUFd2hLZXkJAMwIAgkAkQMCBQljdXJyZW50V2gFC3doSWR4TGV2ZWxzCQDMCAIFBXdoUmVzCQDMCAIJAJEDAgUJY3VycmVudFdoBQh3aElkeE1hdAkAzAgCCQCRAwIFCWN1cnJlbnRXaAUJd2hJZHhQcm9kCQDMCAIJALkJAgkAzAgCCQCRAwIFBGxvZnQFCXZvbExvY2tlZAkAzAgCCQCkAwEFBWxvZnRPCQDMCAIJAKQDAQUFbG9mdEYJAMwIAgkAkQMCBQRsb2Z0BQh2b2xUb3RhbAUDbmlsAgFfBQNuaWwBCGNsYWltQWxsBARhZGRyC2xhbmRBc3NldElkBnBpZWNlcwljbGFpbU1vZGUEB3RpbWVLZXkJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQULbGFuZEFzc2V0SWQECXNhdmVkVGltZQkBBXZhbHVlAQkAnwgBBQd0aW1lS2V5BAhhdmFpbFJlcwkAaAIJAGsDCQBlAggFCWxhc3RCbG9jawl0aW1lc3RhbXAFCXNhdmVkVGltZQkBDGFwcGx5Qm9udXNlcwIFC2xhbmRBc3NldElkBQZwaWVjZXMFCURBWU1JTExJUwUGcGllY2VzCQEQY2xhaW1SZXNJbnRlcm5hbAQFBGFkZHIFCGF2YWlsUmVzBQljbGFpbU1vZGUFC2xhbmRBc3NldElkAQ11cEluZnJhQ29tbW9uBAxzaG91bGRVc2VNYXQGY2FsbGVyDXBheW1lbnRBbW91bnQLbGFuZEFzc2V0SWQEBGFkZHIJAKUIAQUGY2FsbGVyBAFjCQEUY2hlY2tDbGFpbUNvbmRpdGlvbnMDBQRhZGRyBRNjbGFpbU1vZGVXaFRoZW5EdWNrBQtsYW5kQXNzZXRJZAQGcGllY2VzCQEPbnVtUGllY2VzQnlTaXplAQkAkQMCCAUBYwJfMwULcmVjTGFuZFNpemUECGluZnJhS2V5CQEWa2V5SW5mcmFMZXZlbEJ5QXNzZXRJZAEIBQFjAl8yBAhjdXJMZXZlbAkBC3ZhbHVlT3JFbHNlAgkAnwgBBQhpbmZyYUtleQAAAwMJAQEhAQUYS1NfQUxMT1dfQklHX0lORlJBX01FUkdFCQBnAgUIY3VyTGV2ZWwAAwcJAAIBAiZDdXJyZW50bHkgbWF4IGluZnJhc3RydWN0dXJlIGxldmVsID0gMwQIbWF4SW5mcmEJAGQCCQBpAgkBBHNxcnQEBQZwaWVjZXMAAAAABQRET1dOAAUAAgQIbmV3TGV2ZWwJAGQCBQhjdXJMZXZlbAABAwMFGEtTX0FMTE9XX0JJR19JTkZSQV9NRVJHRQkAZgIFCG5ld0xldmVsBQhtYXhJbmZyYQcJAAIBCQCsAgICJUN1cnJlbnRseSBtYXggaW5mcmFzdHJ1Y3R1cmUgbGV2ZWwgPSAJAKQDAQUIbWF4SW5mcmEEBGNvc3QJAGsDBRVJbmZyYVVwZ3JhZGVDb3N0U1VzZHQJAGgCBQZwaWVjZXMFCG5ld0xldmVsBQVTU0laRQMDCQEBIQEFDHNob3VsZFVzZU1hdAkBAiE9AgUNcGF5bWVudEFtb3VudAUEY29zdAcJAAIBCQCsAgICG1BheW1lbnQgYXR0YWNoZWQgc2hvdWxkIGJlIAkApAMBBQRjb3N0BAVicEtleQkBEWtleUJhY2twYWNrQnlEdWNrAQgFAWMCXzEEC2N1cnJlbnRQYWNrCQELZ2V0QmFja3BhY2sBBQVicEtleQQFbUxpc3QJALUJAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhNYXQCAV8EB21hdFVzZWQJAGsDBRFJbmZyYVVwZ3JhZGVDb3N0UwkAaAIFBnBpZWNlcwUIbmV3TGV2ZWwFBVNTSVpFBAZuZXdNYXQJALkJAgkBEXN1YnRyYWN0TWF0ZXJpYWxzAwUMc2hvdWxkVXNlTWF0BQVtTGlzdAUHbWF0VXNlZAIBXwQLY2xhaW1SZXN1bHQJAQhjbGFpbUFsbAQFBGFkZHIIBQFjAl8yBQZwaWVjZXMFE2NsYWltTW9kZVdoVGhlbkR1Y2sEBndoRGF0YQgFC2NsYWltUmVzdWx0Al81BAZvbGRWb2wJARdnZXRXYXJlaG91c2VUb3RhbFZvbHVtZQEJAJEDAgUGd2hEYXRhBQt3aElkeExldmVscwQKbmV3Vm9sRGF0YQkAuQkCCQDMCAIJAJEDAgkAtQkCCQCRAwIFBndoRGF0YQULd2hJZHhMZXZlbHMCAV8AAAkAzAgCCQCkAwEFCG5ld0xldmVsBQNuaWwCAV8EBm5ld1ZvbAkBF2dldFdhcmVob3VzZVRvdGFsVm9sdW1lAQUKbmV3Vm9sRGF0YQQEbG9mdAkAtQkCCQCRAwIFBndoRGF0YQUJd2hJZHhMT0ZUAgFfBApuZXdMb2Z0U3RyCQC5CQIJAMwIAgkAkQMCBQRsb2Z0BQl2b2xMb2NrZWQJAMwIAgkAkQMCBQRsb2Z0BQt2b2xPY2N1cGllZAkAzAgCCQCkAwEJAGUCCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFB3ZvbEZyZWUFBm5ld1ZvbAUGb2xkVm9sCQDMCAIJAKQDAQUGbmV3Vm9sBQNuaWwCAV8JAJUKAwkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQhpbmZyYUtleQUIbmV3TGV2ZWwJAMwIAgkBDEludGVnZXJFbnRyeQIJAR5rZXlJbmZyYUxldmVsQnlBc3NldElkQW5kT3duZXICCAUBYwJfMgUEYWRkcgUIbmV3TGV2ZWwJAMwIAgkBC1N0cmluZ0VudHJ5AgUFYnBLZXkJALkJAgkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQpicElkeExldmVsCQDMCAIJAJEDAggFC2NsYWltUmVzdWx0Al8zBQhicElkeFJlcwkAzAgCBQZuZXdNYXQJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kBQNuaWwCAToJAMwIAgkBC1N0cmluZ0VudHJ5AggFC2NsYWltUmVzdWx0Al80CQC5CQIJAMwIAgUKbmV3Vm9sRGF0YQkAzAgCCQCRAwIFBndoRGF0YQUId2hJZHhSZXMJAMwIAgkAkQMCBQZ3aERhdGEFCHdoSWR4TWF0CQDMCAIJAJEDAgUGd2hEYXRhBQl3aElkeFByb2QJAMwIAgUKbmV3TG9mdFN0cgUDbmlsAgE6BQNuaWwIBQtjbGFpbVJlc3VsdAJfMQUIbmV3TGV2ZWwFB21hdFVzZWQBF3VwZGF0ZUR1Y2tTdGF0c0ludGVybmFsAgtkdWNrQXNzZXRJZAdkZWx0YVhQBAZsdmxLZXkJAQxrZXlEdWNrTGV2ZWwBBQtkdWNrQXNzZXRJZAQFeHBLZXkJAQlrZXlEdWNrWFABBQtkdWNrQXNzZXRJZAQCeHAJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPc3Rha2luZ0NvbnRyYWN0BQV4cEtleQAABAVuZXdYUAkAZAIFAnhwBQdkZWx0YVhQBAlsdmxQb2ludHMJAQdsZXZlbFVwAgkBC3ZhbHVlT3JFbHNlAgkAmggCBQ9zdGFraW5nQ29udHJhY3QFBmx2bEtleQAABQVuZXdYUAQJa2V5UG9pbnRzCQERa2V5RHVja0ZyZWVQb2ludHMBBQtkdWNrQXNzZXRJZAkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQZsdmxLZXkJAJEDAgUJbHZsUG9pbnRzAAAJAMwIAgkBDEludGVnZXJFbnRyeQIFBXhwS2V5BQVuZXdYUAkAzAgCCQEMSW50ZWdlckVudHJ5AgUJa2V5UG9pbnRzCQBkAgkBC3ZhbHVlT3JFbHNlAgkAnwgBBQlrZXlQb2ludHMAAAkAkQMCBQlsdmxQb2ludHMAAQUDbmlsBQVuZXdYUAEWdXBkYXRlQWNjU3RhdHNJbnRlcm5hbAIEYWRkcgdkZWx0YVhQBAZsdmxLZXkJAQxrZXlVc2VyTGV2ZWwBBQRhZGRyBAV4cEtleQkBCWtleVVzZXJYUAEFBGFkZHIEAnhwCQELdmFsdWVPckVsc2UCCQCaCAIFD3N0YWtpbmdDb250cmFjdAUFeHBLZXkAAAQFbmV3WFAJAGQCBQJ4cAUHZGVsdGFYUAQJbHZsUG9pbnRzCQEHbGV2ZWxVcAIJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPc3Rha2luZ0NvbnRyYWN0BQZsdmxLZXkAAAUFbmV3WFAECWtleVBvaW50cwkBEWtleVVzZXJGcmVlUG9pbnRzAQUEYWRkcgkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQZsdmxLZXkJAJEDAgUJbHZsUG9pbnRzAAAJAMwIAgkBDEludGVnZXJFbnRyeQIFBXhwS2V5BQVuZXdYUAkAzAgCCQEMSW50ZWdlckVudHJ5AgUJa2V5UG9pbnRzCQBkAgkBC3ZhbHVlT3JFbHNlAgkAnwgBBQlrZXlQb2ludHMAAAkAkQMCBQlsdmxQb2ludHMAAQUDbmlsBQVuZXdYUAESYWN0aXZhdGVPbmJvYXJkQXJ0AQRhZGRyBAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFBGFkZHICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQECHJlZkJ5S2V5CQEPa2V5QWRkcmVzc1JlZkJ5AQUEYWRkcgQFcmVmQnkJAKIIAQUIcmVmQnlLZXkDCQEBIQEJAQlpc0RlZmluZWQBBQVyZWZCeQkAAgECKVlvdSBhcmUgbm90IGVsaWdpYmxlIGZvciBPTkJPQVJEIGFydGlmYWN0BAZhcnRLZXkJARxrZXlPbmJvYXJkQXJ0RHVja0FjdGl2YXRlZEJ5AQUEYWRkcgQHYXJ0RHVjawkAoggBBQZhcnRLZXkDCQEJaXNEZWZpbmVkAQUHYXJ0RHVjawkAAgEJAKwCAgIvWW91IGFscmVhZHkgdXNlZCB5b3VyIE9OQk9BUkQgYXJ0aWZhY3Qgb24gZHVjayAJAQV2YWx1ZQEFB2FydER1Y2sEEGR1Y2tBY3RpdmF0b3JLZXkJARxrZXlPbmJvYXJkQXJ0QWN0aXZhdGVkT25EdWNrAQULZHVja0Fzc2V0SWQEDWR1Y2tBY3RpdmF0b3IJAKIIAQUQZHVja0FjdGl2YXRvcktleQMJAQlpc0RlZmluZWQBBQ1kdWNrQWN0aXZhdG9yCQACAQkArAICCQCsAgIJAKwCAgIJVGhlIGR1Y2sgBQtkdWNrQXNzZXRJZAI0IGFscmVhZHkgZ290IHBvaW50cyBmcm9tIE9OQk9BUkQgYXJ0aWZhY3QgZnJvbSB1c2VyIAkBBXZhbHVlAQUNZHVja0FjdGl2YXRvcgkAzggCCQDMCAIJAQtTdHJpbmdFbnRyeQIFBmFydEtleQULZHVja0Fzc2V0SWQJAMwIAgkBC1N0cmluZ0VudHJ5AgUQZHVja0FjdGl2YXRvcktleQUEYWRkcgUDbmlsCAkBF3VwZGF0ZUR1Y2tTdGF0c0ludGVybmFsAgULZHVja0Fzc2V0SWQFCXhwT25ib2FyZAJfMQESYWN0aXZhdGVQcmVzYWxlQXJ0AgRhZGRyDWxhbmRBc3NldElkSW4EAWMJARRjaGVja0NsYWltQ29uZGl0aW9ucwMFBGFkZHIFE2NsYWltTW9kZVdoVGhlbkR1Y2sFDWxhbmRBc3NldElkSW4EC2xhbmRBc3NldElkCAUBYwJfMgQGcGllY2VzCQEPbnVtUGllY2VzQnlTaXplAQkAkQMCCAUBYwJfMwULcmVjTGFuZFNpemUEDWFjdGl2YXRpb25LZXkJASBrZXlMYW5kQXJ0U3RhdHVzQnlUeXBlQW5kQXNzZXRJZAIFCkFSVFBSRVNBTEUFC2xhbmRBc3NldElkAwkAZgIJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUNYWN0aXZhdGlvbktleQAAAAAJAAIBAiVQcmVzYWxlIGFydGlmYWN0IGlzIGFscmVhZHkgYWN0aXZhdGVkAwkAZgIJAQ1wYXJzZUludFZhbHVlAQkAkQMCCAUBYwJfMwUKcmVjTGFuZE51bQUPUFJFU0FMRU5VTUxBTkRTCQACAQkArAICCQCsAgIJAKwCAgUKTEFORFBSRUZJWAIBIAULbGFuZEFzc2V0SWQCJSBpcyBub3QgZWxpZ2libGUgZm9yIHByZXNhbGUgYXJ0aWZhY3QEC2NsYWltUmVzdWx0CQEIY2xhaW1BbGwEBQRhZGRyBQtsYW5kQXNzZXRJZAUGcGllY2VzBRNjbGFpbU1vZGVXaFRoZW5EdWNrCQDNCAIJAM0IAgkAzQgCCAULY2xhaW1SZXN1bHQCXzEJAQxJbnRlZ2VyRW50cnkCBQ1hY3RpdmF0aW9uS2V5BQZwaWVjZXMJAQtTdHJpbmdFbnRyeQIIBQtjbGFpbVJlc3VsdAJfMgkAuQkCCAULY2xhaW1SZXN1bHQCXzMCAToJAQtTdHJpbmdFbnRyeQIIBQtjbGFpbVJlc3VsdAJfNAkAuQkCCAULY2xhaW1SZXN1bHQCXzUCAToBD2NoZWNrVG91cm5hbWVudAELZHVja0Fzc2V0SWQEBmxhc3RJZAkBC3ZhbHVlT3JFbHNlAgkAmggCBRJ0b3VybmFtZW50Q29udHJhY3QFDWxhc3RUb3VySWRLZXkAAAQLY3VyTG9jYXRpb24JALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBCQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQFD0RFRkFVTFRMT0NBVElPTgIBXwQDbm93CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQFdERhdGEJAQtnZXRUb3VyRGF0YQIFEnRvdXJuYW1lbnRDb250cmFjdAUGbGFzdElkBAZzdGF0aWMJAJEDAgUFdERhdGEFCWlkeFN0YXRpYwQHZHluYW1pYwkAkQMCBQV0RGF0YQUKaWR4RHluYW1pYwMJAQIhPQIJAJEDAgULY3VyTG9jYXRpb24FCmxvY0lkeFR5cGUCAVQHAwMDCQAAAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFC2N1ckxvY2F0aW9uBQ9sb2NJZHhDb250aW5lbnQFBmxhc3RJZAkAAAIJAJEDAgUHZHluYW1pYwUOdER5bmFtaWNTdGF0dXMCCklOUFJPR1JFU1MHCQBmAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBnN0YXRpYwUKdFN0YXRpY0VuZAUDbm93BwkAAgECKllvdXIgZHVjayBpcyB0YWtpbmcgcGFydCBpbiB0aGUgdG91cm5hbWVudAkBCWFzQm9vbGVhbgEJAPwHBAUEdGhpcwIWZXhpdFRvdXJuYW1lbnRJbnRlcm5hbAkAzAgCBQtkdWNrQXNzZXRJZAUDbmlsBQNuaWwBDWNoZWNrRGVsaXZlcnkBC2R1Y2tBc3NldElkBAtjdXJMb2NhdGlvbgkAtQkCCQELdmFsdWVPckVsc2UCCQCiCAEJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAUPREVGQVVMVExPQ0FUSU9OAgFfBANub3cIBQlsYXN0QmxvY2sJdGltZXN0YW1wAwkBAiE9AgkAkQMCBQtjdXJMb2NhdGlvbgUKbG9jSWR4VHlwZQIBRAcECXN0YXJ0VGltZQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFC2N1ckxvY2F0aW9uBQ9sb2NJZHhDb250aW5lbnQECGRpc3RhbmNlCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgULY3VyTG9jYXRpb24FCGxvY0lkeElkAwMJAGYCBQNub3cJAGQCBQlzdGFydFRpbWUFElRFTl9NSU5VVEVTX01JTExJUwkAZgIAAwUIZGlzdGFuY2UHCQACAQIgWW91ciBkdWNrIGlzIG9uIGRlbGl2ZXJ5IG1pc3Npb24JAQlhc0Jvb2xlYW4BCQD8BwQFBHRoaXMCFGV4aXREZWxpdmVyeUludGVybmFsCQDMCAIFC2R1Y2tBc3NldElkBQNuaWwFA25pbAESZXhpdERlbGl2ZXJ5Q29tbW9uAQtkdWNrQXNzZXRJZAQLY3VyTG9jYXRpb24JALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBCQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQFD0RFRkFVTFRMT0NBVElPTgIBXwQDbm93CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQJc3RhcnRUaW1lCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgULY3VyTG9jYXRpb24FD2xvY0lkeENvbnRpbmVudAQIZGlzdGFuY2UJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQtjdXJMb2NhdGlvbgUIbG9jSWR4SWQEBW93bmVyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBEGtleUR1Y2tJZFRvT3duZXIBBQtkdWNrQXNzZXRJZAIUTkZUIGR1Y2sgaXMgb3JwaGFuZWQECWhlYWx0aEtleQkBDWtleUR1Y2tIZWFsdGgBBQtkdWNrQXNzZXRJZAQJY3VySGVhbHRoCQERQGV4dHJOYXRpdmUoMTA1NSkBBQloZWFsdGhLZXkEDm91dGNvbWVBY3Rpb25zAwkAZwIFCGRpc3RhbmNlAAMEBnJld2FyZAkA/AcEBQ9lY29ub215Q29udHJhY3QCEnNlbmREZWxpdmVyeVJld2FyZAkAzAgCBQVvd25lcgUDbmlsBQNuaWwDCQAAAgUGcmV3YXJkBQZyZXdhcmQFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgMJAGYCBQNub3cJAGQCBQlzdGFydFRpbWUFElRFTl9NSU5VVEVTX01JTExJUwkAAgECJllvdXIgZHVjayBpcyBzdGlsbCBvbiBkZWxpdmVyeSBtaXNzaW9uBAtsb2NrZWRUb3RhbAkBC3ZhbHVlT3JFbHNlAgkAmggCBQ9lY29ub215Q29udHJhY3QFEWRlbGl2ZXJ5TG9ja2VkS2V5AAAEBnVubG9jawkA/AcEBQ9lY29ub215Q29udHJhY3QCFHVwZGF0ZURlbGl2ZXJ5TG9ja2VkCQDMCAIJAGUCBQtsb2NrZWRUb3RhbAUVTUlOX1VTRFRfRkVFX0RFTElWRVJZBQNuaWwFA25pbAMJAAACBQZ1bmxvY2sFBnVubG9jawMJAGcCAAAFCWN1ckhlYWx0aAUDbmlsCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEWa2V5RGVsaXZlcnlEZWxheUJ5RHVjawEFC2R1Y2tBc3NldElkCQBkAgUJc3RhcnRUaW1lBQlEQVlNSUxMSVMFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgQLc2F2ZWRIZWFsdGgJARFAZXh0ck5hdGl2ZSgxMDU1KQEJAQ5rZXlTYXZlZEhlYWx0aAEFC2R1Y2tBc3NldElkBA1zYXZlZExvY2F0aW9uCQERQGV4dHJOYXRpdmUoMTA1OCkBCQEQa2V5U2F2ZWRMb2NhdGlvbgEFC2R1Y2tBc3NldElkCQCWCgQFDm91dGNvbWVBY3Rpb25zCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQloZWFsdGhLZXkFC3NhdmVkSGVhbHRoCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAUNc2F2ZWRMb2NhdGlvbgUDbmlsBQ1zYXZlZExvY2F0aW9uBQtzYXZlZEhlYWx0aAENbWVyZ2VJbnRlcm5hbAYLbmV3TGFuZFNpemUIbmV3TGV2ZWwHZm9ybXVsYQRhZGRyDGxhbmRBc3NldElkcwduZWVkTWF0BAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFBGFkZHICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQDCQEPY2hlY2tUb3VybmFtZW50AQULZHVja0Fzc2V0SWQJAAIBAh1tZXJnZUludGVybmFsX2NoZWNrVG91cm5hbWVudAMJAQ1jaGVja0RlbGl2ZXJ5AQULZHVja0Fzc2V0SWQJAAIBAhttZXJnZUludGVybmFsX2NoZWNrRGVsaXZlcnkKAQpjaGVja01lcmdlAgNhY2MLbGFuZEFzc2V0SWQEBWFzc2V0CQEFdmFsdWUBCQDsBwEJANkEAQULbGFuZEFzc2V0SWQEB3RpbWVLZXkJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQULbGFuZEFzc2V0SWQECXNhdmVkVGltZQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCfCAEFB3RpbWVLZXkJAKwCAgkArAICAgRORlQgCAUFYXNzZXQEbmFtZQIOIGlzIG5vdCBzdGFrZWQEBW93bmVyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFWtleUxhbmRBc3NldElkVG9Pd25lcgEFC2xhbmRBc3NldElkCQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCDCBpcyBvcnBoYW5lZAMJAQIhPQIFBW93bmVyBQRhZGRyCQACAQkArAICBQpMQU5EUFJFRklYAg0gaXMgbm90IHlvdXJzBAFkCQC1CQIIBQVhc3NldAtkZXNjcmlwdGlvbgIBXwQJY29udGluZW50CQCRAwIFAWQFDHJlY0NvbnRpbmVudAMDCQECIT0CCAUDYWNjAl8zAgAJAQIhPQIIBQNhY2MCXzMFCWNvbnRpbmVudAcJAAIBAi5MYW5kcyBzaG91bGQgYmUgb24gdGhlIHNhbWUgY29udGluZW50IHRvIG1lcmdlBAhsYW5kU2l6ZQkAkQMCBQFkBQtyZWNMYW5kU2l6ZQQHc2l6ZXNJbggFA2FjYwJfMQQBaQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCzCQIFB3NpemVzSW4FCGxhbmRTaXplAidZb3UgaGF2ZW4ndCBwYXNzZWQgYWxsIHRoZSBsYW5kcyBuZWVkZWQECHNpemVzT3V0CQCsAgIJAK8CAgUHc2l6ZXNJbgUBaQkAsAICBQdzaXplc0luCQBkAgUBaQABBAZwaWVjZXMJAQ9udW1QaWVjZXNCeVNpemUBBQhsYW5kU2l6ZQQEYXJ0cwkAZAIIBQNhY2MCXzIJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBIGtleUxhbmRBcnRTdGF0dXNCeVR5cGVBbmRBc3NldElkAgUKQVJUUFJFU0FMRQULbGFuZEFzc2V0SWQAAAQKaW5mcmFMZXZlbAkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEWa2V5SW5mcmFMZXZlbEJ5QXNzZXRJZAEFC2xhbmRBc3NldElkAAAECHJlcUxldmVsBAckbWF0Y2gwBQhsYW5kU2l6ZQMJAAACAgFTBQckbWF0Y2gwAAMDCQAAAgIBTQUHJG1hdGNoMAAEAwkAAAICAUwFByRtYXRjaDAABQMJAAACAgJYTAUHJG1hdGNoMAAGCQACAQIaT25seSBTLCBNLCBMLCBYTCBjYW4gbWVyZ2UDCQECIT0CBQppbmZyYUxldmVsBQhyZXFMZXZlbAkAAgECIkFsbCBsYW5kcyBzaG91bGQgYmUgbWF4ZWQgdG8gbWVyZ2UEB2xhbmROdW0JAJEDAgUBZAUKcmVjTGFuZE51bQQNdGVycmFpbkNvdW50cwkBDWNvdW50VGVycmFpbnMBCQCRAwIFAWQFC3JlY1RlcnJhaW5zBAlkZWx0YVRpbWUJAGUCCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUJc2F2ZWRUaW1lAwkAZgIAAAUJZGVsdGFUaW1lCQACAQkArAICCQCsAgIJAKwCAgImU2F2ZWQgdGltZXN0YW1wIGlzIGluIGZ1dHVyZSwgc2F2ZWQgPSAJAKQDAQUJc2F2ZWRUaW1lAgwsIGN1cnJlbnQgPSAJAKQDAQgFCWxhc3RCbG9jawl0aW1lc3RhbXAEFmRhaWx5UHJvZHVjdGlvbkJ5UGllY2UJAQxhcHBseUJvbnVzZXMCBQtsYW5kQXNzZXRJZAUGcGllY2VzBAlsYW5kSW5kZXgJAGkCBQZwaWVjZXMFBVNTSVpFBAVicFJlcwkBBmFkZFJlcwUJALUJAggFA2FjYwJfNAIBXwUNdGVycmFpbkNvdW50cwUJZGVsdGFUaW1lBQlsYW5kSW5kZXgFFmRhaWx5UHJvZHVjdGlvbkJ5UGllY2UEBXByb3BzCQEZdXBkYXRlUHJvcG9ydGlvbnNJbnRlcm5hbAQIBQNhY2MCXzYFDXRlcnJhaW5Db3VudHMFCWxhbmRJbmRleAD///////////8BBAZjUHJvcHMJARl1cGRhdGVQcm9wb3J0aW9uc0ludGVybmFsBAgFA2FjYwNfMTAFDXRlcnJhaW5Db3VudHMFCWxhbmRJbmRleAD///////////8BBAtzdW1UZXJyYWlucwkBGXVwZGF0ZVByb3BvcnRpb25zSW50ZXJuYWwECAUDYWNjAl85BQ10ZXJyYWluQ291bnRzBQlsYW5kSW5kZXgAAQQFbGFuZHMIBQNhY2MCXzcEA2lkeAkAzwgCBQVsYW5kcwULbGFuZEFzc2V0SWQDCQEBIQEJAQlpc0RlZmluZWQBBQNpZHgJAAIBCQCsAgICIFlvdXIgc3Rha2VkIGxhbmRzIGRvbid0IGNvbnRhaW4gBQtsYW5kQXNzZXRJZAQJY3VzdG9tS2V5CQEaa2V5TGFuZEFzc2V0SWRUb0N1c3RvbU5hbWUBBQtsYW5kQXNzZXRJZAQKY3VzdG9tTmFtZQkBC3ZhbHVlT3JFbHNlAgkAoggBBQljdXN0b21LZXkCAAkAnAoKBQhzaXplc091dAUEYXJ0cwUJY29udGluZW50BQVicFJlcwkAzggCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAggFA2FjYwJfNQkBC0RlbGV0ZUVudHJ5AQkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAkBC0RlbGV0ZUVudHJ5AQkBImtleVN0YWtlZFRpbWVCeVR5cGVBc3NldElkQW5kT3duZXIDBQpMQU5EUFJFRklYBQtsYW5kQXNzZXRJZAUEYWRkcgkBC0RlbGV0ZUVudHJ5AQkBEGtleUxhbmRUb0Fzc2V0SWQBBQdsYW5kTnVtCQELRGVsZXRlRW50cnkBCQEVa2V5TGFuZEFzc2V0SWRUb093bmVyAQULbGFuZEFzc2V0SWQJAQtEZWxldGVFbnRyeQEJARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQULbGFuZEFzc2V0SWQJAQtEZWxldGVFbnRyeQEJAR5rZXlJbmZyYUxldmVsQnlBc3NldElkQW5kT3duZXICBQtsYW5kQXNzZXRJZAUEYWRkcgkBC0RlbGV0ZUVudHJ5AQkBIGtleUxhbmRBcnRTdGF0dXNCeVR5cGVBbmRBc3NldElkAgUKQVJUUFJFU0FMRQULbGFuZEFzc2V0SWQJAQtEZWxldGVFbnRyeQEJARFrZXlMYW5kTnVtVG9Pd25lcgEFB2xhbmROdW0JAQtEZWxldGVFbnRyeQEJARJrZXlXYXJlaG91c2VCeUxhbmQBBQtsYW5kQXNzZXRJZAkBC0RlbGV0ZUVudHJ5AQUJY3VzdG9tS2V5CQEEQnVybgIJANkEAQULbGFuZEFzc2V0SWQAAQMJAQIhPQIFCmN1c3RvbU5hbWUCAAkAzAgCCQELRGVsZXRlRW50cnkBCQEaa2V5TGFuZEN1c3RvbU5hbWVUb0Fzc2V0SWQBBQpjdXN0b21OYW1lBQNuaWwFA25pbAUFcHJvcHMJANEIAgUFbGFuZHMJAQV2YWx1ZQEFA2lkeAkAZAIIBQNhY2MCXzgFBnBpZWNlcwULc3VtVGVycmFpbnMFBmNQcm9wcwQFYnBLZXkJARFrZXlCYWNrcGFja0J5RHVjawEFC2R1Y2tBc3NldElkBAtjdXJyZW50UGFjawkBC2dldEJhY2twYWNrAQUFYnBLZXkECHByb3BMaXN0CQC1CQIJAQt2YWx1ZU9yRWxzZQIJAKIIAQkBEWtleVJlc1Byb3BvcnRpb25zAAILMF8wXzBfMF8wXzACAV8ECGxhbmRzS2V5CQEVa2V5U3Rha2VkTGFuZHNCeU93bmVyAQUEYWRkcgQIbGFuZHNTdHIJAKIIAQUIbGFuZHNLZXkEB2xhbmRzSW4DCQEJaXNEZWZpbmVkAQUIbGFuZHNTdHIJAL0JAgkBBXZhbHVlAQUIbGFuZHNTdHICAV8FA25pbAQFY29udDAJAJEDAgkAtQkCCAkBBXZhbHVlAQkA7AcBCQDZBAEJAJEDAgUMbGFuZEFzc2V0SWRzAAALZGVzY3JpcHRpb24CAV8FDHJlY0NvbnRpbmVudAQJY29udFByb3BzCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAKIIAQkBFmtleVJlc1R5cGVzQnlDb250aW5lbnQBBQVjb250MAILMF8wXzBfMF8wXzACAV8EAXIKAAIkbAUMbGFuZEFzc2V0SWRzCgACJHMJAJADAQUCJGwKAAUkYWNjMAkAnAoKBQdmb3JtdWxhAAACAAkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhSZXMFA25pbAUIcHJvcExpc3QFB2xhbmRzSW4AAAkAtQkCAgswXzBfMF8wXzBfMAIBXwUJY29udFByb3BzCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQpjaGVja01lcmdlAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA1CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQQJY29udGluZW50CAUBcgJfMwQMY29udGluZW50SWR4CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAM8IAgUKY29udGluZW50cwUJY29udGluZW50CQCsAgICE1Vua25vd24gY29udGluZW50OiAFCWNvbnRpbmVudAQIdGVycmFpbnMJARNnZW5UZXJyYWluc0Zvck1lcmdlAggFAXICXzkJAGkCCQEPbnVtUGllY2VzQnlTaXplAQULbmV3TGFuZFNpemUFBVNTSVpFBAdmcmVlTnVtCQELdmFsdWVPckVsc2UCCQCfCAEJARJrZXlOZXh0RnJlZUxhbmROdW0ACQBkAgUPUFJFU0FMRU5VTUxBTkRTAAEECm5ld0xhbmROdW0JAKQDAQUHZnJlZU51bQQFaXNzdWUJAMIIBQkBB25mdE5hbWUCBQpuZXdMYW5kTnVtBQtuZXdMYW5kU2l6ZQkAuQkCCQDMCAIFCm5ld0xhbmROdW0JAMwIAgULbmV3TGFuZFNpemUJAMwIAgUIdGVycmFpbnMJAMwIAgUJY29udGluZW50BQNuaWwCAV8AAQAABwQHYXNzZXRJZAkAuAgBBQVpc3N1ZQQObmV3TGFuZEFzc2V0SWQJANgEAQUHYXNzZXRJZAQGbmV3TWF0CQC5CQIJARFzdWJ0cmFjdE1hdGVyaWFscwMJAGYCBQduZWVkTWF0AAAJALUJAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhNYXQCAV8FB25lZWRNYXQCAV8ECXBpZWNlc0tleQkBFmtleVN0YWtlZFBpZWNlc0J5T3duZXIBBQRhZGRyBAxzdGFrZWRQaWVjZXMJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJcGllY2VzS2V5AAAJAJQKAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAggFAXICXzUDCQBmAgkAkAMBCAUBcgJfNwAACQELU3RyaW5nRW50cnkCBQhsYW5kc0tleQkAuwkCCAUBcgJfNwIBXwkBC0RlbGV0ZUVudHJ5AQUIbGFuZHNLZXkJAQxJbnRlZ2VyRW50cnkCBQlwaWVjZXNLZXkDCQBmAggFAXICXzgFDHN0YWtlZFBpZWNlcwAACQBlAgUMc3Rha2VkUGllY2VzCAUBcgJfOAkBDEludGVnZXJFbnRyeQIJARJrZXlOZXh0RnJlZUxhbmROdW0ACQBkAgUHZnJlZU51bQABBQVpc3N1ZQkBC1N0cmluZ0VudHJ5AgkBEGtleUxhbmRUb0Fzc2V0SWQBBQpuZXdMYW5kTnVtBQ5uZXdMYW5kQXNzZXRJZAkBC1N0cmluZ0VudHJ5AgkBFWtleUxhbmRBc3NldElkVG9Pd25lcgEFDm5ld0xhbmRBc3NldElkBQRhZGRyCQELU3RyaW5nRW50cnkCCQERa2V5TGFuZE51bVRvT3duZXIBBQpuZXdMYW5kTnVtBQRhZGRyCQEMSW50ZWdlckVudHJ5AgkBIGtleUxhbmRBcnRTdGF0dXNCeVR5cGVBbmRBc3NldElkAgUKQVJUUFJFU0FMRQUObmV3TGFuZEFzc2V0SWQIBQFyAl8yCQEMSW50ZWdlckVudHJ5AgkBFmtleUluZnJhTGV2ZWxCeUFzc2V0SWQBBQ5uZXdMYW5kQXNzZXRJZAUIbmV3TGV2ZWwJAQxJbnRlZ2VyRW50cnkCCQEea2V5SW5mcmFMZXZlbEJ5QXNzZXRJZEFuZE93bmVyAgUObmV3TGFuZEFzc2V0SWQFBGFkZHIFCG5ld0xldmVsCQELU3RyaW5nRW50cnkCBQVicEtleQkAuQkCCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCmJwSWR4TGV2ZWwJAMwIAggFAXICXzQJAMwIAgUGbmV3TWF0CQDMCAIJAJEDAgULY3VycmVudFBhY2sFCWJwSWR4UHJvZAUDbmlsAgE6CQELU3RyaW5nRW50cnkCCQERa2V5UmVzUHJvcG9ydGlvbnMACQC5CQIIBQFyAl82AgFfCQELU3RyaW5nRW50cnkCCQEWa2V5UmVzVHlwZXNCeUNvbnRpbmVudAEFCWNvbnRpbmVudAkAuQkCCAUBcgNfMTACAV8JAQtTdHJpbmdFbnRyeQIJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAkAuQkCCQDMCAIFCWNvbnRpbmVudAkAzAgCAgFMCQDMCAIFDm5ld0xhbmRBc3NldElkBQNuaWwCAV8JAQ5TY3JpcHRUcmFuc2ZlcgMJARFAZXh0ck5hdGl2ZSgxMDYyKQEFBGFkZHIAAQUHYXNzZXRJZAUObmV3TGFuZEFzc2V0SWQBA3MybQIEYWRkcgxsYW5kQXNzZXRJZHMJAQ1tZXJnZUludGVybmFsBgIBTQADAgRTU1NTBQRhZGRyBQxsYW5kQXNzZXRJZHMAAAEDbTJsAgRhZGRyDGxhbmRBc3NldElkcwkBDW1lcmdlSW50ZXJuYWwGAgFMAAQCA1NNTQUEYWRkcgUMbGFuZEFzc2V0SWRzCQBoAgURSW5mcmFVcGdyYWRlQ29zdFMABAEEbDJ4bAIEYWRkcgxsYW5kQXNzZXRJZHMJAQ1tZXJnZUludGVybmFsBgICWEwABQIFU1NTTUwFBGFkZHIFDGxhbmRBc3NldElkcwkAaAIFEUluZnJhVXBncmFkZUNvc3RTAC8BBnhsMnh4bAIEYWRkcgxsYW5kQXNzZXRJZHMJAQ1tZXJnZUludGVybmFsBgIDWFhMAAYCA0xYTAUEYWRkcgUMbGFuZEFzc2V0SWRzCQBoAgURSW5mcmFVcGdyYWRlQ29zdFMANgELbWVyZ2VDb21tb24CBGFkZHIMbGFuZEFzc2V0SWRzBAckbWF0Y2gwCQCQAwEFDGxhbmRBc3NldElkcwMJAAACAAQFByRtYXRjaDAJAQNzMm0CBQRhZGRyBQxsYW5kQXNzZXRJZHMDCQAAAgADBQckbWF0Y2gwCQEDbTJsAgUEYWRkcgUMbGFuZEFzc2V0SWRzAwkAAAIABQUHJG1hdGNoMAkBBGwyeGwCBQRhZGRyBQxsYW5kQXNzZXRJZHMDCQAAAgACBQckbWF0Y2gwCQEGeGwyeHhsAgUEYWRkcgUMbGFuZEFzc2V0SWRzCQACAQINVW5rbm93biBtZXJnZQEGcHJvbG9nAQFpAwMJAQIhPQIIBQFpDG9yaWdpbkNhbGxlcgUMcmVzdENvbnRyYWN0CQELdmFsdWVPckVsc2UCCQCgCAEJAQprZXlCbG9ja2VkAAcHCQACAQIfQ29udHJhY3RzIGFyZSB1bmRlciBtYWludGVuYW5jZQkBC1N0cmluZ0VudHJ5AgkBEWtleUxhc3RUeElkQnlVc2VyAQkApQgBCAUBaQxvcmlnaW5DYWxsZXIJANgEAQgFAWkNdHJhbnNhY3Rpb25JZC0BaQENY29uc3RydWN0b3JWMQEIcmVzdEFkZHIDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAhFQZXJtaXNzaW9uIGRlbmllZAkAzAgCCQELU3RyaW5nRW50cnkCCQEOa2V5UmVzdEFkZHJlc3MABQhyZXN0QWRkcgUDbmlsAWkBCnNldEJsb2NrZWQBCWlzQmxvY2tlZAMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECEXBlcm1pc3Npb24gZGVuaWVkCQDMCAIJAQxCb29sZWFuRW50cnkCCQEKa2V5QmxvY2tlZAAFCWlzQmxvY2tlZAUDbmlsAWkBCXN0YWtlTGFuZAAEDHByb2xvZ0FjdGlvbgkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAhxFeGFjdGx5IG9uZSBwYXltZW50IHJlcXVpcmVkBANwbXQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAQHYXNzZXRJZAkBBXZhbHVlAQgFA3BtdAdhc3NldElkBAdhZGRyZXNzCQClCAEIBQFpBmNhbGxlcgMJAQIhPQIIBQNwbXQGYW1vdW50AAEJAAIBCQCsAgIJAKwCAgIETkZUIAUKTEFORFBSRUZJWAIkIHRva2VuIHNob3VsZCBiZSBhdHRhY2hlZCBhcyBwYXltZW50BAVhc3NldAkBBXZhbHVlAQkA7AcBBQdhc3NldElkAwkBAiE9AggFBWFzc2V0Bmlzc3VlcgUEdGhpcwkAAgECF1Vua25vd24gaXNzdWVyIG9mIHRva2VuAwkBASEBCQEIY29udGFpbnMCCAUFYXNzZXQEbmFtZQUKTEFORFBSRUZJWAkAAgEJAKwCAgkArAICAglPbmx5IE5GVCAFCkxBTkRQUkVGSVgCFCB0b2tlbnMgYXJlIGFjY2VwdGVkBAtsYW5kTnVtU2l6ZQkAsAICCAUFYXNzZXQEbmFtZQAEBAdsYW5kTnVtAwkBCGNvbnRhaW5zAgULbGFuZE51bVNpemUCA1hYTAkAswICBQtsYW5kTnVtU2l6ZQADAwkBCGNvbnRhaW5zAgULbGFuZE51bVNpemUCAlhMCQCzAgIFC2xhbmROdW1TaXplAAIJALMCAgULbGFuZE51bVNpemUAAQMJAQEhAQkBCWlzRGVmaW5lZAEJALYJAQUHbGFuZE51bQkAAgEJAKwCAgIeQ2Fubm90IHBhcnNlIGxhbmQgbnVtYmVyIGZyb20gCAUFYXNzZXQEbmFtZQQLbGFuZEFzc2V0SWQJANgEAQUHYXNzZXRJZAQHdGltZUtleQkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAMJAQlpc0RlZmluZWQBCQCfCAEFB3RpbWVLZXkJAAIBCQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCEiBpcyBhbHJlYWR5IHN0YWtlZAQBZAkAtQkCCAUFYXNzZXQLZGVzY3JpcHRpb24CAV8EDXRlcnJhaW5Db3VudHMJAQ1jb3VudFRlcnJhaW5zAQkAkQMCBQFkBQtyZWNUZXJyYWlucwQGcGllY2VzCQEPbnVtUGllY2VzQnlTaXplAQkAkQMCBQFkBQtyZWNMYW5kU2l6ZQQJbGFuZEluZGV4CQBpAgUGcGllY2VzBQVTU0laRQQFcHJvcHMJARF1cGRhdGVQcm9wb3J0aW9ucwMFDXRlcnJhaW5Db3VudHMFCWxhbmRJbmRleAABBAxyZXNCeUNvbnRLZXkJARZrZXlSZXNUeXBlc0J5Q29udGluZW50AQkAkQMCBQFkBQxyZWNDb250aW5lbnQECWNvbnRQcm9wcwkAtQkCCQELdmFsdWVPckVsc2UCCQCiCAEFDHJlc0J5Q29udEtleQILMF8wXzBfMF8wXzACAV8EEHVwZGF0ZWRDb250UHJvcHMJALkJAgkBGXVwZGF0ZVByb3BvcnRpb25zSW50ZXJuYWwEBQljb250UHJvcHMFDXRlcnJhaW5Db3VudHMFCWxhbmRJbmRleAABAgFfBAhsYW5kc0tleQkBFWtleVN0YWtlZExhbmRzQnlPd25lcgEFB2FkZHJlc3MECGxhbmRzU3RyCQCiCAEFCGxhbmRzS2V5BAVsYW5kcwMJAQlpc0RlZmluZWQBBQhsYW5kc1N0cgkAvQkCCQEFdmFsdWUBBQhsYW5kc1N0cgIBXwUDbmlsAwkBD2NvbnRhaW5zRWxlbWVudAIFBWxhbmRzBQtsYW5kQXNzZXRJZAkAAgEJAKwCAgIiWW91ciBzdGFrZWQgbGFuZHMgYWxyZWFkeSBjb250YWluIAULbGFuZEFzc2V0SWQDCQBnAgkAkAMBBQVsYW5kcwUYTUFYX0xBTkRTX1NUQUtFRF9CWV9VU0VSCQACAQkArAICCQCsAgICGVlvdXIgYWxyZWFkeSBzdGFrZWQgbWF4ICgJAKQDAQUYTUFYX0xBTkRTX1NUQUtFRF9CWV9VU0VSAgcpIGxhbmRzBAppbmZyYUxldmVsCQELdmFsdWVPckVsc2UCCQCfCAEJARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQULbGFuZEFzc2V0SWQAAAQJcGllY2VzS2V5CQEWa2V5U3Rha2VkUGllY2VzQnlPd25lcgEFB2FkZHJlc3MECW9sZFBpZWNlcwkBC3ZhbHVlT3JFbHNlAgkAnwgBBQlwaWVjZXNLZXkAAAQJd2xnUmVzdWx0CQD8BwQFC3dsZ0NvbnRyYWN0AhJvblN0YWtlVW5zdGFrZUxhbmQJAMwIAgUHYWRkcmVzcwUDbmlsBQNuaWwJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUHdGltZUtleQgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJASJrZXlTdGFrZWRUaW1lQnlUeXBlQXNzZXRJZEFuZE93bmVyAwUKTEFORFBSRUZJWAULbGFuZEFzc2V0SWQFB2FkZHJlc3MIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQtTdHJpbmdFbnRyeQIFCGxhbmRzS2V5CQC7CQIJAM0IAgUFbGFuZHMFC2xhbmRBc3NldElkAgFfCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQlwaWVjZXNLZXkJAGQCBQlvbGRQaWVjZXMFBnBpZWNlcwkAzAgCCQELU3RyaW5nRW50cnkCCQEVa2V5TGFuZEFzc2V0SWRUb093bmVyAQULbGFuZEFzc2V0SWQFB2FkZHJlc3MJAMwIAgkBC1N0cmluZ0VudHJ5AgkBEWtleUxhbmROdW1Ub093bmVyAQUHbGFuZE51bQUHYWRkcmVzcwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBHmtleUluZnJhTGV2ZWxCeUFzc2V0SWRBbmRPd25lcgIFC2xhbmRBc3NldElkBQdhZGRyZXNzBQppbmZyYUxldmVsCQDMCAIJAQtTdHJpbmdFbnRyeQIJARFrZXlSZXNQcm9wb3J0aW9ucwAFBXByb3BzCQDMCAIJAQtTdHJpbmdFbnRyeQIFDHJlc0J5Q29udEtleQUQdXBkYXRlZENvbnRQcm9wcwkAzAgCBQxwcm9sb2dBY3Rpb24FA25pbAUJd2xnUmVzdWx0AWkBC3Vuc3Rha2VMYW5kAQ1sYW5kQXNzZXRJZEluBAxwcm9sb2dBY3Rpb24JAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQEBGFkZHIJAKUIAQgFAWkGY2FsbGVyBAFjCQEUY2hlY2tDbGFpbUNvbmRpdGlvbnMDBQRhZGRyBQ1jbGFpbU1vZGVEdWNrBQ1sYW5kQXNzZXRJZEluBAtsYW5kQXNzZXRJZAgFAWMCXzIEAWQIBQFjAl8zBAhsYW5kc0tleQkBFWtleVN0YWtlZExhbmRzQnlPd25lcgEFBGFkZHIEDXRlcnJhaW5Db3VudHMJAQ1jb3VudFRlcnJhaW5zAQkAkQMCBQFkBQtyZWNUZXJyYWlucwQGcGllY2VzCQEPbnVtUGllY2VzQnlTaXplAQkAkQMCBQFkBQtyZWNMYW5kU2l6ZQQJbGFuZEluZGV4CQBpAgUGcGllY2VzBQVTU0laRQQFcHJvcHMJARF1cGRhdGVQcm9wb3J0aW9ucwMFDXRlcnJhaW5Db3VudHMFCWxhbmRJbmRleAD///////////8BBAxyZXNCeUNvbnRLZXkJARZrZXlSZXNUeXBlc0J5Q29udGluZW50AQkAkQMCBQFkBQxyZWNDb250aW5lbnQECWNvbnRQcm9wcwkAtQkCCQELdmFsdWVPckVsc2UCCQCiCAEFDHJlc0J5Q29udEtleQILMF8wXzBfMF8wXzACAV8EEHVwZGF0ZWRDb250UHJvcHMJALkJAgkBGXVwZGF0ZVByb3BvcnRpb25zSW50ZXJuYWwEBQljb250UHJvcHMFDXRlcnJhaW5Db3VudHMFCWxhbmRJbmRleAD///////////8BAgFfBAtjbGFpbVJlc3VsdAkBCGNsYWltQWxsBAUEYWRkcgULbGFuZEFzc2V0SWQFBnBpZWNlcwUNY2xhaW1Nb2RlRHVjawQFbGFuZHMJAL0JAgkBC3ZhbHVlT3JFbHNlAgkAoggBBQhsYW5kc0tleQIAAgFfBANpZHgJAM8IAgUFbGFuZHMFC2xhbmRBc3NldElkAwkBASEBCQEJaXNEZWZpbmVkAQUDaWR4CQACAQkArAICAiBZb3VyIHN0YWtlZCBsYW5kcyBkb24ndCBjb250YWluIAULbGFuZEFzc2V0SWQEA25vdwgFCWxhc3RCbG9jawl0aW1lc3RhbXAEDmdvdlJlbGVhc2VUaW1lCQELdmFsdWVPckVsc2UCCQCaCAIFC2dvdkNvbnRyYWN0CQEVa2V5VXNlckd3bFJlbGVhc2VUaW1lAQUEYWRkcgAAAwkAZwIFDmdvdlJlbGVhc2VUaW1lBQNub3cJAAIBCQCsAgICOVlvdXIgZ1dMIGFyZSB0YWtpbmcgcGFydCBpbiB2b3RpbmcsIGNhbm5vdCB1bnN0YWtlIHVudGlsIAkApAMBBQ5nb3ZSZWxlYXNlVGltZQQOYXJiUmVsZWFzZVRpbWUJAGQCCQELdmFsdWVPckVsc2UCCQCaCAIFC3dsZ0NvbnRyYWN0CQEUa2V5TGFzdEFyYlRpbWVCeVVzZXIBBQRhZGRyAAAFDmFyYml0cmFnZURlbGF5AwkAZgIFDmFyYlJlbGVhc2VUaW1lBQNub3cJAAIBCQCsAgICP1lvdXIgc3Rha2VkIGxhbmRzIHRvb2sgcGFydCBpbiBhcmJpdHJhZ2UsIGNhbm5vdCB1bnN0YWtlIHVudGlsIAkApAMBBQ5hcmJSZWxlYXNlVGltZQQJcGllY2VzS2V5CQEWa2V5U3Rha2VkUGllY2VzQnlPd25lcgEFBGFkZHIEDHN0YWtlZFBpZWNlcwkBC3ZhbHVlT3JFbHNlAgkAnwgBBQlwaWVjZXNLZXkAAAQJbmV3UGllY2VzAwkAZgIFBnBpZWNlcwUMc3Rha2VkUGllY2VzAAAJAGUCBQxzdGFrZWRQaWVjZXMFBnBpZWNlcwQJd2xnUmVzdWx0CQD8BwQFC3dsZ0NvbnRyYWN0AhJvblN0YWtlVW5zdGFrZUxhbmQJAMwIAgUEYWRkcgUDbmlsBQNuaWwJAJQKAgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIAAQkA2QQBBQtsYW5kQXNzZXRJZAkAzAgCCQELRGVsZXRlRW50cnkBCQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFC2xhbmRBc3NldElkCQDMCAIJAQtEZWxldGVFbnRyeQEJASJrZXlTdGFrZWRUaW1lQnlUeXBlQXNzZXRJZEFuZE93bmVyAwUKTEFORFBSRUZJWAULbGFuZEFzc2V0SWQFBGFkZHIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBEWtleVJlc1Byb3BvcnRpb25zAAUFcHJvcHMJAMwIAgkBC1N0cmluZ0VudHJ5AgUMcmVzQnlDb250S2V5BRB1cGRhdGVkQ29udFByb3BzCQDMCAIJAQtTdHJpbmdFbnRyeQIIBQtjbGFpbVJlc3VsdAJfMgkAuQkCCAULY2xhaW1SZXN1bHQCXzMCAToJAMwIAgMJAGYCCQCQAwEFBWxhbmRzAAEJAQtTdHJpbmdFbnRyeQIFCGxhbmRzS2V5CQC7CQIJANEIAgUFbGFuZHMJAQV2YWx1ZQEFA2lkeAIBXwkBC0RlbGV0ZUVudHJ5AQUIbGFuZHNLZXkJAMwIAgkBDEludGVnZXJFbnRyeQIFCXBpZWNlc0tleQUJbmV3UGllY2VzCQDMCAIFDHByb2xvZ0FjdGlvbgUDbmlsBQl3bGdSZXN1bHQBaQEJc3Rha2VEdWNrAAQMcHJvbG9nQWN0aW9uCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECHEV4YWN0bHkgb25lIHBheW1lbnQgcmVxdWlyZWQEA3BtdAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAABAdhc3NldElkCQEFdmFsdWUBCAUDcG10B2Fzc2V0SWQEB2FkZHJlc3MJAKUIAQgFAWkGY2FsbGVyAwkBAiE9AggFA3BtdAZhbW91bnQAAQkAAgEJAKwCAgkArAICAgRORlQgBQpEVUNLUFJFRklYAiQgdG9rZW4gc2hvdWxkIGJlIGF0dGFjaGVkIGFzIHBheW1lbnQEBWFzc2V0CQEFdmFsdWUBCQDsBwEFB2Fzc2V0SWQDAwkBAiE9AggFBWFzc2V0Bmlzc3VlcgUNaW5jdWJhdG9yQWRkcgkBAiE9AggFBWFzc2V0Bmlzc3VlcgULYnJlZWRlckFkZHIHCQACAQkArAICCQCsAgICElVua25vd24gaXNzdWVyIG9mIAUKRFVDS1BSRUZJWAIGIHRva2VuAwkBASEBCQEIY29udGFpbnMCCAUFYXNzZXQEbmFtZQUKRFVDS1BSRUZJWAkAAgEJAKwCAgkArAICAglPbmx5IE5GVCAFCkRVQ0tQUkVGSVgCFCB0b2tlbnMgYXJlIGFjY2VwdGVkBAphc3NldElkU3RyCQDYBAEFB2Fzc2V0SWQEB3RpbWVLZXkJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQUKYXNzZXRJZFN0cgMJAQlpc0RlZmluZWQBCQCfCAEFB3RpbWVLZXkJAAIBCQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCEiBpcyBhbHJlYWR5IHN0YWtlZAMJAQlpc0RlZmluZWQBCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFB2FkZHJlc3MJAAIBCQCsAgICHVlvdSBhbHJlYWR5IHN0YWtlZCBvbmUgZHVjazogCAUFYXNzZXQEbmFtZQQGbG9jS2V5CQEPa2V5RHVja0xvY2F0aW9uAQUKYXNzZXRJZFN0cgQIbG9jYXRpb24JAKIIAQUGbG9jS2V5BAVicEtleQkBEWtleUJhY2twYWNrQnlEdWNrAQUKYXNzZXRJZFN0cgQIYmFja3BhY2sJAKIIAQUFYnBLZXkECWtleUhlYWx0aAkBDWtleUR1Y2tIZWFsdGgBBQphc3NldElkU3RyBAVtYXhIUAkBCW1heEhlYWx0aAEJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBDGtleUR1Y2tMZXZlbAEFCmFzc2V0SWRTdHIAAAQJY3VySGVhbHRoCQELdmFsdWVPckVsc2UCCQCfCAEFCWtleUhlYWx0aAUFbWF4SFAJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUHdGltZUtleQgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJASJrZXlTdGFrZWRUaW1lQnlUeXBlQXNzZXRJZEFuZE93bmVyAwUKRFVDS1BSRUZJWAkA2AQBBQdhc3NldElkBQdhZGRyZXNzCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQELU3RyaW5nRW50cnkCCQEQa2V5RHVja0lkVG9Pd25lcgEFCmFzc2V0SWRTdHIFB2FkZHJlc3MJAMwIAgkBC1N0cmluZ0VudHJ5AgkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUHYWRkcmVzcwUKYXNzZXRJZFN0cgUDbmlsAwkBCWlzRGVmaW5lZAEFCGxvY2F0aW9uBQNuaWwJAM4IAgkAzAgCCQELU3RyaW5nRW50cnkCBQZsb2NLZXkFD0RFRkFVTFRMT0NBVElPTgUDbmlsAwkBCWlzRGVmaW5lZAEFCGJhY2twYWNrBQNuaWwJAM0IAgkAzQgCCQDMCAIJAQtTdHJpbmdFbnRyeQIFBWJwS2V5AhowOjBfMF8wXzBfMF8wOjBfMF8wXzBfMF8wOgUDbmlsCQEMSW50ZWdlckVudHJ5AgUJa2V5SGVhbHRoBQljdXJIZWFsdGgFDHByb2xvZ0FjdGlvbgFpAQt1bnN0YWtlRHVjawEKYXNzZXRJZFN0cgQMcHJvbG9nQWN0aW9uCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBAdhc3NldElkCQDZBAEFCmFzc2V0SWRTdHIEB2FkZHJlc3MJAKUIAQgFAWkGY2FsbGVyBAVhc3NldAkBBXZhbHVlAQkA7AcBBQdhc3NldElkBAd0aW1lS2V5CQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFCmFzc2V0SWRTdHIDCQEBIQEJAQlpc0RlZmluZWQBCQCfCAEFB3RpbWVLZXkJAAIBCQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCDiBpcyBub3Qgc3Rha2VkAwkBASEBCQEJaXNEZWZpbmVkAQkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQdhZGRyZXNzCQACAQkArAICCQCsAgICCVRoZSBkdWNrIAgFBWFzc2V0BG5hbWUCDiBpcyBub3Qgc3Rha2VkBAVvd25lcgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARBrZXlEdWNrSWRUb093bmVyAQUKYXNzZXRJZFN0cgkArAICCQCsAgICBE5GVCAIBQVhc3NldARuYW1lAgwgaXMgb3JwaGFuZWQDCQECIT0CBQVvd25lcgUHYWRkcmVzcwkAAgECF1N0YWtlZCBORlQgaXMgbm90IHlvdXJzAwkBD2NoZWNrVG91cm5hbWVudAEFCmFzc2V0SWRTdHIJAAIBAht1bnN0YWtlRHVja19jaGVja1RvdXJuYW1lbnQDCQENY2hlY2tEZWxpdmVyeQEFCmFzc2V0SWRTdHIJAAIBAhl1bnN0YWtlRHVja19jaGVja0RlbGl2ZXJ5BAlrZXlIZWFsdGgJAQ1rZXlEdWNrSGVhbHRoAQUKYXNzZXRJZFN0cgQFbWF4SFAJAQltYXhIZWFsdGgBCQELdmFsdWVPckVsc2UCCQCfCAEJAQxrZXlEdWNrTGV2ZWwBBQphc3NldElkU3RyAAAEBmhlYWx0aAkBC3ZhbHVlT3JFbHNlAgkAnwgBBQlrZXlIZWFsdGgFBW1heEhQAwkAZgIFBW1heEhQBQZoZWFsdGgJAAIBCQCsAgIJAKwCAgIZUGxlYXNlIGhlYWwgeW91ciBkdWNrIHRvIAkApAMBBQVtYXhIUAITaHAgYmVmb3JlIHVuc3Rha2luZwkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIAAQUHYXNzZXRJZAkAzAgCCQELRGVsZXRlRW50cnkBBQd0aW1lS2V5CQDMCAIJAQtEZWxldGVFbnRyeQEFCWtleUhlYWx0aAkAzAgCCQELRGVsZXRlRW50cnkBCQEPa2V5RHVja0xvY2F0aW9uAQUKYXNzZXRJZFN0cgkAzAgCCQELRGVsZXRlRW50cnkBCQEQa2V5RHVja0lkVG9Pd25lcgEFCmFzc2V0SWRTdHIJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBImtleVN0YWtlZFRpbWVCeVR5cGVBc3NldElkQW5kT3duZXIDBQpEVUNLUFJFRklYBQphc3NldElkU3RyBQdhZGRyZXNzCQDMCAIJAQtEZWxldGVFbnRyeQEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFB2FkZHJlc3MJAMwIAgUMcHJvbG9nQWN0aW9uBQNuaWwBaQEIY2xhaW1SZXMCBmFtb3VudA5sYW5kQXNzZXRJZFN0cgQMcHJvbG9nQWN0aW9uCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBARhZGRyCQClCAEIBQFpDG9yaWdpbkNhbGxlcgQGcmVzdWx0CQEQY2xhaW1SZXNJbnRlcm5hbAQFBGFkZHIFBmFtb3VudAUNY2xhaW1Nb2RlRHVjawUObGFuZEFzc2V0SWRTdHIEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUEYWRkcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAkAlAoCCQDNCAIJAM0IAgkAzQgCCQDOCAIIBQZyZXN1bHQCXzEICQEXdXBkYXRlRHVja1N0YXRzSW50ZXJuYWwCBQtkdWNrQXNzZXRJZAkAawMFB3hwQ2xhaW0FBmFtb3VudAUFTVVMVDgCXzEJAQtTdHJpbmdFbnRyeQIIBQZyZXN1bHQCXzIJALkJAggFBnJlc3VsdAJfMwIBOgkBC1N0cmluZ0VudHJ5AggFBnJlc3VsdAJfNAkAuQkCCAUGcmVzdWx0Al81AgE6BQxwcm9sb2dBY3Rpb24JAJEDAggFBnJlc3VsdAJfMwUIYnBJZHhSZXMBaQEMY2xhaW1SZXNUb1dIAgZhbW91bnQObGFuZEFzc2V0SWRTdHIEDHByb2xvZ0FjdGlvbgkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQEYWRkcgkApQgBCAUBaQxvcmlnaW5DYWxsZXIEBnJlc3VsdAkBEGNsYWltUmVzSW50ZXJuYWwEBQRhZGRyBQZhbW91bnQFC2NsYWltTW9kZVdoBQ5sYW5kQXNzZXRJZFN0cgkAlAoCCQDNCAIJAM0IAgkAzQgCCQDOCAIIBQZyZXN1bHQCXzEICQEWdXBkYXRlQWNjU3RhdHNJbnRlcm5hbAIFBGFkZHIJAGsDBQd4cENsYWltBQZhbW91bnQFBU1VTFQ4Al8xCQELU3RyaW5nRW50cnkCCAUGcmVzdWx0Al8yCQC5CQIIBQZyZXN1bHQCXzMCAToJAQtTdHJpbmdFbnRyeQIIBQZyZXN1bHQCXzQJALkJAggFBnJlc3VsdAJfNQIBOgUMcHJvbG9nQWN0aW9uCQCRAwIIBQZyZXN1bHQCXzUFCHdoSWR4UmVzAWkBBmZsaWdodAIHbWVzc2FnZQNzaWcEDHByb2xvZ0FjdGlvbgkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQIdXNlckFkZHIJAKUIAQgFAWkGY2FsbGVyBAFmCQEMZmxpZ2h0Q29tbW9uAwUIdXNlckFkZHIFB21lc3NhZ2UFA3NpZwQFbmV3SFAIBQFmAl8xBAtkdWNrQXNzZXRJZAgFAWYCXzIEBmxvY0tleQkBD2tleUR1Y2tMb2NhdGlvbgEFC2R1Y2tBc3NldElkBAtjdXJMb2NhdGlvbgkBC3ZhbHVlT3JFbHNlAgkAoggBBQZsb2NLZXkFD0RFRkFVTFRMT0NBVElPTgQLbmV3TG9jYXRpb24IBQFmAl80AwkAAAIFC25ld0xvY2F0aW9uBQtjdXJMb2NhdGlvbgkAAgECIllvdSBjYW4ndCBmbHkgdG8gdGhlIHNhbWUgbG9jYXRpb24EBm5ld0xvYwkAtQkCBQtuZXdMb2NhdGlvbgIBXwQGaXNUb3VyCQAAAgkAkQMCBQZuZXdMb2MFCmxvY0lkeFR5cGUCAVQEB2lzRGVsaXYJAAACCQCRAwIFBm5ld0xvYwUKbG9jSWR4VHlwZQIBRAQFZXFLZXkJARBrZXlEdWNrRXF1aXBtZW50AQULZHVja0Fzc2V0SWQECWN1cnJlbnRFcQkBC3ZhbHVlT3JFbHNlAgkAoggBBQVlcUtleQIXLDssXyw7LF8sOyxfLDssXyw7LF8sOywEDSR0MDY4NDE5Njg1MTYJARFzdWJ0cmFjdEVxdWlwbWVudAIFCWN1cnJlbnRFcQgFAWYCXzUEBW5ld0VxCAUNJHQwNjg0MTk2ODUxNgJfMQQPc2hvdWxkWmVyb0J1ZmZzCAUNJHQwNjg0MTk2ODUxNgJfMgQNJHQwNjg1MTk3MTYwMQMJAQxub3RPbk1pc3Npb24CBRJ0b3VybmFtZW50Q29udHJhY3QFC2N1ckxvY2F0aW9uAwkBASEBCQEPaXNVc3VhbExvY2F0aW9uAQULbmV3TG9jYXRpb24JAQxjaGVhdEF0dGVtcHQCBQtjdXJMb2NhdGlvbgULbmV3TG9jYXRpb24DCQBmAgUFbmV3SFAAAAkAlAoCBQtuZXdMb2NhdGlvbgUFbmV3SFAJAJQKAgULY3VyTG9jYXRpb24AAAMJAQ5pc0luVG91cm5hbWVudAIFEnRvdXJuYW1lbnRDb250cmFjdAULY3VyTG9jYXRpb24DCQEBIQEJAQ5pc0luVG91cm5hbWVudAIFEnRvdXJuYW1lbnRDb250cmFjdAULbmV3TG9jYXRpb24JAAIBAipZb3VyIGR1Y2sgaXMgdGFraW5nIHBhcnQgaW4gdGhlIHRvdXJuYW1lbnQEBXNjb3JlCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUGbmV3TG9jBQhsb2NJZHhJZAQGY3VyTG9jCQC1CQIFC2N1ckxvY2F0aW9uAgFfBAZsYXN0SWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUSdG91cm5hbWVudENvbnRyYWN0BQ1sYXN0VG91cklkS2V5AAADCQECIT0CBQVzY29yZQkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQZjdXJMb2MFCGxvY0lkeElkAAEJAQxjaGVhdEF0dGVtcHQCBQtjdXJMb2NhdGlvbgULbmV3TG9jYXRpb24DCQBmAgUFbmV3SFAAAAQJbG9jYWxCZXN0CQELdmFsdWVPckVsc2UCCQCaCAIFEnRvdXJuYW1lbnRDb250cmFjdAkBGmtleUJlc3RSZXN1bHRCeVRvdXJBbmREdWNrAgUGbGFzdElkBQtkdWNrQXNzZXRJZAAABAh1cGRMb2NhbAMJAGYCBQVzY29yZQUJbG9jYWxCZXN0CQD8BwQFEnRvdXJuYW1lbnRDb250cmFjdAIOc2F2ZUR1Y2tSZXN1bHQJAMwIAgULZHVja0Fzc2V0SWQJAMwIAgUFc2NvcmUFA25pbAUDbmlsBQR1bml0AwkAAAIFCHVwZExvY2FsBQh1cGRMb2NhbAkAlAoCBQtuZXdMb2NhdGlvbgUFbmV3SFAJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAJQKAgULY3VyTG9jYXRpb24AAAMJAQEhAQkBDGlzSW5EZWxpdmVyeQEFC2N1ckxvY2F0aW9uBAlsb2NIZWFsdGgJARBhc1N0cmluZ0ludFR1cGxlAQkA/AcEBQR0aGlzAhBhdXRvRXhpdERlbGl2ZXJ5CQDMCAIFC2R1Y2tBc3NldElkBQNuaWwFA25pbAMJAAACBQlsb2NIZWFsdGgFCWxvY0hlYWx0aAMFB2lzRGVsaXYFCWxvY0hlYWx0aAMJAGYCBQVuZXdIUAAACQCUCgIFC25ld0xvY2F0aW9uBQVuZXdIUAkAlAoCCAUJbG9jSGVhbHRoAl8xAAAJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4DCQEBIQEFB2lzRGVsaXYJAAIBAiRZb3VyIGR1Y2sgaXMgdGFraW5nIHBhcnQgaW4gZGVsaXZlcnkDCQEBIQEJAQxpc0luRGVsaXZlcnkBBQtuZXdMb2NhdGlvbgkBDGNoZWF0QXR0ZW1wdAIFC2N1ckxvY2F0aW9uBQtuZXdMb2NhdGlvbgQFc2NvcmUJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQZuZXdMb2MFCGxvY0lkeElkBAZjdXJMb2MJALUJAgULY3VyTG9jYXRpb24CAV8DCQECIT0CBQVzY29yZQkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQZjdXJMb2MFCGxvY0lkeElkAAEJAQxjaGVhdEF0dGVtcHQCBQtjdXJMb2NhdGlvbgULbmV3TG9jYXRpb24DCQBmAgUFbmV3SFAAAAkAlAoCBQtuZXdMb2NhdGlvbgUFbmV3SFAECWxvY0hlYWx0aAkBEGFzU3RyaW5nSW50VHVwbGUBCQD8BwQFBHRoaXMCEGF1dG9FeGl0RGVsaXZlcnkJAMwIAgULZHVja0Fzc2V0SWQFA25pbAUDbmlsAwkAAAIFCWxvY0hlYWx0aAUJbG9jSGVhbHRoBQlsb2NIZWFsdGgJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4ECWxvY1RvU2F2ZQgFDSR0MDY4NTE5NzE2MDECXzEECGhwVG9TYXZlCAUNJHQwNjg1MTk3MTYwMQJfMgkAlAoCCQDOCAIJAMwIAgkBC1N0cmluZ0VudHJ5AgUGbG9jS2V5BQlsb2NUb1NhdmUJAMwIAgkBC1N0cmluZ0VudHJ5AgUFZXFLZXkFBW5ld0VxCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQENa2V5RHVja0hlYWx0aAEFC2R1Y2tBc3NldElkBQVuZXdIUAkAzAgCBQxwcm9sb2dBY3Rpb24FA25pbAMFD3Nob3VsZFplcm9CdWZmcwkAzAgCCQELU3RyaW5nRW50cnkCCQEMa2V5RHVja0J1ZmZzAQULZHVja0Fzc2V0SWQCCTBfMF8wXzBfMAUDbmlsCQDOCAIFA25pbAgJARd1cGRhdGVEdWNrU3RhdHNJbnRlcm5hbAIFC2R1Y2tBc3NldElkAwkAZgIFBW5ld0hQAAAFD3hwU3VjY2Vzc0ZsaWdodAUMeHBGYWlsRmxpZ2h0Al8xCAUBZgJfMwFpAQRoZWFsAwpxdWFudGl0eUwxCnF1YW50aXR5TDIKcXVhbnRpdHlMMwQMcHJvbG9nQWN0aW9uCQEGcHJvbG9nAQUBaQMDAwkAZgIAAAUKcXVhbnRpdHlMMQYJAGYCAAAFCnF1YW50aXR5TDIGCQBmAgAABQpxdWFudGl0eUwzCQACAQIbUXVhbnRpdHkgY2Fubm90IGJlIG5lZ2F0aXZlBAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEJAKUIAQgFAWkGY2FsbGVyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkAwkBD2NoZWNrVG91cm5hbWVudAEFC2R1Y2tBc3NldElkCQACAQIUaGVhbF9jaGVja1RvdXJuYW1lbnQDCQENY2hlY2tEZWxpdmVyeQEFC2R1Y2tBc3NldElkCQACAQISaGVhbF9jaGVja0RlbGl2ZXJ5BANxdHMJAMwIAgUKcXVhbnRpdHlMMQkAzAgCBQpxdWFudGl0eUwyCQDMCAIFCnF1YW50aXR5TDMFA25pbAQJa2V5SGVhbHRoCQENa2V5RHVja0hlYWx0aAEFC2R1Y2tBc3NldElkBAVtYXhIUAkBCW1heEhlYWx0aAEJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBDGtleUR1Y2tMZXZlbAEFC2R1Y2tBc3NldElkAAAECW9sZEhlYWx0aAkBC3ZhbHVlT3JFbHNlAgkAnwgBBQlrZXlIZWFsdGgFBW1heEhQAwkAZwIFCW9sZEhlYWx0aAUFbWF4SFAJAAIBCQCsAgIJAKwCAgIPSFAgc2hvdWxkIGJlIDwgCQCkAwEFBW1heEhQAgggdG8gaGVhbAQFYnBLZXkJARFrZXlCYWNrcGFja0J5RHVjawEFC2R1Y2tBc3NldElkBAtjdXJyZW50UGFjawkBC2dldEJhY2twYWNrAQUFYnBLZXkECHByb2RMaXN0AwkAAAIJAJEDAgULY3VycmVudFBhY2sFCWJwSWR4UHJvZAIABQNuaWwJALwJAgkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kAgFfCgELaXRlcmF0ZVByb2QCA2FjYwZyZWNpcGUEAW4IBQNhY2MCXzIEAXgDCQBmAgkAkAMBBQhwcm9kTGlzdAUBbgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCHByb2RMaXN0BQFuAAADCQBmAgADBQFuBAFxCQCRAwIFA3F0cwUBbgMJAGYCBQFxBQF4CQACAQkArAICCQCsAgIJAKwCAgIOWW91IGhhdmUgb25seSAJAKQDAQUBeAIEIG9mIAkAkQMCBQlwcm9kVHlwZXMFAW4JAJUKAwkAzQgCCAUDYWNjAl8xCQCkAwEJAGUCBQF4BQFxCQBkAgUBbgABCQBkAggFA2FjYwJfMwkAaAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCCQC1CQIFBnJlY2lwZQIBXwUKcklkeEVmZmVjdAUBcQkAlQoDCQDNCAIIBQNhY2MCXzEJAKQDAQUBeAkAZAIFAW4AAQgFA2FjYwJfMwQGcmVzdWx0CgACJGwFEHByb2R1Y3Rpb25NYXRyaXgKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCVCgMFA25pbAAAAAAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBC2l0ZXJhdGVQcm9kAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyA1MAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiACMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIECW5ld0hlYWx0aAkAlwMBCQDMCAIFBW1heEhQCQDMCAIJAGQCBQlvbGRIZWFsdGgIBQZyZXN1bHQCXzMFA25pbAkAlAoCCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIFCWtleUhlYWx0aAUJbmV3SGVhbHRoCQDMCAIJAQtTdHJpbmdFbnRyeQIFBWJwS2V5CQC6CQIJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUKYnBJZHhMZXZlbAkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeFJlcwkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeE1hdAkAzAgCCQC5CQIIBQZyZXN1bHQCXzECAV8FA25pbAIBOgkAzAgCBQxwcm9sb2dBY3Rpb24FA25pbAgJARd1cGRhdGVEdWNrU3RhdHNJbnRlcm5hbAIFC2R1Y2tBc3NldElkCQBoAgUGeHBIZWFsCQBkAgkAZAIFCnF1YW50aXR5TDEFCnF1YW50aXR5TDIFCnF1YW50aXR5TDMCXzEFCW5ld0hlYWx0aAFpAQZoZWFsRVMABAxwcm9sb2dBY3Rpb24JAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQIcRXhhY3RseSBvbmUgcGF5bWVudCByZXF1aXJlZAQDcG10CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAADCQECIT0CCAUDcG10B2Fzc2V0SWQFC3VzZHRBc3NldElkCQACAQIaQWxsb3dlZCBVU0RUIHBheW1lbnQgb25seSEEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQkApQgBCAUBaQZjYWxsZXICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQDCQEPY2hlY2tUb3VybmFtZW50AQULZHVja0Fzc2V0SWQJAAIBAhZoZWFsRVNfY2hlY2tUb3VybmFtZW50AwkBDWNoZWNrRGVsaXZlcnkBBQtkdWNrQXNzZXRJZAkAAgECFGhlYWxFU19jaGVja0RlbGl2ZXJ5BAlrZXlIZWFsdGgJAQ1rZXlEdWNrSGVhbHRoAQULZHVja0Fzc2V0SWQEBW1heEhQCQEJbWF4SGVhbHRoAQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEMa2V5RHVja0xldmVsAQULZHVja0Fzc2V0SWQAAAQJb2xkSGVhbHRoCQELdmFsdWVPckVsc2UCCQCfCAEFCWtleUhlYWx0aAUFbWF4SFADCQBmAgUJb2xkSGVhbHRoAAAJAAIBAihIUCBzaG91bGQgYmUgMCB0byBjYWxsIEVtZXJnZW5jeSBTZXJ2aWNlBAVicEtleQkBEWtleUJhY2twYWNrQnlEdWNrAQULZHVja0Fzc2V0SWQEC2N1cnJlbnRQYWNrCQELZ2V0QmFja3BhY2sBBQVicEtleQQIcHJvZExpc3QDCQAAAgkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kAgAFA25pbAkAvAkCCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QCAV8EDW1lZEtpdEFtb3VudDEDCQBmAgkAkAMBBQhwcm9kTGlzdAAACQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUIcHJvZExpc3QAAAAABA1tZWRLaXRBbW91bnQyAwkAZgIJAJADAQUIcHJvZExpc3QAAQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCHByb2RMaXN0AAEAAAQNbWVkS2l0QW1vdW50MwMJAGYCCQCQAwEFCHByb2RMaXN0AAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQhwcm9kTGlzdAACAAADAwMJAGYCBQ1tZWRLaXRBbW91bnQxAAAGCQBmAgUNbWVkS2l0QW1vdW50MgAABgkAZgIFDW1lZEtpdEFtb3VudDMAAAkAAgECH1lvdSBoYXZlIHRvIHVzZSBvd24gTWVkaWNhbCBLaXQECGV4aXN0U3RyCQCdCAIFD2Vjb25vbXlDb250cmFjdAkBDmtleUVzV2FyZWhvdXNlAAQMZXhpc3RBbW91bnRzAwkBCWlzRGVmaW5lZAEFCGV4aXN0U3RyCQC8CQIJAQV2YWx1ZQEFCGV4aXN0U3RyAgFfBQNuaWwEC2V4aXN0QW1vdW50AwkAZgIJAJADAQUMZXhpc3RBbW91bnRzAAAJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQxleGlzdEFtb3VudHMAAAAAAwkAZwIAAAULZXhpc3RBbW91bnQJAAIBAjlUaGVyZSBhcmUgbm8gTWVkaWNhbCBLaXRzIEwxIGF0IEVtZXJnZW5jeSBTZXJ2aWNlIHN0b3JhZ2UECW5ld0hlYWx0aAkAZAIFCW9sZEhlYWx0aAkBDXBhcnNlSW50VmFsdWUBCQCRAwIJALUJAgkAkQMCBRBwcm9kdWN0aW9uTWF0cml4AAACAV8FCnJJZHhFZmZlY3QEBW5ld0VTCQC5CQIJAMwIAgkApAMBCQBlAgULZXhpc3RBbW91bnQAAQkA0QgCBQxleGlzdEFtb3VudHMAAAIBXwQGcmVjaXBlCQC1CQIJAJEDAgUQcHJvZHVjdGlvbk1hdHJpeAAAAgFfBAh0b3RhbE1hdAkBEmdldFJlY2lwZU1hdGVyaWFscwEFBnJlY2lwZQQJc2VsbFByaWNlCQBrAwkAaAIFCHRvdGFsTWF0BQpFU1NFTExDT0VGBRBSRVNPVVJDRVBSSUNFTUlOCQBoAgUFTVVMVDgFDlBST0RVQ1RQS0dTSVpFAwkBAiE9AggFA3BtdAZhbW91bnQFCXNlbGxQcmljZQkAAgEJAKwCAgIbUGF5bWVudCBhdHRhY2hlZCBzaG91bGQgYmUgCQCkAwEFCXNlbGxQcmljZQQGcmVzdWx0CQEIYXNTdHJpbmcBCQD8BwQFD2Vjb25vbXlDb250cmFjdAIPdXBkYXRlRXNTdG9yYWdlCQDMCAIFBW5ld0VTBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFC3VzZHRBc3NldElkBQlzZWxsUHJpY2UFA25pbAkAlAoCCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIFCWtleUhlYWx0aAUJbmV3SGVhbHRoCQDMCAIFDHByb2xvZ0FjdGlvbgUDbmlsCAkBF3VwZGF0ZUR1Y2tTdGF0c0ludGVybmFsAgULZHVja0Fzc2V0SWQFCHhwQ2FsbEVTAl8xBQZyZXN1bHQBaQEOdXBkYXRlQmFja3BhY2sCC2R1Y2tBc3NldElkB25ld1BhY2sDCQECIT0CCAUBaQZjYWxsZXIFD2Vjb25vbXlDb250cmFjdAkAAgECEXBlcm1pc3Npb24gZGVuaWVkCQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBEWtleUJhY2twYWNrQnlEdWNrAQULZHVja0Fzc2V0SWQFB25ld1BhY2sFA25pbAUHbmV3UGFjawFpAQ9jb21taXRGb3JSYW5kb20ABAxwcm9sb2dBY3Rpb24JAQZwcm9sb2cBBQFpBAtmaW5pc2hCbG9jawkAZAIFBmhlaWdodAULcmFuZG9tRGVsYXkEBGFkZHIJAKUIAQgFAWkGY2FsbGVyCQCUCgIJAM0IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBCWtleUNvbW1pdAEFBGFkZHIFC2ZpbmlzaEJsb2NrBQNuaWwFDHByb2xvZ0FjdGlvbgULZmluaXNoQmxvY2sBaQEKYXdhcmRTTGFuZAEHYWRkcmVzcwMJAQIhPQIIBQFpBmNhbGxlcgUSdG91cm5hbWVudENvbnRyYWN0CQACAQINQWNjZXNzIGRlbmllZAMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBAZyZXN1bHQJARJleHBlZGl0aW9uSW50ZXJuYWwCCQERQGV4dHJOYXRpdmUoMTA2MikBBQdhZGRyZXNzCAUBaQ10cmFuc2FjdGlvbklkCQCUCgIIBQZyZXN1bHQCXzEICAUGcmVzdWx0Al8yAl8xAWkBCGJ1eVNMYW5kAAQMcHJvbG9nQWN0aW9uCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECHEV4YWN0bHkgb25lIHBheW1lbnQgcmVxdWlyZWQEA3BtdAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAAAwkBAiE9AggFA3BtdAdhc3NldElkBQt1c2R0QXNzZXRJZAkAAgECGkFsbG93ZWQgVVNEVCBwYXltZW50IG9ubHkhAwkBAiE9AggFA3BtdAZhbW91bnQFB0VYUFVTRFQJAAIBCQCsAgICG1BheW1lbnQgYXR0YWNoZWQgc2hvdWxkIGJlIAkApAMBBQdFWFBVU0RUBAZyZXN1bHQJARJleHBlZGl0aW9uSW50ZXJuYWwCCAUBaQZjYWxsZXIIBQFpDXRyYW5zYWN0aW9uSWQEC2FjcmVzUmVzdWx0CQEFYXNJbnQBCQD8BwQFDWFjcmVzQ29udHJhY3QCCWJ1cm5BY3JlcwkAzAgCBQxTX0NPU1RfQUNSRVMFA25pbAUDbmlsCQCUCgIJAM0IAgkAzggCCQDNCAIIBQZyZXN1bHQCXzEJAQ5TY3JpcHRUcmFuc2ZlcgMFD2Vjb25vbXlDb250cmFjdAgFA3BtdAZhbW91bnQFC3VzZHRBc3NldElkCAkBFnVwZGF0ZUFjY1N0YXRzSW50ZXJuYWwCCQClCAEIBQFpBmNhbGxlcgUKeHBOZXdTTGFuZAJfMQUMcHJvbG9nQWN0aW9uCQCUCgIICAUGcmVzdWx0Al8yAl8xBQthY3Jlc1Jlc3VsdAFpAQpleHBlZGl0aW9uAgdtZXNzYWdlA3NpZwQMcHJvbG9nQWN0aW9uCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBAh1c2VyQWRkcgkApQgBCAUBaQZjYWxsZXIEAWYJAQxmbGlnaHRDb21tb24DBQh1c2VyQWRkcgUHbWVzc2FnZQUDc2lnBAtkdWNrQXNzZXRJZAgFAWYCXzIECWtleUhlYWx0aAkBDWtleUR1Y2tIZWFsdGgBBQtkdWNrQXNzZXRJZAQFYnBLZXkJARFrZXlCYWNrcGFja0J5RHVjawEFC2R1Y2tBc3NldElkBAtjdXJyZW50UGFjawkBC2dldEJhY2twYWNrAQUFYnBLZXkEBW1MaXN0CQC1CQIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4TWF0AgFfBAZuZXdNYXQJALkJAgkBEXN1YnRyYWN0TWF0ZXJpYWxzAwYFBW1MaXN0BQxFWFBNQVRFUklBTFMCAV8EBWVxS2V5CQEQa2V5RHVja0VxdWlwbWVudAEFC2R1Y2tBc3NldElkBAljdXJyZW50RXEJAQt2YWx1ZU9yRWxzZQIJAKIIAQUFZXFLZXkCFyw7LF8sOyxfLDssXyw7LF8sOyxfLDssBA0kdDA3OTAwNTc5MTAyCQERc3VidHJhY3RFcXVpcG1lbnQCBQljdXJyZW50RXEIBQFmAl81BAVuZXdFcQgFDSR0MDc5MDA1NzkxMDICXzEED3Nob3VsZFplcm9CdWZmcwgFDSR0MDc5MDA1NzkxMDICXzIEAWUJARJleHBlZGl0aW9uSW50ZXJuYWwCCAUBaQZjYWxsZXIIBQFpDXRyYW5zYWN0aW9uSWQEAmlkCAgFAWUCXzICXzEEBnJlc3VsdAMJAGcCAAAIBQFmAl8xCQCVCgMJAMwIAgkBDEludGVnZXJFbnRyeQIFCWtleUhlYWx0aAAACQDMCAIJAQtTdHJpbmdFbnRyeQIFBWVxS2V5BQVuZXdFcQUDbmlsAgAAAAkAlQoDCQDOCAIIBQFlAl8xAwUPc2hvdWxkWmVyb0J1ZmZzCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQxrZXlEdWNrQnVmZnMBBQtkdWNrQXNzZXRJZAIJMF8wXzBfMF8wBQNuaWwJAM0IAgkAzQgCCQDNCAIJAM0IAgUDbmlsCQELU3RyaW5nRW50cnkCCQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQJALkJAgkAzAgCCAgFAWUCXzICXzIJAMwIAgIBTAkAzAgCBQJpZAUDbmlsAgFfCQEMSW50ZWdlckVudHJ5AgUJa2V5SGVhbHRoCAUBZgJfMQkBC1N0cmluZ0VudHJ5AgUFZXFLZXkFBW5ld0VxCQELU3RyaW5nRW50cnkCBQVicEtleQkAuQkCCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCmJwSWR4TGV2ZWwJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhSZXMJAMwIAgUGbmV3TWF0CQDMCAIJAJEDAgULY3VycmVudFBhY2sFCWJwSWR4UHJvZAUDbmlsAgE6BQJpZAgFAWYCXzMDCQEPY2hlY2tUb3VybmFtZW50AQULZHVja0Fzc2V0SWQJAAIBAhpleHBlZGl0aW9uX2NoZWNrVG91cm5hbWVudAMJAQ1jaGVja0RlbGl2ZXJ5AQULZHVja0Fzc2V0SWQJAAIBAhhleHBlZGl0aW9uX2NoZWNrRGVsaXZlcnkEC2FjcmVzUmVzdWx0CQEFYXNJbnQBCQD8BwQFDWFjcmVzQ29udHJhY3QCCWJ1cm5BY3JlcwkAzAgCBQxTX0NPU1RfQUNSRVMFA25pbAUDbmlsCQCUCgIJAM0IAgkAzggCCAUGcmVzdWx0Al8xCAkBF3VwZGF0ZUR1Y2tTdGF0c0ludGVybmFsAgULZHVja0Fzc2V0SWQFCnhwTmV3U0xhbmQCXzEFDHByb2xvZ0FjdGlvbgkAlQoDCAUGcmVzdWx0Al8yCAUGcmVzdWx0Al8zBQthY3Jlc1Jlc3VsdAFpARBidXlTTGFuZEZvckFjcmVzAAQMcHJvbG9nQWN0aW9uCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECImV4YWN0bHkgMSBwYXltZW50IG11c3QgYmUgYXR0YWNoZWQEA3BtdAkAkQMCCAUBaQhwYXltZW50cwAABANhbXQIBQNwbXQGYW1vdW50AwMJAQEhAQkBCWlzRGVmaW5lZAEIBQNwbXQHYXNzZXRJZAYJAQIhPQIJAQV2YWx1ZQEIBQNwbXQHYXNzZXRJZAUMYWNyZXNBc3NldElkCQACAQIUQUNSRVMgcGF5bWVudHMgb25seSEDCQECIT0CBQNhbXQFDFNfQ09TVF9BQ1JFUwkAAgEJAKwCAgIbUGF5bWVudCBhdHRhY2hlZCBzaG91bGQgYmUgCQCkAwEFDFNfQ09TVF9BQ1JFUwQGcmVzdWx0CQESZXhwZWRpdGlvbkludGVybmFsAggFAWkGY2FsbGVyCAUBaQ10cmFuc2FjdGlvbklkBAthY3Jlc1Jlc3VsdAkBBWFzSW50AQkA/AcEBQ1hY3Jlc0NvbnRyYWN0AglidXJuQWNyZXMJAMwIAgUMU19DT1NUX0FDUkVTBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFDGFjcmVzQXNzZXRJZAUDYW10BQNuaWwJAJQKAgkAzQgCCQDOCAIIBQZyZXN1bHQCXzEICQEWdXBkYXRlQWNjU3RhdHNJbnRlcm5hbAIJAKUIAQgFAWkGY2FsbGVyBQp4cE5ld1NMYW5kAl8xBQxwcm9sb2dBY3Rpb24JAJQKAggIBQZyZXN1bHQCXzICXzEFC2FjcmVzUmVzdWx0AWkBDHVwZ3JhZGVJbmZyYQELbGFuZEFzc2V0SWQEDHByb2xvZ0FjdGlvbgkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQGcmVzdWx0CQENdXBJbmZyYUNvbW1vbgQGCAUBaQZjYWxsZXIAAAULbGFuZEFzc2V0SWQEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQkApQgBCAUBaQZjYWxsZXICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQJAJQKAgkAzggCCQDNCAIIBQZyZXN1bHQCXzEFDHByb2xvZ0FjdGlvbggJARd1cGRhdGVEdWNrU3RhdHNJbnRlcm5hbAIFC2R1Y2tBc3NldElkCQBrAwUOeHBVcGdyYWRlSW5mcmEIBQZyZXN1bHQCXzMFBU1VTFQ4Al8xCAUGcmVzdWx0Al8yAWkBEGFjdGl2YXRlQXJ0aWZhY3QCB2FydE5hbWUObGFuZEFzc2V0SWRPcHQEDHByb2xvZ0FjdGlvbgkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQEYWRkcgkApQgBCAUBaQZjYWxsZXIEBnJlc3VsdAQHJG1hdGNoMAUHYXJ0TmFtZQMJAAACAgdQUkVTQUxFBQckbWF0Y2gwCQESYWN0aXZhdGVQcmVzYWxlQXJ0AgUEYWRkcgUObGFuZEFzc2V0SWRPcHQDCQAAAgIHT05CT0FSRAUHJG1hdGNoMAkBEmFjdGl2YXRlT25ib2FyZEFydAEFBGFkZHIJAAIBAhBVbmtub3duIGFydGlmYWN0CQDNCAIFBnJlc3VsdAUMcHJvbG9nQWN0aW9uAWkBCm1lcmdlTGFuZHMBDGxhbmRBc3NldElkcwQMcHJvbG9nQWN0aW9uCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBAZyZXN1bHQJAQttZXJnZUNvbW1vbgIJAKUIAQgFAWkGY2FsbGVyBQxsYW5kQXNzZXRJZHMJAJQKAgkAzggCCQDNCAIIBQZyZXN1bHQCXzEFDHByb2xvZ0FjdGlvbggJARZ1cGRhdGVBY2NTdGF0c0ludGVybmFsAgkApQgBCAUBaQZjYWxsZXIFB3hwTWVyZ2UCXzEIBQZyZXN1bHQCXzIBaQENY2FyZ29FeGNoYW5nZQIMY2FyZ29MaXN0U3RyC2xhbmRBc3NldElkBAxwcm9sb2dBY3Rpb24JAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQECmNhcmdvUGFydHMJALwJAgUMY2FyZ29MaXN0U3RyAgE6BARhZGRyCQClCAEIBQFpDG9yaWdpbkNhbGxlcgQFYXNzZXQJAQV2YWx1ZQEJAOwHAQkA2QQBBQtsYW5kQXNzZXRJZAQHdGltZUtleQkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAMJAQEhAQkBCWlzRGVmaW5lZAEJAJ8IAQUHdGltZUtleQkAAgEJAKwCAggFBWFzc2V0BG5hbWUCDiBpcyBub3Qgc3Rha2VkBAVvd25lcgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARVrZXlMYW5kQXNzZXRJZFRvT3duZXIBBQtsYW5kQXNzZXRJZAkArAICCQCsAgICBE5GVCAIBQVhc3NldARuYW1lAgwgaXMgb3JwaGFuZWQDCQECIT0CBQVvd25lcgUEYWRkcgkAAgEJAKwCAgUKTEFORFBSRUZJWAINIGlzIG5vdCB5b3VycwQJbGFuZEluZGV4CQBpAgkBD251bVBpZWNlc0J5U2l6ZQEJAJEDAgkAtQkCCAUFYXNzZXQLZGVzY3JpcHRpb24CAV8FC3JlY0xhbmRTaXplBQVTU0laRQQKaW5mcmFMZXZlbAkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEWa2V5SW5mcmFMZXZlbEJ5QXNzZXRJZAEFC2xhbmRBc3NldElkAAAEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUEYWRkcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAQLY3VyTG9jYXRpb24JAQt2YWx1ZU9yRWxzZQIJAKIIAQkBD2tleUR1Y2tMb2NhdGlvbgEFC2R1Y2tBc3NldElkBQ9ERUZBVUxUTE9DQVRJT04EA2xvYwkAtQkCCQEFdmFsdWUBBQtjdXJMb2NhdGlvbgIBXwMJAQIhPQIJAJEDAgUDbG9jBQpsb2NJZHhUeXBlAgFMCQACAQkArAICCQCsAgICFkR1Y2sgbG9jYXRpb24gdHlwZSBpcyAJAJEDAgUDbG9jBQpsb2NJZHhUeXBlAhEsIGJ1dCBzaG91bGQgYmUgTAMJAQIhPQIJAJEDAgUDbG9jBQhsb2NJZHhJZAULbGFuZEFzc2V0SWQJAAIBCQCsAgICG0R1Y2sgc2hvdWxkIGJlIG9uIHRoZSBsYW5kIAULbGFuZEFzc2V0SWQEBXdoS2V5CQESa2V5V2FyZWhvdXNlQnlMYW5kAQULbGFuZEFzc2V0SWQECWN1cnJlbnRXaAkBDGdldFdhcmVob3VzZQMFBXdoS2V5BQlsYW5kSW5kZXgFCmluZnJhTGV2ZWwEBWJwS2V5CQERa2V5QmFja3BhY2tCeUR1Y2sBBQtkdWNrQXNzZXRJZAQLY3VycmVudFBhY2sJAQtnZXRCYWNrcGFjawEFBWJwS2V5BAZyZXN1bHQJAQltb3ZlU3R1ZmYDBQpjYXJnb1BhcnRzBQljdXJyZW50V2gFC2N1cnJlbnRQYWNrBARsb2Z0CQC1CQIJAJEDAgUJY3VycmVudFdoBQl3aElkeExPRlQCAV8EBWxvZnRPCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFC3ZvbE9jY3VwaWVkCAUGcmVzdWx0Al83BAVsb2Z0RgkAZQIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQd2b2xGcmVlCAUGcmVzdWx0Al83CQDMCAIJAQtTdHJpbmdFbnRyeQIFBWJwS2V5CQC6CQIJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUKYnBJZHhMZXZlbAkAzAgCCAUGcmVzdWx0Al80CQDMCAIIBQZyZXN1bHQCXzUJAMwIAggFBnJlc3VsdAJfNgUDbmlsAgE6CQDMCAIJAQtTdHJpbmdFbnRyeQIFBXdoS2V5CQC6CQIJAMwIAgkAkQMCBQljdXJyZW50V2gFC3doSWR4TGV2ZWxzCQDMCAIIBQZyZXN1bHQCXzEJAMwIAggFBnJlc3VsdAJfMgkAzAgCCAUGcmVzdWx0Al8zCQDMCAIJALkJAgkAzAgCCQCRAwIFBGxvZnQFCXZvbExvY2tlZAkAzAgCCQCkAwEFBWxvZnRPCQDMCAIJAKQDAQUFbG9mdEYJAMwIAgkAkQMCBQRsb2Z0BQh2b2xUb3RhbAUDbmlsAgFfBQNuaWwCAToJAMwIAgUMcHJvbG9nQWN0aW9uBQNuaWwBaQENc2F2ZVdhcmVob3VzZQIFd2hTdHILbGFuZEFzc2V0SWQDCQECIT0CCAUBaQZjYWxsZXIFD2Vjb25vbXlDb250cmFjdAkAAgECDUFjY2VzcyBkZW5pZWQEBXdoS2V5CQESa2V5V2FyZWhvdXNlQnlMYW5kAQULbGFuZEFzc2V0SWQEAndoCQC8CQIFBXdoU3RyAgE6AwkBAiE9AgkAkAMBBQJ3aAAFCQACAQIwd2FyZWhvdXNlIHN0cmluZyBzaG91bGQgY29udGFpbiA0ICc6JyBzZXBhcmF0b3JzBAVsb2Z0TAkAkQMCCQC1CQIJAJEDAgUCd2gFCXdoSWR4TE9GVAIBXwUJdm9sTG9ja2VkBAVsb2Z0TwkBF2dldFdhcmVob3VzZU9jY3VwaWVkVm9sAQUCd2gEBWxvZnRUCQEXZ2V0V2FyZWhvdXNlVG90YWxWb2x1bWUBCQCRAwIFAndoBQt3aElkeExldmVscwQFbG9mdEYJAGUCCQBlAgUFbG9mdFQJAQ1wYXJzZUludFZhbHVlAQUFbG9mdEwFBWxvZnRPBAhuZXdXaFN0cgkAugkCCQDMCAIJAJEDAgUCd2gFC3doSWR4TGV2ZWxzCQDMCAIJAJEDAgUCd2gFCHdoSWR4UmVzCQDMCAIJAJEDAgUCd2gFCHdoSWR4TWF0CQDMCAIJAJEDAgUCd2gFCXdoSWR4UHJvZAkAzAgCCQC5CQIJAMwIAgUFbG9mdEwJAMwIAgkApAMBBQVsb2Z0TwkAzAgCCQCkAwEFBWxvZnRGCQDMCAIJAKQDAQUFbG9mdFQFA25pbAIBXwUDbmlsAgE6CQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgUFd2hLZXkFCG5ld1doU3RyBQNuaWwFCG5ld1doU3RyAWkBEmZpeFdhcmVob3VzZUZvcm1hdAELbGFuZEFzc2V0SWQDCQECIT0CCAUBaQZjYWxsZXIFDHJlc3RDb250cmFjdAkAAgECDUFjY2VzcyBkZW5pZWQEBXdoS2V5CQESa2V5V2FyZWhvdXNlQnlMYW5kAQULbGFuZEFzc2V0SWQEBWFzc2V0CQEFdmFsdWUBCQDsBwEJANkEAQULbGFuZEFzc2V0SWQECWxhbmRJbmRleAkAaQIJAQ9udW1QaWVjZXNCeVNpemUBCQCRAwIJALUJAggFBWFzc2V0C2Rlc2NyaXB0aW9uAgFfBQtyZWNMYW5kU2l6ZQUFU1NJWkUECmluZnJhTGV2ZWwJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBFmtleUluZnJhTGV2ZWxCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAAABAJ3aAkBDGdldFdhcmVob3VzZQMFBXdoS2V5BQlsYW5kSW5kZXgFCmluZnJhTGV2ZWwEBWxvZnRMCQEFYXNJbnQBCQD8BwQFD2Vjb25vbXlDb250cmFjdAIacmVjYWxjTG9ja2VkVm9sdW1lUkVBRE9OTFkJAMwIAgULbGFuZEFzc2V0SWQJAMwIAgUCd2gFA25pbAUDbmlsBAVsb2Z0TwkBF2dldFdhcmVob3VzZU9jY3VwaWVkVm9sAQUCd2gEBWxvZnRUCQEXZ2V0V2FyZWhvdXNlVG90YWxWb2x1bWUBCQCRAwIFAndoBQt3aElkeExldmVscwQFbG9mdEYJAGUCCQBlAgUFbG9mdFQFBWxvZnRMBQVsb2Z0TwQIbmV3V2hTdHIJALoJAgkAzAgCCQCRAwIFAndoBQt3aElkeExldmVscwkAzAgCCQCRAwIFAndoBQh3aElkeFJlcwkAzAgCCQCRAwIFAndoBQh3aElkeE1hdAkAzAgCCQCRAwIFAndoBQl3aElkeFByb2QJAMwIAgkAuQkCCQDMCAIJAKQDAQUFbG9mdEwJAMwIAgkApAMBBQVsb2Z0TwkAzAgCCQCkAwEFBWxvZnRGCQDMCAIJAKQDAQUFbG9mdFQFA25pbAIBXwUDbmlsAgE6CQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgUFd2hLZXkFCG5ld1doU3RyBQNuaWwFCG5ld1doU3RyAWkBF2ZpeENvbnRpbmVudFByb3BvcnRpb25zAQxsYW5kQXNzZXRJZHMDCQECIT0CCAUBaQZjYWxsZXIFDHJlc3RDb250cmFjdAkAAgECDUFjY2VzcyBkZW5pZWQKAQhnZXRQcm9wcwIDYWNjBGNvbnQJAM0IAgUDYWNjCQELdmFsdWVPckVsc2UCCQCiCAEJARZrZXlSZXNUeXBlc0J5Q29udGluZW50AQUEY29udAILMF8wXzBfMF8wXzAEAXAKAAIkbAUKY29udGluZW50cwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAFA25pbAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEIZ2V0UHJvcHMCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDUJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFCgEJcHJvY2Vzc29yAgNhY2MLbGFuZEFzc2V0SWQEBWFzc2V0CQEFdmFsdWUBCQDsBwEJANkEAQULbGFuZEFzc2V0SWQEAWQJALUJAggFBWFzc2V0C2Rlc2NyaXB0aW9uAgFfBAlsYW5kSW5kZXgJAGkCCQEPbnVtUGllY2VzQnlTaXplAQkAkQMCBQFkBQtyZWNMYW5kU2l6ZQUFU1NJWkUEBGNvbnQJAJEDAgUBZAUMcmVjQ29udGluZW50BA10ZXJyYWluQ291bnRzCQENY291bnRUZXJyYWlucwEJAJEDAgUBZAULcmVjVGVycmFpbnMEDGNvbnRpbmVudElkeAkBBXZhbHVlAQkAzwgCBQpjb250aW5lbnRzBQRjb250BAljb250UHJvcHMJALUJAgkAkQMCBQNhY2MFDGNvbnRpbmVudElkeAIBXwQHdXBkYXRlZAkAuQkCCQEZdXBkYXRlUHJvcG9ydGlvbnNJbnRlcm5hbAQFCWNvbnRQcm9wcwUNdGVycmFpbkNvdW50cwUJbGFuZEluZGV4AAECAV8EByRtYXRjaDAFBGNvbnQDCQAAAgIIQW1lcmljYXMFByRtYXRjaDAJAMwIAgUHdXBkYXRlZAkAzAgCCQCRAwIFA2FjYwABCQDMCAIJAJEDAgUDYWNjAAIJAMwIAgkAkQMCBQNhY2MAAwkAzAgCCQCRAwIFA2FjYwAEBQNuaWwDCQAAAgIGRXVyb3BlBQckbWF0Y2gwCQDMCAIJAJEDAgUDYWNjAAAJAMwIAgUHdXBkYXRlZAkAzAgCCQCRAwIFA2FjYwACCQDMCAIJAJEDAgUDYWNjAAMJAMwIAgkAkQMCBQNhY2MABAUDbmlsAwkAAAICBEFzaWEFByRtYXRjaDAJAMwIAgkAkQMCBQNhY2MAAAkAzAgCCQCRAwIFA2FjYwABCQDMCAIFB3VwZGF0ZWQJAMwIAgkAkQMCBQNhY2MAAwkAzAgCCQCRAwIFA2FjYwAEBQNuaWwDCQAAAgIGQWZyaWNhBQckbWF0Y2gwCQDMCAIJAJEDAgUDYWNjAAAJAMwIAgkAkQMCBQNhY2MAAQkAzAgCCQCRAwIFA2FjYwACCQDMCAIFB3VwZGF0ZWQJAMwIAgkAkQMCBQNhY2MABAUDbmlsAwkAAAICB09jZWFuaWEFByRtYXRjaDAJAMwIAgkAkQMCBQNhY2MAAAkAzAgCCQCRAwIFA2FjYwABCQDMCAIJAJEDAgUDYWNjAAIJAMwIAgkAkQMCBQNhY2MAAwkAzAgCBQd1cGRhdGVkBQNuaWwJAAIBAg93cm9uZyBjb250aW5lbnQEAXIKAAIkbAUMbGFuZEFzc2V0SWRzCgACJHMJAJADAQUCJGwKAAUkYWNjMAUBcAoBBSRmMV8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEJcHJvY2Vzc29yAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYxXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhVMaXN0IHNpemUgZXhjZWVkcyAxMDAJAQUkZjFfMgIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyADMANAA1ADYANwA4ADkAOgA7ADwAPQA+AD8AQABBAEIAQwBEAEUARgBHAEgASQBKAEsATABNAE4ATwBQAFEAUgBTAFQAVQBWAFcAWABZAFoAWwBcAF0AXgBfAGAAYQBiAGMAZAkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQIJARZrZXlSZXNUeXBlc0J5Q29udGluZW50AQIIQW1lcmljYXMJAJEDAgUBcgAACQDMCAIJAQtTdHJpbmdFbnRyeQIJARZrZXlSZXNUeXBlc0J5Q29udGluZW50AQIGRXVyb3BlCQCRAwIFAXIAAQkAzAgCCQELU3RyaW5nRW50cnkCCQEWa2V5UmVzVHlwZXNCeUNvbnRpbmVudAECBEFzaWEJAJEDAgUBcgACCQDMCAIJAQtTdHJpbmdFbnRyeQIJARZrZXlSZXNUeXBlc0J5Q29udGluZW50AQIGQWZyaWNhCQCRAwIFAXIAAwkAzAgCCQELU3RyaW5nRW50cnkCCQEWa2V5UmVzVHlwZXNCeUNvbnRpbmVudAECB09jZWFuaWEJAJEDAgUBcgAEBQNuaWwAAAFpAQ9maXhTdGFrZWRQaWVjZXMBB2FkZHJlc3MDCQECIT0CCAUBaQZjYWxsZXIFDHJlc3RDb250cmFjdAkAAgECDUFjY2VzcyBkZW5pZWQEDHN0YWtlZFBpZWNlcwMJAAACBQdhZGRyZXNzAgAAAAQIbGFuZHNTdHIJAJ0IAgUPc3Rha2luZ0NvbnRyYWN0CQEVa2V5U3Rha2VkTGFuZHNCeU93bmVyAQUHYWRkcmVzcwQFbGFuZHMDCQEJaXNEZWZpbmVkAQUIbGFuZHNTdHIJAL0JAgkBBXZhbHVlAQUIbGFuZHNTdHICAV8FA25pbAoBB29uZUxhbmQCA2FjYwtsYW5kQXNzZXRJZAQFYXNzZXQJAQV2YWx1ZQEJAOwHAQkA2QQBBQtsYW5kQXNzZXRJZAQIbGFuZFNpemUJAJEDAgkAtQkCCAUFYXNzZXQLZGVzY3JpcHRpb24CAV8FC3JlY0xhbmRTaXplCQBkAgUDYWNjCQEPbnVtUGllY2VzQnlTaXplAQUIbGFuZFNpemUKAAIkbAUFbGFuZHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwAAAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBB29uZUxhbmQCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFUxpc3Qgc2l6ZSBleGNlZWRzIDEwMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiACMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQA6ADsAPAA9AD4APwBAAEEAQgBDAEQARQBGAEcASABJAEoASwBMAE0ATgBPAFAAUQBSAFMAVABVAFYAVwBYAFkAWgBbAFwAXQBeAF8AYABhAGIAYwBkCQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIJARZrZXlTdGFrZWRQaWVjZXNCeU93bmVyAQUHYWRkcmVzcwUMc3Rha2VkUGllY2VzBQNuaWwFDHN0YWtlZFBpZWNlcwFpAQ1zZXRDdXN0b21OYW1lAwdhc3NldElkCmN1c3RvbU5hbWUEdHlwZQQMcHJvbG9nQWN0aW9uCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECHEV4YWN0bHkgb25lIHBheW1lbnQgcmVxdWlyZWQEA3BtdAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAAAwkBAiE9AggFA3BtdAdhc3NldElkBQt1c2R0QXNzZXRJZAkAAgECGkFsbG93ZWQgVVNEVCBwYXltZW50IG9ubHkhAwkBAiE9AggFA3BtdAZhbW91bnQFDFJFTkFNSU5HQ09TVAkAAgEJAKwCAgISUGF5bWVudCBzaG91bGQgYmUgCQCkAwEFDFJFTkFNSU5HQ09TVAMJAQhjb250YWlucwIFCmN1c3RvbU5hbWUCAl9fCQACAQkArAICAh5OYW1lIHNob3VsZCBub3QgY29udGFpbiAnX18nOiAFCmN1c3RvbU5hbWUDCQBmAgkAsQIBBQpjdXN0b21OYW1lBQpNQVhOQU1FTEVOCQACAQkArAICAhlOYW1lIHRvbyBsb25nLCBtYXhMZW5ndGg9CQCkAwEFCk1BWE5BTUVMRU4EBGFkZHIJAKUIAQgFAWkMb3JpZ2luQ2FsbGVyBAdhY3Rpb25zBAckbWF0Y2gwBQR0eXBlAwkAAAICB0FDQ09VTlQFByRtYXRjaDAECnJldmVyc2VLZXkJARZrZXlDdXN0b21OYW1lVG9BZGRyZXNzAQUKY3VzdG9tTmFtZQQJbmFtZU93bmVyCQCiCAEFCnJldmVyc2VLZXkDCQEJaXNEZWZpbmVkAQUJbmFtZU93bmVyCQACAQkArAICAhlOYW1lIGFscmVhZHkgcmVnaXN0ZXJlZDogBQpjdXN0b21OYW1lBA1hZGRyVG9OYW1lS2V5CQEWa2V5QWRkcmVzc1RvQ3VzdG9tTmFtZQEFBGFkZHIEB29sZE5hbWUJAKIIAQUNYWRkclRvTmFtZUtleQQHZnJlZU9sZAMJAQlpc0RlZmluZWQBBQdvbGROYW1lCQDMCAIJAQtEZWxldGVFbnRyeQEJARZrZXlDdXN0b21OYW1lVG9BZGRyZXNzAQkBBXZhbHVlAQUHb2xkTmFtZQUDbmlsBQNuaWwJAM4IAgkAzQgCCQDNCAIFB2ZyZWVPbGQJAQtTdHJpbmdFbnRyeQIFDWFkZHJUb05hbWVLZXkFCmN1c3RvbU5hbWUJAQtTdHJpbmdFbnRyeQIFCnJldmVyc2VLZXkFBGFkZHIICQEWdXBkYXRlQWNjU3RhdHNJbnRlcm5hbAIFBGFkZHIFDHhwQ3VzdG9tTmFtZQJfMQMJAAACAgRMQU5EBQckbWF0Y2gwBAVhc3NldAkBBXZhbHVlAQkA7AcBCQDZBAEFB2Fzc2V0SWQEB3RpbWVLZXkJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQUHYXNzZXRJZAMJAQEhAQkBCWlzRGVmaW5lZAEJAJ8IAQUHdGltZUtleQkAAgEJAKwCAggFBWFzc2V0BG5hbWUCDiBpcyBub3Qgc3Rha2VkBAVvd25lcgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARVrZXlMYW5kQXNzZXRJZFRvT3duZXIBBQdhc3NldElkCQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCDCBpcyBvcnBoYW5lZAMJAQIhPQIFBW93bmVyBQRhZGRyCQACAQkArAICBQpMQU5EUFJFRklYAg0gaXMgbm90IHlvdXJzBApyZXZlcnNlS2V5CQEaa2V5TGFuZEN1c3RvbU5hbWVUb0Fzc2V0SWQBBQpjdXN0b21OYW1lBAluYW1lT3duZXIJAKIIAQUKcmV2ZXJzZUtleQMJAQlpc0RlZmluZWQBBQluYW1lT3duZXIJAAIBCQCsAgICGU5hbWUgYWxyZWFkeSByZWdpc3RlcmVkOiAFCmN1c3RvbU5hbWUEDmFzc2V0VG9OYW1lS2V5CQEaa2V5TGFuZEFzc2V0SWRUb0N1c3RvbU5hbWUBBQdhc3NldElkBAdvbGROYW1lCQCiCAEFDmFzc2V0VG9OYW1lS2V5BAdmcmVlT2xkAwkBCWlzRGVmaW5lZAEFB29sZE5hbWUJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBGmtleUxhbmRDdXN0b21OYW1lVG9Bc3NldElkAQkBBXZhbHVlAQUHb2xkTmFtZQUDbmlsBQNuaWwJAM4IAgkAzQgCCQDNCAIFB2ZyZWVPbGQJAQtTdHJpbmdFbnRyeQIFDmFzc2V0VG9OYW1lS2V5BQpjdXN0b21OYW1lCQELU3RyaW5nRW50cnkCBQpyZXZlcnNlS2V5BQdhc3NldElkCAkBFnVwZGF0ZUFjY1N0YXRzSW50ZXJuYWwCBQRhZGRyBQx4cEN1c3RvbU5hbWUCXzEDCQAAAgIERFVDSwUHJG1hdGNoMAQFYXNzZXQJAQV2YWx1ZQEJAOwHAQkA2QQBBQdhc3NldElkBAd0aW1lS2V5CQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFB2Fzc2V0SWQDAwkBASEBCQEJaXNEZWZpbmVkAQkAnwgBBQd0aW1lS2V5BgkBASEBCQEJaXNEZWZpbmVkAQkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQRhZGRyCQACAQkArAICCAUFYXNzZXQEbmFtZQIOIGlzIG5vdCBzdGFrZWQEBW93bmVyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBEGtleUR1Y2tJZFRvT3duZXIBBQdhc3NldElkCQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCDCBpcyBvcnBoYW5lZAMJAQIhPQIFBW93bmVyBQRhZGRyCQACAQkArAICBQpEVUNLUFJFRklYAg0gaXMgbm90IHlvdXJzBApyZXZlcnNlS2V5CQEaa2V5RHVja0N1c3RvbU5hbWVUb0Fzc2V0SWQBBQpjdXN0b21OYW1lBAluYW1lT3duZXIJAKIIAQUKcmV2ZXJzZUtleQMJAQlpc0RlZmluZWQBBQluYW1lT3duZXIJAAIBCQCsAgICGU5hbWUgYWxyZWFkeSByZWdpc3RlcmVkOiAFCmN1c3RvbU5hbWUEDmFzc2V0VG9OYW1lS2V5CQEaa2V5RHVja0Fzc2V0SWRUb0N1c3RvbU5hbWUBBQdhc3NldElkBAdvbGROYW1lCQCiCAEFDmFzc2V0VG9OYW1lS2V5BAdmcmVlT2xkAwkBCWlzRGVmaW5lZAEFB29sZE5hbWUJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBGmtleUR1Y2tDdXN0b21OYW1lVG9Bc3NldElkAQkBBXZhbHVlAQUHb2xkTmFtZQUDbmlsBQNuaWwJAM4IAgkAzQgCCQDNCAIFB2ZyZWVPbGQJAQtTdHJpbmdFbnRyeQIFDmFzc2V0VG9OYW1lS2V5BQpjdXN0b21OYW1lCQELU3RyaW5nRW50cnkCBQpyZXZlcnNlS2V5BQdhc3NldElkCAkBF3VwZGF0ZUR1Y2tTdGF0c0ludGVybmFsAgUHYXNzZXRJZAUMeHBDdXN0b21OYW1lAl8xCQACAQITVW5rbm93biBlbnRpdHkgdHlwZQkAlAoCCQDNCAIJAM0IAgUHYWN0aW9ucwkBDlNjcmlwdFRyYW5zZmVyAwUPZWNvbm9teUNvbnRyYWN0CAUDcG10BmFtb3VudAULdXNkdEFzc2V0SWQFDHByb2xvZ0FjdGlvbgAAAWkBDHNldFJlZmVycmFscwIJb2xkUGxheWVyCW5ld1BsYXllcgMJAQIhPQIIBQFpD2NhbGxlclB1YmxpY0tleQUDcHViCQACAQIRUGVybWlzc2lvbiBkZW5pZWQEDHByb2xvZ0FjdGlvbgkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAMJAQEhAQkBCWlzRGVmaW5lZAEJAKYIAQUJb2xkUGxheWVyCQACAQkArAICAhFJbnZhbGlkIGFkZHJlc3M6IAUJb2xkUGxheWVyAwkBASEBCQEJaXNEZWZpbmVkAQkApggBBQluZXdQbGF5ZXIJAAIBCQCsAgICEUludmFsaWQgYWRkcmVzczogBQluZXdQbGF5ZXIEB29sZHNLZXkJAQlrZXlPbGRpZXMABARvbGRzCQCiCAEFB29sZHNLZXkEBm9sZGllcwMJAQlpc0RlZmluZWQBBQRvbGRzCQC8CQIJAQV2YWx1ZQEFBG9sZHMCAV8FA25pbAMJAQ9jb250YWluc0VsZW1lbnQCBQZvbGRpZXMFCW5ld1BsYXllcgkAAgEJAKwCAgUJbmV3UGxheWVyAiYgaXMgbm90IG5ld2JpZSAoYWxyZWFkeSBoYXMgcmVmZXJyYWxzKQQIcmVmQnlLZXkJAQ9rZXlBZGRyZXNzUmVmQnkBBQluZXdQbGF5ZXIEBXJlZkJ5CQCiCAEFCHJlZkJ5S2V5AwMJAQlpc0RlZmluZWQBBQVyZWZCeQkBCWlzRGVmaW5lZAEJAKYIAQkBBXZhbHVlAQUFcmVmQnkHCQACAQkArAICCQCsAgIFCW5ld1BsYXllcgIUIGFscmVhZHkgaGFzIHJlZkJ5OiAJAQV2YWx1ZQEFBXJlZkJ5BAdyZWZzS2V5CQETa2V5QWRkcmVzc1JlZmVycmFscwEFCW9sZFBsYXllcgQEcmVmcwkAoggBBQdyZWZzS2V5BAlyZWZzQXJyYXkDCQEJaXNEZWZpbmVkAQUEcmVmcwkAvAkCCQEFdmFsdWUBBQRyZWZzAgFfBQNuaWwDCQEPY29udGFpbnNFbGVtZW50AgUJcmVmc0FycmF5BQluZXdQbGF5ZXIJAAIBCQCsAgIJAKwCAgkArAICBQlvbGRQbGF5ZXICEiBhbHJlYWR5IGNvbnRhaW5zIAUJbmV3UGxheWVyAhEgd2l0aGluIHJlZmVycmFscwQHbmV3UmVmcwkAugkCCQDNCAIFCXJlZnNBcnJheQUJbmV3UGxheWVyAgFfBAduZXdPbGRzAwkBD2NvbnRhaW5zRWxlbWVudAIFBm9sZGllcwUJb2xkUGxheWVyCQEFdmFsdWUBBQRvbGRzCQC6CQIJAM0IAgUGb2xkaWVzBQlvbGRQbGF5ZXICAV8JAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCBQhyZWZCeUtleQUJb2xkUGxheWVyCQDMCAIJAQtTdHJpbmdFbnRyeQIFB3JlZnNLZXkFB25ld1JlZnMJAMwIAgkBC1N0cmluZ0VudHJ5AgUHb2xkc0tleQUHbmV3T2xkcwkAzAgCBQxwcm9sb2dBY3Rpb24FA25pbAAAAWkBEGRpc3RyaWJ1dGVQb2ludHMFCHN0cmVuZ3RoCGFjY3VyYWN5CWludGVsbGVjdAllbmR1cmFuY2UJZGV4dGVyaXR5BAxwcm9sb2dBY3Rpb24JAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQEBGFkZHIJAKUIAQgFAWkMb3JpZ2luQ2FsbGVyBAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFBGFkZHICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQECmZyZWVLZXlBY2MJARFrZXlVc2VyRnJlZVBvaW50cwEFBGFkZHIEDWZyZWVQb2ludHNBY2MJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPc3Rha2luZ0NvbnRyYWN0BQpmcmVlS2V5QWNjAAAEC2ZyZWVLZXlEdWNrCQERa2V5RHVja0ZyZWVQb2ludHMBBQtkdWNrQXNzZXRJZAQOZnJlZVBvaW50c0R1Y2sJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPc3Rha2luZ0NvbnRyYWN0BQtmcmVlS2V5RHVjawAABAdzdW1GcmVlCQBkAgUNZnJlZVBvaW50c0FjYwUOZnJlZVBvaW50c0R1Y2sED3N1bVRvRGlzdHJpYnV0ZQkAZAIJAGQCCQBkAgkAZAIFCHN0cmVuZ3RoBQhhY2N1cmFjeQUJaW50ZWxsZWN0BQllbmR1cmFuY2UFCWRleHRlcml0eQMJAGYCBQ9zdW1Ub0Rpc3RyaWJ1dGUFB3N1bUZyZWUJAAIBCQCsAgIJAKwCAgIPVGhlcmUgYXJlIG9ubHkgCQCkAwEFB3N1bUZyZWUCGiBmcmVlIHBvaW50cyB0byBkaXN0cmlidXRlBAhjaGFyc0tleQkBDGtleUR1Y2tDaGFycwEFC2R1Y2tBc3NldElkBAVjaGFycwkAtQkCCQELdmFsdWVPckVsc2UCCQCdCAIFD3N0YWtpbmdDb250cmFjdAUIY2hhcnNLZXkCCTBfMF8wXzBfMAIBXwQGbmV3QWNjCQBlAgUNZnJlZVBvaW50c0FjYwUPc3VtVG9EaXN0cmlidXRlCQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIFCmZyZWVLZXlBY2MDCQBmAgAABQZuZXdBY2MAAAUGbmV3QWNjCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQtmcmVlS2V5RHVjawMJAGYCAAAFBm5ld0FjYwkAZAIFDmZyZWVQb2ludHNEdWNrBQZuZXdBY2MFDmZyZWVQb2ludHNEdWNrCQDMCAIJAQtTdHJpbmdFbnRyeQIFCGNoYXJzS2V5CQC5CQIJAMwIAgkApAMBCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBWNoYXJzBQxjaGFyU3RyZW5ndGgFCHN0cmVuZ3RoCQDMCAIJAKQDAQkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVjaGFycwUMY2hhckFjY3VyYWN5BQhhY2N1cmFjeQkAzAgCCQCkAwEJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFY2hhcnMFDWNoYXJJbnRlbGxlY3QFCWludGVsbGVjdAkAzAgCCQCkAwEJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFY2hhcnMFDWNoYXJFbmR1cmFuY2UFCWVuZHVyYW5jZQkAzAgCCQCkAwEJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFY2hhcnMFDWNoYXJEZXh0ZXJpdHkFCWRleHRlcml0eQUDbmlsAgFfCQDMCAIFDHByb2xvZ0FjdGlvbgUDbmlsAAABaQEcc3BsaXRCeUdsb2JhbFdlaWdodHNSRUFET05MWQEGYW1vdW50CQCUCgIFA25pbAkBEmdldE5lZWRlZE1hdGVyaWFscwEFBmFtb3VudAFpASRzcGxpdEJ5R2xvYmFsQW5kTG9jYWxXZWlnaHRzUkVBRE9OTFkDCW1hdEFtb3VudAlyZXNBbW91bnQIdGVycmFpbnMEDXRlcnJhaW5Db3VudHMJAQ1jb3VudFRlcnJhaW5zAQUIdGVycmFpbnMJAJQKAgUDbmlsCQCUCgIJARJnZXROZWVkZWRNYXRlcmlhbHMBBQltYXRBbW91bnQJARNkaXN0cmlidXRlQnlXZWlnaHRzAgUJcmVzQW1vdW50BQ10ZXJyYWluQ291bnRzAWkBE2dldEJhY2twYWNrUkVBRE9OTFkBC2R1Y2tBc3NldElkCQCUCgIFA25pbAkAuQkCCQELZ2V0QmFja3BhY2sBCQERa2V5QmFja3BhY2tCeUR1Y2sBBQtkdWNrQXNzZXRJZAIBOgFpARRnZXRXYXJlaG91c2VSRUFET05MWQELbGFuZEFzc2V0SWQEBWFzc2V0CQEFdmFsdWUBCQDsBwEJANkEAQULbGFuZEFzc2V0SWQECWxhbmRJbmRleAkAaQIJAQ9udW1QaWVjZXNCeVNpemUBCQCRAwIJALUJAggFBWFzc2V0C2Rlc2NyaXB0aW9uAgFfBQtyZWNMYW5kU2l6ZQUFU1NJWkUECmluZnJhTGV2ZWwJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBFmtleUluZnJhTGV2ZWxCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAAACQCUCgIFA25pbAkAugkCCQEMZ2V0V2FyZWhvdXNlAwkBEmtleVdhcmVob3VzZUJ5TGFuZAEFC2xhbmRBc3NldElkBQlsYW5kSW5kZXgFCmluZnJhTGV2ZWwCAToBaQEKc2F2ZUxhc3RUeAAEBmNhbGxlcggFAWkGY2FsbGVyAwkBASEBCQEPY29udGFpbnNFbGVtZW50AgkAzAgCBQt3bGdDb250cmFjdAkAzAgCBQ9lY29ub215Q29udHJhY3QJAMwIAgUSdG91cm5hbWVudENvbnRyYWN0CQDMCAIFDWFjcmVzQ29udHJhY3QFA25pbAUGY2FsbGVyCQACAQINQWNjZXNzIGRlbmllZAkAlAoCCQDMCAIJAQZwcm9sb2cBBQFpBQNuaWwAKgFpAQ91cGRhdGVEdWNrU3RhdHMCC2R1Y2tBc3NldElkB2RlbHRhWFADCQECIT0CCAUBaQZjYWxsZXIFD2Vjb25vbXlDb250cmFjdAkAAgECDUFjY2VzcyBkZW5pZWQJARd1cGRhdGVEdWNrU3RhdHNJbnRlcm5hbAIFC2R1Y2tBc3NldElkBQdkZWx0YVhQAWkBDnVwZGF0ZUFjY1N0YXRzAgRhZGRyB2RlbHRhWFADAwkBAiE9AggFAWkGY2FsbGVyBQ9lY29ub215Q29udHJhY3QJAQIhPQIIBQFpBmNhbGxlcgUNYWNyZXNDb250cmFjdAcJAAIBAg1BY2Nlc3MgZGVuaWVkCQEWdXBkYXRlQWNjU3RhdHNJbnRlcm5hbAIFBGFkZHIFB2RlbHRhWFABaQEJZXF1aXBEdWNrAQllcXVpcG1lbnQEDHByb2xvZ0FjdGlvbgkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQEYWRkcgkApQgBCAUBaQxvcmlnaW5DYWxsZXIEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUEYWRkcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAMJAQ9jaGVja1RvdXJuYW1lbnQBBQtkdWNrQXNzZXRJZAkAAgECGWVxdWlwRHVja19jaGVja1RvdXJuYW1lbnQDCQENY2hlY2tEZWxpdmVyeQEFC2R1Y2tBc3NldElkCQACAQIXZXF1aXBEdWNrX2NoZWNrRGVsaXZlcnkEBWVxS2V5CQEQa2V5RHVja0VxdWlwbWVudAEFC2R1Y2tBc3NldElkBAtjdXJyZW50U2VncwkAtQkCCQELdmFsdWVPckVsc2UCCQCiCAEFBWVxS2V5AhcsOyxfLDssXyw7LF8sOyxfLDssXyw7LAIBXwQFYnBLZXkJARFrZXlCYWNrcGFja0J5RHVjawEFC2R1Y2tBc3NldElkBAtjdXJyZW50UGFjawkBC2dldEJhY2twYWNrAQUFYnBLZXkEBW5ld0VxCQC1CQIFCWVxdWlwbWVudAIBXwMJAQIhPQIJAJADAQUFbmV3RXEFC05VTVNFR01FTlRTCQACAQIWV3JvbmcgZXF1aXBtZW50IHN0cmluZwQJdGVtcFByb2RCCQEGZHJlc3NCBAULY3VycmVudFNlZ3MJAQ5wcm9kU3RyVG9CeXRlcwEJAJEDAgULY3VycmVudFBhY2sFCWJwSWR4UHJvZAYFA25pbAQIc2VnQnBBdXgJAJEDAgkAtQkCCQCRAwIFBW5ld0VxBQtzZWdCYWNrcGFjawIBOwABBApidWZmRWZmZWN0AwkAAAIFCHNlZ0JwQXV4AgAAAAQEYXV4MAkAkQMCCQC1CQIFCHNlZ0JwQXV4AgEsAAADCQAAAgUEYXV4MAIAAAAEBmlkeENudAkAtQkCBQRhdXgwAgE6BANpZHgJAJEDAgUGaWR4Q250AAAEA2NudAkAkQMCBQZpZHhDbnQAAQMDAwMDCQAAAgUDaWR4AgIwNgYJAAACBQNpZHgCAjA3BgkAAAIFA2lkeAICMDgJAQIhPQIFA2NudAIABwkAZgIJAQ1wYXJzZUludFZhbHVlAQUDY250AAAHCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgkAtQkCCQCRAwIFEHByb2R1Y3Rpb25NYXRyaXgJAQ1wYXJzZUludFZhbHVlAQUDaWR4AgFfBQpySWR4RWZmZWN0AAAEBXN0YXRzCQEMZ2V0RHVja1N0YXRzBAUEdGhpcwULZHVja0Fzc2V0SWQFCmJ1ZmZFZmZlY3QGBAhuZXdQcm9kQgkBBmRyZXNzQgQFBW5ld0VxBQl0ZW1wUHJvZEIHBQVzdGF0cwQKbmV3UHJvZFN0cgkBDmJ5dGVzVG9Qcm9kU3RyAQUIbmV3UHJvZEIJAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCBQVlcUtleQUJZXF1aXBtZW50CQDMCAIJAQtTdHJpbmdFbnRyeQIFBWJwS2V5CQC6CQIJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUKYnBJZHhMZXZlbAkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeFJlcwkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeE1hdAkAzAgCBQpuZXdQcm9kU3RyBQNuaWwCAToJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDGtleUR1Y2tCdWZmcwEFC2R1Y2tBc3NldElkCQC5CQIJAMwIAgkApAMBCQCRAwIFBXN0YXRzAAcJAMwIAgkApAMBCQCRAwIFBXN0YXRzAAgJAMwIAgkApAMBCQCRAwIFBXN0YXRzAAkJAMwIAgkApAMBCQCRAwIFBXN0YXRzAAoJAMwIAgkApAMBCQCRAwIFBXN0YXRzAAsFA25pbAIBXwkAzAgCBQxwcm9sb2dBY3Rpb24FA25pbAAAAWkBD2ZvcnRpZmljYXRlTGFuZAILbGFuZEFzc2V0SWQEcGxhbgQMcHJvbG9nQWN0aW9uCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBARhZGRyCQClCAEIBQFpDG9yaWdpbkNhbGxlcgQLZHVja0Fzc2V0SWQJAQt2YWx1ZU9yRWxzZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUEYWRkcgIABAlkdWNrU3RhdHMJAQxnZXREdWNrU3RhdHMEBQR0aGlzBQtkdWNrQXNzZXRJZAAABwQHZm9ydEtleQkBF2tleUZvcnRpZmljYXRpb25zQnlMYW5kAQULbGFuZEFzc2V0SWQEDGN1cnJlbnRGb3J0cwkAtQkCCQELdmFsdWVPckVsc2UCCQCiCAEFB2ZvcnRLZXkCDDowXzE1OjBfMTg6MAIBXwQFYXNzZXQJAQV2YWx1ZQEJAOwHAQkA2QQBBQtsYW5kQXNzZXRJZAQJbGFuZEluZGV4CQBpAgkBD251bVBpZWNlc0J5U2l6ZQEJAJEDAgkAtQkCCAUFYXNzZXQLZGVzY3JpcHRpb24CAV8FC3JlY0xhbmRTaXplBQVTU0laRQQKaW5mcmFMZXZlbAkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEWa2V5SW5mcmFMZXZlbEJ5QXNzZXRJZAEFC2xhbmRBc3NldElkAAAEBXdoS2V5CQESa2V5V2FyZWhvdXNlQnlMYW5kAQULbGFuZEFzc2V0SWQEAndoCQEMZ2V0V2FyZWhvdXNlAwUFd2hLZXkFCWxhbmRJbmRleAUKaW5mcmFMZXZlbAQHY3VyTG9mdAkAtQkCCQCRAwIFAndoBQl3aElkeExPRlQCAV8EBGN1ck8JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQdjdXJMb2Z0BQt2b2xPY2N1cGllZAQEY3VyRgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFB2N1ckxvZnQFB3ZvbEZyZWUECG5ld0ZvcnRzCQC1CQIFBHBsYW4CAV8EDyR0MDEwMTIwNjEwMTMyMQkBBWZvcnRCBgUMY3VycmVudEZvcnRzCQEOcHJvZFN0clRvQnl0ZXMBCQCRAwIFAndoBQl3aElkeFByb2QFBGN1ck8FBGN1ckYGBQNuaWwECXRlbXBQcm9kQggFDyR0MDEwMTIwNjEwMTMyMQJfMQQFdGVtcE8IBQ8kdDAxMDEyMDYxMDEzMjECXzIEBXRlbXBGCAUPJHQwMTAxMjA2MTAxMzIxAl8zBA8kdDAxMDEzMjQxMDE0MjAJAQVmb3J0QgYFCG5ld0ZvcnRzBQl0ZW1wUHJvZEIFBXRlbXBPBQV0ZW1wRgcFCWR1Y2tTdGF0cwQIbmV3UHJvZEIIBQ8kdDAxMDEzMjQxMDE0MjACXzEEBG5ld08IBQ8kdDAxMDEzMjQxMDE0MjACXzIEBG5ld0YIBQ8kdDAxMDEzMjQxMDE0MjACXzMECm5ld1Byb2RTdHIJAQ5ieXRlc1RvUHJvZFN0cgEFCG5ld1Byb2RCBApuZXdMb2Z0U3RyCQC5CQIJAMwIAgkAkQMCBQdjdXJMb2Z0BQl2b2xMb2NrZWQJAMwIAgkApAMBBQRuZXdPCQDMCAIJAKQDAQUEbmV3RgkAzAgCCQCRAwIFB2N1ckxvZnQFCHZvbFRvdGFsBQNuaWwCAV8JAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCBQdmb3J0S2V5BQRwbGFuCQDMCAIJAQtTdHJpbmdFbnRyeQIFBXdoS2V5CQC6CQIJAMwIAgkAkQMCBQJ3aAULd2hJZHhMZXZlbHMJAMwIAgkAkQMCBQJ3aAUId2hJZHhSZXMJAMwIAgkAkQMCBQJ3aAUId2hJZHhNYXQJAMwIAgUKbmV3UHJvZFN0cgkAzAgCBQpuZXdMb2Z0U3RyBQNuaWwCAToJAMwIAgUMcHJvbG9nQWN0aW9uBQNuaWwAAAFpARNpbml0RHVja1RvdXJBdHRlbXB0AQtkdWNrQXNzZXRJZAMJAQIhPQIIBQFpBmNhbGxlcgUSdG91cm5hbWVudENvbnRyYWN0CQACAQINQWNjZXNzIGRlbmllZAQMcHJvbG9nQWN0aW9uCQEGcHJvbG9nAQUBaQQJa2V5SGVhbHRoCQENa2V5RHVja0hlYWx0aAEFC2R1Y2tBc3NldElkBAVtYXhIUAkBCW1heEhlYWx0aAEJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBDGtleUR1Y2tMZXZlbAEFC2R1Y2tBc3NldElkAAAECWN1ckhlYWx0aAkBC3ZhbHVlT3JFbHNlAgkAnwgBBQlrZXlIZWFsdGgFBW1heEhQBAljdXJMb2NLZXkJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAQLY3VyTG9jYXRpb24JAQt2YWx1ZU9yRWxzZQIJAKIIAQUJY3VyTG9jS2V5BQ9ERUZBVUxUTE9DQVRJT04EBmxhc3RJZAkBC3ZhbHVlT3JFbHNlAgkAmggCBRJ0b3VybmFtZW50Q29udHJhY3QFDWxhc3RUb3VySWRLZXkAAAQMdG91ckxvY2F0aW9uCQCsAgIJAKQDAQUGbGFzdElkAgRfVF8wCQCUCgIJAMwIAgUMcHJvbG9nQWN0aW9uCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEOa2V5U2F2ZWRIZWFsdGgBBQtkdWNrQXNzZXRJZAUJY3VySGVhbHRoCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQlrZXlIZWFsdGgFBW1heEhQCQDMCAIJAQtTdHJpbmdFbnRyeQIJARBrZXlTYXZlZExvY2F0aW9uAQULZHVja0Fzc2V0SWQFC2N1ckxvY2F0aW9uCQDMCAIJAQtTdHJpbmdFbnRyeQIFCWN1ckxvY0tleQUMdG91ckxvY2F0aW9uBQNuaWwFDHRvdXJMb2NhdGlvbgFpAQxicmVha0F0dGVtcHQABAxwcm9sb2dBY3Rpb24JAQZwcm9sb2cBBQFpBAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEJAKUIAQgFAWkGY2FsbGVyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkBAljdXJMb2NLZXkJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAQLY3VyTG9jYXRpb24JAQt2YWx1ZU9yRWxzZQIJAKIIAQUJY3VyTG9jS2V5BQ9ERUZBVUxUTE9DQVRJT04DCQECIT0CCQCRAwIJALUJAgULY3VyTG9jYXRpb24CAV8FCmxvY0lkeFR5cGUCAVQJAAIBAiJZb3VyIGR1Y2sgaXMgbm90IGluIHRoZSB0b3VybmFtZW50BAtzYXZlZEhlYWx0aAkBEUBleHRyTmF0aXZlKDEwNTUpAQkBDmtleVNhdmVkSGVhbHRoAQULZHVja0Fzc2V0SWQEDXNhdmVkTG9jYXRpb24JARFAZXh0ck5hdGl2ZSgxMDU4KQEJARBrZXlTYXZlZExvY2F0aW9uAQULZHVja0Fzc2V0SWQJAJQKAgkAzAgCBQxwcm9sb2dBY3Rpb24JAMwIAgkBDEludGVnZXJFbnRyeQIJAQ1rZXlEdWNrSGVhbHRoAQULZHVja0Fzc2V0SWQFC3NhdmVkSGVhbHRoCQDMCAIJAQtTdHJpbmdFbnRyeQIFCWN1ckxvY0tleQUNc2F2ZWRMb2NhdGlvbgUDbmlsBQtjdXJMb2NhdGlvbgFpARZleGl0VG91cm5hbWVudEludGVybmFsAQtkdWNrQXNzZXRJZAMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECDUFjY2VzcyBkZW5pZWQEC3NhdmVkSGVhbHRoCQERQGV4dHJOYXRpdmUoMTA1NSkBCQEOa2V5U2F2ZWRIZWFsdGgBBQtkdWNrQXNzZXRJZAQNc2F2ZWRMb2NhdGlvbgkBEUBleHRyTmF0aXZlKDEwNTgpAQkBEGtleVNhdmVkTG9jYXRpb24BBQtkdWNrQXNzZXRJZAkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQENa2V5RHVja0hlYWx0aAEFC2R1Y2tBc3NldElkBQtzYXZlZEhlYWx0aAkAzAgCCQELU3RyaW5nRW50cnkCCQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQFDXNhdmVkTG9jYXRpb24FA25pbAcBaQEUZXhpdERlbGl2ZXJ5SW50ZXJuYWwBC2R1Y2tBc3NldElkAwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQINQWNjZXNzIGRlbmllZAQBZQkBEmV4aXREZWxpdmVyeUNvbW1vbgEFC2R1Y2tBc3NldElkCQCUCgIJAM4IAggFAWUCXzEIBQFlAl8yBwFpARBhdXRvRXhpdERlbGl2ZXJ5AQtkdWNrQXNzZXRJZAMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECDUFjY2VzcyBkZW5pZWQEAWUJARJleGl0RGVsaXZlcnlDb21tb24BBQtkdWNrQXNzZXRJZAkAlAoCCAUBZQJfMQkAlAoCCAUBZQJfMwgFAWUCXzQBaQEOcHJlcGFyZVJvYmJlcnkCB21lc3NhZ2UDc2lnBAxwcm9sb2dBY3Rpb24JAQZwcm9sb2cBBQFpAwkBASEBCQDEEwMFB21lc3NhZ2UFA3NpZwUDcHViCQACAQIYc2lnbmF0dXJlIGRvZXMgbm90IG1hdGNoAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQIiZXhhY3RseSAxIHBheW1lbnQgbXVzdCBiZSBhdHRhY2hlZAQDcG10CQCRAwIIBQFpCHBheW1lbnRzAAAEBndsZ0FtdAgFA3BtdAZhbW91bnQDAwkBASEBCQEJaXNEZWZpbmVkAQgFA3BtdAdhc3NldElkBgkBAiE9AgkBBXZhbHVlAQgFA3BtdAdhc3NldElkBQp3bGdBc3NldElkCQACAQIVV0xHT0xEIHBheW1lbnRzIG9ubHkhBAVwYXJ0cwkAtQkCCQCwCQEFB21lc3NhZ2UCAXwDCQECIT0CCQCQAwEFBXBhcnRzAAIJAAIBAhRXcm9uZyBtZXNzYWdlIGZvcm1hdAQLZHVja0Fzc2V0SWQJAJEDAgUFcGFydHMAAAQHcm9iQ29zdAgJAQ5nZXRSb2JiZXJ5RGF0YQIFBHRoaXMFC2R1Y2tBc3NldElkAl8xAwkAZgIFB3JvYkNvc3QFBndsZ0FtdAkAAgEJAKwCAgkArAICCQCsAgICCFBheW1lbnQgCQCkAwEFBndsZ0FtdAIMIDwgcmVxdWlyZWQgCQCkAwEFB3JvYkNvc3QECmNhbmRpZGF0ZXMJALUJAgkAkQMCBQVwYXJ0cwABAgFfBANub3cIBQlsYXN0QmxvY2sJdGltZXN0YW1wBAlkdWNrU3RhdGUJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBE2tleUR1Y2tSb2JiZXJ5U3RhdGUBBQtkdWNrQXNzZXRJZAAABApsb2NrZWRMYW5kCQELdmFsdWVPckVsc2UCCQCiCAEJARNrZXlMb2NrZWRMYW5kQnlEdWNrAQULZHVja0Fzc2V0SWQCAAQHbGFuZEVUQQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQESa2V5TGFuZENvb2xkb3duRVRBAQUKbG9ja2VkTGFuZAAAAwMJAQIhPQIFCWR1Y2tTdGF0ZQULZHVja0lkeEZyZWUJAGYCBQdsYW5kRVRBBQNub3cHCQACAQkArAICAidZb3UgYWxyZWFkeSBzdGFydGVkIHJvYmJpbmcsIHdhaXQgdGlsbCAJAKQDAQUHbGFuZEVUQQoBB2NoZWNrZXICA2FjYwtsYW5kQXNzZXRJZAQFc3RhdGUJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBE2tleUxhbmRSb2JiZXJ5U3RhdGUBBQtsYW5kQXNzZXRJZAAABAtjb29sZG93bkVUQQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQESa2V5TGFuZENvb2xkb3duRVRBAQULbGFuZEFzc2V0SWQAAAMJAGYCBQVzdGF0ZQkAkAMBBRBsYW5kUm9iQ29vbGRvd25zCQACAQINSW52YWxpZCBzdGF0ZQMJAGYCBQNub3cFC2Nvb2xkb3duRVRBBApzdGFrZWRUaW1lCQELdmFsdWVPckVsc2UCCQCfCAEJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQULbGFuZEFzc2V0SWQAAAMJAGcCAAAFCnN0YWtlZFRpbWUFA2FjYwQBYQkBBXZhbHVlAQkA7AcBCQDZBAEFC2xhbmRBc3NldElkBAFkCQC1CQIIBQFhC2Rlc2NyaXB0aW9uAgFfBAZwaWVjZXMJAQ9udW1QaWVjZXNCeVNpemUBCQCRAwIFAWQFC3JlY0xhbmRTaXplBAxwcm9kdWN0aXZpdHkJAQxhcHBseUJvbnVzZXMCBQtsYW5kQXNzZXRJZAUGcGllY2VzBAlkZWx0YVRpbWUJAGUCBQNub3cFCnN0YWtlZFRpbWUECGF2YWlsUmVzCQBrAwUJZGVsdGFUaW1lCQBoAgUMcHJvZHVjdGl2aXR5BQZwaWVjZXMFCURBWU1JTExJUwMJAGYCBQ5NSU5fUkVTX1RPX1JPQgUIYXZhaWxSZXMFA2FjYwkAzQgCBQNhY2MFC2xhbmRBc3NldElkBQNhY2MECGZpbHRlcmVkCgACJGwFCmNhbmRpZGF0ZXMKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBB2NoZWNrZXICBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDEwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoDCQAAAgkAkAMBBQhmaWx0ZXJlZAAACQACAQIZTm8gY2FuZGlkYXRlcyBmb3Igcm9iYmVyeQQGcm5kSWR4CQEPZ2V0UmFuZG9tTnVtYmVyAwkAkAMBBQhmaWx0ZXJlZAUGaGVpZ2h0CQDLAQIFA3NpZwgFAWkNdHJhbnNhY3Rpb25JZAQLbGFuZEFzc2V0SWQJAJEDAgUIZmlsdGVyZWQFBnJuZElkeAkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQETa2V5TGFuZFJvYmJlcnlTdGF0ZQEFC2xhbmRBc3NldElkBQxyb2JJZHhMb2NrZWQJAMwIAgkBDEludGVnZXJFbnRyeQIJARJrZXlMYW5kQ29vbGRvd25FVEEBBQtsYW5kQXNzZXRJZAkAZAIFA25vdwkAkQMCBRBsYW5kUm9iQ29vbGRvd25zBQxyb2JJZHhMb2NrZWQJAMwIAgkBDEludGVnZXJFbnRyeQIJARNrZXlEdWNrUm9iYmVyeVN0YXRlAQULZHVja0Fzc2V0SWQFEGR1Y2tJZHhQcmVwYXJpbmcJAMwIAgkBC1N0cmluZ0VudHJ5AgkBE2tleUxvY2tlZExhbmRCeUR1Y2sBBQtkdWNrQXNzZXRJZAULbGFuZEFzc2V0SWQJAMwIAgUMcHJvbG9nQWN0aW9uBQNuaWwFC2xhbmRBc3NldElkAWkBB3JvYkxhbmQCB21lc3NhZ2UDc2lnBAxwcm9sb2dBY3Rpb24JAQZwcm9sb2cBBQFpAwkBASEBCQDEEwMFB21lc3NhZ2UFA3NpZwUDcHViCQACAQIYc2lnbmF0dXJlIGRvZXMgbm90IG1hdGNoBAh1c2VyQWRkcgkApQgBCAUBaQZjYWxsZXIEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUIdXNlckFkZHICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQEA25vdwgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAJQKAgkAzAgCBQxwcm9sb2dBY3Rpb24JAMwIAgkBDEludGVnZXJFbnRyeQIJARhrZXlMYXN0Um9iYmVyeVRpbWVCeUR1Y2sBBQtkdWNrQXNzZXRJZAUDbm93BQNuaWwAAAFpAQ5hY2NlcHREZWxpdmVyeQADCQEBIQEFEUtTX0FMTE9XX0RFTElWRVJZCQACAQIfRGVsaXZlcnkgZmVhdHVyZSBpcyB0dXJuZWQgb2ZmIQQMcHJvbG9nQWN0aW9uCQEGcHJvbG9nAQUBaQQIdXNlckFkZHIJAKUIAQgFAWkGY2FsbGVyBAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFCHVzZXJBZGRyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkBAlmdW5kVG90YWwJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPZWNvbm9teUNvbnRyYWN0BQ9kZWxpdmVyeUZ1bmRLZXkAAAQLbG9ja2VkVG90YWwJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPZWNvbm9teUNvbnRyYWN0BRFkZWxpdmVyeUxvY2tlZEtleQAAAwkAZgIFFU1JTl9VU0RUX0ZFRV9ERUxJVkVSWQkAZQIFCWZ1bmRUb3RhbAULbG9ja2VkVG90YWwJAAIBCQCsAgIJAKwCAgkArAICAiBEZWxpdmVyeSBpcyBub3QgYXZhaWxhYmxlLCBmdW5kPQkBCmZpeGVkUG9pbnQCBQlmdW5kVG90YWwABgIJLCBsb2NrZWQ9CQEKZml4ZWRQb2ludAIFC2xvY2tlZFRvdGFsAAYEA25vdwgFCWxhc3RCbG9jawl0aW1lc3RhbXAECGRlbGF5RVRBCQELdmFsdWVPckVsc2UCCQCfCAEJARZrZXlEZWxpdmVyeURlbGF5QnlEdWNrAQULZHVja0Fzc2V0SWQAAAMJAGYCBQhkZWxheUVUQQUDbm93CQACAQkArAICAipEZWxpdmVyeSBpcyBmb3JiaWRkZW4gZm9yIHlvdXIgZHVjayB1bnRpbCAJAKQDAQUIZGVsYXlFVEEDCQEPY2hlY2tUb3VybmFtZW50AQULZHVja0Fzc2V0SWQJAAIBAh5hY2NlcHREZWxpdmVyeV9jaGVja1RvdXJuYW1lbnQDCQENY2hlY2tEZWxpdmVyeQEFC2R1Y2tBc3NldElkCQACAQIcYWNjZXB0RGVsaXZlcnlfY2hlY2tEZWxpdmVyeQQObmV3TG9ja2VkVG90YWwJAQVhc0ludAEJAPwHBAUPZWNvbm9teUNvbnRyYWN0AhR1cGRhdGVEZWxpdmVyeUxvY2tlZAkAzAgCCQBkAgULbG9ja2VkVG90YWwFFU1JTl9VU0RUX0ZFRV9ERUxJVkVSWQUDbmlsBQNuaWwECWtleUhlYWx0aAkBDWtleUR1Y2tIZWFsdGgBBQtkdWNrQXNzZXRJZAQFbWF4SFAJAQltYXhIZWFsdGgBCQELdmFsdWVPckVsc2UCCQCfCAEJAQxrZXlEdWNrTGV2ZWwBBQtkdWNrQXNzZXRJZAAABAljdXJIZWFsdGgJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJa2V5SGVhbHRoBQVtYXhIUAQJY3VyTG9jS2V5CQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQEC2N1ckxvY2F0aW9uCQELdmFsdWVPckVsc2UCCQCiCAEFCWN1ckxvY0tleQUPREVGQVVMVExPQ0FUSU9OBBBkZWxpdmVyeUxvY2F0aW9uCQCsAgIJAKQDAQUDbm93AgRfRF8wCQCUCgIJAMwIAgUMcHJvbG9nQWN0aW9uCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEOa2V5U2F2ZWRIZWFsdGgBBQtkdWNrQXNzZXRJZAUJY3VySGVhbHRoCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQlrZXlIZWFsdGgFBW1heEhQCQDMCAIJAQtTdHJpbmdFbnRyeQIJARBrZXlTYXZlZExvY2F0aW9uAQULZHVja0Fzc2V0SWQFC2N1ckxvY2F0aW9uCQDMCAIJAQtTdHJpbmdFbnRyeQIFCWN1ckxvY0tleQUQZGVsaXZlcnlMb2NhdGlvbgUDbmlsCQCUCgIFEGRlbGl2ZXJ5TG9jYXRpb24FDm5ld0xvY2tlZFRvdGFsALZ+tSo=", "height": 2768161, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 7j34EtuKEvVTLxQkXEdxVXzBS6knWJGGToPdzcTbUEZ3 Next: 8RhRnoCrB9KL43ncxmWmtdKbZnjCHef1poLFPejkf8ES Diff:
Old | New | Differences | |
---|---|---|---|
184 | 184 | ||
185 | 185 | let aM = 50000 | |
186 | 186 | ||
187 | - | let aN = | |
188 | - | ||
189 | - | let aO = [" | |
190 | - | ||
191 | - | let aP = | |
192 | - | ||
193 | - | let aQ = | |
194 | - | ||
195 | - | let aR = [ | |
196 | - | ||
197 | - | let aS = | |
198 | - | ||
199 | - | let aT = | |
200 | - | ||
201 | - | let aU = | |
202 | - | ||
203 | - | let aV = | |
187 | + | let aN = 600000 | |
188 | + | ||
189 | + | let aO = ["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", "Mine L1", "Mine L2", "Mine L3", "Trap L1", "Trap L2", "Trap L3"] | |
190 | + | ||
191 | + | let aP = ["Americas", "Europe", "Asia", "Africa", "Oceania"] | |
192 | + | ||
193 | + | let aQ = 10000000 | |
194 | + | ||
195 | + | let aR = [15, 16, 17, 18, 19, 20] | |
196 | + | ||
197 | + | let aS = ["8_8_8_17_17_42_12_0_30_0,0,0,0,0,0,0_", "8_8_8_17_17_42_24_0_60_0,0,5,2,0,0,0_", "8_8_8_17_17_42_36_0_120_0,0,10,4,0,0,0_", "8_19_19_8_27_19_26_1_20_0,0,0,0,0,0,0_001", "8_19_19_8_27_19_52_1_40_0,0,0,0,0,0,0_001", "8_19_19_8_27_19_78_1_80_0,0,0,0,0,0,0_001", "8_8_8_8_8_60_13_2_2_0,0,0,0,0,0,0_011", "8_8_8_8_8_60_26_2_4_0,0,0,0,0,0,0_011", "8_8_8_8_8_60_39_2_8_0,0,0,0,0,0,0_011", "30_30_3_17_17_3_30_3_30_0,0,0,0,0,0,0_111", "30_30_3_17_17_3_60_3_50_0,0,0,0,0,0,0_111", "30_30_3_17_17_3_90_3_70_0,0,0,0,0,0,0_111", "18_18_10_18_18_18_11_4_10_0,0,0,0,0,0,0_201", "18_18_10_18_18_18_22_4_20_0,0,0,0,0,0,0_201", "18_18_10_18_18_18_33_4_30_0,0,0,0,0,0,0_201", "4_13_22_4_35_22_23_0_50,1,0_0,0,0,0,0,0,0_", "4_13_22_4_35_22_46_0_50,1,1_0,2,5,0,0,0,0_", "4_13_22_4_35_22_69_0_50,2,1_0,5,10,0,0,0,0_", "5_25_40_5_10_15_20_1_30,1,1_0,0,0,0,0,0,0_", "5_25_40_5_10_15_40_1_30,1,2_2,1,3,0,0,0,0_", "5_25_40_5_10_15_60_1_30,1,3_5,2,8,0,0,0,0_"] | |
198 | + | ||
199 | + | let aT = 6 | |
200 | + | ||
201 | + | let aU = 8 | |
202 | + | ||
203 | + | let aV = 9 | |
204 | 204 | ||
205 | 205 | let aW = 10 | |
206 | 206 | ||
207 | - | let aX = 0 | |
208 | - | ||
209 | - | let aY = 1 | |
210 | - | ||
211 | - | let aZ = 2 | |
212 | - | ||
213 | - | let ba = 3 | |
214 | - | ||
215 | - | let bb = 4 | |
216 | - | ||
217 | - | let bc = 0 | |
218 | - | ||
219 | - | let bd = 1 | |
220 | - | ||
221 | - | let be = 2 | |
222 | - | ||
223 | - | let bf = 3 | |
224 | - | ||
225 | - | let bg = 0 | |
226 | - | ||
227 | - | let bh = 1 | |
228 | - | ||
229 | - | let bi = 2 | |
230 | - | ||
231 | - | let bj = 3 | |
232 | - | ||
233 | - | let bk = 0 | |
234 | - | ||
235 | - | let bl = 1 | |
236 | - | ||
237 | - | let bm = 2 | |
238 | - | ||
239 | - | func bn (bo) = ("no_" + bo) | |
240 | - | ||
241 | - | ||
242 | - | func bp (bo) = ("lcna_" + bo) | |
243 | - | ||
244 | - | ||
245 | - | func bq (bo) = ("st_" + bo) | |
246 | - | ||
247 | - | ||
248 | - | func br (bs,bo) = makeString(["las", bs, bo], "_") | |
249 | - | ||
250 | - | ||
251 | - | func bt (bu,bo,bv) = ((((("sttao_" + bu) + "_") + bo) + "_") + bv) | |
252 | - | ||
253 | - | ||
254 | - | func bw (P) = ("wh_" + P) | |
255 | - | ||
256 | - | ||
257 | - | func bx (bo) = ("infraLevel_" + bo) | |
258 | - | ||
259 | - | ||
260 | - | func by (P) = ("fortifications_" + P) | |
261 | - | ||
262 | - | ||
263 | - | func bz (bo) = ("duckCustomNameByAssetId_" + bo) | |
264 | - | ||
265 | - | ||
266 | - | func bA (c) = ("accountCustomNameByAddr_" + c) | |
267 | - | ||
268 | - | ||
269 | - | func bB (c) = ("accRefBy_" + c) | |
270 | - | ||
271 | - | ||
272 | - | func bC (A) = ("onboardArtActivatedOnDuck_" + A) | |
273 | - | ||
274 | - | ||
275 | - | func bD (c) = ("onboardArtActivatedDuckBy_" + c) | |
276 | - | ||
277 | - | ||
278 | - | func bE (c) = ("accReferrals_" + c) | |
279 | - | ||
280 | - | ||
281 | - | func bF (bo) = ("duckOwner_" + bo) | |
282 | - | ||
283 | - | ||
284 | - | func bG (bv) = ("stakedDuckByOwner_" + bv) | |
285 | - | ||
286 | - | ||
287 | - | func bH (A) = ("backPack_" + A) | |
288 | - | ||
289 | - | ||
290 | - | func bI (A) = ("duckLocation_" + A) | |
291 | - | ||
292 | - | ||
293 | - | func bJ (bK) = ("%s%s__userGwlReleaseTime__" + bK) | |
294 | - | ||
295 | - | ||
296 | - | func bL () = "emergencyWarehouseProducts" | |
297 | - | ||
298 | - | ||
299 | - | let bM = "deliveryFund" | |
300 | - | ||
301 | - | let bN = "deliveryLocked" | |
302 | - | ||
303 | - | let bO = "%s__lastTourId" | |
304 | - | ||
305 | - | func bP (bQ) = ("%s%d__tourStaticData__" + toString(bQ)) | |
306 | - | ||
307 | - | ||
308 | - | func bR (bQ) = ("%s%d__tourDynamicData__" + toString(bQ)) | |
309 | - | ||
310 | - | ||
311 | - | func bS (bQ,A) = makeString(["%s%d%s__bestResultByTourAndDuck", toString(bQ), A], "__") | |
312 | - | ||
313 | - | ||
314 | - | let bT = 0 | |
315 | - | ||
316 | - | let bU = 1 | |
317 | - | ||
318 | - | let bV = 6 | |
319 | - | ||
320 | - | let bW = 1 | |
321 | - | ||
322 | - | func bX (bY,bQ) = { | |
323 | - | let bZ = split(valueOrErrorMessage(getString(bY, bP(bQ)), (("Error reading tournament " + toString(bQ)) + " data")), "__") | |
324 | - | let ca = split_4C(valueOrErrorMessage(getString(bY, bR(bQ)), (("Error reading tournament " + toString(bQ)) + " data")), "__") | |
325 | - | [bZ, ca] | |
326 | - | } | |
327 | - | ||
328 | - | ||
329 | - | func cb (bY,cc) = { | |
330 | - | let cd = valueOrElse(getInteger(bY, bO), 0) | |
331 | - | let ce = split(cc, "_") | |
207 | + | let aX = 10 | |
208 | + | ||
209 | + | let aY = 0 | |
210 | + | ||
211 | + | let aZ = 1 | |
212 | + | ||
213 | + | let ba = 2 | |
214 | + | ||
215 | + | let bb = 3 | |
216 | + | ||
217 | + | let bc = 4 | |
218 | + | ||
219 | + | let bd = 0 | |
220 | + | ||
221 | + | let be = 1 | |
222 | + | ||
223 | + | let bf = 2 | |
224 | + | ||
225 | + | let bg = 3 | |
226 | + | ||
227 | + | let bh = 0 | |
228 | + | ||
229 | + | let bi = 1 | |
230 | + | ||
231 | + | let bj = 2 | |
232 | + | ||
233 | + | let bk = 3 | |
234 | + | ||
235 | + | let bl = 0 | |
236 | + | ||
237 | + | let bm = 1 | |
238 | + | ||
239 | + | let bn = 2 | |
240 | + | ||
241 | + | func bo (bp) = ("no_" + bp) | |
242 | + | ||
243 | + | ||
244 | + | func bq (bp) = ("lcna_" + bp) | |
245 | + | ||
246 | + | ||
247 | + | func br (bp) = ("st_" + bp) | |
248 | + | ||
249 | + | ||
250 | + | func bs (bt,bp) = makeString(["las", bt, bp], "_") | |
251 | + | ||
252 | + | ||
253 | + | func bu (bv,bp,bw) = ((((("sttao_" + bv) + "_") + bp) + "_") + bw) | |
254 | + | ||
255 | + | ||
256 | + | func bx (P) = ("wh_" + P) | |
257 | + | ||
258 | + | ||
259 | + | func by (bp) = ("infraLevel_" + bp) | |
260 | + | ||
261 | + | ||
262 | + | func bz (P) = ("fortifications_" + P) | |
263 | + | ||
264 | + | ||
265 | + | func bA (bp) = ("duckCustomNameByAssetId_" + bp) | |
266 | + | ||
267 | + | ||
268 | + | func bB (c) = ("accountCustomNameByAddr_" + c) | |
269 | + | ||
270 | + | ||
271 | + | func bC (c) = ("accRefBy_" + c) | |
272 | + | ||
273 | + | ||
274 | + | func bD (A) = ("onboardArtActivatedOnDuck_" + A) | |
275 | + | ||
276 | + | ||
277 | + | func bE (c) = ("onboardArtActivatedDuckBy_" + c) | |
278 | + | ||
279 | + | ||
280 | + | func bF (c) = ("accReferrals_" + c) | |
281 | + | ||
282 | + | ||
283 | + | func bG (bp) = ("duckOwner_" + bp) | |
284 | + | ||
285 | + | ||
286 | + | func bH (bw) = ("stakedDuckByOwner_" + bw) | |
287 | + | ||
288 | + | ||
289 | + | func bI (A) = ("backPack_" + A) | |
290 | + | ||
291 | + | ||
292 | + | func bJ (A) = ("duckLocation_" + A) | |
293 | + | ||
294 | + | ||
295 | + | func bK (bL) = ("%s%s__userGwlReleaseTime__" + bL) | |
296 | + | ||
297 | + | ||
298 | + | func bM () = "emergencyWarehouseProducts" | |
299 | + | ||
300 | + | ||
301 | + | let bN = "deliveryFund" | |
302 | + | ||
303 | + | let bO = "deliveryLocked" | |
304 | + | ||
305 | + | let bP = "%s__lastTourId" | |
306 | + | ||
307 | + | func bQ (bR) = ("%s%d__tourStaticData__" + toString(bR)) | |
308 | + | ||
309 | + | ||
310 | + | func bS (bR) = ("%s%d__tourDynamicData__" + toString(bR)) | |
311 | + | ||
312 | + | ||
313 | + | func bT (bR,A) = makeString(["%s%d%s__bestResultByTourAndDuck", toString(bR), A], "__") | |
314 | + | ||
315 | + | ||
316 | + | let bU = 0 | |
317 | + | ||
318 | + | let bV = 1 | |
319 | + | ||
320 | + | let bW = 6 | |
321 | + | ||
322 | + | let bX = 1 | |
323 | + | ||
324 | + | func bY (bZ,bR) = { | |
325 | + | let ca = split(valueOrErrorMessage(getString(bZ, bQ(bR)), (("Error reading tournament " + toString(bR)) + " data")), "__") | |
326 | + | let cb = split_4C(valueOrErrorMessage(getString(bZ, bS(bR)), (("Error reading tournament " + toString(bR)) + " data")), "__") | |
327 | + | [ca, cb] | |
328 | + | } | |
329 | + | ||
330 | + | ||
331 | + | func cc (bZ,cd) = { | |
332 | + | let ce = valueOrElse(getInteger(bZ, bP), 0) | |
333 | + | let cf = split(cd, "_") | |
332 | 334 | let ax = lastBlock.timestamp | |
333 | - | let | |
334 | - | let | |
335 | - | let | |
336 | - | if (if (if (( | |
337 | - | then (parseIntValue( | |
335 | + | let cg = bY(bZ, ce) | |
336 | + | let ca = cg[bU] | |
337 | + | let cb = cg[bV] | |
338 | + | if (if (if ((cf[bm] == "T")) | |
339 | + | then (parseIntValue(cf[bl]) == ce) | |
338 | 340 | else false) | |
339 | - | then ( | |
341 | + | then (cb[bX] == "INPROGRESS") | |
340 | 342 | else false) | |
341 | - | then (parseIntValue( | |
343 | + | then (parseIntValue(ca[bW]) > ax) | |
342 | 344 | else false | |
343 | 345 | } | |
344 | 346 | ||
345 | 347 | ||
346 | - | func cg (ch) = (parseIntValue(ch[aS]) * aP) | |
347 | - | ||
348 | - | ||
349 | - | let ci = false | |
350 | - | ||
351 | - | let cj = false | |
352 | - | ||
353 | - | let ck = true | |
354 | - | ||
355 | - | let cl = take(drop(this.bytes, 1), 1) | |
356 | - | ||
357 | - | let cm = { | |
358 | - | let cn = cl | |
359 | - | if ((base58'2W' == cn)) | |
348 | + | func ch (cd) = { | |
349 | + | let cf = split(cd, "_") | |
350 | + | let ax = lastBlock.timestamp | |
351 | + | let ci = parseIntValue(cf[bl]) | |
352 | + | let cj = parseIntValue(cf[bn]) | |
353 | + | if (if ((cf[bm] == "D")) | |
354 | + | then (ax > (ci + aN)) | |
355 | + | else false) | |
356 | + | then (3 >= cj) | |
357 | + | else false | |
358 | + | } | |
359 | + | ||
360 | + | ||
361 | + | func ck (cd) = { | |
362 | + | let cl = split(cd, "_")[bm] | |
363 | + | if ((cl != "T")) | |
364 | + | then (cl != "D") | |
365 | + | else false | |
366 | + | } | |
367 | + | ||
368 | + | ||
369 | + | func cm (bZ,cd) = { | |
370 | + | let ce = valueOrElse(getInteger(bZ, bP), 0) | |
371 | + | let cf = split(cd, "_") | |
372 | + | let ax = lastBlock.timestamp | |
373 | + | let cg = bY(bZ, ce) | |
374 | + | let ca = cg[bU] | |
375 | + | let cb = cg[bV] | |
376 | + | let cl = cf[bm] | |
377 | + | if (if ((cl != "T")) | |
378 | + | then (cl != "D") | |
379 | + | else false) | |
380 | + | then true | |
381 | + | else !(if (if (if ((cf[bm] == "T")) | |
382 | + | then (parseIntValue(cf[bl]) == ce) | |
383 | + | else false) | |
384 | + | then (cb[bX] == "INPROGRESS") | |
385 | + | else false) | |
386 | + | then (parseIntValue(ca[bW]) > ax) | |
387 | + | else false) | |
388 | + | } | |
389 | + | ||
390 | + | ||
391 | + | func cn (co) = (parseIntValue(co[aT]) * aQ) | |
392 | + | ||
393 | + | ||
394 | + | func cp (cq,cr) = throw(((("Cheat attempt: oldLoc=" + cq) + ", newLoc=") + cr)) | |
395 | + | ||
396 | + | ||
397 | + | let cs = false | |
398 | + | ||
399 | + | let ct = false | |
400 | + | ||
401 | + | let cu = true | |
402 | + | ||
403 | + | let cv = take(drop(this.bytes, 1), 1) | |
404 | + | ||
405 | + | let cw = { | |
406 | + | let cx = cv | |
407 | + | if ((base58'2W' == cx)) | |
360 | 408 | then base58'9wc3LXNA4TEBsXyKtoLE9mrbDD7WMHXvXrCjZvabLAsi' | |
361 | - | else if ((base58'2T' == | |
409 | + | else if ((base58'2T' == cx)) | |
362 | 410 | then base58'6mWwf9mZBjVgkC54idpyaZLQfAosD914wT8fGf2iiY63' | |
363 | 411 | else throw("Unknown chain") | |
364 | 412 | } | |
365 | 413 | ||
366 | - | let | |
367 | - | let | |
368 | - | if ((base58'2W' == | |
414 | + | let cy = { | |
415 | + | let cx = cv | |
416 | + | if ((base58'2W' == cx)) | |
369 | 417 | then "3PQCuvFbvh4LkPUnrnU1z3jnbA1p9m3WNhv" | |
370 | - | else if ((base58'2T' == | |
418 | + | else if ((base58'2T' == cx)) | |
371 | 419 | then "3MumkGGztCKAXpWDqxkddofqXSUbqQkvSJy" | |
372 | 420 | else throw("Unknown chain") | |
373 | 421 | } | |
374 | 422 | ||
375 | - | let | |
376 | - | let | |
377 | - | if ((base58'2W' == | |
423 | + | let cz = { | |
424 | + | let cx = cv | |
425 | + | if ((base58'2W' == cx)) | |
378 | 426 | then 10000000000 | |
379 | - | else if ((base58'2T' == | |
427 | + | else if ((base58'2T' == cx)) | |
380 | 428 | then 100000000 | |
381 | 429 | else throw("Unknown chain") | |
382 | 430 | } | |
383 | 431 | ||
384 | - | let | |
385 | - | let | |
386 | - | if ((base58'2W' == | |
432 | + | let cA = { | |
433 | + | let cx = cv | |
434 | + | if ((base58'2W' == cx)) | |
387 | 435 | then 86400000 | |
388 | - | else if ((base58'2T' == | |
436 | + | else if ((base58'2T' == cx)) | |
389 | 437 | then 60000 | |
390 | 438 | else throw("Unknown chain") | |
391 | 439 | } | |
392 | 440 | ||
393 | - | let | |
394 | - | ||
395 | - | let | |
396 | - | ||
397 | - | let | |
398 | - | ||
399 | - | let | |
400 | - | ||
401 | - | let | |
402 | - | ||
403 | - | let | |
404 | - | ||
405 | - | let | |
406 | - | ||
407 | - | let | |
408 | - | ||
409 | - | let | |
410 | - | ||
411 | - | func | |
412 | - | ||
413 | - | ||
414 | - | let | |
415 | - | ||
416 | - | let | |
417 | - | ||
418 | - | let | |
419 | - | ||
420 | - | let | |
421 | - | ||
422 | - | let | |
423 | - | ||
424 | - | let | |
425 | - | ||
426 | - | func | |
427 | - | ||
428 | - | ||
429 | - | func | |
430 | - | ||
431 | - | ||
432 | - | func | |
433 | - | ||
434 | - | ||
435 | - | func | |
436 | - | ||
437 | - | ||
438 | - | let | |
439 | - | ||
440 | - | let | |
441 | - | ||
442 | - | let an = | |
443 | - | ||
444 | - | let | |
445 | - | ||
446 | - | let | |
447 | - | ||
448 | - | let | |
449 | - | ||
450 | - | let | |
451 | - | ||
452 | - | let | |
453 | - | ||
454 | - | let | |
455 | - | ||
456 | - | let | |
457 | - | ||
458 | - | let | |
459 | - | ||
460 | - | let | |
461 | - | ||
462 | - | let | |
463 | - | ||
464 | - | let | |
465 | - | ||
466 | - | let | |
467 | - | ||
468 | - | let | |
469 | - | ||
470 | - | let | |
471 | - | ||
472 | - | func | |
473 | - | ||
474 | - | ||
475 | - | func | |
476 | - | ||
477 | - | ||
478 | - | func | |
479 | - | ||
480 | - | ||
481 | - | func | |
482 | - | ||
483 | - | ||
484 | - | func | |
485 | - | ||
486 | - | ||
487 | - | func | |
488 | - | let | |
489 | - | if ($isInstanceOf( | |
441 | + | let cB = "__" | |
442 | + | ||
443 | + | let cC = 1000000 | |
444 | + | ||
445 | + | let cD = 100000000 | |
446 | + | ||
447 | + | let cE = 25 | |
448 | + | ||
449 | + | let cF = 100 | |
450 | + | ||
451 | + | let cG = 225 | |
452 | + | ||
453 | + | let cH = 400 | |
454 | + | ||
455 | + | let cI = 625 | |
456 | + | ||
457 | + | let cJ = [0, 1, 2, 3, 4, 5] | |
458 | + | ||
459 | + | func cK (cL,cM) = valueOrErrorMessage(getString(cL, cM), makeString(["mandatory ", toString(cL), ".", cM, " is not defined"], "")) | |
460 | + | ||
461 | + | ||
462 | + | let cN = 1 | |
463 | + | ||
464 | + | let cO = 2 | |
465 | + | ||
466 | + | let cP = 3 | |
467 | + | ||
468 | + | let cQ = 4 | |
469 | + | ||
470 | + | let cR = 7 | |
471 | + | ||
472 | + | let cS = 8 | |
473 | + | ||
474 | + | func cT () = "%s__restConfig" | |
475 | + | ||
476 | + | ||
477 | + | func cU () = "%s__restAddr" | |
478 | + | ||
479 | + | ||
480 | + | func cV (cW) = split_4C(cK(cW, cT()), cB) | |
481 | + | ||
482 | + | ||
483 | + | func cX (cY,cZ) = valueOrErrorMessage(addressFromString(cY[cZ]), ("Rest cfg doesn't contain address at index " + toString(cZ))) | |
484 | + | ||
485 | + | ||
486 | + | let da = addressFromStringValue(valueOrElse(getString(this, cU()), cy)) | |
487 | + | ||
488 | + | let cY = cV(da) | |
489 | + | ||
490 | + | let an = cX(cY, cN) | |
491 | + | ||
492 | + | let db = cX(cY, cO) | |
493 | + | ||
494 | + | let dc = cX(cY, cP) | |
495 | + | ||
496 | + | let dd = cX(cY, cQ) | |
497 | + | ||
498 | + | let de = cX(cY, cR) | |
499 | + | ||
500 | + | let df = cX(cY, cS) | |
501 | + | ||
502 | + | let dg = 0 | |
503 | + | ||
504 | + | let dh = 1 | |
505 | + | ||
506 | + | let di = 2 | |
507 | + | ||
508 | + | let dj = 3 | |
509 | + | ||
510 | + | let dk = "wlg_assetId" | |
511 | + | ||
512 | + | let dl = valueOrErrorMessage(getBinary(dd, dk), "WLGOLD is not issued yet") | |
513 | + | ||
514 | + | let dm = "acresAssetId" | |
515 | + | ||
516 | + | let dn = valueOrErrorMessage(getBinary(df, dm), "ACRES is not issued yet") | |
517 | + | ||
518 | + | let do = 2 | |
519 | + | ||
520 | + | func dp (cL) = ("finishBlockForAddr_" + cL) | |
521 | + | ||
522 | + | ||
523 | + | func dq () = "resTypesProportions" | |
524 | + | ||
525 | + | ||
526 | + | func dr (ds) = ("resTypesByContinent_" + ds) | |
527 | + | ||
528 | + | ||
529 | + | func dt (bw) = ("stakedLandsByOwner_" + bw) | |
530 | + | ||
531 | + | ||
532 | + | func du (bw) = ("stakedPiecesByOwner_" + bw) | |
533 | + | ||
534 | + | ||
535 | + | func dv (dw) = { | |
536 | + | let cx = dw | |
537 | + | if ($isInstanceOf(cx, "String")) | |
490 | 538 | then { | |
491 | - | let | |
492 | - | | |
539 | + | let dx = cx | |
540 | + | dx | |
493 | 541 | } | |
494 | 542 | else throw("fail to cast into String") | |
495 | 543 | } | |
496 | 544 | ||
497 | 545 | ||
498 | - | func | |
499 | - | let | |
500 | - | if ($isInstanceOf( | |
546 | + | func dy (dw) = { | |
547 | + | let cx = dw | |
548 | + | if ($isInstanceOf(cx, "Int")) | |
501 | 549 | then { | |
502 | - | let | |
503 | - | | |
550 | + | let dz = cx | |
551 | + | dz | |
504 | 552 | } | |
505 | 553 | else throw("fail to cast into Int") | |
506 | 554 | } | |
507 | 555 | ||
508 | 556 | ||
509 | - | func | |
510 | - | let | |
511 | - | if ($isInstanceOf( | |
557 | + | func dA (dw) = { | |
558 | + | let cx = dw | |
559 | + | if ($isInstanceOf(cx, "Boolean")) | |
512 | 560 | then { | |
513 | - | let | |
514 | - | | |
561 | + | let dx = cx | |
562 | + | dx | |
515 | 563 | } | |
516 | 564 | else throw("fail to cast into Boolean") | |
517 | 565 | } | |
518 | 566 | ||
519 | 567 | ||
520 | - | func dr (ds) = { | |
521 | - | let cn = ds | |
522 | - | if (("S" == cn)) | |
523 | - | then cu | |
524 | - | else if (("M" == cn)) | |
525 | - | then cv | |
526 | - | else if (("L" == cn)) | |
527 | - | then cw | |
528 | - | else if (("XL" == cn)) | |
529 | - | then cx | |
530 | - | else if (("XXL" == cn)) | |
531 | - | then cy | |
568 | + | func dB (dC) = { | |
569 | + | let cx = dC | |
570 | + | if ($isInstanceOf(cx, "(String, Int)")) | |
571 | + | then { | |
572 | + | let dD = cx | |
573 | + | dD | |
574 | + | } | |
575 | + | else throw("fail to cast into (String, Int)") | |
576 | + | } | |
577 | + | ||
578 | + | ||
579 | + | func dE (dF) = { | |
580 | + | let cx = dF | |
581 | + | if (("S" == cx)) | |
582 | + | then cE | |
583 | + | else if (("M" == cx)) | |
584 | + | then cF | |
585 | + | else if (("L" == cx)) | |
586 | + | then cG | |
587 | + | else if (("XL" == cx)) | |
588 | + | then cH | |
589 | + | else if (("XXL" == cx)) | |
590 | + | then cI | |
532 | 591 | else throw("Unknown land size") | |
533 | 592 | } | |
534 | 593 | ||
535 | 594 | ||
536 | - | func | |
537 | - | ||
538 | - | ||
539 | - | func | |
540 | - | ||
541 | - | ||
542 | - | func | |
543 | - | ||
544 | - | ||
545 | - | func | |
546 | - | let | |
547 | - | let | |
548 | - | let | |
549 | - | (((toString(( | |
550 | - | } | |
551 | - | ||
552 | - | ||
553 | - | func | |
554 | - | let | |
555 | - | let | |
556 | - | (toInt( | |
557 | - | } | |
558 | - | ||
559 | - | ||
560 | - | let | |
561 | - | let | |
562 | - | if ((base58'2W' == | |
595 | + | func dG (dx) = isDefined(parseInt(dx)) | |
596 | + | ||
597 | + | ||
598 | + | func dH () = "contractsBlocked" | |
599 | + | ||
600 | + | ||
601 | + | func dI (c) = ("lastTxIdByUser_" + c) | |
602 | + | ||
603 | + | ||
604 | + | func dJ (dC,dK) = { | |
605 | + | let dL = pow(10, 0, dK, 0, 0, DOWN) | |
606 | + | let dM = toString((dC % dL)) | |
607 | + | let dN = drop(toString(dL), (1 + size(dM))) | |
608 | + | (((toString((dC / dL)) + ".") + dN) + dM) | |
609 | + | } | |
610 | + | ||
611 | + | ||
612 | + | func dO (dP,dQ,dR) = { | |
613 | + | let dS = value(blockInfoByHeight(dQ)) | |
614 | + | let dT = sha256((value(dS.vrf) + dR)) | |
615 | + | (toInt(dT) % dP) | |
616 | + | } | |
617 | + | ||
618 | + | ||
619 | + | let dU = { | |
620 | + | let cx = cv | |
621 | + | if ((base58'2W' == cx)) | |
563 | 622 | then addressFromStringValue("3PEktVux2RhchSN63DsDo4b4mz4QqzKSeDv") | |
564 | - | else if ((base58'2T' == | |
623 | + | else if ((base58'2T' == cx)) | |
565 | 624 | then this | |
566 | 625 | else throw("Unknown chain") | |
567 | 626 | } | |
568 | 627 | ||
569 | - | let | |
570 | - | let | |
571 | - | if ((base58'2W' == | |
628 | + | let dV = { | |
629 | + | let cx = cv | |
630 | + | if ((base58'2W' == cx)) | |
572 | 631 | then addressFromStringValue("3PDVuU45H7Eh5dmtNbnRNRStGwULA7NY6Hb") | |
573 | - | else if ((base58'2T' == | |
632 | + | else if ((base58'2T' == cx)) | |
574 | 633 | then this | |
575 | 634 | else throw("Unknown chain") | |
576 | 635 | } | |
577 | 636 | ||
578 | - | let | |
579 | - | let | |
580 | - | if ((base58'2W' == | |
581 | - | then if ( | |
637 | + | let dW = { | |
638 | + | let cx = cv | |
639 | + | if ((base58'2W' == cx)) | |
640 | + | then if (cs) | |
582 | 641 | then base58'CWsMtTZC5BjjoL4Q1ayW4Wwb1ehGACQB6DrKyPgotKfm' | |
583 | 642 | else base58'6LfPuKJjLgekmncBhMg2LZyMTNVzZBccXR28ySXm9uXD' | |
584 | - | else if ((base58'2T' == | |
643 | + | else if ((base58'2T' == cx)) | |
585 | 644 | then base58'6LfPuKJjLgekmncBhMg2LZyMTNVzZBccXR28ySXm9uXD' | |
586 | 645 | else throw("Unknown chain") | |
587 | 646 | } | |
588 | 647 | ||
589 | - | let dL = base64'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==' | |
590 | - | ||
591 | - | let dM = 300000 | |
592 | - | ||
593 | - | let dN = 600000 | |
594 | - | ||
595 | - | let dO = 5000000 | |
596 | - | ||
597 | - | let dP = 50 | |
598 | - | ||
599 | - | let dQ = 10000000 | |
600 | - | ||
601 | - | let dR = { | |
602 | - | let cn = cl | |
603 | - | if ((base58'2W' == cn)) | |
648 | + | let dX = base64'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==' | |
649 | + | ||
650 | + | let dY = 300000 | |
651 | + | ||
652 | + | let dZ = 5000000 | |
653 | + | ||
654 | + | let ea = 50 | |
655 | + | ||
656 | + | let eb = 10000000 | |
657 | + | ||
658 | + | let ec = { | |
659 | + | let cx = cv | |
660 | + | if ((base58'2W' == cx)) | |
604 | 661 | then 252289527462 | |
605 | - | else if ((base58'2T' == | |
662 | + | else if ((base58'2T' == cx)) | |
606 | 663 | then 2522895274 | |
607 | 664 | else throw("Unknown chain") | |
608 | 665 | } | |
609 | 666 | ||
610 | - | let | |
611 | - | let | |
612 | - | if ((base58'2W' == | |
667 | + | let ed = { | |
668 | + | let cx = cv | |
669 | + | if ((base58'2W' == cx)) | |
613 | 670 | then 250000000 | |
614 | - | else if ((base58'2T' == | |
671 | + | else if ((base58'2T' == cx)) | |
615 | 672 | then 250000000 | |
616 | 673 | else throw("Unknown chain") | |
617 | 674 | } | |
618 | 675 | ||
619 | - | let | |
620 | - | ||
621 | - | let | |
622 | - | ||
623 | - | let | |
624 | - | ||
625 | - | let | |
626 | - | ||
627 | - | let | |
628 | - | ||
629 | - | let | |
630 | - | ||
631 | - | let | |
632 | - | ||
633 | - | let | |
634 | - | ||
635 | - | func | |
636 | - | ||
637 | - | ||
638 | - | func | |
639 | - | ||
640 | - | ||
641 | - | func | |
642 | - | ||
643 | - | ||
644 | - | func | |
645 | - | ||
646 | - | ||
647 | - | func | |
648 | - | ||
649 | - | ||
650 | - | func | |
651 | - | ||
652 | - | ||
653 | - | func | |
654 | - | ||
655 | - | ||
656 | - | func | |
657 | - | ||
658 | - | ||
659 | - | let | |
660 | - | ||
661 | - | let | |
662 | - | ||
663 | - | let | |
664 | - | ||
665 | - | let | |
666 | - | ||
667 | - | let | |
668 | - | ||
669 | - | let | |
670 | - | ||
671 | - | let | |
672 | - | ||
673 | - | func | |
674 | - | ||
675 | - | ||
676 | - | func | |
677 | - | let | |
678 | - | then ((( | |
679 | - | else -((((-( | |
680 | - | ( | |
681 | - | } | |
682 | - | ||
683 | - | ||
684 | - | func | |
685 | - | let | |
686 | - | if ((0 >= | |
676 | + | let ee = 2500000000 | |
677 | + | ||
678 | + | let ef = toBigInt(5) | |
679 | + | ||
680 | + | let eg = toBigInt(20) | |
681 | + | ||
682 | + | let eh = toBigInt((20 * 20)) | |
683 | + | ||
684 | + | let ei = toBigInt(((20 * 20) * 20)) | |
685 | + | ||
686 | + | let ej = toBigInt((((20 * 20) * 20) * 20)) | |
687 | + | ||
688 | + | let ek = toBigInt(((((20 * 20) * 20) * 20) * 20)) | |
689 | + | ||
690 | + | let el = 500 | |
691 | + | ||
692 | + | func em () = "nextLandNum" | |
693 | + | ||
694 | + | ||
695 | + | func en (eo) = ("lcn_" + eo) | |
696 | + | ||
697 | + | ||
698 | + | func ep (eq) = ("la_" + eq) | |
699 | + | ||
700 | + | ||
701 | + | func er (bp,bw) = ((("ilao_" + bp) + "_") + bw) | |
702 | + | ||
703 | + | ||
704 | + | func es (eq) = ("lo_" + eq) | |
705 | + | ||
706 | + | ||
707 | + | func et (eo) = ("duckByCustomName_" + eo) | |
708 | + | ||
709 | + | ||
710 | + | func eu (eo) = ("accountByCustomName_" + eo) | |
711 | + | ||
712 | + | ||
713 | + | func ev () = "oldiesList" | |
714 | + | ||
715 | + | ||
716 | + | let ew = 0 | |
717 | + | ||
718 | + | let ex = 1 | |
719 | + | ||
720 | + | let ey = 2 | |
721 | + | ||
722 | + | let ez = 0 | |
723 | + | ||
724 | + | let eA = 5 | |
725 | + | ||
726 | + | let eB = 6 | |
727 | + | ||
728 | + | let eC = 7 | |
729 | + | ||
730 | + | func eD (eq,dF) = ((aC + eq) + dF) | |
731 | + | ||
732 | + | ||
733 | + | func eE (eF,eG) = { | |
734 | + | let eH = if ((eF >= 0)) | |
735 | + | then (((eF + eG) - 1) / eG) | |
736 | + | else -((((-(eF) + eG) - 1) / eG)) | |
737 | + | (eH * cD) | |
738 | + | } | |
739 | + | ||
740 | + | ||
741 | + | func eI (eJ,eK) = { | |
742 | + | let eL = (((((eK[0] + eK[1]) + eK[2]) + eK[3]) + eK[4]) + eK[5]) | |
743 | + | if ((0 >= eL)) | |
687 | 744 | then throw("Zero weights sum") | |
688 | 745 | else { | |
689 | - | let | |
690 | - | func | |
691 | - | ||
692 | - | let | |
693 | - | let | |
694 | - | let | |
695 | - | func | |
696 | - | then | |
697 | - | else | |
698 | - | ||
699 | - | func | |
700 | - | then | |
746 | + | let eM = fraction(eJ, cC, eL) | |
747 | + | func eN (eO,eP) = (eO :+ fraction(eP, eM, cC)) | |
748 | + | ||
749 | + | let eQ = eK | |
750 | + | let eR = size(eQ) | |
751 | + | let eS = nil | |
752 | + | func eT (eU,eV) = if ((eV >= eR)) | |
753 | + | then eU | |
754 | + | else eN(eU, eQ[eV]) | |
755 | + | ||
756 | + | func eW (eU,eV) = if ((eV >= eR)) | |
757 | + | then eU | |
701 | 758 | else throw("List size exceeds 6") | |
702 | 759 | ||
703 | - | | |
704 | - | } | |
705 | - | } | |
706 | - | ||
707 | - | ||
708 | - | func | |
709 | - | let | |
710 | - | if ((size( | |
760 | + | eW(eT(eT(eT(eT(eT(eT(eS, 0), 1), 2), 3), 4), 5), 6) | |
761 | + | } | |
762 | + | } | |
763 | + | ||
764 | + | ||
765 | + | func eX (eJ) = { | |
766 | + | let eY = split(value(getString(dq())), "_") | |
767 | + | if ((size(eY) != aF)) | |
711 | 768 | then throw("Wrong proportions data") | |
712 | 769 | else { | |
713 | - | let | |
714 | - | | |
715 | - | } | |
716 | - | } | |
717 | - | ||
718 | - | ||
719 | - | func | |
720 | - | let | |
721 | - | func | |
722 | - | let | |
723 | - | if ((0 > | |
724 | - | then throw(((((("Not enough material idx=" + toString( | |
725 | - | else ( | |
770 | + | let eZ = [parseIntValue(eY[0]), parseIntValue(eY[1]), parseIntValue(eY[2]), parseIntValue(eY[3]), parseIntValue(eY[4]), parseIntValue(eY[5])] | |
771 | + | eI(eJ, eZ) | |
772 | + | } | |
773 | + | } | |
774 | + | ||
775 | + | ||
776 | + | func fa (fb,fc,fd) = { | |
777 | + | let fe = eX(fd) | |
778 | + | func ff (eO,cZ) = { | |
779 | + | let fg = (parseIntValue(fc[cZ]) - fe[cZ]) | |
780 | + | if ((0 > fg)) | |
781 | + | then throw(((((("Not enough material idx=" + toString(cZ)) + ", you have ") + fc[cZ]) + ", but need ") + toString(fe[cZ]))) | |
782 | + | else (eO :+ toString(fg)) | |
726 | 783 | } | |
727 | 784 | ||
728 | - | if ( | |
785 | + | if (fb) | |
729 | 786 | then { | |
730 | - | let | |
731 | - | let | |
732 | - | let | |
733 | - | func | |
734 | - | then | |
735 | - | else eU | |
736 | - | ||
737 | - | func | |
738 | - | then | |
787 | + | let eQ = cJ | |
788 | + | let eR = size(eQ) | |
789 | + | let eS = nil | |
790 | + | func eT (eU,eV) = if ((eV >= eR)) | |
791 | + | then eU | |
792 | + | else ff(eU, eQ[eV]) | |
793 | + | ||
794 | + | func eW (eU,eV) = if ((eV >= eR)) | |
795 | + | then eU | |
739 | 796 | else throw("List size exceeds 6") | |
740 | 797 | ||
741 | - | | |
742 | - | } | |
743 | - | else | |
744 | - | } | |
745 | - | ||
746 | - | ||
747 | - | func | |
748 | - | then $Tuple2( | |
798 | + | eW(eT(eT(eT(eT(eT(eT(eS, 0), 1), 2), 3), 4), 5), 6) | |
799 | + | } | |
800 | + | else fc | |
801 | + | } | |
802 | + | ||
803 | + | ||
804 | + | func fh (fi,fj) = if ((fj == "")) | |
805 | + | then $Tuple2(fi, false) | |
749 | 806 | else { | |
750 | - | func | |
751 | - | let | |
752 | - | if ((size( | |
807 | + | func fk (eO,fl) = { | |
808 | + | let fm = split(fl, ",") | |
809 | + | if ((size(fm) != 2)) | |
753 | 810 | then throw("Incorrect format, should be index,amount") | |
754 | 811 | else { | |
755 | - | let | |
756 | - | if (if ((0 > | |
812 | + | let cZ = parseIntValue(fm[0]) | |
813 | + | if (if ((0 > cZ)) | |
757 | 814 | then true | |
758 | - | else ( | |
815 | + | else (cZ >= size(aS))) | |
759 | 816 | then throw("Unknown product idx") | |
760 | 817 | else { | |
761 | - | let | |
762 | - | let | |
763 | - | if ((size( | |
764 | - | then throw((("You don't have " + | |
818 | + | let fn = parseIntValue(fm[1]) | |
819 | + | let fo = split(eO._1, (fm[0] + ":")) | |
820 | + | if ((size(fo) != 2)) | |
821 | + | then throw((("You don't have " + aO[cZ]) + " equipped")) | |
765 | 822 | else { | |
766 | - | let | |
767 | - | let | |
823 | + | let fp = fo[1] | |
824 | + | let fq = if (dG(take(drop(fp, 1), 1))) | |
768 | 825 | then 2 | |
769 | 826 | else 1 | |
770 | - | let | |
771 | - | let | |
772 | - | let | |
773 | - | then ( | |
774 | - | else throw(((((("You equipped " + toString( | |
775 | - | $Tuple2((((( | |
827 | + | let fr = parseIntValue(take(fp, fq)) | |
828 | + | let fs = drop(fp, fq) | |
829 | + | let ft = if ((fr >= fn)) | |
830 | + | then (fr - fn) | |
831 | + | else throw(((((("You equipped " + toString(fr)) + " of ") + aO[cZ]) + ", but tried to use ") + toString(fn))) | |
832 | + | $Tuple2(((((fo[0] + fm[0]) + ":") + toString(ft)) + fs), if (eO._2) | |
776 | 833 | then true | |
777 | - | else if (if (( | |
778 | - | then (8 >= | |
834 | + | else if (if ((cZ >= 6)) | |
835 | + | then (8 >= cZ) | |
779 | 836 | else false) | |
780 | - | then ( | |
837 | + | then (ft == 0) | |
781 | 838 | else false) | |
782 | 839 | } | |
783 | 840 | } | |
784 | 841 | } | |
785 | 842 | } | |
786 | 843 | ||
787 | - | let | |
788 | - | let | |
789 | - | let | |
790 | - | func | |
791 | - | then | |
792 | - | else | |
793 | - | ||
794 | - | func | |
795 | - | then | |
844 | + | let eQ = split(fj, "_") | |
845 | + | let eR = size(eQ) | |
846 | + | let eS = $Tuple2(fi, false) | |
847 | + | func eT (eU,eV) = if ((eV >= eR)) | |
848 | + | then eU | |
849 | + | else fk(eU, eQ[eV]) | |
850 | + | ||
851 | + | func eW (eU,eV) = if ((eV >= eR)) | |
852 | + | then eU | |
796 | 853 | else throw("List size exceeds 10") | |
797 | 854 | ||
798 | - | | |
855 | + | eW(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eS, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
799 | 856 | } | |
800 | 857 | ||
801 | 858 | ||
802 | - | func | |
803 | - | let | |
859 | + | func fu (fv) = { | |
860 | + | let fw = if ((fv == "")) | |
804 | 861 | then nil | |
805 | - | else split_4C( | |
806 | - | func | |
807 | - | let | |
808 | - | let | |
809 | - | then parseIntValue( | |
862 | + | else split_4C(fv, "_") | |
863 | + | func fx (eO,co) = { | |
864 | + | let fy = (size(eO) / 8) | |
865 | + | let fr = if ((size(fw) > fy)) | |
866 | + | then parseIntValue(fw[fy]) | |
810 | 867 | else 0 | |
811 | - | ( | |
868 | + | (eO + toBytes(fr)) | |
812 | 869 | } | |
813 | 870 | ||
814 | - | let | |
815 | - | let | |
816 | - | let | |
817 | - | func | |
818 | - | then | |
819 | - | else | |
820 | - | ||
821 | - | func | |
822 | - | then | |
871 | + | let eQ = aS | |
872 | + | let eR = size(eQ) | |
873 | + | let eS = base58'' | |
874 | + | func eT (eU,eV) = if ((eV >= eR)) | |
875 | + | then eU | |
876 | + | else fx(eU, eQ[eV]) | |
877 | + | ||
878 | + | func eW (eU,eV) = if ((eV >= eR)) | |
879 | + | then eU | |
823 | 880 | else throw("List size exceeds 50") | |
824 | 881 | ||
825 | - | | |
826 | - | } | |
827 | - | ||
828 | - | ||
829 | - | func | |
830 | - | func | |
831 | - | let | |
832 | - | let | |
833 | - | ( | |
882 | + | eW(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eS, 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) | |
883 | + | } | |
884 | + | ||
885 | + | ||
886 | + | func fz (fA) = { | |
887 | + | func fB (eO,co) = { | |
888 | + | let fy = size(eO) | |
889 | + | let fC = take(drop(fA, (8 * fy)), 8) | |
890 | + | (eO :+ toString(toInt(fC))) | |
834 | 891 | } | |
835 | 892 | ||
836 | 893 | makeString_2C({ | |
837 | - | let | |
838 | - | let | |
839 | - | let | |
840 | - | func | |
841 | - | then | |
842 | - | else | |
843 | - | ||
844 | - | func | |
845 | - | then | |
894 | + | let eQ = aS | |
895 | + | let eR = size(eQ) | |
896 | + | let eS = nil | |
897 | + | func eT (eU,eV) = if ((eV >= eR)) | |
898 | + | then eU | |
899 | + | else fB(eU, eQ[eV]) | |
900 | + | ||
901 | + | func eW (eU,eV) = if ((eV >= eR)) | |
902 | + | then eU | |
846 | 903 | else throw("List size exceeds 50") | |
847 | 904 | ||
848 | - | | |
905 | + | eW(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eS, 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) | |
849 | 906 | }, "_") | |
850 | 907 | } | |
851 | 908 | ||
852 | 909 | ||
853 | - | func | |
854 | - | func | |
855 | - | let | |
856 | - | then | |
910 | + | func fD (fE,fF) = { | |
911 | + | func fG (eO,fy) = { | |
912 | + | let fH = if ((size(fE) > (7 + fy))) | |
913 | + | then fE[(7 + fy)] | |
857 | 914 | else 0 | |
858 | - | if ((parseIntValue( | |
859 | - | then throw(("Requirement not satisfied: " + j[ | |
915 | + | if ((parseIntValue(fF[fy]) > (fE[fy] + fH))) | |
916 | + | then throw(("Requirement not satisfied: " + j[fy])) | |
860 | 917 | else true | |
861 | 918 | } | |
862 | 919 | ||
863 | - | let | |
864 | - | let | |
865 | - | let | |
866 | - | func | |
867 | - | then | |
868 | - | else | |
869 | - | ||
870 | - | func | |
871 | - | then | |
920 | + | let eQ = [0, 1, 2, 3, 4, 5, 6] | |
921 | + | let eR = size(eQ) | |
922 | + | let eS = false | |
923 | + | func eT (eU,eV) = if ((eV >= eR)) | |
924 | + | then eU | |
925 | + | else fG(eU, eQ[eV]) | |
926 | + | ||
927 | + | func eW (eU,eV) = if ((eV >= eR)) | |
928 | + | then eU | |
872 | 929 | else throw("List size exceeds 7") | |
873 | 930 | ||
874 | - | | |
875 | - | } | |
876 | - | ||
877 | - | ||
878 | - | func | |
879 | - | let | |
880 | - | if ((size( | |
931 | + | eW(eT(eT(eT(eT(eT(eT(eT(eS, 0), 1), 2), 3), 4), 5), 6), 7) | |
932 | + | } | |
933 | + | ||
934 | + | ||
935 | + | func fI (fJ,fw,fK,fE,fL,fM) = { | |
936 | + | let fm = split(fJ, ":") | |
937 | + | if ((size(fm) != 2)) | |
881 | 938 | then throw("Incorrect format, should be index:amount") | |
882 | - | else if (if (!( | |
883 | - | then (size( | |
939 | + | else if (if (!(fK)) | |
940 | + | then (size(fm[0]) != 2) | |
884 | 941 | else false) | |
885 | 942 | then throw("Product idx should be 2 digits, zero padded") | |
886 | 943 | else { | |
887 | - | let | |
888 | - | let | |
889 | - | if (!(containsElement( | |
890 | - | then throw((("Product '" + | |
891 | - | else if ((0 > | |
944 | + | let fN = parseIntValue(fm[0]) | |
945 | + | let fO = parseIntValue(fm[1]) | |
946 | + | if (!(containsElement(aR, fN))) | |
947 | + | then throw((("Product '" + aO[fN]) + "' cannot be used for land defense")) | |
948 | + | else if ((0 > fO)) | |
892 | 949 | then throw("Count can't be negative") | |
893 | - | else if (( | |
894 | - | then throw(((("Can't put more than " + toString(t)) + " of ") + | |
895 | - | else if (( | |
896 | - | then $Tuple3( | |
950 | + | else if ((fO > t)) | |
951 | + | then throw(((("Can't put more than " + toString(t)) + " of ") + aO[fN])) | |
952 | + | else if ((fO == 0)) | |
953 | + | then $Tuple3(fw, fL, fM) | |
897 | 954 | else { | |
898 | - | let | |
899 | - | let | |
900 | - | let | |
901 | - | let | |
902 | - | if (if (!( | |
903 | - | then ( | |
955 | + | let fP = take(fw, (8 * fN)) | |
956 | + | let fr = toInt(take(drop(fw, (8 * fN)), 8)) | |
957 | + | let fs = drop(fw, (8 * (fN + 1))) | |
958 | + | let co = split(aS[fN], "_") | |
959 | + | if (if (!(fK)) | |
960 | + | then (fO > fr) | |
904 | 961 | else false) | |
905 | - | then throw(((((("You have " + toString( | |
962 | + | then throw(((((("You have " + toString(fr)) + " of ") + aO[fN]) + ", but tried to use ") + toString(fO))) | |
906 | 963 | else { | |
907 | - | let | |
908 | - | then | |
964 | + | let ft = if (if (!(fK)) | |
965 | + | then fD(fE, split(co[aV], ",")) | |
909 | 966 | else false) | |
910 | - | then ( | |
911 | - | else ( | |
912 | - | let | |
913 | - | $Tuple3((( | |
967 | + | then (fr - fO) | |
968 | + | else (fr + fO) | |
969 | + | let fQ = (eE(ft, aX) - eE(fr, aX)) | |
970 | + | $Tuple3(((fP + toBytes(ft)) + fs), (fL + fQ), (fM - fQ)) | |
914 | 971 | } | |
915 | 972 | } | |
916 | 973 | } | |
917 | 974 | } | |
918 | 975 | ||
919 | 976 | ||
920 | - | func | |
921 | - | let | |
922 | - | if ((size( | |
977 | + | func fR (fJ,fw,fK,fS,fT,fU,fE) = { | |
978 | + | let fm = split(fJ, ":") | |
979 | + | if ((size(fm) != 2)) | |
923 | 980 | then throw("Incorrect format, should be index:amount") | |
924 | - | else if (if (!( | |
925 | - | then (size( | |
981 | + | else if (if (!(fK)) | |
982 | + | then (size(fm[0]) != 2) | |
926 | 983 | else false) | |
927 | 984 | then throw("Product idx should be 2 digits, zero padded") | |
928 | 985 | else { | |
929 | - | let | |
930 | - | let | |
931 | - | if (if ((0 > | |
986 | + | let fN = parseIntValue(fm[0]) | |
987 | + | let fO = parseIntValue(fm[1]) | |
988 | + | if (if ((0 > fN)) | |
932 | 989 | then true | |
933 | - | else ( | |
990 | + | else (fN >= size(aS))) | |
934 | 991 | then throw("Unknown product idx") | |
935 | - | else if ((0 > | |
992 | + | else if ((0 > fO)) | |
936 | 993 | then throw("Count can't be negative") | |
937 | - | else if (( | |
938 | - | then throw(((("Can't put more than " + toString(t)) + " of ") + | |
939 | - | else if (( | |
940 | - | then $Tuple2( | |
994 | + | else if ((fO > t)) | |
995 | + | then throw(((("Can't put more than " + toString(t)) + " of ") + aO[fN])) | |
996 | + | else if ((fO == 0)) | |
997 | + | then $Tuple2(fw, false) | |
941 | 998 | else { | |
942 | - | let | |
943 | - | let | |
944 | - | let | |
945 | - | let | |
946 | - | if (if (!( | |
947 | - | then ( | |
999 | + | let fP = take(fw, (8 * fN)) | |
1000 | + | let fr = toInt(take(drop(fw, (8 * fN)), 8)) | |
1001 | + | let fs = drop(fw, (8 * (fN + 1))) | |
1002 | + | let co = split(aS[fN], "_") | |
1003 | + | if (if (!(fK)) | |
1004 | + | then (fO > fr) | |
948 | 1005 | else false) | |
949 | - | then throw(((((("You have " + toString( | |
1006 | + | then throw(((((("You have " + toString(fr)) + " of ") + aO[fN]) + ", but tried to use ") + toString(fO))) | |
950 | 1007 | else { | |
951 | - | let | |
952 | - | then | |
1008 | + | let fV = if (if (!(fK)) | |
1009 | + | then fD(fE, split(co[aV], ",")) | |
953 | 1010 | else false) | |
954 | 1011 | then { | |
955 | - | let | |
956 | - | if (( | |
1012 | + | let fW = co[aW] | |
1013 | + | if ((fW == "")) | |
957 | 1014 | then throw("Item cannot be equipped") | |
958 | 1015 | else { | |
959 | - | let | |
960 | - | let | |
961 | - | if (( | |
1016 | + | let fX = parseIntValue(fW) | |
1017 | + | let fY = (fX / 100) | |
1018 | + | if ((fS != fY)) | |
962 | 1019 | then throw("Segment incompatible") | |
963 | 1020 | else { | |
964 | - | let | |
965 | - | if (( | |
1021 | + | let fZ = ((fX % 100) / 10) | |
1022 | + | if ((fT != fZ)) | |
966 | 1023 | then throw("Slot incompatible") | |
967 | 1024 | else { | |
968 | - | let | |
969 | - | if (if (( | |
970 | - | then ( | |
1025 | + | let ga = (fX % 10) | |
1026 | + | if (if ((fU != 0)) | |
1027 | + | then (ga > 1) | |
971 | 1028 | else false) | |
972 | 1029 | then throw("Big items should occupy slot 0") | |
973 | - | else ( | |
1030 | + | else (ga > 1) | |
974 | 1031 | } | |
975 | 1032 | } | |
976 | 1033 | } | |
977 | 1034 | } | |
978 | 1035 | else false | |
979 | - | $Tuple2((( | |
980 | - | then | |
981 | - | else -( | |
1036 | + | $Tuple2(((fP + toBytes((fr + (if (fK) | |
1037 | + | then fO | |
1038 | + | else -(fO))))) + fs), fV) | |
982 | 1039 | } | |
983 | 1040 | } | |
984 | 1041 | } | |
985 | 1042 | } | |
986 | 1043 | ||
987 | 1044 | ||
988 | - | func | |
1045 | + | func gb (gc,gd,fK,fS,fT,ge) = if ((gc != "")) | |
989 | 1046 | then { | |
990 | - | let | |
991 | - | if ((size( | |
1047 | + | let gf = split(gc, ",") | |
1048 | + | if ((size(gf) > s)) | |
992 | 1049 | then throw("Wrong slots format") | |
993 | 1050 | else { | |
994 | - | let | |
995 | - | let | |
996 | - | then | |
1051 | + | let gg = gf[0] | |
1052 | + | let gh = if ((size(gf) > 1)) | |
1053 | + | then gf[1] | |
997 | 1054 | else "" | |
998 | - | if (if (( | |
999 | - | then ( | |
1055 | + | if (if ((gg == "")) | |
1056 | + | then (gh == "") | |
1000 | 1057 | else false) | |
1001 | - | then | |
1058 | + | then gd | |
1002 | 1059 | else { | |
1003 | - | let | |
1004 | - | then | |
1005 | - | else $Tuple2( | |
1006 | - | if (( | |
1007 | - | then if ( | |
1060 | + | let gi = if ((gg != "")) | |
1061 | + | then fR(gg, gd, fK, fS, fT, 0, ge) | |
1062 | + | else $Tuple2(gd, false) | |
1063 | + | if ((gh != "")) | |
1064 | + | then if (gi._2) | |
1008 | 1065 | then throw("Big item already occupies slot") | |
1009 | - | else | |
1010 | - | else | |
1066 | + | else fR(gh, gi._1, fK, fS, fT, 1, ge)._1 | |
1067 | + | else gi._1 | |
1011 | 1068 | } | |
1012 | 1069 | } | |
1013 | 1070 | } | |
1014 | - | else | |
1015 | - | ||
1016 | - | ||
1017 | - | func | |
1018 | - | func | |
1019 | - | let | |
1020 | - | let | |
1021 | - | if ((size( | |
1071 | + | else gd | |
1072 | + | ||
1073 | + | ||
1074 | + | func gj (gk,gl,fK,ge) = { | |
1075 | + | func fS (eO,gm) = { | |
1076 | + | let fy = eO._1 | |
1077 | + | let fT = split(gm, ";") | |
1078 | + | if ((size(fT) != r)) | |
1022 | 1079 | then throw("Wrong segment format") | |
1023 | 1080 | else { | |
1024 | - | let | |
1025 | - | let | |
1026 | - | if (if (( | |
1027 | - | then ( | |
1081 | + | let gn = fT[0] | |
1082 | + | let go = fT[1] | |
1083 | + | if (if ((gn == "")) | |
1084 | + | then (go == "") | |
1028 | 1085 | else false) | |
1029 | - | then $Tuple2(( | |
1086 | + | then $Tuple2((fy + 1), eO._2) | |
1030 | 1087 | else { | |
1031 | - | let | |
1032 | - | $Tuple2(( | |
1088 | + | let gp = gb(gn, eO._2, fK, fy, 0, ge) | |
1089 | + | $Tuple2((fy + 1), gb(go, gp, fK, fy, 1, ge)) | |
1033 | 1090 | } | |
1034 | 1091 | } | |
1035 | 1092 | } | |
1036 | 1093 | ||
1037 | - | ( let | |
1038 | - | let | |
1039 | - | let | |
1040 | - | func | |
1041 | - | then | |
1042 | - | else | |
1043 | - | ||
1044 | - | func | |
1045 | - | then | |
1094 | + | ( let eQ = gk | |
1095 | + | let eR = size(eQ) | |
1096 | + | let eS = $Tuple2(0, gl) | |
1097 | + | func eT (eU,eV) = if ((eV >= eR)) | |
1098 | + | then eU | |
1099 | + | else fS(eU, eQ[eV]) | |
1100 | + | ||
1101 | + | func eW (eU,eV) = if ((eV >= eR)) | |
1102 | + | then eU | |
1046 | 1103 | else throw("List size exceeds 6") | |
1047 | 1104 | ||
1048 | - | | |
1049 | - | } | |
1050 | - | ||
1051 | - | ||
1052 | - | func | |
1105 | + | eW(eT(eT(eT(eT(eT(eT(eS, 0), 1), 2), 3), 4), 5), 6))._2 | |
1106 | + | } | |
1107 | + | ||
1108 | + | ||
1109 | + | func gq (gk,gl,fL,fM,fK,fE) = if ((3 > size(gk))) | |
1053 | 1110 | then throw("At least duck, mines and traps parts are required") | |
1054 | 1111 | else { | |
1055 | - | func | |
1056 | - | let | |
1057 | - | if (( | |
1058 | - | then $Tuple4(( | |
1112 | + | func fS (eO,gm) = { | |
1113 | + | let fy = eO._1 | |
1114 | + | if ((fy == 0)) | |
1115 | + | then $Tuple4((fy + 1), eO._2, eO._3, eO._4) | |
1059 | 1116 | else { | |
1060 | - | let | |
1061 | - | $Tuple4(( | |
1117 | + | let gr = fI(gm, eO._2, fK, fE, eO._3, eO._4) | |
1118 | + | $Tuple4((fy + 1), gr._1, gr._2, gr._3) | |
1062 | 1119 | } | |
1063 | 1120 | } | |
1064 | 1121 | ||
1065 | - | let | |
1066 | - | let | |
1067 | - | let | |
1068 | - | let | |
1069 | - | func | |
1070 | - | then | |
1071 | - | else | |
1072 | - | ||
1073 | - | func | |
1074 | - | then | |
1122 | + | let gs = { | |
1123 | + | let eQ = gk | |
1124 | + | let eR = size(eQ) | |
1125 | + | let eS = $Tuple4(0, gl, fL, fM) | |
1126 | + | func eT (eU,eV) = if ((eV >= eR)) | |
1127 | + | then eU | |
1128 | + | else fS(eU, eQ[eV]) | |
1129 | + | ||
1130 | + | func eW (eU,eV) = if ((eV >= eR)) | |
1131 | + | then eU | |
1075 | 1132 | else throw("List size exceeds 10") | |
1076 | 1133 | ||
1077 | - | | |
1078 | - | } | |
1079 | - | $Tuple3( | |
1134 | + | eW(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eS, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
1135 | + | } | |
1136 | + | $Tuple3(gs._2, gs._3, gs._4) | |
1080 | 1137 | } | |
1081 | 1138 | ||
1082 | 1139 | ||
1083 | - | func | |
1084 | - | let | |
1085 | - | let | |
1086 | - | let | |
1087 | - | let | |
1088 | - | let ao = if (( | |
1140 | + | func gt (A) = { | |
1141 | + | let gu = F(A) | |
1142 | + | let gv = split(valueOrElse(getString(gu), ",;,_,;,_,;,_,;,_,;,_,;,"), "_") | |
1143 | + | let gw = gj(gv, dX, true, nil) | |
1144 | + | let gx = split(gv[p], ";")[1] | |
1145 | + | let ao = if ((gx == "")) | |
1089 | 1146 | then 0 | |
1090 | 1147 | else { | |
1091 | - | let | |
1092 | - | if (( | |
1148 | + | let gy = split(gx, ",")[0] | |
1149 | + | if ((gy == "")) | |
1093 | 1150 | then 0 | |
1094 | 1151 | else { | |
1095 | - | let | |
1096 | - | let | |
1097 | - | let | |
1098 | - | if (if (if (if (if (( | |
1152 | + | let fJ = split(gy, ":") | |
1153 | + | let cZ = fJ[0] | |
1154 | + | let gz = fJ[1] | |
1155 | + | if (if (if (if (if ((cZ == "06")) | |
1099 | 1156 | then true | |
1100 | - | else ( | |
1157 | + | else (cZ == "07")) | |
1101 | 1158 | then true | |
1102 | - | else ( | |
1103 | - | then ( | |
1159 | + | else (cZ == "08")) | |
1160 | + | then (gz != "") | |
1104 | 1161 | else false) | |
1105 | - | then (parseIntValue( | |
1162 | + | then (parseIntValue(gz) > 0) | |
1106 | 1163 | else false) | |
1107 | - | then parseIntValue(split( | |
1164 | + | then parseIntValue(split(aS[parseIntValue(cZ)], "_")[aU]) | |
1108 | 1165 | else 0 | |
1109 | 1166 | } | |
1110 | 1167 | } | |
1111 | - | let | |
1112 | - | let | |
1113 | - | ( | |
1114 | - | } | |
1115 | - | ||
1116 | - | ||
1117 | - | func | |
1168 | + | let ge = am(this, A, ao, true) | |
1169 | + | let gA = gj(gv, gw, false, ge) | |
1170 | + | (gA == gA) | |
1171 | + | } | |
1172 | + | ||
1173 | + | ||
1174 | + | func gB (gC,gD,gE,gF) = if ((size(gC) != aF)) | |
1118 | 1175 | then throw("Wrong proportions data") | |
1119 | 1176 | else { | |
1120 | - | func | |
1121 | - | let | |
1122 | - | if ((0 > | |
1123 | - | then throw(((((((("Panic! Pieces of type=" + toString( | |
1124 | - | else ( | |
1125 | - | } | |
1126 | - | ||
1127 | - | let | |
1128 | - | let | |
1129 | - | let | |
1130 | - | func | |
1131 | - | then | |
1132 | - | else | |
1133 | - | ||
1134 | - | func | |
1135 | - | then | |
1177 | + | func gG (eO,gH) = { | |
1178 | + | let fg = (parseIntValue(gC[gH]) + ((gF * gD[gH]) * gE)) | |
1179 | + | if ((0 > fg)) | |
1180 | + | then throw(((((((("Panic! Pieces of type=" + toString(gH)) + ", sign=") + toString(gF)) + ", terrainCounts[i]=") + toString(gD[gH])) + ", landSizeIndex=") + toString(gE))) | |
1181 | + | else (eO :+ toString(fg)) | |
1182 | + | } | |
1183 | + | ||
1184 | + | let eQ = cJ | |
1185 | + | let eR = size(eQ) | |
1186 | + | let eS = nil | |
1187 | + | func eT (eU,eV) = if ((eV >= eR)) | |
1188 | + | then eU | |
1189 | + | else gG(eU, eQ[eV]) | |
1190 | + | ||
1191 | + | func eW (eU,eV) = if ((eV >= eR)) | |
1192 | + | then eU | |
1136 | 1193 | else throw("List size exceeds 6") | |
1137 | 1194 | ||
1138 | - | | |
1195 | + | eW(eT(eT(eT(eT(eT(eT(eS, 0), 1), 2), 3), 4), 5), 6) | |
1139 | 1196 | } | |
1140 | 1197 | ||
1141 | 1198 | ||
1142 | - | func | |
1143 | - | let | |
1144 | - | makeString( | |
1145 | - | } | |
1146 | - | ||
1147 | - | ||
1148 | - | func | |
1149 | - | ||
1150 | - | ||
1151 | - | func | |
1152 | - | func | |
1153 | - | let | |
1154 | - | ( | |
1199 | + | func gI (gD,gE,gF) = { | |
1200 | + | let gC = split(valueOrElse(getString(dq()), "0_0_0_0_0_0"), "_") | |
1201 | + | makeString(gB(gC, gD, gE, gF), "_") | |
1202 | + | } | |
1203 | + | ||
1204 | + | ||
1205 | + | func gJ (gK) = [(size(split(gK, "A")) - 1), (size(split(gK, "B")) - 1), (size(split(gK, "C")) - 1), (size(split(gK, "D")) - 1), (size(split(gK, "E")) - 1), (size(split(gK, "F")) - 1)] | |
1206 | + | ||
1207 | + | ||
1208 | + | func gL (gM,gD,gN,gE,gO) = { | |
1209 | + | func gP (eO,gH) = { | |
1210 | + | let gQ = ((fraction(gN, gO, a) * gD[gH]) * gE) | |
1211 | + | (eO :+ toString((parseIntValue(gM[gH]) + gQ))) | |
1155 | 1212 | } | |
1156 | 1213 | ||
1157 | - | let | |
1158 | - | let | |
1159 | - | let | |
1160 | - | let | |
1161 | - | func | |
1162 | - | then | |
1163 | - | else | |
1164 | - | ||
1165 | - | func | |
1166 | - | then | |
1214 | + | let eZ = { | |
1215 | + | let eQ = cJ | |
1216 | + | let eR = size(eQ) | |
1217 | + | let eS = nil | |
1218 | + | func eT (eU,eV) = if ((eV >= eR)) | |
1219 | + | then eU | |
1220 | + | else gP(eU, eQ[eV]) | |
1221 | + | ||
1222 | + | func eW (eU,eV) = if ((eV >= eR)) | |
1223 | + | then eU | |
1167 | 1224 | else throw("List size exceeds 6") | |
1168 | 1225 | ||
1169 | - | | |
1226 | + | eW(eT(eT(eT(eT(eT(eT(eS, 0), 1), 2), 3), 4), 5), 6) | |
1170 | 1227 | } | |
1171 | - | makeString( | |
1172 | - | } | |
1173 | - | ||
1174 | - | ||
1175 | - | func | |
1176 | - | func | |
1177 | - | let | |
1178 | - | $Tuple2(( | |
1228 | + | makeString(eZ, "_") | |
1229 | + | } | |
1230 | + | ||
1231 | + | ||
1232 | + | func gR (gD,gN,gE,gO) = { | |
1233 | + | func gP (eO,gH) = { | |
1234 | + | let gQ = ((fraction(gN, gO, a) * gD[gH]) * gE) | |
1235 | + | $Tuple2((eO._1 :+ gQ), (eO._2 + gQ)) | |
1179 | 1236 | } | |
1180 | 1237 | ||
1181 | - | let | |
1182 | - | let | |
1183 | - | let | |
1184 | - | func | |
1185 | - | then | |
1186 | - | else | |
1187 | - | ||
1188 | - | func | |
1189 | - | then | |
1238 | + | let eQ = cJ | |
1239 | + | let eR = size(eQ) | |
1240 | + | let eS = $Tuple2(nil, 0) | |
1241 | + | func eT (eU,eV) = if ((eV >= eR)) | |
1242 | + | then eU | |
1243 | + | else gP(eU, eQ[eV]) | |
1244 | + | ||
1245 | + | func eW (eU,eV) = if ((eV >= eR)) | |
1246 | + | then eU | |
1190 | 1247 | else throw("List size exceeds 6") | |
1191 | 1248 | ||
1192 | - | | |
1193 | - | } | |
1194 | - | ||
1195 | - | ||
1196 | - | func | |
1197 | - | let | |
1198 | - | let | |
1199 | - | if (( | |
1200 | - | then $Tuple2(makeString( | |
1201 | - | else if (( | |
1249 | + | eW(eT(eT(eT(eT(eT(eT(eS, 0), 1), 2), 3), 4), 5), 6) | |
1250 | + | } | |
1251 | + | ||
1252 | + | ||
1253 | + | func gS (gT,gU,gV,gW) = { | |
1254 | + | let gX = gV._1 | |
1255 | + | let gY = gV._2 | |
1256 | + | if ((gY == 0)) | |
1257 | + | then $Tuple2(makeString(gT, "_"), makeString(gU, "_")) | |
1258 | + | else if ((gW >= gY)) | |
1202 | 1259 | then { | |
1203 | - | func | |
1204 | - | ||
1205 | - | let | |
1206 | - | let | |
1207 | - | let | |
1208 | - | let | |
1209 | - | func | |
1210 | - | then | |
1211 | - | else | |
1212 | - | ||
1213 | - | func | |
1214 | - | then | |
1260 | + | func gZ (eO,gH) = (eO :+ toString((parseIntValue(gT[gH]) + gX[gH]))) | |
1261 | + | ||
1262 | + | let eZ = { | |
1263 | + | let eQ = cJ | |
1264 | + | let eR = size(eQ) | |
1265 | + | let eS = nil | |
1266 | + | func eT (eU,eV) = if ((eV >= eR)) | |
1267 | + | then eU | |
1268 | + | else gZ(eU, eQ[eV]) | |
1269 | + | ||
1270 | + | func eW (eU,eV) = if ((eV >= eR)) | |
1271 | + | then eU | |
1215 | 1272 | else throw("List size exceeds 6") | |
1216 | 1273 | ||
1217 | - | | |
1274 | + | eW(eT(eT(eT(eT(eT(eT(eS, 0), 1), 2), 3), 4), 5), 6) | |
1218 | 1275 | } | |
1219 | - | $Tuple2(makeString( | |
1276 | + | $Tuple2(makeString(eZ, "_"), makeString(gU, "_")) | |
1220 | 1277 | } | |
1221 | 1278 | else { | |
1222 | - | func | |
1223 | - | let | |
1224 | - | $Tuple2(( | |
1279 | + | func ha (eO,gH) = { | |
1280 | + | let hb = fraction(gX[gH], gW, gY) | |
1281 | + | $Tuple2((eO._1 :+ toString((parseIntValue(gT[gH]) + hb))), (eO._2 :+ toString(((parseIntValue(gU[gH]) + gX[gH]) - hb)))) | |
1225 | 1282 | } | |
1226 | 1283 | ||
1227 | - | let | |
1228 | - | let | |
1229 | - | let | |
1230 | - | let | |
1231 | - | func | |
1232 | - | then | |
1233 | - | else | |
1234 | - | ||
1235 | - | func | |
1236 | - | then | |
1284 | + | let eZ = { | |
1285 | + | let eQ = cJ | |
1286 | + | let eR = size(eQ) | |
1287 | + | let eS = $Tuple2(nil, nil) | |
1288 | + | func eT (eU,eV) = if ((eV >= eR)) | |
1289 | + | then eU | |
1290 | + | else ha(eU, eQ[eV]) | |
1291 | + | ||
1292 | + | func eW (eU,eV) = if ((eV >= eR)) | |
1293 | + | then eU | |
1237 | 1294 | else throw("List size exceeds 6") | |
1238 | 1295 | ||
1239 | - | | |
1296 | + | eW(eT(eT(eT(eT(eT(eT(eS, 0), 1), 2), 3), 4), 5), 6) | |
1240 | 1297 | } | |
1241 | - | $Tuple2(makeString( | |
1298 | + | $Tuple2(makeString(eZ._1, "_"), makeString(eZ._2, "_")) | |
1242 | 1299 | } | |
1243 | 1300 | } | |
1244 | 1301 | ||
1245 | 1302 | ||
1246 | - | func | |
1247 | - | then | |
1248 | - | else -( | |
1249 | - | ||
1250 | - | ||
1251 | - | let | |
1252 | - | ||
1253 | - | func | |
1254 | - | let | |
1255 | - | let | |
1303 | + | func hc (hd) = if ((hd >= toBigInt(0))) | |
1304 | + | then hd | |
1305 | + | else -(hd) | |
1306 | + | ||
1307 | + | ||
1308 | + | let he = [[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]] | |
1309 | + | ||
1310 | + | func hf (dz,hg) = { | |
1311 | + | let hh = toInt((dz % eg)) | |
1312 | + | let hi = if ((hg[0] > hh)) | |
1256 | 1313 | then "A" | |
1257 | - | else if (( | |
1314 | + | else if ((hg[1] > hh)) | |
1258 | 1315 | then "B" | |
1259 | - | else if (( | |
1316 | + | else if ((hg[2] > hh)) | |
1260 | 1317 | then "C" | |
1261 | - | else if (( | |
1318 | + | else if ((hg[3] > hh)) | |
1262 | 1319 | then "D" | |
1263 | - | else if (( | |
1320 | + | else if ((hg[4] > hh)) | |
1264 | 1321 | then "E" | |
1265 | 1322 | else "F" | |
1266 | - | | |
1267 | - | } | |
1268 | - | ||
1269 | - | ||
1270 | - | func | |
1271 | - | let | |
1272 | - | func | |
1273 | - | ||
1274 | - | let | |
1275 | - | let | |
1276 | - | let | |
1277 | - | let | |
1278 | - | func | |
1279 | - | then | |
1280 | - | else | |
1281 | - | ||
1282 | - | func | |
1283 | - | then | |
1323 | + | hi | |
1324 | + | } | |
1325 | + | ||
1326 | + | ||
1327 | + | func hj (hk,hl) = { | |
1328 | + | let hm = he[hl] | |
1329 | + | func hn (eO,eP) = $Tuple2((((((eO._1 + hf(eO._2, hm)) + hf((eO._2 / eg), hm)) + hf((eO._2 / eh), hm)) + hf((eO._2 / ei), hm)) + hf((eO._2 / ej), hm)), (eO._2 / ek)) | |
1330 | + | ||
1331 | + | let gs = { | |
1332 | + | let eQ = [1, 2, 3, 4, 5] | |
1333 | + | let eR = size(eQ) | |
1334 | + | let eS = $Tuple2("", (hk / ef)) | |
1335 | + | func eT (eU,eV) = if ((eV >= eR)) | |
1336 | + | then eU | |
1337 | + | else hn(eU, eQ[eV]) | |
1338 | + | ||
1339 | + | func eW (eU,eV) = if ((eV >= eR)) | |
1340 | + | then eU | |
1284 | 1341 | else throw("List size exceeds 5") | |
1285 | 1342 | ||
1286 | - | | |
1343 | + | eW(eT(eT(eT(eT(eT(eS, 0), 1), 2), 3), 4), 5) | |
1287 | 1344 | } | |
1288 | - | | |
1289 | - | } | |
1290 | - | ||
1291 | - | ||
1292 | - | let | |
1293 | - | ||
1294 | - | let | |
1295 | - | ||
1296 | - | func | |
1297 | - | func | |
1298 | - | let | |
1299 | - | let | |
1300 | - | let | |
1345 | + | gs._1 | |
1346 | + | } | |
1347 | + | ||
1348 | + | ||
1349 | + | let ho = [7, 2, 15, 19, 8, 24, 1, 21, 16, 5, 0, 22, 20, 23, 11, 4, 18, 12, 6, 10, 3, 17, 13, 9, 14] | |
1350 | + | ||
1351 | + | let hp = ["A", "B", "C", "D", "E", "F"] | |
1352 | + | ||
1353 | + | func hq (hr,gE) = { | |
1354 | + | func hs (eO,dx) = { | |
1355 | + | let fy = eO._2 | |
1356 | + | let ht = parseIntValue(dx) | |
1357 | + | let hd = if ((ht == 0)) | |
1301 | 1358 | then 0 | |
1302 | - | else if (( | |
1303 | - | then ( | |
1304 | - | else if (( | |
1359 | + | else if ((ht >= (4 * gE))) | |
1360 | + | then (ht / gE) | |
1361 | + | else if ((ht > (3 * gE))) | |
1305 | 1362 | then 3 | |
1306 | - | else ((( | |
1307 | - | $Tuple3(( | |
1363 | + | else (((ht - 1) / gE) + 1) | |
1364 | + | $Tuple3((eO._1 :+ hd), (eO._2 + 1), (eO._3 + hd)) | |
1308 | 1365 | } | |
1309 | 1366 | ||
1310 | - | let | |
1311 | - | let | |
1312 | - | let | |
1313 | - | let | |
1314 | - | func | |
1315 | - | then | |
1316 | - | else | |
1317 | - | ||
1318 | - | func | |
1319 | - | then | |
1367 | + | let gs = { | |
1368 | + | let eQ = hr | |
1369 | + | let eR = size(eQ) | |
1370 | + | let eS = $Tuple3(nil, 0, 0) | |
1371 | + | func eT (eU,eV) = if ((eV >= eR)) | |
1372 | + | then eU | |
1373 | + | else hs(eU, eQ[eV]) | |
1374 | + | ||
1375 | + | func eW (eU,eV) = if ((eV >= eR)) | |
1376 | + | then eU | |
1320 | 1377 | else throw("List size exceeds 6") | |
1321 | 1378 | ||
1322 | - | | |
1379 | + | eW(eT(eT(eT(eT(eT(eT(eS, 0), 1), 2), 3), 4), 5), 6) | |
1323 | 1380 | } | |
1324 | - | let | |
1325 | - | let | |
1326 | - | let | |
1327 | - | func | |
1328 | - | let | |
1329 | - | then ( | |
1330 | - | else | |
1331 | - | let | |
1381 | + | let hu = gs._1 | |
1382 | + | let hv = value(indexOf(hu, max(hu))) | |
1383 | + | let hw = (gs._3 - 25) | |
1384 | + | func hx (eO,cZ) = { | |
1385 | + | let dC = if ((cZ == hv)) | |
1386 | + | then (hu[cZ] - hw) | |
1387 | + | else hu[cZ] | |
1388 | + | let dN = if ((dC == 0)) | |
1332 | 1389 | then nil | |
1333 | - | else split(drop(toString(pow(10, 0, | |
1334 | - | let | |
1335 | - | func | |
1336 | - | ||
1337 | - | let | |
1338 | - | let | |
1339 | - | let | |
1340 | - | let | |
1341 | - | func | |
1342 | - | then | |
1343 | - | else | |
1344 | - | ||
1345 | - | func | |
1346 | - | then | |
1390 | + | else split(drop(toString(pow(10, 0, dC, 0, 0, DOWN)), 1), "") | |
1391 | + | let fX = hp[cZ] | |
1392 | + | func hy (hz,hA) = (hz :+ fX) | |
1393 | + | ||
1394 | + | let hB = { | |
1395 | + | let eQ = dN | |
1396 | + | let eR = size(eQ) | |
1397 | + | let eS = nil | |
1398 | + | func hC (eU,eV) = if ((eV >= eR)) | |
1399 | + | then eU | |
1400 | + | else hy(eU, eQ[eV]) | |
1401 | + | ||
1402 | + | func hD (eU,eV) = if ((eV >= eR)) | |
1403 | + | then eU | |
1347 | 1404 | else throw("List size exceeds 25") | |
1348 | 1405 | ||
1349 | - | | |
1350 | - | } | |
1351 | - | ( | |
1406 | + | hD(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(eS, 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) | |
1407 | + | } | |
1408 | + | (eO ++ hB) | |
1352 | 1409 | } | |
1353 | 1410 | ||
1354 | - | let | |
1355 | - | let | |
1356 | - | let | |
1357 | - | let | |
1358 | - | func | |
1359 | - | then | |
1360 | - | else | |
1361 | - | ||
1362 | - | func | |
1363 | - | then | |
1411 | + | let eZ = { | |
1412 | + | let eQ = cJ | |
1413 | + | let eR = size(eQ) | |
1414 | + | let eS = nil | |
1415 | + | func hC (eU,eV) = if ((eV >= eR)) | |
1416 | + | then eU | |
1417 | + | else hx(eU, eQ[eV]) | |
1418 | + | ||
1419 | + | func hD (eU,eV) = if ((eV >= eR)) | |
1420 | + | then eU | |
1364 | 1421 | else throw("List size exceeds 6") | |
1365 | 1422 | ||
1366 | - | | |
1423 | + | hD(hC(hC(hC(hC(hC(hC(eS, 0), 1), 2), 3), 4), 5), 6) | |
1367 | 1424 | } | |
1368 | - | func | |
1369 | - | ||
1370 | - | let | |
1371 | - | let | |
1372 | - | let | |
1373 | - | func | |
1374 | - | then | |
1375 | - | else | |
1376 | - | ||
1377 | - | func | |
1378 | - | then | |
1425 | + | func hE (eO,fy) = (eO + eZ[fy]) | |
1426 | + | ||
1427 | + | let eQ = ho | |
1428 | + | let eR = size(eQ) | |
1429 | + | let eS = "" | |
1430 | + | func hF (eU,eV) = if ((eV >= eR)) | |
1431 | + | then eU | |
1432 | + | else hE(eU, eQ[eV]) | |
1433 | + | ||
1434 | + | func hG (eU,eV) = if ((eV >= eR)) | |
1435 | + | then eU | |
1379 | 1436 | else throw("List size exceeds 25") | |
1380 | 1437 | ||
1381 | - | | |
1382 | - | } | |
1383 | - | ||
1384 | - | ||
1385 | - | func | |
1386 | - | let | |
1387 | - | [toString(valueOrElse(parseInt( | |
1388 | - | then | |
1389 | - | else "0_0_0_0_0_0", if ((size(split( | |
1390 | - | then | |
1391 | - | else "0_0_0_0_0_0", | |
1392 | - | } | |
1393 | - | ||
1394 | - | ||
1395 | - | func | |
1396 | - | let | |
1397 | - | ((aI * (parseIntValue( | |
1398 | - | } | |
1399 | - | ||
1400 | - | ||
1401 | - | func | |
1402 | - | let | |
1403 | - | func | |
1404 | - | ||
1405 | - | func | |
1406 | - | let | |
1407 | - | let | |
1408 | - | $Tuple2(( | |
1438 | + | hG(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(eS, 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) | |
1439 | + | } | |
1440 | + | ||
1441 | + | ||
1442 | + | func hH (hI) = { | |
1443 | + | let gr = split(valueOrElse(getString(hI), "0:0_0_0_0_0_0:0_0_0_0_0_0:"), ":") | |
1444 | + | [toString(valueOrElse(parseInt(gr[bh]), 0)), if ((size(split(gr[bi], "_")) == aF)) | |
1445 | + | then gr[bi] | |
1446 | + | else "0_0_0_0_0_0", if ((size(split(gr[bj], "_")) == aF)) | |
1447 | + | then gr[bj] | |
1448 | + | else "0_0_0_0_0_0", gr[bk]] | |
1449 | + | } | |
1450 | + | ||
1451 | + | ||
1452 | + | func hJ (hK) = { | |
1453 | + | let fm = split(hK, "_") | |
1454 | + | ((aI * (parseIntValue(fm[1]) + 1)) * parseIntValue(fm[0])) | |
1455 | + | } | |
1456 | + | ||
1457 | + | ||
1458 | + | func hL (hM) = { | |
1459 | + | let hN = hM[bb] | |
1460 | + | func hO (eO,hP) = (eO + parseIntValue(hP)) | |
1461 | + | ||
1462 | + | func hQ (eO,hP) = { | |
1463 | + | let cZ = eO._1 | |
1464 | + | let eH = (((parseIntValue(hP) + aX) - 1) / aX) | |
1465 | + | $Tuple2((cZ + 1), (eO._2 + (eH * cD))) | |
1409 | 1466 | } | |
1410 | 1467 | ||
1411 | - | let | |
1412 | - | let | |
1413 | - | let | |
1414 | - | let | |
1415 | - | func | |
1416 | - | then | |
1417 | - | else | |
1418 | - | ||
1419 | - | func | |
1420 | - | then | |
1468 | + | let hR = { | |
1469 | + | let eQ = split(hM[aZ], "_") | |
1470 | + | let eR = size(eQ) | |
1471 | + | let eS = 0 | |
1472 | + | func eT (eU,eV) = if ((eV >= eR)) | |
1473 | + | then eU | |
1474 | + | else hO(eU, eQ[eV]) | |
1475 | + | ||
1476 | + | func eW (eU,eV) = if ((eV >= eR)) | |
1477 | + | then eU | |
1421 | 1478 | else throw("List size exceeds 6") | |
1422 | 1479 | ||
1423 | - | | |
1480 | + | eW(eT(eT(eT(eT(eT(eT(eS, 0), 1), 2), 3), 4), 5), 6) | |
1424 | 1481 | } | |
1425 | - | let | |
1426 | - | let | |
1427 | - | let | |
1428 | - | let | |
1429 | - | func | |
1430 | - | then | |
1431 | - | else | |
1432 | - | ||
1433 | - | func | |
1434 | - | then | |
1482 | + | let hS = { | |
1483 | + | let eQ = split(hM[ba], "_") | |
1484 | + | let eR = size(eQ) | |
1485 | + | let eS = 0 | |
1486 | + | func hC (eU,eV) = if ((eV >= eR)) | |
1487 | + | then eU | |
1488 | + | else hO(eU, eQ[eV]) | |
1489 | + | ||
1490 | + | func hD (eU,eV) = if ((eV >= eR)) | |
1491 | + | then eU | |
1435 | 1492 | else throw("List size exceeds 6") | |
1436 | 1493 | ||
1437 | - | | |
1494 | + | hD(hC(hC(hC(hC(hC(hC(eS, 0), 1), 2), 3), 4), 5), 6) | |
1438 | 1495 | } | |
1439 | - | let | |
1496 | + | let hT = if ((hN == "")) | |
1440 | 1497 | then 0 | |
1441 | - | else ( let | |
1442 | - | let | |
1443 | - | let | |
1444 | - | func | |
1445 | - | then | |
1446 | - | else | |
1447 | - | ||
1448 | - | func | |
1449 | - | then | |
1498 | + | else ( let eQ = split_4C(hN, "_") | |
1499 | + | let eR = size(eQ) | |
1500 | + | let eS = $Tuple2(0, 0) | |
1501 | + | func hF (eU,eV) = if ((eV >= eR)) | |
1502 | + | then eU | |
1503 | + | else hQ(eU, eQ[eV]) | |
1504 | + | ||
1505 | + | func hG (eU,eV) = if ((eV >= eR)) | |
1506 | + | then eU | |
1450 | 1507 | else throw("List size exceeds 50") | |
1451 | 1508 | ||
1452 | - | | |
1453 | - | (( | |
1454 | - | } | |
1455 | - | ||
1456 | - | ||
1457 | - | func | |
1458 | - | let | |
1459 | - | let | |
1460 | - | let | |
1461 | - | let | |
1462 | - | let | |
1463 | - | let | |
1464 | - | then makeString(["0", toString( | |
1509 | + | hG(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(eS, 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 | |
1510 | + | ((hR + hS) + hT) | |
1511 | + | } | |
1512 | + | ||
1513 | + | ||
1514 | + | func hU (hV,hW,hX) = { | |
1515 | + | let hK = ((toString(hW) + "_") + toString(hX)) | |
1516 | + | let hY = hJ(hK) | |
1517 | + | let hZ = valueOrElse(getString(hV), (hK + ":0_0_0_0_0_0:0_0_0_0_0_0::0")) | |
1518 | + | let ia = split_4C(hZ, ":") | |
1519 | + | let ib = hL(ia) | |
1520 | + | let ic = if ((5 > size(ia))) | |
1521 | + | then makeString(["0", toString(ib), toString((hY - ib)), toString(hY)], "_") | |
1465 | 1522 | else { | |
1466 | - | let | |
1467 | - | let | |
1468 | - | let | |
1469 | - | then parseIntValue( | |
1470 | - | else | |
1471 | - | makeString([toString( | |
1472 | - | } | |
1473 | - | [ | |
1474 | - | then | |
1475 | - | else "0_0_0_0_0_0", if ((size(split( | |
1476 | - | then | |
1477 | - | else "0_0_0_0_0_0", | |
1478 | - | } | |
1479 | - | ||
1480 | - | ||
1481 | - | func | |
1482 | - | let | |
1483 | - | let | |
1484 | - | (( | |
1485 | - | } | |
1486 | - | ||
1487 | - | ||
1488 | - | func | |
1523 | + | let id = split(ia[bc], "_") | |
1524 | + | let ie = parseIntValue(id[bd]) | |
1525 | + | let if = if ((size(id) > 1)) | |
1526 | + | then parseIntValue(id[be]) | |
1527 | + | else ib | |
1528 | + | makeString([toString(ie), toString(if), toString(((hY - ie) - if)), toString(hY)], "_") | |
1529 | + | } | |
1530 | + | [ia[aY], if ((size(split(ia[aZ], "_")) == aF)) | |
1531 | + | then ia[aZ] | |
1532 | + | else "0_0_0_0_0_0", if ((size(split(ia[ba], "_")) == aF)) | |
1533 | + | then ia[ba] | |
1534 | + | else "0_0_0_0_0_0", ia[bb], ic] | |
1535 | + | } | |
1536 | + | ||
1537 | + | ||
1538 | + | func ig (hM) = { | |
1539 | + | let ih = hL(hM) | |
1540 | + | let ii = parseIntValue(split(hM[bc], "_")[bd]) | |
1541 | + | ((hJ(hM[aY]) - ih) - ii) | |
1542 | + | } | |
1543 | + | ||
1544 | + | ||
1545 | + | func ij (ik,hM,il) = if ((size(ik) != 3)) | |
1489 | 1546 | then throw("cargoListStr should contain exactly 2 ':' separators") | |
1490 | 1547 | else { | |
1491 | - | let | |
1492 | - | let | |
1493 | - | let | |
1548 | + | let im = split(ik[0], "_") | |
1549 | + | let in = split(ik[1], "_") | |
1550 | + | let io = if ((ik[2] == "")) | |
1494 | 1551 | then nil | |
1495 | - | else split_4C( | |
1496 | - | if ((size( | |
1552 | + | else split_4C(ik[2], "_") | |
1553 | + | if ((size(im) != aF)) | |
1497 | 1554 | then throw("All 6 resources should be passed") | |
1498 | - | else if ((size( | |
1555 | + | else if ((size(in) != aF)) | |
1499 | 1556 | then throw("All 6 materials should be passed") | |
1500 | 1557 | else { | |
1501 | - | let | |
1502 | - | let | |
1503 | - | let | |
1504 | - | let | |
1558 | + | let gW = ig(hM) | |
1559 | + | let ip = split(hM[aZ], "_") | |
1560 | + | let iq = split(hM[ba], "_") | |
1561 | + | let ir = if ((hM[bb] == "")) | |
1505 | 1562 | then nil | |
1506 | - | else split_4C( | |
1507 | - | let | |
1508 | - | let | |
1509 | - | let | |
1563 | + | else split_4C(hM[bb], "_") | |
1564 | + | let gU = split(il[bi], "_") | |
1565 | + | let is = split(il[bj], "_") | |
1566 | + | let it = if ((il[bk] == "")) | |
1510 | 1567 | then nil | |
1511 | - | else split_4C( | |
1512 | - | func | |
1513 | - | let | |
1514 | - | let | |
1515 | - | let | |
1516 | - | let | |
1517 | - | if (( | |
1518 | - | then $Tuple4(( | |
1519 | - | else if (( | |
1520 | - | then if (( | |
1521 | - | then throw((((("Attempt to take " + | |
1522 | - | else $Tuple4(( | |
1523 | - | else if ((-( | |
1524 | - | then throw((((("Attempt to take " + toString(-( | |
1525 | - | else $Tuple4(( | |
1568 | + | else split_4C(il[bk], "_") | |
1569 | + | func iu (eO,hP) = { | |
1570 | + | let gH = eO._1 | |
1571 | + | let iv = parseIntValue(hP) | |
1572 | + | let iw = parseIntValue(ip[gH]) | |
1573 | + | let ix = parseIntValue(gU[gH]) | |
1574 | + | if ((iv == 0)) | |
1575 | + | then $Tuple4((gH + 1), (eO._2 :+ ip[gH]), (eO._3 :+ gU[gH]), eO._4) | |
1576 | + | else if ((iv > 0)) | |
1577 | + | then if ((iv > ix)) | |
1578 | + | then throw((((("Attempt to take " + hP) + " from backpack, but only ") + toString(ix)) + " available")) | |
1579 | + | else $Tuple4((gH + 1), (eO._2 :+ toString((iw + iv))), (eO._3 :+ toString((ix - iv))), (eO._4 + iv)) | |
1580 | + | else if ((-(iv) > iw)) | |
1581 | + | then throw((((("Attempt to take " + toString(-(iv))) + " from warehouse, but only ") + toString(iw)) + " available")) | |
1582 | + | else $Tuple4((gH + 1), (eO._2 :+ toString((iw + iv))), (eO._3 :+ toString((ix - iv))), (eO._4 + iv)) | |
1526 | 1583 | } | |
1527 | 1584 | ||
1528 | - | let | |
1529 | - | let | |
1530 | - | let | |
1531 | - | let | |
1532 | - | func | |
1533 | - | then | |
1534 | - | else | |
1535 | - | ||
1536 | - | func | |
1537 | - | then | |
1585 | + | let eZ = { | |
1586 | + | let eQ = im | |
1587 | + | let eR = size(eQ) | |
1588 | + | let eS = $Tuple4(0, nil, nil, 0) | |
1589 | + | func eT (eU,eV) = if ((eV >= eR)) | |
1590 | + | then eU | |
1591 | + | else iu(eU, eQ[eV]) | |
1592 | + | ||
1593 | + | func eW (eU,eV) = if ((eV >= eR)) | |
1594 | + | then eU | |
1538 | 1595 | else throw("List size exceeds 6") | |
1539 | 1596 | ||
1540 | - | | |
1597 | + | eW(eT(eT(eT(eT(eT(eT(eS, 0), 1), 2), 3), 4), 5), 6) | |
1541 | 1598 | } | |
1542 | - | func | |
1543 | - | let | |
1544 | - | let | |
1545 | - | let | |
1546 | - | let | |
1547 | - | if (( | |
1548 | - | then $Tuple4(( | |
1549 | - | else if (( | |
1550 | - | then if (( | |
1551 | - | then throw((((("Attempt to take " + | |
1552 | - | else $Tuple4(( | |
1553 | - | else if ((-( | |
1554 | - | then throw((((("Attempt to take " + toString(-( | |
1555 | - | else $Tuple4(( | |
1599 | + | func iy (eO,hP) = { | |
1600 | + | let gH = eO._1 | |
1601 | + | let iv = parseIntValue(hP) | |
1602 | + | let iz = parseIntValue(iq[gH]) | |
1603 | + | let iA = parseIntValue(is[gH]) | |
1604 | + | if ((iv == 0)) | |
1605 | + | then $Tuple4((gH + 1), (eO._2 :+ iq[gH]), (eO._3 :+ is[gH]), eO._4) | |
1606 | + | else if ((iv > 0)) | |
1607 | + | then if ((iv > iA)) | |
1608 | + | then throw((((("Attempt to take " + hP) + " from backpack, but only ") + toString(iA)) + " available")) | |
1609 | + | else $Tuple4((gH + 1), (eO._2 :+ toString((iz + iv))), (eO._3 :+ toString((iA - iv))), (eO._4 + iv)) | |
1610 | + | else if ((-(iv) > iz)) | |
1611 | + | then throw((((("Attempt to take " + toString(-(iv))) + " from warehouse, but only ") + toString(iz)) + " available")) | |
1612 | + | else $Tuple4((gH + 1), (eO._2 :+ toString((iz + iv))), (eO._3 :+ toString((iA - iv))), (eO._4 + iv)) | |
1556 | 1613 | } | |
1557 | 1614 | ||
1558 | - | let | |
1559 | - | let | |
1560 | - | let | |
1561 | - | let | |
1562 | - | func | |
1563 | - | then | |
1564 | - | else | |
1565 | - | ||
1566 | - | func | |
1567 | - | then | |
1615 | + | let gn = { | |
1616 | + | let eQ = in | |
1617 | + | let eR = size(eQ) | |
1618 | + | let eS = $Tuple4(0, nil, nil, eZ._4) | |
1619 | + | func hC (eU,eV) = if ((eV >= eR)) | |
1620 | + | then eU | |
1621 | + | else iy(eU, eQ[eV]) | |
1622 | + | ||
1623 | + | func hD (eU,eV) = if ((eV >= eR)) | |
1624 | + | then eU | |
1568 | 1625 | else throw("List size exceeds 6") | |
1569 | 1626 | ||
1570 | - | | |
1627 | + | hD(hC(hC(hC(hC(hC(hC(eS, 0), 1), 2), 3), 4), 5), 6) | |
1571 | 1628 | } | |
1572 | - | func | |
1573 | - | let | |
1574 | - | let | |
1575 | - | let | |
1576 | - | then parseIntValue( | |
1629 | + | func iB (eO,hP) = { | |
1630 | + | let gH = eO._1 | |
1631 | + | let iv = parseIntValue(hP) | |
1632 | + | let iC = if ((size(ir) > gH)) | |
1633 | + | then parseIntValue(ir[gH]) | |
1577 | 1634 | else 0 | |
1578 | - | let | |
1579 | - | then parseIntValue( | |
1635 | + | let iD = if ((size(it) > gH)) | |
1636 | + | then parseIntValue(it[gH]) | |
1580 | 1637 | else 0 | |
1581 | - | if (( | |
1582 | - | then $Tuple4(( | |
1583 | - | else if (( | |
1584 | - | then if (( | |
1585 | - | then throw((((("Attempt to take " + | |
1638 | + | if ((iv == 0)) | |
1639 | + | then $Tuple4((gH + 1), (eO._2 :+ toString(iC)), (eO._3 :+ toString(iD)), eO._4) | |
1640 | + | else if ((iv > 0)) | |
1641 | + | then if ((iv > iD)) | |
1642 | + | then throw((((("Attempt to take " + hP) + " from backpack, but only ") + toString(iD)) + " available")) | |
1586 | 1643 | else { | |
1587 | - | let | |
1588 | - | $Tuple4(( | |
1644 | + | let fQ = (eE((iC + iv), aX) - eE(iC, aX)) | |
1645 | + | $Tuple4((gH + 1), (eO._2 :+ toString((iC + iv))), (eO._3 :+ toString((iD - iv))), (eO._4 + fQ)) | |
1589 | 1646 | } | |
1590 | - | else if ((-( | |
1591 | - | then throw((((("Attempt to take " + toString(-( | |
1647 | + | else if ((-(iv) > iC)) | |
1648 | + | then throw((((("Attempt to take " + toString(-(iv))) + " from warehouse, but only ") + toString(iC)) + " available")) | |
1592 | 1649 | else { | |
1593 | - | let | |
1594 | - | $Tuple4(( | |
1650 | + | let fQ = (eE((iC + iv), aX) - eE(iC, aX)) | |
1651 | + | $Tuple4((gH + 1), (eO._2 :+ toString((iC + iv))), (eO._3 :+ toString((iD - iv))), (eO._4 + fQ)) | |
1595 | 1652 | } | |
1596 | 1653 | } | |
1597 | 1654 | ||
1598 | - | let | |
1655 | + | let gr = if ((size(io) != 0)) | |
1599 | 1656 | then { | |
1600 | - | let | |
1601 | - | let | |
1602 | - | let | |
1603 | - | func | |
1604 | - | then | |
1605 | - | else | |
1606 | - | ||
1607 | - | func | |
1608 | - | then | |
1657 | + | let eQ = io | |
1658 | + | let eR = size(eQ) | |
1659 | + | let eS = $Tuple4(0, nil, nil, gn._4) | |
1660 | + | func hF (eU,eV) = if ((eV >= eR)) | |
1661 | + | then eU | |
1662 | + | else iB(eU, eQ[eV]) | |
1663 | + | ||
1664 | + | func hG (eU,eV) = if ((eV >= eR)) | |
1665 | + | then eU | |
1609 | 1666 | else throw("List size exceeds 50") | |
1610 | 1667 | ||
1611 | - | | |
1668 | + | hG(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(eS, 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) | |
1612 | 1669 | } | |
1613 | - | else $Tuple4(0, | |
1614 | - | let | |
1615 | - | if (( | |
1616 | - | then throw((((("Attempt to put total " + toString( | |
1617 | - | else $Tuple7(makeString( | |
1670 | + | else $Tuple4(0, ir, it, gn._4) | |
1671 | + | let iE = gr._4 | |
1672 | + | if ((iE > gW)) | |
1673 | + | then throw((((("Attempt to put total " + toString(iE)) + " stuff, but only ") + toString(gW)) + " warehouse space left")) | |
1674 | + | else $Tuple7(makeString(eZ._2, "_"), makeString(gn._2, "_"), makeString_2C(gr._2, "_"), makeString(eZ._3, "_"), makeString(gn._3, "_"), makeString_2C(gr._3, "_"), iE) | |
1618 | 1675 | } | |
1619 | 1676 | } | |
1620 | 1677 | ||
1621 | 1678 | ||
1622 | - | func | |
1623 | - | let | |
1624 | - | let | |
1625 | - | let | |
1626 | - | let | |
1627 | - | let | |
1628 | - | let | |
1629 | - | let | |
1630 | - | let | |
1631 | - | let | |
1632 | - | let | |
1633 | - | $Tuple2([IntegerEntry( | |
1634 | - | } | |
1635 | - | ||
1636 | - | ||
1637 | - | func | |
1679 | + | func iF (iG,iH) = { | |
1680 | + | let bL = toString(iG) | |
1681 | + | let iI = hc(toBigInt(iH)) | |
1682 | + | let iJ = valueOrElse(getInteger(em()), (el + 1)) | |
1683 | + | let eq = toString(iJ) | |
1684 | + | let hl = toInt((iI % ef)) | |
1685 | + | let gK = hj(iI, hl) | |
1686 | + | let ds = aP[hl] | |
1687 | + | let iK = Issue(eD(eq, "S"), makeString([eq, "S", gK, ds], "_"), 1, 0, false) | |
1688 | + | let bp = calculateAssetId(iK) | |
1689 | + | let iL = toBase58String(bp) | |
1690 | + | $Tuple2([IntegerEntry(em(), (iJ + 1)), iK, StringEntry(ep(eq), iL), StringEntry(bo(iL), bL), StringEntry(es(eq), bL), IntegerEntry(by(iL), 0), IntegerEntry(er(iL, bL), 0), ScriptTransfer(iG, 1, bp)], $Tuple2(iL, ds)) | |
1691 | + | } | |
1692 | + | ||
1693 | + | ||
1694 | + | func iM (bL,iN,iO) = if (!(sigVerify_8Kb(iN, iO, dW))) | |
1638 | 1695 | then throw("signature does not match") | |
1639 | 1696 | else { | |
1640 | - | let | |
1641 | - | let | |
1642 | - | let | |
1643 | - | let | |
1644 | - | let | |
1645 | - | let | |
1646 | - | let | |
1647 | - | let | |
1648 | - | if (if (( | |
1697 | + | let fm = split_4C(toUtf8String(iN), ";") | |
1698 | + | let iP = split_4C(fm[0], "|") | |
1699 | + | let iQ = split(iP[ez], "_") | |
1700 | + | let iR = parseIntValue(iQ[0]) | |
1701 | + | let iS = parseIntValue(iQ[1]) | |
1702 | + | let iT = split(fm[1], ":") | |
1703 | + | let iU = iT[0] | |
1704 | + | let iV = parseIntValue(iP[eA]) | |
1705 | + | if (if ((iV > (lastBlock.timestamp + dY))) | |
1649 | 1706 | then true | |
1650 | - | else ((lastBlock.timestamp - | |
1651 | - | then throw(((("signature outdated: logTime=" + toString( | |
1707 | + | else ((lastBlock.timestamp - dY) > iV)) | |
1708 | + | then throw(((("signature outdated: logTime=" + toString(iV)) + ", bcTime=") + toString(lastBlock.timestamp))) | |
1652 | 1709 | else { | |
1653 | - | let | |
1654 | - | let | |
1655 | - | if (( | |
1656 | - | then throw(((("Tx ids don't match! In state: " + | |
1710 | + | let iW = iT[1] | |
1711 | + | let iX = valueOrElse(getString(dI(bL)), "") | |
1712 | + | if ((iX != iW)) | |
1713 | + | then throw(((("Tx ids don't match! In state: " + iX) + ", in msg: ") + iW)) | |
1657 | 1714 | else { | |
1658 | - | let A = valueOrErrorMessage(getString( | |
1659 | - | let | |
1660 | - | let | |
1661 | - | let | |
1662 | - | if (( | |
1663 | - | then throw(((("oldHealth=" + toString( | |
1664 | - | else if ((0 >= | |
1715 | + | let A = valueOrErrorMessage(getString(bH(bL)), "You don't have a duck staked") | |
1716 | + | let iY = z(A) | |
1717 | + | let iZ = ag(valueOrElse(getInteger(D(A)), 0)) | |
1718 | + | let ja = valueOrElse(getInteger(iY), iZ) | |
1719 | + | if ((ja != iR)) | |
1720 | + | then throw(((("oldHealth=" + toString(ja)) + " from state does not match one from flight log=") + toString(iR))) | |
1721 | + | else if ((0 >= iR)) | |
1665 | 1722 | then throw("You can't fly with zero health") | |
1666 | - | else if (!( | |
1723 | + | else if (!(gt(A))) | |
1667 | 1724 | then throw("Equipment incompatible") | |
1668 | 1725 | else { | |
1669 | - | let | |
1670 | - | then | |
1726 | + | let jb = if ((size(iP) > eB)) | |
1727 | + | then iP[eB] | |
1671 | 1728 | else "" | |
1672 | - | let | |
1673 | - | then | |
1729 | + | let jc = if ((size(iP) > eC)) | |
1730 | + | then iP[eC] | |
1674 | 1731 | else "" | |
1675 | - | let | |
1676 | - | then ( | |
1732 | + | let jd = if (if ((iS > 0)) | |
1733 | + | then (jb == "$") | |
1677 | 1734 | else false) | |
1678 | - | then | |
1735 | + | then dy(invoke(da, "sendUsdtPrize", [bL], nil)) | |
1679 | 1736 | else 0 | |
1680 | - | $Tuple5( | |
1737 | + | $Tuple5(iS, A, jd, iU, jc) | |
1681 | 1738 | } | |
1682 | 1739 | } | |
1683 | 1740 | } | |
1684 | 1741 | } | |
1685 | 1742 | ||
1686 | 1743 | ||
1687 | - | func | |
1688 | - | let | |
1689 | - | let | |
1690 | - | let | |
1691 | - | let | |
1692 | - | ((aH + fraction(aH, (( | |
1693 | - | } | |
1694 | - | ||
1695 | - | ||
1696 | - | func | |
1697 | - | let | |
1698 | - | then $Tuple2( | |
1744 | + | func je (P,jf) = { | |
1745 | + | let hX = valueOrElse(getInteger(by(P)), 0) | |
1746 | + | let jg = valueOrElse(getInteger(bs(aE, P)), 0) | |
1747 | + | let jh = (hX / 6) | |
1748 | + | let ji = (hX / 7) | |
1749 | + | ((aH + fraction(aH, ((hX + jh) + (2 * ji)), 5)) + fraction(aH, jg, (jf * 5))) | |
1750 | + | } | |
1751 | + | ||
1752 | + | ||
1753 | + | func jj (c,jk,jl) = { | |
1754 | + | let jm = if ((jk == ew)) | |
1755 | + | then $Tuple2(jl, valueOrElse(getString(bH(c)), "")) | |
1699 | 1756 | else { | |
1700 | - | let A = valueOrErrorMessage(getString( | |
1701 | - | let | |
1702 | - | let | |
1703 | - | if (( | |
1704 | - | then throw((("Duck location type is " + | |
1705 | - | else $Tuple2( | |
1706 | - | } | |
1707 | - | let P = | |
1708 | - | let | |
1709 | - | let | |
1710 | - | let | |
1711 | - | let | |
1712 | - | let | |
1713 | - | if (( | |
1757 | + | let A = valueOrErrorMessage(getString(bH(c)), "You don't have a duck staked") | |
1758 | + | let jn = valueOrElse(getString(bJ(A)), aJ) | |
1759 | + | let cf = split(value(jn), "_") | |
1760 | + | if ((cf[bm] != "L")) | |
1761 | + | then throw((("Duck location type is " + cf[bm]) + ", but should be L")) | |
1762 | + | else $Tuple2(cf[bn], A) | |
1763 | + | } | |
1764 | + | let P = jm._1 | |
1765 | + | let jo = jm._2 | |
1766 | + | let jp = value(assetInfo(fromBase58String(P))) | |
1767 | + | let jq = br(P) | |
1768 | + | let jr = valueOrErrorMessage(getInteger(jq), (("Land " + jp.name) + " is not staked")) | |
1769 | + | let js = valueOrErrorMessage(getString(bo(P)), (("NFT " + jp.name) + " is orphaned")) | |
1770 | + | if ((js != c)) | |
1714 | 1771 | then throw((aC + " is not yours")) | |
1715 | 1772 | else { | |
1716 | - | let | |
1717 | - | $Tuple4( | |
1718 | - | } | |
1719 | - | } | |
1720 | - | ||
1721 | - | ||
1722 | - | func | |
1773 | + | let jt = split(jp.description, "_") | |
1774 | + | $Tuple4(jo, P, jt, jr) | |
1775 | + | } | |
1776 | + | } | |
1777 | + | ||
1778 | + | ||
1779 | + | func ju (c,eF,jk,jl) = if ((0 > eF)) | |
1723 | 1780 | then throw("Negative amount") | |
1724 | 1781 | else { | |
1725 | - | let | |
1726 | - | let | |
1727 | - | let | |
1728 | - | let | |
1729 | - | if ((0 > | |
1730 | - | then throw(((("Saved timestamp is in future, saved = " + toString( | |
1782 | + | let fX = jj(c, jk, jl) | |
1783 | + | let dF = fX._3[dh] | |
1784 | + | let gD = gJ(fX._3[di]) | |
1785 | + | let gN = (lastBlock.timestamp - fX._4) | |
1786 | + | if ((0 > gN)) | |
1787 | + | then throw(((("Saved timestamp is in future, saved = " + toString(fX._4)) + ", current = ") + toString(lastBlock.timestamp))) | |
1731 | 1788 | else { | |
1732 | - | let | |
1733 | - | let | |
1734 | - | let | |
1735 | - | if (( | |
1736 | - | then throw(((("Not enough resources, available = " + toString( | |
1789 | + | let jf = dE(dF) | |
1790 | + | let jv = je(fX._2, jf) | |
1791 | + | let jw = fraction(gN, (jv * jf), a) | |
1792 | + | if ((eF > jw)) | |
1793 | + | then throw(((("Not enough resources, available = " + toString(jw)) + ", requested = ") + toString(eF))) | |
1737 | 1794 | else { | |
1738 | - | let | |
1739 | - | let | |
1740 | - | let | |
1741 | - | let | |
1742 | - | let | |
1743 | - | let | |
1744 | - | let | |
1745 | - | let | |
1746 | - | let | |
1747 | - | if (if (( | |
1748 | - | then ( | |
1795 | + | let jx = fraction((jw - eF), a, (jv * jf)) | |
1796 | + | let jy = (lastBlock.timestamp - jx) | |
1797 | + | let hW = (jf / cE) | |
1798 | + | let gV = gR(gD, (gN - jx), hW, jv) | |
1799 | + | let hV = bx(fX._2) | |
1800 | + | let hX = valueOrElse(getInteger(by(fX._2)), 0) | |
1801 | + | let hM = hU(hV, hW, hX) | |
1802 | + | let id = split(hM[bc], "_") | |
1803 | + | let gW = parseIntValue(id[bf]) | |
1804 | + | if (if ((jk == ew)) | |
1805 | + | then (eF > gW) | |
1749 | 1806 | else false) | |
1750 | - | then throw((("Only " + toString( | |
1807 | + | then throw((("Only " + toString(gW)) + " space left in warehouse")) | |
1751 | 1808 | else { | |
1752 | - | let | |
1753 | - | let | |
1754 | - | let | |
1755 | - | let | |
1756 | - | let | |
1757 | - | then $Tuple4( | |
1758 | - | else if (( | |
1759 | - | then $Tuple4( | |
1809 | + | let hI = bI(fX._1) | |
1810 | + | let il = hH(hI) | |
1811 | + | let gU = split(il[bi], "_") | |
1812 | + | let gT = split(hM[aZ], "_") | |
1813 | + | let jz = if ((jk == ew)) | |
1814 | + | then $Tuple4(gL(gT, gD, (gN - jx), hW, jv), il[bi], (parseIntValue(id[be]) + gV._2), (parseIntValue(id[bf]) - gV._2)) | |
1815 | + | else if ((jk == ex)) | |
1816 | + | then $Tuple4(hM[aZ], gL(gU, gD, (gN - jx), hW, jv), parseIntValue(id[be]), parseIntValue(id[bf])) | |
1760 | 1817 | else { | |
1761 | - | let | |
1762 | - | let | |
1763 | - | $Tuple4( | |
1818 | + | let jA = gS(gT, gU, gV, gW) | |
1819 | + | let jB = min([parseIntValue(id[bf]), gV._2]) | |
1820 | + | $Tuple4(jA._1, jA._2, (parseIntValue(id[be]) + jB), (parseIntValue(id[bf]) - jB)) | |
1764 | 1821 | } | |
1765 | - | let | |
1766 | - | let | |
1767 | - | let | |
1768 | - | let | |
1769 | - | $Tuple5([IntegerEntry( | |
1822 | + | let jC = jz._1 | |
1823 | + | let jD = jz._2 | |
1824 | + | let jE = jz._3 | |
1825 | + | let jF = jz._4 | |
1826 | + | $Tuple5([IntegerEntry(br(fX._2), jy), IntegerEntry(bu(aC, fX._2, c), jy)], hI, [il[bh], jD, il[bj], il[bk]], hV, [hM[aY], jC, hM[ba], hM[bb], makeString([id[bd], toString(jE), toString(jF), id[bg]], "_")]) | |
1770 | 1827 | } | |
1771 | 1828 | } | |
1772 | 1829 | } | |
1773 | 1830 | } | |
1774 | 1831 | ||
1775 | 1832 | ||
1776 | - | func | |
1777 | - | let | |
1778 | - | let | |
1779 | - | let | |
1780 | - | | |
1781 | - | } | |
1782 | - | ||
1783 | - | ||
1784 | - | func | |
1785 | - | let c = toString( | |
1786 | - | let | |
1787 | - | let | |
1788 | - | let | |
1789 | - | let | |
1790 | - | if (if (!( | |
1791 | - | then ( | |
1833 | + | func jG (c,P,jf,jk) = { | |
1834 | + | let jq = br(P) | |
1835 | + | let jr = value(getInteger(jq)) | |
1836 | + | let jw = (fraction((lastBlock.timestamp - jr), je(P, jf), a) * jf) | |
1837 | + | ju(c, jw, jk, P) | |
1838 | + | } | |
1839 | + | ||
1840 | + | ||
1841 | + | func jH (fb,iG,jI,P) = { | |
1842 | + | let c = toString(iG) | |
1843 | + | let fX = jj(c, ey, P) | |
1844 | + | let jf = dE(fX._3[dh]) | |
1845 | + | let jJ = by(fX._2) | |
1846 | + | let jK = valueOrElse(getInteger(jJ), 0) | |
1847 | + | if (if (!(ct)) | |
1848 | + | then (jK >= 3) | |
1792 | 1849 | else false) | |
1793 | 1850 | then throw("Currently max infrastructure level = 3") | |
1794 | 1851 | else { | |
1795 | - | let | |
1796 | - | let al = ( | |
1797 | - | if (if ( | |
1798 | - | then (al > | |
1852 | + | let jL = ((sqrt(jf, 0, 0, DOWN) / 5) + 2) | |
1853 | + | let al = (jK + 1) | |
1854 | + | if (if (ct) | |
1855 | + | then (al > jL) | |
1799 | 1856 | else false) | |
1800 | - | then throw(("Currently max infrastructure level = " + toString( | |
1857 | + | then throw(("Currently max infrastructure level = " + toString(jL))) | |
1801 | 1858 | else { | |
1802 | - | let | |
1803 | - | if (if (!( | |
1804 | - | then ( | |
1859 | + | let jM = fraction(eb, (jf * al), cE) | |
1860 | + | if (if (!(fb)) | |
1861 | + | then (jI != jM) | |
1805 | 1862 | else false) | |
1806 | - | then throw(("Payment attached should be " + toString( | |
1863 | + | then throw(("Payment attached should be " + toString(jM))) | |
1807 | 1864 | else { | |
1808 | - | let | |
1809 | - | let | |
1810 | - | let | |
1811 | - | let | |
1812 | - | let | |
1813 | - | let | |
1814 | - | let | |
1815 | - | let | |
1816 | - | let | |
1817 | - | let | |
1818 | - | let | |
1819 | - | let | |
1820 | - | $Tuple3(([IntegerEntry( | |
1865 | + | let hI = bI(fX._1) | |
1866 | + | let il = hH(hI) | |
1867 | + | let jN = split(il[bj], "_") | |
1868 | + | let jO = fraction(cz, (jf * al), cE) | |
1869 | + | let jP = makeString(fa(fb, jN, jO), "_") | |
1870 | + | let jQ = jG(c, fX._2, jf, ey) | |
1871 | + | let jR = jQ._5 | |
1872 | + | let jS = hJ(jR[aY]) | |
1873 | + | let jT = makeString([split(jR[aY], "_")[0], toString(al)], "_") | |
1874 | + | let jU = hJ(jT) | |
1875 | + | let id = split(jR[bc], "_") | |
1876 | + | let jV = makeString([id[bd], id[be], toString(((parseIntValue(id[bf]) + jU) - jS)), toString(jU)], "_") | |
1877 | + | $Tuple3(([IntegerEntry(jJ, al), IntegerEntry(er(fX._2, c), al), StringEntry(hI, makeString([il[bh], jQ._3[bi], jP, il[bk]], ":")), StringEntry(jQ._4, makeString([jT, jR[aZ], jR[ba], jR[bb], jV], ":"))] ++ jQ._1), al, jO) | |
1821 | 1878 | } | |
1822 | 1879 | } | |
1823 | 1880 | } | |
1824 | 1881 | } | |
1825 | 1882 | ||
1826 | 1883 | ||
1827 | - | func | |
1828 | - | let | |
1829 | - | let | |
1830 | - | let af = valueOrElse(getInteger(an, | |
1831 | - | let ak = (af + | |
1832 | - | let | |
1833 | - | let | |
1834 | - | $Tuple2([IntegerEntry( | |
1835 | - | } | |
1836 | - | ||
1837 | - | ||
1838 | - | func | |
1839 | - | let | |
1840 | - | let | |
1841 | - | let af = valueOrElse(getInteger(an, | |
1842 | - | let ak = (af + | |
1843 | - | let | |
1844 | - | let | |
1845 | - | $Tuple2([IntegerEntry( | |
1846 | - | } | |
1847 | - | ||
1848 | - | ||
1849 | - | func | |
1850 | - | let A = valueOrErrorMessage(getString( | |
1851 | - | let | |
1852 | - | let | |
1853 | - | if (!(isDefined( | |
1884 | + | func jW (A,jX) = { | |
1885 | + | let jY = D(A) | |
1886 | + | let jZ = C(A) | |
1887 | + | let af = valueOrElse(getInteger(an, jZ), 0) | |
1888 | + | let ak = (af + jX) | |
1889 | + | let ka = ai(valueOrElse(getInteger(an, jY), 0), ak) | |
1890 | + | let kb = E(A) | |
1891 | + | $Tuple2([IntegerEntry(jY, ka[0]), IntegerEntry(jZ, ak), IntegerEntry(kb, (valueOrElse(getInteger(kb), 0) + ka[1]))], ak) | |
1892 | + | } | |
1893 | + | ||
1894 | + | ||
1895 | + | func kc (c,jX) = { | |
1896 | + | let jY = H(c) | |
1897 | + | let jZ = G(c) | |
1898 | + | let af = valueOrElse(getInteger(an, jZ), 0) | |
1899 | + | let ak = (af + jX) | |
1900 | + | let ka = ai(valueOrElse(getInteger(an, jY), 0), ak) | |
1901 | + | let kb = I(c) | |
1902 | + | $Tuple2([IntegerEntry(jY, ka[0]), IntegerEntry(jZ, ak), IntegerEntry(kb, (valueOrElse(getInteger(kb), 0) + ka[1]))], ak) | |
1903 | + | } | |
1904 | + | ||
1905 | + | ||
1906 | + | func kd (c) = { | |
1907 | + | let A = valueOrErrorMessage(getString(bH(c)), "You don't have a duck staked") | |
1908 | + | let ke = bC(c) | |
1909 | + | let kf = getString(ke) | |
1910 | + | if (!(isDefined(kf))) | |
1854 | 1911 | then throw("You are not eligible for ONBOARD artifact") | |
1855 | 1912 | else { | |
1856 | - | let | |
1857 | - | let | |
1858 | - | if (isDefined( | |
1859 | - | then throw(("You already used your ONBOARD artifact on duck " + value( | |
1913 | + | let kg = bE(c) | |
1914 | + | let kh = getString(kg) | |
1915 | + | if (isDefined(kh)) | |
1916 | + | then throw(("You already used your ONBOARD artifact on duck " + value(kh))) | |
1860 | 1917 | else { | |
1861 | - | let | |
1862 | - | let | |
1863 | - | if (isDefined( | |
1864 | - | then throw(((("The duck " + A) + " already got points from ONBOARD artifact from user ") + value( | |
1865 | - | else ([StringEntry( | |
1918 | + | let ki = bD(A) | |
1919 | + | let kj = getString(ki) | |
1920 | + | if (isDefined(kj)) | |
1921 | + | then throw(((("The duck " + A) + " already got points from ONBOARD artifact from user ") + value(kj))) | |
1922 | + | else ([StringEntry(kg, A), StringEntry(ki, c)] ++ jW(A, ac)._1) | |
1866 | 1923 | } | |
1867 | 1924 | } | |
1868 | 1925 | } | |
1869 | 1926 | ||
1870 | 1927 | ||
1871 | - | func | |
1872 | - | let | |
1873 | - | let P = | |
1874 | - | let | |
1875 | - | let | |
1876 | - | if ((valueOrElse(getInteger( | |
1928 | + | func kk (c,jl) = { | |
1929 | + | let fX = jj(c, ey, jl) | |
1930 | + | let P = fX._2 | |
1931 | + | let jf = dE(fX._3[dh]) | |
1932 | + | let kl = bs(aE, P) | |
1933 | + | if ((valueOrElse(getInteger(kl), 0) > 0)) | |
1877 | 1934 | then throw("Presale artifact is already activated") | |
1878 | - | else if ((parseIntValue( | |
1935 | + | else if ((parseIntValue(fX._3[dg]) > el)) | |
1879 | 1936 | then throw((((aC + " ") + P) + " is not eligible for presale artifact")) | |
1880 | 1937 | else { | |
1881 | - | let | |
1882 | - | ((( | |
1938 | + | let jQ = jG(c, P, jf, ey) | |
1939 | + | (((jQ._1 :+ IntegerEntry(kl, jf)) :+ StringEntry(jQ._2, makeString(jQ._3, ":"))) :+ StringEntry(jQ._4, makeString(jQ._5, ":"))) | |
1883 | 1940 | } | |
1884 | 1941 | } | |
1885 | 1942 | ||
1886 | 1943 | ||
1887 | - | func | |
1888 | - | let | |
1889 | - | let | |
1944 | + | func km (A) = { | |
1945 | + | let ce = valueOrElse(getInteger(de, bP), 0) | |
1946 | + | let jn = split(valueOrElse(getString(bJ(A)), aJ), "_") | |
1890 | 1947 | let ax = lastBlock.timestamp | |
1891 | - | let | |
1892 | - | let | |
1893 | - | let | |
1894 | - | if (( | |
1948 | + | let cg = bY(de, ce) | |
1949 | + | let ca = cg[bU] | |
1950 | + | let cb = cg[bV] | |
1951 | + | if ((jn[bm] != "T")) | |
1895 | 1952 | then false | |
1896 | - | else if (if (if ((parseIntValue( | |
1897 | - | then ( | |
1953 | + | else if (if (if ((parseIntValue(jn[bl]) == ce)) | |
1954 | + | then (cb[bX] == "INPROGRESS") | |
1898 | 1955 | else false) | |
1899 | - | then (parseIntValue( | |
1956 | + | then (parseIntValue(ca[bW]) > ax) | |
1900 | 1957 | else false) | |
1901 | 1958 | then throw("Your duck is taking part in the tournament") | |
1902 | - | else | |
1903 | - | } | |
1904 | - | ||
1905 | - | ||
1906 | - | func | |
1907 | - | let | |
1959 | + | else dA(invoke(this, "exitTournamentInternal", [A], nil)) | |
1960 | + | } | |
1961 | + | ||
1962 | + | ||
1963 | + | func kn (A) = { | |
1964 | + | let jn = split(valueOrElse(getString(bJ(A)), aJ), "_") | |
1908 | 1965 | let ax = lastBlock.timestamp | |
1909 | - | if (( | |
1966 | + | if ((jn[bm] != "D")) | |
1910 | 1967 | then false | |
1911 | 1968 | else { | |
1912 | - | let | |
1913 | - | let | |
1914 | - | if (if ((ax > ( | |
1915 | - | then (3 > | |
1969 | + | let ci = parseIntValue(jn[bl]) | |
1970 | + | let cj = parseIntValue(jn[bn]) | |
1971 | + | if (if ((ax > (ci + aN))) | |
1972 | + | then (3 > cj) | |
1916 | 1973 | else false) | |
1917 | 1974 | then throw("Your duck is on delivery mission") | |
1918 | - | else dq(invoke(this, "exitDeliveryInternal", [A], nil)) | |
1919 | - | } | |
1920 | - | } | |
1921 | - | ||
1922 | - | ||
1923 | - | func kf (kg,al,kh,c,ki,kj) = { | |
1924 | - | let A = valueOrErrorMessage(getString(bG(c)), "You don't have a duck staked") | |
1925 | - | if (kb(A)) | |
1975 | + | else dA(invoke(this, "exitDeliveryInternal", [A], nil)) | |
1976 | + | } | |
1977 | + | } | |
1978 | + | ||
1979 | + | ||
1980 | + | func ko (A) = { | |
1981 | + | let jn = split(valueOrElse(getString(bJ(A)), aJ), "_") | |
1982 | + | let ax = lastBlock.timestamp | |
1983 | + | let ci = parseIntValue(jn[bl]) | |
1984 | + | let cj = parseIntValue(jn[bn]) | |
1985 | + | let js = valueOrErrorMessage(getString(bG(A)), "NFT duck is orphaned") | |
1986 | + | let kp = z(A) | |
1987 | + | let kq = getIntegerValue(kp) | |
1988 | + | let kr = if ((cj >= 3)) | |
1989 | + | then { | |
1990 | + | let ks = invoke(db, "sendDeliveryReward", [js], nil) | |
1991 | + | if ((ks == ks)) | |
1992 | + | then nil | |
1993 | + | else throw("Strict value is not equal to itself.") | |
1994 | + | } | |
1995 | + | else if ((ax > (ci + aN))) | |
1996 | + | then throw("Your duck is still on delivery mission") | |
1997 | + | else { | |
1998 | + | let kt = valueOrElse(getInteger(db, bO), 0) | |
1999 | + | let ku = invoke(db, "updateDeliveryLocked", [(kt - aM)], nil) | |
2000 | + | if ((ku == ku)) | |
2001 | + | then if ((0 >= kq)) | |
2002 | + | then nil | |
2003 | + | else [IntegerEntry(T(A), (ci + a))] | |
2004 | + | else throw("Strict value is not equal to itself.") | |
2005 | + | } | |
2006 | + | let kv = getIntegerValue(J(A)) | |
2007 | + | let kw = getStringValue(K(A)) | |
2008 | + | $Tuple4(kr, [IntegerEntry(kp, kv), StringEntry(bJ(A), kw)], kw, kv) | |
2009 | + | } | |
2010 | + | ||
2011 | + | ||
2012 | + | func kx (ky,al,kz,c,kA,kB) = { | |
2013 | + | let A = valueOrErrorMessage(getString(bH(c)), "You don't have a duck staked") | |
2014 | + | if (km(A)) | |
1926 | 2015 | then throw("mergeInternal_checkTournament") | |
1927 | - | else if ( | |
2016 | + | else if (kn(A)) | |
1928 | 2017 | then throw("mergeInternal_checkDelivery") | |
1929 | 2018 | else { | |
1930 | - | func | |
1931 | - | let | |
1932 | - | let | |
1933 | - | let | |
1934 | - | let | |
1935 | - | if (( | |
2019 | + | func kC (eO,P) = { | |
2020 | + | let jp = value(assetInfo(fromBase58String(P))) | |
2021 | + | let jq = br(P) | |
2022 | + | let jr = valueOrErrorMessage(getInteger(jq), (("NFT " + jp.name) + " is not staked")) | |
2023 | + | let js = valueOrErrorMessage(getString(bo(P)), (("NFT " + jp.name) + " is orphaned")) | |
2024 | + | if ((js != c)) | |
1936 | 2025 | then throw((aC + " is not yours")) | |
1937 | 2026 | else { | |
1938 | - | let | |
1939 | - | let | |
1940 | - | if (if (( | |
1941 | - | then ( | |
2027 | + | let jt = split(jp.description, "_") | |
2028 | + | let ds = jt[dj] | |
2029 | + | if (if ((eO._3 != "")) | |
2030 | + | then (eO._3 != ds) | |
1942 | 2031 | else false) | |
1943 | 2032 | then throw("Lands should be on the same continent to merge") | |
1944 | 2033 | else { | |
1945 | - | let | |
1946 | - | let | |
1947 | - | let | |
1948 | - | let | |
1949 | - | let | |
1950 | - | let | |
1951 | - | let | |
1952 | - | let | |
1953 | - | let | |
1954 | - | if (("S" == | |
2034 | + | let dF = jt[dh] | |
2035 | + | let kD = eO._1 | |
2036 | + | let gH = valueOrErrorMessage(indexOf(kD, dF), "You haven't passed all the lands needed") | |
2037 | + | let kE = (take(kD, gH) + drop(kD, (gH + 1))) | |
2038 | + | let jf = dE(dF) | |
2039 | + | let kF = (eO._2 + valueOrElse(getInteger(bs(aE, P)), 0)) | |
2040 | + | let hX = valueOrElse(getInteger(by(P)), 0) | |
2041 | + | let kG = { | |
2042 | + | let cx = dF | |
2043 | + | if (("S" == cx)) | |
1955 | 2044 | then 3 | |
1956 | - | else if (("M" == | |
2045 | + | else if (("M" == cx)) | |
1957 | 2046 | then 4 | |
1958 | - | else if (("L" == | |
2047 | + | else if (("L" == cx)) | |
1959 | 2048 | then 5 | |
1960 | - | else if (("XL" == | |
2049 | + | else if (("XL" == cx)) | |
1961 | 2050 | then 6 | |
1962 | 2051 | else throw("Only S, M, L, XL can merge") | |
1963 | 2052 | } | |
1964 | - | if (( | |
2053 | + | if ((hX != kG)) | |
1965 | 2054 | then throw("All lands should be maxed to merge") | |
1966 | 2055 | else { | |
1967 | - | let | |
1968 | - | let | |
1969 | - | let | |
1970 | - | if ((0 > | |
1971 | - | then throw(((("Saved timestamp is in future, saved = " + toString( | |
2056 | + | let eq = jt[dg] | |
2057 | + | let gD = gJ(jt[di]) | |
2058 | + | let gN = (lastBlock.timestamp - jr) | |
2059 | + | if ((0 > gN)) | |
2060 | + | then throw(((("Saved timestamp is in future, saved = " + toString(jr)) + ", current = ") + toString(lastBlock.timestamp))) | |
1972 | 2061 | else { | |
1973 | - | let | |
1974 | - | let | |
1975 | - | let | |
1976 | - | let | |
1977 | - | let | |
1978 | - | let | |
1979 | - | let | |
1980 | - | let | |
1981 | - | if (!(isDefined( | |
2062 | + | let jv = je(P, jf) | |
2063 | + | let hW = (jf / cE) | |
2064 | + | let jD = gL(split(eO._4, "_"), gD, gN, hW, jv) | |
2065 | + | let eY = gB(eO._6, gD, hW, -1) | |
2066 | + | let kH = gB(eO._10, gD, hW, -1) | |
2067 | + | let hr = gB(eO._9, gD, hW, 1) | |
2068 | + | let kI = eO._7 | |
2069 | + | let cZ = indexOf(kI, P) | |
2070 | + | if (!(isDefined(cZ))) | |
1982 | 2071 | then throw(("Your staked lands don't contain " + P)) | |
1983 | 2072 | else { | |
1984 | - | let | |
1985 | - | let | |
1986 | - | $Tuple10( | |
1987 | - | then [DeleteEntry( | |
1988 | - | else nil)), | |
2073 | + | let kJ = bq(P) | |
2074 | + | let kK = valueOrElse(getString(kJ), "") | |
2075 | + | $Tuple10(kE, kF, ds, jD, ((((((((((((eO._5 :+ DeleteEntry(br(P))) :+ DeleteEntry(bu(aC, P, c))) :+ DeleteEntry(ep(eq))) :+ DeleteEntry(bo(P))) :+ DeleteEntry(by(P))) :+ DeleteEntry(er(P, c))) :+ DeleteEntry(bs(aE, P))) :+ DeleteEntry(es(eq))) :+ DeleteEntry(bx(P))) :+ DeleteEntry(kJ)) :+ Burn(fromBase58String(P), 1)) ++ (if ((kK != "")) | |
2076 | + | then [DeleteEntry(en(kK))] | |
2077 | + | else nil)), eY, removeByIndex(kI, value(cZ)), (eO._8 + jf), hr, kH) | |
1989 | 2078 | } | |
1990 | 2079 | } | |
1991 | 2080 | } | |
1993 | 2082 | } | |
1994 | 2083 | } | |
1995 | 2084 | ||
1996 | - | let | |
1997 | - | let | |
1998 | - | let | |
1999 | - | let | |
2000 | - | let | |
2001 | - | let | |
2002 | - | then split_51C(value( | |
2085 | + | let hI = bI(A) | |
2086 | + | let il = hH(hI) | |
2087 | + | let gC = split(valueOrElse(getString(dq()), "0_0_0_0_0_0"), "_") | |
2088 | + | let kL = dt(c) | |
2089 | + | let kM = getString(kL) | |
2090 | + | let kN = if (isDefined(kM)) | |
2091 | + | then split_51C(value(kM), "_") | |
2003 | 2092 | else nil | |
2004 | - | let | |
2005 | - | let | |
2006 | - | let | |
2007 | - | let | |
2008 | - | let | |
2009 | - | let | |
2010 | - | func | |
2011 | - | then | |
2012 | - | else | |
2013 | - | ||
2014 | - | func | |
2015 | - | then | |
2093 | + | let kO = split(value(assetInfo(fromBase58String(kA[0]))).description, "_")[dj] | |
2094 | + | let kP = split(valueOrElse(getString(dr(kO)), "0_0_0_0_0_0"), "_") | |
2095 | + | let eZ = { | |
2096 | + | let eQ = kA | |
2097 | + | let eR = size(eQ) | |
2098 | + | let eS = $Tuple10(kz, 0, "", il[bi], nil, gC, kN, 0, split("0_0_0_0_0_0", "_"), kP) | |
2099 | + | func eT (eU,eV) = if ((eV >= eR)) | |
2100 | + | then eU | |
2101 | + | else kC(eU, eQ[eV]) | |
2102 | + | ||
2103 | + | func eW (eU,eV) = if ((eV >= eR)) | |
2104 | + | then eU | |
2016 | 2105 | else throw("List size exceeds 5") | |
2017 | 2106 | ||
2018 | - | | |
2107 | + | eW(eT(eT(eT(eT(eT(eS, 0), 1), 2), 3), 4), 5) | |
2019 | 2108 | } | |
2020 | - | let | |
2021 | - | let | |
2022 | - | let | |
2023 | - | let | |
2024 | - | let | |
2025 | - | let | |
2026 | - | let | |
2027 | - | let | |
2028 | - | let | |
2029 | - | let | |
2030 | - | let | |
2031 | - | $Tuple2(((((((((((((((( | |
2032 | - | then StringEntry( | |
2033 | - | else DeleteEntry( | |
2109 | + | let ds = eZ._3 | |
2110 | + | let hl = valueOrErrorMessage(indexOf(aP, ds), ("Unknown continent: " + ds)) | |
2111 | + | let gK = hq(eZ._9, (dE(ky) / cE)) | |
2112 | + | let iJ = valueOrElse(getInteger(em()), (el + 1)) | |
2113 | + | let kQ = toString(iJ) | |
2114 | + | let iK = Issue(eD(kQ, ky), makeString([kQ, ky, gK, ds], "_"), 1, 0, false) | |
2115 | + | let bp = calculateAssetId(iK) | |
2116 | + | let kR = toBase58String(bp) | |
2117 | + | let jP = makeString(fa((kB > 0), split(il[bj], "_"), kB), "_") | |
2118 | + | let kS = du(c) | |
2119 | + | let kT = valueOrElse(getInteger(kS), 0) | |
2120 | + | $Tuple2((((((((((((((((eZ._5 :+ (if ((size(eZ._7) > 0)) | |
2121 | + | then StringEntry(kL, makeString_11C(eZ._7, "_")) | |
2122 | + | else DeleteEntry(kL))) :+ IntegerEntry(kS, if ((eZ._8 > kT)) | |
2034 | 2123 | then 0 | |
2035 | - | else ( | |
2124 | + | else (kT - eZ._8))) :+ IntegerEntry(em(), (iJ + 1))) :+ iK) :+ StringEntry(ep(kQ), kR)) :+ StringEntry(bo(kR), c)) :+ StringEntry(es(kQ), c)) :+ IntegerEntry(bs(aE, kR), eZ._2)) :+ IntegerEntry(by(kR), al)) :+ IntegerEntry(er(kR, c), al)) :+ StringEntry(hI, makeString([il[bh], eZ._4, jP, il[bk]], ":"))) :+ StringEntry(dq(), makeString(eZ._6, "_"))) :+ StringEntry(dr(ds), makeString(eZ._10, "_"))) :+ StringEntry(bJ(A), makeString([ds, "L", kR], "_"))) :+ ScriptTransfer(addressFromStringValue(c), 1, bp)), kR) | |
2036 | 2125 | } | |
2037 | 2126 | } | |
2038 | 2127 | ||
2039 | 2128 | ||
2040 | - | func | |
2041 | - | ||
2042 | - | ||
2043 | - | func | |
2044 | - | ||
2045 | - | ||
2046 | - | func | |
2047 | - | ||
2048 | - | ||
2049 | - | func | |
2050 | - | ||
2051 | - | ||
2052 | - | func | |
2053 | - | let | |
2054 | - | if ((4 == | |
2055 | - | then | |
2056 | - | else if ((3 == | |
2057 | - | then | |
2058 | - | else if ((5 == | |
2059 | - | then | |
2060 | - | else if ((2 == | |
2061 | - | then | |
2129 | + | func kU (c,kA) = kx("M", 3, "SSSS", c, kA, 0) | |
2130 | + | ||
2131 | + | ||
2132 | + | func kV (c,kA) = kx("L", 4, "SMM", c, kA, (cz * 4)) | |
2133 | + | ||
2134 | + | ||
2135 | + | func kW (c,kA) = kx("XL", 5, "SSSML", c, kA, (cz * 47)) | |
2136 | + | ||
2137 | + | ||
2138 | + | func kX (c,kA) = kx("XXL", 6, "LXL", c, kA, (cz * 54)) | |
2139 | + | ||
2140 | + | ||
2141 | + | func kY (c,kA) = { | |
2142 | + | let cx = size(kA) | |
2143 | + | if ((4 == cx)) | |
2144 | + | then kU(c, kA) | |
2145 | + | else if ((3 == cx)) | |
2146 | + | then kV(c, kA) | |
2147 | + | else if ((5 == cx)) | |
2148 | + | then kW(c, kA) | |
2149 | + | else if ((2 == cx)) | |
2150 | + | then kX(c, kA) | |
2062 | 2151 | else throw("Unknown merge") | |
2063 | 2152 | } | |
2064 | 2153 | ||
2065 | 2154 | ||
2066 | - | func | |
2067 | - | then valueOrElse(getBoolean( | |
2155 | + | func kZ (gH) = if (if ((gH.originCaller != da)) | |
2156 | + | then valueOrElse(getBoolean(dH()), false) | |
2068 | 2157 | else false) | |
2069 | 2158 | then throw("Contracts are under maintenance") | |
2070 | - | else StringEntry( | |
2071 | - | ||
2072 | - | ||
2073 | - | @Callable( | |
2074 | - | func constructorV1 ( | |
2159 | + | else StringEntry(dI(toString(gH.originCaller)), toBase58String(gH.transactionId)) | |
2160 | + | ||
2161 | + | ||
2162 | + | @Callable(gH) | |
2163 | + | func constructorV1 (la) = if ((gH.caller != this)) | |
2075 | 2164 | then throw("Permission denied") | |
2076 | - | else [StringEntry( | |
2077 | - | ||
2078 | - | ||
2079 | - | ||
2080 | - | @Callable( | |
2081 | - | func setBlocked ( | |
2165 | + | else [StringEntry(cU(), la)] | |
2166 | + | ||
2167 | + | ||
2168 | + | ||
2169 | + | @Callable(gH) | |
2170 | + | func setBlocked (lb) = if ((gH.caller != this)) | |
2082 | 2171 | then throw("permission denied") | |
2083 | - | else [BooleanEntry( | |
2084 | - | ||
2085 | - | ||
2086 | - | ||
2087 | - | @Callable( | |
2172 | + | else [BooleanEntry(dH(), lb)] | |
2173 | + | ||
2174 | + | ||
2175 | + | ||
2176 | + | @Callable(gH) | |
2088 | 2177 | func stakeLand () = { | |
2089 | - | let | |
2090 | - | if ((size( | |
2178 | + | let lc = kZ(gH) | |
2179 | + | if ((size(gH.payments) != 1)) | |
2091 | 2180 | then throw("Exactly one payment required") | |
2092 | 2181 | else { | |
2093 | - | let | |
2094 | - | let | |
2095 | - | let | |
2096 | - | if (( | |
2182 | + | let ld = value(gH.payments[0]) | |
2183 | + | let bp = value(ld.assetId) | |
2184 | + | let cL = toString(gH.caller) | |
2185 | + | if ((ld.amount != 1)) | |
2097 | 2186 | then throw((("NFT " + aC) + " token should be attached as payment")) | |
2098 | 2187 | else { | |
2099 | - | let | |
2100 | - | if (( | |
2188 | + | let jp = value(assetInfo(bp)) | |
2189 | + | if ((jp.issuer != this)) | |
2101 | 2190 | then throw("Unknown issuer of token") | |
2102 | - | else if (!(contains( | |
2191 | + | else if (!(contains(jp.name, aC))) | |
2103 | 2192 | then throw((("Only NFT " + aC) + " tokens are accepted")) | |
2104 | 2193 | else { | |
2105 | - | let | |
2106 | - | let | |
2107 | - | then dropRight( | |
2108 | - | else if (contains( | |
2109 | - | then dropRight( | |
2110 | - | else dropRight( | |
2111 | - | if (!(isDefined(parseInt( | |
2112 | - | then throw(("Cannot parse land number from " + | |
2194 | + | let le = drop(jp.name, 4) | |
2195 | + | let eq = if (contains(le, "XXL")) | |
2196 | + | then dropRight(le, 3) | |
2197 | + | else if (contains(le, "XL")) | |
2198 | + | then dropRight(le, 2) | |
2199 | + | else dropRight(le, 1) | |
2200 | + | if (!(isDefined(parseInt(eq)))) | |
2201 | + | then throw(("Cannot parse land number from " + jp.name)) | |
2113 | 2202 | else { | |
2114 | - | let P = toBase58String( | |
2115 | - | let | |
2116 | - | if (isDefined(getInteger( | |
2117 | - | then throw((("NFT " + | |
2203 | + | let P = toBase58String(bp) | |
2204 | + | let jq = br(P) | |
2205 | + | if (isDefined(getInteger(jq))) | |
2206 | + | then throw((("NFT " + jp.name) + " is already staked")) | |
2118 | 2207 | else { | |
2119 | - | let | |
2120 | - | let | |
2121 | - | let | |
2122 | - | let | |
2123 | - | let | |
2124 | - | let | |
2125 | - | let | |
2126 | - | let | |
2127 | - | let | |
2128 | - | let | |
2129 | - | let | |
2130 | - | then split_51C(value( | |
2208 | + | let jt = split(jp.description, "_") | |
2209 | + | let gD = gJ(jt[di]) | |
2210 | + | let jf = dE(jt[dh]) | |
2211 | + | let hW = (jf / cE) | |
2212 | + | let eY = gI(gD, hW, 1) | |
2213 | + | let lf = dr(jt[dj]) | |
2214 | + | let kP = split(valueOrElse(getString(lf), "0_0_0_0_0_0"), "_") | |
2215 | + | let lg = makeString(gB(kP, gD, hW, 1), "_") | |
2216 | + | let kL = dt(cL) | |
2217 | + | let kM = getString(kL) | |
2218 | + | let kI = if (isDefined(kM)) | |
2219 | + | then split_51C(value(kM), "_") | |
2131 | 2220 | else nil | |
2132 | - | if (containsElement( | |
2221 | + | if (containsElement(kI, P)) | |
2133 | 2222 | then throw(("Your staked lands already contain " + P)) | |
2134 | - | else if ((size( | |
2223 | + | else if ((size(kI) >= aG)) | |
2135 | 2224 | then throw((("Your already staked max (" + toString(aG)) + ") lands")) | |
2136 | 2225 | else { | |
2137 | - | let | |
2138 | - | let | |
2139 | - | let | |
2140 | - | let | |
2141 | - | $Tuple2([IntegerEntry( | |
2226 | + | let hX = valueOrElse(getInteger(by(P)), 0) | |
2227 | + | let kS = du(cL) | |
2228 | + | let lh = valueOrElse(getInteger(kS), 0) | |
2229 | + | let li = invoke(dd, "onStakeUnstakeLand", [cL], nil) | |
2230 | + | $Tuple2([IntegerEntry(jq, lastBlock.timestamp), IntegerEntry(bu(aC, P, cL), lastBlock.timestamp), StringEntry(kL, makeString_11C((kI :+ P), "_")), IntegerEntry(kS, (lh + jf)), StringEntry(bo(P), cL), StringEntry(es(eq), cL), IntegerEntry(er(P, cL), hX), StringEntry(dq(), eY), StringEntry(lf, lg), lc], li) | |
2142 | 2231 | } | |
2143 | 2232 | } | |
2144 | 2233 | } | |
2149 | 2238 | ||
2150 | 2239 | ||
2151 | 2240 | ||
2152 | - | @Callable( | |
2153 | - | func unstakeLand ( | |
2154 | - | let | |
2155 | - | if ((size( | |
2241 | + | @Callable(gH) | |
2242 | + | func unstakeLand (jl) = { | |
2243 | + | let lc = kZ(gH) | |
2244 | + | if ((size(gH.payments) != 0)) | |
2156 | 2245 | then throw("No payments required") | |
2157 | 2246 | else { | |
2158 | - | let c = toString( | |
2159 | - | let | |
2160 | - | let P = | |
2161 | - | let | |
2162 | - | let | |
2163 | - | let | |
2164 | - | let | |
2165 | - | let | |
2166 | - | let | |
2167 | - | let | |
2168 | - | let | |
2169 | - | let | |
2170 | - | let | |
2171 | - | let | |
2172 | - | let | |
2173 | - | if (!(isDefined( | |
2247 | + | let c = toString(gH.caller) | |
2248 | + | let fX = jj(c, ex, jl) | |
2249 | + | let P = fX._2 | |
2250 | + | let jt = fX._3 | |
2251 | + | let kL = dt(c) | |
2252 | + | let gD = gJ(jt[di]) | |
2253 | + | let jf = dE(jt[dh]) | |
2254 | + | let hW = (jf / cE) | |
2255 | + | let eY = gI(gD, hW, -1) | |
2256 | + | let lf = dr(jt[dj]) | |
2257 | + | let kP = split(valueOrElse(getString(lf), "0_0_0_0_0_0"), "_") | |
2258 | + | let lg = makeString(gB(kP, gD, hW, -1), "_") | |
2259 | + | let jQ = jG(c, P, jf, ex) | |
2260 | + | let kI = split_51C(valueOrElse(getString(kL), ""), "_") | |
2261 | + | let cZ = indexOf(kI, P) | |
2262 | + | if (!(isDefined(cZ))) | |
2174 | 2263 | then throw(("Your staked lands don't contain " + P)) | |
2175 | 2264 | else { | |
2176 | 2265 | let ax = lastBlock.timestamp | |
2177 | - | let | |
2178 | - | if (( | |
2179 | - | then throw(("Your gWL are taking part in voting, cannot unstake until " + toString( | |
2266 | + | let lj = valueOrElse(getInteger(dc, bK(c)), 0) | |
2267 | + | if ((lj >= ax)) | |
2268 | + | then throw(("Your gWL are taking part in voting, cannot unstake until " + toString(lj))) | |
2180 | 2269 | else { | |
2181 | - | let | |
2182 | - | if (( | |
2183 | - | then throw(("Your staked lands took part in arbitrage, cannot unstake until " + toString( | |
2270 | + | let lk = (valueOrElse(getInteger(dd, b(c)), 0) + cA) | |
2271 | + | if ((lk > ax)) | |
2272 | + | then throw(("Your staked lands took part in arbitrage, cannot unstake until " + toString(lk))) | |
2184 | 2273 | else { | |
2185 | - | let | |
2186 | - | let | |
2187 | - | let | |
2274 | + | let kS = du(c) | |
2275 | + | let kT = valueOrElse(getInteger(kS), 0) | |
2276 | + | let ll = if ((jf > kT)) | |
2188 | 2277 | then 0 | |
2189 | - | else ( | |
2190 | - | let | |
2191 | - | $Tuple2([ScriptTransfer( | |
2192 | - | then StringEntry( | |
2193 | - | else DeleteEntry( | |
2278 | + | else (kT - jf) | |
2279 | + | let li = invoke(dd, "onStakeUnstakeLand", [c], nil) | |
2280 | + | $Tuple2([ScriptTransfer(gH.caller, 1, fromBase58String(P)), DeleteEntry(br(P)), DeleteEntry(bu(aC, P, c)), StringEntry(dq(), eY), StringEntry(lf, lg), StringEntry(jQ._2, makeString(jQ._3, ":")), if ((size(kI) > 1)) | |
2281 | + | then StringEntry(kL, makeString_11C(removeByIndex(kI, value(cZ)), "_")) | |
2282 | + | else DeleteEntry(kL), IntegerEntry(kS, ll), lc], li) | |
2194 | 2283 | } | |
2195 | 2284 | } | |
2196 | 2285 | } | |
2199 | 2288 | ||
2200 | 2289 | ||
2201 | 2290 | ||
2202 | - | @Callable( | |
2291 | + | @Callable(gH) | |
2203 | 2292 | func stakeDuck () = { | |
2204 | - | let | |
2205 | - | if ((size( | |
2293 | + | let lc = kZ(gH) | |
2294 | + | if ((size(gH.payments) != 1)) | |
2206 | 2295 | then throw("Exactly one payment required") | |
2207 | 2296 | else { | |
2208 | - | let | |
2209 | - | let | |
2210 | - | let | |
2211 | - | if (( | |
2297 | + | let ld = value(gH.payments[0]) | |
2298 | + | let bp = value(ld.assetId) | |
2299 | + | let cL = toString(gH.caller) | |
2300 | + | if ((ld.amount != 1)) | |
2212 | 2301 | then throw((("NFT " + aD) + " token should be attached as payment")) | |
2213 | 2302 | else { | |
2214 | - | let | |
2215 | - | if (if (( | |
2216 | - | then ( | |
2303 | + | let jp = value(assetInfo(bp)) | |
2304 | + | if (if ((jp.issuer != dU)) | |
2305 | + | then (jp.issuer != dV) | |
2217 | 2306 | else false) | |
2218 | 2307 | then throw((("Unknown issuer of " + aD) + " token")) | |
2219 | - | else if (!(contains( | |
2308 | + | else if (!(contains(jp.name, aD))) | |
2220 | 2309 | then throw((("Only NFT " + aD) + " tokens are accepted")) | |
2221 | 2310 | else { | |
2222 | - | let | |
2223 | - | let | |
2224 | - | if (isDefined(getInteger( | |
2225 | - | then throw((("NFT " + | |
2226 | - | else if (isDefined(getString( | |
2227 | - | then throw(("You already staked one duck: " + | |
2311 | + | let lm = toBase58String(bp) | |
2312 | + | let jq = br(lm) | |
2313 | + | if (isDefined(getInteger(jq))) | |
2314 | + | then throw((("NFT " + jp.name) + " is already staked")) | |
2315 | + | else if (isDefined(getString(bH(cL)))) | |
2316 | + | then throw(("You already staked one duck: " + jp.name)) | |
2228 | 2317 | else { | |
2229 | - | let | |
2230 | - | let | |
2231 | - | let | |
2232 | - | let | |
2233 | - | let | |
2234 | - | let | |
2235 | - | let | |
2236 | - | ([IntegerEntry( | |
2318 | + | let ln = bJ(lm) | |
2319 | + | let cd = getString(ln) | |
2320 | + | let hI = bI(lm) | |
2321 | + | let lo = getString(hI) | |
2322 | + | let iY = z(lm) | |
2323 | + | let iZ = ag(valueOrElse(getInteger(D(lm)), 0)) | |
2324 | + | let kq = valueOrElse(getInteger(iY), iZ) | |
2325 | + | ([IntegerEntry(jq, lastBlock.timestamp), IntegerEntry(bu(aD, toBase58String(bp), cL), lastBlock.timestamp), StringEntry(bG(lm), cL), StringEntry(bH(cL), lm)] ++ (if (isDefined(cd)) | |
2237 | 2326 | then nil | |
2238 | - | else ([StringEntry( | |
2327 | + | else ([StringEntry(ln, aJ)] ++ (if (isDefined(lo)) | |
2239 | 2328 | then nil | |
2240 | - | else (([StringEntry( | |
2329 | + | else (([StringEntry(hI, "0:0_0_0_0_0_0:0_0_0_0_0_0:")] :+ IntegerEntry(iY, kq)) :+ lc))))) | |
2241 | 2330 | } | |
2242 | 2331 | } | |
2243 | 2332 | } | |
2246 | 2335 | ||
2247 | 2336 | ||
2248 | 2337 | ||
2249 | - | @Callable( | |
2250 | - | func unstakeDuck ( | |
2251 | - | let | |
2252 | - | if ((size( | |
2338 | + | @Callable(gH) | |
2339 | + | func unstakeDuck (lm) = { | |
2340 | + | let lc = kZ(gH) | |
2341 | + | if ((size(gH.payments) != 0)) | |
2253 | 2342 | then throw("No payments required") | |
2254 | 2343 | else { | |
2255 | - | let | |
2256 | - | let | |
2257 | - | let | |
2258 | - | let | |
2259 | - | if (!(isDefined(getInteger( | |
2260 | - | then throw((("NFT " + | |
2261 | - | else if (!(isDefined(getString( | |
2262 | - | then throw((("The duck " + | |
2344 | + | let bp = fromBase58String(lm) | |
2345 | + | let cL = toString(gH.caller) | |
2346 | + | let jp = value(assetInfo(bp)) | |
2347 | + | let jq = br(lm) | |
2348 | + | if (!(isDefined(getInteger(jq)))) | |
2349 | + | then throw((("NFT " + jp.name) + " is not staked")) | |
2350 | + | else if (!(isDefined(getString(bH(cL))))) | |
2351 | + | then throw((("The duck " + jp.name) + " is not staked")) | |
2263 | 2352 | else { | |
2264 | - | let | |
2265 | - | if (( | |
2353 | + | let js = valueOrErrorMessage(getString(bG(lm)), (("NFT " + jp.name) + " is orphaned")) | |
2354 | + | if ((js != cL)) | |
2266 | 2355 | then throw("Staked NFT is not yours") | |
2267 | - | else if ( | |
2356 | + | else if (km(lm)) | |
2268 | 2357 | then throw("unstakeDuck_checkTournament") | |
2269 | - | else if ( | |
2358 | + | else if (kn(lm)) | |
2270 | 2359 | then throw("unstakeDuck_checkDelivery") | |
2271 | 2360 | else { | |
2272 | - | let | |
2273 | - | let | |
2274 | - | let as = valueOrElse(getInteger( | |
2275 | - | if (( | |
2276 | - | then throw((("Please heal your duck to " + toString( | |
2277 | - | else [ScriptTransfer( | |
2361 | + | let iY = z(lm) | |
2362 | + | let iZ = ag(valueOrElse(getInteger(D(lm)), 0)) | |
2363 | + | let as = valueOrElse(getInteger(iY), iZ) | |
2364 | + | if ((iZ > as)) | |
2365 | + | then throw((("Please heal your duck to " + toString(iZ)) + "hp before unstaking")) | |
2366 | + | else [ScriptTransfer(gH.caller, 1, bp), DeleteEntry(jq), DeleteEntry(iY), DeleteEntry(bJ(lm)), DeleteEntry(bG(lm)), DeleteEntry(bu(aD, lm, cL)), DeleteEntry(bH(cL)), lc] | |
2278 | 2367 | } | |
2279 | 2368 | } | |
2280 | 2369 | } | |
2282 | 2371 | ||
2283 | 2372 | ||
2284 | 2373 | ||
2285 | - | @Callable( | |
2286 | - | func claimRes ( | |
2287 | - | let | |
2288 | - | if ((size( | |
2374 | + | @Callable(gH) | |
2375 | + | func claimRes (eF,lp) = { | |
2376 | + | let lc = kZ(gH) | |
2377 | + | if ((size(gH.payments) != 0)) | |
2289 | 2378 | then throw("No payments required") | |
2290 | 2379 | else { | |
2291 | - | let c = toString( | |
2292 | - | let | |
2293 | - | let A = valueOrErrorMessage(getString( | |
2294 | - | $Tuple2((((( | |
2295 | - | } | |
2296 | - | } | |
2297 | - | ||
2298 | - | ||
2299 | - | ||
2300 | - | @Callable( | |
2301 | - | func claimResToWH ( | |
2302 | - | let | |
2303 | - | if ((size( | |
2380 | + | let c = toString(gH.originCaller) | |
2381 | + | let fg = ju(c, eF, ex, lp) | |
2382 | + | let A = valueOrErrorMessage(getString(bH(c)), "You don't have a duck staked") | |
2383 | + | $Tuple2(((((fg._1 ++ jW(A, fraction(U, eF, cD))._1) :+ StringEntry(fg._2, makeString(fg._3, ":"))) :+ StringEntry(fg._4, makeString(fg._5, ":"))) :+ lc), fg._3[bi]) | |
2384 | + | } | |
2385 | + | } | |
2386 | + | ||
2387 | + | ||
2388 | + | ||
2389 | + | @Callable(gH) | |
2390 | + | func claimResToWH (eF,lp) = { | |
2391 | + | let lc = kZ(gH) | |
2392 | + | if ((size(gH.payments) != 0)) | |
2304 | 2393 | then throw("No payments required") | |
2305 | 2394 | else { | |
2306 | - | let c = toString( | |
2307 | - | let | |
2308 | - | $Tuple2((((( | |
2309 | - | } | |
2310 | - | } | |
2311 | - | ||
2312 | - | ||
2313 | - | ||
2314 | - | @Callable( | |
2315 | - | func flight ( | |
2316 | - | let | |
2317 | - | if ((size( | |
2395 | + | let c = toString(gH.originCaller) | |
2396 | + | let fg = ju(c, eF, ew, lp) | |
2397 | + | $Tuple2(((((fg._1 ++ kc(c, fraction(U, eF, cD))._1) :+ StringEntry(fg._2, makeString(fg._3, ":"))) :+ StringEntry(fg._4, makeString(fg._5, ":"))) :+ lc), fg._5[aZ]) | |
2398 | + | } | |
2399 | + | } | |
2400 | + | ||
2401 | + | ||
2402 | + | ||
2403 | + | @Callable(gH) | |
2404 | + | func flight (iN,iO) = { | |
2405 | + | let lc = kZ(gH) | |
2406 | + | if ((size(gH.payments) != 0)) | |
2318 | 2407 | then throw("No payments required") | |
2319 | 2408 | else { | |
2320 | - | let | |
2321 | - | let | |
2322 | - | let | |
2323 | - | let A = | |
2324 | - | let | |
2325 | - | let | |
2326 | - | let | |
2327 | - | if (( | |
2409 | + | let bL = toString(gH.caller) | |
2410 | + | let hm = iM(bL, iN, iO) | |
2411 | + | let iS = hm._1 | |
2412 | + | let A = hm._2 | |
2413 | + | let ln = bJ(A) | |
2414 | + | let jn = valueOrElse(getString(ln), aJ) | |
2415 | + | let iU = hm._4 | |
2416 | + | if ((iU == jn)) | |
2328 | 2417 | then throw("You can't fly to the same location") | |
2329 | 2418 | else { | |
2330 | - | let kZ = split(iJ, "_") | |
2331 | - | let la = (kZ[bl] == "T") | |
2332 | - | let gj = F(A) | |
2333 | - | let lb = valueOrElse(getString(gj), ",;,_,;,_,;,_,;,_,;,_,;,") | |
2334 | - | let lc = eW(lb, hb._5) | |
2335 | - | let ld = lc._1 | |
2336 | - | let le = lc._2 | |
2337 | - | let lf = if (!(cb(cU, jc))) | |
2338 | - | then if (la) | |
2339 | - | then throw(((("Cheat attempt: oldLoc=" + jc) + ", newLoc=") + iJ)) | |
2340 | - | else if ((iH > 0)) | |
2341 | - | then iJ | |
2342 | - | else jc | |
2343 | - | else if (!(cb(cU, iJ))) | |
2344 | - | then throw("Your duck is taking part in the tournament") | |
2345 | - | else { | |
2346 | - | let lg = parseIntValue(kZ[bm]) | |
2347 | - | let lh = split(jc, "_") | |
2348 | - | let cd = valueOrElse(getInteger(cU, bO), 0) | |
2349 | - | if ((lg != (parseIntValue(lh[bm]) + 1))) | |
2350 | - | then throw(((("Cheat attempt: oldLoc=" + jc) + ", newLoc=") + iJ)) | |
2351 | - | else if ((iH > 0)) | |
2352 | - | then { | |
2353 | - | let li = valueOrElse(getInteger(cU, bS(cd, A)), 0) | |
2354 | - | let lj = if ((lg > li)) | |
2355 | - | then invoke(cU, "saveDuckResult", [A, lg], nil) | |
2356 | - | else unit | |
2357 | - | if ((lj == lj)) | |
2358 | - | then iJ | |
2359 | - | else throw("Strict value is not equal to itself.") | |
2419 | + | let cr = split(iU, "_") | |
2420 | + | let lq = (cr[bm] == "T") | |
2421 | + | let lr = (cr[bm] == "D") | |
2422 | + | let gu = F(A) | |
2423 | + | let ls = valueOrElse(getString(gu), ",;,_,;,_,;,_,;,_,;,_,;,") | |
2424 | + | let lt = fh(ls, hm._5) | |
2425 | + | let lu = lt._1 | |
2426 | + | let lv = lt._2 | |
2427 | + | let lw = if (cm(de, jn)) | |
2428 | + | then if (!(ck(iU))) | |
2429 | + | then cp(jn, iU) | |
2430 | + | else if ((iS > 0)) | |
2431 | + | then $Tuple2(iU, iS) | |
2432 | + | else $Tuple2(jn, 0) | |
2433 | + | else if (cc(de, jn)) | |
2434 | + | then if (!(cc(de, iU))) | |
2435 | + | then throw("Your duck is taking part in the tournament") | |
2436 | + | else { | |
2437 | + | let lx = parseIntValue(cr[bn]) | |
2438 | + | let ly = split(jn, "_") | |
2439 | + | let ce = valueOrElse(getInteger(de, bP), 0) | |
2440 | + | if ((lx != (parseIntValue(ly[bn]) + 1))) | |
2441 | + | then cp(jn, iU) | |
2442 | + | else if ((iS > 0)) | |
2443 | + | then { | |
2444 | + | let lz = valueOrElse(getInteger(de, bT(ce, A)), 0) | |
2445 | + | let lA = if ((lx > lz)) | |
2446 | + | then invoke(de, "saveDuckResult", [A, lx], nil) | |
2447 | + | else unit | |
2448 | + | if ((lA == lA)) | |
2449 | + | then $Tuple2(iU, iS) | |
2450 | + | else throw("Strict value is not equal to itself.") | |
2451 | + | } | |
2452 | + | else $Tuple2(jn, 0) | |
2453 | + | } | |
2454 | + | else if (!(ch(jn))) | |
2455 | + | then { | |
2456 | + | let lB = dB(invoke(this, "autoExitDelivery", [A], nil)) | |
2457 | + | if ((lB == lB)) | |
2458 | + | then if (lr) | |
2459 | + | then lB | |
2460 | + | else if ((iS > 0)) | |
2461 | + | then $Tuple2(iU, iS) | |
2462 | + | else $Tuple2(lB._1, 0) | |
2463 | + | else throw("Strict value is not equal to itself.") | |
2464 | + | } | |
2465 | + | else if (!(lr)) | |
2466 | + | then throw("Your duck is taking part in delivery") | |
2467 | + | else if (!(ch(iU))) | |
2468 | + | then cp(jn, iU) | |
2469 | + | else { | |
2470 | + | let lx = parseIntValue(cr[bn]) | |
2471 | + | let ly = split(jn, "_") | |
2472 | + | if ((lx != (parseIntValue(ly[bn]) + 1))) | |
2473 | + | then cp(jn, iU) | |
2474 | + | else if ((iS > 0)) | |
2475 | + | then $Tuple2(iU, iS) | |
2476 | + | else { | |
2477 | + | let lB = dB(invoke(this, "autoExitDelivery", [A], nil)) | |
2478 | + | if ((lB == lB)) | |
2479 | + | then lB | |
2480 | + | else throw("Strict value is not equal to itself.") | |
2481 | + | } | |
2360 | 2482 | } | |
2361 | - | | |
2362 | - | | |
2363 | - | $Tuple2(([StringEntry( | |
2483 | + | let lC = lw._1 | |
2484 | + | let lD = lw._2 | |
2485 | + | $Tuple2(([StringEntry(ln, lC), StringEntry(gu, lu), IntegerEntry(z(A), iS), lc] ++ (if (lv) | |
2364 | 2486 | then [StringEntry(L(A), "0_0_0_0_0")] | |
2365 | - | else (nil ++ | |
2487 | + | else (nil ++ jW(A, if ((iS > 0)) | |
2366 | 2488 | then V | |
2367 | - | else W)._1))), | |
2489 | + | else W)._1))), hm._3) | |
2368 | 2490 | } | |
2369 | 2491 | } | |
2370 | 2492 | } | |
2371 | 2493 | ||
2372 | 2494 | ||
2373 | 2495 | ||
2374 | - | @Callable( | |
2375 | - | func heal ( | |
2376 | - | let | |
2377 | - | if (if (if ((0 > | |
2496 | + | @Callable(gH) | |
2497 | + | func heal (lE,lF,lG) = { | |
2498 | + | let lc = kZ(gH) | |
2499 | + | if (if (if ((0 > lE)) | |
2378 | 2500 | then true | |
2379 | - | else (0 > | |
2501 | + | else (0 > lF)) | |
2380 | 2502 | then true | |
2381 | - | else (0 > | |
2503 | + | else (0 > lG)) | |
2382 | 2504 | then throw("Quantity cannot be negative") | |
2383 | 2505 | else { | |
2384 | - | let A = valueOrErrorMessage(getString( | |
2385 | - | if ( | |
2506 | + | let A = valueOrErrorMessage(getString(bH(toString(gH.caller))), "You don't have a duck staked") | |
2507 | + | if (km(A)) | |
2386 | 2508 | then throw("heal_checkTournament") | |
2387 | - | else if ( | |
2509 | + | else if (kn(A)) | |
2388 | 2510 | then throw("heal_checkDelivery") | |
2389 | 2511 | else { | |
2390 | - | let | |
2391 | - | let | |
2392 | - | let | |
2393 | - | let | |
2394 | - | if (( | |
2395 | - | then throw((("HP should be < " + toString( | |
2512 | + | let lH = [lE, lF, lG] | |
2513 | + | let iY = z(A) | |
2514 | + | let iZ = ag(valueOrElse(getInteger(D(A)), 0)) | |
2515 | + | let lI = valueOrElse(getInteger(iY), iZ) | |
2516 | + | if ((lI >= iZ)) | |
2517 | + | then throw((("HP should be < " + toString(iZ)) + " to heal")) | |
2396 | 2518 | else { | |
2397 | - | let | |
2398 | - | let | |
2399 | - | let | |
2519 | + | let hI = bI(A) | |
2520 | + | let il = hH(hI) | |
2521 | + | let lJ = if ((il[bk] == "")) | |
2400 | 2522 | then nil | |
2401 | - | else split_4C( | |
2402 | - | func | |
2403 | - | let | |
2404 | - | let | |
2405 | - | then parseIntValue( | |
2523 | + | else split_4C(il[bk], "_") | |
2524 | + | func lK (eO,co) = { | |
2525 | + | let dz = eO._2 | |
2526 | + | let hd = if ((size(lJ) > dz)) | |
2527 | + | then parseIntValue(lJ[dz]) | |
2406 | 2528 | else 0 | |
2407 | - | if ((3 > | |
2529 | + | if ((3 > dz)) | |
2408 | 2530 | then { | |
2409 | - | let | |
2410 | - | if (( | |
2411 | - | then throw(((("You have only " + toString( | |
2412 | - | else $Tuple3(( | |
2531 | + | let lL = lH[dz] | |
2532 | + | if ((lL > hd)) | |
2533 | + | then throw(((("You have only " + toString(hd)) + " of ") + aO[dz])) | |
2534 | + | else $Tuple3((eO._1 :+ toString((hd - lL))), (dz + 1), (eO._3 + (parseIntValue(split(co, "_")[aU]) * lL))) | |
2413 | 2535 | } | |
2414 | - | else $Tuple3(( | |
2536 | + | else $Tuple3((eO._1 :+ toString(hd)), (dz + 1), eO._3) | |
2415 | 2537 | } | |
2416 | 2538 | ||
2417 | - | let | |
2418 | - | let | |
2419 | - | let | |
2420 | - | let | |
2421 | - | func | |
2422 | - | then | |
2423 | - | else | |
2424 | - | ||
2425 | - | func | |
2426 | - | then | |
2539 | + | let fg = { | |
2540 | + | let eQ = aS | |
2541 | + | let eR = size(eQ) | |
2542 | + | let eS = $Tuple3(nil, 0, 0) | |
2543 | + | func eT (eU,eV) = if ((eV >= eR)) | |
2544 | + | then eU | |
2545 | + | else lK(eU, eQ[eV]) | |
2546 | + | ||
2547 | + | func eW (eU,eV) = if ((eV >= eR)) | |
2548 | + | then eU | |
2427 | 2549 | else throw("List size exceeds 50") | |
2428 | 2550 | ||
2429 | - | | |
2551 | + | eW(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eS, 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) | |
2430 | 2552 | } | |
2431 | - | let | |
2432 | - | $Tuple2(([IntegerEntry( | |
2553 | + | let lM = min([iZ, (lI + fg._3)]) | |
2554 | + | $Tuple2(([IntegerEntry(iY, lM), StringEntry(hI, makeString_2C([il[bh], il[bi], il[bj], makeString(fg._1, "_")], ":")), lc] ++ jW(A, (ad * ((lE + lF) + lG)))._1), lM) | |
2433 | 2555 | } | |
2434 | 2556 | } | |
2435 | 2557 | } | |
2437 | 2559 | ||
2438 | 2560 | ||
2439 | 2561 | ||
2440 | - | @Callable( | |
2562 | + | @Callable(gH) | |
2441 | 2563 | func healES () = { | |
2442 | - | let | |
2443 | - | if ((size( | |
2564 | + | let lc = kZ(gH) | |
2565 | + | if ((size(gH.payments) != 1)) | |
2444 | 2566 | then throw("Exactly one payment required") | |
2445 | 2567 | else { | |
2446 | - | let | |
2447 | - | if (( | |
2568 | + | let ld = value(gH.payments[0]) | |
2569 | + | if ((ld.assetId != cw)) | |
2448 | 2570 | then throw("Allowed USDT payment only!") | |
2449 | 2571 | else { | |
2450 | - | let A = valueOrErrorMessage(getString( | |
2451 | - | if ( | |
2572 | + | let A = valueOrErrorMessage(getString(bH(toString(gH.caller))), "You don't have a duck staked") | |
2573 | + | if (km(A)) | |
2452 | 2574 | then throw("healES_checkTournament") | |
2453 | - | else if ( | |
2575 | + | else if (kn(A)) | |
2454 | 2576 | then throw("healES_checkDelivery") | |
2455 | 2577 | else { | |
2456 | - | let | |
2457 | - | let | |
2458 | - | let | |
2459 | - | if (( | |
2578 | + | let iY = z(A) | |
2579 | + | let iZ = ag(valueOrElse(getInteger(D(A)), 0)) | |
2580 | + | let lI = valueOrElse(getInteger(iY), iZ) | |
2581 | + | if ((lI > 0)) | |
2460 | 2582 | then throw("HP should be 0 to call Emergency Service") | |
2461 | 2583 | else { | |
2462 | - | let | |
2463 | - | let | |
2464 | - | let | |
2584 | + | let hI = bI(A) | |
2585 | + | let il = hH(hI) | |
2586 | + | let lJ = if ((il[bk] == "")) | |
2465 | 2587 | then nil | |
2466 | - | else split_4C( | |
2467 | - | let | |
2468 | - | then parseIntValue( | |
2588 | + | else split_4C(il[bk], "_") | |
2589 | + | let lN = if ((size(lJ) > 0)) | |
2590 | + | then parseIntValue(lJ[0]) | |
2469 | 2591 | else 0 | |
2470 | - | let | |
2471 | - | then parseIntValue( | |
2592 | + | let lO = if ((size(lJ) > 1)) | |
2593 | + | then parseIntValue(lJ[1]) | |
2472 | 2594 | else 0 | |
2473 | - | let | |
2474 | - | then parseIntValue( | |
2595 | + | let lP = if ((size(lJ) > 2)) | |
2596 | + | then parseIntValue(lJ[2]) | |
2475 | 2597 | else 0 | |
2476 | - | if (if (if (( | |
2598 | + | if (if (if ((lN > 0)) | |
2477 | 2599 | then true | |
2478 | - | else ( | |
2600 | + | else (lO > 0)) | |
2479 | 2601 | then true | |
2480 | - | else ( | |
2602 | + | else (lP > 0)) | |
2481 | 2603 | then throw("You have to use own Medical Kit") | |
2482 | 2604 | else { | |
2483 | - | let | |
2484 | - | let | |
2485 | - | then split_4C(value( | |
2605 | + | let lQ = getString(db, bM()) | |
2606 | + | let lR = if (isDefined(lQ)) | |
2607 | + | then split_4C(value(lQ), "_") | |
2486 | 2608 | else nil | |
2487 | - | let | |
2488 | - | then parseIntValue( | |
2609 | + | let lS = if ((size(lR) > 0)) | |
2610 | + | then parseIntValue(lR[0]) | |
2489 | 2611 | else 0 | |
2490 | - | if ((0 >= | |
2612 | + | if ((0 >= lS)) | |
2491 | 2613 | then throw("There are no Medical Kits L1 at Emergency Service storage") | |
2492 | 2614 | else { | |
2493 | - | let | |
2494 | - | let | |
2495 | - | let | |
2496 | - | let | |
2497 | - | let | |
2498 | - | if (( | |
2499 | - | then throw(("Payment attached should be " + toString( | |
2615 | + | let lM = (lI + parseIntValue(split(aS[0], "_")[aU])) | |
2616 | + | let lT = makeString([toString((lS - 1)), removeByIndex(lR, 0)], "_") | |
2617 | + | let co = split(aS[0], "_") | |
2618 | + | let lU = cn(co) | |
2619 | + | let lV = fraction((lU * aL), aK, (cD * aX)) | |
2620 | + | if ((ld.amount != lV)) | |
2621 | + | then throw(("Payment attached should be " + toString(lV))) | |
2500 | 2622 | else { | |
2501 | - | let | |
2502 | - | $Tuple2(([IntegerEntry( | |
2623 | + | let fg = dv(invoke(db, "updateEsStorage", [lT], [AttachedPayment(cw, lV)])) | |
2624 | + | $Tuple2(([IntegerEntry(iY, lM), lc] ++ jW(A, X)._1), fg) | |
2503 | 2625 | } | |
2504 | 2626 | } | |
2505 | 2627 | } | |
2511 | 2633 | ||
2512 | 2634 | ||
2513 | 2635 | ||
2514 | - | @Callable( | |
2515 | - | func updateBackpack (A, | |
2636 | + | @Callable(gH) | |
2637 | + | func updateBackpack (A,lW) = if ((gH.caller != db)) | |
2516 | 2638 | then throw("permission denied") | |
2517 | - | else $Tuple2([StringEntry( | |
2518 | - | ||
2519 | - | ||
2520 | - | ||
2521 | - | @Callable( | |
2639 | + | else $Tuple2([StringEntry(bI(A), lW)], lW) | |
2640 | + | ||
2641 | + | ||
2642 | + | ||
2643 | + | @Callable(gH) | |
2522 | 2644 | func commitForRandom () = { | |
2523 | - | let | |
2524 | - | let | |
2525 | - | let c = toString( | |
2526 | - | $Tuple2(([IntegerEntry( | |
2527 | - | } | |
2528 | - | ||
2529 | - | ||
2530 | - | ||
2531 | - | @Callable( | |
2532 | - | func awardSLand ( | |
2645 | + | let lc = kZ(gH) | |
2646 | + | let lX = (height + do) | |
2647 | + | let c = toString(gH.caller) | |
2648 | + | $Tuple2(([IntegerEntry(dp(c), lX)] :+ lc), lX) | |
2649 | + | } | |
2650 | + | ||
2651 | + | ||
2652 | + | ||
2653 | + | @Callable(gH) | |
2654 | + | func awardSLand (cL) = if ((gH.caller != de)) | |
2533 | 2655 | then throw("Access denied") | |
2534 | - | else if ((size( | |
2656 | + | else if ((size(gH.payments) != 0)) | |
2535 | 2657 | then throw("No payments required") | |
2536 | 2658 | else { | |
2537 | - | let | |
2538 | - | $Tuple2( | |
2539 | - | } | |
2540 | - | ||
2541 | - | ||
2542 | - | ||
2543 | - | @Callable( | |
2659 | + | let fg = iF(addressFromStringValue(cL), gH.transactionId) | |
2660 | + | $Tuple2(fg._1, fg._2._1) | |
2661 | + | } | |
2662 | + | ||
2663 | + | ||
2664 | + | ||
2665 | + | @Callable(gH) | |
2544 | 2666 | func buySLand () = { | |
2545 | - | let | |
2546 | - | if ((size( | |
2667 | + | let lc = kZ(gH) | |
2668 | + | if ((size(gH.payments) != 1)) | |
2547 | 2669 | then throw("Exactly one payment required") | |
2548 | 2670 | else { | |
2549 | - | let | |
2550 | - | if (( | |
2671 | + | let ld = value(gH.payments[0]) | |
2672 | + | if ((ld.assetId != cw)) | |
2551 | 2673 | then throw("Allowed USDT payment only!") | |
2552 | - | else if (( | |
2553 | - | then throw(("Payment attached should be " + toString( | |
2674 | + | else if ((ld.amount != ed)) | |
2675 | + | then throw(("Payment attached should be " + toString(ed))) | |
2554 | 2676 | else { | |
2555 | - | let | |
2556 | - | let | |
2557 | - | $Tuple2(((( | |
2677 | + | let fg = iF(gH.caller, gH.transactionId) | |
2678 | + | let lY = dy(invoke(df, "burnAcres", [ee], nil)) | |
2679 | + | $Tuple2((((fg._1 :+ ScriptTransfer(db, ld.amount, cw)) ++ kc(toString(gH.caller), Z)._1) :+ lc), $Tuple2(fg._2._1, lY)) | |
2558 | 2680 | } | |
2559 | 2681 | } | |
2560 | 2682 | } | |
2561 | 2683 | ||
2562 | 2684 | ||
2563 | 2685 | ||
2564 | - | @Callable( | |
2565 | - | func expedition ( | |
2566 | - | let | |
2567 | - | if ((size( | |
2686 | + | @Callable(gH) | |
2687 | + | func expedition (iN,iO) = { | |
2688 | + | let lc = kZ(gH) | |
2689 | + | if ((size(gH.payments) != 0)) | |
2568 | 2690 | then throw("No payments required") | |
2569 | 2691 | else { | |
2570 | - | let | |
2571 | - | let | |
2572 | - | let A = | |
2573 | - | let | |
2574 | - | let | |
2575 | - | let | |
2576 | - | let | |
2577 | - | let | |
2578 | - | let | |
2579 | - | let | |
2580 | - | let | |
2581 | - | let | |
2582 | - | let | |
2583 | - | let | |
2584 | - | let | |
2585 | - | let | |
2586 | - | then $Tuple3([IntegerEntry( | |
2587 | - | else $Tuple3(( | |
2692 | + | let bL = toString(gH.caller) | |
2693 | + | let hm = iM(bL, iN, iO) | |
2694 | + | let A = hm._2 | |
2695 | + | let iY = z(A) | |
2696 | + | let hI = bI(A) | |
2697 | + | let il = hH(hI) | |
2698 | + | let jN = split(il[bj], "_") | |
2699 | + | let jP = makeString(fa(true, jN, ec), "_") | |
2700 | + | let gu = F(A) | |
2701 | + | let ls = valueOrElse(getString(gu), ",;,_,;,_,;,_,;,_,;,_,;,") | |
2702 | + | let lZ = fh(ls, hm._5) | |
2703 | + | let lu = lZ._1 | |
2704 | + | let lv = lZ._2 | |
2705 | + | let ma = iF(gH.caller, gH.transactionId) | |
2706 | + | let iL = ma._2._1 | |
2707 | + | let fg = if ((0 >= hm._1)) | |
2708 | + | then $Tuple3([IntegerEntry(iY, 0), StringEntry(gu, lu)], "", 0) | |
2709 | + | else $Tuple3((ma._1 ++ (if (lv) | |
2588 | 2710 | then [StringEntry(L(A), "0_0_0_0_0")] | |
2589 | - | else ((((nil :+ StringEntry( | |
2590 | - | if ( | |
2711 | + | else ((((nil :+ StringEntry(bJ(A), makeString([ma._2._2, "L", iL], "_"))) :+ IntegerEntry(iY, hm._1)) :+ StringEntry(gu, lu)) :+ StringEntry(hI, makeString([il[bh], il[bi], jP, il[bk]], ":"))))), iL, hm._3) | |
2712 | + | if (km(A)) | |
2591 | 2713 | then throw("expedition_checkTournament") | |
2592 | - | else if ( | |
2714 | + | else if (kn(A)) | |
2593 | 2715 | then throw("expedition_checkDelivery") | |
2594 | 2716 | else { | |
2595 | - | let | |
2596 | - | $Tuple2((( | |
2717 | + | let lY = dy(invoke(df, "burnAcres", [ee], nil)) | |
2718 | + | $Tuple2(((fg._1 ++ jW(A, Z)._1) :+ lc), $Tuple3(fg._2, fg._3, lY)) | |
2597 | 2719 | } | |
2598 | 2720 | } | |
2599 | 2721 | } | |
2600 | 2722 | ||
2601 | 2723 | ||
2602 | 2724 | ||
2603 | - | @Callable( | |
2725 | + | @Callable(gH) | |
2604 | 2726 | func buySLandForAcres () = { | |
2605 | - | let | |
2606 | - | if ((size( | |
2727 | + | let lc = kZ(gH) | |
2728 | + | if ((size(gH.payments) != 1)) | |
2607 | 2729 | then throw("exactly 1 payment must be attached") | |
2608 | 2730 | else { | |
2609 | - | let | |
2610 | - | let | |
2611 | - | if (if (!(isDefined( | |
2731 | + | let ld = gH.payments[0] | |
2732 | + | let fn = ld.amount | |
2733 | + | if (if (!(isDefined(ld.assetId))) | |
2612 | 2734 | then true | |
2613 | - | else (value( | |
2735 | + | else (value(ld.assetId) != dn)) | |
2614 | 2736 | then throw("ACRES payments only!") | |
2615 | - | else if (( | |
2616 | - | then throw(("Payment attached should be " + toString( | |
2737 | + | else if ((fn != ee)) | |
2738 | + | then throw(("Payment attached should be " + toString(ee))) | |
2617 | 2739 | else { | |
2618 | - | let | |
2619 | - | let | |
2620 | - | $Tuple2((( | |
2740 | + | let fg = iF(gH.caller, gH.transactionId) | |
2741 | + | let lY = dy(invoke(df, "burnAcres", [ee], [AttachedPayment(dn, fn)])) | |
2742 | + | $Tuple2(((fg._1 ++ kc(toString(gH.caller), Z)._1) :+ lc), $Tuple2(fg._2._1, lY)) | |
2621 | 2743 | } | |
2622 | 2744 | } | |
2623 | 2745 | } | |
2624 | 2746 | ||
2625 | 2747 | ||
2626 | 2748 | ||
2627 | - | @Callable( | |
2749 | + | @Callable(gH) | |
2628 | 2750 | func upgradeInfra (P) = { | |
2629 | - | let | |
2630 | - | if ((size( | |
2751 | + | let lc = kZ(gH) | |
2752 | + | if ((size(gH.payments) != 0)) | |
2631 | 2753 | then throw("No payments required") | |
2632 | 2754 | else { | |
2633 | - | let | |
2634 | - | let A = valueOrErrorMessage(getString( | |
2635 | - | $Tuple2((( | |
2636 | - | } | |
2637 | - | } | |
2638 | - | ||
2639 | - | ||
2640 | - | ||
2641 | - | @Callable( | |
2642 | - | func activateArtifact ( | |
2643 | - | let | |
2644 | - | if ((size( | |
2755 | + | let fg = jH(true, gH.caller, 0, P) | |
2756 | + | let A = valueOrErrorMessage(getString(bH(toString(gH.caller))), "You don't have a duck staked") | |
2757 | + | $Tuple2(((fg._1 :+ lc) ++ jW(A, fraction(aa, fg._3, cD))._1), fg._2) | |
2758 | + | } | |
2759 | + | } | |
2760 | + | ||
2761 | + | ||
2762 | + | ||
2763 | + | @Callable(gH) | |
2764 | + | func activateArtifact (mb,mc) = { | |
2765 | + | let lc = kZ(gH) | |
2766 | + | if ((size(gH.payments) != 0)) | |
2645 | 2767 | then throw("No payments required") | |
2646 | 2768 | else { | |
2647 | - | let c = toString( | |
2648 | - | let | |
2649 | - | let | |
2650 | - | if (("PRESALE" == | |
2651 | - | then | |
2652 | - | else if (("ONBOARD" == | |
2653 | - | then | |
2769 | + | let c = toString(gH.caller) | |
2770 | + | let fg = { | |
2771 | + | let cx = mb | |
2772 | + | if (("PRESALE" == cx)) | |
2773 | + | then kk(c, mc) | |
2774 | + | else if (("ONBOARD" == cx)) | |
2775 | + | then kd(c) | |
2654 | 2776 | else throw("Unknown artifact") | |
2655 | 2777 | } | |
2656 | - | ( | |
2657 | - | } | |
2658 | - | } | |
2659 | - | ||
2660 | - | ||
2661 | - | ||
2662 | - | @Callable( | |
2663 | - | func mergeLands ( | |
2664 | - | let | |
2665 | - | if ((size( | |
2778 | + | (fg :+ lc) | |
2779 | + | } | |
2780 | + | } | |
2781 | + | ||
2782 | + | ||
2783 | + | ||
2784 | + | @Callable(gH) | |
2785 | + | func mergeLands (kA) = { | |
2786 | + | let lc = kZ(gH) | |
2787 | + | if ((size(gH.payments) != 0)) | |
2666 | 2788 | then throw("No payments required") | |
2667 | 2789 | else { | |
2668 | - | let | |
2669 | - | $Tuple2((( | |
2670 | - | } | |
2671 | - | } | |
2672 | - | ||
2673 | - | ||
2674 | - | ||
2675 | - | @Callable( | |
2676 | - | func cargoExchange ( | |
2677 | - | let | |
2678 | - | if ((size( | |
2790 | + | let fg = kY(toString(gH.caller), kA) | |
2791 | + | $Tuple2(((fg._1 :+ lc) ++ kc(toString(gH.caller), ab)._1), fg._2) | |
2792 | + | } | |
2793 | + | } | |
2794 | + | ||
2795 | + | ||
2796 | + | ||
2797 | + | @Callable(gH) | |
2798 | + | func cargoExchange (md,P) = { | |
2799 | + | let lc = kZ(gH) | |
2800 | + | if ((size(gH.payments) != 0)) | |
2679 | 2801 | then throw("No payments required") | |
2680 | 2802 | else { | |
2681 | - | let | |
2682 | - | let c = toString( | |
2683 | - | let | |
2684 | - | let | |
2685 | - | if (!(isDefined(getInteger( | |
2686 | - | then throw(( | |
2803 | + | let ik = split_4C(md, ":") | |
2804 | + | let c = toString(gH.originCaller) | |
2805 | + | let jp = value(assetInfo(fromBase58String(P))) | |
2806 | + | let jq = br(P) | |
2807 | + | if (!(isDefined(getInteger(jq)))) | |
2808 | + | then throw((jp.name + " is not staked")) | |
2687 | 2809 | else { | |
2688 | - | let | |
2689 | - | if (( | |
2810 | + | let js = valueOrErrorMessage(getString(bo(P)), (("NFT " + jp.name) + " is orphaned")) | |
2811 | + | if ((js != c)) | |
2690 | 2812 | then throw((aC + " is not yours")) | |
2691 | 2813 | else { | |
2692 | - | let | |
2693 | - | let | |
2694 | - | let A = valueOrErrorMessage(getString( | |
2695 | - | let | |
2696 | - | let | |
2697 | - | if (( | |
2698 | - | then throw((("Duck location type is " + | |
2699 | - | else if (( | |
2814 | + | let hW = (dE(split(jp.description, "_")[dh]) / cE) | |
2815 | + | let hX = valueOrElse(getInteger(by(P)), 0) | |
2816 | + | let A = valueOrErrorMessage(getString(bH(c)), "You don't have a duck staked") | |
2817 | + | let jn = valueOrElse(getString(bJ(A)), aJ) | |
2818 | + | let cf = split(value(jn), "_") | |
2819 | + | if ((cf[bm] != "L")) | |
2820 | + | then throw((("Duck location type is " + cf[bm]) + ", but should be L")) | |
2821 | + | else if ((cf[bn] != P)) | |
2700 | 2822 | then throw(("Duck should be on the land " + P)) | |
2701 | 2823 | else { | |
2702 | - | let | |
2703 | - | let | |
2704 | - | let | |
2705 | - | let | |
2706 | - | let | |
2707 | - | let | |
2708 | - | let | |
2709 | - | let | |
2710 | - | [StringEntry( | |
2824 | + | let hV = bx(P) | |
2825 | + | let hM = hU(hV, hW, hX) | |
2826 | + | let hI = bI(A) | |
2827 | + | let il = hH(hI) | |
2828 | + | let fg = ij(ik, hM, il) | |
2829 | + | let id = split(hM[bc], "_") | |
2830 | + | let jE = (parseIntValue(id[be]) + fg._7) | |
2831 | + | let jF = (parseIntValue(id[bf]) - fg._7) | |
2832 | + | [StringEntry(hI, makeString_2C([il[bh], fg._4, fg._5, fg._6], ":")), StringEntry(hV, makeString_2C([hM[aY], fg._1, fg._2, fg._3, makeString([id[bd], toString(jE), toString(jF), id[bg]], "_")], ":")), lc] | |
2711 | 2833 | } | |
2712 | 2834 | } | |
2713 | 2835 | } | |
2716 | 2838 | ||
2717 | 2839 | ||
2718 | 2840 | ||
2719 | - | @Callable( | |
2720 | - | func saveWarehouse ( | |
2841 | + | @Callable(gH) | |
2842 | + | func saveWarehouse (hZ,P) = if ((gH.caller != db)) | |
2721 | 2843 | then throw("Access denied") | |
2722 | 2844 | else { | |
2723 | - | let | |
2724 | - | let | |
2725 | - | if ((size( | |
2845 | + | let hV = bx(P) | |
2846 | + | let ia = split_4C(hZ, ":") | |
2847 | + | if ((size(ia) != 5)) | |
2726 | 2848 | then throw("warehouse string should contain 4 ':' separators") | |
2727 | 2849 | else { | |
2728 | - | let | |
2729 | - | let | |
2730 | - | let | |
2731 | - | let | |
2732 | - | let | |
2733 | - | $Tuple2([StringEntry( | |
2850 | + | let me = split(ia[bc], "_")[bd] | |
2851 | + | let jE = hL(ia) | |
2852 | + | let mf = hJ(ia[aY]) | |
2853 | + | let jF = ((mf - parseIntValue(me)) - jE) | |
2854 | + | let mg = makeString_2C([ia[aY], ia[aZ], ia[ba], ia[bb], makeString([me, toString(jE), toString(jF), toString(mf)], "_")], ":") | |
2855 | + | $Tuple2([StringEntry(hV, mg)], mg) | |
2734 | 2856 | } | |
2735 | 2857 | } | |
2736 | 2858 | ||
2737 | 2859 | ||
2738 | 2860 | ||
2739 | - | @Callable( | |
2740 | - | func fixWarehouseFormat (P) = if (( | |
2861 | + | @Callable(gH) | |
2862 | + | func fixWarehouseFormat (P) = if ((gH.caller != da)) | |
2741 | 2863 | then throw("Access denied") | |
2742 | 2864 | else { | |
2743 | - | let | |
2744 | - | let | |
2745 | - | let | |
2746 | - | let | |
2747 | - | let | |
2748 | - | let | |
2749 | - | let | |
2750 | - | let | |
2751 | - | let | |
2752 | - | let | |
2753 | - | $Tuple2([StringEntry( | |
2865 | + | let hV = bx(P) | |
2866 | + | let jp = value(assetInfo(fromBase58String(P))) | |
2867 | + | let hW = (dE(split(jp.description, "_")[dh]) / cE) | |
2868 | + | let hX = valueOrElse(getInteger(by(P)), 0) | |
2869 | + | let ia = hU(hV, hW, hX) | |
2870 | + | let me = dy(invoke(db, "recalcLockedVolumeREADONLY", [P, ia], nil)) | |
2871 | + | let jE = hL(ia) | |
2872 | + | let mf = hJ(ia[aY]) | |
2873 | + | let jF = ((mf - me) - jE) | |
2874 | + | let mg = makeString_2C([ia[aY], ia[aZ], ia[ba], ia[bb], makeString([toString(me), toString(jE), toString(jF), toString(mf)], "_")], ":") | |
2875 | + | $Tuple2([StringEntry(hV, mg)], mg) | |
2754 | 2876 | } | |
2755 | 2877 | ||
2756 | 2878 | ||
2757 | 2879 | ||
2758 | - | @Callable( | |
2759 | - | func fixContinentProportions ( | |
2880 | + | @Callable(gH) | |
2881 | + | func fixContinentProportions (kA) = if ((gH.caller != da)) | |
2760 | 2882 | then throw("Access denied") | |
2761 | 2883 | else { | |
2762 | - | func | |
2763 | - | ||
2764 | - | let | |
2765 | - | let | |
2766 | - | let | |
2767 | - | let | |
2768 | - | func | |
2769 | - | then | |
2770 | - | else | |
2771 | - | ||
2772 | - | func | |
2773 | - | then | |
2884 | + | func mh (eO,mi) = (eO :+ valueOrElse(getString(dr(mi)), "0_0_0_0_0_0")) | |
2885 | + | ||
2886 | + | let gr = { | |
2887 | + | let eQ = aP | |
2888 | + | let eR = size(eQ) | |
2889 | + | let eS = nil | |
2890 | + | func eT (eU,eV) = if ((eV >= eR)) | |
2891 | + | then eU | |
2892 | + | else mh(eU, eQ[eV]) | |
2893 | + | ||
2894 | + | func eW (eU,eV) = if ((eV >= eR)) | |
2895 | + | then eU | |
2774 | 2896 | else throw("List size exceeds 5") | |
2775 | 2897 | ||
2776 | - | | |
2777 | - | } | |
2778 | - | func | |
2779 | - | let | |
2780 | - | let | |
2781 | - | let | |
2782 | - | let | |
2783 | - | let | |
2784 | - | let | |
2785 | - | let | |
2786 | - | let | |
2787 | - | let | |
2788 | - | if (("Americas" == | |
2789 | - | then [ | |
2790 | - | else if (("Europe" == | |
2791 | - | then [ | |
2792 | - | else if (("Asia" == | |
2793 | - | then [ | |
2794 | - | else if (("Africa" == | |
2795 | - | then [ | |
2796 | - | else if (("Oceania" == | |
2797 | - | then [ | |
2898 | + | eW(eT(eT(eT(eT(eT(eS, 0), 1), 2), 3), 4), 5) | |
2899 | + | } | |
2900 | + | func mj (eO,P) = { | |
2901 | + | let jp = value(assetInfo(fromBase58String(P))) | |
2902 | + | let jt = split(jp.description, "_") | |
2903 | + | let hW = (dE(jt[dh]) / cE) | |
2904 | + | let mi = jt[dj] | |
2905 | + | let gD = gJ(jt[di]) | |
2906 | + | let hl = value(indexOf(aP, mi)) | |
2907 | + | let kP = split(eO[hl], "_") | |
2908 | + | let mk = makeString(gB(kP, gD, hW, 1), "_") | |
2909 | + | let cx = mi | |
2910 | + | if (("Americas" == cx)) | |
2911 | + | then [mk, eO[1], eO[2], eO[3], eO[4]] | |
2912 | + | else if (("Europe" == cx)) | |
2913 | + | then [eO[0], mk, eO[2], eO[3], eO[4]] | |
2914 | + | else if (("Asia" == cx)) | |
2915 | + | then [eO[0], eO[1], mk, eO[3], eO[4]] | |
2916 | + | else if (("Africa" == cx)) | |
2917 | + | then [eO[0], eO[1], eO[2], mk, eO[4]] | |
2918 | + | else if (("Oceania" == cx)) | |
2919 | + | then [eO[0], eO[1], eO[2], eO[3], mk] | |
2798 | 2920 | else throw("wrong continent") | |
2799 | 2921 | } | |
2800 | 2922 | ||
2801 | - | let | |
2802 | - | let | |
2803 | - | let | |
2804 | - | let | |
2805 | - | func | |
2806 | - | then | |
2807 | - | else | |
2808 | - | ||
2809 | - | func | |
2810 | - | then | |
2923 | + | let eZ = { | |
2924 | + | let eQ = kA | |
2925 | + | let eR = size(eQ) | |
2926 | + | let eS = gr | |
2927 | + | func hC (eU,eV) = if ((eV >= eR)) | |
2928 | + | then eU | |
2929 | + | else mj(eU, eQ[eV]) | |
2930 | + | ||
2931 | + | func hD (eU,eV) = if ((eV >= eR)) | |
2932 | + | then eU | |
2811 | 2933 | else throw("List size exceeds 100") | |
2812 | 2934 | ||
2813 | - | | |
2814 | - | } | |
2815 | - | $Tuple2([StringEntry( | |
2935 | + | hD(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(eS, 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) | |
2936 | + | } | |
2937 | + | $Tuple2([StringEntry(dr("Americas"), eZ[0]), StringEntry(dr("Europe"), eZ[1]), StringEntry(dr("Asia"), eZ[2]), StringEntry(dr("Africa"), eZ[3]), StringEntry(dr("Oceania"), eZ[4])], 0) | |
2816 | 2938 | } | |
2817 | 2939 | ||
2818 | 2940 | ||
2819 | 2941 | ||
2820 | - | @Callable( | |
2821 | - | func fixStakedPieces ( | |
2942 | + | @Callable(gH) | |
2943 | + | func fixStakedPieces (cL) = if ((gH.caller != da)) | |
2822 | 2944 | then throw("Access denied") | |
2823 | 2945 | else { | |
2824 | - | let | |
2946 | + | let kT = if ((cL == "")) | |
2825 | 2947 | then 0 | |
2826 | 2948 | else { | |
2827 | - | let | |
2828 | - | let | |
2829 | - | then split_51C(value( | |
2949 | + | let kM = getString(an, dt(cL)) | |
2950 | + | let kI = if (isDefined(kM)) | |
2951 | + | then split_51C(value(kM), "_") | |
2830 | 2952 | else nil | |
2831 | - | func | |
2832 | - | let | |
2833 | - | let | |
2834 | - | ( | |
2953 | + | func ml (eO,P) = { | |
2954 | + | let jp = value(assetInfo(fromBase58String(P))) | |
2955 | + | let dF = split(jp.description, "_")[dh] | |
2956 | + | (eO + dE(dF)) | |
2835 | 2957 | } | |
2836 | 2958 | ||
2837 | - | let | |
2838 | - | let | |
2839 | - | let | |
2840 | - | func | |
2841 | - | then | |
2842 | - | else | |
2843 | - | ||
2844 | - | func | |
2845 | - | then | |
2959 | + | let eQ = kI | |
2960 | + | let eR = size(eQ) | |
2961 | + | let eS = 0 | |
2962 | + | func eT (eU,eV) = if ((eV >= eR)) | |
2963 | + | then eU | |
2964 | + | else ml(eU, eQ[eV]) | |
2965 | + | ||
2966 | + | func eW (eU,eV) = if ((eV >= eR)) | |
2967 | + | then eU | |
2846 | 2968 | else throw("List size exceeds 100") | |
2847 | 2969 | ||
2848 | - | | |
2970 | + | eW(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eS, 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) | |
2849 | 2971 | } | |
2850 | - | $Tuple2([IntegerEntry( | |
2972 | + | $Tuple2([IntegerEntry(du(cL), kT)], kT) | |
2851 | 2973 | } | |
2852 | 2974 | ||
2853 | 2975 | ||
2854 | 2976 | ||
2855 | - | @Callable( | |
2856 | - | func setCustomName ( | |
2857 | - | let | |
2858 | - | if ((size( | |
2977 | + | @Callable(gH) | |
2978 | + | func setCustomName (bp,kK,bt) = { | |
2979 | + | let lc = kZ(gH) | |
2980 | + | if ((size(gH.payments) != 1)) | |
2859 | 2981 | then throw("Exactly one payment required") | |
2860 | 2982 | else { | |
2861 | - | let | |
2862 | - | if (( | |
2983 | + | let ld = value(gH.payments[0]) | |
2984 | + | if ((ld.assetId != cw)) | |
2863 | 2985 | then throw("Allowed USDT payment only!") | |
2864 | - | else if (( | |
2865 | - | then throw(("Payment should be " + toString( | |
2866 | - | else if (contains( | |
2867 | - | then throw(("Name should not contain '__': " + | |
2868 | - | else if ((size( | |
2869 | - | then throw(("Name too long, maxLength=" + toString( | |
2986 | + | else if ((ld.amount != dZ)) | |
2987 | + | then throw(("Payment should be " + toString(dZ))) | |
2988 | + | else if (contains(kK, "__")) | |
2989 | + | then throw(("Name should not contain '__': " + kK)) | |
2990 | + | else if ((size(kK) > ea)) | |
2991 | + | then throw(("Name too long, maxLength=" + toString(ea))) | |
2870 | 2992 | else { | |
2871 | - | let c = toString( | |
2872 | - | let | |
2873 | - | let | |
2874 | - | if (("ACCOUNT" == | |
2993 | + | let c = toString(gH.originCaller) | |
2994 | + | let mm = { | |
2995 | + | let cx = bt | |
2996 | + | if (("ACCOUNT" == cx)) | |
2875 | 2997 | then { | |
2876 | - | let | |
2877 | - | let | |
2878 | - | if (isDefined( | |
2879 | - | then throw(("Name already registered: " + | |
2998 | + | let mn = eu(kK) | |
2999 | + | let mo = getString(mn) | |
3000 | + | if (isDefined(mo)) | |
3001 | + | then throw(("Name already registered: " + kK)) | |
2880 | 3002 | else { | |
2881 | - | let | |
2882 | - | let | |
2883 | - | let | |
2884 | - | then [DeleteEntry( | |
3003 | + | let mp = bB(c) | |
3004 | + | let mq = getString(mp) | |
3005 | + | let mr = if (isDefined(mq)) | |
3006 | + | then [DeleteEntry(eu(value(mq)))] | |
2885 | 3007 | else nil | |
2886 | - | ((( | |
3008 | + | (((mr :+ StringEntry(mp, kK)) :+ StringEntry(mn, c)) ++ kc(c, Y)._1) | |
2887 | 3009 | } | |
2888 | 3010 | } | |
2889 | - | else if (("LAND" == | |
3011 | + | else if (("LAND" == cx)) | |
2890 | 3012 | then { | |
2891 | - | let | |
2892 | - | let | |
2893 | - | if (!(isDefined(getInteger( | |
2894 | - | then throw(( | |
3013 | + | let jp = value(assetInfo(fromBase58String(bp))) | |
3014 | + | let jq = br(bp) | |
3015 | + | if (!(isDefined(getInteger(jq)))) | |
3016 | + | then throw((jp.name + " is not staked")) | |
2895 | 3017 | else { | |
2896 | - | let | |
2897 | - | if (( | |
3018 | + | let js = valueOrErrorMessage(getString(bo(bp)), (("NFT " + jp.name) + " is orphaned")) | |
3019 | + | if ((js != c)) | |
2898 | 3020 | then throw((aC + " is not yours")) | |
2899 | 3021 | else { | |
2900 | - | let | |
2901 | - | let | |
2902 | - | if (isDefined( | |
2903 | - | then throw(("Name already registered: " + | |
3022 | + | let mn = en(kK) | |
3023 | + | let mo = getString(mn) | |
3024 | + | if (isDefined(mo)) | |
3025 | + | then throw(("Name already registered: " + kK)) | |
2904 | 3026 | else { | |
2905 | - | let | |
2906 | - | let | |
2907 | - | let | |
2908 | - | then [DeleteEntry( | |
3027 | + | let ms = bq(bp) | |
3028 | + | let mq = getString(ms) | |
3029 | + | let mr = if (isDefined(mq)) | |
3030 | + | then [DeleteEntry(en(value(mq)))] | |
2909 | 3031 | else nil | |
2910 | - | ((( | |
3032 | + | (((mr :+ StringEntry(ms, kK)) :+ StringEntry(mn, bp)) ++ kc(c, Y)._1) | |
2911 | 3033 | } | |
2912 | 3034 | } | |
2913 | 3035 | } | |
2914 | 3036 | } | |
2915 | - | else if (("DUCK" == | |
3037 | + | else if (("DUCK" == cx)) | |
2916 | 3038 | then { | |
2917 | - | let | |
2918 | - | let | |
2919 | - | if (if (!(isDefined(getInteger( | |
3039 | + | let jp = value(assetInfo(fromBase58String(bp))) | |
3040 | + | let jq = br(bp) | |
3041 | + | if (if (!(isDefined(getInteger(jq)))) | |
2920 | 3042 | then true | |
2921 | - | else !(isDefined(getString( | |
2922 | - | then throw(( | |
3043 | + | else !(isDefined(getString(bH(c))))) | |
3044 | + | then throw((jp.name + " is not staked")) | |
2923 | 3045 | else { | |
2924 | - | let | |
2925 | - | if (( | |
3046 | + | let js = valueOrErrorMessage(getString(bG(bp)), (("NFT " + jp.name) + " is orphaned")) | |
3047 | + | if ((js != c)) | |
2926 | 3048 | then throw((aD + " is not yours")) | |
2927 | 3049 | else { | |
2928 | - | let | |
2929 | - | let | |
2930 | - | if (isDefined( | |
2931 | - | then throw(("Name already registered: " + | |
3050 | + | let mn = et(kK) | |
3051 | + | let mo = getString(mn) | |
3052 | + | if (isDefined(mo)) | |
3053 | + | then throw(("Name already registered: " + kK)) | |
2932 | 3054 | else { | |
2933 | - | let | |
2934 | - | let | |
2935 | - | let | |
2936 | - | then [DeleteEntry( | |
3055 | + | let ms = bA(bp) | |
3056 | + | let mq = getString(ms) | |
3057 | + | let mr = if (isDefined(mq)) | |
3058 | + | then [DeleteEntry(et(value(mq)))] | |
2937 | 3059 | else nil | |
2938 | - | ((( | |
3060 | + | (((mr :+ StringEntry(ms, kK)) :+ StringEntry(mn, bp)) ++ jW(bp, Y)._1) | |
2939 | 3061 | } | |
2940 | 3062 | } | |
2941 | 3063 | } | |
2942 | 3064 | } | |
2943 | 3065 | else throw("Unknown entity type") | |
2944 | 3066 | } | |
2945 | - | $Tuple2((( | |
3067 | + | $Tuple2(((mm :+ ScriptTransfer(db, ld.amount, cw)) :+ lc), 0) | |
2946 | 3068 | } | |
2947 | 3069 | } | |
2948 | 3070 | } | |
2949 | 3071 | ||
2950 | 3072 | ||
2951 | 3073 | ||
2952 | - | @Callable( | |
2953 | - | func setReferrals ( | |
3074 | + | @Callable(gH) | |
3075 | + | func setReferrals (mt,mu) = if ((gH.callerPublicKey != dW)) | |
2954 | 3076 | then throw("Permission denied") | |
2955 | 3077 | else { | |
2956 | - | let | |
2957 | - | if ((size( | |
3078 | + | let lc = kZ(gH) | |
3079 | + | if ((size(gH.payments) != 0)) | |
2958 | 3080 | then throw("No payments required") | |
2959 | - | else if (!(isDefined(addressFromString( | |
2960 | - | then throw(("Invalid address: " + | |
2961 | - | else if (!(isDefined(addressFromString( | |
2962 | - | then throw(("Invalid address: " + | |
3081 | + | else if (!(isDefined(addressFromString(mt)))) | |
3082 | + | then throw(("Invalid address: " + mt)) | |
3083 | + | else if (!(isDefined(addressFromString(mu)))) | |
3084 | + | then throw(("Invalid address: " + mu)) | |
2963 | 3085 | else { | |
2964 | - | let | |
2965 | - | let | |
2966 | - | let | |
2967 | - | then split_4C(value( | |
3086 | + | let mv = ev() | |
3087 | + | let mw = getString(mv) | |
3088 | + | let mx = if (isDefined(mw)) | |
3089 | + | then split_4C(value(mw), "_") | |
2968 | 3090 | else nil | |
2969 | - | if (containsElement( | |
2970 | - | then throw(( | |
3091 | + | if (containsElement(mx, mu)) | |
3092 | + | then throw((mu + " is not newbie (already has referrals)")) | |
2971 | 3093 | else { | |
2972 | - | let | |
2973 | - | let | |
2974 | - | if (if (isDefined( | |
2975 | - | then isDefined(addressFromString(value( | |
3094 | + | let ke = bC(mu) | |
3095 | + | let kf = getString(ke) | |
3096 | + | if (if (isDefined(kf)) | |
3097 | + | then isDefined(addressFromString(value(kf))) | |
2976 | 3098 | else false) | |
2977 | - | then throw((( | |
3099 | + | then throw(((mu + " already has refBy: ") + value(kf))) | |
2978 | 3100 | else { | |
2979 | - | let | |
2980 | - | let | |
2981 | - | let | |
2982 | - | then split_4C(value( | |
3101 | + | let my = bF(mt) | |
3102 | + | let mz = getString(my) | |
3103 | + | let mA = if (isDefined(mz)) | |
3104 | + | then split_4C(value(mz), "_") | |
2983 | 3105 | else nil | |
2984 | - | if (containsElement( | |
2985 | - | then throw(((( | |
3106 | + | if (containsElement(mA, mu)) | |
3107 | + | then throw((((mt + " already contains ") + mu) + " within referrals")) | |
2986 | 3108 | else { | |
2987 | - | let | |
2988 | - | let | |
2989 | - | then value( | |
2990 | - | else makeString_2C(( | |
2991 | - | $Tuple2([StringEntry( | |
3109 | + | let mB = makeString_2C((mA :+ mu), "_") | |
3110 | + | let mC = if (containsElement(mx, mt)) | |
3111 | + | then value(mw) | |
3112 | + | else makeString_2C((mx :+ mt), "_") | |
3113 | + | $Tuple2([StringEntry(ke, mt), StringEntry(my, mB), StringEntry(mv, mC), lc], 0) | |
2992 | 3114 | } | |
2993 | 3115 | } | |
2994 | 3116 | } | |
2997 | 3119 | ||
2998 | 3120 | ||
2999 | 3121 | ||
3000 | - | @Callable( | |
3001 | - | func distributePoints ( | |
3002 | - | let | |
3003 | - | if ((size( | |
3122 | + | @Callable(gH) | |
3123 | + | func distributePoints (mD,mE,mF,mG,mH) = { | |
3124 | + | let lc = kZ(gH) | |
3125 | + | if ((size(gH.payments) != 0)) | |
3004 | 3126 | then throw("No payments required") | |
3005 | 3127 | else { | |
3006 | - | let c = toString( | |
3007 | - | let A = valueOrErrorMessage(getString( | |
3008 | - | let | |
3009 | - | let | |
3010 | - | let | |
3011 | - | let | |
3012 | - | let | |
3013 | - | let | |
3014 | - | if (( | |
3015 | - | then throw((("There are only " + toString( | |
3128 | + | let c = toString(gH.originCaller) | |
3129 | + | let A = valueOrErrorMessage(getString(bH(c)), "You don't have a duck staked") | |
3130 | + | let mI = I(c) | |
3131 | + | let mJ = valueOrElse(getInteger(an, mI), 0) | |
3132 | + | let mK = E(A) | |
3133 | + | let mL = valueOrElse(getInteger(an, mK), 0) | |
3134 | + | let mM = (mJ + mL) | |
3135 | + | let mN = ((((mD + mE) + mF) + mG) + mH) | |
3136 | + | if ((mN > mM)) | |
3137 | + | then throw((("There are only " + toString(mM)) + " free points to distribute")) | |
3016 | 3138 | else { | |
3017 | - | let | |
3018 | - | let aq = split(valueOrElse(getString(an, | |
3019 | - | let | |
3020 | - | $Tuple2([IntegerEntry( | |
3139 | + | let mO = B(A) | |
3140 | + | let aq = split(valueOrElse(getString(an, mO), "0_0_0_0_0"), "_") | |
3141 | + | let mP = (mJ - mN) | |
3142 | + | $Tuple2([IntegerEntry(mI, if ((0 > mP)) | |
3021 | 3143 | then 0 | |
3022 | - | else | |
3023 | - | then ( | |
3024 | - | else | |
3144 | + | else mP), IntegerEntry(mK, if ((0 > mP)) | |
3145 | + | then (mL + mP) | |
3146 | + | else mL), StringEntry(mO, makeString([toString((parseIntValue(aq[k]) + mD)), toString((parseIntValue(aq[l]) + mE)), toString((parseIntValue(aq[m]) + mF)), toString((parseIntValue(aq[n]) + mG)), toString((parseIntValue(aq[o]) + mH))], "_")), lc], 0) | |
3025 | 3147 | } | |
3026 | 3148 | } | |
3027 | 3149 | } | |
3028 | 3150 | ||
3029 | 3151 | ||
3030 | 3152 | ||
3031 | - | @Callable( | |
3032 | - | func splitByGlobalWeightsREADONLY ( | |
3033 | - | ||
3034 | - | ||
3035 | - | ||
3036 | - | @Callable( | |
3037 | - | func splitByGlobalAndLocalWeightsREADONLY ( | |
3038 | - | let | |
3039 | - | $Tuple2(nil, $Tuple2( | |
3040 | - | } | |
3041 | - | ||
3042 | - | ||
3043 | - | ||
3044 | - | @Callable( | |
3045 | - | func getBackpackREADONLY (A) = $Tuple2(nil, makeString( | |
3046 | - | ||
3047 | - | ||
3048 | - | ||
3049 | - | @Callable( | |
3153 | + | @Callable(gH) | |
3154 | + | func splitByGlobalWeightsREADONLY (eF) = $Tuple2(nil, eX(eF)) | |
3155 | + | ||
3156 | + | ||
3157 | + | ||
3158 | + | @Callable(gH) | |
3159 | + | func splitByGlobalAndLocalWeightsREADONLY (mQ,mR,gK) = { | |
3160 | + | let gD = gJ(gK) | |
3161 | + | $Tuple2(nil, $Tuple2(eX(mQ), eI(mR, gD))) | |
3162 | + | } | |
3163 | + | ||
3164 | + | ||
3165 | + | ||
3166 | + | @Callable(gH) | |
3167 | + | func getBackpackREADONLY (A) = $Tuple2(nil, makeString(hH(bI(A)), ":")) | |
3168 | + | ||
3169 | + | ||
3170 | + | ||
3171 | + | @Callable(gH) | |
3050 | 3172 | func getWarehouseREADONLY (P) = { | |
3051 | - | let | |
3052 | - | let | |
3053 | - | let | |
3054 | - | $Tuple2(nil, makeString_2C( | |
3055 | - | } | |
3056 | - | ||
3057 | - | ||
3058 | - | ||
3059 | - | @Callable( | |
3173 | + | let jp = value(assetInfo(fromBase58String(P))) | |
3174 | + | let hW = (dE(split(jp.description, "_")[dh]) / cE) | |
3175 | + | let hX = valueOrElse(getInteger(by(P)), 0) | |
3176 | + | $Tuple2(nil, makeString_2C(hU(bx(P), hW, hX), ":")) | |
3177 | + | } | |
3178 | + | ||
3179 | + | ||
3180 | + | ||
3181 | + | @Callable(gH) | |
3060 | 3182 | func saveLastTx () = { | |
3061 | - | let | |
3062 | - | if (!(containsElement([ | |
3183 | + | let iG = gH.caller | |
3184 | + | if (!(containsElement([dd, db, de, df], iG))) | |
3063 | 3185 | then throw("Access denied") | |
3064 | - | else $Tuple2([ | |
3065 | - | } | |
3066 | - | ||
3067 | - | ||
3068 | - | ||
3069 | - | @Callable( | |
3070 | - | func updateDuckStats (A, | |
3186 | + | else $Tuple2([kZ(gH)], 42) | |
3187 | + | } | |
3188 | + | ||
3189 | + | ||
3190 | + | ||
3191 | + | @Callable(gH) | |
3192 | + | func updateDuckStats (A,jX) = if ((gH.caller != db)) | |
3071 | 3193 | then throw("Access denied") | |
3072 | - | else | |
3073 | - | ||
3074 | - | ||
3075 | - | ||
3076 | - | @Callable( | |
3077 | - | func updateAccStats (c, | |
3078 | - | then ( | |
3194 | + | else jW(A, jX) | |
3195 | + | ||
3196 | + | ||
3197 | + | ||
3198 | + | @Callable(gH) | |
3199 | + | func updateAccStats (c,jX) = if (if ((gH.caller != db)) | |
3200 | + | then (gH.caller != df) | |
3079 | 3201 | else false) | |
3080 | 3202 | then throw("Access denied") | |
3081 | - | else | |
3082 | - | ||
3083 | - | ||
3084 | - | ||
3085 | - | @Callable( | |
3086 | - | func equipDuck ( | |
3087 | - | let | |
3088 | - | if ((size( | |
3203 | + | else kc(c, jX) | |
3204 | + | ||
3205 | + | ||
3206 | + | ||
3207 | + | @Callable(gH) | |
3208 | + | func equipDuck (mS) = { | |
3209 | + | let lc = kZ(gH) | |
3210 | + | if ((size(gH.payments) != 0)) | |
3089 | 3211 | then throw("No payments required") | |
3090 | 3212 | else { | |
3091 | - | let c = toString( | |
3092 | - | let A = valueOrErrorMessage(getString( | |
3093 | - | if ( | |
3213 | + | let c = toString(gH.originCaller) | |
3214 | + | let A = valueOrErrorMessage(getString(bH(c)), "You don't have a duck staked") | |
3215 | + | if (km(A)) | |
3094 | 3216 | then throw("equipDuck_checkTournament") | |
3095 | - | else if ( | |
3217 | + | else if (kn(A)) | |
3096 | 3218 | then throw("equipDuck_checkDelivery") | |
3097 | 3219 | else { | |
3098 | - | let | |
3099 | - | let | |
3100 | - | let | |
3101 | - | let | |
3102 | - | let | |
3103 | - | if ((size( | |
3220 | + | let gu = F(A) | |
3221 | + | let mT = split(valueOrElse(getString(gu), ",;,_,;,_,;,_,;,_,;,_,;,"), "_") | |
3222 | + | let hI = bI(A) | |
3223 | + | let il = hH(hI) | |
3224 | + | let lu = split(mS, "_") | |
3225 | + | if ((size(lu) != q)) | |
3104 | 3226 | then throw("Wrong equipment string") | |
3105 | 3227 | else { | |
3106 | - | let | |
3107 | - | let | |
3108 | - | let ao = if (( | |
3228 | + | let gw = gj(mT, fu(il[bk]), true, nil) | |
3229 | + | let gx = split(lu[p], ";")[1] | |
3230 | + | let ao = if ((gx == "")) | |
3109 | 3231 | then 0 | |
3110 | 3232 | else { | |
3111 | - | let | |
3112 | - | if (( | |
3233 | + | let gy = split(gx, ",")[0] | |
3234 | + | if ((gy == "")) | |
3113 | 3235 | then 0 | |
3114 | 3236 | else { | |
3115 | - | let | |
3116 | - | let | |
3117 | - | let | |
3118 | - | if (if (if (if (if (( | |
3237 | + | let fJ = split(gy, ":") | |
3238 | + | let cZ = fJ[0] | |
3239 | + | let gz = fJ[1] | |
3240 | + | if (if (if (if (if ((cZ == "06")) | |
3119 | 3241 | then true | |
3120 | - | else ( | |
3242 | + | else (cZ == "07")) | |
3121 | 3243 | then true | |
3122 | - | else ( | |
3123 | - | then ( | |
3244 | + | else (cZ == "08")) | |
3245 | + | then (gz != "") | |
3124 | 3246 | else false) | |
3125 | - | then (parseIntValue( | |
3247 | + | then (parseIntValue(gz) > 0) | |
3126 | 3248 | else false) | |
3127 | - | then parseIntValue(split( | |
3249 | + | then parseIntValue(split(aS[parseIntValue(cZ)], "_")[aU]) | |
3128 | 3250 | else 0 | |
3129 | 3251 | } | |
3130 | 3252 | } | |
3131 | - | let | |
3132 | - | let | |
3133 | - | let | |
3134 | - | $Tuple2([StringEntry( | |
3253 | + | let ge = am(this, A, ao, true) | |
3254 | + | let gA = gj(lu, gw, false, ge) | |
3255 | + | let mU = fz(gA) | |
3256 | + | $Tuple2([StringEntry(gu, mS), StringEntry(hI, makeString_2C([il[bh], il[bi], il[bj], mU], ":")), StringEntry(L(A), makeString([toString(ge[7]), toString(ge[8]), toString(ge[9]), toString(ge[10]), toString(ge[11])], "_")), lc], 0) | |
3135 | 3257 | } | |
3136 | 3258 | } | |
3137 | 3259 | } | |
3139 | 3261 | ||
3140 | 3262 | ||
3141 | 3263 | ||
3142 | - | @Callable( | |
3143 | - | func fortificateLand (P, | |
3144 | - | let | |
3145 | - | if ((size( | |
3264 | + | @Callable(gH) | |
3265 | + | func fortificateLand (P,mV) = { | |
3266 | + | let lc = kZ(gH) | |
3267 | + | if ((size(gH.payments) != 0)) | |
3146 | 3268 | then throw("No payments required") | |
3147 | 3269 | else { | |
3148 | - | let c = toString( | |
3149 | - | let A = valueOrElse(getString( | |
3150 | - | let | |
3151 | - | let | |
3152 | - | let | |
3153 | - | let | |
3154 | - | let | |
3155 | - | let | |
3156 | - | let | |
3157 | - | let | |
3158 | - | let | |
3159 | - | let | |
3160 | - | let | |
3161 | - | let | |
3162 | - | let | |
3163 | - | let | |
3164 | - | let | |
3165 | - | let | |
3166 | - | let | |
3167 | - | let | |
3168 | - | let | |
3169 | - | let | |
3170 | - | let | |
3171 | - | let | |
3172 | - | $Tuple2([StringEntry( | |
3173 | - | } | |
3174 | - | } | |
3175 | - | ||
3176 | - | ||
3177 | - | ||
3178 | - | @Callable( | |
3179 | - | func initDuckTourAttempt (A) = if (( | |
3270 | + | let c = toString(gH.originCaller) | |
3271 | + | let A = valueOrElse(getString(bH(c)), "") | |
3272 | + | let fE = am(this, A, 0, false) | |
3273 | + | let mW = bz(P) | |
3274 | + | let mX = split(valueOrElse(getString(mW), ":0_15:0_18:0"), "_") | |
3275 | + | let jp = value(assetInfo(fromBase58String(P))) | |
3276 | + | let hW = (dE(split(jp.description, "_")[dh]) / cE) | |
3277 | + | let hX = valueOrElse(getInteger(by(P)), 0) | |
3278 | + | let hV = bx(P) | |
3279 | + | let ia = hU(hV, hW, hX) | |
3280 | + | let mY = split(ia[bc], "_") | |
3281 | + | let mZ = parseIntValue(mY[be]) | |
3282 | + | let na = parseIntValue(mY[bf]) | |
3283 | + | let nb = split(mV, "_") | |
3284 | + | let nc = gq(mX, fu(ia[bb]), mZ, na, true, nil) | |
3285 | + | let gw = nc._1 | |
3286 | + | let nd = nc._2 | |
3287 | + | let ne = nc._3 | |
3288 | + | let nf = gq(nb, gw, nd, ne, false, fE) | |
3289 | + | let gA = nf._1 | |
3290 | + | let ng = nf._2 | |
3291 | + | let nh = nf._3 | |
3292 | + | let mU = fz(gA) | |
3293 | + | let jV = makeString([mY[bd], toString(ng), toString(nh), mY[bg]], "_") | |
3294 | + | $Tuple2([StringEntry(mW, mV), StringEntry(hV, makeString_2C([ia[aY], ia[aZ], ia[ba], mU, jV], ":")), lc], 0) | |
3295 | + | } | |
3296 | + | } | |
3297 | + | ||
3298 | + | ||
3299 | + | ||
3300 | + | @Callable(gH) | |
3301 | + | func initDuckTourAttempt (A) = if ((gH.caller != de)) | |
3180 | 3302 | then throw("Access denied") | |
3181 | 3303 | else { | |
3182 | - | let | |
3183 | - | let | |
3184 | - | let | |
3185 | - | let | |
3186 | - | let | |
3187 | - | let | |
3188 | - | let | |
3189 | - | let | |
3190 | - | $Tuple2([ | |
3304 | + | let lc = kZ(gH) | |
3305 | + | let iY = z(A) | |
3306 | + | let iZ = ag(valueOrElse(getInteger(D(A)), 0)) | |
3307 | + | let kq = valueOrElse(getInteger(iY), iZ) | |
3308 | + | let ni = bJ(A) | |
3309 | + | let jn = valueOrElse(getString(ni), aJ) | |
3310 | + | let ce = valueOrElse(getInteger(de, bP), 0) | |
3311 | + | let nj = (toString(ce) + "_T_0") | |
3312 | + | $Tuple2([lc, IntegerEntry(J(A), kq), IntegerEntry(iY, iZ), StringEntry(K(A), jn), StringEntry(ni, nj)], nj) | |
3191 | 3313 | } | |
3192 | 3314 | ||
3193 | 3315 | ||
3194 | 3316 | ||
3195 | - | @Callable( | |
3317 | + | @Callable(gH) | |
3196 | 3318 | func breakAttempt () = { | |
3197 | - | let | |
3198 | - | let A = valueOrErrorMessage(getString( | |
3199 | - | let | |
3200 | - | let | |
3201 | - | if ((split( | |
3319 | + | let lc = kZ(gH) | |
3320 | + | let A = valueOrErrorMessage(getString(bH(toString(gH.caller))), "You don't have a duck staked") | |
3321 | + | let ni = bJ(A) | |
3322 | + | let jn = valueOrElse(getString(ni), aJ) | |
3323 | + | if ((split(jn, "_")[bm] != "T")) | |
3202 | 3324 | then throw("Your duck is not in the tournament") | |
3203 | 3325 | else { | |
3204 | - | let | |
3205 | - | let | |
3206 | - | $Tuple2([ | |
3207 | - | } | |
3208 | - | } | |
3209 | - | ||
3210 | - | ||
3211 | - | ||
3212 | - | @Callable( | |
3213 | - | func exitTournamentInternal (A) = if (( | |
3326 | + | let kv = getIntegerValue(J(A)) | |
3327 | + | let kw = getStringValue(K(A)) | |
3328 | + | $Tuple2([lc, IntegerEntry(z(A), kv), StringEntry(ni, kw)], jn) | |
3329 | + | } | |
3330 | + | } | |
3331 | + | ||
3332 | + | ||
3333 | + | ||
3334 | + | @Callable(gH) | |
3335 | + | func exitTournamentInternal (A) = if ((gH.caller != this)) | |
3214 | 3336 | then throw("Access denied") | |
3215 | 3337 | else { | |
3216 | - | let | |
3217 | - | let | |
3218 | - | $Tuple2([IntegerEntry(z(A), | |
3338 | + | let kv = getIntegerValue(J(A)) | |
3339 | + | let kw = getStringValue(K(A)) | |
3340 | + | $Tuple2([IntegerEntry(z(A), kv), StringEntry(bJ(A), kw)], false) | |
3219 | 3341 | } | |
3220 | 3342 | ||
3221 | 3343 | ||
3222 | 3344 | ||
3223 | - | @Callable( | |
3224 | - | func exitDeliveryInternal (A) = if (( | |
3345 | + | @Callable(gH) | |
3346 | + | func exitDeliveryInternal (A) = if ((gH.caller != this)) | |
3225 | 3347 | then throw("Access denied") | |
3226 | 3348 | else { | |
3227 | - | let jc = split(valueOrElse(getString(bI(A)), aJ), "_") | |
3228 | - | let ax = lastBlock.timestamp | |
3229 | - | let kd = parseIntValue(jc[bk]) | |
3230 | - | let ke = parseIntValue(jc[bm]) | |
3231 | - | let jh = valueOrErrorMessage(getString(bF(A)), "NFT duck is orphaned") | |
3232 | - | let mS = z(A) | |
3233 | - | let kX = getIntegerValue(mS) | |
3234 | - | let mT = if ((ke >= 3)) | |
3235 | - | then { | |
3236 | - | let mU = invoke(cR, "sendDeliveryReward", [jh], nil) | |
3237 | - | if ((mU == mU)) | |
3238 | - | then nil | |
3239 | - | else throw("Strict value is not equal to itself.") | |
3240 | - | } | |
3241 | - | else { | |
3242 | - | let mV = valueOrElse(getInteger(cR, bN), 0) | |
3243 | - | let mW = invoke(cR, "updateDeliveryLocked", [(mV - aM)], nil) | |
3244 | - | if ((mW == mW)) | |
3245 | - | then if ((0 >= kX)) | |
3246 | - | then nil | |
3247 | - | else [IntegerEntry(T(A), (kd + a))] | |
3248 | - | else throw("Strict value is not equal to itself.") | |
3249 | - | } | |
3250 | - | let mQ = getIntegerValue(J(A)) | |
3251 | - | let mR = getStringValue(K(A)) | |
3252 | - | $Tuple2(((mT :+ IntegerEntry(mS, mQ)) :+ StringEntry(bI(A), mR)), false) | |
3349 | + | let ma = ko(A) | |
3350 | + | $Tuple2((ma._1 ++ ma._2), false) | |
3253 | 3351 | } | |
3254 | 3352 | ||
3255 | 3353 | ||
3256 | 3354 | ||
3257 | - | @Callable(gw) | |
3258 | - | func prepareRobbery (iC,iD) = { | |
3259 | - | let kK = kH(gw) | |
3260 | - | if (!(sigVerify_8Kb(iC, iD, dK))) | |
3355 | + | @Callable(gH) | |
3356 | + | func autoExitDelivery (A) = if ((gH.caller != this)) | |
3357 | + | then throw("Access denied") | |
3358 | + | else { | |
3359 | + | let ma = ko(A) | |
3360 | + | $Tuple2(ma._1, $Tuple2(ma._3, ma._4)) | |
3361 | + | } | |
3362 | + | ||
3363 | + | ||
3364 | + | ||
3365 | + | @Callable(gH) | |
3366 | + | func prepareRobbery (iN,iO) = { | |
3367 | + | let lc = kZ(gH) | |
3368 | + | if (!(sigVerify_8Kb(iN, iO, dW))) | |
3261 | 3369 | then throw("signature does not match") | |
3262 | - | else if ((size( | |
3370 | + | else if ((size(gH.payments) != 1)) | |
3263 | 3371 | then throw("exactly 1 payment must be attached") | |
3264 | 3372 | else { | |
3265 | - | let | |
3266 | - | let | |
3267 | - | if (if (!(isDefined( | |
3373 | + | let ld = gH.payments[0] | |
3374 | + | let nk = ld.amount | |
3375 | + | if (if (!(isDefined(ld.assetId))) | |
3268 | 3376 | then true | |
3269 | - | else (value( | |
3377 | + | else (value(ld.assetId) != dl)) | |
3270 | 3378 | then throw("WLGOLD payments only!") | |
3271 | 3379 | else { | |
3272 | - | let | |
3273 | - | if ((size( | |
3380 | + | let fm = split(toUtf8String(iN), "|") | |
3381 | + | if ((size(fm) != 2)) | |
3274 | 3382 | then throw("Wrong message format") | |
3275 | 3383 | else { | |
3276 | - | let A = | |
3384 | + | let A = fm[0] | |
3277 | 3385 | let ay = au(this, A)._1 | |
3278 | - | if ((ay > | |
3279 | - | then throw(((("Payment " + toString( | |
3386 | + | if ((ay > nk)) | |
3387 | + | then throw(((("Payment " + toString(nk)) + " < required ") + toString(ay))) | |
3280 | 3388 | else { | |
3281 | - | let | |
3389 | + | let nl = split(fm[1], "_") | |
3282 | 3390 | let ax = lastBlock.timestamp | |
3283 | 3391 | let az = valueOrElse(getInteger(R(A)), 0) | |
3284 | 3392 | let aA = valueOrElse(getString(S(A)), "") | |
3288 | 3396 | else false) | |
3289 | 3397 | then throw(("You already started robbing, wait till " + toString(aB))) | |
3290 | 3398 | else { | |
3291 | - | func | |
3292 | - | let | |
3293 | - | let | |
3294 | - | if (( | |
3399 | + | func nm (eO,P) = { | |
3400 | + | let nn = valueOrElse(getInteger(O(P)), 0) | |
3401 | + | let no = valueOrElse(getInteger(Q(P)), 0) | |
3402 | + | if ((nn > size(u))) | |
3295 | 3403 | then throw("Invalid state") | |
3296 | - | else if ((ax > | |
3404 | + | else if ((ax > no)) | |
3297 | 3405 | then { | |
3298 | - | let | |
3299 | - | if ((0 >= | |
3300 | - | then | |
3406 | + | let np = valueOrElse(getInteger(br(P)), 0) | |
3407 | + | if ((0 >= np)) | |
3408 | + | then eO | |
3301 | 3409 | else { | |
3302 | - | let | |
3303 | - | let | |
3304 | - | let | |
3305 | - | let | |
3306 | - | let | |
3307 | - | let | |
3308 | - | if ((v > | |
3309 | - | then | |
3310 | - | else ( | |
3410 | + | let go = value(assetInfo(fromBase58String(P))) | |
3411 | + | let jt = split(go.description, "_") | |
3412 | + | let jf = dE(jt[dh]) | |
3413 | + | let nq = je(P, jf) | |
3414 | + | let gN = (ax - np) | |
3415 | + | let jw = fraction(gN, (nq * jf), a) | |
3416 | + | if ((v > jw)) | |
3417 | + | then eO | |
3418 | + | else (eO :+ P) | |
3311 | 3419 | } | |
3312 | 3420 | } | |
3313 | - | else | |
3421 | + | else eO | |
3314 | 3422 | } | |
3315 | 3423 | ||
3316 | - | let | |
3317 | - | let | |
3318 | - | let | |
3319 | - | let | |
3320 | - | func | |
3321 | - | then | |
3322 | - | else | |
3323 | - | ||
3324 | - | func | |
3325 | - | then | |
3424 | + | let nr = { | |
3425 | + | let eQ = nl | |
3426 | + | let eR = size(eQ) | |
3427 | + | let eS = nil | |
3428 | + | func eT (eU,eV) = if ((eV >= eR)) | |
3429 | + | then eU | |
3430 | + | else nm(eU, eQ[eV]) | |
3431 | + | ||
3432 | + | func eW (eU,eV) = if ((eV >= eR)) | |
3433 | + | then eU | |
3326 | 3434 | else throw("List size exceeds 10") | |
3327 | 3435 | ||
3328 | - | | |
3436 | + | eW(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eS, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
3329 | 3437 | } | |
3330 | - | if ((size( | |
3438 | + | if ((size(nr) == 0)) | |
3331 | 3439 | then throw("No candidates for robbery") | |
3332 | 3440 | else { | |
3333 | - | let | |
3334 | - | let P = | |
3335 | - | $Tuple2([IntegerEntry(O(P), w), IntegerEntry(Q(P), (ax + u[w])), IntegerEntry(R(A), y), StringEntry(S(A), P), | |
3441 | + | let ns = dO(size(nr), height, (iO + gH.transactionId)) | |
3442 | + | let P = nr[ns] | |
3443 | + | $Tuple2([IntegerEntry(O(P), w), IntegerEntry(Q(P), (ax + u[w])), IntegerEntry(R(A), y), StringEntry(S(A), P), lc], P) | |
3336 | 3444 | } | |
3337 | 3445 | } | |
3338 | 3446 | } | |
3343 | 3451 | ||
3344 | 3452 | ||
3345 | 3453 | ||
3346 | - | @Callable( | |
3347 | - | func robLand ( | |
3348 | - | let | |
3349 | - | if (!(sigVerify_8Kb( | |
3454 | + | @Callable(gH) | |
3455 | + | func robLand (iN,iO) = { | |
3456 | + | let lc = kZ(gH) | |
3457 | + | if (!(sigVerify_8Kb(iN, iO, dW))) | |
3350 | 3458 | then throw("signature does not match") | |
3351 | 3459 | else { | |
3352 | - | let | |
3353 | - | let A = valueOrErrorMessage(getString( | |
3460 | + | let bL = toString(gH.caller) | |
3461 | + | let A = valueOrErrorMessage(getString(bH(bL)), "You don't have a duck staked") | |
3354 | 3462 | let ax = lastBlock.timestamp | |
3355 | - | $Tuple2([ | |
3356 | - | } | |
3357 | - | } | |
3358 | - | ||
3359 | - | ||
3360 | - | ||
3361 | - | @Callable( | |
3362 | - | func acceptDelivery () = if (!( | |
3463 | + | $Tuple2([lc, IntegerEntry(M(A), ax)], 0) | |
3464 | + | } | |
3465 | + | } | |
3466 | + | ||
3467 | + | ||
3468 | + | ||
3469 | + | @Callable(gH) | |
3470 | + | func acceptDelivery () = if (!(cu)) | |
3363 | 3471 | then throw("Delivery feature is turned off!") | |
3364 | 3472 | else { | |
3365 | - | let | |
3366 | - | let | |
3367 | - | let A = valueOrErrorMessage(getString( | |
3368 | - | let | |
3369 | - | let | |
3370 | - | if ((aM > ( | |
3371 | - | then throw(((("Delivery is not available, fund=" + | |
3473 | + | let lc = kZ(gH) | |
3474 | + | let bL = toString(gH.caller) | |
3475 | + | let A = valueOrErrorMessage(getString(bH(bL)), "You don't have a duck staked") | |
3476 | + | let nt = valueOrElse(getInteger(db, bN), 0) | |
3477 | + | let kt = valueOrElse(getInteger(db, bO), 0) | |
3478 | + | if ((aM > (nt - kt))) | |
3479 | + | then throw(((("Delivery is not available, fund=" + dJ(nt, 6)) + ", locked=") + dJ(kt, 6))) | |
3372 | 3480 | else { | |
3373 | 3481 | let ax = lastBlock.timestamp | |
3374 | - | let | |
3375 | - | if (( | |
3376 | - | then throw(("Delivery is forbidden for your duck until " + toString( | |
3377 | - | else if ( | |
3482 | + | let nu = valueOrElse(getInteger(T(A)), 0) | |
3483 | + | if ((nu > ax)) | |
3484 | + | then throw(("Delivery is forbidden for your duck until " + toString(nu))) | |
3485 | + | else if (km(A)) | |
3378 | 3486 | then throw("acceptDelivery_checkTournament") | |
3379 | - | else if ( | |
3487 | + | else if (kn(A)) | |
3380 | 3488 | then throw("acceptDelivery_checkDelivery") | |
3381 | 3489 | else { | |
3382 | - | let | |
3383 | - | let | |
3384 | - | let | |
3385 | - | let | |
3386 | - | let | |
3387 | - | let | |
3388 | - | let | |
3389 | - | $Tuple2([ | |
3490 | + | let nv = dy(invoke(db, "updateDeliveryLocked", [(kt + aM)], nil)) | |
3491 | + | let iY = z(A) | |
3492 | + | let iZ = ag(valueOrElse(getInteger(D(A)), 0)) | |
3493 | + | let kq = valueOrElse(getInteger(iY), iZ) | |
3494 | + | let ni = bJ(A) | |
3495 | + | let jn = valueOrElse(getString(ni), aJ) | |
3496 | + | let nw = (toString(ax) + "_D_0") | |
3497 | + | $Tuple2([lc, IntegerEntry(J(A), kq), IntegerEntry(iY, iZ), StringEntry(K(A), jn), StringEntry(ni, nw)], $Tuple2(nw, nv)) | |
3390 | 3498 | } | |
3391 | 3499 | } | |
3392 | 3500 | } |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 6 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | let a = 86400000 | |
5 | 5 | ||
6 | 6 | func b (c) = ("lastArbTimeUser_" + c) | |
7 | 7 | ||
8 | 8 | ||
9 | 9 | let d = 100000000 | |
10 | 10 | ||
11 | 11 | let e = 3200 | |
12 | 12 | ||
13 | 13 | let f = 4000 | |
14 | 14 | ||
15 | 15 | let g = 3 | |
16 | 16 | ||
17 | 17 | let h = 100000000 | |
18 | 18 | ||
19 | 19 | let i = 400 | |
20 | 20 | ||
21 | 21 | let j = ["Strength", "Accuracy", "Intellect", "Endurance", "Dexterity", "Level", "Health"] | |
22 | 22 | ||
23 | 23 | let k = 0 | |
24 | 24 | ||
25 | 25 | let l = 1 | |
26 | 26 | ||
27 | 27 | let m = 2 | |
28 | 28 | ||
29 | 29 | let n = 3 | |
30 | 30 | ||
31 | 31 | let o = 4 | |
32 | 32 | ||
33 | 33 | let p = 0 | |
34 | 34 | ||
35 | 35 | let q = 6 | |
36 | 36 | ||
37 | 37 | let r = 2 | |
38 | 38 | ||
39 | 39 | let s = 2 | |
40 | 40 | ||
41 | 41 | let t = 30 | |
42 | 42 | ||
43 | 43 | let u = [0, 600000, 900000, 43200000, 21600000] | |
44 | 44 | ||
45 | 45 | let v = 20000000 | |
46 | 46 | ||
47 | 47 | let w = 1 | |
48 | 48 | ||
49 | 49 | let x = 0 | |
50 | 50 | ||
51 | 51 | let y = 1 | |
52 | 52 | ||
53 | 53 | func z (A) = ("duckHealth_" + A) | |
54 | 54 | ||
55 | 55 | ||
56 | 56 | func B (A) = ("duckChars_" + A) | |
57 | 57 | ||
58 | 58 | ||
59 | 59 | func C (A) = ("duckXP_" + A) | |
60 | 60 | ||
61 | 61 | ||
62 | 62 | func D (A) = ("duckLevel_" + A) | |
63 | 63 | ||
64 | 64 | ||
65 | 65 | func E (A) = ("duckFreePoints_" + A) | |
66 | 66 | ||
67 | 67 | ||
68 | 68 | func F (A) = ("duckEquipment_" + A) | |
69 | 69 | ||
70 | 70 | ||
71 | 71 | func G (c) = ("userXP_" + c) | |
72 | 72 | ||
73 | 73 | ||
74 | 74 | func H (c) = ("userLevel_" + c) | |
75 | 75 | ||
76 | 76 | ||
77 | 77 | func I (c) = ("userFreePoints_" + c) | |
78 | 78 | ||
79 | 79 | ||
80 | 80 | func J (A) = ("savedHealth_" + A) | |
81 | 81 | ||
82 | 82 | ||
83 | 83 | func K (A) = ("savedLocation_" + A) | |
84 | 84 | ||
85 | 85 | ||
86 | 86 | func L (A) = ("duckBuffs_" + A) | |
87 | 87 | ||
88 | 88 | ||
89 | 89 | func M (A) = ("lastRobberyTime_" + A) | |
90 | 90 | ||
91 | 91 | ||
92 | 92 | func N (A) = ("lastRobberyCost_" + A) | |
93 | 93 | ||
94 | 94 | ||
95 | 95 | func O (P) = ("landRobberyState_" + P) | |
96 | 96 | ||
97 | 97 | ||
98 | 98 | func Q (P) = ("landCooldownETA_" + P) | |
99 | 99 | ||
100 | 100 | ||
101 | 101 | func R (A) = ("duckRobberyState_" + A) | |
102 | 102 | ||
103 | 103 | ||
104 | 104 | func S (A) = ("lockedLandByDuck_" + A) | |
105 | 105 | ||
106 | 106 | ||
107 | 107 | func T (A) = ("deliveryDelayByDuck_" + A) | |
108 | 108 | ||
109 | 109 | ||
110 | 110 | let U = 10000 | |
111 | 111 | ||
112 | 112 | let V = 10000 | |
113 | 113 | ||
114 | 114 | let W = 2000 | |
115 | 115 | ||
116 | 116 | let X = 100000 | |
117 | 117 | ||
118 | 118 | let Y = 1000000 | |
119 | 119 | ||
120 | 120 | let Z = 5000000 | |
121 | 121 | ||
122 | 122 | let aa = 10000 | |
123 | 123 | ||
124 | 124 | let ab = 1000000 | |
125 | 125 | ||
126 | 126 | let ac = 1000000 | |
127 | 127 | ||
128 | 128 | let ad = 10000 | |
129 | 129 | ||
130 | 130 | func ae (af) = fraction(e, pow(af, 4, f, 4, 4, DOWN), d) | |
131 | 131 | ||
132 | 132 | ||
133 | 133 | func ag (ah) = (100 + ah) | |
134 | 134 | ||
135 | 135 | ||
136 | 136 | func ai (aj,ak) = { | |
137 | 137 | let al = ae(ak) | |
138 | 138 | [al, (g * (al - aj))] | |
139 | 139 | } | |
140 | 140 | ||
141 | 141 | ||
142 | 142 | func am (an,A,ao,ap) = { | |
143 | 143 | let aq = split(valueOrElse(getString(an, B(A)), "0_0_0_0_0"), "_") | |
144 | 144 | let ar = valueOrElse(getInteger(an, D(A)), 0) | |
145 | 145 | let as = valueOrElse(getInteger(an, z(A)), ag(ar)) | |
146 | 146 | let at = split(valueOrElse(getString(an, L(A)), "0_0_0_0_0"), "_") | |
147 | 147 | ([parseIntValue(aq[k]), parseIntValue(aq[l]), parseIntValue(aq[m]), parseIntValue(aq[n]), parseIntValue(aq[o]), ar, as] ++ (if (ap) | |
148 | 148 | then [ao, ao, ao, ao, ao] | |
149 | 149 | else [parseIntValue(at[k]), parseIntValue(at[l]), parseIntValue(at[m]), parseIntValue(at[n]), parseIntValue(at[o])])) | |
150 | 150 | } | |
151 | 151 | ||
152 | 152 | ||
153 | 153 | func au (an,A) = { | |
154 | 154 | let av = valueOrElse(getInteger(an, N(A)), 0) | |
155 | 155 | let aw = valueOrElse(getInteger(an, M(A)), 0) | |
156 | 156 | let ax = lastBlock.timestamp | |
157 | 157 | let ay = max([h, (av - (i * (ax - aw)))]) | |
158 | 158 | let az = valueOrElse(getInteger(an, R(A)), 0) | |
159 | 159 | let aA = valueOrElse(getString(an, S(A)), "") | |
160 | 160 | let aB = valueOrElse(getInteger(an, Q(aA)), 0) | |
161 | 161 | $Tuple5(ay, aw, az, aA, aB) | |
162 | 162 | } | |
163 | 163 | ||
164 | 164 | ||
165 | 165 | let aC = "LAND" | |
166 | 166 | ||
167 | 167 | let aD = "DUCK" | |
168 | 168 | ||
169 | 169 | let aE = "PRESALE" | |
170 | 170 | ||
171 | 171 | let aF = 6 | |
172 | 172 | ||
173 | 173 | let aG = 25 | |
174 | 174 | ||
175 | 175 | let aH = 3456000 | |
176 | 176 | ||
177 | 177 | let aI = 10000000000 | |
178 | 178 | ||
179 | 179 | let aJ = "Africa_F_Africa" | |
180 | 180 | ||
181 | 181 | let aK = 39637 | |
182 | 182 | ||
183 | 183 | let aL = 10 | |
184 | 184 | ||
185 | 185 | let aM = 50000 | |
186 | 186 | ||
187 | - | let aN = | |
188 | - | ||
189 | - | let aO = [" | |
190 | - | ||
191 | - | let aP = | |
192 | - | ||
193 | - | let aQ = | |
194 | - | ||
195 | - | let aR = [ | |
196 | - | ||
197 | - | let aS = | |
198 | - | ||
199 | - | let aT = | |
200 | - | ||
201 | - | let aU = | |
202 | - | ||
203 | - | let aV = | |
187 | + | let aN = 600000 | |
188 | + | ||
189 | + | let aO = ["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", "Mine L1", "Mine L2", "Mine L3", "Trap L1", "Trap L2", "Trap L3"] | |
190 | + | ||
191 | + | let aP = ["Americas", "Europe", "Asia", "Africa", "Oceania"] | |
192 | + | ||
193 | + | let aQ = 10000000 | |
194 | + | ||
195 | + | let aR = [15, 16, 17, 18, 19, 20] | |
196 | + | ||
197 | + | let aS = ["8_8_8_17_17_42_12_0_30_0,0,0,0,0,0,0_", "8_8_8_17_17_42_24_0_60_0,0,5,2,0,0,0_", "8_8_8_17_17_42_36_0_120_0,0,10,4,0,0,0_", "8_19_19_8_27_19_26_1_20_0,0,0,0,0,0,0_001", "8_19_19_8_27_19_52_1_40_0,0,0,0,0,0,0_001", "8_19_19_8_27_19_78_1_80_0,0,0,0,0,0,0_001", "8_8_8_8_8_60_13_2_2_0,0,0,0,0,0,0_011", "8_8_8_8_8_60_26_2_4_0,0,0,0,0,0,0_011", "8_8_8_8_8_60_39_2_8_0,0,0,0,0,0,0_011", "30_30_3_17_17_3_30_3_30_0,0,0,0,0,0,0_111", "30_30_3_17_17_3_60_3_50_0,0,0,0,0,0,0_111", "30_30_3_17_17_3_90_3_70_0,0,0,0,0,0,0_111", "18_18_10_18_18_18_11_4_10_0,0,0,0,0,0,0_201", "18_18_10_18_18_18_22_4_20_0,0,0,0,0,0,0_201", "18_18_10_18_18_18_33_4_30_0,0,0,0,0,0,0_201", "4_13_22_4_35_22_23_0_50,1,0_0,0,0,0,0,0,0_", "4_13_22_4_35_22_46_0_50,1,1_0,2,5,0,0,0,0_", "4_13_22_4_35_22_69_0_50,2,1_0,5,10,0,0,0,0_", "5_25_40_5_10_15_20_1_30,1,1_0,0,0,0,0,0,0_", "5_25_40_5_10_15_40_1_30,1,2_2,1,3,0,0,0,0_", "5_25_40_5_10_15_60_1_30,1,3_5,2,8,0,0,0,0_"] | |
198 | + | ||
199 | + | let aT = 6 | |
200 | + | ||
201 | + | let aU = 8 | |
202 | + | ||
203 | + | let aV = 9 | |
204 | 204 | ||
205 | 205 | let aW = 10 | |
206 | 206 | ||
207 | - | let aX = 0 | |
208 | - | ||
209 | - | let aY = 1 | |
210 | - | ||
211 | - | let aZ = 2 | |
212 | - | ||
213 | - | let ba = 3 | |
214 | - | ||
215 | - | let bb = 4 | |
216 | - | ||
217 | - | let bc = 0 | |
218 | - | ||
219 | - | let bd = 1 | |
220 | - | ||
221 | - | let be = 2 | |
222 | - | ||
223 | - | let bf = 3 | |
224 | - | ||
225 | - | let bg = 0 | |
226 | - | ||
227 | - | let bh = 1 | |
228 | - | ||
229 | - | let bi = 2 | |
230 | - | ||
231 | - | let bj = 3 | |
232 | - | ||
233 | - | let bk = 0 | |
234 | - | ||
235 | - | let bl = 1 | |
236 | - | ||
237 | - | let bm = 2 | |
238 | - | ||
239 | - | func bn (bo) = ("no_" + bo) | |
240 | - | ||
241 | - | ||
242 | - | func bp (bo) = ("lcna_" + bo) | |
243 | - | ||
244 | - | ||
245 | - | func bq (bo) = ("st_" + bo) | |
246 | - | ||
247 | - | ||
248 | - | func br (bs,bo) = makeString(["las", bs, bo], "_") | |
249 | - | ||
250 | - | ||
251 | - | func bt (bu,bo,bv) = ((((("sttao_" + bu) + "_") + bo) + "_") + bv) | |
252 | - | ||
253 | - | ||
254 | - | func bw (P) = ("wh_" + P) | |
255 | - | ||
256 | - | ||
257 | - | func bx (bo) = ("infraLevel_" + bo) | |
258 | - | ||
259 | - | ||
260 | - | func by (P) = ("fortifications_" + P) | |
261 | - | ||
262 | - | ||
263 | - | func bz (bo) = ("duckCustomNameByAssetId_" + bo) | |
264 | - | ||
265 | - | ||
266 | - | func bA (c) = ("accountCustomNameByAddr_" + c) | |
267 | - | ||
268 | - | ||
269 | - | func bB (c) = ("accRefBy_" + c) | |
270 | - | ||
271 | - | ||
272 | - | func bC (A) = ("onboardArtActivatedOnDuck_" + A) | |
273 | - | ||
274 | - | ||
275 | - | func bD (c) = ("onboardArtActivatedDuckBy_" + c) | |
276 | - | ||
277 | - | ||
278 | - | func bE (c) = ("accReferrals_" + c) | |
279 | - | ||
280 | - | ||
281 | - | func bF (bo) = ("duckOwner_" + bo) | |
282 | - | ||
283 | - | ||
284 | - | func bG (bv) = ("stakedDuckByOwner_" + bv) | |
285 | - | ||
286 | - | ||
287 | - | func bH (A) = ("backPack_" + A) | |
288 | - | ||
289 | - | ||
290 | - | func bI (A) = ("duckLocation_" + A) | |
291 | - | ||
292 | - | ||
293 | - | func bJ (bK) = ("%s%s__userGwlReleaseTime__" + bK) | |
294 | - | ||
295 | - | ||
296 | - | func bL () = "emergencyWarehouseProducts" | |
297 | - | ||
298 | - | ||
299 | - | let bM = "deliveryFund" | |
300 | - | ||
301 | - | let bN = "deliveryLocked" | |
302 | - | ||
303 | - | let bO = "%s__lastTourId" | |
304 | - | ||
305 | - | func bP (bQ) = ("%s%d__tourStaticData__" + toString(bQ)) | |
306 | - | ||
307 | - | ||
308 | - | func bR (bQ) = ("%s%d__tourDynamicData__" + toString(bQ)) | |
309 | - | ||
310 | - | ||
311 | - | func bS (bQ,A) = makeString(["%s%d%s__bestResultByTourAndDuck", toString(bQ), A], "__") | |
312 | - | ||
313 | - | ||
314 | - | let bT = 0 | |
315 | - | ||
316 | - | let bU = 1 | |
317 | - | ||
318 | - | let bV = 6 | |
319 | - | ||
320 | - | let bW = 1 | |
321 | - | ||
322 | - | func bX (bY,bQ) = { | |
323 | - | let bZ = split(valueOrErrorMessage(getString(bY, bP(bQ)), (("Error reading tournament " + toString(bQ)) + " data")), "__") | |
324 | - | let ca = split_4C(valueOrErrorMessage(getString(bY, bR(bQ)), (("Error reading tournament " + toString(bQ)) + " data")), "__") | |
325 | - | [bZ, ca] | |
326 | - | } | |
327 | - | ||
328 | - | ||
329 | - | func cb (bY,cc) = { | |
330 | - | let cd = valueOrElse(getInteger(bY, bO), 0) | |
331 | - | let ce = split(cc, "_") | |
207 | + | let aX = 10 | |
208 | + | ||
209 | + | let aY = 0 | |
210 | + | ||
211 | + | let aZ = 1 | |
212 | + | ||
213 | + | let ba = 2 | |
214 | + | ||
215 | + | let bb = 3 | |
216 | + | ||
217 | + | let bc = 4 | |
218 | + | ||
219 | + | let bd = 0 | |
220 | + | ||
221 | + | let be = 1 | |
222 | + | ||
223 | + | let bf = 2 | |
224 | + | ||
225 | + | let bg = 3 | |
226 | + | ||
227 | + | let bh = 0 | |
228 | + | ||
229 | + | let bi = 1 | |
230 | + | ||
231 | + | let bj = 2 | |
232 | + | ||
233 | + | let bk = 3 | |
234 | + | ||
235 | + | let bl = 0 | |
236 | + | ||
237 | + | let bm = 1 | |
238 | + | ||
239 | + | let bn = 2 | |
240 | + | ||
241 | + | func bo (bp) = ("no_" + bp) | |
242 | + | ||
243 | + | ||
244 | + | func bq (bp) = ("lcna_" + bp) | |
245 | + | ||
246 | + | ||
247 | + | func br (bp) = ("st_" + bp) | |
248 | + | ||
249 | + | ||
250 | + | func bs (bt,bp) = makeString(["las", bt, bp], "_") | |
251 | + | ||
252 | + | ||
253 | + | func bu (bv,bp,bw) = ((((("sttao_" + bv) + "_") + bp) + "_") + bw) | |
254 | + | ||
255 | + | ||
256 | + | func bx (P) = ("wh_" + P) | |
257 | + | ||
258 | + | ||
259 | + | func by (bp) = ("infraLevel_" + bp) | |
260 | + | ||
261 | + | ||
262 | + | func bz (P) = ("fortifications_" + P) | |
263 | + | ||
264 | + | ||
265 | + | func bA (bp) = ("duckCustomNameByAssetId_" + bp) | |
266 | + | ||
267 | + | ||
268 | + | func bB (c) = ("accountCustomNameByAddr_" + c) | |
269 | + | ||
270 | + | ||
271 | + | func bC (c) = ("accRefBy_" + c) | |
272 | + | ||
273 | + | ||
274 | + | func bD (A) = ("onboardArtActivatedOnDuck_" + A) | |
275 | + | ||
276 | + | ||
277 | + | func bE (c) = ("onboardArtActivatedDuckBy_" + c) | |
278 | + | ||
279 | + | ||
280 | + | func bF (c) = ("accReferrals_" + c) | |
281 | + | ||
282 | + | ||
283 | + | func bG (bp) = ("duckOwner_" + bp) | |
284 | + | ||
285 | + | ||
286 | + | func bH (bw) = ("stakedDuckByOwner_" + bw) | |
287 | + | ||
288 | + | ||
289 | + | func bI (A) = ("backPack_" + A) | |
290 | + | ||
291 | + | ||
292 | + | func bJ (A) = ("duckLocation_" + A) | |
293 | + | ||
294 | + | ||
295 | + | func bK (bL) = ("%s%s__userGwlReleaseTime__" + bL) | |
296 | + | ||
297 | + | ||
298 | + | func bM () = "emergencyWarehouseProducts" | |
299 | + | ||
300 | + | ||
301 | + | let bN = "deliveryFund" | |
302 | + | ||
303 | + | let bO = "deliveryLocked" | |
304 | + | ||
305 | + | let bP = "%s__lastTourId" | |
306 | + | ||
307 | + | func bQ (bR) = ("%s%d__tourStaticData__" + toString(bR)) | |
308 | + | ||
309 | + | ||
310 | + | func bS (bR) = ("%s%d__tourDynamicData__" + toString(bR)) | |
311 | + | ||
312 | + | ||
313 | + | func bT (bR,A) = makeString(["%s%d%s__bestResultByTourAndDuck", toString(bR), A], "__") | |
314 | + | ||
315 | + | ||
316 | + | let bU = 0 | |
317 | + | ||
318 | + | let bV = 1 | |
319 | + | ||
320 | + | let bW = 6 | |
321 | + | ||
322 | + | let bX = 1 | |
323 | + | ||
324 | + | func bY (bZ,bR) = { | |
325 | + | let ca = split(valueOrErrorMessage(getString(bZ, bQ(bR)), (("Error reading tournament " + toString(bR)) + " data")), "__") | |
326 | + | let cb = split_4C(valueOrErrorMessage(getString(bZ, bS(bR)), (("Error reading tournament " + toString(bR)) + " data")), "__") | |
327 | + | [ca, cb] | |
328 | + | } | |
329 | + | ||
330 | + | ||
331 | + | func cc (bZ,cd) = { | |
332 | + | let ce = valueOrElse(getInteger(bZ, bP), 0) | |
333 | + | let cf = split(cd, "_") | |
332 | 334 | let ax = lastBlock.timestamp | |
333 | - | let | |
334 | - | let | |
335 | - | let | |
336 | - | if (if (if (( | |
337 | - | then (parseIntValue( | |
335 | + | let cg = bY(bZ, ce) | |
336 | + | let ca = cg[bU] | |
337 | + | let cb = cg[bV] | |
338 | + | if (if (if ((cf[bm] == "T")) | |
339 | + | then (parseIntValue(cf[bl]) == ce) | |
338 | 340 | else false) | |
339 | - | then ( | |
341 | + | then (cb[bX] == "INPROGRESS") | |
340 | 342 | else false) | |
341 | - | then (parseIntValue( | |
343 | + | then (parseIntValue(ca[bW]) > ax) | |
342 | 344 | else false | |
343 | 345 | } | |
344 | 346 | ||
345 | 347 | ||
346 | - | func cg (ch) = (parseIntValue(ch[aS]) * aP) | |
347 | - | ||
348 | - | ||
349 | - | let ci = false | |
350 | - | ||
351 | - | let cj = false | |
352 | - | ||
353 | - | let ck = true | |
354 | - | ||
355 | - | let cl = take(drop(this.bytes, 1), 1) | |
356 | - | ||
357 | - | let cm = { | |
358 | - | let cn = cl | |
359 | - | if ((base58'2W' == cn)) | |
348 | + | func ch (cd) = { | |
349 | + | let cf = split(cd, "_") | |
350 | + | let ax = lastBlock.timestamp | |
351 | + | let ci = parseIntValue(cf[bl]) | |
352 | + | let cj = parseIntValue(cf[bn]) | |
353 | + | if (if ((cf[bm] == "D")) | |
354 | + | then (ax > (ci + aN)) | |
355 | + | else false) | |
356 | + | then (3 >= cj) | |
357 | + | else false | |
358 | + | } | |
359 | + | ||
360 | + | ||
361 | + | func ck (cd) = { | |
362 | + | let cl = split(cd, "_")[bm] | |
363 | + | if ((cl != "T")) | |
364 | + | then (cl != "D") | |
365 | + | else false | |
366 | + | } | |
367 | + | ||
368 | + | ||
369 | + | func cm (bZ,cd) = { | |
370 | + | let ce = valueOrElse(getInteger(bZ, bP), 0) | |
371 | + | let cf = split(cd, "_") | |
372 | + | let ax = lastBlock.timestamp | |
373 | + | let cg = bY(bZ, ce) | |
374 | + | let ca = cg[bU] | |
375 | + | let cb = cg[bV] | |
376 | + | let cl = cf[bm] | |
377 | + | if (if ((cl != "T")) | |
378 | + | then (cl != "D") | |
379 | + | else false) | |
380 | + | then true | |
381 | + | else !(if (if (if ((cf[bm] == "T")) | |
382 | + | then (parseIntValue(cf[bl]) == ce) | |
383 | + | else false) | |
384 | + | then (cb[bX] == "INPROGRESS") | |
385 | + | else false) | |
386 | + | then (parseIntValue(ca[bW]) > ax) | |
387 | + | else false) | |
388 | + | } | |
389 | + | ||
390 | + | ||
391 | + | func cn (co) = (parseIntValue(co[aT]) * aQ) | |
392 | + | ||
393 | + | ||
394 | + | func cp (cq,cr) = throw(((("Cheat attempt: oldLoc=" + cq) + ", newLoc=") + cr)) | |
395 | + | ||
396 | + | ||
397 | + | let cs = false | |
398 | + | ||
399 | + | let ct = false | |
400 | + | ||
401 | + | let cu = true | |
402 | + | ||
403 | + | let cv = take(drop(this.bytes, 1), 1) | |
404 | + | ||
405 | + | let cw = { | |
406 | + | let cx = cv | |
407 | + | if ((base58'2W' == cx)) | |
360 | 408 | then base58'9wc3LXNA4TEBsXyKtoLE9mrbDD7WMHXvXrCjZvabLAsi' | |
361 | - | else if ((base58'2T' == | |
409 | + | else if ((base58'2T' == cx)) | |
362 | 410 | then base58'6mWwf9mZBjVgkC54idpyaZLQfAosD914wT8fGf2iiY63' | |
363 | 411 | else throw("Unknown chain") | |
364 | 412 | } | |
365 | 413 | ||
366 | - | let | |
367 | - | let | |
368 | - | if ((base58'2W' == | |
414 | + | let cy = { | |
415 | + | let cx = cv | |
416 | + | if ((base58'2W' == cx)) | |
369 | 417 | then "3PQCuvFbvh4LkPUnrnU1z3jnbA1p9m3WNhv" | |
370 | - | else if ((base58'2T' == | |
418 | + | else if ((base58'2T' == cx)) | |
371 | 419 | then "3MumkGGztCKAXpWDqxkddofqXSUbqQkvSJy" | |
372 | 420 | else throw("Unknown chain") | |
373 | 421 | } | |
374 | 422 | ||
375 | - | let | |
376 | - | let | |
377 | - | if ((base58'2W' == | |
423 | + | let cz = { | |
424 | + | let cx = cv | |
425 | + | if ((base58'2W' == cx)) | |
378 | 426 | then 10000000000 | |
379 | - | else if ((base58'2T' == | |
427 | + | else if ((base58'2T' == cx)) | |
380 | 428 | then 100000000 | |
381 | 429 | else throw("Unknown chain") | |
382 | 430 | } | |
383 | 431 | ||
384 | - | let | |
385 | - | let | |
386 | - | if ((base58'2W' == | |
432 | + | let cA = { | |
433 | + | let cx = cv | |
434 | + | if ((base58'2W' == cx)) | |
387 | 435 | then 86400000 | |
388 | - | else if ((base58'2T' == | |
436 | + | else if ((base58'2T' == cx)) | |
389 | 437 | then 60000 | |
390 | 438 | else throw("Unknown chain") | |
391 | 439 | } | |
392 | 440 | ||
393 | - | let | |
394 | - | ||
395 | - | let | |
396 | - | ||
397 | - | let | |
398 | - | ||
399 | - | let | |
400 | - | ||
401 | - | let | |
402 | - | ||
403 | - | let | |
404 | - | ||
405 | - | let | |
406 | - | ||
407 | - | let | |
408 | - | ||
409 | - | let | |
410 | - | ||
411 | - | func | |
412 | - | ||
413 | - | ||
414 | - | let | |
415 | - | ||
416 | - | let | |
417 | - | ||
418 | - | let | |
419 | - | ||
420 | - | let | |
421 | - | ||
422 | - | let | |
423 | - | ||
424 | - | let | |
425 | - | ||
426 | - | func | |
427 | - | ||
428 | - | ||
429 | - | func | |
430 | - | ||
431 | - | ||
432 | - | func | |
433 | - | ||
434 | - | ||
435 | - | func | |
436 | - | ||
437 | - | ||
438 | - | let | |
439 | - | ||
440 | - | let | |
441 | - | ||
442 | - | let an = | |
443 | - | ||
444 | - | let | |
445 | - | ||
446 | - | let | |
447 | - | ||
448 | - | let | |
449 | - | ||
450 | - | let | |
451 | - | ||
452 | - | let | |
453 | - | ||
454 | - | let | |
455 | - | ||
456 | - | let | |
457 | - | ||
458 | - | let | |
459 | - | ||
460 | - | let | |
461 | - | ||
462 | - | let | |
463 | - | ||
464 | - | let | |
465 | - | ||
466 | - | let | |
467 | - | ||
468 | - | let | |
469 | - | ||
470 | - | let | |
471 | - | ||
472 | - | func | |
473 | - | ||
474 | - | ||
475 | - | func | |
476 | - | ||
477 | - | ||
478 | - | func | |
479 | - | ||
480 | - | ||
481 | - | func | |
482 | - | ||
483 | - | ||
484 | - | func | |
485 | - | ||
486 | - | ||
487 | - | func | |
488 | - | let | |
489 | - | if ($isInstanceOf( | |
441 | + | let cB = "__" | |
442 | + | ||
443 | + | let cC = 1000000 | |
444 | + | ||
445 | + | let cD = 100000000 | |
446 | + | ||
447 | + | let cE = 25 | |
448 | + | ||
449 | + | let cF = 100 | |
450 | + | ||
451 | + | let cG = 225 | |
452 | + | ||
453 | + | let cH = 400 | |
454 | + | ||
455 | + | let cI = 625 | |
456 | + | ||
457 | + | let cJ = [0, 1, 2, 3, 4, 5] | |
458 | + | ||
459 | + | func cK (cL,cM) = valueOrErrorMessage(getString(cL, cM), makeString(["mandatory ", toString(cL), ".", cM, " is not defined"], "")) | |
460 | + | ||
461 | + | ||
462 | + | let cN = 1 | |
463 | + | ||
464 | + | let cO = 2 | |
465 | + | ||
466 | + | let cP = 3 | |
467 | + | ||
468 | + | let cQ = 4 | |
469 | + | ||
470 | + | let cR = 7 | |
471 | + | ||
472 | + | let cS = 8 | |
473 | + | ||
474 | + | func cT () = "%s__restConfig" | |
475 | + | ||
476 | + | ||
477 | + | func cU () = "%s__restAddr" | |
478 | + | ||
479 | + | ||
480 | + | func cV (cW) = split_4C(cK(cW, cT()), cB) | |
481 | + | ||
482 | + | ||
483 | + | func cX (cY,cZ) = valueOrErrorMessage(addressFromString(cY[cZ]), ("Rest cfg doesn't contain address at index " + toString(cZ))) | |
484 | + | ||
485 | + | ||
486 | + | let da = addressFromStringValue(valueOrElse(getString(this, cU()), cy)) | |
487 | + | ||
488 | + | let cY = cV(da) | |
489 | + | ||
490 | + | let an = cX(cY, cN) | |
491 | + | ||
492 | + | let db = cX(cY, cO) | |
493 | + | ||
494 | + | let dc = cX(cY, cP) | |
495 | + | ||
496 | + | let dd = cX(cY, cQ) | |
497 | + | ||
498 | + | let de = cX(cY, cR) | |
499 | + | ||
500 | + | let df = cX(cY, cS) | |
501 | + | ||
502 | + | let dg = 0 | |
503 | + | ||
504 | + | let dh = 1 | |
505 | + | ||
506 | + | let di = 2 | |
507 | + | ||
508 | + | let dj = 3 | |
509 | + | ||
510 | + | let dk = "wlg_assetId" | |
511 | + | ||
512 | + | let dl = valueOrErrorMessage(getBinary(dd, dk), "WLGOLD is not issued yet") | |
513 | + | ||
514 | + | let dm = "acresAssetId" | |
515 | + | ||
516 | + | let dn = valueOrErrorMessage(getBinary(df, dm), "ACRES is not issued yet") | |
517 | + | ||
518 | + | let do = 2 | |
519 | + | ||
520 | + | func dp (cL) = ("finishBlockForAddr_" + cL) | |
521 | + | ||
522 | + | ||
523 | + | func dq () = "resTypesProportions" | |
524 | + | ||
525 | + | ||
526 | + | func dr (ds) = ("resTypesByContinent_" + ds) | |
527 | + | ||
528 | + | ||
529 | + | func dt (bw) = ("stakedLandsByOwner_" + bw) | |
530 | + | ||
531 | + | ||
532 | + | func du (bw) = ("stakedPiecesByOwner_" + bw) | |
533 | + | ||
534 | + | ||
535 | + | func dv (dw) = { | |
536 | + | let cx = dw | |
537 | + | if ($isInstanceOf(cx, "String")) | |
490 | 538 | then { | |
491 | - | let | |
492 | - | | |
539 | + | let dx = cx | |
540 | + | dx | |
493 | 541 | } | |
494 | 542 | else throw("fail to cast into String") | |
495 | 543 | } | |
496 | 544 | ||
497 | 545 | ||
498 | - | func | |
499 | - | let | |
500 | - | if ($isInstanceOf( | |
546 | + | func dy (dw) = { | |
547 | + | let cx = dw | |
548 | + | if ($isInstanceOf(cx, "Int")) | |
501 | 549 | then { | |
502 | - | let | |
503 | - | | |
550 | + | let dz = cx | |
551 | + | dz | |
504 | 552 | } | |
505 | 553 | else throw("fail to cast into Int") | |
506 | 554 | } | |
507 | 555 | ||
508 | 556 | ||
509 | - | func | |
510 | - | let | |
511 | - | if ($isInstanceOf( | |
557 | + | func dA (dw) = { | |
558 | + | let cx = dw | |
559 | + | if ($isInstanceOf(cx, "Boolean")) | |
512 | 560 | then { | |
513 | - | let | |
514 | - | | |
561 | + | let dx = cx | |
562 | + | dx | |
515 | 563 | } | |
516 | 564 | else throw("fail to cast into Boolean") | |
517 | 565 | } | |
518 | 566 | ||
519 | 567 | ||
520 | - | func dr (ds) = { | |
521 | - | let cn = ds | |
522 | - | if (("S" == cn)) | |
523 | - | then cu | |
524 | - | else if (("M" == cn)) | |
525 | - | then cv | |
526 | - | else if (("L" == cn)) | |
527 | - | then cw | |
528 | - | else if (("XL" == cn)) | |
529 | - | then cx | |
530 | - | else if (("XXL" == cn)) | |
531 | - | then cy | |
568 | + | func dB (dC) = { | |
569 | + | let cx = dC | |
570 | + | if ($isInstanceOf(cx, "(String, Int)")) | |
571 | + | then { | |
572 | + | let dD = cx | |
573 | + | dD | |
574 | + | } | |
575 | + | else throw("fail to cast into (String, Int)") | |
576 | + | } | |
577 | + | ||
578 | + | ||
579 | + | func dE (dF) = { | |
580 | + | let cx = dF | |
581 | + | if (("S" == cx)) | |
582 | + | then cE | |
583 | + | else if (("M" == cx)) | |
584 | + | then cF | |
585 | + | else if (("L" == cx)) | |
586 | + | then cG | |
587 | + | else if (("XL" == cx)) | |
588 | + | then cH | |
589 | + | else if (("XXL" == cx)) | |
590 | + | then cI | |
532 | 591 | else throw("Unknown land size") | |
533 | 592 | } | |
534 | 593 | ||
535 | 594 | ||
536 | - | func | |
537 | - | ||
538 | - | ||
539 | - | func | |
540 | - | ||
541 | - | ||
542 | - | func | |
543 | - | ||
544 | - | ||
545 | - | func | |
546 | - | let | |
547 | - | let | |
548 | - | let | |
549 | - | (((toString(( | |
550 | - | } | |
551 | - | ||
552 | - | ||
553 | - | func | |
554 | - | let | |
555 | - | let | |
556 | - | (toInt( | |
557 | - | } | |
558 | - | ||
559 | - | ||
560 | - | let | |
561 | - | let | |
562 | - | if ((base58'2W' == | |
595 | + | func dG (dx) = isDefined(parseInt(dx)) | |
596 | + | ||
597 | + | ||
598 | + | func dH () = "contractsBlocked" | |
599 | + | ||
600 | + | ||
601 | + | func dI (c) = ("lastTxIdByUser_" + c) | |
602 | + | ||
603 | + | ||
604 | + | func dJ (dC,dK) = { | |
605 | + | let dL = pow(10, 0, dK, 0, 0, DOWN) | |
606 | + | let dM = toString((dC % dL)) | |
607 | + | let dN = drop(toString(dL), (1 + size(dM))) | |
608 | + | (((toString((dC / dL)) + ".") + dN) + dM) | |
609 | + | } | |
610 | + | ||
611 | + | ||
612 | + | func dO (dP,dQ,dR) = { | |
613 | + | let dS = value(blockInfoByHeight(dQ)) | |
614 | + | let dT = sha256((value(dS.vrf) + dR)) | |
615 | + | (toInt(dT) % dP) | |
616 | + | } | |
617 | + | ||
618 | + | ||
619 | + | let dU = { | |
620 | + | let cx = cv | |
621 | + | if ((base58'2W' == cx)) | |
563 | 622 | then addressFromStringValue("3PEktVux2RhchSN63DsDo4b4mz4QqzKSeDv") | |
564 | - | else if ((base58'2T' == | |
623 | + | else if ((base58'2T' == cx)) | |
565 | 624 | then this | |
566 | 625 | else throw("Unknown chain") | |
567 | 626 | } | |
568 | 627 | ||
569 | - | let | |
570 | - | let | |
571 | - | if ((base58'2W' == | |
628 | + | let dV = { | |
629 | + | let cx = cv | |
630 | + | if ((base58'2W' == cx)) | |
572 | 631 | then addressFromStringValue("3PDVuU45H7Eh5dmtNbnRNRStGwULA7NY6Hb") | |
573 | - | else if ((base58'2T' == | |
632 | + | else if ((base58'2T' == cx)) | |
574 | 633 | then this | |
575 | 634 | else throw("Unknown chain") | |
576 | 635 | } | |
577 | 636 | ||
578 | - | let | |
579 | - | let | |
580 | - | if ((base58'2W' == | |
581 | - | then if ( | |
637 | + | let dW = { | |
638 | + | let cx = cv | |
639 | + | if ((base58'2W' == cx)) | |
640 | + | then if (cs) | |
582 | 641 | then base58'CWsMtTZC5BjjoL4Q1ayW4Wwb1ehGACQB6DrKyPgotKfm' | |
583 | 642 | else base58'6LfPuKJjLgekmncBhMg2LZyMTNVzZBccXR28ySXm9uXD' | |
584 | - | else if ((base58'2T' == | |
643 | + | else if ((base58'2T' == cx)) | |
585 | 644 | then base58'6LfPuKJjLgekmncBhMg2LZyMTNVzZBccXR28ySXm9uXD' | |
586 | 645 | else throw("Unknown chain") | |
587 | 646 | } | |
588 | 647 | ||
589 | - | let dL = base64'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==' | |
590 | - | ||
591 | - | let dM = 300000 | |
592 | - | ||
593 | - | let dN = 600000 | |
594 | - | ||
595 | - | let dO = 5000000 | |
596 | - | ||
597 | - | let dP = 50 | |
598 | - | ||
599 | - | let dQ = 10000000 | |
600 | - | ||
601 | - | let dR = { | |
602 | - | let cn = cl | |
603 | - | if ((base58'2W' == cn)) | |
648 | + | let dX = base64'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==' | |
649 | + | ||
650 | + | let dY = 300000 | |
651 | + | ||
652 | + | let dZ = 5000000 | |
653 | + | ||
654 | + | let ea = 50 | |
655 | + | ||
656 | + | let eb = 10000000 | |
657 | + | ||
658 | + | let ec = { | |
659 | + | let cx = cv | |
660 | + | if ((base58'2W' == cx)) | |
604 | 661 | then 252289527462 | |
605 | - | else if ((base58'2T' == | |
662 | + | else if ((base58'2T' == cx)) | |
606 | 663 | then 2522895274 | |
607 | 664 | else throw("Unknown chain") | |
608 | 665 | } | |
609 | 666 | ||
610 | - | let | |
611 | - | let | |
612 | - | if ((base58'2W' == | |
667 | + | let ed = { | |
668 | + | let cx = cv | |
669 | + | if ((base58'2W' == cx)) | |
613 | 670 | then 250000000 | |
614 | - | else if ((base58'2T' == | |
671 | + | else if ((base58'2T' == cx)) | |
615 | 672 | then 250000000 | |
616 | 673 | else throw("Unknown chain") | |
617 | 674 | } | |
618 | 675 | ||
619 | - | let | |
620 | - | ||
621 | - | let | |
622 | - | ||
623 | - | let | |
624 | - | ||
625 | - | let | |
626 | - | ||
627 | - | let | |
628 | - | ||
629 | - | let | |
630 | - | ||
631 | - | let | |
632 | - | ||
633 | - | let | |
634 | - | ||
635 | - | func | |
636 | - | ||
637 | - | ||
638 | - | func | |
639 | - | ||
640 | - | ||
641 | - | func | |
642 | - | ||
643 | - | ||
644 | - | func | |
645 | - | ||
646 | - | ||
647 | - | func | |
648 | - | ||
649 | - | ||
650 | - | func | |
651 | - | ||
652 | - | ||
653 | - | func | |
654 | - | ||
655 | - | ||
656 | - | func | |
657 | - | ||
658 | - | ||
659 | - | let | |
660 | - | ||
661 | - | let | |
662 | - | ||
663 | - | let | |
664 | - | ||
665 | - | let | |
666 | - | ||
667 | - | let | |
668 | - | ||
669 | - | let | |
670 | - | ||
671 | - | let | |
672 | - | ||
673 | - | func | |
674 | - | ||
675 | - | ||
676 | - | func | |
677 | - | let | |
678 | - | then ((( | |
679 | - | else -((((-( | |
680 | - | ( | |
681 | - | } | |
682 | - | ||
683 | - | ||
684 | - | func | |
685 | - | let | |
686 | - | if ((0 >= | |
676 | + | let ee = 2500000000 | |
677 | + | ||
678 | + | let ef = toBigInt(5) | |
679 | + | ||
680 | + | let eg = toBigInt(20) | |
681 | + | ||
682 | + | let eh = toBigInt((20 * 20)) | |
683 | + | ||
684 | + | let ei = toBigInt(((20 * 20) * 20)) | |
685 | + | ||
686 | + | let ej = toBigInt((((20 * 20) * 20) * 20)) | |
687 | + | ||
688 | + | let ek = toBigInt(((((20 * 20) * 20) * 20) * 20)) | |
689 | + | ||
690 | + | let el = 500 | |
691 | + | ||
692 | + | func em () = "nextLandNum" | |
693 | + | ||
694 | + | ||
695 | + | func en (eo) = ("lcn_" + eo) | |
696 | + | ||
697 | + | ||
698 | + | func ep (eq) = ("la_" + eq) | |
699 | + | ||
700 | + | ||
701 | + | func er (bp,bw) = ((("ilao_" + bp) + "_") + bw) | |
702 | + | ||
703 | + | ||
704 | + | func es (eq) = ("lo_" + eq) | |
705 | + | ||
706 | + | ||
707 | + | func et (eo) = ("duckByCustomName_" + eo) | |
708 | + | ||
709 | + | ||
710 | + | func eu (eo) = ("accountByCustomName_" + eo) | |
711 | + | ||
712 | + | ||
713 | + | func ev () = "oldiesList" | |
714 | + | ||
715 | + | ||
716 | + | let ew = 0 | |
717 | + | ||
718 | + | let ex = 1 | |
719 | + | ||
720 | + | let ey = 2 | |
721 | + | ||
722 | + | let ez = 0 | |
723 | + | ||
724 | + | let eA = 5 | |
725 | + | ||
726 | + | let eB = 6 | |
727 | + | ||
728 | + | let eC = 7 | |
729 | + | ||
730 | + | func eD (eq,dF) = ((aC + eq) + dF) | |
731 | + | ||
732 | + | ||
733 | + | func eE (eF,eG) = { | |
734 | + | let eH = if ((eF >= 0)) | |
735 | + | then (((eF + eG) - 1) / eG) | |
736 | + | else -((((-(eF) + eG) - 1) / eG)) | |
737 | + | (eH * cD) | |
738 | + | } | |
739 | + | ||
740 | + | ||
741 | + | func eI (eJ,eK) = { | |
742 | + | let eL = (((((eK[0] + eK[1]) + eK[2]) + eK[3]) + eK[4]) + eK[5]) | |
743 | + | if ((0 >= eL)) | |
687 | 744 | then throw("Zero weights sum") | |
688 | 745 | else { | |
689 | - | let | |
690 | - | func | |
691 | - | ||
692 | - | let | |
693 | - | let | |
694 | - | let | |
695 | - | func | |
696 | - | then | |
697 | - | else | |
698 | - | ||
699 | - | func | |
700 | - | then | |
746 | + | let eM = fraction(eJ, cC, eL) | |
747 | + | func eN (eO,eP) = (eO :+ fraction(eP, eM, cC)) | |
748 | + | ||
749 | + | let eQ = eK | |
750 | + | let eR = size(eQ) | |
751 | + | let eS = nil | |
752 | + | func eT (eU,eV) = if ((eV >= eR)) | |
753 | + | then eU | |
754 | + | else eN(eU, eQ[eV]) | |
755 | + | ||
756 | + | func eW (eU,eV) = if ((eV >= eR)) | |
757 | + | then eU | |
701 | 758 | else throw("List size exceeds 6") | |
702 | 759 | ||
703 | - | | |
704 | - | } | |
705 | - | } | |
706 | - | ||
707 | - | ||
708 | - | func | |
709 | - | let | |
710 | - | if ((size( | |
760 | + | eW(eT(eT(eT(eT(eT(eT(eS, 0), 1), 2), 3), 4), 5), 6) | |
761 | + | } | |
762 | + | } | |
763 | + | ||
764 | + | ||
765 | + | func eX (eJ) = { | |
766 | + | let eY = split(value(getString(dq())), "_") | |
767 | + | if ((size(eY) != aF)) | |
711 | 768 | then throw("Wrong proportions data") | |
712 | 769 | else { | |
713 | - | let | |
714 | - | | |
715 | - | } | |
716 | - | } | |
717 | - | ||
718 | - | ||
719 | - | func | |
720 | - | let | |
721 | - | func | |
722 | - | let | |
723 | - | if ((0 > | |
724 | - | then throw(((((("Not enough material idx=" + toString( | |
725 | - | else ( | |
770 | + | let eZ = [parseIntValue(eY[0]), parseIntValue(eY[1]), parseIntValue(eY[2]), parseIntValue(eY[3]), parseIntValue(eY[4]), parseIntValue(eY[5])] | |
771 | + | eI(eJ, eZ) | |
772 | + | } | |
773 | + | } | |
774 | + | ||
775 | + | ||
776 | + | func fa (fb,fc,fd) = { | |
777 | + | let fe = eX(fd) | |
778 | + | func ff (eO,cZ) = { | |
779 | + | let fg = (parseIntValue(fc[cZ]) - fe[cZ]) | |
780 | + | if ((0 > fg)) | |
781 | + | then throw(((((("Not enough material idx=" + toString(cZ)) + ", you have ") + fc[cZ]) + ", but need ") + toString(fe[cZ]))) | |
782 | + | else (eO :+ toString(fg)) | |
726 | 783 | } | |
727 | 784 | ||
728 | - | if ( | |
785 | + | if (fb) | |
729 | 786 | then { | |
730 | - | let | |
731 | - | let | |
732 | - | let | |
733 | - | func | |
734 | - | then | |
735 | - | else eU | |
736 | - | ||
737 | - | func | |
738 | - | then | |
787 | + | let eQ = cJ | |
788 | + | let eR = size(eQ) | |
789 | + | let eS = nil | |
790 | + | func eT (eU,eV) = if ((eV >= eR)) | |
791 | + | then eU | |
792 | + | else ff(eU, eQ[eV]) | |
793 | + | ||
794 | + | func eW (eU,eV) = if ((eV >= eR)) | |
795 | + | then eU | |
739 | 796 | else throw("List size exceeds 6") | |
740 | 797 | ||
741 | - | | |
742 | - | } | |
743 | - | else | |
744 | - | } | |
745 | - | ||
746 | - | ||
747 | - | func | |
748 | - | then $Tuple2( | |
798 | + | eW(eT(eT(eT(eT(eT(eT(eS, 0), 1), 2), 3), 4), 5), 6) | |
799 | + | } | |
800 | + | else fc | |
801 | + | } | |
802 | + | ||
803 | + | ||
804 | + | func fh (fi,fj) = if ((fj == "")) | |
805 | + | then $Tuple2(fi, false) | |
749 | 806 | else { | |
750 | - | func | |
751 | - | let | |
752 | - | if ((size( | |
807 | + | func fk (eO,fl) = { | |
808 | + | let fm = split(fl, ",") | |
809 | + | if ((size(fm) != 2)) | |
753 | 810 | then throw("Incorrect format, should be index,amount") | |
754 | 811 | else { | |
755 | - | let | |
756 | - | if (if ((0 > | |
812 | + | let cZ = parseIntValue(fm[0]) | |
813 | + | if (if ((0 > cZ)) | |
757 | 814 | then true | |
758 | - | else ( | |
815 | + | else (cZ >= size(aS))) | |
759 | 816 | then throw("Unknown product idx") | |
760 | 817 | else { | |
761 | - | let | |
762 | - | let | |
763 | - | if ((size( | |
764 | - | then throw((("You don't have " + | |
818 | + | let fn = parseIntValue(fm[1]) | |
819 | + | let fo = split(eO._1, (fm[0] + ":")) | |
820 | + | if ((size(fo) != 2)) | |
821 | + | then throw((("You don't have " + aO[cZ]) + " equipped")) | |
765 | 822 | else { | |
766 | - | let | |
767 | - | let | |
823 | + | let fp = fo[1] | |
824 | + | let fq = if (dG(take(drop(fp, 1), 1))) | |
768 | 825 | then 2 | |
769 | 826 | else 1 | |
770 | - | let | |
771 | - | let | |
772 | - | let | |
773 | - | then ( | |
774 | - | else throw(((((("You equipped " + toString( | |
775 | - | $Tuple2((((( | |
827 | + | let fr = parseIntValue(take(fp, fq)) | |
828 | + | let fs = drop(fp, fq) | |
829 | + | let ft = if ((fr >= fn)) | |
830 | + | then (fr - fn) | |
831 | + | else throw(((((("You equipped " + toString(fr)) + " of ") + aO[cZ]) + ", but tried to use ") + toString(fn))) | |
832 | + | $Tuple2(((((fo[0] + fm[0]) + ":") + toString(ft)) + fs), if (eO._2) | |
776 | 833 | then true | |
777 | - | else if (if (( | |
778 | - | then (8 >= | |
834 | + | else if (if ((cZ >= 6)) | |
835 | + | then (8 >= cZ) | |
779 | 836 | else false) | |
780 | - | then ( | |
837 | + | then (ft == 0) | |
781 | 838 | else false) | |
782 | 839 | } | |
783 | 840 | } | |
784 | 841 | } | |
785 | 842 | } | |
786 | 843 | ||
787 | - | let | |
788 | - | let | |
789 | - | let | |
790 | - | func | |
791 | - | then | |
792 | - | else | |
793 | - | ||
794 | - | func | |
795 | - | then | |
844 | + | let eQ = split(fj, "_") | |
845 | + | let eR = size(eQ) | |
846 | + | let eS = $Tuple2(fi, false) | |
847 | + | func eT (eU,eV) = if ((eV >= eR)) | |
848 | + | then eU | |
849 | + | else fk(eU, eQ[eV]) | |
850 | + | ||
851 | + | func eW (eU,eV) = if ((eV >= eR)) | |
852 | + | then eU | |
796 | 853 | else throw("List size exceeds 10") | |
797 | 854 | ||
798 | - | | |
855 | + | eW(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eS, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
799 | 856 | } | |
800 | 857 | ||
801 | 858 | ||
802 | - | func | |
803 | - | let | |
859 | + | func fu (fv) = { | |
860 | + | let fw = if ((fv == "")) | |
804 | 861 | then nil | |
805 | - | else split_4C( | |
806 | - | func | |
807 | - | let | |
808 | - | let | |
809 | - | then parseIntValue( | |
862 | + | else split_4C(fv, "_") | |
863 | + | func fx (eO,co) = { | |
864 | + | let fy = (size(eO) / 8) | |
865 | + | let fr = if ((size(fw) > fy)) | |
866 | + | then parseIntValue(fw[fy]) | |
810 | 867 | else 0 | |
811 | - | ( | |
868 | + | (eO + toBytes(fr)) | |
812 | 869 | } | |
813 | 870 | ||
814 | - | let | |
815 | - | let | |
816 | - | let | |
817 | - | func | |
818 | - | then | |
819 | - | else | |
820 | - | ||
821 | - | func | |
822 | - | then | |
871 | + | let eQ = aS | |
872 | + | let eR = size(eQ) | |
873 | + | let eS = base58'' | |
874 | + | func eT (eU,eV) = if ((eV >= eR)) | |
875 | + | then eU | |
876 | + | else fx(eU, eQ[eV]) | |
877 | + | ||
878 | + | func eW (eU,eV) = if ((eV >= eR)) | |
879 | + | then eU | |
823 | 880 | else throw("List size exceeds 50") | |
824 | 881 | ||
825 | - | | |
826 | - | } | |
827 | - | ||
828 | - | ||
829 | - | func | |
830 | - | func | |
831 | - | let | |
832 | - | let | |
833 | - | ( | |
882 | + | eW(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eS, 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) | |
883 | + | } | |
884 | + | ||
885 | + | ||
886 | + | func fz (fA) = { | |
887 | + | func fB (eO,co) = { | |
888 | + | let fy = size(eO) | |
889 | + | let fC = take(drop(fA, (8 * fy)), 8) | |
890 | + | (eO :+ toString(toInt(fC))) | |
834 | 891 | } | |
835 | 892 | ||
836 | 893 | makeString_2C({ | |
837 | - | let | |
838 | - | let | |
839 | - | let | |
840 | - | func | |
841 | - | then | |
842 | - | else | |
843 | - | ||
844 | - | func | |
845 | - | then | |
894 | + | let eQ = aS | |
895 | + | let eR = size(eQ) | |
896 | + | let eS = nil | |
897 | + | func eT (eU,eV) = if ((eV >= eR)) | |
898 | + | then eU | |
899 | + | else fB(eU, eQ[eV]) | |
900 | + | ||
901 | + | func eW (eU,eV) = if ((eV >= eR)) | |
902 | + | then eU | |
846 | 903 | else throw("List size exceeds 50") | |
847 | 904 | ||
848 | - | | |
905 | + | eW(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eS, 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) | |
849 | 906 | }, "_") | |
850 | 907 | } | |
851 | 908 | ||
852 | 909 | ||
853 | - | func | |
854 | - | func | |
855 | - | let | |
856 | - | then | |
910 | + | func fD (fE,fF) = { | |
911 | + | func fG (eO,fy) = { | |
912 | + | let fH = if ((size(fE) > (7 + fy))) | |
913 | + | then fE[(7 + fy)] | |
857 | 914 | else 0 | |
858 | - | if ((parseIntValue( | |
859 | - | then throw(("Requirement not satisfied: " + j[ | |
915 | + | if ((parseIntValue(fF[fy]) > (fE[fy] + fH))) | |
916 | + | then throw(("Requirement not satisfied: " + j[fy])) | |
860 | 917 | else true | |
861 | 918 | } | |
862 | 919 | ||
863 | - | let | |
864 | - | let | |
865 | - | let | |
866 | - | func | |
867 | - | then | |
868 | - | else | |
869 | - | ||
870 | - | func | |
871 | - | then | |
920 | + | let eQ = [0, 1, 2, 3, 4, 5, 6] | |
921 | + | let eR = size(eQ) | |
922 | + | let eS = false | |
923 | + | func eT (eU,eV) = if ((eV >= eR)) | |
924 | + | then eU | |
925 | + | else fG(eU, eQ[eV]) | |
926 | + | ||
927 | + | func eW (eU,eV) = if ((eV >= eR)) | |
928 | + | then eU | |
872 | 929 | else throw("List size exceeds 7") | |
873 | 930 | ||
874 | - | | |
875 | - | } | |
876 | - | ||
877 | - | ||
878 | - | func | |
879 | - | let | |
880 | - | if ((size( | |
931 | + | eW(eT(eT(eT(eT(eT(eT(eT(eS, 0), 1), 2), 3), 4), 5), 6), 7) | |
932 | + | } | |
933 | + | ||
934 | + | ||
935 | + | func fI (fJ,fw,fK,fE,fL,fM) = { | |
936 | + | let fm = split(fJ, ":") | |
937 | + | if ((size(fm) != 2)) | |
881 | 938 | then throw("Incorrect format, should be index:amount") | |
882 | - | else if (if (!( | |
883 | - | then (size( | |
939 | + | else if (if (!(fK)) | |
940 | + | then (size(fm[0]) != 2) | |
884 | 941 | else false) | |
885 | 942 | then throw("Product idx should be 2 digits, zero padded") | |
886 | 943 | else { | |
887 | - | let | |
888 | - | let | |
889 | - | if (!(containsElement( | |
890 | - | then throw((("Product '" + | |
891 | - | else if ((0 > | |
944 | + | let fN = parseIntValue(fm[0]) | |
945 | + | let fO = parseIntValue(fm[1]) | |
946 | + | if (!(containsElement(aR, fN))) | |
947 | + | then throw((("Product '" + aO[fN]) + "' cannot be used for land defense")) | |
948 | + | else if ((0 > fO)) | |
892 | 949 | then throw("Count can't be negative") | |
893 | - | else if (( | |
894 | - | then throw(((("Can't put more than " + toString(t)) + " of ") + | |
895 | - | else if (( | |
896 | - | then $Tuple3( | |
950 | + | else if ((fO > t)) | |
951 | + | then throw(((("Can't put more than " + toString(t)) + " of ") + aO[fN])) | |
952 | + | else if ((fO == 0)) | |
953 | + | then $Tuple3(fw, fL, fM) | |
897 | 954 | else { | |
898 | - | let | |
899 | - | let | |
900 | - | let | |
901 | - | let | |
902 | - | if (if (!( | |
903 | - | then ( | |
955 | + | let fP = take(fw, (8 * fN)) | |
956 | + | let fr = toInt(take(drop(fw, (8 * fN)), 8)) | |
957 | + | let fs = drop(fw, (8 * (fN + 1))) | |
958 | + | let co = split(aS[fN], "_") | |
959 | + | if (if (!(fK)) | |
960 | + | then (fO > fr) | |
904 | 961 | else false) | |
905 | - | then throw(((((("You have " + toString( | |
962 | + | then throw(((((("You have " + toString(fr)) + " of ") + aO[fN]) + ", but tried to use ") + toString(fO))) | |
906 | 963 | else { | |
907 | - | let | |
908 | - | then | |
964 | + | let ft = if (if (!(fK)) | |
965 | + | then fD(fE, split(co[aV], ",")) | |
909 | 966 | else false) | |
910 | - | then ( | |
911 | - | else ( | |
912 | - | let | |
913 | - | $Tuple3((( | |
967 | + | then (fr - fO) | |
968 | + | else (fr + fO) | |
969 | + | let fQ = (eE(ft, aX) - eE(fr, aX)) | |
970 | + | $Tuple3(((fP + toBytes(ft)) + fs), (fL + fQ), (fM - fQ)) | |
914 | 971 | } | |
915 | 972 | } | |
916 | 973 | } | |
917 | 974 | } | |
918 | 975 | ||
919 | 976 | ||
920 | - | func | |
921 | - | let | |
922 | - | if ((size( | |
977 | + | func fR (fJ,fw,fK,fS,fT,fU,fE) = { | |
978 | + | let fm = split(fJ, ":") | |
979 | + | if ((size(fm) != 2)) | |
923 | 980 | then throw("Incorrect format, should be index:amount") | |
924 | - | else if (if (!( | |
925 | - | then (size( | |
981 | + | else if (if (!(fK)) | |
982 | + | then (size(fm[0]) != 2) | |
926 | 983 | else false) | |
927 | 984 | then throw("Product idx should be 2 digits, zero padded") | |
928 | 985 | else { | |
929 | - | let | |
930 | - | let | |
931 | - | if (if ((0 > | |
986 | + | let fN = parseIntValue(fm[0]) | |
987 | + | let fO = parseIntValue(fm[1]) | |
988 | + | if (if ((0 > fN)) | |
932 | 989 | then true | |
933 | - | else ( | |
990 | + | else (fN >= size(aS))) | |
934 | 991 | then throw("Unknown product idx") | |
935 | - | else if ((0 > | |
992 | + | else if ((0 > fO)) | |
936 | 993 | then throw("Count can't be negative") | |
937 | - | else if (( | |
938 | - | then throw(((("Can't put more than " + toString(t)) + " of ") + | |
939 | - | else if (( | |
940 | - | then $Tuple2( | |
994 | + | else if ((fO > t)) | |
995 | + | then throw(((("Can't put more than " + toString(t)) + " of ") + aO[fN])) | |
996 | + | else if ((fO == 0)) | |
997 | + | then $Tuple2(fw, false) | |
941 | 998 | else { | |
942 | - | let | |
943 | - | let | |
944 | - | let | |
945 | - | let | |
946 | - | if (if (!( | |
947 | - | then ( | |
999 | + | let fP = take(fw, (8 * fN)) | |
1000 | + | let fr = toInt(take(drop(fw, (8 * fN)), 8)) | |
1001 | + | let fs = drop(fw, (8 * (fN + 1))) | |
1002 | + | let co = split(aS[fN], "_") | |
1003 | + | if (if (!(fK)) | |
1004 | + | then (fO > fr) | |
948 | 1005 | else false) | |
949 | - | then throw(((((("You have " + toString( | |
1006 | + | then throw(((((("You have " + toString(fr)) + " of ") + aO[fN]) + ", but tried to use ") + toString(fO))) | |
950 | 1007 | else { | |
951 | - | let | |
952 | - | then | |
1008 | + | let fV = if (if (!(fK)) | |
1009 | + | then fD(fE, split(co[aV], ",")) | |
953 | 1010 | else false) | |
954 | 1011 | then { | |
955 | - | let | |
956 | - | if (( | |
1012 | + | let fW = co[aW] | |
1013 | + | if ((fW == "")) | |
957 | 1014 | then throw("Item cannot be equipped") | |
958 | 1015 | else { | |
959 | - | let | |
960 | - | let | |
961 | - | if (( | |
1016 | + | let fX = parseIntValue(fW) | |
1017 | + | let fY = (fX / 100) | |
1018 | + | if ((fS != fY)) | |
962 | 1019 | then throw("Segment incompatible") | |
963 | 1020 | else { | |
964 | - | let | |
965 | - | if (( | |
1021 | + | let fZ = ((fX % 100) / 10) | |
1022 | + | if ((fT != fZ)) | |
966 | 1023 | then throw("Slot incompatible") | |
967 | 1024 | else { | |
968 | - | let | |
969 | - | if (if (( | |
970 | - | then ( | |
1025 | + | let ga = (fX % 10) | |
1026 | + | if (if ((fU != 0)) | |
1027 | + | then (ga > 1) | |
971 | 1028 | else false) | |
972 | 1029 | then throw("Big items should occupy slot 0") | |
973 | - | else ( | |
1030 | + | else (ga > 1) | |
974 | 1031 | } | |
975 | 1032 | } | |
976 | 1033 | } | |
977 | 1034 | } | |
978 | 1035 | else false | |
979 | - | $Tuple2((( | |
980 | - | then | |
981 | - | else -( | |
1036 | + | $Tuple2(((fP + toBytes((fr + (if (fK) | |
1037 | + | then fO | |
1038 | + | else -(fO))))) + fs), fV) | |
982 | 1039 | } | |
983 | 1040 | } | |
984 | 1041 | } | |
985 | 1042 | } | |
986 | 1043 | ||
987 | 1044 | ||
988 | - | func | |
1045 | + | func gb (gc,gd,fK,fS,fT,ge) = if ((gc != "")) | |
989 | 1046 | then { | |
990 | - | let | |
991 | - | if ((size( | |
1047 | + | let gf = split(gc, ",") | |
1048 | + | if ((size(gf) > s)) | |
992 | 1049 | then throw("Wrong slots format") | |
993 | 1050 | else { | |
994 | - | let | |
995 | - | let | |
996 | - | then | |
1051 | + | let gg = gf[0] | |
1052 | + | let gh = if ((size(gf) > 1)) | |
1053 | + | then gf[1] | |
997 | 1054 | else "" | |
998 | - | if (if (( | |
999 | - | then ( | |
1055 | + | if (if ((gg == "")) | |
1056 | + | then (gh == "") | |
1000 | 1057 | else false) | |
1001 | - | then | |
1058 | + | then gd | |
1002 | 1059 | else { | |
1003 | - | let | |
1004 | - | then | |
1005 | - | else $Tuple2( | |
1006 | - | if (( | |
1007 | - | then if ( | |
1060 | + | let gi = if ((gg != "")) | |
1061 | + | then fR(gg, gd, fK, fS, fT, 0, ge) | |
1062 | + | else $Tuple2(gd, false) | |
1063 | + | if ((gh != "")) | |
1064 | + | then if (gi._2) | |
1008 | 1065 | then throw("Big item already occupies slot") | |
1009 | - | else | |
1010 | - | else | |
1066 | + | else fR(gh, gi._1, fK, fS, fT, 1, ge)._1 | |
1067 | + | else gi._1 | |
1011 | 1068 | } | |
1012 | 1069 | } | |
1013 | 1070 | } | |
1014 | - | else | |
1015 | - | ||
1016 | - | ||
1017 | - | func | |
1018 | - | func | |
1019 | - | let | |
1020 | - | let | |
1021 | - | if ((size( | |
1071 | + | else gd | |
1072 | + | ||
1073 | + | ||
1074 | + | func gj (gk,gl,fK,ge) = { | |
1075 | + | func fS (eO,gm) = { | |
1076 | + | let fy = eO._1 | |
1077 | + | let fT = split(gm, ";") | |
1078 | + | if ((size(fT) != r)) | |
1022 | 1079 | then throw("Wrong segment format") | |
1023 | 1080 | else { | |
1024 | - | let | |
1025 | - | let | |
1026 | - | if (if (( | |
1027 | - | then ( | |
1081 | + | let gn = fT[0] | |
1082 | + | let go = fT[1] | |
1083 | + | if (if ((gn == "")) | |
1084 | + | then (go == "") | |
1028 | 1085 | else false) | |
1029 | - | then $Tuple2(( | |
1086 | + | then $Tuple2((fy + 1), eO._2) | |
1030 | 1087 | else { | |
1031 | - | let | |
1032 | - | $Tuple2(( | |
1088 | + | let gp = gb(gn, eO._2, fK, fy, 0, ge) | |
1089 | + | $Tuple2((fy + 1), gb(go, gp, fK, fy, 1, ge)) | |
1033 | 1090 | } | |
1034 | 1091 | } | |
1035 | 1092 | } | |
1036 | 1093 | ||
1037 | - | ( let | |
1038 | - | let | |
1039 | - | let | |
1040 | - | func | |
1041 | - | then | |
1042 | - | else | |
1043 | - | ||
1044 | - | func | |
1045 | - | then | |
1094 | + | ( let eQ = gk | |
1095 | + | let eR = size(eQ) | |
1096 | + | let eS = $Tuple2(0, gl) | |
1097 | + | func eT (eU,eV) = if ((eV >= eR)) | |
1098 | + | then eU | |
1099 | + | else fS(eU, eQ[eV]) | |
1100 | + | ||
1101 | + | func eW (eU,eV) = if ((eV >= eR)) | |
1102 | + | then eU | |
1046 | 1103 | else throw("List size exceeds 6") | |
1047 | 1104 | ||
1048 | - | | |
1049 | - | } | |
1050 | - | ||
1051 | - | ||
1052 | - | func | |
1105 | + | eW(eT(eT(eT(eT(eT(eT(eS, 0), 1), 2), 3), 4), 5), 6))._2 | |
1106 | + | } | |
1107 | + | ||
1108 | + | ||
1109 | + | func gq (gk,gl,fL,fM,fK,fE) = if ((3 > size(gk))) | |
1053 | 1110 | then throw("At least duck, mines and traps parts are required") | |
1054 | 1111 | else { | |
1055 | - | func | |
1056 | - | let | |
1057 | - | if (( | |
1058 | - | then $Tuple4(( | |
1112 | + | func fS (eO,gm) = { | |
1113 | + | let fy = eO._1 | |
1114 | + | if ((fy == 0)) | |
1115 | + | then $Tuple4((fy + 1), eO._2, eO._3, eO._4) | |
1059 | 1116 | else { | |
1060 | - | let | |
1061 | - | $Tuple4(( | |
1117 | + | let gr = fI(gm, eO._2, fK, fE, eO._3, eO._4) | |
1118 | + | $Tuple4((fy + 1), gr._1, gr._2, gr._3) | |
1062 | 1119 | } | |
1063 | 1120 | } | |
1064 | 1121 | ||
1065 | - | let | |
1066 | - | let | |
1067 | - | let | |
1068 | - | let | |
1069 | - | func | |
1070 | - | then | |
1071 | - | else | |
1072 | - | ||
1073 | - | func | |
1074 | - | then | |
1122 | + | let gs = { | |
1123 | + | let eQ = gk | |
1124 | + | let eR = size(eQ) | |
1125 | + | let eS = $Tuple4(0, gl, fL, fM) | |
1126 | + | func eT (eU,eV) = if ((eV >= eR)) | |
1127 | + | then eU | |
1128 | + | else fS(eU, eQ[eV]) | |
1129 | + | ||
1130 | + | func eW (eU,eV) = if ((eV >= eR)) | |
1131 | + | then eU | |
1075 | 1132 | else throw("List size exceeds 10") | |
1076 | 1133 | ||
1077 | - | | |
1078 | - | } | |
1079 | - | $Tuple3( | |
1134 | + | eW(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eS, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
1135 | + | } | |
1136 | + | $Tuple3(gs._2, gs._3, gs._4) | |
1080 | 1137 | } | |
1081 | 1138 | ||
1082 | 1139 | ||
1083 | - | func | |
1084 | - | let | |
1085 | - | let | |
1086 | - | let | |
1087 | - | let | |
1088 | - | let ao = if (( | |
1140 | + | func gt (A) = { | |
1141 | + | let gu = F(A) | |
1142 | + | let gv = split(valueOrElse(getString(gu), ",;,_,;,_,;,_,;,_,;,_,;,"), "_") | |
1143 | + | let gw = gj(gv, dX, true, nil) | |
1144 | + | let gx = split(gv[p], ";")[1] | |
1145 | + | let ao = if ((gx == "")) | |
1089 | 1146 | then 0 | |
1090 | 1147 | else { | |
1091 | - | let | |
1092 | - | if (( | |
1148 | + | let gy = split(gx, ",")[0] | |
1149 | + | if ((gy == "")) | |
1093 | 1150 | then 0 | |
1094 | 1151 | else { | |
1095 | - | let | |
1096 | - | let | |
1097 | - | let | |
1098 | - | if (if (if (if (if (( | |
1152 | + | let fJ = split(gy, ":") | |
1153 | + | let cZ = fJ[0] | |
1154 | + | let gz = fJ[1] | |
1155 | + | if (if (if (if (if ((cZ == "06")) | |
1099 | 1156 | then true | |
1100 | - | else ( | |
1157 | + | else (cZ == "07")) | |
1101 | 1158 | then true | |
1102 | - | else ( | |
1103 | - | then ( | |
1159 | + | else (cZ == "08")) | |
1160 | + | then (gz != "") | |
1104 | 1161 | else false) | |
1105 | - | then (parseIntValue( | |
1162 | + | then (parseIntValue(gz) > 0) | |
1106 | 1163 | else false) | |
1107 | - | then parseIntValue(split( | |
1164 | + | then parseIntValue(split(aS[parseIntValue(cZ)], "_")[aU]) | |
1108 | 1165 | else 0 | |
1109 | 1166 | } | |
1110 | 1167 | } | |
1111 | - | let | |
1112 | - | let | |
1113 | - | ( | |
1114 | - | } | |
1115 | - | ||
1116 | - | ||
1117 | - | func | |
1168 | + | let ge = am(this, A, ao, true) | |
1169 | + | let gA = gj(gv, gw, false, ge) | |
1170 | + | (gA == gA) | |
1171 | + | } | |
1172 | + | ||
1173 | + | ||
1174 | + | func gB (gC,gD,gE,gF) = if ((size(gC) != aF)) | |
1118 | 1175 | then throw("Wrong proportions data") | |
1119 | 1176 | else { | |
1120 | - | func | |
1121 | - | let | |
1122 | - | if ((0 > | |
1123 | - | then throw(((((((("Panic! Pieces of type=" + toString( | |
1124 | - | else ( | |
1125 | - | } | |
1126 | - | ||
1127 | - | let | |
1128 | - | let | |
1129 | - | let | |
1130 | - | func | |
1131 | - | then | |
1132 | - | else | |
1133 | - | ||
1134 | - | func | |
1135 | - | then | |
1177 | + | func gG (eO,gH) = { | |
1178 | + | let fg = (parseIntValue(gC[gH]) + ((gF * gD[gH]) * gE)) | |
1179 | + | if ((0 > fg)) | |
1180 | + | then throw(((((((("Panic! Pieces of type=" + toString(gH)) + ", sign=") + toString(gF)) + ", terrainCounts[i]=") + toString(gD[gH])) + ", landSizeIndex=") + toString(gE))) | |
1181 | + | else (eO :+ toString(fg)) | |
1182 | + | } | |
1183 | + | ||
1184 | + | let eQ = cJ | |
1185 | + | let eR = size(eQ) | |
1186 | + | let eS = nil | |
1187 | + | func eT (eU,eV) = if ((eV >= eR)) | |
1188 | + | then eU | |
1189 | + | else gG(eU, eQ[eV]) | |
1190 | + | ||
1191 | + | func eW (eU,eV) = if ((eV >= eR)) | |
1192 | + | then eU | |
1136 | 1193 | else throw("List size exceeds 6") | |
1137 | 1194 | ||
1138 | - | | |
1195 | + | eW(eT(eT(eT(eT(eT(eT(eS, 0), 1), 2), 3), 4), 5), 6) | |
1139 | 1196 | } | |
1140 | 1197 | ||
1141 | 1198 | ||
1142 | - | func | |
1143 | - | let | |
1144 | - | makeString( | |
1145 | - | } | |
1146 | - | ||
1147 | - | ||
1148 | - | func | |
1149 | - | ||
1150 | - | ||
1151 | - | func | |
1152 | - | func | |
1153 | - | let | |
1154 | - | ( | |
1199 | + | func gI (gD,gE,gF) = { | |
1200 | + | let gC = split(valueOrElse(getString(dq()), "0_0_0_0_0_0"), "_") | |
1201 | + | makeString(gB(gC, gD, gE, gF), "_") | |
1202 | + | } | |
1203 | + | ||
1204 | + | ||
1205 | + | func gJ (gK) = [(size(split(gK, "A")) - 1), (size(split(gK, "B")) - 1), (size(split(gK, "C")) - 1), (size(split(gK, "D")) - 1), (size(split(gK, "E")) - 1), (size(split(gK, "F")) - 1)] | |
1206 | + | ||
1207 | + | ||
1208 | + | func gL (gM,gD,gN,gE,gO) = { | |
1209 | + | func gP (eO,gH) = { | |
1210 | + | let gQ = ((fraction(gN, gO, a) * gD[gH]) * gE) | |
1211 | + | (eO :+ toString((parseIntValue(gM[gH]) + gQ))) | |
1155 | 1212 | } | |
1156 | 1213 | ||
1157 | - | let | |
1158 | - | let | |
1159 | - | let | |
1160 | - | let | |
1161 | - | func | |
1162 | - | then | |
1163 | - | else | |
1164 | - | ||
1165 | - | func | |
1166 | - | then | |
1214 | + | let eZ = { | |
1215 | + | let eQ = cJ | |
1216 | + | let eR = size(eQ) | |
1217 | + | let eS = nil | |
1218 | + | func eT (eU,eV) = if ((eV >= eR)) | |
1219 | + | then eU | |
1220 | + | else gP(eU, eQ[eV]) | |
1221 | + | ||
1222 | + | func eW (eU,eV) = if ((eV >= eR)) | |
1223 | + | then eU | |
1167 | 1224 | else throw("List size exceeds 6") | |
1168 | 1225 | ||
1169 | - | | |
1226 | + | eW(eT(eT(eT(eT(eT(eT(eS, 0), 1), 2), 3), 4), 5), 6) | |
1170 | 1227 | } | |
1171 | - | makeString( | |
1172 | - | } | |
1173 | - | ||
1174 | - | ||
1175 | - | func | |
1176 | - | func | |
1177 | - | let | |
1178 | - | $Tuple2(( | |
1228 | + | makeString(eZ, "_") | |
1229 | + | } | |
1230 | + | ||
1231 | + | ||
1232 | + | func gR (gD,gN,gE,gO) = { | |
1233 | + | func gP (eO,gH) = { | |
1234 | + | let gQ = ((fraction(gN, gO, a) * gD[gH]) * gE) | |
1235 | + | $Tuple2((eO._1 :+ gQ), (eO._2 + gQ)) | |
1179 | 1236 | } | |
1180 | 1237 | ||
1181 | - | let | |
1182 | - | let | |
1183 | - | let | |
1184 | - | func | |
1185 | - | then | |
1186 | - | else | |
1187 | - | ||
1188 | - | func | |
1189 | - | then | |
1238 | + | let eQ = cJ | |
1239 | + | let eR = size(eQ) | |
1240 | + | let eS = $Tuple2(nil, 0) | |
1241 | + | func eT (eU,eV) = if ((eV >= eR)) | |
1242 | + | then eU | |
1243 | + | else gP(eU, eQ[eV]) | |
1244 | + | ||
1245 | + | func eW (eU,eV) = if ((eV >= eR)) | |
1246 | + | then eU | |
1190 | 1247 | else throw("List size exceeds 6") | |
1191 | 1248 | ||
1192 | - | | |
1193 | - | } | |
1194 | - | ||
1195 | - | ||
1196 | - | func | |
1197 | - | let | |
1198 | - | let | |
1199 | - | if (( | |
1200 | - | then $Tuple2(makeString( | |
1201 | - | else if (( | |
1249 | + | eW(eT(eT(eT(eT(eT(eT(eS, 0), 1), 2), 3), 4), 5), 6) | |
1250 | + | } | |
1251 | + | ||
1252 | + | ||
1253 | + | func gS (gT,gU,gV,gW) = { | |
1254 | + | let gX = gV._1 | |
1255 | + | let gY = gV._2 | |
1256 | + | if ((gY == 0)) | |
1257 | + | then $Tuple2(makeString(gT, "_"), makeString(gU, "_")) | |
1258 | + | else if ((gW >= gY)) | |
1202 | 1259 | then { | |
1203 | - | func | |
1204 | - | ||
1205 | - | let | |
1206 | - | let | |
1207 | - | let | |
1208 | - | let | |
1209 | - | func | |
1210 | - | then | |
1211 | - | else | |
1212 | - | ||
1213 | - | func | |
1214 | - | then | |
1260 | + | func gZ (eO,gH) = (eO :+ toString((parseIntValue(gT[gH]) + gX[gH]))) | |
1261 | + | ||
1262 | + | let eZ = { | |
1263 | + | let eQ = cJ | |
1264 | + | let eR = size(eQ) | |
1265 | + | let eS = nil | |
1266 | + | func eT (eU,eV) = if ((eV >= eR)) | |
1267 | + | then eU | |
1268 | + | else gZ(eU, eQ[eV]) | |
1269 | + | ||
1270 | + | func eW (eU,eV) = if ((eV >= eR)) | |
1271 | + | then eU | |
1215 | 1272 | else throw("List size exceeds 6") | |
1216 | 1273 | ||
1217 | - | | |
1274 | + | eW(eT(eT(eT(eT(eT(eT(eS, 0), 1), 2), 3), 4), 5), 6) | |
1218 | 1275 | } | |
1219 | - | $Tuple2(makeString( | |
1276 | + | $Tuple2(makeString(eZ, "_"), makeString(gU, "_")) | |
1220 | 1277 | } | |
1221 | 1278 | else { | |
1222 | - | func | |
1223 | - | let | |
1224 | - | $Tuple2(( | |
1279 | + | func ha (eO,gH) = { | |
1280 | + | let hb = fraction(gX[gH], gW, gY) | |
1281 | + | $Tuple2((eO._1 :+ toString((parseIntValue(gT[gH]) + hb))), (eO._2 :+ toString(((parseIntValue(gU[gH]) + gX[gH]) - hb)))) | |
1225 | 1282 | } | |
1226 | 1283 | ||
1227 | - | let | |
1228 | - | let | |
1229 | - | let | |
1230 | - | let | |
1231 | - | func | |
1232 | - | then | |
1233 | - | else | |
1234 | - | ||
1235 | - | func | |
1236 | - | then | |
1284 | + | let eZ = { | |
1285 | + | let eQ = cJ | |
1286 | + | let eR = size(eQ) | |
1287 | + | let eS = $Tuple2(nil, nil) | |
1288 | + | func eT (eU,eV) = if ((eV >= eR)) | |
1289 | + | then eU | |
1290 | + | else ha(eU, eQ[eV]) | |
1291 | + | ||
1292 | + | func eW (eU,eV) = if ((eV >= eR)) | |
1293 | + | then eU | |
1237 | 1294 | else throw("List size exceeds 6") | |
1238 | 1295 | ||
1239 | - | | |
1296 | + | eW(eT(eT(eT(eT(eT(eT(eS, 0), 1), 2), 3), 4), 5), 6) | |
1240 | 1297 | } | |
1241 | - | $Tuple2(makeString( | |
1298 | + | $Tuple2(makeString(eZ._1, "_"), makeString(eZ._2, "_")) | |
1242 | 1299 | } | |
1243 | 1300 | } | |
1244 | 1301 | ||
1245 | 1302 | ||
1246 | - | func | |
1247 | - | then | |
1248 | - | else -( | |
1249 | - | ||
1250 | - | ||
1251 | - | let | |
1252 | - | ||
1253 | - | func | |
1254 | - | let | |
1255 | - | let | |
1303 | + | func hc (hd) = if ((hd >= toBigInt(0))) | |
1304 | + | then hd | |
1305 | + | else -(hd) | |
1306 | + | ||
1307 | + | ||
1308 | + | let he = [[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]] | |
1309 | + | ||
1310 | + | func hf (dz,hg) = { | |
1311 | + | let hh = toInt((dz % eg)) | |
1312 | + | let hi = if ((hg[0] > hh)) | |
1256 | 1313 | then "A" | |
1257 | - | else if (( | |
1314 | + | else if ((hg[1] > hh)) | |
1258 | 1315 | then "B" | |
1259 | - | else if (( | |
1316 | + | else if ((hg[2] > hh)) | |
1260 | 1317 | then "C" | |
1261 | - | else if (( | |
1318 | + | else if ((hg[3] > hh)) | |
1262 | 1319 | then "D" | |
1263 | - | else if (( | |
1320 | + | else if ((hg[4] > hh)) | |
1264 | 1321 | then "E" | |
1265 | 1322 | else "F" | |
1266 | - | | |
1267 | - | } | |
1268 | - | ||
1269 | - | ||
1270 | - | func | |
1271 | - | let | |
1272 | - | func | |
1273 | - | ||
1274 | - | let | |
1275 | - | let | |
1276 | - | let | |
1277 | - | let | |
1278 | - | func | |
1279 | - | then | |
1280 | - | else | |
1281 | - | ||
1282 | - | func | |
1283 | - | then | |
1323 | + | hi | |
1324 | + | } | |
1325 | + | ||
1326 | + | ||
1327 | + | func hj (hk,hl) = { | |
1328 | + | let hm = he[hl] | |
1329 | + | func hn (eO,eP) = $Tuple2((((((eO._1 + hf(eO._2, hm)) + hf((eO._2 / eg), hm)) + hf((eO._2 / eh), hm)) + hf((eO._2 / ei), hm)) + hf((eO._2 / ej), hm)), (eO._2 / ek)) | |
1330 | + | ||
1331 | + | let gs = { | |
1332 | + | let eQ = [1, 2, 3, 4, 5] | |
1333 | + | let eR = size(eQ) | |
1334 | + | let eS = $Tuple2("", (hk / ef)) | |
1335 | + | func eT (eU,eV) = if ((eV >= eR)) | |
1336 | + | then eU | |
1337 | + | else hn(eU, eQ[eV]) | |
1338 | + | ||
1339 | + | func eW (eU,eV) = if ((eV >= eR)) | |
1340 | + | then eU | |
1284 | 1341 | else throw("List size exceeds 5") | |
1285 | 1342 | ||
1286 | - | | |
1343 | + | eW(eT(eT(eT(eT(eT(eS, 0), 1), 2), 3), 4), 5) | |
1287 | 1344 | } | |
1288 | - | | |
1289 | - | } | |
1290 | - | ||
1291 | - | ||
1292 | - | let | |
1293 | - | ||
1294 | - | let | |
1295 | - | ||
1296 | - | func | |
1297 | - | func | |
1298 | - | let | |
1299 | - | let | |
1300 | - | let | |
1345 | + | gs._1 | |
1346 | + | } | |
1347 | + | ||
1348 | + | ||
1349 | + | let ho = [7, 2, 15, 19, 8, 24, 1, 21, 16, 5, 0, 22, 20, 23, 11, 4, 18, 12, 6, 10, 3, 17, 13, 9, 14] | |
1350 | + | ||
1351 | + | let hp = ["A", "B", "C", "D", "E", "F"] | |
1352 | + | ||
1353 | + | func hq (hr,gE) = { | |
1354 | + | func hs (eO,dx) = { | |
1355 | + | let fy = eO._2 | |
1356 | + | let ht = parseIntValue(dx) | |
1357 | + | let hd = if ((ht == 0)) | |
1301 | 1358 | then 0 | |
1302 | - | else if (( | |
1303 | - | then ( | |
1304 | - | else if (( | |
1359 | + | else if ((ht >= (4 * gE))) | |
1360 | + | then (ht / gE) | |
1361 | + | else if ((ht > (3 * gE))) | |
1305 | 1362 | then 3 | |
1306 | - | else ((( | |
1307 | - | $Tuple3(( | |
1363 | + | else (((ht - 1) / gE) + 1) | |
1364 | + | $Tuple3((eO._1 :+ hd), (eO._2 + 1), (eO._3 + hd)) | |
1308 | 1365 | } | |
1309 | 1366 | ||
1310 | - | let | |
1311 | - | let | |
1312 | - | let | |
1313 | - | let | |
1314 | - | func | |
1315 | - | then | |
1316 | - | else | |
1317 | - | ||
1318 | - | func | |
1319 | - | then | |
1367 | + | let gs = { | |
1368 | + | let eQ = hr | |
1369 | + | let eR = size(eQ) | |
1370 | + | let eS = $Tuple3(nil, 0, 0) | |
1371 | + | func eT (eU,eV) = if ((eV >= eR)) | |
1372 | + | then eU | |
1373 | + | else hs(eU, eQ[eV]) | |
1374 | + | ||
1375 | + | func eW (eU,eV) = if ((eV >= eR)) | |
1376 | + | then eU | |
1320 | 1377 | else throw("List size exceeds 6") | |
1321 | 1378 | ||
1322 | - | | |
1379 | + | eW(eT(eT(eT(eT(eT(eT(eS, 0), 1), 2), 3), 4), 5), 6) | |
1323 | 1380 | } | |
1324 | - | let | |
1325 | - | let | |
1326 | - | let | |
1327 | - | func | |
1328 | - | let | |
1329 | - | then ( | |
1330 | - | else | |
1331 | - | let | |
1381 | + | let hu = gs._1 | |
1382 | + | let hv = value(indexOf(hu, max(hu))) | |
1383 | + | let hw = (gs._3 - 25) | |
1384 | + | func hx (eO,cZ) = { | |
1385 | + | let dC = if ((cZ == hv)) | |
1386 | + | then (hu[cZ] - hw) | |
1387 | + | else hu[cZ] | |
1388 | + | let dN = if ((dC == 0)) | |
1332 | 1389 | then nil | |
1333 | - | else split(drop(toString(pow(10, 0, | |
1334 | - | let | |
1335 | - | func | |
1336 | - | ||
1337 | - | let | |
1338 | - | let | |
1339 | - | let | |
1340 | - | let | |
1341 | - | func | |
1342 | - | then | |
1343 | - | else | |
1344 | - | ||
1345 | - | func | |
1346 | - | then | |
1390 | + | else split(drop(toString(pow(10, 0, dC, 0, 0, DOWN)), 1), "") | |
1391 | + | let fX = hp[cZ] | |
1392 | + | func hy (hz,hA) = (hz :+ fX) | |
1393 | + | ||
1394 | + | let hB = { | |
1395 | + | let eQ = dN | |
1396 | + | let eR = size(eQ) | |
1397 | + | let eS = nil | |
1398 | + | func hC (eU,eV) = if ((eV >= eR)) | |
1399 | + | then eU | |
1400 | + | else hy(eU, eQ[eV]) | |
1401 | + | ||
1402 | + | func hD (eU,eV) = if ((eV >= eR)) | |
1403 | + | then eU | |
1347 | 1404 | else throw("List size exceeds 25") | |
1348 | 1405 | ||
1349 | - | | |
1350 | - | } | |
1351 | - | ( | |
1406 | + | hD(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(eS, 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) | |
1407 | + | } | |
1408 | + | (eO ++ hB) | |
1352 | 1409 | } | |
1353 | 1410 | ||
1354 | - | let | |
1355 | - | let | |
1356 | - | let | |
1357 | - | let | |
1358 | - | func | |
1359 | - | then | |
1360 | - | else | |
1361 | - | ||
1362 | - | func | |
1363 | - | then | |
1411 | + | let eZ = { | |
1412 | + | let eQ = cJ | |
1413 | + | let eR = size(eQ) | |
1414 | + | let eS = nil | |
1415 | + | func hC (eU,eV) = if ((eV >= eR)) | |
1416 | + | then eU | |
1417 | + | else hx(eU, eQ[eV]) | |
1418 | + | ||
1419 | + | func hD (eU,eV) = if ((eV >= eR)) | |
1420 | + | then eU | |
1364 | 1421 | else throw("List size exceeds 6") | |
1365 | 1422 | ||
1366 | - | | |
1423 | + | hD(hC(hC(hC(hC(hC(hC(eS, 0), 1), 2), 3), 4), 5), 6) | |
1367 | 1424 | } | |
1368 | - | func | |
1369 | - | ||
1370 | - | let | |
1371 | - | let | |
1372 | - | let | |
1373 | - | func | |
1374 | - | then | |
1375 | - | else | |
1376 | - | ||
1377 | - | func | |
1378 | - | then | |
1425 | + | func hE (eO,fy) = (eO + eZ[fy]) | |
1426 | + | ||
1427 | + | let eQ = ho | |
1428 | + | let eR = size(eQ) | |
1429 | + | let eS = "" | |
1430 | + | func hF (eU,eV) = if ((eV >= eR)) | |
1431 | + | then eU | |
1432 | + | else hE(eU, eQ[eV]) | |
1433 | + | ||
1434 | + | func hG (eU,eV) = if ((eV >= eR)) | |
1435 | + | then eU | |
1379 | 1436 | else throw("List size exceeds 25") | |
1380 | 1437 | ||
1381 | - | | |
1382 | - | } | |
1383 | - | ||
1384 | - | ||
1385 | - | func | |
1386 | - | let | |
1387 | - | [toString(valueOrElse(parseInt( | |
1388 | - | then | |
1389 | - | else "0_0_0_0_0_0", if ((size(split( | |
1390 | - | then | |
1391 | - | else "0_0_0_0_0_0", | |
1392 | - | } | |
1393 | - | ||
1394 | - | ||
1395 | - | func | |
1396 | - | let | |
1397 | - | ((aI * (parseIntValue( | |
1398 | - | } | |
1399 | - | ||
1400 | - | ||
1401 | - | func | |
1402 | - | let | |
1403 | - | func | |
1404 | - | ||
1405 | - | func | |
1406 | - | let | |
1407 | - | let | |
1408 | - | $Tuple2(( | |
1438 | + | hG(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(eS, 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) | |
1439 | + | } | |
1440 | + | ||
1441 | + | ||
1442 | + | func hH (hI) = { | |
1443 | + | let gr = split(valueOrElse(getString(hI), "0:0_0_0_0_0_0:0_0_0_0_0_0:"), ":") | |
1444 | + | [toString(valueOrElse(parseInt(gr[bh]), 0)), if ((size(split(gr[bi], "_")) == aF)) | |
1445 | + | then gr[bi] | |
1446 | + | else "0_0_0_0_0_0", if ((size(split(gr[bj], "_")) == aF)) | |
1447 | + | then gr[bj] | |
1448 | + | else "0_0_0_0_0_0", gr[bk]] | |
1449 | + | } | |
1450 | + | ||
1451 | + | ||
1452 | + | func hJ (hK) = { | |
1453 | + | let fm = split(hK, "_") | |
1454 | + | ((aI * (parseIntValue(fm[1]) + 1)) * parseIntValue(fm[0])) | |
1455 | + | } | |
1456 | + | ||
1457 | + | ||
1458 | + | func hL (hM) = { | |
1459 | + | let hN = hM[bb] | |
1460 | + | func hO (eO,hP) = (eO + parseIntValue(hP)) | |
1461 | + | ||
1462 | + | func hQ (eO,hP) = { | |
1463 | + | let cZ = eO._1 | |
1464 | + | let eH = (((parseIntValue(hP) + aX) - 1) / aX) | |
1465 | + | $Tuple2((cZ + 1), (eO._2 + (eH * cD))) | |
1409 | 1466 | } | |
1410 | 1467 | ||
1411 | - | let | |
1412 | - | let | |
1413 | - | let | |
1414 | - | let | |
1415 | - | func | |
1416 | - | then | |
1417 | - | else | |
1418 | - | ||
1419 | - | func | |
1420 | - | then | |
1468 | + | let hR = { | |
1469 | + | let eQ = split(hM[aZ], "_") | |
1470 | + | let eR = size(eQ) | |
1471 | + | let eS = 0 | |
1472 | + | func eT (eU,eV) = if ((eV >= eR)) | |
1473 | + | then eU | |
1474 | + | else hO(eU, eQ[eV]) | |
1475 | + | ||
1476 | + | func eW (eU,eV) = if ((eV >= eR)) | |
1477 | + | then eU | |
1421 | 1478 | else throw("List size exceeds 6") | |
1422 | 1479 | ||
1423 | - | | |
1480 | + | eW(eT(eT(eT(eT(eT(eT(eS, 0), 1), 2), 3), 4), 5), 6) | |
1424 | 1481 | } | |
1425 | - | let | |
1426 | - | let | |
1427 | - | let | |
1428 | - | let | |
1429 | - | func | |
1430 | - | then | |
1431 | - | else | |
1432 | - | ||
1433 | - | func | |
1434 | - | then | |
1482 | + | let hS = { | |
1483 | + | let eQ = split(hM[ba], "_") | |
1484 | + | let eR = size(eQ) | |
1485 | + | let eS = 0 | |
1486 | + | func hC (eU,eV) = if ((eV >= eR)) | |
1487 | + | then eU | |
1488 | + | else hO(eU, eQ[eV]) | |
1489 | + | ||
1490 | + | func hD (eU,eV) = if ((eV >= eR)) | |
1491 | + | then eU | |
1435 | 1492 | else throw("List size exceeds 6") | |
1436 | 1493 | ||
1437 | - | | |
1494 | + | hD(hC(hC(hC(hC(hC(hC(eS, 0), 1), 2), 3), 4), 5), 6) | |
1438 | 1495 | } | |
1439 | - | let | |
1496 | + | let hT = if ((hN == "")) | |
1440 | 1497 | then 0 | |
1441 | - | else ( let | |
1442 | - | let | |
1443 | - | let | |
1444 | - | func | |
1445 | - | then | |
1446 | - | else | |
1447 | - | ||
1448 | - | func | |
1449 | - | then | |
1498 | + | else ( let eQ = split_4C(hN, "_") | |
1499 | + | let eR = size(eQ) | |
1500 | + | let eS = $Tuple2(0, 0) | |
1501 | + | func hF (eU,eV) = if ((eV >= eR)) | |
1502 | + | then eU | |
1503 | + | else hQ(eU, eQ[eV]) | |
1504 | + | ||
1505 | + | func hG (eU,eV) = if ((eV >= eR)) | |
1506 | + | then eU | |
1450 | 1507 | else throw("List size exceeds 50") | |
1451 | 1508 | ||
1452 | - | | |
1453 | - | (( | |
1454 | - | } | |
1455 | - | ||
1456 | - | ||
1457 | - | func | |
1458 | - | let | |
1459 | - | let | |
1460 | - | let | |
1461 | - | let | |
1462 | - | let | |
1463 | - | let | |
1464 | - | then makeString(["0", toString( | |
1509 | + | hG(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(eS, 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 | |
1510 | + | ((hR + hS) + hT) | |
1511 | + | } | |
1512 | + | ||
1513 | + | ||
1514 | + | func hU (hV,hW,hX) = { | |
1515 | + | let hK = ((toString(hW) + "_") + toString(hX)) | |
1516 | + | let hY = hJ(hK) | |
1517 | + | let hZ = valueOrElse(getString(hV), (hK + ":0_0_0_0_0_0:0_0_0_0_0_0::0")) | |
1518 | + | let ia = split_4C(hZ, ":") | |
1519 | + | let ib = hL(ia) | |
1520 | + | let ic = if ((5 > size(ia))) | |
1521 | + | then makeString(["0", toString(ib), toString((hY - ib)), toString(hY)], "_") | |
1465 | 1522 | else { | |
1466 | - | let | |
1467 | - | let | |
1468 | - | let | |
1469 | - | then parseIntValue( | |
1470 | - | else | |
1471 | - | makeString([toString( | |
1472 | - | } | |
1473 | - | [ | |
1474 | - | then | |
1475 | - | else "0_0_0_0_0_0", if ((size(split( | |
1476 | - | then | |
1477 | - | else "0_0_0_0_0_0", | |
1478 | - | } | |
1479 | - | ||
1480 | - | ||
1481 | - | func | |
1482 | - | let | |
1483 | - | let | |
1484 | - | (( | |
1485 | - | } | |
1486 | - | ||
1487 | - | ||
1488 | - | func | |
1523 | + | let id = split(ia[bc], "_") | |
1524 | + | let ie = parseIntValue(id[bd]) | |
1525 | + | let if = if ((size(id) > 1)) | |
1526 | + | then parseIntValue(id[be]) | |
1527 | + | else ib | |
1528 | + | makeString([toString(ie), toString(if), toString(((hY - ie) - if)), toString(hY)], "_") | |
1529 | + | } | |
1530 | + | [ia[aY], if ((size(split(ia[aZ], "_")) == aF)) | |
1531 | + | then ia[aZ] | |
1532 | + | else "0_0_0_0_0_0", if ((size(split(ia[ba], "_")) == aF)) | |
1533 | + | then ia[ba] | |
1534 | + | else "0_0_0_0_0_0", ia[bb], ic] | |
1535 | + | } | |
1536 | + | ||
1537 | + | ||
1538 | + | func ig (hM) = { | |
1539 | + | let ih = hL(hM) | |
1540 | + | let ii = parseIntValue(split(hM[bc], "_")[bd]) | |
1541 | + | ((hJ(hM[aY]) - ih) - ii) | |
1542 | + | } | |
1543 | + | ||
1544 | + | ||
1545 | + | func ij (ik,hM,il) = if ((size(ik) != 3)) | |
1489 | 1546 | then throw("cargoListStr should contain exactly 2 ':' separators") | |
1490 | 1547 | else { | |
1491 | - | let | |
1492 | - | let | |
1493 | - | let | |
1548 | + | let im = split(ik[0], "_") | |
1549 | + | let in = split(ik[1], "_") | |
1550 | + | let io = if ((ik[2] == "")) | |
1494 | 1551 | then nil | |
1495 | - | else split_4C( | |
1496 | - | if ((size( | |
1552 | + | else split_4C(ik[2], "_") | |
1553 | + | if ((size(im) != aF)) | |
1497 | 1554 | then throw("All 6 resources should be passed") | |
1498 | - | else if ((size( | |
1555 | + | else if ((size(in) != aF)) | |
1499 | 1556 | then throw("All 6 materials should be passed") | |
1500 | 1557 | else { | |
1501 | - | let | |
1502 | - | let | |
1503 | - | let | |
1504 | - | let | |
1558 | + | let gW = ig(hM) | |
1559 | + | let ip = split(hM[aZ], "_") | |
1560 | + | let iq = split(hM[ba], "_") | |
1561 | + | let ir = if ((hM[bb] == "")) | |
1505 | 1562 | then nil | |
1506 | - | else split_4C( | |
1507 | - | let | |
1508 | - | let | |
1509 | - | let | |
1563 | + | else split_4C(hM[bb], "_") | |
1564 | + | let gU = split(il[bi], "_") | |
1565 | + | let is = split(il[bj], "_") | |
1566 | + | let it = if ((il[bk] == "")) | |
1510 | 1567 | then nil | |
1511 | - | else split_4C( | |
1512 | - | func | |
1513 | - | let | |
1514 | - | let | |
1515 | - | let | |
1516 | - | let | |
1517 | - | if (( | |
1518 | - | then $Tuple4(( | |
1519 | - | else if (( | |
1520 | - | then if (( | |
1521 | - | then throw((((("Attempt to take " + | |
1522 | - | else $Tuple4(( | |
1523 | - | else if ((-( | |
1524 | - | then throw((((("Attempt to take " + toString(-( | |
1525 | - | else $Tuple4(( | |
1568 | + | else split_4C(il[bk], "_") | |
1569 | + | func iu (eO,hP) = { | |
1570 | + | let gH = eO._1 | |
1571 | + | let iv = parseIntValue(hP) | |
1572 | + | let iw = parseIntValue(ip[gH]) | |
1573 | + | let ix = parseIntValue(gU[gH]) | |
1574 | + | if ((iv == 0)) | |
1575 | + | then $Tuple4((gH + 1), (eO._2 :+ ip[gH]), (eO._3 :+ gU[gH]), eO._4) | |
1576 | + | else if ((iv > 0)) | |
1577 | + | then if ((iv > ix)) | |
1578 | + | then throw((((("Attempt to take " + hP) + " from backpack, but only ") + toString(ix)) + " available")) | |
1579 | + | else $Tuple4((gH + 1), (eO._2 :+ toString((iw + iv))), (eO._3 :+ toString((ix - iv))), (eO._4 + iv)) | |
1580 | + | else if ((-(iv) > iw)) | |
1581 | + | then throw((((("Attempt to take " + toString(-(iv))) + " from warehouse, but only ") + toString(iw)) + " available")) | |
1582 | + | else $Tuple4((gH + 1), (eO._2 :+ toString((iw + iv))), (eO._3 :+ toString((ix - iv))), (eO._4 + iv)) | |
1526 | 1583 | } | |
1527 | 1584 | ||
1528 | - | let | |
1529 | - | let | |
1530 | - | let | |
1531 | - | let | |
1532 | - | func | |
1533 | - | then | |
1534 | - | else | |
1535 | - | ||
1536 | - | func | |
1537 | - | then | |
1585 | + | let eZ = { | |
1586 | + | let eQ = im | |
1587 | + | let eR = size(eQ) | |
1588 | + | let eS = $Tuple4(0, nil, nil, 0) | |
1589 | + | func eT (eU,eV) = if ((eV >= eR)) | |
1590 | + | then eU | |
1591 | + | else iu(eU, eQ[eV]) | |
1592 | + | ||
1593 | + | func eW (eU,eV) = if ((eV >= eR)) | |
1594 | + | then eU | |
1538 | 1595 | else throw("List size exceeds 6") | |
1539 | 1596 | ||
1540 | - | | |
1597 | + | eW(eT(eT(eT(eT(eT(eT(eS, 0), 1), 2), 3), 4), 5), 6) | |
1541 | 1598 | } | |
1542 | - | func | |
1543 | - | let | |
1544 | - | let | |
1545 | - | let | |
1546 | - | let | |
1547 | - | if (( | |
1548 | - | then $Tuple4(( | |
1549 | - | else if (( | |
1550 | - | then if (( | |
1551 | - | then throw((((("Attempt to take " + | |
1552 | - | else $Tuple4(( | |
1553 | - | else if ((-( | |
1554 | - | then throw((((("Attempt to take " + toString(-( | |
1555 | - | else $Tuple4(( | |
1599 | + | func iy (eO,hP) = { | |
1600 | + | let gH = eO._1 | |
1601 | + | let iv = parseIntValue(hP) | |
1602 | + | let iz = parseIntValue(iq[gH]) | |
1603 | + | let iA = parseIntValue(is[gH]) | |
1604 | + | if ((iv == 0)) | |
1605 | + | then $Tuple4((gH + 1), (eO._2 :+ iq[gH]), (eO._3 :+ is[gH]), eO._4) | |
1606 | + | else if ((iv > 0)) | |
1607 | + | then if ((iv > iA)) | |
1608 | + | then throw((((("Attempt to take " + hP) + " from backpack, but only ") + toString(iA)) + " available")) | |
1609 | + | else $Tuple4((gH + 1), (eO._2 :+ toString((iz + iv))), (eO._3 :+ toString((iA - iv))), (eO._4 + iv)) | |
1610 | + | else if ((-(iv) > iz)) | |
1611 | + | then throw((((("Attempt to take " + toString(-(iv))) + " from warehouse, but only ") + toString(iz)) + " available")) | |
1612 | + | else $Tuple4((gH + 1), (eO._2 :+ toString((iz + iv))), (eO._3 :+ toString((iA - iv))), (eO._4 + iv)) | |
1556 | 1613 | } | |
1557 | 1614 | ||
1558 | - | let | |
1559 | - | let | |
1560 | - | let | |
1561 | - | let | |
1562 | - | func | |
1563 | - | then | |
1564 | - | else | |
1565 | - | ||
1566 | - | func | |
1567 | - | then | |
1615 | + | let gn = { | |
1616 | + | let eQ = in | |
1617 | + | let eR = size(eQ) | |
1618 | + | let eS = $Tuple4(0, nil, nil, eZ._4) | |
1619 | + | func hC (eU,eV) = if ((eV >= eR)) | |
1620 | + | then eU | |
1621 | + | else iy(eU, eQ[eV]) | |
1622 | + | ||
1623 | + | func hD (eU,eV) = if ((eV >= eR)) | |
1624 | + | then eU | |
1568 | 1625 | else throw("List size exceeds 6") | |
1569 | 1626 | ||
1570 | - | | |
1627 | + | hD(hC(hC(hC(hC(hC(hC(eS, 0), 1), 2), 3), 4), 5), 6) | |
1571 | 1628 | } | |
1572 | - | func | |
1573 | - | let | |
1574 | - | let | |
1575 | - | let | |
1576 | - | then parseIntValue( | |
1629 | + | func iB (eO,hP) = { | |
1630 | + | let gH = eO._1 | |
1631 | + | let iv = parseIntValue(hP) | |
1632 | + | let iC = if ((size(ir) > gH)) | |
1633 | + | then parseIntValue(ir[gH]) | |
1577 | 1634 | else 0 | |
1578 | - | let | |
1579 | - | then parseIntValue( | |
1635 | + | let iD = if ((size(it) > gH)) | |
1636 | + | then parseIntValue(it[gH]) | |
1580 | 1637 | else 0 | |
1581 | - | if (( | |
1582 | - | then $Tuple4(( | |
1583 | - | else if (( | |
1584 | - | then if (( | |
1585 | - | then throw((((("Attempt to take " + | |
1638 | + | if ((iv == 0)) | |
1639 | + | then $Tuple4((gH + 1), (eO._2 :+ toString(iC)), (eO._3 :+ toString(iD)), eO._4) | |
1640 | + | else if ((iv > 0)) | |
1641 | + | then if ((iv > iD)) | |
1642 | + | then throw((((("Attempt to take " + hP) + " from backpack, but only ") + toString(iD)) + " available")) | |
1586 | 1643 | else { | |
1587 | - | let | |
1588 | - | $Tuple4(( | |
1644 | + | let fQ = (eE((iC + iv), aX) - eE(iC, aX)) | |
1645 | + | $Tuple4((gH + 1), (eO._2 :+ toString((iC + iv))), (eO._3 :+ toString((iD - iv))), (eO._4 + fQ)) | |
1589 | 1646 | } | |
1590 | - | else if ((-( | |
1591 | - | then throw((((("Attempt to take " + toString(-( | |
1647 | + | else if ((-(iv) > iC)) | |
1648 | + | then throw((((("Attempt to take " + toString(-(iv))) + " from warehouse, but only ") + toString(iC)) + " available")) | |
1592 | 1649 | else { | |
1593 | - | let | |
1594 | - | $Tuple4(( | |
1650 | + | let fQ = (eE((iC + iv), aX) - eE(iC, aX)) | |
1651 | + | $Tuple4((gH + 1), (eO._2 :+ toString((iC + iv))), (eO._3 :+ toString((iD - iv))), (eO._4 + fQ)) | |
1595 | 1652 | } | |
1596 | 1653 | } | |
1597 | 1654 | ||
1598 | - | let | |
1655 | + | let gr = if ((size(io) != 0)) | |
1599 | 1656 | then { | |
1600 | - | let | |
1601 | - | let | |
1602 | - | let | |
1603 | - | func | |
1604 | - | then | |
1605 | - | else | |
1606 | - | ||
1607 | - | func | |
1608 | - | then | |
1657 | + | let eQ = io | |
1658 | + | let eR = size(eQ) | |
1659 | + | let eS = $Tuple4(0, nil, nil, gn._4) | |
1660 | + | func hF (eU,eV) = if ((eV >= eR)) | |
1661 | + | then eU | |
1662 | + | else iB(eU, eQ[eV]) | |
1663 | + | ||
1664 | + | func hG (eU,eV) = if ((eV >= eR)) | |
1665 | + | then eU | |
1609 | 1666 | else throw("List size exceeds 50") | |
1610 | 1667 | ||
1611 | - | | |
1668 | + | hG(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(eS, 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) | |
1612 | 1669 | } | |
1613 | - | else $Tuple4(0, | |
1614 | - | let | |
1615 | - | if (( | |
1616 | - | then throw((((("Attempt to put total " + toString( | |
1617 | - | else $Tuple7(makeString( | |
1670 | + | else $Tuple4(0, ir, it, gn._4) | |
1671 | + | let iE = gr._4 | |
1672 | + | if ((iE > gW)) | |
1673 | + | then throw((((("Attempt to put total " + toString(iE)) + " stuff, but only ") + toString(gW)) + " warehouse space left")) | |
1674 | + | else $Tuple7(makeString(eZ._2, "_"), makeString(gn._2, "_"), makeString_2C(gr._2, "_"), makeString(eZ._3, "_"), makeString(gn._3, "_"), makeString_2C(gr._3, "_"), iE) | |
1618 | 1675 | } | |
1619 | 1676 | } | |
1620 | 1677 | ||
1621 | 1678 | ||
1622 | - | func | |
1623 | - | let | |
1624 | - | let | |
1625 | - | let | |
1626 | - | let | |
1627 | - | let | |
1628 | - | let | |
1629 | - | let | |
1630 | - | let | |
1631 | - | let | |
1632 | - | let | |
1633 | - | $Tuple2([IntegerEntry( | |
1634 | - | } | |
1635 | - | ||
1636 | - | ||
1637 | - | func | |
1679 | + | func iF (iG,iH) = { | |
1680 | + | let bL = toString(iG) | |
1681 | + | let iI = hc(toBigInt(iH)) | |
1682 | + | let iJ = valueOrElse(getInteger(em()), (el + 1)) | |
1683 | + | let eq = toString(iJ) | |
1684 | + | let hl = toInt((iI % ef)) | |
1685 | + | let gK = hj(iI, hl) | |
1686 | + | let ds = aP[hl] | |
1687 | + | let iK = Issue(eD(eq, "S"), makeString([eq, "S", gK, ds], "_"), 1, 0, false) | |
1688 | + | let bp = calculateAssetId(iK) | |
1689 | + | let iL = toBase58String(bp) | |
1690 | + | $Tuple2([IntegerEntry(em(), (iJ + 1)), iK, StringEntry(ep(eq), iL), StringEntry(bo(iL), bL), StringEntry(es(eq), bL), IntegerEntry(by(iL), 0), IntegerEntry(er(iL, bL), 0), ScriptTransfer(iG, 1, bp)], $Tuple2(iL, ds)) | |
1691 | + | } | |
1692 | + | ||
1693 | + | ||
1694 | + | func iM (bL,iN,iO) = if (!(sigVerify_8Kb(iN, iO, dW))) | |
1638 | 1695 | then throw("signature does not match") | |
1639 | 1696 | else { | |
1640 | - | let | |
1641 | - | let | |
1642 | - | let | |
1643 | - | let | |
1644 | - | let | |
1645 | - | let | |
1646 | - | let | |
1647 | - | let | |
1648 | - | if (if (( | |
1697 | + | let fm = split_4C(toUtf8String(iN), ";") | |
1698 | + | let iP = split_4C(fm[0], "|") | |
1699 | + | let iQ = split(iP[ez], "_") | |
1700 | + | let iR = parseIntValue(iQ[0]) | |
1701 | + | let iS = parseIntValue(iQ[1]) | |
1702 | + | let iT = split(fm[1], ":") | |
1703 | + | let iU = iT[0] | |
1704 | + | let iV = parseIntValue(iP[eA]) | |
1705 | + | if (if ((iV > (lastBlock.timestamp + dY))) | |
1649 | 1706 | then true | |
1650 | - | else ((lastBlock.timestamp - | |
1651 | - | then throw(((("signature outdated: logTime=" + toString( | |
1707 | + | else ((lastBlock.timestamp - dY) > iV)) | |
1708 | + | then throw(((("signature outdated: logTime=" + toString(iV)) + ", bcTime=") + toString(lastBlock.timestamp))) | |
1652 | 1709 | else { | |
1653 | - | let | |
1654 | - | let | |
1655 | - | if (( | |
1656 | - | then throw(((("Tx ids don't match! In state: " + | |
1710 | + | let iW = iT[1] | |
1711 | + | let iX = valueOrElse(getString(dI(bL)), "") | |
1712 | + | if ((iX != iW)) | |
1713 | + | then throw(((("Tx ids don't match! In state: " + iX) + ", in msg: ") + iW)) | |
1657 | 1714 | else { | |
1658 | - | let A = valueOrErrorMessage(getString( | |
1659 | - | let | |
1660 | - | let | |
1661 | - | let | |
1662 | - | if (( | |
1663 | - | then throw(((("oldHealth=" + toString( | |
1664 | - | else if ((0 >= | |
1715 | + | let A = valueOrErrorMessage(getString(bH(bL)), "You don't have a duck staked") | |
1716 | + | let iY = z(A) | |
1717 | + | let iZ = ag(valueOrElse(getInteger(D(A)), 0)) | |
1718 | + | let ja = valueOrElse(getInteger(iY), iZ) | |
1719 | + | if ((ja != iR)) | |
1720 | + | then throw(((("oldHealth=" + toString(ja)) + " from state does not match one from flight log=") + toString(iR))) | |
1721 | + | else if ((0 >= iR)) | |
1665 | 1722 | then throw("You can't fly with zero health") | |
1666 | - | else if (!( | |
1723 | + | else if (!(gt(A))) | |
1667 | 1724 | then throw("Equipment incompatible") | |
1668 | 1725 | else { | |
1669 | - | let | |
1670 | - | then | |
1726 | + | let jb = if ((size(iP) > eB)) | |
1727 | + | then iP[eB] | |
1671 | 1728 | else "" | |
1672 | - | let | |
1673 | - | then | |
1729 | + | let jc = if ((size(iP) > eC)) | |
1730 | + | then iP[eC] | |
1674 | 1731 | else "" | |
1675 | - | let | |
1676 | - | then ( | |
1732 | + | let jd = if (if ((iS > 0)) | |
1733 | + | then (jb == "$") | |
1677 | 1734 | else false) | |
1678 | - | then | |
1735 | + | then dy(invoke(da, "sendUsdtPrize", [bL], nil)) | |
1679 | 1736 | else 0 | |
1680 | - | $Tuple5( | |
1737 | + | $Tuple5(iS, A, jd, iU, jc) | |
1681 | 1738 | } | |
1682 | 1739 | } | |
1683 | 1740 | } | |
1684 | 1741 | } | |
1685 | 1742 | ||
1686 | 1743 | ||
1687 | - | func | |
1688 | - | let | |
1689 | - | let | |
1690 | - | let | |
1691 | - | let | |
1692 | - | ((aH + fraction(aH, (( | |
1693 | - | } | |
1694 | - | ||
1695 | - | ||
1696 | - | func | |
1697 | - | let | |
1698 | - | then $Tuple2( | |
1744 | + | func je (P,jf) = { | |
1745 | + | let hX = valueOrElse(getInteger(by(P)), 0) | |
1746 | + | let jg = valueOrElse(getInteger(bs(aE, P)), 0) | |
1747 | + | let jh = (hX / 6) | |
1748 | + | let ji = (hX / 7) | |
1749 | + | ((aH + fraction(aH, ((hX + jh) + (2 * ji)), 5)) + fraction(aH, jg, (jf * 5))) | |
1750 | + | } | |
1751 | + | ||
1752 | + | ||
1753 | + | func jj (c,jk,jl) = { | |
1754 | + | let jm = if ((jk == ew)) | |
1755 | + | then $Tuple2(jl, valueOrElse(getString(bH(c)), "")) | |
1699 | 1756 | else { | |
1700 | - | let A = valueOrErrorMessage(getString( | |
1701 | - | let | |
1702 | - | let | |
1703 | - | if (( | |
1704 | - | then throw((("Duck location type is " + | |
1705 | - | else $Tuple2( | |
1706 | - | } | |
1707 | - | let P = | |
1708 | - | let | |
1709 | - | let | |
1710 | - | let | |
1711 | - | let | |
1712 | - | let | |
1713 | - | if (( | |
1757 | + | let A = valueOrErrorMessage(getString(bH(c)), "You don't have a duck staked") | |
1758 | + | let jn = valueOrElse(getString(bJ(A)), aJ) | |
1759 | + | let cf = split(value(jn), "_") | |
1760 | + | if ((cf[bm] != "L")) | |
1761 | + | then throw((("Duck location type is " + cf[bm]) + ", but should be L")) | |
1762 | + | else $Tuple2(cf[bn], A) | |
1763 | + | } | |
1764 | + | let P = jm._1 | |
1765 | + | let jo = jm._2 | |
1766 | + | let jp = value(assetInfo(fromBase58String(P))) | |
1767 | + | let jq = br(P) | |
1768 | + | let jr = valueOrErrorMessage(getInteger(jq), (("Land " + jp.name) + " is not staked")) | |
1769 | + | let js = valueOrErrorMessage(getString(bo(P)), (("NFT " + jp.name) + " is orphaned")) | |
1770 | + | if ((js != c)) | |
1714 | 1771 | then throw((aC + " is not yours")) | |
1715 | 1772 | else { | |
1716 | - | let | |
1717 | - | $Tuple4( | |
1718 | - | } | |
1719 | - | } | |
1720 | - | ||
1721 | - | ||
1722 | - | func | |
1773 | + | let jt = split(jp.description, "_") | |
1774 | + | $Tuple4(jo, P, jt, jr) | |
1775 | + | } | |
1776 | + | } | |
1777 | + | ||
1778 | + | ||
1779 | + | func ju (c,eF,jk,jl) = if ((0 > eF)) | |
1723 | 1780 | then throw("Negative amount") | |
1724 | 1781 | else { | |
1725 | - | let | |
1726 | - | let | |
1727 | - | let | |
1728 | - | let | |
1729 | - | if ((0 > | |
1730 | - | then throw(((("Saved timestamp is in future, saved = " + toString( | |
1782 | + | let fX = jj(c, jk, jl) | |
1783 | + | let dF = fX._3[dh] | |
1784 | + | let gD = gJ(fX._3[di]) | |
1785 | + | let gN = (lastBlock.timestamp - fX._4) | |
1786 | + | if ((0 > gN)) | |
1787 | + | then throw(((("Saved timestamp is in future, saved = " + toString(fX._4)) + ", current = ") + toString(lastBlock.timestamp))) | |
1731 | 1788 | else { | |
1732 | - | let | |
1733 | - | let | |
1734 | - | let | |
1735 | - | if (( | |
1736 | - | then throw(((("Not enough resources, available = " + toString( | |
1789 | + | let jf = dE(dF) | |
1790 | + | let jv = je(fX._2, jf) | |
1791 | + | let jw = fraction(gN, (jv * jf), a) | |
1792 | + | if ((eF > jw)) | |
1793 | + | then throw(((("Not enough resources, available = " + toString(jw)) + ", requested = ") + toString(eF))) | |
1737 | 1794 | else { | |
1738 | - | let | |
1739 | - | let | |
1740 | - | let | |
1741 | - | let | |
1742 | - | let | |
1743 | - | let | |
1744 | - | let | |
1745 | - | let | |
1746 | - | let | |
1747 | - | if (if (( | |
1748 | - | then ( | |
1795 | + | let jx = fraction((jw - eF), a, (jv * jf)) | |
1796 | + | let jy = (lastBlock.timestamp - jx) | |
1797 | + | let hW = (jf / cE) | |
1798 | + | let gV = gR(gD, (gN - jx), hW, jv) | |
1799 | + | let hV = bx(fX._2) | |
1800 | + | let hX = valueOrElse(getInteger(by(fX._2)), 0) | |
1801 | + | let hM = hU(hV, hW, hX) | |
1802 | + | let id = split(hM[bc], "_") | |
1803 | + | let gW = parseIntValue(id[bf]) | |
1804 | + | if (if ((jk == ew)) | |
1805 | + | then (eF > gW) | |
1749 | 1806 | else false) | |
1750 | - | then throw((("Only " + toString( | |
1807 | + | then throw((("Only " + toString(gW)) + " space left in warehouse")) | |
1751 | 1808 | else { | |
1752 | - | let | |
1753 | - | let | |
1754 | - | let | |
1755 | - | let | |
1756 | - | let | |
1757 | - | then $Tuple4( | |
1758 | - | else if (( | |
1759 | - | then $Tuple4( | |
1809 | + | let hI = bI(fX._1) | |
1810 | + | let il = hH(hI) | |
1811 | + | let gU = split(il[bi], "_") | |
1812 | + | let gT = split(hM[aZ], "_") | |
1813 | + | let jz = if ((jk == ew)) | |
1814 | + | then $Tuple4(gL(gT, gD, (gN - jx), hW, jv), il[bi], (parseIntValue(id[be]) + gV._2), (parseIntValue(id[bf]) - gV._2)) | |
1815 | + | else if ((jk == ex)) | |
1816 | + | then $Tuple4(hM[aZ], gL(gU, gD, (gN - jx), hW, jv), parseIntValue(id[be]), parseIntValue(id[bf])) | |
1760 | 1817 | else { | |
1761 | - | let | |
1762 | - | let | |
1763 | - | $Tuple4( | |
1818 | + | let jA = gS(gT, gU, gV, gW) | |
1819 | + | let jB = min([parseIntValue(id[bf]), gV._2]) | |
1820 | + | $Tuple4(jA._1, jA._2, (parseIntValue(id[be]) + jB), (parseIntValue(id[bf]) - jB)) | |
1764 | 1821 | } | |
1765 | - | let | |
1766 | - | let | |
1767 | - | let | |
1768 | - | let | |
1769 | - | $Tuple5([IntegerEntry( | |
1822 | + | let jC = jz._1 | |
1823 | + | let jD = jz._2 | |
1824 | + | let jE = jz._3 | |
1825 | + | let jF = jz._4 | |
1826 | + | $Tuple5([IntegerEntry(br(fX._2), jy), IntegerEntry(bu(aC, fX._2, c), jy)], hI, [il[bh], jD, il[bj], il[bk]], hV, [hM[aY], jC, hM[ba], hM[bb], makeString([id[bd], toString(jE), toString(jF), id[bg]], "_")]) | |
1770 | 1827 | } | |
1771 | 1828 | } | |
1772 | 1829 | } | |
1773 | 1830 | } | |
1774 | 1831 | ||
1775 | 1832 | ||
1776 | - | func | |
1777 | - | let | |
1778 | - | let | |
1779 | - | let | |
1780 | - | | |
1781 | - | } | |
1782 | - | ||
1783 | - | ||
1784 | - | func | |
1785 | - | let c = toString( | |
1786 | - | let | |
1787 | - | let | |
1788 | - | let | |
1789 | - | let | |
1790 | - | if (if (!( | |
1791 | - | then ( | |
1833 | + | func jG (c,P,jf,jk) = { | |
1834 | + | let jq = br(P) | |
1835 | + | let jr = value(getInteger(jq)) | |
1836 | + | let jw = (fraction((lastBlock.timestamp - jr), je(P, jf), a) * jf) | |
1837 | + | ju(c, jw, jk, P) | |
1838 | + | } | |
1839 | + | ||
1840 | + | ||
1841 | + | func jH (fb,iG,jI,P) = { | |
1842 | + | let c = toString(iG) | |
1843 | + | let fX = jj(c, ey, P) | |
1844 | + | let jf = dE(fX._3[dh]) | |
1845 | + | let jJ = by(fX._2) | |
1846 | + | let jK = valueOrElse(getInteger(jJ), 0) | |
1847 | + | if (if (!(ct)) | |
1848 | + | then (jK >= 3) | |
1792 | 1849 | else false) | |
1793 | 1850 | then throw("Currently max infrastructure level = 3") | |
1794 | 1851 | else { | |
1795 | - | let | |
1796 | - | let al = ( | |
1797 | - | if (if ( | |
1798 | - | then (al > | |
1852 | + | let jL = ((sqrt(jf, 0, 0, DOWN) / 5) + 2) | |
1853 | + | let al = (jK + 1) | |
1854 | + | if (if (ct) | |
1855 | + | then (al > jL) | |
1799 | 1856 | else false) | |
1800 | - | then throw(("Currently max infrastructure level = " + toString( | |
1857 | + | then throw(("Currently max infrastructure level = " + toString(jL))) | |
1801 | 1858 | else { | |
1802 | - | let | |
1803 | - | if (if (!( | |
1804 | - | then ( | |
1859 | + | let jM = fraction(eb, (jf * al), cE) | |
1860 | + | if (if (!(fb)) | |
1861 | + | then (jI != jM) | |
1805 | 1862 | else false) | |
1806 | - | then throw(("Payment attached should be " + toString( | |
1863 | + | then throw(("Payment attached should be " + toString(jM))) | |
1807 | 1864 | else { | |
1808 | - | let | |
1809 | - | let | |
1810 | - | let | |
1811 | - | let | |
1812 | - | let | |
1813 | - | let | |
1814 | - | let | |
1815 | - | let | |
1816 | - | let | |
1817 | - | let | |
1818 | - | let | |
1819 | - | let | |
1820 | - | $Tuple3(([IntegerEntry( | |
1865 | + | let hI = bI(fX._1) | |
1866 | + | let il = hH(hI) | |
1867 | + | let jN = split(il[bj], "_") | |
1868 | + | let jO = fraction(cz, (jf * al), cE) | |
1869 | + | let jP = makeString(fa(fb, jN, jO), "_") | |
1870 | + | let jQ = jG(c, fX._2, jf, ey) | |
1871 | + | let jR = jQ._5 | |
1872 | + | let jS = hJ(jR[aY]) | |
1873 | + | let jT = makeString([split(jR[aY], "_")[0], toString(al)], "_") | |
1874 | + | let jU = hJ(jT) | |
1875 | + | let id = split(jR[bc], "_") | |
1876 | + | let jV = makeString([id[bd], id[be], toString(((parseIntValue(id[bf]) + jU) - jS)), toString(jU)], "_") | |
1877 | + | $Tuple3(([IntegerEntry(jJ, al), IntegerEntry(er(fX._2, c), al), StringEntry(hI, makeString([il[bh], jQ._3[bi], jP, il[bk]], ":")), StringEntry(jQ._4, makeString([jT, jR[aZ], jR[ba], jR[bb], jV], ":"))] ++ jQ._1), al, jO) | |
1821 | 1878 | } | |
1822 | 1879 | } | |
1823 | 1880 | } | |
1824 | 1881 | } | |
1825 | 1882 | ||
1826 | 1883 | ||
1827 | - | func | |
1828 | - | let | |
1829 | - | let | |
1830 | - | let af = valueOrElse(getInteger(an, | |
1831 | - | let ak = (af + | |
1832 | - | let | |
1833 | - | let | |
1834 | - | $Tuple2([IntegerEntry( | |
1835 | - | } | |
1836 | - | ||
1837 | - | ||
1838 | - | func | |
1839 | - | let | |
1840 | - | let | |
1841 | - | let af = valueOrElse(getInteger(an, | |
1842 | - | let ak = (af + | |
1843 | - | let | |
1844 | - | let | |
1845 | - | $Tuple2([IntegerEntry( | |
1846 | - | } | |
1847 | - | ||
1848 | - | ||
1849 | - | func | |
1850 | - | let A = valueOrErrorMessage(getString( | |
1851 | - | let | |
1852 | - | let | |
1853 | - | if (!(isDefined( | |
1884 | + | func jW (A,jX) = { | |
1885 | + | let jY = D(A) | |
1886 | + | let jZ = C(A) | |
1887 | + | let af = valueOrElse(getInteger(an, jZ), 0) | |
1888 | + | let ak = (af + jX) | |
1889 | + | let ka = ai(valueOrElse(getInteger(an, jY), 0), ak) | |
1890 | + | let kb = E(A) | |
1891 | + | $Tuple2([IntegerEntry(jY, ka[0]), IntegerEntry(jZ, ak), IntegerEntry(kb, (valueOrElse(getInteger(kb), 0) + ka[1]))], ak) | |
1892 | + | } | |
1893 | + | ||
1894 | + | ||
1895 | + | func kc (c,jX) = { | |
1896 | + | let jY = H(c) | |
1897 | + | let jZ = G(c) | |
1898 | + | let af = valueOrElse(getInteger(an, jZ), 0) | |
1899 | + | let ak = (af + jX) | |
1900 | + | let ka = ai(valueOrElse(getInteger(an, jY), 0), ak) | |
1901 | + | let kb = I(c) | |
1902 | + | $Tuple2([IntegerEntry(jY, ka[0]), IntegerEntry(jZ, ak), IntegerEntry(kb, (valueOrElse(getInteger(kb), 0) + ka[1]))], ak) | |
1903 | + | } | |
1904 | + | ||
1905 | + | ||
1906 | + | func kd (c) = { | |
1907 | + | let A = valueOrErrorMessage(getString(bH(c)), "You don't have a duck staked") | |
1908 | + | let ke = bC(c) | |
1909 | + | let kf = getString(ke) | |
1910 | + | if (!(isDefined(kf))) | |
1854 | 1911 | then throw("You are not eligible for ONBOARD artifact") | |
1855 | 1912 | else { | |
1856 | - | let | |
1857 | - | let | |
1858 | - | if (isDefined( | |
1859 | - | then throw(("You already used your ONBOARD artifact on duck " + value( | |
1913 | + | let kg = bE(c) | |
1914 | + | let kh = getString(kg) | |
1915 | + | if (isDefined(kh)) | |
1916 | + | then throw(("You already used your ONBOARD artifact on duck " + value(kh))) | |
1860 | 1917 | else { | |
1861 | - | let | |
1862 | - | let | |
1863 | - | if (isDefined( | |
1864 | - | then throw(((("The duck " + A) + " already got points from ONBOARD artifact from user ") + value( | |
1865 | - | else ([StringEntry( | |
1918 | + | let ki = bD(A) | |
1919 | + | let kj = getString(ki) | |
1920 | + | if (isDefined(kj)) | |
1921 | + | then throw(((("The duck " + A) + " already got points from ONBOARD artifact from user ") + value(kj))) | |
1922 | + | else ([StringEntry(kg, A), StringEntry(ki, c)] ++ jW(A, ac)._1) | |
1866 | 1923 | } | |
1867 | 1924 | } | |
1868 | 1925 | } | |
1869 | 1926 | ||
1870 | 1927 | ||
1871 | - | func | |
1872 | - | let | |
1873 | - | let P = | |
1874 | - | let | |
1875 | - | let | |
1876 | - | if ((valueOrElse(getInteger( | |
1928 | + | func kk (c,jl) = { | |
1929 | + | let fX = jj(c, ey, jl) | |
1930 | + | let P = fX._2 | |
1931 | + | let jf = dE(fX._3[dh]) | |
1932 | + | let kl = bs(aE, P) | |
1933 | + | if ((valueOrElse(getInteger(kl), 0) > 0)) | |
1877 | 1934 | then throw("Presale artifact is already activated") | |
1878 | - | else if ((parseIntValue( | |
1935 | + | else if ((parseIntValue(fX._3[dg]) > el)) | |
1879 | 1936 | then throw((((aC + " ") + P) + " is not eligible for presale artifact")) | |
1880 | 1937 | else { | |
1881 | - | let | |
1882 | - | ((( | |
1938 | + | let jQ = jG(c, P, jf, ey) | |
1939 | + | (((jQ._1 :+ IntegerEntry(kl, jf)) :+ StringEntry(jQ._2, makeString(jQ._3, ":"))) :+ StringEntry(jQ._4, makeString(jQ._5, ":"))) | |
1883 | 1940 | } | |
1884 | 1941 | } | |
1885 | 1942 | ||
1886 | 1943 | ||
1887 | - | func | |
1888 | - | let | |
1889 | - | let | |
1944 | + | func km (A) = { | |
1945 | + | let ce = valueOrElse(getInteger(de, bP), 0) | |
1946 | + | let jn = split(valueOrElse(getString(bJ(A)), aJ), "_") | |
1890 | 1947 | let ax = lastBlock.timestamp | |
1891 | - | let | |
1892 | - | let | |
1893 | - | let | |
1894 | - | if (( | |
1948 | + | let cg = bY(de, ce) | |
1949 | + | let ca = cg[bU] | |
1950 | + | let cb = cg[bV] | |
1951 | + | if ((jn[bm] != "T")) | |
1895 | 1952 | then false | |
1896 | - | else if (if (if ((parseIntValue( | |
1897 | - | then ( | |
1953 | + | else if (if (if ((parseIntValue(jn[bl]) == ce)) | |
1954 | + | then (cb[bX] == "INPROGRESS") | |
1898 | 1955 | else false) | |
1899 | - | then (parseIntValue( | |
1956 | + | then (parseIntValue(ca[bW]) > ax) | |
1900 | 1957 | else false) | |
1901 | 1958 | then throw("Your duck is taking part in the tournament") | |
1902 | - | else | |
1903 | - | } | |
1904 | - | ||
1905 | - | ||
1906 | - | func | |
1907 | - | let | |
1959 | + | else dA(invoke(this, "exitTournamentInternal", [A], nil)) | |
1960 | + | } | |
1961 | + | ||
1962 | + | ||
1963 | + | func kn (A) = { | |
1964 | + | let jn = split(valueOrElse(getString(bJ(A)), aJ), "_") | |
1908 | 1965 | let ax = lastBlock.timestamp | |
1909 | - | if (( | |
1966 | + | if ((jn[bm] != "D")) | |
1910 | 1967 | then false | |
1911 | 1968 | else { | |
1912 | - | let | |
1913 | - | let | |
1914 | - | if (if ((ax > ( | |
1915 | - | then (3 > | |
1969 | + | let ci = parseIntValue(jn[bl]) | |
1970 | + | let cj = parseIntValue(jn[bn]) | |
1971 | + | if (if ((ax > (ci + aN))) | |
1972 | + | then (3 > cj) | |
1916 | 1973 | else false) | |
1917 | 1974 | then throw("Your duck is on delivery mission") | |
1918 | - | else dq(invoke(this, "exitDeliveryInternal", [A], nil)) | |
1919 | - | } | |
1920 | - | } | |
1921 | - | ||
1922 | - | ||
1923 | - | func kf (kg,al,kh,c,ki,kj) = { | |
1924 | - | let A = valueOrErrorMessage(getString(bG(c)), "You don't have a duck staked") | |
1925 | - | if (kb(A)) | |
1975 | + | else dA(invoke(this, "exitDeliveryInternal", [A], nil)) | |
1976 | + | } | |
1977 | + | } | |
1978 | + | ||
1979 | + | ||
1980 | + | func ko (A) = { | |
1981 | + | let jn = split(valueOrElse(getString(bJ(A)), aJ), "_") | |
1982 | + | let ax = lastBlock.timestamp | |
1983 | + | let ci = parseIntValue(jn[bl]) | |
1984 | + | let cj = parseIntValue(jn[bn]) | |
1985 | + | let js = valueOrErrorMessage(getString(bG(A)), "NFT duck is orphaned") | |
1986 | + | let kp = z(A) | |
1987 | + | let kq = getIntegerValue(kp) | |
1988 | + | let kr = if ((cj >= 3)) | |
1989 | + | then { | |
1990 | + | let ks = invoke(db, "sendDeliveryReward", [js], nil) | |
1991 | + | if ((ks == ks)) | |
1992 | + | then nil | |
1993 | + | else throw("Strict value is not equal to itself.") | |
1994 | + | } | |
1995 | + | else if ((ax > (ci + aN))) | |
1996 | + | then throw("Your duck is still on delivery mission") | |
1997 | + | else { | |
1998 | + | let kt = valueOrElse(getInteger(db, bO), 0) | |
1999 | + | let ku = invoke(db, "updateDeliveryLocked", [(kt - aM)], nil) | |
2000 | + | if ((ku == ku)) | |
2001 | + | then if ((0 >= kq)) | |
2002 | + | then nil | |
2003 | + | else [IntegerEntry(T(A), (ci + a))] | |
2004 | + | else throw("Strict value is not equal to itself.") | |
2005 | + | } | |
2006 | + | let kv = getIntegerValue(J(A)) | |
2007 | + | let kw = getStringValue(K(A)) | |
2008 | + | $Tuple4(kr, [IntegerEntry(kp, kv), StringEntry(bJ(A), kw)], kw, kv) | |
2009 | + | } | |
2010 | + | ||
2011 | + | ||
2012 | + | func kx (ky,al,kz,c,kA,kB) = { | |
2013 | + | let A = valueOrErrorMessage(getString(bH(c)), "You don't have a duck staked") | |
2014 | + | if (km(A)) | |
1926 | 2015 | then throw("mergeInternal_checkTournament") | |
1927 | - | else if ( | |
2016 | + | else if (kn(A)) | |
1928 | 2017 | then throw("mergeInternal_checkDelivery") | |
1929 | 2018 | else { | |
1930 | - | func | |
1931 | - | let | |
1932 | - | let | |
1933 | - | let | |
1934 | - | let | |
1935 | - | if (( | |
2019 | + | func kC (eO,P) = { | |
2020 | + | let jp = value(assetInfo(fromBase58String(P))) | |
2021 | + | let jq = br(P) | |
2022 | + | let jr = valueOrErrorMessage(getInteger(jq), (("NFT " + jp.name) + " is not staked")) | |
2023 | + | let js = valueOrErrorMessage(getString(bo(P)), (("NFT " + jp.name) + " is orphaned")) | |
2024 | + | if ((js != c)) | |
1936 | 2025 | then throw((aC + " is not yours")) | |
1937 | 2026 | else { | |
1938 | - | let | |
1939 | - | let | |
1940 | - | if (if (( | |
1941 | - | then ( | |
2027 | + | let jt = split(jp.description, "_") | |
2028 | + | let ds = jt[dj] | |
2029 | + | if (if ((eO._3 != "")) | |
2030 | + | then (eO._3 != ds) | |
1942 | 2031 | else false) | |
1943 | 2032 | then throw("Lands should be on the same continent to merge") | |
1944 | 2033 | else { | |
1945 | - | let | |
1946 | - | let | |
1947 | - | let | |
1948 | - | let | |
1949 | - | let | |
1950 | - | let | |
1951 | - | let | |
1952 | - | let | |
1953 | - | let | |
1954 | - | if (("S" == | |
2034 | + | let dF = jt[dh] | |
2035 | + | let kD = eO._1 | |
2036 | + | let gH = valueOrErrorMessage(indexOf(kD, dF), "You haven't passed all the lands needed") | |
2037 | + | let kE = (take(kD, gH) + drop(kD, (gH + 1))) | |
2038 | + | let jf = dE(dF) | |
2039 | + | let kF = (eO._2 + valueOrElse(getInteger(bs(aE, P)), 0)) | |
2040 | + | let hX = valueOrElse(getInteger(by(P)), 0) | |
2041 | + | let kG = { | |
2042 | + | let cx = dF | |
2043 | + | if (("S" == cx)) | |
1955 | 2044 | then 3 | |
1956 | - | else if (("M" == | |
2045 | + | else if (("M" == cx)) | |
1957 | 2046 | then 4 | |
1958 | - | else if (("L" == | |
2047 | + | else if (("L" == cx)) | |
1959 | 2048 | then 5 | |
1960 | - | else if (("XL" == | |
2049 | + | else if (("XL" == cx)) | |
1961 | 2050 | then 6 | |
1962 | 2051 | else throw("Only S, M, L, XL can merge") | |
1963 | 2052 | } | |
1964 | - | if (( | |
2053 | + | if ((hX != kG)) | |
1965 | 2054 | then throw("All lands should be maxed to merge") | |
1966 | 2055 | else { | |
1967 | - | let | |
1968 | - | let | |
1969 | - | let | |
1970 | - | if ((0 > | |
1971 | - | then throw(((("Saved timestamp is in future, saved = " + toString( | |
2056 | + | let eq = jt[dg] | |
2057 | + | let gD = gJ(jt[di]) | |
2058 | + | let gN = (lastBlock.timestamp - jr) | |
2059 | + | if ((0 > gN)) | |
2060 | + | then throw(((("Saved timestamp is in future, saved = " + toString(jr)) + ", current = ") + toString(lastBlock.timestamp))) | |
1972 | 2061 | else { | |
1973 | - | let | |
1974 | - | let | |
1975 | - | let | |
1976 | - | let | |
1977 | - | let | |
1978 | - | let | |
1979 | - | let | |
1980 | - | let | |
1981 | - | if (!(isDefined( | |
2062 | + | let jv = je(P, jf) | |
2063 | + | let hW = (jf / cE) | |
2064 | + | let jD = gL(split(eO._4, "_"), gD, gN, hW, jv) | |
2065 | + | let eY = gB(eO._6, gD, hW, -1) | |
2066 | + | let kH = gB(eO._10, gD, hW, -1) | |
2067 | + | let hr = gB(eO._9, gD, hW, 1) | |
2068 | + | let kI = eO._7 | |
2069 | + | let cZ = indexOf(kI, P) | |
2070 | + | if (!(isDefined(cZ))) | |
1982 | 2071 | then throw(("Your staked lands don't contain " + P)) | |
1983 | 2072 | else { | |
1984 | - | let | |
1985 | - | let | |
1986 | - | $Tuple10( | |
1987 | - | then [DeleteEntry( | |
1988 | - | else nil)), | |
2073 | + | let kJ = bq(P) | |
2074 | + | let kK = valueOrElse(getString(kJ), "") | |
2075 | + | $Tuple10(kE, kF, ds, jD, ((((((((((((eO._5 :+ DeleteEntry(br(P))) :+ DeleteEntry(bu(aC, P, c))) :+ DeleteEntry(ep(eq))) :+ DeleteEntry(bo(P))) :+ DeleteEntry(by(P))) :+ DeleteEntry(er(P, c))) :+ DeleteEntry(bs(aE, P))) :+ DeleteEntry(es(eq))) :+ DeleteEntry(bx(P))) :+ DeleteEntry(kJ)) :+ Burn(fromBase58String(P), 1)) ++ (if ((kK != "")) | |
2076 | + | then [DeleteEntry(en(kK))] | |
2077 | + | else nil)), eY, removeByIndex(kI, value(cZ)), (eO._8 + jf), hr, kH) | |
1989 | 2078 | } | |
1990 | 2079 | } | |
1991 | 2080 | } | |
1992 | 2081 | } | |
1993 | 2082 | } | |
1994 | 2083 | } | |
1995 | 2084 | ||
1996 | - | let | |
1997 | - | let | |
1998 | - | let | |
1999 | - | let | |
2000 | - | let | |
2001 | - | let | |
2002 | - | then split_51C(value( | |
2085 | + | let hI = bI(A) | |
2086 | + | let il = hH(hI) | |
2087 | + | let gC = split(valueOrElse(getString(dq()), "0_0_0_0_0_0"), "_") | |
2088 | + | let kL = dt(c) | |
2089 | + | let kM = getString(kL) | |
2090 | + | let kN = if (isDefined(kM)) | |
2091 | + | then split_51C(value(kM), "_") | |
2003 | 2092 | else nil | |
2004 | - | let | |
2005 | - | let | |
2006 | - | let | |
2007 | - | let | |
2008 | - | let | |
2009 | - | let | |
2010 | - | func | |
2011 | - | then | |
2012 | - | else | |
2013 | - | ||
2014 | - | func | |
2015 | - | then | |
2093 | + | let kO = split(value(assetInfo(fromBase58String(kA[0]))).description, "_")[dj] | |
2094 | + | let kP = split(valueOrElse(getString(dr(kO)), "0_0_0_0_0_0"), "_") | |
2095 | + | let eZ = { | |
2096 | + | let eQ = kA | |
2097 | + | let eR = size(eQ) | |
2098 | + | let eS = $Tuple10(kz, 0, "", il[bi], nil, gC, kN, 0, split("0_0_0_0_0_0", "_"), kP) | |
2099 | + | func eT (eU,eV) = if ((eV >= eR)) | |
2100 | + | then eU | |
2101 | + | else kC(eU, eQ[eV]) | |
2102 | + | ||
2103 | + | func eW (eU,eV) = if ((eV >= eR)) | |
2104 | + | then eU | |
2016 | 2105 | else throw("List size exceeds 5") | |
2017 | 2106 | ||
2018 | - | | |
2107 | + | eW(eT(eT(eT(eT(eT(eS, 0), 1), 2), 3), 4), 5) | |
2019 | 2108 | } | |
2020 | - | let | |
2021 | - | let | |
2022 | - | let | |
2023 | - | let | |
2024 | - | let | |
2025 | - | let | |
2026 | - | let | |
2027 | - | let | |
2028 | - | let | |
2029 | - | let | |
2030 | - | let | |
2031 | - | $Tuple2(((((((((((((((( | |
2032 | - | then StringEntry( | |
2033 | - | else DeleteEntry( | |
2109 | + | let ds = eZ._3 | |
2110 | + | let hl = valueOrErrorMessage(indexOf(aP, ds), ("Unknown continent: " + ds)) | |
2111 | + | let gK = hq(eZ._9, (dE(ky) / cE)) | |
2112 | + | let iJ = valueOrElse(getInteger(em()), (el + 1)) | |
2113 | + | let kQ = toString(iJ) | |
2114 | + | let iK = Issue(eD(kQ, ky), makeString([kQ, ky, gK, ds], "_"), 1, 0, false) | |
2115 | + | let bp = calculateAssetId(iK) | |
2116 | + | let kR = toBase58String(bp) | |
2117 | + | let jP = makeString(fa((kB > 0), split(il[bj], "_"), kB), "_") | |
2118 | + | let kS = du(c) | |
2119 | + | let kT = valueOrElse(getInteger(kS), 0) | |
2120 | + | $Tuple2((((((((((((((((eZ._5 :+ (if ((size(eZ._7) > 0)) | |
2121 | + | then StringEntry(kL, makeString_11C(eZ._7, "_")) | |
2122 | + | else DeleteEntry(kL))) :+ IntegerEntry(kS, if ((eZ._8 > kT)) | |
2034 | 2123 | then 0 | |
2035 | - | else ( | |
2124 | + | else (kT - eZ._8))) :+ IntegerEntry(em(), (iJ + 1))) :+ iK) :+ StringEntry(ep(kQ), kR)) :+ StringEntry(bo(kR), c)) :+ StringEntry(es(kQ), c)) :+ IntegerEntry(bs(aE, kR), eZ._2)) :+ IntegerEntry(by(kR), al)) :+ IntegerEntry(er(kR, c), al)) :+ StringEntry(hI, makeString([il[bh], eZ._4, jP, il[bk]], ":"))) :+ StringEntry(dq(), makeString(eZ._6, "_"))) :+ StringEntry(dr(ds), makeString(eZ._10, "_"))) :+ StringEntry(bJ(A), makeString([ds, "L", kR], "_"))) :+ ScriptTransfer(addressFromStringValue(c), 1, bp)), kR) | |
2036 | 2125 | } | |
2037 | 2126 | } | |
2038 | 2127 | ||
2039 | 2128 | ||
2040 | - | func | |
2041 | - | ||
2042 | - | ||
2043 | - | func | |
2044 | - | ||
2045 | - | ||
2046 | - | func | |
2047 | - | ||
2048 | - | ||
2049 | - | func | |
2050 | - | ||
2051 | - | ||
2052 | - | func | |
2053 | - | let | |
2054 | - | if ((4 == | |
2055 | - | then | |
2056 | - | else if ((3 == | |
2057 | - | then | |
2058 | - | else if ((5 == | |
2059 | - | then | |
2060 | - | else if ((2 == | |
2061 | - | then | |
2129 | + | func kU (c,kA) = kx("M", 3, "SSSS", c, kA, 0) | |
2130 | + | ||
2131 | + | ||
2132 | + | func kV (c,kA) = kx("L", 4, "SMM", c, kA, (cz * 4)) | |
2133 | + | ||
2134 | + | ||
2135 | + | func kW (c,kA) = kx("XL", 5, "SSSML", c, kA, (cz * 47)) | |
2136 | + | ||
2137 | + | ||
2138 | + | func kX (c,kA) = kx("XXL", 6, "LXL", c, kA, (cz * 54)) | |
2139 | + | ||
2140 | + | ||
2141 | + | func kY (c,kA) = { | |
2142 | + | let cx = size(kA) | |
2143 | + | if ((4 == cx)) | |
2144 | + | then kU(c, kA) | |
2145 | + | else if ((3 == cx)) | |
2146 | + | then kV(c, kA) | |
2147 | + | else if ((5 == cx)) | |
2148 | + | then kW(c, kA) | |
2149 | + | else if ((2 == cx)) | |
2150 | + | then kX(c, kA) | |
2062 | 2151 | else throw("Unknown merge") | |
2063 | 2152 | } | |
2064 | 2153 | ||
2065 | 2154 | ||
2066 | - | func | |
2067 | - | then valueOrElse(getBoolean( | |
2155 | + | func kZ (gH) = if (if ((gH.originCaller != da)) | |
2156 | + | then valueOrElse(getBoolean(dH()), false) | |
2068 | 2157 | else false) | |
2069 | 2158 | then throw("Contracts are under maintenance") | |
2070 | - | else StringEntry( | |
2071 | - | ||
2072 | - | ||
2073 | - | @Callable( | |
2074 | - | func constructorV1 ( | |
2159 | + | else StringEntry(dI(toString(gH.originCaller)), toBase58String(gH.transactionId)) | |
2160 | + | ||
2161 | + | ||
2162 | + | @Callable(gH) | |
2163 | + | func constructorV1 (la) = if ((gH.caller != this)) | |
2075 | 2164 | then throw("Permission denied") | |
2076 | - | else [StringEntry( | |
2077 | - | ||
2078 | - | ||
2079 | - | ||
2080 | - | @Callable( | |
2081 | - | func setBlocked ( | |
2165 | + | else [StringEntry(cU(), la)] | |
2166 | + | ||
2167 | + | ||
2168 | + | ||
2169 | + | @Callable(gH) | |
2170 | + | func setBlocked (lb) = if ((gH.caller != this)) | |
2082 | 2171 | then throw("permission denied") | |
2083 | - | else [BooleanEntry( | |
2084 | - | ||
2085 | - | ||
2086 | - | ||
2087 | - | @Callable( | |
2172 | + | else [BooleanEntry(dH(), lb)] | |
2173 | + | ||
2174 | + | ||
2175 | + | ||
2176 | + | @Callable(gH) | |
2088 | 2177 | func stakeLand () = { | |
2089 | - | let | |
2090 | - | if ((size( | |
2178 | + | let lc = kZ(gH) | |
2179 | + | if ((size(gH.payments) != 1)) | |
2091 | 2180 | then throw("Exactly one payment required") | |
2092 | 2181 | else { | |
2093 | - | let | |
2094 | - | let | |
2095 | - | let | |
2096 | - | if (( | |
2182 | + | let ld = value(gH.payments[0]) | |
2183 | + | let bp = value(ld.assetId) | |
2184 | + | let cL = toString(gH.caller) | |
2185 | + | if ((ld.amount != 1)) | |
2097 | 2186 | then throw((("NFT " + aC) + " token should be attached as payment")) | |
2098 | 2187 | else { | |
2099 | - | let | |
2100 | - | if (( | |
2188 | + | let jp = value(assetInfo(bp)) | |
2189 | + | if ((jp.issuer != this)) | |
2101 | 2190 | then throw("Unknown issuer of token") | |
2102 | - | else if (!(contains( | |
2191 | + | else if (!(contains(jp.name, aC))) | |
2103 | 2192 | then throw((("Only NFT " + aC) + " tokens are accepted")) | |
2104 | 2193 | else { | |
2105 | - | let | |
2106 | - | let | |
2107 | - | then dropRight( | |
2108 | - | else if (contains( | |
2109 | - | then dropRight( | |
2110 | - | else dropRight( | |
2111 | - | if (!(isDefined(parseInt( | |
2112 | - | then throw(("Cannot parse land number from " + | |
2194 | + | let le = drop(jp.name, 4) | |
2195 | + | let eq = if (contains(le, "XXL")) | |
2196 | + | then dropRight(le, 3) | |
2197 | + | else if (contains(le, "XL")) | |
2198 | + | then dropRight(le, 2) | |
2199 | + | else dropRight(le, 1) | |
2200 | + | if (!(isDefined(parseInt(eq)))) | |
2201 | + | then throw(("Cannot parse land number from " + jp.name)) | |
2113 | 2202 | else { | |
2114 | - | let P = toBase58String( | |
2115 | - | let | |
2116 | - | if (isDefined(getInteger( | |
2117 | - | then throw((("NFT " + | |
2203 | + | let P = toBase58String(bp) | |
2204 | + | let jq = br(P) | |
2205 | + | if (isDefined(getInteger(jq))) | |
2206 | + | then throw((("NFT " + jp.name) + " is already staked")) | |
2118 | 2207 | else { | |
2119 | - | let | |
2120 | - | let | |
2121 | - | let | |
2122 | - | let | |
2123 | - | let | |
2124 | - | let | |
2125 | - | let | |
2126 | - | let | |
2127 | - | let | |
2128 | - | let | |
2129 | - | let | |
2130 | - | then split_51C(value( | |
2208 | + | let jt = split(jp.description, "_") | |
2209 | + | let gD = gJ(jt[di]) | |
2210 | + | let jf = dE(jt[dh]) | |
2211 | + | let hW = (jf / cE) | |
2212 | + | let eY = gI(gD, hW, 1) | |
2213 | + | let lf = dr(jt[dj]) | |
2214 | + | let kP = split(valueOrElse(getString(lf), "0_0_0_0_0_0"), "_") | |
2215 | + | let lg = makeString(gB(kP, gD, hW, 1), "_") | |
2216 | + | let kL = dt(cL) | |
2217 | + | let kM = getString(kL) | |
2218 | + | let kI = if (isDefined(kM)) | |
2219 | + | then split_51C(value(kM), "_") | |
2131 | 2220 | else nil | |
2132 | - | if (containsElement( | |
2221 | + | if (containsElement(kI, P)) | |
2133 | 2222 | then throw(("Your staked lands already contain " + P)) | |
2134 | - | else if ((size( | |
2223 | + | else if ((size(kI) >= aG)) | |
2135 | 2224 | then throw((("Your already staked max (" + toString(aG)) + ") lands")) | |
2136 | 2225 | else { | |
2137 | - | let | |
2138 | - | let | |
2139 | - | let | |
2140 | - | let | |
2141 | - | $Tuple2([IntegerEntry( | |
2226 | + | let hX = valueOrElse(getInteger(by(P)), 0) | |
2227 | + | let kS = du(cL) | |
2228 | + | let lh = valueOrElse(getInteger(kS), 0) | |
2229 | + | let li = invoke(dd, "onStakeUnstakeLand", [cL], nil) | |
2230 | + | $Tuple2([IntegerEntry(jq, lastBlock.timestamp), IntegerEntry(bu(aC, P, cL), lastBlock.timestamp), StringEntry(kL, makeString_11C((kI :+ P), "_")), IntegerEntry(kS, (lh + jf)), StringEntry(bo(P), cL), StringEntry(es(eq), cL), IntegerEntry(er(P, cL), hX), StringEntry(dq(), eY), StringEntry(lf, lg), lc], li) | |
2142 | 2231 | } | |
2143 | 2232 | } | |
2144 | 2233 | } | |
2145 | 2234 | } | |
2146 | 2235 | } | |
2147 | 2236 | } | |
2148 | 2237 | } | |
2149 | 2238 | ||
2150 | 2239 | ||
2151 | 2240 | ||
2152 | - | @Callable( | |
2153 | - | func unstakeLand ( | |
2154 | - | let | |
2155 | - | if ((size( | |
2241 | + | @Callable(gH) | |
2242 | + | func unstakeLand (jl) = { | |
2243 | + | let lc = kZ(gH) | |
2244 | + | if ((size(gH.payments) != 0)) | |
2156 | 2245 | then throw("No payments required") | |
2157 | 2246 | else { | |
2158 | - | let c = toString( | |
2159 | - | let | |
2160 | - | let P = | |
2161 | - | let | |
2162 | - | let | |
2163 | - | let | |
2164 | - | let | |
2165 | - | let | |
2166 | - | let | |
2167 | - | let | |
2168 | - | let | |
2169 | - | let | |
2170 | - | let | |
2171 | - | let | |
2172 | - | let | |
2173 | - | if (!(isDefined( | |
2247 | + | let c = toString(gH.caller) | |
2248 | + | let fX = jj(c, ex, jl) | |
2249 | + | let P = fX._2 | |
2250 | + | let jt = fX._3 | |
2251 | + | let kL = dt(c) | |
2252 | + | let gD = gJ(jt[di]) | |
2253 | + | let jf = dE(jt[dh]) | |
2254 | + | let hW = (jf / cE) | |
2255 | + | let eY = gI(gD, hW, -1) | |
2256 | + | let lf = dr(jt[dj]) | |
2257 | + | let kP = split(valueOrElse(getString(lf), "0_0_0_0_0_0"), "_") | |
2258 | + | let lg = makeString(gB(kP, gD, hW, -1), "_") | |
2259 | + | let jQ = jG(c, P, jf, ex) | |
2260 | + | let kI = split_51C(valueOrElse(getString(kL), ""), "_") | |
2261 | + | let cZ = indexOf(kI, P) | |
2262 | + | if (!(isDefined(cZ))) | |
2174 | 2263 | then throw(("Your staked lands don't contain " + P)) | |
2175 | 2264 | else { | |
2176 | 2265 | let ax = lastBlock.timestamp | |
2177 | - | let | |
2178 | - | if (( | |
2179 | - | then throw(("Your gWL are taking part in voting, cannot unstake until " + toString( | |
2266 | + | let lj = valueOrElse(getInteger(dc, bK(c)), 0) | |
2267 | + | if ((lj >= ax)) | |
2268 | + | then throw(("Your gWL are taking part in voting, cannot unstake until " + toString(lj))) | |
2180 | 2269 | else { | |
2181 | - | let | |
2182 | - | if (( | |
2183 | - | then throw(("Your staked lands took part in arbitrage, cannot unstake until " + toString( | |
2270 | + | let lk = (valueOrElse(getInteger(dd, b(c)), 0) + cA) | |
2271 | + | if ((lk > ax)) | |
2272 | + | then throw(("Your staked lands took part in arbitrage, cannot unstake until " + toString(lk))) | |
2184 | 2273 | else { | |
2185 | - | let | |
2186 | - | let | |
2187 | - | let | |
2274 | + | let kS = du(c) | |
2275 | + | let kT = valueOrElse(getInteger(kS), 0) | |
2276 | + | let ll = if ((jf > kT)) | |
2188 | 2277 | then 0 | |
2189 | - | else ( | |
2190 | - | let | |
2191 | - | $Tuple2([ScriptTransfer( | |
2192 | - | then StringEntry( | |
2193 | - | else DeleteEntry( | |
2278 | + | else (kT - jf) | |
2279 | + | let li = invoke(dd, "onStakeUnstakeLand", [c], nil) | |
2280 | + | $Tuple2([ScriptTransfer(gH.caller, 1, fromBase58String(P)), DeleteEntry(br(P)), DeleteEntry(bu(aC, P, c)), StringEntry(dq(), eY), StringEntry(lf, lg), StringEntry(jQ._2, makeString(jQ._3, ":")), if ((size(kI) > 1)) | |
2281 | + | then StringEntry(kL, makeString_11C(removeByIndex(kI, value(cZ)), "_")) | |
2282 | + | else DeleteEntry(kL), IntegerEntry(kS, ll), lc], li) | |
2194 | 2283 | } | |
2195 | 2284 | } | |
2196 | 2285 | } | |
2197 | 2286 | } | |
2198 | 2287 | } | |
2199 | 2288 | ||
2200 | 2289 | ||
2201 | 2290 | ||
2202 | - | @Callable( | |
2291 | + | @Callable(gH) | |
2203 | 2292 | func stakeDuck () = { | |
2204 | - | let | |
2205 | - | if ((size( | |
2293 | + | let lc = kZ(gH) | |
2294 | + | if ((size(gH.payments) != 1)) | |
2206 | 2295 | then throw("Exactly one payment required") | |
2207 | 2296 | else { | |
2208 | - | let | |
2209 | - | let | |
2210 | - | let | |
2211 | - | if (( | |
2297 | + | let ld = value(gH.payments[0]) | |
2298 | + | let bp = value(ld.assetId) | |
2299 | + | let cL = toString(gH.caller) | |
2300 | + | if ((ld.amount != 1)) | |
2212 | 2301 | then throw((("NFT " + aD) + " token should be attached as payment")) | |
2213 | 2302 | else { | |
2214 | - | let | |
2215 | - | if (if (( | |
2216 | - | then ( | |
2303 | + | let jp = value(assetInfo(bp)) | |
2304 | + | if (if ((jp.issuer != dU)) | |
2305 | + | then (jp.issuer != dV) | |
2217 | 2306 | else false) | |
2218 | 2307 | then throw((("Unknown issuer of " + aD) + " token")) | |
2219 | - | else if (!(contains( | |
2308 | + | else if (!(contains(jp.name, aD))) | |
2220 | 2309 | then throw((("Only NFT " + aD) + " tokens are accepted")) | |
2221 | 2310 | else { | |
2222 | - | let | |
2223 | - | let | |
2224 | - | if (isDefined(getInteger( | |
2225 | - | then throw((("NFT " + | |
2226 | - | else if (isDefined(getString( | |
2227 | - | then throw(("You already staked one duck: " + | |
2311 | + | let lm = toBase58String(bp) | |
2312 | + | let jq = br(lm) | |
2313 | + | if (isDefined(getInteger(jq))) | |
2314 | + | then throw((("NFT " + jp.name) + " is already staked")) | |
2315 | + | else if (isDefined(getString(bH(cL)))) | |
2316 | + | then throw(("You already staked one duck: " + jp.name)) | |
2228 | 2317 | else { | |
2229 | - | let | |
2230 | - | let | |
2231 | - | let | |
2232 | - | let | |
2233 | - | let | |
2234 | - | let | |
2235 | - | let | |
2236 | - | ([IntegerEntry( | |
2318 | + | let ln = bJ(lm) | |
2319 | + | let cd = getString(ln) | |
2320 | + | let hI = bI(lm) | |
2321 | + | let lo = getString(hI) | |
2322 | + | let iY = z(lm) | |
2323 | + | let iZ = ag(valueOrElse(getInteger(D(lm)), 0)) | |
2324 | + | let kq = valueOrElse(getInteger(iY), iZ) | |
2325 | + | ([IntegerEntry(jq, lastBlock.timestamp), IntegerEntry(bu(aD, toBase58String(bp), cL), lastBlock.timestamp), StringEntry(bG(lm), cL), StringEntry(bH(cL), lm)] ++ (if (isDefined(cd)) | |
2237 | 2326 | then nil | |
2238 | - | else ([StringEntry( | |
2327 | + | else ([StringEntry(ln, aJ)] ++ (if (isDefined(lo)) | |
2239 | 2328 | then nil | |
2240 | - | else (([StringEntry( | |
2329 | + | else (([StringEntry(hI, "0:0_0_0_0_0_0:0_0_0_0_0_0:")] :+ IntegerEntry(iY, kq)) :+ lc))))) | |
2241 | 2330 | } | |
2242 | 2331 | } | |
2243 | 2332 | } | |
2244 | 2333 | } | |
2245 | 2334 | } | |
2246 | 2335 | ||
2247 | 2336 | ||
2248 | 2337 | ||
2249 | - | @Callable( | |
2250 | - | func unstakeDuck ( | |
2251 | - | let | |
2252 | - | if ((size( | |
2338 | + | @Callable(gH) | |
2339 | + | func unstakeDuck (lm) = { | |
2340 | + | let lc = kZ(gH) | |
2341 | + | if ((size(gH.payments) != 0)) | |
2253 | 2342 | then throw("No payments required") | |
2254 | 2343 | else { | |
2255 | - | let | |
2256 | - | let | |
2257 | - | let | |
2258 | - | let | |
2259 | - | if (!(isDefined(getInteger( | |
2260 | - | then throw((("NFT " + | |
2261 | - | else if (!(isDefined(getString( | |
2262 | - | then throw((("The duck " + | |
2344 | + | let bp = fromBase58String(lm) | |
2345 | + | let cL = toString(gH.caller) | |
2346 | + | let jp = value(assetInfo(bp)) | |
2347 | + | let jq = br(lm) | |
2348 | + | if (!(isDefined(getInteger(jq)))) | |
2349 | + | then throw((("NFT " + jp.name) + " is not staked")) | |
2350 | + | else if (!(isDefined(getString(bH(cL))))) | |
2351 | + | then throw((("The duck " + jp.name) + " is not staked")) | |
2263 | 2352 | else { | |
2264 | - | let | |
2265 | - | if (( | |
2353 | + | let js = valueOrErrorMessage(getString(bG(lm)), (("NFT " + jp.name) + " is orphaned")) | |
2354 | + | if ((js != cL)) | |
2266 | 2355 | then throw("Staked NFT is not yours") | |
2267 | - | else if ( | |
2356 | + | else if (km(lm)) | |
2268 | 2357 | then throw("unstakeDuck_checkTournament") | |
2269 | - | else if ( | |
2358 | + | else if (kn(lm)) | |
2270 | 2359 | then throw("unstakeDuck_checkDelivery") | |
2271 | 2360 | else { | |
2272 | - | let | |
2273 | - | let | |
2274 | - | let as = valueOrElse(getInteger( | |
2275 | - | if (( | |
2276 | - | then throw((("Please heal your duck to " + toString( | |
2277 | - | else [ScriptTransfer( | |
2361 | + | let iY = z(lm) | |
2362 | + | let iZ = ag(valueOrElse(getInteger(D(lm)), 0)) | |
2363 | + | let as = valueOrElse(getInteger(iY), iZ) | |
2364 | + | if ((iZ > as)) | |
2365 | + | then throw((("Please heal your duck to " + toString(iZ)) + "hp before unstaking")) | |
2366 | + | else [ScriptTransfer(gH.caller, 1, bp), DeleteEntry(jq), DeleteEntry(iY), DeleteEntry(bJ(lm)), DeleteEntry(bG(lm)), DeleteEntry(bu(aD, lm, cL)), DeleteEntry(bH(cL)), lc] | |
2278 | 2367 | } | |
2279 | 2368 | } | |
2280 | 2369 | } | |
2281 | 2370 | } | |
2282 | 2371 | ||
2283 | 2372 | ||
2284 | 2373 | ||
2285 | - | @Callable( | |
2286 | - | func claimRes ( | |
2287 | - | let | |
2288 | - | if ((size( | |
2374 | + | @Callable(gH) | |
2375 | + | func claimRes (eF,lp) = { | |
2376 | + | let lc = kZ(gH) | |
2377 | + | if ((size(gH.payments) != 0)) | |
2289 | 2378 | then throw("No payments required") | |
2290 | 2379 | else { | |
2291 | - | let c = toString( | |
2292 | - | let | |
2293 | - | let A = valueOrErrorMessage(getString( | |
2294 | - | $Tuple2((((( | |
2295 | - | } | |
2296 | - | } | |
2297 | - | ||
2298 | - | ||
2299 | - | ||
2300 | - | @Callable( | |
2301 | - | func claimResToWH ( | |
2302 | - | let | |
2303 | - | if ((size( | |
2380 | + | let c = toString(gH.originCaller) | |
2381 | + | let fg = ju(c, eF, ex, lp) | |
2382 | + | let A = valueOrErrorMessage(getString(bH(c)), "You don't have a duck staked") | |
2383 | + | $Tuple2(((((fg._1 ++ jW(A, fraction(U, eF, cD))._1) :+ StringEntry(fg._2, makeString(fg._3, ":"))) :+ StringEntry(fg._4, makeString(fg._5, ":"))) :+ lc), fg._3[bi]) | |
2384 | + | } | |
2385 | + | } | |
2386 | + | ||
2387 | + | ||
2388 | + | ||
2389 | + | @Callable(gH) | |
2390 | + | func claimResToWH (eF,lp) = { | |
2391 | + | let lc = kZ(gH) | |
2392 | + | if ((size(gH.payments) != 0)) | |
2304 | 2393 | then throw("No payments required") | |
2305 | 2394 | else { | |
2306 | - | let c = toString( | |
2307 | - | let | |
2308 | - | $Tuple2((((( | |
2309 | - | } | |
2310 | - | } | |
2311 | - | ||
2312 | - | ||
2313 | - | ||
2314 | - | @Callable( | |
2315 | - | func flight ( | |
2316 | - | let | |
2317 | - | if ((size( | |
2395 | + | let c = toString(gH.originCaller) | |
2396 | + | let fg = ju(c, eF, ew, lp) | |
2397 | + | $Tuple2(((((fg._1 ++ kc(c, fraction(U, eF, cD))._1) :+ StringEntry(fg._2, makeString(fg._3, ":"))) :+ StringEntry(fg._4, makeString(fg._5, ":"))) :+ lc), fg._5[aZ]) | |
2398 | + | } | |
2399 | + | } | |
2400 | + | ||
2401 | + | ||
2402 | + | ||
2403 | + | @Callable(gH) | |
2404 | + | func flight (iN,iO) = { | |
2405 | + | let lc = kZ(gH) | |
2406 | + | if ((size(gH.payments) != 0)) | |
2318 | 2407 | then throw("No payments required") | |
2319 | 2408 | else { | |
2320 | - | let | |
2321 | - | let | |
2322 | - | let | |
2323 | - | let A = | |
2324 | - | let | |
2325 | - | let | |
2326 | - | let | |
2327 | - | if (( | |
2409 | + | let bL = toString(gH.caller) | |
2410 | + | let hm = iM(bL, iN, iO) | |
2411 | + | let iS = hm._1 | |
2412 | + | let A = hm._2 | |
2413 | + | let ln = bJ(A) | |
2414 | + | let jn = valueOrElse(getString(ln), aJ) | |
2415 | + | let iU = hm._4 | |
2416 | + | if ((iU == jn)) | |
2328 | 2417 | then throw("You can't fly to the same location") | |
2329 | 2418 | else { | |
2330 | - | let kZ = split(iJ, "_") | |
2331 | - | let la = (kZ[bl] == "T") | |
2332 | - | let gj = F(A) | |
2333 | - | let lb = valueOrElse(getString(gj), ",;,_,;,_,;,_,;,_,;,_,;,") | |
2334 | - | let lc = eW(lb, hb._5) | |
2335 | - | let ld = lc._1 | |
2336 | - | let le = lc._2 | |
2337 | - | let lf = if (!(cb(cU, jc))) | |
2338 | - | then if (la) | |
2339 | - | then throw(((("Cheat attempt: oldLoc=" + jc) + ", newLoc=") + iJ)) | |
2340 | - | else if ((iH > 0)) | |
2341 | - | then iJ | |
2342 | - | else jc | |
2343 | - | else if (!(cb(cU, iJ))) | |
2344 | - | then throw("Your duck is taking part in the tournament") | |
2345 | - | else { | |
2346 | - | let lg = parseIntValue(kZ[bm]) | |
2347 | - | let lh = split(jc, "_") | |
2348 | - | let cd = valueOrElse(getInteger(cU, bO), 0) | |
2349 | - | if ((lg != (parseIntValue(lh[bm]) + 1))) | |
2350 | - | then throw(((("Cheat attempt: oldLoc=" + jc) + ", newLoc=") + iJ)) | |
2351 | - | else if ((iH > 0)) | |
2352 | - | then { | |
2353 | - | let li = valueOrElse(getInteger(cU, bS(cd, A)), 0) | |
2354 | - | let lj = if ((lg > li)) | |
2355 | - | then invoke(cU, "saveDuckResult", [A, lg], nil) | |
2356 | - | else unit | |
2357 | - | if ((lj == lj)) | |
2358 | - | then iJ | |
2359 | - | else throw("Strict value is not equal to itself.") | |
2419 | + | let cr = split(iU, "_") | |
2420 | + | let lq = (cr[bm] == "T") | |
2421 | + | let lr = (cr[bm] == "D") | |
2422 | + | let gu = F(A) | |
2423 | + | let ls = valueOrElse(getString(gu), ",;,_,;,_,;,_,;,_,;,_,;,") | |
2424 | + | let lt = fh(ls, hm._5) | |
2425 | + | let lu = lt._1 | |
2426 | + | let lv = lt._2 | |
2427 | + | let lw = if (cm(de, jn)) | |
2428 | + | then if (!(ck(iU))) | |
2429 | + | then cp(jn, iU) | |
2430 | + | else if ((iS > 0)) | |
2431 | + | then $Tuple2(iU, iS) | |
2432 | + | else $Tuple2(jn, 0) | |
2433 | + | else if (cc(de, jn)) | |
2434 | + | then if (!(cc(de, iU))) | |
2435 | + | then throw("Your duck is taking part in the tournament") | |
2436 | + | else { | |
2437 | + | let lx = parseIntValue(cr[bn]) | |
2438 | + | let ly = split(jn, "_") | |
2439 | + | let ce = valueOrElse(getInteger(de, bP), 0) | |
2440 | + | if ((lx != (parseIntValue(ly[bn]) + 1))) | |
2441 | + | then cp(jn, iU) | |
2442 | + | else if ((iS > 0)) | |
2443 | + | then { | |
2444 | + | let lz = valueOrElse(getInteger(de, bT(ce, A)), 0) | |
2445 | + | let lA = if ((lx > lz)) | |
2446 | + | then invoke(de, "saveDuckResult", [A, lx], nil) | |
2447 | + | else unit | |
2448 | + | if ((lA == lA)) | |
2449 | + | then $Tuple2(iU, iS) | |
2450 | + | else throw("Strict value is not equal to itself.") | |
2451 | + | } | |
2452 | + | else $Tuple2(jn, 0) | |
2453 | + | } | |
2454 | + | else if (!(ch(jn))) | |
2455 | + | then { | |
2456 | + | let lB = dB(invoke(this, "autoExitDelivery", [A], nil)) | |
2457 | + | if ((lB == lB)) | |
2458 | + | then if (lr) | |
2459 | + | then lB | |
2460 | + | else if ((iS > 0)) | |
2461 | + | then $Tuple2(iU, iS) | |
2462 | + | else $Tuple2(lB._1, 0) | |
2463 | + | else throw("Strict value is not equal to itself.") | |
2464 | + | } | |
2465 | + | else if (!(lr)) | |
2466 | + | then throw("Your duck is taking part in delivery") | |
2467 | + | else if (!(ch(iU))) | |
2468 | + | then cp(jn, iU) | |
2469 | + | else { | |
2470 | + | let lx = parseIntValue(cr[bn]) | |
2471 | + | let ly = split(jn, "_") | |
2472 | + | if ((lx != (parseIntValue(ly[bn]) + 1))) | |
2473 | + | then cp(jn, iU) | |
2474 | + | else if ((iS > 0)) | |
2475 | + | then $Tuple2(iU, iS) | |
2476 | + | else { | |
2477 | + | let lB = dB(invoke(this, "autoExitDelivery", [A], nil)) | |
2478 | + | if ((lB == lB)) | |
2479 | + | then lB | |
2480 | + | else throw("Strict value is not equal to itself.") | |
2481 | + | } | |
2360 | 2482 | } | |
2361 | - | | |
2362 | - | | |
2363 | - | $Tuple2(([StringEntry( | |
2483 | + | let lC = lw._1 | |
2484 | + | let lD = lw._2 | |
2485 | + | $Tuple2(([StringEntry(ln, lC), StringEntry(gu, lu), IntegerEntry(z(A), iS), lc] ++ (if (lv) | |
2364 | 2486 | then [StringEntry(L(A), "0_0_0_0_0")] | |
2365 | - | else (nil ++ | |
2487 | + | else (nil ++ jW(A, if ((iS > 0)) | |
2366 | 2488 | then V | |
2367 | - | else W)._1))), | |
2489 | + | else W)._1))), hm._3) | |
2368 | 2490 | } | |
2369 | 2491 | } | |
2370 | 2492 | } | |
2371 | 2493 | ||
2372 | 2494 | ||
2373 | 2495 | ||
2374 | - | @Callable( | |
2375 | - | func heal ( | |
2376 | - | let | |
2377 | - | if (if (if ((0 > | |
2496 | + | @Callable(gH) | |
2497 | + | func heal (lE,lF,lG) = { | |
2498 | + | let lc = kZ(gH) | |
2499 | + | if (if (if ((0 > lE)) | |
2378 | 2500 | then true | |
2379 | - | else (0 > | |
2501 | + | else (0 > lF)) | |
2380 | 2502 | then true | |
2381 | - | else (0 > | |
2503 | + | else (0 > lG)) | |
2382 | 2504 | then throw("Quantity cannot be negative") | |
2383 | 2505 | else { | |
2384 | - | let A = valueOrErrorMessage(getString( | |
2385 | - | if ( | |
2506 | + | let A = valueOrErrorMessage(getString(bH(toString(gH.caller))), "You don't have a duck staked") | |
2507 | + | if (km(A)) | |
2386 | 2508 | then throw("heal_checkTournament") | |
2387 | - | else if ( | |
2509 | + | else if (kn(A)) | |
2388 | 2510 | then throw("heal_checkDelivery") | |
2389 | 2511 | else { | |
2390 | - | let | |
2391 | - | let | |
2392 | - | let | |
2393 | - | let | |
2394 | - | if (( | |
2395 | - | then throw((("HP should be < " + toString( | |
2512 | + | let lH = [lE, lF, lG] | |
2513 | + | let iY = z(A) | |
2514 | + | let iZ = ag(valueOrElse(getInteger(D(A)), 0)) | |
2515 | + | let lI = valueOrElse(getInteger(iY), iZ) | |
2516 | + | if ((lI >= iZ)) | |
2517 | + | then throw((("HP should be < " + toString(iZ)) + " to heal")) | |
2396 | 2518 | else { | |
2397 | - | let | |
2398 | - | let | |
2399 | - | let | |
2519 | + | let hI = bI(A) | |
2520 | + | let il = hH(hI) | |
2521 | + | let lJ = if ((il[bk] == "")) | |
2400 | 2522 | then nil | |
2401 | - | else split_4C( | |
2402 | - | func | |
2403 | - | let | |
2404 | - | let | |
2405 | - | then parseIntValue( | |
2523 | + | else split_4C(il[bk], "_") | |
2524 | + | func lK (eO,co) = { | |
2525 | + | let dz = eO._2 | |
2526 | + | let hd = if ((size(lJ) > dz)) | |
2527 | + | then parseIntValue(lJ[dz]) | |
2406 | 2528 | else 0 | |
2407 | - | if ((3 > | |
2529 | + | if ((3 > dz)) | |
2408 | 2530 | then { | |
2409 | - | let | |
2410 | - | if (( | |
2411 | - | then throw(((("You have only " + toString( | |
2412 | - | else $Tuple3(( | |
2531 | + | let lL = lH[dz] | |
2532 | + | if ((lL > hd)) | |
2533 | + | then throw(((("You have only " + toString(hd)) + " of ") + aO[dz])) | |
2534 | + | else $Tuple3((eO._1 :+ toString((hd - lL))), (dz + 1), (eO._3 + (parseIntValue(split(co, "_")[aU]) * lL))) | |
2413 | 2535 | } | |
2414 | - | else $Tuple3(( | |
2536 | + | else $Tuple3((eO._1 :+ toString(hd)), (dz + 1), eO._3) | |
2415 | 2537 | } | |
2416 | 2538 | ||
2417 | - | let | |
2418 | - | let | |
2419 | - | let | |
2420 | - | let | |
2421 | - | func | |
2422 | - | then | |
2423 | - | else | |
2424 | - | ||
2425 | - | func | |
2426 | - | then | |
2539 | + | let fg = { | |
2540 | + | let eQ = aS | |
2541 | + | let eR = size(eQ) | |
2542 | + | let eS = $Tuple3(nil, 0, 0) | |
2543 | + | func eT (eU,eV) = if ((eV >= eR)) | |
2544 | + | then eU | |
2545 | + | else lK(eU, eQ[eV]) | |
2546 | + | ||
2547 | + | func eW (eU,eV) = if ((eV >= eR)) | |
2548 | + | then eU | |
2427 | 2549 | else throw("List size exceeds 50") | |
2428 | 2550 | ||
2429 | - | | |
2551 | + | eW(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eS, 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) | |
2430 | 2552 | } | |
2431 | - | let | |
2432 | - | $Tuple2(([IntegerEntry( | |
2553 | + | let lM = min([iZ, (lI + fg._3)]) | |
2554 | + | $Tuple2(([IntegerEntry(iY, lM), StringEntry(hI, makeString_2C([il[bh], il[bi], il[bj], makeString(fg._1, "_")], ":")), lc] ++ jW(A, (ad * ((lE + lF) + lG)))._1), lM) | |
2433 | 2555 | } | |
2434 | 2556 | } | |
2435 | 2557 | } | |
2436 | 2558 | } | |
2437 | 2559 | ||
2438 | 2560 | ||
2439 | 2561 | ||
2440 | - | @Callable( | |
2562 | + | @Callable(gH) | |
2441 | 2563 | func healES () = { | |
2442 | - | let | |
2443 | - | if ((size( | |
2564 | + | let lc = kZ(gH) | |
2565 | + | if ((size(gH.payments) != 1)) | |
2444 | 2566 | then throw("Exactly one payment required") | |
2445 | 2567 | else { | |
2446 | - | let | |
2447 | - | if (( | |
2568 | + | let ld = value(gH.payments[0]) | |
2569 | + | if ((ld.assetId != cw)) | |
2448 | 2570 | then throw("Allowed USDT payment only!") | |
2449 | 2571 | else { | |
2450 | - | let A = valueOrErrorMessage(getString( | |
2451 | - | if ( | |
2572 | + | let A = valueOrErrorMessage(getString(bH(toString(gH.caller))), "You don't have a duck staked") | |
2573 | + | if (km(A)) | |
2452 | 2574 | then throw("healES_checkTournament") | |
2453 | - | else if ( | |
2575 | + | else if (kn(A)) | |
2454 | 2576 | then throw("healES_checkDelivery") | |
2455 | 2577 | else { | |
2456 | - | let | |
2457 | - | let | |
2458 | - | let | |
2459 | - | if (( | |
2578 | + | let iY = z(A) | |
2579 | + | let iZ = ag(valueOrElse(getInteger(D(A)), 0)) | |
2580 | + | let lI = valueOrElse(getInteger(iY), iZ) | |
2581 | + | if ((lI > 0)) | |
2460 | 2582 | then throw("HP should be 0 to call Emergency Service") | |
2461 | 2583 | else { | |
2462 | - | let | |
2463 | - | let | |
2464 | - | let | |
2584 | + | let hI = bI(A) | |
2585 | + | let il = hH(hI) | |
2586 | + | let lJ = if ((il[bk] == "")) | |
2465 | 2587 | then nil | |
2466 | - | else split_4C( | |
2467 | - | let | |
2468 | - | then parseIntValue( | |
2588 | + | else split_4C(il[bk], "_") | |
2589 | + | let lN = if ((size(lJ) > 0)) | |
2590 | + | then parseIntValue(lJ[0]) | |
2469 | 2591 | else 0 | |
2470 | - | let | |
2471 | - | then parseIntValue( | |
2592 | + | let lO = if ((size(lJ) > 1)) | |
2593 | + | then parseIntValue(lJ[1]) | |
2472 | 2594 | else 0 | |
2473 | - | let | |
2474 | - | then parseIntValue( | |
2595 | + | let lP = if ((size(lJ) > 2)) | |
2596 | + | then parseIntValue(lJ[2]) | |
2475 | 2597 | else 0 | |
2476 | - | if (if (if (( | |
2598 | + | if (if (if ((lN > 0)) | |
2477 | 2599 | then true | |
2478 | - | else ( | |
2600 | + | else (lO > 0)) | |
2479 | 2601 | then true | |
2480 | - | else ( | |
2602 | + | else (lP > 0)) | |
2481 | 2603 | then throw("You have to use own Medical Kit") | |
2482 | 2604 | else { | |
2483 | - | let | |
2484 | - | let | |
2485 | - | then split_4C(value( | |
2605 | + | let lQ = getString(db, bM()) | |
2606 | + | let lR = if (isDefined(lQ)) | |
2607 | + | then split_4C(value(lQ), "_") | |
2486 | 2608 | else nil | |
2487 | - | let | |
2488 | - | then parseIntValue( | |
2609 | + | let lS = if ((size(lR) > 0)) | |
2610 | + | then parseIntValue(lR[0]) | |
2489 | 2611 | else 0 | |
2490 | - | if ((0 >= | |
2612 | + | if ((0 >= lS)) | |
2491 | 2613 | then throw("There are no Medical Kits L1 at Emergency Service storage") | |
2492 | 2614 | else { | |
2493 | - | let | |
2494 | - | let | |
2495 | - | let | |
2496 | - | let | |
2497 | - | let | |
2498 | - | if (( | |
2499 | - | then throw(("Payment attached should be " + toString( | |
2615 | + | let lM = (lI + parseIntValue(split(aS[0], "_")[aU])) | |
2616 | + | let lT = makeString([toString((lS - 1)), removeByIndex(lR, 0)], "_") | |
2617 | + | let co = split(aS[0], "_") | |
2618 | + | let lU = cn(co) | |
2619 | + | let lV = fraction((lU * aL), aK, (cD * aX)) | |
2620 | + | if ((ld.amount != lV)) | |
2621 | + | then throw(("Payment attached should be " + toString(lV))) | |
2500 | 2622 | else { | |
2501 | - | let | |
2502 | - | $Tuple2(([IntegerEntry( | |
2623 | + | let fg = dv(invoke(db, "updateEsStorage", [lT], [AttachedPayment(cw, lV)])) | |
2624 | + | $Tuple2(([IntegerEntry(iY, lM), lc] ++ jW(A, X)._1), fg) | |
2503 | 2625 | } | |
2504 | 2626 | } | |
2505 | 2627 | } | |
2506 | 2628 | } | |
2507 | 2629 | } | |
2508 | 2630 | } | |
2509 | 2631 | } | |
2510 | 2632 | } | |
2511 | 2633 | ||
2512 | 2634 | ||
2513 | 2635 | ||
2514 | - | @Callable( | |
2515 | - | func updateBackpack (A, | |
2636 | + | @Callable(gH) | |
2637 | + | func updateBackpack (A,lW) = if ((gH.caller != db)) | |
2516 | 2638 | then throw("permission denied") | |
2517 | - | else $Tuple2([StringEntry( | |
2518 | - | ||
2519 | - | ||
2520 | - | ||
2521 | - | @Callable( | |
2639 | + | else $Tuple2([StringEntry(bI(A), lW)], lW) | |
2640 | + | ||
2641 | + | ||
2642 | + | ||
2643 | + | @Callable(gH) | |
2522 | 2644 | func commitForRandom () = { | |
2523 | - | let | |
2524 | - | let | |
2525 | - | let c = toString( | |
2526 | - | $Tuple2(([IntegerEntry( | |
2527 | - | } | |
2528 | - | ||
2529 | - | ||
2530 | - | ||
2531 | - | @Callable( | |
2532 | - | func awardSLand ( | |
2645 | + | let lc = kZ(gH) | |
2646 | + | let lX = (height + do) | |
2647 | + | let c = toString(gH.caller) | |
2648 | + | $Tuple2(([IntegerEntry(dp(c), lX)] :+ lc), lX) | |
2649 | + | } | |
2650 | + | ||
2651 | + | ||
2652 | + | ||
2653 | + | @Callable(gH) | |
2654 | + | func awardSLand (cL) = if ((gH.caller != de)) | |
2533 | 2655 | then throw("Access denied") | |
2534 | - | else if ((size( | |
2656 | + | else if ((size(gH.payments) != 0)) | |
2535 | 2657 | then throw("No payments required") | |
2536 | 2658 | else { | |
2537 | - | let | |
2538 | - | $Tuple2( | |
2539 | - | } | |
2540 | - | ||
2541 | - | ||
2542 | - | ||
2543 | - | @Callable( | |
2659 | + | let fg = iF(addressFromStringValue(cL), gH.transactionId) | |
2660 | + | $Tuple2(fg._1, fg._2._1) | |
2661 | + | } | |
2662 | + | ||
2663 | + | ||
2664 | + | ||
2665 | + | @Callable(gH) | |
2544 | 2666 | func buySLand () = { | |
2545 | - | let | |
2546 | - | if ((size( | |
2667 | + | let lc = kZ(gH) | |
2668 | + | if ((size(gH.payments) != 1)) | |
2547 | 2669 | then throw("Exactly one payment required") | |
2548 | 2670 | else { | |
2549 | - | let | |
2550 | - | if (( | |
2671 | + | let ld = value(gH.payments[0]) | |
2672 | + | if ((ld.assetId != cw)) | |
2551 | 2673 | then throw("Allowed USDT payment only!") | |
2552 | - | else if (( | |
2553 | - | then throw(("Payment attached should be " + toString( | |
2674 | + | else if ((ld.amount != ed)) | |
2675 | + | then throw(("Payment attached should be " + toString(ed))) | |
2554 | 2676 | else { | |
2555 | - | let | |
2556 | - | let | |
2557 | - | $Tuple2(((( | |
2677 | + | let fg = iF(gH.caller, gH.transactionId) | |
2678 | + | let lY = dy(invoke(df, "burnAcres", [ee], nil)) | |
2679 | + | $Tuple2((((fg._1 :+ ScriptTransfer(db, ld.amount, cw)) ++ kc(toString(gH.caller), Z)._1) :+ lc), $Tuple2(fg._2._1, lY)) | |
2558 | 2680 | } | |
2559 | 2681 | } | |
2560 | 2682 | } | |
2561 | 2683 | ||
2562 | 2684 | ||
2563 | 2685 | ||
2564 | - | @Callable( | |
2565 | - | func expedition ( | |
2566 | - | let | |
2567 | - | if ((size( | |
2686 | + | @Callable(gH) | |
2687 | + | func expedition (iN,iO) = { | |
2688 | + | let lc = kZ(gH) | |
2689 | + | if ((size(gH.payments) != 0)) | |
2568 | 2690 | then throw("No payments required") | |
2569 | 2691 | else { | |
2570 | - | let | |
2571 | - | let | |
2572 | - | let A = | |
2573 | - | let | |
2574 | - | let | |
2575 | - | let | |
2576 | - | let | |
2577 | - | let | |
2578 | - | let | |
2579 | - | let | |
2580 | - | let | |
2581 | - | let | |
2582 | - | let | |
2583 | - | let | |
2584 | - | let | |
2585 | - | let | |
2586 | - | then $Tuple3([IntegerEntry( | |
2587 | - | else $Tuple3(( | |
2692 | + | let bL = toString(gH.caller) | |
2693 | + | let hm = iM(bL, iN, iO) | |
2694 | + | let A = hm._2 | |
2695 | + | let iY = z(A) | |
2696 | + | let hI = bI(A) | |
2697 | + | let il = hH(hI) | |
2698 | + | let jN = split(il[bj], "_") | |
2699 | + | let jP = makeString(fa(true, jN, ec), "_") | |
2700 | + | let gu = F(A) | |
2701 | + | let ls = valueOrElse(getString(gu), ",;,_,;,_,;,_,;,_,;,_,;,") | |
2702 | + | let lZ = fh(ls, hm._5) | |
2703 | + | let lu = lZ._1 | |
2704 | + | let lv = lZ._2 | |
2705 | + | let ma = iF(gH.caller, gH.transactionId) | |
2706 | + | let iL = ma._2._1 | |
2707 | + | let fg = if ((0 >= hm._1)) | |
2708 | + | then $Tuple3([IntegerEntry(iY, 0), StringEntry(gu, lu)], "", 0) | |
2709 | + | else $Tuple3((ma._1 ++ (if (lv) | |
2588 | 2710 | then [StringEntry(L(A), "0_0_0_0_0")] | |
2589 | - | else ((((nil :+ StringEntry( | |
2590 | - | if ( | |
2711 | + | else ((((nil :+ StringEntry(bJ(A), makeString([ma._2._2, "L", iL], "_"))) :+ IntegerEntry(iY, hm._1)) :+ StringEntry(gu, lu)) :+ StringEntry(hI, makeString([il[bh], il[bi], jP, il[bk]], ":"))))), iL, hm._3) | |
2712 | + | if (km(A)) | |
2591 | 2713 | then throw("expedition_checkTournament") | |
2592 | - | else if ( | |
2714 | + | else if (kn(A)) | |
2593 | 2715 | then throw("expedition_checkDelivery") | |
2594 | 2716 | else { | |
2595 | - | let | |
2596 | - | $Tuple2((( | |
2717 | + | let lY = dy(invoke(df, "burnAcres", [ee], nil)) | |
2718 | + | $Tuple2(((fg._1 ++ jW(A, Z)._1) :+ lc), $Tuple3(fg._2, fg._3, lY)) | |
2597 | 2719 | } | |
2598 | 2720 | } | |
2599 | 2721 | } | |
2600 | 2722 | ||
2601 | 2723 | ||
2602 | 2724 | ||
2603 | - | @Callable( | |
2725 | + | @Callable(gH) | |
2604 | 2726 | func buySLandForAcres () = { | |
2605 | - | let | |
2606 | - | if ((size( | |
2727 | + | let lc = kZ(gH) | |
2728 | + | if ((size(gH.payments) != 1)) | |
2607 | 2729 | then throw("exactly 1 payment must be attached") | |
2608 | 2730 | else { | |
2609 | - | let | |
2610 | - | let | |
2611 | - | if (if (!(isDefined( | |
2731 | + | let ld = gH.payments[0] | |
2732 | + | let fn = ld.amount | |
2733 | + | if (if (!(isDefined(ld.assetId))) | |
2612 | 2734 | then true | |
2613 | - | else (value( | |
2735 | + | else (value(ld.assetId) != dn)) | |
2614 | 2736 | then throw("ACRES payments only!") | |
2615 | - | else if (( | |
2616 | - | then throw(("Payment attached should be " + toString( | |
2737 | + | else if ((fn != ee)) | |
2738 | + | then throw(("Payment attached should be " + toString(ee))) | |
2617 | 2739 | else { | |
2618 | - | let | |
2619 | - | let | |
2620 | - | $Tuple2((( | |
2740 | + | let fg = iF(gH.caller, gH.transactionId) | |
2741 | + | let lY = dy(invoke(df, "burnAcres", [ee], [AttachedPayment(dn, fn)])) | |
2742 | + | $Tuple2(((fg._1 ++ kc(toString(gH.caller), Z)._1) :+ lc), $Tuple2(fg._2._1, lY)) | |
2621 | 2743 | } | |
2622 | 2744 | } | |
2623 | 2745 | } | |
2624 | 2746 | ||
2625 | 2747 | ||
2626 | 2748 | ||
2627 | - | @Callable( | |
2749 | + | @Callable(gH) | |
2628 | 2750 | func upgradeInfra (P) = { | |
2629 | - | let | |
2630 | - | if ((size( | |
2751 | + | let lc = kZ(gH) | |
2752 | + | if ((size(gH.payments) != 0)) | |
2631 | 2753 | then throw("No payments required") | |
2632 | 2754 | else { | |
2633 | - | let | |
2634 | - | let A = valueOrErrorMessage(getString( | |
2635 | - | $Tuple2((( | |
2636 | - | } | |
2637 | - | } | |
2638 | - | ||
2639 | - | ||
2640 | - | ||
2641 | - | @Callable( | |
2642 | - | func activateArtifact ( | |
2643 | - | let | |
2644 | - | if ((size( | |
2755 | + | let fg = jH(true, gH.caller, 0, P) | |
2756 | + | let A = valueOrErrorMessage(getString(bH(toString(gH.caller))), "You don't have a duck staked") | |
2757 | + | $Tuple2(((fg._1 :+ lc) ++ jW(A, fraction(aa, fg._3, cD))._1), fg._2) | |
2758 | + | } | |
2759 | + | } | |
2760 | + | ||
2761 | + | ||
2762 | + | ||
2763 | + | @Callable(gH) | |
2764 | + | func activateArtifact (mb,mc) = { | |
2765 | + | let lc = kZ(gH) | |
2766 | + | if ((size(gH.payments) != 0)) | |
2645 | 2767 | then throw("No payments required") | |
2646 | 2768 | else { | |
2647 | - | let c = toString( | |
2648 | - | let | |
2649 | - | let | |
2650 | - | if (("PRESALE" == | |
2651 | - | then | |
2652 | - | else if (("ONBOARD" == | |
2653 | - | then | |
2769 | + | let c = toString(gH.caller) | |
2770 | + | let fg = { | |
2771 | + | let cx = mb | |
2772 | + | if (("PRESALE" == cx)) | |
2773 | + | then kk(c, mc) | |
2774 | + | else if (("ONBOARD" == cx)) | |
2775 | + | then kd(c) | |
2654 | 2776 | else throw("Unknown artifact") | |
2655 | 2777 | } | |
2656 | - | ( | |
2657 | - | } | |
2658 | - | } | |
2659 | - | ||
2660 | - | ||
2661 | - | ||
2662 | - | @Callable( | |
2663 | - | func mergeLands ( | |
2664 | - | let | |
2665 | - | if ((size( | |
2778 | + | (fg :+ lc) | |
2779 | + | } | |
2780 | + | } | |
2781 | + | ||
2782 | + | ||
2783 | + | ||
2784 | + | @Callable(gH) | |
2785 | + | func mergeLands (kA) = { | |
2786 | + | let lc = kZ(gH) | |
2787 | + | if ((size(gH.payments) != 0)) | |
2666 | 2788 | then throw("No payments required") | |
2667 | 2789 | else { | |
2668 | - | let | |
2669 | - | $Tuple2((( | |
2670 | - | } | |
2671 | - | } | |
2672 | - | ||
2673 | - | ||
2674 | - | ||
2675 | - | @Callable( | |
2676 | - | func cargoExchange ( | |
2677 | - | let | |
2678 | - | if ((size( | |
2790 | + | let fg = kY(toString(gH.caller), kA) | |
2791 | + | $Tuple2(((fg._1 :+ lc) ++ kc(toString(gH.caller), ab)._1), fg._2) | |
2792 | + | } | |
2793 | + | } | |
2794 | + | ||
2795 | + | ||
2796 | + | ||
2797 | + | @Callable(gH) | |
2798 | + | func cargoExchange (md,P) = { | |
2799 | + | let lc = kZ(gH) | |
2800 | + | if ((size(gH.payments) != 0)) | |
2679 | 2801 | then throw("No payments required") | |
2680 | 2802 | else { | |
2681 | - | let | |
2682 | - | let c = toString( | |
2683 | - | let | |
2684 | - | let | |
2685 | - | if (!(isDefined(getInteger( | |
2686 | - | then throw(( | |
2803 | + | let ik = split_4C(md, ":") | |
2804 | + | let c = toString(gH.originCaller) | |
2805 | + | let jp = value(assetInfo(fromBase58String(P))) | |
2806 | + | let jq = br(P) | |
2807 | + | if (!(isDefined(getInteger(jq)))) | |
2808 | + | then throw((jp.name + " is not staked")) | |
2687 | 2809 | else { | |
2688 | - | let | |
2689 | - | if (( | |
2810 | + | let js = valueOrErrorMessage(getString(bo(P)), (("NFT " + jp.name) + " is orphaned")) | |
2811 | + | if ((js != c)) | |
2690 | 2812 | then throw((aC + " is not yours")) | |
2691 | 2813 | else { | |
2692 | - | let | |
2693 | - | let | |
2694 | - | let A = valueOrErrorMessage(getString( | |
2695 | - | let | |
2696 | - | let | |
2697 | - | if (( | |
2698 | - | then throw((("Duck location type is " + | |
2699 | - | else if (( | |
2814 | + | let hW = (dE(split(jp.description, "_")[dh]) / cE) | |
2815 | + | let hX = valueOrElse(getInteger(by(P)), 0) | |
2816 | + | let A = valueOrErrorMessage(getString(bH(c)), "You don't have a duck staked") | |
2817 | + | let jn = valueOrElse(getString(bJ(A)), aJ) | |
2818 | + | let cf = split(value(jn), "_") | |
2819 | + | if ((cf[bm] != "L")) | |
2820 | + | then throw((("Duck location type is " + cf[bm]) + ", but should be L")) | |
2821 | + | else if ((cf[bn] != P)) | |
2700 | 2822 | then throw(("Duck should be on the land " + P)) | |
2701 | 2823 | else { | |
2702 | - | let | |
2703 | - | let | |
2704 | - | let | |
2705 | - | let | |
2706 | - | let | |
2707 | - | let | |
2708 | - | let | |
2709 | - | let | |
2710 | - | [StringEntry( | |
2824 | + | let hV = bx(P) | |
2825 | + | let hM = hU(hV, hW, hX) | |
2826 | + | let hI = bI(A) | |
2827 | + | let il = hH(hI) | |
2828 | + | let fg = ij(ik, hM, il) | |
2829 | + | let id = split(hM[bc], "_") | |
2830 | + | let jE = (parseIntValue(id[be]) + fg._7) | |
2831 | + | let jF = (parseIntValue(id[bf]) - fg._7) | |
2832 | + | [StringEntry(hI, makeString_2C([il[bh], fg._4, fg._5, fg._6], ":")), StringEntry(hV, makeString_2C([hM[aY], fg._1, fg._2, fg._3, makeString([id[bd], toString(jE), toString(jF), id[bg]], "_")], ":")), lc] | |
2711 | 2833 | } | |
2712 | 2834 | } | |
2713 | 2835 | } | |
2714 | 2836 | } | |
2715 | 2837 | } | |
2716 | 2838 | ||
2717 | 2839 | ||
2718 | 2840 | ||
2719 | - | @Callable( | |
2720 | - | func saveWarehouse ( | |
2841 | + | @Callable(gH) | |
2842 | + | func saveWarehouse (hZ,P) = if ((gH.caller != db)) | |
2721 | 2843 | then throw("Access denied") | |
2722 | 2844 | else { | |
2723 | - | let | |
2724 | - | let | |
2725 | - | if ((size( | |
2845 | + | let hV = bx(P) | |
2846 | + | let ia = split_4C(hZ, ":") | |
2847 | + | if ((size(ia) != 5)) | |
2726 | 2848 | then throw("warehouse string should contain 4 ':' separators") | |
2727 | 2849 | else { | |
2728 | - | let | |
2729 | - | let | |
2730 | - | let | |
2731 | - | let | |
2732 | - | let | |
2733 | - | $Tuple2([StringEntry( | |
2850 | + | let me = split(ia[bc], "_")[bd] | |
2851 | + | let jE = hL(ia) | |
2852 | + | let mf = hJ(ia[aY]) | |
2853 | + | let jF = ((mf - parseIntValue(me)) - jE) | |
2854 | + | let mg = makeString_2C([ia[aY], ia[aZ], ia[ba], ia[bb], makeString([me, toString(jE), toString(jF), toString(mf)], "_")], ":") | |
2855 | + | $Tuple2([StringEntry(hV, mg)], mg) | |
2734 | 2856 | } | |
2735 | 2857 | } | |
2736 | 2858 | ||
2737 | 2859 | ||
2738 | 2860 | ||
2739 | - | @Callable( | |
2740 | - | func fixWarehouseFormat (P) = if (( | |
2861 | + | @Callable(gH) | |
2862 | + | func fixWarehouseFormat (P) = if ((gH.caller != da)) | |
2741 | 2863 | then throw("Access denied") | |
2742 | 2864 | else { | |
2743 | - | let | |
2744 | - | let | |
2745 | - | let | |
2746 | - | let | |
2747 | - | let | |
2748 | - | let | |
2749 | - | let | |
2750 | - | let | |
2751 | - | let | |
2752 | - | let | |
2753 | - | $Tuple2([StringEntry( | |
2865 | + | let hV = bx(P) | |
2866 | + | let jp = value(assetInfo(fromBase58String(P))) | |
2867 | + | let hW = (dE(split(jp.description, "_")[dh]) / cE) | |
2868 | + | let hX = valueOrElse(getInteger(by(P)), 0) | |
2869 | + | let ia = hU(hV, hW, hX) | |
2870 | + | let me = dy(invoke(db, "recalcLockedVolumeREADONLY", [P, ia], nil)) | |
2871 | + | let jE = hL(ia) | |
2872 | + | let mf = hJ(ia[aY]) | |
2873 | + | let jF = ((mf - me) - jE) | |
2874 | + | let mg = makeString_2C([ia[aY], ia[aZ], ia[ba], ia[bb], makeString([toString(me), toString(jE), toString(jF), toString(mf)], "_")], ":") | |
2875 | + | $Tuple2([StringEntry(hV, mg)], mg) | |
2754 | 2876 | } | |
2755 | 2877 | ||
2756 | 2878 | ||
2757 | 2879 | ||
2758 | - | @Callable( | |
2759 | - | func fixContinentProportions ( | |
2880 | + | @Callable(gH) | |
2881 | + | func fixContinentProportions (kA) = if ((gH.caller != da)) | |
2760 | 2882 | then throw("Access denied") | |
2761 | 2883 | else { | |
2762 | - | func | |
2763 | - | ||
2764 | - | let | |
2765 | - | let | |
2766 | - | let | |
2767 | - | let | |
2768 | - | func | |
2769 | - | then | |
2770 | - | else | |
2771 | - | ||
2772 | - | func | |
2773 | - | then | |
2884 | + | func mh (eO,mi) = (eO :+ valueOrElse(getString(dr(mi)), "0_0_0_0_0_0")) | |
2885 | + | ||
2886 | + | let gr = { | |
2887 | + | let eQ = aP | |
2888 | + | let eR = size(eQ) | |
2889 | + | let eS = nil | |
2890 | + | func eT (eU,eV) = if ((eV >= eR)) | |
2891 | + | then eU | |
2892 | + | else mh(eU, eQ[eV]) | |
2893 | + | ||
2894 | + | func eW (eU,eV) = if ((eV >= eR)) | |
2895 | + | then eU | |
2774 | 2896 | else throw("List size exceeds 5") | |
2775 | 2897 | ||
2776 | - | | |
2777 | - | } | |
2778 | - | func | |
2779 | - | let | |
2780 | - | let | |
2781 | - | let | |
2782 | - | let | |
2783 | - | let | |
2784 | - | let | |
2785 | - | let | |
2786 | - | let | |
2787 | - | let | |
2788 | - | if (("Americas" == | |
2789 | - | then [ | |
2790 | - | else if (("Europe" == | |
2791 | - | then [ | |
2792 | - | else if (("Asia" == | |
2793 | - | then [ | |
2794 | - | else if (("Africa" == | |
2795 | - | then [ | |
2796 | - | else if (("Oceania" == | |
2797 | - | then [ | |
2898 | + | eW(eT(eT(eT(eT(eT(eS, 0), 1), 2), 3), 4), 5) | |
2899 | + | } | |
2900 | + | func mj (eO,P) = { | |
2901 | + | let jp = value(assetInfo(fromBase58String(P))) | |
2902 | + | let jt = split(jp.description, "_") | |
2903 | + | let hW = (dE(jt[dh]) / cE) | |
2904 | + | let mi = jt[dj] | |
2905 | + | let gD = gJ(jt[di]) | |
2906 | + | let hl = value(indexOf(aP, mi)) | |
2907 | + | let kP = split(eO[hl], "_") | |
2908 | + | let mk = makeString(gB(kP, gD, hW, 1), "_") | |
2909 | + | let cx = mi | |
2910 | + | if (("Americas" == cx)) | |
2911 | + | then [mk, eO[1], eO[2], eO[3], eO[4]] | |
2912 | + | else if (("Europe" == cx)) | |
2913 | + | then [eO[0], mk, eO[2], eO[3], eO[4]] | |
2914 | + | else if (("Asia" == cx)) | |
2915 | + | then [eO[0], eO[1], mk, eO[3], eO[4]] | |
2916 | + | else if (("Africa" == cx)) | |
2917 | + | then [eO[0], eO[1], eO[2], mk, eO[4]] | |
2918 | + | else if (("Oceania" == cx)) | |
2919 | + | then [eO[0], eO[1], eO[2], eO[3], mk] | |
2798 | 2920 | else throw("wrong continent") | |
2799 | 2921 | } | |
2800 | 2922 | ||
2801 | - | let | |
2802 | - | let | |
2803 | - | let | |
2804 | - | let | |
2805 | - | func | |
2806 | - | then | |
2807 | - | else | |
2808 | - | ||
2809 | - | func | |
2810 | - | then | |
2923 | + | let eZ = { | |
2924 | + | let eQ = kA | |
2925 | + | let eR = size(eQ) | |
2926 | + | let eS = gr | |
2927 | + | func hC (eU,eV) = if ((eV >= eR)) | |
2928 | + | then eU | |
2929 | + | else mj(eU, eQ[eV]) | |
2930 | + | ||
2931 | + | func hD (eU,eV) = if ((eV >= eR)) | |
2932 | + | then eU | |
2811 | 2933 | else throw("List size exceeds 100") | |
2812 | 2934 | ||
2813 | - | | |
2814 | - | } | |
2815 | - | $Tuple2([StringEntry( | |
2935 | + | hD(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(eS, 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) | |
2936 | + | } | |
2937 | + | $Tuple2([StringEntry(dr("Americas"), eZ[0]), StringEntry(dr("Europe"), eZ[1]), StringEntry(dr("Asia"), eZ[2]), StringEntry(dr("Africa"), eZ[3]), StringEntry(dr("Oceania"), eZ[4])], 0) | |
2816 | 2938 | } | |
2817 | 2939 | ||
2818 | 2940 | ||
2819 | 2941 | ||
2820 | - | @Callable( | |
2821 | - | func fixStakedPieces ( | |
2942 | + | @Callable(gH) | |
2943 | + | func fixStakedPieces (cL) = if ((gH.caller != da)) | |
2822 | 2944 | then throw("Access denied") | |
2823 | 2945 | else { | |
2824 | - | let | |
2946 | + | let kT = if ((cL == "")) | |
2825 | 2947 | then 0 | |
2826 | 2948 | else { | |
2827 | - | let | |
2828 | - | let | |
2829 | - | then split_51C(value( | |
2949 | + | let kM = getString(an, dt(cL)) | |
2950 | + | let kI = if (isDefined(kM)) | |
2951 | + | then split_51C(value(kM), "_") | |
2830 | 2952 | else nil | |
2831 | - | func | |
2832 | - | let | |
2833 | - | let | |
2834 | - | ( | |
2953 | + | func ml (eO,P) = { | |
2954 | + | let jp = value(assetInfo(fromBase58String(P))) | |
2955 | + | let dF = split(jp.description, "_")[dh] | |
2956 | + | (eO + dE(dF)) | |
2835 | 2957 | } | |
2836 | 2958 | ||
2837 | - | let | |
2838 | - | let | |
2839 | - | let | |
2840 | - | func | |
2841 | - | then | |
2842 | - | else | |
2843 | - | ||
2844 | - | func | |
2845 | - | then | |
2959 | + | let eQ = kI | |
2960 | + | let eR = size(eQ) | |
2961 | + | let eS = 0 | |
2962 | + | func eT (eU,eV) = if ((eV >= eR)) | |
2963 | + | then eU | |
2964 | + | else ml(eU, eQ[eV]) | |
2965 | + | ||
2966 | + | func eW (eU,eV) = if ((eV >= eR)) | |
2967 | + | then eU | |
2846 | 2968 | else throw("List size exceeds 100") | |
2847 | 2969 | ||
2848 | - | | |
2970 | + | eW(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eS, 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) | |
2849 | 2971 | } | |
2850 | - | $Tuple2([IntegerEntry( | |
2972 | + | $Tuple2([IntegerEntry(du(cL), kT)], kT) | |
2851 | 2973 | } | |
2852 | 2974 | ||
2853 | 2975 | ||
2854 | 2976 | ||
2855 | - | @Callable( | |
2856 | - | func setCustomName ( | |
2857 | - | let | |
2858 | - | if ((size( | |
2977 | + | @Callable(gH) | |
2978 | + | func setCustomName (bp,kK,bt) = { | |
2979 | + | let lc = kZ(gH) | |
2980 | + | if ((size(gH.payments) != 1)) | |
2859 | 2981 | then throw("Exactly one payment required") | |
2860 | 2982 | else { | |
2861 | - | let | |
2862 | - | if (( | |
2983 | + | let ld = value(gH.payments[0]) | |
2984 | + | if ((ld.assetId != cw)) | |
2863 | 2985 | then throw("Allowed USDT payment only!") | |
2864 | - | else if (( | |
2865 | - | then throw(("Payment should be " + toString( | |
2866 | - | else if (contains( | |
2867 | - | then throw(("Name should not contain '__': " + | |
2868 | - | else if ((size( | |
2869 | - | then throw(("Name too long, maxLength=" + toString( | |
2986 | + | else if ((ld.amount != dZ)) | |
2987 | + | then throw(("Payment should be " + toString(dZ))) | |
2988 | + | else if (contains(kK, "__")) | |
2989 | + | then throw(("Name should not contain '__': " + kK)) | |
2990 | + | else if ((size(kK) > ea)) | |
2991 | + | then throw(("Name too long, maxLength=" + toString(ea))) | |
2870 | 2992 | else { | |
2871 | - | let c = toString( | |
2872 | - | let | |
2873 | - | let | |
2874 | - | if (("ACCOUNT" == | |
2993 | + | let c = toString(gH.originCaller) | |
2994 | + | let mm = { | |
2995 | + | let cx = bt | |
2996 | + | if (("ACCOUNT" == cx)) | |
2875 | 2997 | then { | |
2876 | - | let | |
2877 | - | let | |
2878 | - | if (isDefined( | |
2879 | - | then throw(("Name already registered: " + | |
2998 | + | let mn = eu(kK) | |
2999 | + | let mo = getString(mn) | |
3000 | + | if (isDefined(mo)) | |
3001 | + | then throw(("Name already registered: " + kK)) | |
2880 | 3002 | else { | |
2881 | - | let | |
2882 | - | let | |
2883 | - | let | |
2884 | - | then [DeleteEntry( | |
3003 | + | let mp = bB(c) | |
3004 | + | let mq = getString(mp) | |
3005 | + | let mr = if (isDefined(mq)) | |
3006 | + | then [DeleteEntry(eu(value(mq)))] | |
2885 | 3007 | else nil | |
2886 | - | ((( | |
3008 | + | (((mr :+ StringEntry(mp, kK)) :+ StringEntry(mn, c)) ++ kc(c, Y)._1) | |
2887 | 3009 | } | |
2888 | 3010 | } | |
2889 | - | else if (("LAND" == | |
3011 | + | else if (("LAND" == cx)) | |
2890 | 3012 | then { | |
2891 | - | let | |
2892 | - | let | |
2893 | - | if (!(isDefined(getInteger( | |
2894 | - | then throw(( | |
3013 | + | let jp = value(assetInfo(fromBase58String(bp))) | |
3014 | + | let jq = br(bp) | |
3015 | + | if (!(isDefined(getInteger(jq)))) | |
3016 | + | then throw((jp.name + " is not staked")) | |
2895 | 3017 | else { | |
2896 | - | let | |
2897 | - | if (( | |
3018 | + | let js = valueOrErrorMessage(getString(bo(bp)), (("NFT " + jp.name) + " is orphaned")) | |
3019 | + | if ((js != c)) | |
2898 | 3020 | then throw((aC + " is not yours")) | |
2899 | 3021 | else { | |
2900 | - | let | |
2901 | - | let | |
2902 | - | if (isDefined( | |
2903 | - | then throw(("Name already registered: " + | |
3022 | + | let mn = en(kK) | |
3023 | + | let mo = getString(mn) | |
3024 | + | if (isDefined(mo)) | |
3025 | + | then throw(("Name already registered: " + kK)) | |
2904 | 3026 | else { | |
2905 | - | let | |
2906 | - | let | |
2907 | - | let | |
2908 | - | then [DeleteEntry( | |
3027 | + | let ms = bq(bp) | |
3028 | + | let mq = getString(ms) | |
3029 | + | let mr = if (isDefined(mq)) | |
3030 | + | then [DeleteEntry(en(value(mq)))] | |
2909 | 3031 | else nil | |
2910 | - | ((( | |
3032 | + | (((mr :+ StringEntry(ms, kK)) :+ StringEntry(mn, bp)) ++ kc(c, Y)._1) | |
2911 | 3033 | } | |
2912 | 3034 | } | |
2913 | 3035 | } | |
2914 | 3036 | } | |
2915 | - | else if (("DUCK" == | |
3037 | + | else if (("DUCK" == cx)) | |
2916 | 3038 | then { | |
2917 | - | let | |
2918 | - | let | |
2919 | - | if (if (!(isDefined(getInteger( | |
3039 | + | let jp = value(assetInfo(fromBase58String(bp))) | |
3040 | + | let jq = br(bp) | |
3041 | + | if (if (!(isDefined(getInteger(jq)))) | |
2920 | 3042 | then true | |
2921 | - | else !(isDefined(getString( | |
2922 | - | then throw(( | |
3043 | + | else !(isDefined(getString(bH(c))))) | |
3044 | + | then throw((jp.name + " is not staked")) | |
2923 | 3045 | else { | |
2924 | - | let | |
2925 | - | if (( | |
3046 | + | let js = valueOrErrorMessage(getString(bG(bp)), (("NFT " + jp.name) + " is orphaned")) | |
3047 | + | if ((js != c)) | |
2926 | 3048 | then throw((aD + " is not yours")) | |
2927 | 3049 | else { | |
2928 | - | let | |
2929 | - | let | |
2930 | - | if (isDefined( | |
2931 | - | then throw(("Name already registered: " + | |
3050 | + | let mn = et(kK) | |
3051 | + | let mo = getString(mn) | |
3052 | + | if (isDefined(mo)) | |
3053 | + | then throw(("Name already registered: " + kK)) | |
2932 | 3054 | else { | |
2933 | - | let | |
2934 | - | let | |
2935 | - | let | |
2936 | - | then [DeleteEntry( | |
3055 | + | let ms = bA(bp) | |
3056 | + | let mq = getString(ms) | |
3057 | + | let mr = if (isDefined(mq)) | |
3058 | + | then [DeleteEntry(et(value(mq)))] | |
2937 | 3059 | else nil | |
2938 | - | ((( | |
3060 | + | (((mr :+ StringEntry(ms, kK)) :+ StringEntry(mn, bp)) ++ jW(bp, Y)._1) | |
2939 | 3061 | } | |
2940 | 3062 | } | |
2941 | 3063 | } | |
2942 | 3064 | } | |
2943 | 3065 | else throw("Unknown entity type") | |
2944 | 3066 | } | |
2945 | - | $Tuple2((( | |
3067 | + | $Tuple2(((mm :+ ScriptTransfer(db, ld.amount, cw)) :+ lc), 0) | |
2946 | 3068 | } | |
2947 | 3069 | } | |
2948 | 3070 | } | |
2949 | 3071 | ||
2950 | 3072 | ||
2951 | 3073 | ||
2952 | - | @Callable( | |
2953 | - | func setReferrals ( | |
3074 | + | @Callable(gH) | |
3075 | + | func setReferrals (mt,mu) = if ((gH.callerPublicKey != dW)) | |
2954 | 3076 | then throw("Permission denied") | |
2955 | 3077 | else { | |
2956 | - | let | |
2957 | - | if ((size( | |
3078 | + | let lc = kZ(gH) | |
3079 | + | if ((size(gH.payments) != 0)) | |
2958 | 3080 | then throw("No payments required") | |
2959 | - | else if (!(isDefined(addressFromString( | |
2960 | - | then throw(("Invalid address: " + | |
2961 | - | else if (!(isDefined(addressFromString( | |
2962 | - | then throw(("Invalid address: " + | |
3081 | + | else if (!(isDefined(addressFromString(mt)))) | |
3082 | + | then throw(("Invalid address: " + mt)) | |
3083 | + | else if (!(isDefined(addressFromString(mu)))) | |
3084 | + | then throw(("Invalid address: " + mu)) | |
2963 | 3085 | else { | |
2964 | - | let | |
2965 | - | let | |
2966 | - | let | |
2967 | - | then split_4C(value( | |
3086 | + | let mv = ev() | |
3087 | + | let mw = getString(mv) | |
3088 | + | let mx = if (isDefined(mw)) | |
3089 | + | then split_4C(value(mw), "_") | |
2968 | 3090 | else nil | |
2969 | - | if (containsElement( | |
2970 | - | then throw(( | |
3091 | + | if (containsElement(mx, mu)) | |
3092 | + | then throw((mu + " is not newbie (already has referrals)")) | |
2971 | 3093 | else { | |
2972 | - | let | |
2973 | - | let | |
2974 | - | if (if (isDefined( | |
2975 | - | then isDefined(addressFromString(value( | |
3094 | + | let ke = bC(mu) | |
3095 | + | let kf = getString(ke) | |
3096 | + | if (if (isDefined(kf)) | |
3097 | + | then isDefined(addressFromString(value(kf))) | |
2976 | 3098 | else false) | |
2977 | - | then throw((( | |
3099 | + | then throw(((mu + " already has refBy: ") + value(kf))) | |
2978 | 3100 | else { | |
2979 | - | let | |
2980 | - | let | |
2981 | - | let | |
2982 | - | then split_4C(value( | |
3101 | + | let my = bF(mt) | |
3102 | + | let mz = getString(my) | |
3103 | + | let mA = if (isDefined(mz)) | |
3104 | + | then split_4C(value(mz), "_") | |
2983 | 3105 | else nil | |
2984 | - | if (containsElement( | |
2985 | - | then throw(((( | |
3106 | + | if (containsElement(mA, mu)) | |
3107 | + | then throw((((mt + " already contains ") + mu) + " within referrals")) | |
2986 | 3108 | else { | |
2987 | - | let | |
2988 | - | let | |
2989 | - | then value( | |
2990 | - | else makeString_2C(( | |
2991 | - | $Tuple2([StringEntry( | |
3109 | + | let mB = makeString_2C((mA :+ mu), "_") | |
3110 | + | let mC = if (containsElement(mx, mt)) | |
3111 | + | then value(mw) | |
3112 | + | else makeString_2C((mx :+ mt), "_") | |
3113 | + | $Tuple2([StringEntry(ke, mt), StringEntry(my, mB), StringEntry(mv, mC), lc], 0) | |
2992 | 3114 | } | |
2993 | 3115 | } | |
2994 | 3116 | } | |
2995 | 3117 | } | |
2996 | 3118 | } | |
2997 | 3119 | ||
2998 | 3120 | ||
2999 | 3121 | ||
3000 | - | @Callable( | |
3001 | - | func distributePoints ( | |
3002 | - | let | |
3003 | - | if ((size( | |
3122 | + | @Callable(gH) | |
3123 | + | func distributePoints (mD,mE,mF,mG,mH) = { | |
3124 | + | let lc = kZ(gH) | |
3125 | + | if ((size(gH.payments) != 0)) | |
3004 | 3126 | then throw("No payments required") | |
3005 | 3127 | else { | |
3006 | - | let c = toString( | |
3007 | - | let A = valueOrErrorMessage(getString( | |
3008 | - | let | |
3009 | - | let | |
3010 | - | let | |
3011 | - | let | |
3012 | - | let | |
3013 | - | let | |
3014 | - | if (( | |
3015 | - | then throw((("There are only " + toString( | |
3128 | + | let c = toString(gH.originCaller) | |
3129 | + | let A = valueOrErrorMessage(getString(bH(c)), "You don't have a duck staked") | |
3130 | + | let mI = I(c) | |
3131 | + | let mJ = valueOrElse(getInteger(an, mI), 0) | |
3132 | + | let mK = E(A) | |
3133 | + | let mL = valueOrElse(getInteger(an, mK), 0) | |
3134 | + | let mM = (mJ + mL) | |
3135 | + | let mN = ((((mD + mE) + mF) + mG) + mH) | |
3136 | + | if ((mN > mM)) | |
3137 | + | then throw((("There are only " + toString(mM)) + " free points to distribute")) | |
3016 | 3138 | else { | |
3017 | - | let | |
3018 | - | let aq = split(valueOrElse(getString(an, | |
3019 | - | let | |
3020 | - | $Tuple2([IntegerEntry( | |
3139 | + | let mO = B(A) | |
3140 | + | let aq = split(valueOrElse(getString(an, mO), "0_0_0_0_0"), "_") | |
3141 | + | let mP = (mJ - mN) | |
3142 | + | $Tuple2([IntegerEntry(mI, if ((0 > mP)) | |
3021 | 3143 | then 0 | |
3022 | - | else | |
3023 | - | then ( | |
3024 | - | else | |
3144 | + | else mP), IntegerEntry(mK, if ((0 > mP)) | |
3145 | + | then (mL + mP) | |
3146 | + | else mL), StringEntry(mO, makeString([toString((parseIntValue(aq[k]) + mD)), toString((parseIntValue(aq[l]) + mE)), toString((parseIntValue(aq[m]) + mF)), toString((parseIntValue(aq[n]) + mG)), toString((parseIntValue(aq[o]) + mH))], "_")), lc], 0) | |
3025 | 3147 | } | |
3026 | 3148 | } | |
3027 | 3149 | } | |
3028 | 3150 | ||
3029 | 3151 | ||
3030 | 3152 | ||
3031 | - | @Callable( | |
3032 | - | func splitByGlobalWeightsREADONLY ( | |
3033 | - | ||
3034 | - | ||
3035 | - | ||
3036 | - | @Callable( | |
3037 | - | func splitByGlobalAndLocalWeightsREADONLY ( | |
3038 | - | let | |
3039 | - | $Tuple2(nil, $Tuple2( | |
3040 | - | } | |
3041 | - | ||
3042 | - | ||
3043 | - | ||
3044 | - | @Callable( | |
3045 | - | func getBackpackREADONLY (A) = $Tuple2(nil, makeString( | |
3046 | - | ||
3047 | - | ||
3048 | - | ||
3049 | - | @Callable( | |
3153 | + | @Callable(gH) | |
3154 | + | func splitByGlobalWeightsREADONLY (eF) = $Tuple2(nil, eX(eF)) | |
3155 | + | ||
3156 | + | ||
3157 | + | ||
3158 | + | @Callable(gH) | |
3159 | + | func splitByGlobalAndLocalWeightsREADONLY (mQ,mR,gK) = { | |
3160 | + | let gD = gJ(gK) | |
3161 | + | $Tuple2(nil, $Tuple2(eX(mQ), eI(mR, gD))) | |
3162 | + | } | |
3163 | + | ||
3164 | + | ||
3165 | + | ||
3166 | + | @Callable(gH) | |
3167 | + | func getBackpackREADONLY (A) = $Tuple2(nil, makeString(hH(bI(A)), ":")) | |
3168 | + | ||
3169 | + | ||
3170 | + | ||
3171 | + | @Callable(gH) | |
3050 | 3172 | func getWarehouseREADONLY (P) = { | |
3051 | - | let | |
3052 | - | let | |
3053 | - | let | |
3054 | - | $Tuple2(nil, makeString_2C( | |
3055 | - | } | |
3056 | - | ||
3057 | - | ||
3058 | - | ||
3059 | - | @Callable( | |
3173 | + | let jp = value(assetInfo(fromBase58String(P))) | |
3174 | + | let hW = (dE(split(jp.description, "_")[dh]) / cE) | |
3175 | + | let hX = valueOrElse(getInteger(by(P)), 0) | |
3176 | + | $Tuple2(nil, makeString_2C(hU(bx(P), hW, hX), ":")) | |
3177 | + | } | |
3178 | + | ||
3179 | + | ||
3180 | + | ||
3181 | + | @Callable(gH) | |
3060 | 3182 | func saveLastTx () = { | |
3061 | - | let | |
3062 | - | if (!(containsElement([ | |
3183 | + | let iG = gH.caller | |
3184 | + | if (!(containsElement([dd, db, de, df], iG))) | |
3063 | 3185 | then throw("Access denied") | |
3064 | - | else $Tuple2([ | |
3065 | - | } | |
3066 | - | ||
3067 | - | ||
3068 | - | ||
3069 | - | @Callable( | |
3070 | - | func updateDuckStats (A, | |
3186 | + | else $Tuple2([kZ(gH)], 42) | |
3187 | + | } | |
3188 | + | ||
3189 | + | ||
3190 | + | ||
3191 | + | @Callable(gH) | |
3192 | + | func updateDuckStats (A,jX) = if ((gH.caller != db)) | |
3071 | 3193 | then throw("Access denied") | |
3072 | - | else | |
3073 | - | ||
3074 | - | ||
3075 | - | ||
3076 | - | @Callable( | |
3077 | - | func updateAccStats (c, | |
3078 | - | then ( | |
3194 | + | else jW(A, jX) | |
3195 | + | ||
3196 | + | ||
3197 | + | ||
3198 | + | @Callable(gH) | |
3199 | + | func updateAccStats (c,jX) = if (if ((gH.caller != db)) | |
3200 | + | then (gH.caller != df) | |
3079 | 3201 | else false) | |
3080 | 3202 | then throw("Access denied") | |
3081 | - | else | |
3082 | - | ||
3083 | - | ||
3084 | - | ||
3085 | - | @Callable( | |
3086 | - | func equipDuck ( | |
3087 | - | let | |
3088 | - | if ((size( | |
3203 | + | else kc(c, jX) | |
3204 | + | ||
3205 | + | ||
3206 | + | ||
3207 | + | @Callable(gH) | |
3208 | + | func equipDuck (mS) = { | |
3209 | + | let lc = kZ(gH) | |
3210 | + | if ((size(gH.payments) != 0)) | |
3089 | 3211 | then throw("No payments required") | |
3090 | 3212 | else { | |
3091 | - | let c = toString( | |
3092 | - | let A = valueOrErrorMessage(getString( | |
3093 | - | if ( | |
3213 | + | let c = toString(gH.originCaller) | |
3214 | + | let A = valueOrErrorMessage(getString(bH(c)), "You don't have a duck staked") | |
3215 | + | if (km(A)) | |
3094 | 3216 | then throw("equipDuck_checkTournament") | |
3095 | - | else if ( | |
3217 | + | else if (kn(A)) | |
3096 | 3218 | then throw("equipDuck_checkDelivery") | |
3097 | 3219 | else { | |
3098 | - | let | |
3099 | - | let | |
3100 | - | let | |
3101 | - | let | |
3102 | - | let | |
3103 | - | if ((size( | |
3220 | + | let gu = F(A) | |
3221 | + | let mT = split(valueOrElse(getString(gu), ",;,_,;,_,;,_,;,_,;,_,;,"), "_") | |
3222 | + | let hI = bI(A) | |
3223 | + | let il = hH(hI) | |
3224 | + | let lu = split(mS, "_") | |
3225 | + | if ((size(lu) != q)) | |
3104 | 3226 | then throw("Wrong equipment string") | |
3105 | 3227 | else { | |
3106 | - | let | |
3107 | - | let | |
3108 | - | let ao = if (( | |
3228 | + | let gw = gj(mT, fu(il[bk]), true, nil) | |
3229 | + | let gx = split(lu[p], ";")[1] | |
3230 | + | let ao = if ((gx == "")) | |
3109 | 3231 | then 0 | |
3110 | 3232 | else { | |
3111 | - | let | |
3112 | - | if (( | |
3233 | + | let gy = split(gx, ",")[0] | |
3234 | + | if ((gy == "")) | |
3113 | 3235 | then 0 | |
3114 | 3236 | else { | |
3115 | - | let | |
3116 | - | let | |
3117 | - | let | |
3118 | - | if (if (if (if (if (( | |
3237 | + | let fJ = split(gy, ":") | |
3238 | + | let cZ = fJ[0] | |
3239 | + | let gz = fJ[1] | |
3240 | + | if (if (if (if (if ((cZ == "06")) | |
3119 | 3241 | then true | |
3120 | - | else ( | |
3242 | + | else (cZ == "07")) | |
3121 | 3243 | then true | |
3122 | - | else ( | |
3123 | - | then ( | |
3244 | + | else (cZ == "08")) | |
3245 | + | then (gz != "") | |
3124 | 3246 | else false) | |
3125 | - | then (parseIntValue( | |
3247 | + | then (parseIntValue(gz) > 0) | |
3126 | 3248 | else false) | |
3127 | - | then parseIntValue(split( | |
3249 | + | then parseIntValue(split(aS[parseIntValue(cZ)], "_")[aU]) | |
3128 | 3250 | else 0 | |
3129 | 3251 | } | |
3130 | 3252 | } | |
3131 | - | let | |
3132 | - | let | |
3133 | - | let | |
3134 | - | $Tuple2([StringEntry( | |
3253 | + | let ge = am(this, A, ao, true) | |
3254 | + | let gA = gj(lu, gw, false, ge) | |
3255 | + | let mU = fz(gA) | |
3256 | + | $Tuple2([StringEntry(gu, mS), StringEntry(hI, makeString_2C([il[bh], il[bi], il[bj], mU], ":")), StringEntry(L(A), makeString([toString(ge[7]), toString(ge[8]), toString(ge[9]), toString(ge[10]), toString(ge[11])], "_")), lc], 0) | |
3135 | 3257 | } | |
3136 | 3258 | } | |
3137 | 3259 | } | |
3138 | 3260 | } | |
3139 | 3261 | ||
3140 | 3262 | ||
3141 | 3263 | ||
3142 | - | @Callable( | |
3143 | - | func fortificateLand (P, | |
3144 | - | let | |
3145 | - | if ((size( | |
3264 | + | @Callable(gH) | |
3265 | + | func fortificateLand (P,mV) = { | |
3266 | + | let lc = kZ(gH) | |
3267 | + | if ((size(gH.payments) != 0)) | |
3146 | 3268 | then throw("No payments required") | |
3147 | 3269 | else { | |
3148 | - | let c = toString( | |
3149 | - | let A = valueOrElse(getString( | |
3150 | - | let | |
3151 | - | let | |
3152 | - | let | |
3153 | - | let | |
3154 | - | let | |
3155 | - | let | |
3156 | - | let | |
3157 | - | let | |
3158 | - | let | |
3159 | - | let | |
3160 | - | let | |
3161 | - | let | |
3162 | - | let | |
3163 | - | let | |
3164 | - | let | |
3165 | - | let | |
3166 | - | let | |
3167 | - | let | |
3168 | - | let | |
3169 | - | let | |
3170 | - | let | |
3171 | - | let | |
3172 | - | $Tuple2([StringEntry( | |
3173 | - | } | |
3174 | - | } | |
3175 | - | ||
3176 | - | ||
3177 | - | ||
3178 | - | @Callable( | |
3179 | - | func initDuckTourAttempt (A) = if (( | |
3270 | + | let c = toString(gH.originCaller) | |
3271 | + | let A = valueOrElse(getString(bH(c)), "") | |
3272 | + | let fE = am(this, A, 0, false) | |
3273 | + | let mW = bz(P) | |
3274 | + | let mX = split(valueOrElse(getString(mW), ":0_15:0_18:0"), "_") | |
3275 | + | let jp = value(assetInfo(fromBase58String(P))) | |
3276 | + | let hW = (dE(split(jp.description, "_")[dh]) / cE) | |
3277 | + | let hX = valueOrElse(getInteger(by(P)), 0) | |
3278 | + | let hV = bx(P) | |
3279 | + | let ia = hU(hV, hW, hX) | |
3280 | + | let mY = split(ia[bc], "_") | |
3281 | + | let mZ = parseIntValue(mY[be]) | |
3282 | + | let na = parseIntValue(mY[bf]) | |
3283 | + | let nb = split(mV, "_") | |
3284 | + | let nc = gq(mX, fu(ia[bb]), mZ, na, true, nil) | |
3285 | + | let gw = nc._1 | |
3286 | + | let nd = nc._2 | |
3287 | + | let ne = nc._3 | |
3288 | + | let nf = gq(nb, gw, nd, ne, false, fE) | |
3289 | + | let gA = nf._1 | |
3290 | + | let ng = nf._2 | |
3291 | + | let nh = nf._3 | |
3292 | + | let mU = fz(gA) | |
3293 | + | let jV = makeString([mY[bd], toString(ng), toString(nh), mY[bg]], "_") | |
3294 | + | $Tuple2([StringEntry(mW, mV), StringEntry(hV, makeString_2C([ia[aY], ia[aZ], ia[ba], mU, jV], ":")), lc], 0) | |
3295 | + | } | |
3296 | + | } | |
3297 | + | ||
3298 | + | ||
3299 | + | ||
3300 | + | @Callable(gH) | |
3301 | + | func initDuckTourAttempt (A) = if ((gH.caller != de)) | |
3180 | 3302 | then throw("Access denied") | |
3181 | 3303 | else { | |
3182 | - | let | |
3183 | - | let | |
3184 | - | let | |
3185 | - | let | |
3186 | - | let | |
3187 | - | let | |
3188 | - | let | |
3189 | - | let | |
3190 | - | $Tuple2([ | |
3304 | + | let lc = kZ(gH) | |
3305 | + | let iY = z(A) | |
3306 | + | let iZ = ag(valueOrElse(getInteger(D(A)), 0)) | |
3307 | + | let kq = valueOrElse(getInteger(iY), iZ) | |
3308 | + | let ni = bJ(A) | |
3309 | + | let jn = valueOrElse(getString(ni), aJ) | |
3310 | + | let ce = valueOrElse(getInteger(de, bP), 0) | |
3311 | + | let nj = (toString(ce) + "_T_0") | |
3312 | + | $Tuple2([lc, IntegerEntry(J(A), kq), IntegerEntry(iY, iZ), StringEntry(K(A), jn), StringEntry(ni, nj)], nj) | |
3191 | 3313 | } | |
3192 | 3314 | ||
3193 | 3315 | ||
3194 | 3316 | ||
3195 | - | @Callable( | |
3317 | + | @Callable(gH) | |
3196 | 3318 | func breakAttempt () = { | |
3197 | - | let | |
3198 | - | let A = valueOrErrorMessage(getString( | |
3199 | - | let | |
3200 | - | let | |
3201 | - | if ((split( | |
3319 | + | let lc = kZ(gH) | |
3320 | + | let A = valueOrErrorMessage(getString(bH(toString(gH.caller))), "You don't have a duck staked") | |
3321 | + | let ni = bJ(A) | |
3322 | + | let jn = valueOrElse(getString(ni), aJ) | |
3323 | + | if ((split(jn, "_")[bm] != "T")) | |
3202 | 3324 | then throw("Your duck is not in the tournament") | |
3203 | 3325 | else { | |
3204 | - | let | |
3205 | - | let | |
3206 | - | $Tuple2([ | |
3207 | - | } | |
3208 | - | } | |
3209 | - | ||
3210 | - | ||
3211 | - | ||
3212 | - | @Callable( | |
3213 | - | func exitTournamentInternal (A) = if (( | |
3326 | + | let kv = getIntegerValue(J(A)) | |
3327 | + | let kw = getStringValue(K(A)) | |
3328 | + | $Tuple2([lc, IntegerEntry(z(A), kv), StringEntry(ni, kw)], jn) | |
3329 | + | } | |
3330 | + | } | |
3331 | + | ||
3332 | + | ||
3333 | + | ||
3334 | + | @Callable(gH) | |
3335 | + | func exitTournamentInternal (A) = if ((gH.caller != this)) | |
3214 | 3336 | then throw("Access denied") | |
3215 | 3337 | else { | |
3216 | - | let | |
3217 | - | let | |
3218 | - | $Tuple2([IntegerEntry(z(A), | |
3338 | + | let kv = getIntegerValue(J(A)) | |
3339 | + | let kw = getStringValue(K(A)) | |
3340 | + | $Tuple2([IntegerEntry(z(A), kv), StringEntry(bJ(A), kw)], false) | |
3219 | 3341 | } | |
3220 | 3342 | ||
3221 | 3343 | ||
3222 | 3344 | ||
3223 | - | @Callable( | |
3224 | - | func exitDeliveryInternal (A) = if (( | |
3345 | + | @Callable(gH) | |
3346 | + | func exitDeliveryInternal (A) = if ((gH.caller != this)) | |
3225 | 3347 | then throw("Access denied") | |
3226 | 3348 | else { | |
3227 | - | let jc = split(valueOrElse(getString(bI(A)), aJ), "_") | |
3228 | - | let ax = lastBlock.timestamp | |
3229 | - | let kd = parseIntValue(jc[bk]) | |
3230 | - | let ke = parseIntValue(jc[bm]) | |
3231 | - | let jh = valueOrErrorMessage(getString(bF(A)), "NFT duck is orphaned") | |
3232 | - | let mS = z(A) | |
3233 | - | let kX = getIntegerValue(mS) | |
3234 | - | let mT = if ((ke >= 3)) | |
3235 | - | then { | |
3236 | - | let mU = invoke(cR, "sendDeliveryReward", [jh], nil) | |
3237 | - | if ((mU == mU)) | |
3238 | - | then nil | |
3239 | - | else throw("Strict value is not equal to itself.") | |
3240 | - | } | |
3241 | - | else { | |
3242 | - | let mV = valueOrElse(getInteger(cR, bN), 0) | |
3243 | - | let mW = invoke(cR, "updateDeliveryLocked", [(mV - aM)], nil) | |
3244 | - | if ((mW == mW)) | |
3245 | - | then if ((0 >= kX)) | |
3246 | - | then nil | |
3247 | - | else [IntegerEntry(T(A), (kd + a))] | |
3248 | - | else throw("Strict value is not equal to itself.") | |
3249 | - | } | |
3250 | - | let mQ = getIntegerValue(J(A)) | |
3251 | - | let mR = getStringValue(K(A)) | |
3252 | - | $Tuple2(((mT :+ IntegerEntry(mS, mQ)) :+ StringEntry(bI(A), mR)), false) | |
3349 | + | let ma = ko(A) | |
3350 | + | $Tuple2((ma._1 ++ ma._2), false) | |
3253 | 3351 | } | |
3254 | 3352 | ||
3255 | 3353 | ||
3256 | 3354 | ||
3257 | - | @Callable(gw) | |
3258 | - | func prepareRobbery (iC,iD) = { | |
3259 | - | let kK = kH(gw) | |
3260 | - | if (!(sigVerify_8Kb(iC, iD, dK))) | |
3355 | + | @Callable(gH) | |
3356 | + | func autoExitDelivery (A) = if ((gH.caller != this)) | |
3357 | + | then throw("Access denied") | |
3358 | + | else { | |
3359 | + | let ma = ko(A) | |
3360 | + | $Tuple2(ma._1, $Tuple2(ma._3, ma._4)) | |
3361 | + | } | |
3362 | + | ||
3363 | + | ||
3364 | + | ||
3365 | + | @Callable(gH) | |
3366 | + | func prepareRobbery (iN,iO) = { | |
3367 | + | let lc = kZ(gH) | |
3368 | + | if (!(sigVerify_8Kb(iN, iO, dW))) | |
3261 | 3369 | then throw("signature does not match") | |
3262 | - | else if ((size( | |
3370 | + | else if ((size(gH.payments) != 1)) | |
3263 | 3371 | then throw("exactly 1 payment must be attached") | |
3264 | 3372 | else { | |
3265 | - | let | |
3266 | - | let | |
3267 | - | if (if (!(isDefined( | |
3373 | + | let ld = gH.payments[0] | |
3374 | + | let nk = ld.amount | |
3375 | + | if (if (!(isDefined(ld.assetId))) | |
3268 | 3376 | then true | |
3269 | - | else (value( | |
3377 | + | else (value(ld.assetId) != dl)) | |
3270 | 3378 | then throw("WLGOLD payments only!") | |
3271 | 3379 | else { | |
3272 | - | let | |
3273 | - | if ((size( | |
3380 | + | let fm = split(toUtf8String(iN), "|") | |
3381 | + | if ((size(fm) != 2)) | |
3274 | 3382 | then throw("Wrong message format") | |
3275 | 3383 | else { | |
3276 | - | let A = | |
3384 | + | let A = fm[0] | |
3277 | 3385 | let ay = au(this, A)._1 | |
3278 | - | if ((ay > | |
3279 | - | then throw(((("Payment " + toString( | |
3386 | + | if ((ay > nk)) | |
3387 | + | then throw(((("Payment " + toString(nk)) + " < required ") + toString(ay))) | |
3280 | 3388 | else { | |
3281 | - | let | |
3389 | + | let nl = split(fm[1], "_") | |
3282 | 3390 | let ax = lastBlock.timestamp | |
3283 | 3391 | let az = valueOrElse(getInteger(R(A)), 0) | |
3284 | 3392 | let aA = valueOrElse(getString(S(A)), "") | |
3285 | 3393 | let aB = valueOrElse(getInteger(Q(aA)), 0) | |
3286 | 3394 | if (if ((az != x)) | |
3287 | 3395 | then (aB > ax) | |
3288 | 3396 | else false) | |
3289 | 3397 | then throw(("You already started robbing, wait till " + toString(aB))) | |
3290 | 3398 | else { | |
3291 | - | func | |
3292 | - | let | |
3293 | - | let | |
3294 | - | if (( | |
3399 | + | func nm (eO,P) = { | |
3400 | + | let nn = valueOrElse(getInteger(O(P)), 0) | |
3401 | + | let no = valueOrElse(getInteger(Q(P)), 0) | |
3402 | + | if ((nn > size(u))) | |
3295 | 3403 | then throw("Invalid state") | |
3296 | - | else if ((ax > | |
3404 | + | else if ((ax > no)) | |
3297 | 3405 | then { | |
3298 | - | let | |
3299 | - | if ((0 >= | |
3300 | - | then | |
3406 | + | let np = valueOrElse(getInteger(br(P)), 0) | |
3407 | + | if ((0 >= np)) | |
3408 | + | then eO | |
3301 | 3409 | else { | |
3302 | - | let | |
3303 | - | let | |
3304 | - | let | |
3305 | - | let | |
3306 | - | let | |
3307 | - | let | |
3308 | - | if ((v > | |
3309 | - | then | |
3310 | - | else ( | |
3410 | + | let go = value(assetInfo(fromBase58String(P))) | |
3411 | + | let jt = split(go.description, "_") | |
3412 | + | let jf = dE(jt[dh]) | |
3413 | + | let nq = je(P, jf) | |
3414 | + | let gN = (ax - np) | |
3415 | + | let jw = fraction(gN, (nq * jf), a) | |
3416 | + | if ((v > jw)) | |
3417 | + | then eO | |
3418 | + | else (eO :+ P) | |
3311 | 3419 | } | |
3312 | 3420 | } | |
3313 | - | else | |
3421 | + | else eO | |
3314 | 3422 | } | |
3315 | 3423 | ||
3316 | - | let | |
3317 | - | let | |
3318 | - | let | |
3319 | - | let | |
3320 | - | func | |
3321 | - | then | |
3322 | - | else | |
3323 | - | ||
3324 | - | func | |
3325 | - | then | |
3424 | + | let nr = { | |
3425 | + | let eQ = nl | |
3426 | + | let eR = size(eQ) | |
3427 | + | let eS = nil | |
3428 | + | func eT (eU,eV) = if ((eV >= eR)) | |
3429 | + | then eU | |
3430 | + | else nm(eU, eQ[eV]) | |
3431 | + | ||
3432 | + | func eW (eU,eV) = if ((eV >= eR)) | |
3433 | + | then eU | |
3326 | 3434 | else throw("List size exceeds 10") | |
3327 | 3435 | ||
3328 | - | | |
3436 | + | eW(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eS, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
3329 | 3437 | } | |
3330 | - | if ((size( | |
3438 | + | if ((size(nr) == 0)) | |
3331 | 3439 | then throw("No candidates for robbery") | |
3332 | 3440 | else { | |
3333 | - | let | |
3334 | - | let P = | |
3335 | - | $Tuple2([IntegerEntry(O(P), w), IntegerEntry(Q(P), (ax + u[w])), IntegerEntry(R(A), y), StringEntry(S(A), P), | |
3441 | + | let ns = dO(size(nr), height, (iO + gH.transactionId)) | |
3442 | + | let P = nr[ns] | |
3443 | + | $Tuple2([IntegerEntry(O(P), w), IntegerEntry(Q(P), (ax + u[w])), IntegerEntry(R(A), y), StringEntry(S(A), P), lc], P) | |
3336 | 3444 | } | |
3337 | 3445 | } | |
3338 | 3446 | } | |
3339 | 3447 | } | |
3340 | 3448 | } | |
3341 | 3449 | } | |
3342 | 3450 | } | |
3343 | 3451 | ||
3344 | 3452 | ||
3345 | 3453 | ||
3346 | - | @Callable( | |
3347 | - | func robLand ( | |
3348 | - | let | |
3349 | - | if (!(sigVerify_8Kb( | |
3454 | + | @Callable(gH) | |
3455 | + | func robLand (iN,iO) = { | |
3456 | + | let lc = kZ(gH) | |
3457 | + | if (!(sigVerify_8Kb(iN, iO, dW))) | |
3350 | 3458 | then throw("signature does not match") | |
3351 | 3459 | else { | |
3352 | - | let | |
3353 | - | let A = valueOrErrorMessage(getString( | |
3460 | + | let bL = toString(gH.caller) | |
3461 | + | let A = valueOrErrorMessage(getString(bH(bL)), "You don't have a duck staked") | |
3354 | 3462 | let ax = lastBlock.timestamp | |
3355 | - | $Tuple2([ | |
3356 | - | } | |
3357 | - | } | |
3358 | - | ||
3359 | - | ||
3360 | - | ||
3361 | - | @Callable( | |
3362 | - | func acceptDelivery () = if (!( | |
3463 | + | $Tuple2([lc, IntegerEntry(M(A), ax)], 0) | |
3464 | + | } | |
3465 | + | } | |
3466 | + | ||
3467 | + | ||
3468 | + | ||
3469 | + | @Callable(gH) | |
3470 | + | func acceptDelivery () = if (!(cu)) | |
3363 | 3471 | then throw("Delivery feature is turned off!") | |
3364 | 3472 | else { | |
3365 | - | let | |
3366 | - | let | |
3367 | - | let A = valueOrErrorMessage(getString( | |
3368 | - | let | |
3369 | - | let | |
3370 | - | if ((aM > ( | |
3371 | - | then throw(((("Delivery is not available, fund=" + | |
3473 | + | let lc = kZ(gH) | |
3474 | + | let bL = toString(gH.caller) | |
3475 | + | let A = valueOrErrorMessage(getString(bH(bL)), "You don't have a duck staked") | |
3476 | + | let nt = valueOrElse(getInteger(db, bN), 0) | |
3477 | + | let kt = valueOrElse(getInteger(db, bO), 0) | |
3478 | + | if ((aM > (nt - kt))) | |
3479 | + | then throw(((("Delivery is not available, fund=" + dJ(nt, 6)) + ", locked=") + dJ(kt, 6))) | |
3372 | 3480 | else { | |
3373 | 3481 | let ax = lastBlock.timestamp | |
3374 | - | let | |
3375 | - | if (( | |
3376 | - | then throw(("Delivery is forbidden for your duck until " + toString( | |
3377 | - | else if ( | |
3482 | + | let nu = valueOrElse(getInteger(T(A)), 0) | |
3483 | + | if ((nu > ax)) | |
3484 | + | then throw(("Delivery is forbidden for your duck until " + toString(nu))) | |
3485 | + | else if (km(A)) | |
3378 | 3486 | then throw("acceptDelivery_checkTournament") | |
3379 | - | else if ( | |
3487 | + | else if (kn(A)) | |
3380 | 3488 | then throw("acceptDelivery_checkDelivery") | |
3381 | 3489 | else { | |
3382 | - | let | |
3383 | - | let | |
3384 | - | let | |
3385 | - | let | |
3386 | - | let | |
3387 | - | let | |
3388 | - | let | |
3389 | - | $Tuple2([ | |
3490 | + | let nv = dy(invoke(db, "updateDeliveryLocked", [(kt + aM)], nil)) | |
3491 | + | let iY = z(A) | |
3492 | + | let iZ = ag(valueOrElse(getInteger(D(A)), 0)) | |
3493 | + | let kq = valueOrElse(getInteger(iY), iZ) | |
3494 | + | let ni = bJ(A) | |
3495 | + | let jn = valueOrElse(getString(ni), aJ) | |
3496 | + | let nw = (toString(ax) + "_D_0") | |
3497 | + | $Tuple2([lc, IntegerEntry(J(A), kq), IntegerEntry(iY, iZ), StringEntry(K(A), jn), StringEntry(ni, nw)], $Tuple2(nw, nv)) | |
3390 | 3498 | } | |
3391 | 3499 | } | |
3392 | 3500 | } | |
3393 | 3501 | ||
3394 | 3502 |
github/deemru/w8io/169f3d6 1662.37 ms ◑![]()