tx · 9VRFbgU7DEesCrNx5CzXQJKAc5iqakarZNoenLCrzBFF

3NDCyBG5q85JuaRiigUeEtainyjCQT3XpZm:  -0.10700000 Waves

2023.10.09 19:23 [2791327] smart account 3NDCyBG5q85JuaRiigUeEtainyjCQT3XpZm > SELF 0.00000000 Waves

{ "type": 13, "id": "9VRFbgU7DEesCrNx5CzXQJKAc5iqakarZNoenLCrzBFF", "fee": 10700000, "feeAssetId": null, "timestamp": 1696868624771, "version": 2, "chainId": 84, "sender": "3NDCyBG5q85JuaRiigUeEtainyjCQT3XpZm", "senderPublicKey": "EVooykMNV691Venwp1dHUTBd7KWequzUcda57Wd3LQEX", "proofs": [ "512uoZrguEmRKiiTDxnbgEB234sFpu2s4mw1MaHcXgEKFe5Vhkgd94XJkKzr4cLZJ5kf56sHTsNx7nwV6MtyxLpx" ], "script": "base64:BgLiAQgCEgMKAQgSBAoCCAESAwoBBBIAEgMKAQgSABIDCgEIEgQKAgEIEgQKAgEIEgQKAgICEgUKAwEBARIAEgQKAggIEgASABIECgICAhIAEgMKAQgSBAoCCAgSAwoBGBIECgIICBIECgIICBIDCgEIEgMKARgSAwoBCBIFCgMICAgSBAoCCAgSBwoFAQEBAQESAwoBARIFCgMBAQgSAwoBCBIDCgEIEgASBAoCCAESBAoCCAESAwoBCBIECgIICBIDCgEIEgASAwoBCBIDCgEIEgQKAggBEgQKAgICEgQKAgICEgCdAgAJREFZTUlMTElTAIC4mSkAE0RFTElWRVJZX1BVTklTSE1FTlQA4NQDARRrZXlMYXN0QXJiVGltZUJ5VXNlcgEEYWRkcgkArAICAhBsYXN0QXJiVGltZVVzZXJfBQRhZGRyAAZTQ0FMRTgAgMLXLwAMeHBMZXZlbFNjYWxlAIAZAA94cExldmVsUmVjaXBQb3cAoB8AEm51bVBvaW50c09uTGV2ZWxVcAADAA5yb2JiZXJ5Q29zdE1pbgCAwtcvABRyb2JiZXJ5Q29vbGRvd25Db2VmZgCQAwAMcmVxdWlyZW1lbnRzCQDMCAICCFN0cmVuZ3RoCQDMCAICCEFjY3VyYWN5CQDMCAICCUludGVsbGVjdAkAzAgCAglFbmR1cmFuY2UJAMwIAgIJRGV4dGVyaXR5CQDMCAICBUxldmVsCQDMCAICBkhlYWx0aAUDbmlsAAxjaGFyU3RyZW5ndGgAAAAMY2hhckFjY3VyYWN5AAEADWNoYXJJbnRlbGxlY3QAAgANY2hhckVuZHVyYW5jZQADAA1jaGFyRGV4dGVyaXR5AAQAC3NlZ0JhY2twYWNrAAAAC05VTVNFR01FTlRTAAYACk5VTU1BSU5BVVgAAgAITUFYU0xPVFMAAgANTUFYUFJPRElOU0xPVAAeABBsYW5kUm9iQ29vbGRvd25zCQDMCAIAAAkAzAgCAMDPJAkAzAgCAKD3NgkAzAgCAIDczBQJAMwIAgCArqYKBQNuaWwADk1JTl9SRVNfVE9fUk9CAIDaxAkADHJvYklkeExvY2tlZAABAAtkdWNrSWR4RnJlZQAAABBkdWNrSWR4UHJlcGFyaW5nAAEBDWtleUR1Y2tIZWFsdGgBC2R1Y2tBc3NldElkCQCsAgICC2R1Y2tIZWFsdGhfBQtkdWNrQXNzZXRJZAEMa2V5RHVja0NoYXJzAQtkdWNrQXNzZXRJZAkArAICAgpkdWNrQ2hhcnNfBQtkdWNrQXNzZXRJZAEJa2V5RHVja1hQAQtkdWNrQXNzZXRJZAkArAICAgdkdWNrWFBfBQtkdWNrQXNzZXRJZAEMa2V5RHVja0xldmVsAQtkdWNrQXNzZXRJZAkArAICAgpkdWNrTGV2ZWxfBQtkdWNrQXNzZXRJZAERa2V5RHVja0ZyZWVQb2ludHMBC2R1Y2tBc3NldElkCQCsAgICD2R1Y2tGcmVlUG9pbnRzXwULZHVja0Fzc2V0SWQBEGtleUR1Y2tFcXVpcG1lbnQBC2R1Y2tBc3NldElkCQCsAgICDmR1Y2tFcXVpcG1lbnRfBQtkdWNrQXNzZXRJZAEJa2V5VXNlclhQAQRhZGRyCQCsAgICB3VzZXJYUF8FBGFkZHIBDGtleVVzZXJMZXZlbAEEYWRkcgkArAICAgp1c2VyTGV2ZWxfBQRhZGRyARFrZXlVc2VyRnJlZVBvaW50cwEEYWRkcgkArAICAg91c2VyRnJlZVBvaW50c18FBGFkZHIBDmtleVNhdmVkSGVhbHRoAQtkdWNrQXNzZXRJZAkArAICAgxzYXZlZEhlYWx0aF8FC2R1Y2tBc3NldElkARBrZXlTYXZlZExvY2F0aW9uAQtkdWNrQXNzZXRJZAkArAICAg5zYXZlZExvY2F0aW9uXwULZHVja0Fzc2V0SWQBDGtleUR1Y2tCdWZmcwELZHVja0Fzc2V0SWQJAKwCAgIKZHVja0J1ZmZzXwULZHVja0Fzc2V0SWQBGGtleUxhc3RSb2JiZXJ5VGltZUJ5RHVjawELZHVja0Fzc2V0SWQJAKwCAgIQbGFzdFJvYmJlcnlUaW1lXwULZHVja0Fzc2V0SWQBGGtleUxhc3RSb2JiZXJ5Q29zdEJ5RHVjawELZHVja0Fzc2V0SWQJAKwCAgIQbGFzdFJvYmJlcnlDb3N0XwULZHVja0Fzc2V0SWQBE2tleUxhbmRSb2JiZXJ5U3RhdGUBC2xhbmRBc3NldElkCQCsAgICEWxhbmRSb2JiZXJ5U3RhdGVfBQtsYW5kQXNzZXRJZAESa2V5TGFuZENvb2xkb3duRVRBAQtsYW5kQXNzZXRJZAkArAICAhBsYW5kQ29vbGRvd25FVEFfBQtsYW5kQXNzZXRJZAETa2V5RHVja1JvYmJlcnlTdGF0ZQELZHVja0Fzc2V0SWQJAKwCAgIRZHVja1JvYmJlcnlTdGF0ZV8FC2R1Y2tBc3NldElkARNrZXlMb2NrZWRMYW5kQnlEdWNrAQtkdWNrQXNzZXRJZAkArAICAhFsb2NrZWRMYW5kQnlEdWNrXwULZHVja0Fzc2V0SWQBFmtleURlbGl2ZXJ5RGVsYXlCeUR1Y2sBC2R1Y2tBc3NldElkCQCsAgICFGRlbGl2ZXJ5RGVsYXlCeUR1Y2tfBQtkdWNrQXNzZXRJZAAHeHBDbGFpbQCQTgAPeHBTdWNjZXNzRmxpZ2h0AJBOAAx4cEZhaWxGbGlnaHQA0A8ACHhwQ2FsbEVTAKCNBgAMeHBDdXN0b21OYW1lAMCEPQAKeHBOZXdTTGFuZADAlrECAA54cFVwZ3JhZGVJbmZyYQCQTgAHeHBNZXJnZQDAhD0ACXhwT25ib2FyZADAhD0ABnhwSGVhbACQTgEJbGV2ZWxCeVhQAQJ4cAkAawMFDHhwTGV2ZWxTY2FsZQkAbAYFAnhwAAQFD3hwTGV2ZWxSZWNpcFBvdwAEAAQFBERPV04FBlNDQUxFOAEJbWF4SGVhbHRoAQVsZXZlbAkAZAIAZAUFbGV2ZWwBB2xldmVsVXACCWN1cnJMZXZlbAVuZXdYUAQIbmV3TGV2ZWwJAQlsZXZlbEJ5WFABBQVuZXdYUAkAzAgCBQhuZXdMZXZlbAkAzAgCCQBoAgUSbnVtUG9pbnRzT25MZXZlbFVwCQBlAgUIbmV3TGV2ZWwFCWN1cnJMZXZlbAUDbmlsAQxnZXREdWNrU3RhdHMED3N0YWtpbmdDb250cmFjdAtkdWNrQXNzZXRJZApidWZmRWZmZWN0CmZvcmNlQnVmZnMEBWNoYXJzCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUPc3Rha2luZ0NvbnRyYWN0CQEMa2V5RHVja0NoYXJzAQULZHVja0Fzc2V0SWQCCTBfMF8wXzBfMAIBXwQDbHZsCQELdmFsdWVPckVsc2UCCQCaCAIFD3N0YWtpbmdDb250cmFjdAkBDGtleUR1Y2tMZXZlbAEFC2R1Y2tBc3NldElkAAAEBmhlYWx0aAkBC3ZhbHVlT3JFbHNlAgkAmggCBQ9zdGFraW5nQ29udHJhY3QJAQ1rZXlEdWNrSGVhbHRoAQULZHVja0Fzc2V0SWQJAQltYXhIZWFsdGgBBQNsdmwECnN0YXRlQnVmZnMJALUJAgkBC3ZhbHVlT3JFbHNlAgkAnQgCBQ9zdGFraW5nQ29udHJhY3QJAQxrZXlEdWNrQnVmZnMBBQtkdWNrQXNzZXRJZAIJMF8wXzBfMF8wAgFfCQDOCAIJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBWNoYXJzBQxjaGFyU3RyZW5ndGgJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBWNoYXJzBQxjaGFyQWNjdXJhY3kJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBWNoYXJzBQ1jaGFySW50ZWxsZWN0CQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVjaGFycwUNY2hhckVuZHVyYW5jZQkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFY2hhcnMFDWNoYXJEZXh0ZXJpdHkJAMwIAgUDbHZsCQDMCAIFBmhlYWx0aAUDbmlsAwUKZm9yY2VCdWZmcwkAzAgCBQpidWZmRWZmZWN0CQDMCAIFCmJ1ZmZFZmZlY3QJAMwIAgUKYnVmZkVmZmVjdAkAzAgCBQpidWZmRWZmZWN0CQDMCAIFCmJ1ZmZFZmZlY3QFA25pbAkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUKc3RhdGVCdWZmcwUMY2hhclN0cmVuZ3RoCQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQpzdGF0ZUJ1ZmZzBQxjaGFyQWNjdXJhY3kJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCnN0YXRlQnVmZnMFDWNoYXJJbnRlbGxlY3QJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCnN0YXRlQnVmZnMFDWNoYXJFbmR1cmFuY2UJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCnN0YXRlQnVmZnMFDWNoYXJEZXh0ZXJpdHkFA25pbAEOZ2V0Um9iYmVyeURhdGECD3N0YWtpbmdDb250cmFjdAtkdWNrQXNzZXRJZAQLbGFzdFJvYkNvc3QJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPc3Rha2luZ0NvbnRyYWN0CQEYa2V5TGFzdFJvYmJlcnlDb3N0QnlEdWNrAQULZHVja0Fzc2V0SWQAAAQLbGFzdFJvYlRpbWUJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPc3Rha2luZ0NvbnRyYWN0CQEYa2V5TGFzdFJvYmJlcnlUaW1lQnlEdWNrAQULZHVja0Fzc2V0SWQAAAQDbm93CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQHcm9iQ29zdAkAlgMBCQDMCAIFDnJvYmJlcnlDb3N0TWluCQDMCAIJAGUCBQtsYXN0Um9iQ29zdAkAaAIFFHJvYmJlcnlDb29sZG93bkNvZWZmCQBlAgUDbm93BQtsYXN0Um9iVGltZQUDbmlsBAlkdWNrU3RhdGUJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPc3Rha2luZ0NvbnRyYWN0CQETa2V5RHVja1JvYmJlcnlTdGF0ZQEFC2R1Y2tBc3NldElkAAAECmxvY2tlZExhbmQJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUPc3Rha2luZ0NvbnRyYWN0CQETa2V5TG9ja2VkTGFuZEJ5RHVjawEFC2R1Y2tBc3NldElkAgAEB2xhbmRFVEEJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPc3Rha2luZ0NvbnRyYWN0CQESa2V5TGFuZENvb2xkb3duRVRBAQUKbG9ja2VkTGFuZAAACQCXCgUFB3JvYkNvc3QFC2xhc3RSb2JUaW1lBQlkdWNrU3RhdGUFCmxvY2tlZExhbmQFB2xhbmRFVEEACkxBTkRQUkVGSVgCBExBTkQACkRVQ0tQUkVGSVgCBERVQ0sACkFSVFBSRVNBTEUCB1BSRVNBTEUABk5VTVJFUwAGABhNQVhfTEFORFNfU1RBS0VEX0JZX1VTRVIAGQAPREFJTFlSRVNCWVBJRUNFAID40gEADFdITVVMVElQTElFUgCAyK+gJQAPREVGQVVMVExPQ0FUSU9OAg9BZnJpY2FfRl9BZnJpY2EAEFJFU09VUkNFUFJJQ0VNSU4A1bUCAApFU1NFTExDT0VGAAoAFU1JTl9VU0RUX0ZFRV9ERUxJVkVSWQDQhgMAElRFTl9NSU5VVEVTX01JTExJUwDAzyQACXByb2RUeXBlcwkAzAgCAhBGaXJzdCBBaWQgS2l0IEwxCQDMCAICEEZpcnN0IEFpZCBLaXQgTDIJAMwIAgIQRmlyc3QgQWlkIEtpdCBMMwkAzAgCAgtCYWNrcGFjayBMMQkAzAgCAgtCYWNrcGFjayBMMgkAzAgCAgtCYWNrcGFjayBMMwkAzAgCAg5Gb29kIFJhdGlvbiBMMQkAzAgCAg5Gb29kIFJhdGlvbiBMMgkAzAgCAg5Gb29kIFJhdGlvbiBMMwkAzAgCAgtKZXQgUGFjayBMMQkAzAgCAgtKZXQgUGFjayBMMgkAzAgCAgtKZXQgUGFjayBMMwkAzAgCAglTaGllbGQgTDEJAMwIAgIJU2hpZWxkIEwyCQDMCAICCVNoaWVsZCBMMwkAzAgCAgdNaW5lIEwxCQDMCAICB01pbmUgTDIJAMwIAgIHTWluZSBMMwkAzAgCAgdUcmFwIEwxCQDMCAICB1RyYXAgTDIJAMwIAgIHVHJhcCBMMwUDbmlsAApjb250aW5lbnRzCQDMCAICCEFtZXJpY2FzCQDMCAICBkV1cm9wZQkAzAgCAgRBc2lhCQDMCAICBkFmcmljYQkAzAgCAgdPY2VhbmlhBQNuaWwACUNPRUZGMk1BVACAreIEABBmb3J0QWxsb3dlZFByb2RzCQDMCAIADwkAzAgCABAJAMwIAgARCQDMCAIAEgkAzAgCABMJAMwIAgAUBQNuaWwAEHByb2R1Y3Rpb25NYXRyaXgJAMwIAgIlOF84XzhfMTdfMTdfNDJfMTJfMF8zMF8wLDAsMCwwLDAsMCwwXwkAzAgCAiU4XzhfOF8xN18xN180Ml8yNF8wXzYwXzAsMCw1LDIsMCwwLDBfCQDMCAICJzhfOF84XzE3XzE3XzQyXzM2XzBfMTIwXzAsMCwxMCw0LDAsMCwwXwkAzAgCAik4XzE5XzE5XzhfMjdfMTlfMjZfMV8yMF8wLDAsMCwwLDAsMCwwXzAwMQkAzAgCAik4XzE5XzE5XzhfMjdfMTlfNTJfMV80MF8wLDAsMCwwLDAsMCwwXzAwMQkAzAgCAik4XzE5XzE5XzhfMjdfMTlfNzhfMV84MF8wLDAsMCwwLDAsMCwwXzAwMQkAzAgCAiU4XzhfOF84XzhfNjBfMTNfMl8yXzAsMCwwLDAsMCwwLDBfMDExCQDMCAICJThfOF84XzhfOF82MF8yNl8yXzRfMCwwLDAsMCwwLDAsMF8wMTEJAMwIAgIlOF84XzhfOF84XzYwXzM5XzJfOF8wLDAsMCwwLDAsMCwwXzAxMQkAzAgCAikzMF8zMF8zXzE3XzE3XzNfMzBfM18zMF8wLDAsMCwwLDAsMCwwXzExMQkAzAgCAikzMF8zMF8zXzE3XzE3XzNfNjBfM181MF8wLDAsMCwwLDAsMCwwXzExMQkAzAgCAikzMF8zMF8zXzE3XzE3XzNfOTBfM183MF8wLDAsMCwwLDAsMCwwXzExMQkAzAgCAisxOF8xOF8xMF8xOF8xOF8xOF8xMV80XzEwXzAsMCwwLDAsMCwwLDBfMjAxCQDMCAICKzE4XzE4XzEwXzE4XzE4XzE4XzIyXzRfMjBfMCwwLDAsMCwwLDAsMF8yMDEJAMwIAgIrMThfMThfMTBfMThfMThfMThfMzNfNF8zMF8wLDAsMCwwLDAsMCwwXzIwMQkAzAgCAio0XzEzXzIyXzRfMzVfMjJfMjNfMF81MCwxLDBfMCwwLDAsMCwwLDAsMF8JAMwIAgIqNF8xM18yMl80XzM1XzIyXzQ2XzBfNTAsMSwxXzAsMiw1LDAsMCwwLDBfCQDMCAICKzRfMTNfMjJfNF8zNV8yMl82OV8wXzUwLDIsMV8wLDUsMTAsMCwwLDAsMF8JAMwIAgIqNV8yNV80MF81XzEwXzE1XzIwXzFfMzAsMSwxXzAsMCwwLDAsMCwwLDBfCQDMCAICKjVfMjVfNDBfNV8xMF8xNV80MF8xXzMwLDEsMl8yLDEsMywwLDAsMCwwXwkAzAgCAio1XzI1XzQwXzVfMTBfMTVfNjBfMV8zMCwxLDNfNSwyLDgsMCwwLDAsMF8FA25pbAAJcklkeENvZWZmAAYACnJJZHhFZmZlY3QACAAQcklkeFJlcXVpcmVtZW50cwAJAAlySWR4U2xvdHMACgAOUFJPRFVDVFBLR1NJWkUACgALd2hJZHhMZXZlbHMAAAAId2hJZHhSZXMAAQAId2hJZHhNYXQAAgAJd2hJZHhQcm9kAAMACXdoSWR4TE9GVAAEAAl2b2xMb2NrZWQAAAALdm9sT2NjdXBpZWQAAQAHdm9sRnJlZQACAAh2b2xUb3RhbAADAApicElkeExldmVsAAAACGJwSWR4UmVzAAEACGJwSWR4TWF0AAIACWJwSWR4UHJvZAADAA9sb2NJZHhDb250aW5lbnQAAAAKbG9jSWR4VHlwZQABAAhsb2NJZHhJZAACARVrZXlMYW5kQXNzZXRJZFRvT3duZXIBB2Fzc2V0SWQJAKwCAgIDbm9fBQdhc3NldElkARprZXlMYW5kQXNzZXRJZFRvQ3VzdG9tTmFtZQEHYXNzZXRJZAkArAICAgVsY25hXwUHYXNzZXRJZAEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEHYXNzZXRJZAkArAICAgNzdF8FB2Fzc2V0SWQBIGtleUxhbmRBcnRTdGF0dXNCeVR5cGVBbmRBc3NldElkAgR0eXBlB2Fzc2V0SWQJALkJAgkAzAgCAgNsYXMJAMwIAgUEdHlwZQkAzAgCBQdhc3NldElkBQNuaWwCAV8BImtleVN0YWtlZFRpbWVCeVR5cGVBc3NldElkQW5kT3duZXIDB25mdFR5cGUHYXNzZXRJZAlvd25lckFkZHIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAgZzdHRhb18FB25mdFR5cGUCAV8FB2Fzc2V0SWQCAV8FCW93bmVyQWRkcgESa2V5V2FyZWhvdXNlQnlMYW5kAQtsYW5kQXNzZXRJZAkArAICAgN3aF8FC2xhbmRBc3NldElkARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQdhc3NldElkCQCsAgICC2luZnJhTGV2ZWxfBQdhc3NldElkARdrZXlGb3J0aWZpY2F0aW9uc0J5TGFuZAELbGFuZEFzc2V0SWQJAKwCAgIPZm9ydGlmaWNhdGlvbnNfBQtsYW5kQXNzZXRJZAEaa2V5RHVja0Fzc2V0SWRUb0N1c3RvbU5hbWUBB2Fzc2V0SWQJAKwCAgIYZHVja0N1c3RvbU5hbWVCeUFzc2V0SWRfBQdhc3NldElkARZrZXlBZGRyZXNzVG9DdXN0b21OYW1lAQRhZGRyCQCsAgICGGFjY291bnRDdXN0b21OYW1lQnlBZGRyXwUEYWRkcgEPa2V5QWRkcmVzc1JlZkJ5AQRhZGRyCQCsAgICCWFjY1JlZkJ5XwUEYWRkcgEca2V5T25ib2FyZEFydEFjdGl2YXRlZE9uRHVjawELZHVja0Fzc2V0SWQJAKwCAgIab25ib2FyZEFydEFjdGl2YXRlZE9uRHVja18FC2R1Y2tBc3NldElkARxrZXlPbmJvYXJkQXJ0RHVja0FjdGl2YXRlZEJ5AQRhZGRyCQCsAgICGm9uYm9hcmRBcnRBY3RpdmF0ZWREdWNrQnlfBQRhZGRyARNrZXlBZGRyZXNzUmVmZXJyYWxzAQRhZGRyCQCsAgICDWFjY1JlZmVycmFsc18FBGFkZHIBEGtleUR1Y2tJZFRvT3duZXIBB2Fzc2V0SWQJAKwCAgIKZHVja093bmVyXwUHYXNzZXRJZAEUa2V5U3Rha2VkRHVja0J5T3duZXIBCW93bmVyQWRkcgkArAICAhJzdGFrZWREdWNrQnlPd25lcl8FCW93bmVyQWRkcgERa2V5QmFja3BhY2tCeUR1Y2sBC2R1Y2tBc3NldElkCQCsAgICCWJhY2tQYWNrXwULZHVja0Fzc2V0SWQBD2tleUR1Y2tMb2NhdGlvbgELZHVja0Fzc2V0SWQJAKwCAgINZHVja0xvY2F0aW9uXwULZHVja0Fzc2V0SWQBFWtleVVzZXJHd2xSZWxlYXNlVGltZQEIdXNlckFkZHIJAKwCAgIaJXMlc19fdXNlckd3bFJlbGVhc2VUaW1lX18FCHVzZXJBZGRyAQ5rZXlFc1dhcmVob3VzZQACGmVtZXJnZW5jeVdhcmVob3VzZVByb2R1Y3RzAA9kZWxpdmVyeUZ1bmRLZXkCDGRlbGl2ZXJ5RnVuZAARZGVsaXZlcnlMb2NrZWRLZXkCDmRlbGl2ZXJ5TG9ja2VkAA1sYXN0VG91cklkS2V5Ag4lc19fbGFzdFRvdXJJZAEVa2V5VG91clN0YXRpY0RhdGFCeUlkAQN0SWQJAKwCAgIWJXMlZF9fdG91clN0YXRpY0RhdGFfXwkApAMBBQN0SWQBFmtleVRvdXJEeW5hbWljRGF0YUJ5SWQBA3RJZAkArAICAhclcyVkX190b3VyRHluYW1pY0RhdGFfXwkApAMBBQN0SWQBGmtleUJlc3RSZXN1bHRCeVRvdXJBbmREdWNrAgN0SWQLZHVja0Fzc2V0SWQJALkJAgkAzAgCAh8lcyVkJXNfX2Jlc3RSZXN1bHRCeVRvdXJBbmREdWNrCQDMCAIJAKQDAQUDdElkCQDMCAIFC2R1Y2tBc3NldElkBQNuaWwCAl9fAAlpZHhTdGF0aWMAAAAKaWR4RHluYW1pYwABAAp0U3RhdGljRW5kAAYADnREeW5hbWljU3RhdHVzAAEBC2dldFRvdXJEYXRhAgx0b3VyQ29udHJhY3QDdElkBAZzdGF0aWMJALUJAgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFDHRvdXJDb250cmFjdAkBFWtleVRvdXJTdGF0aWNEYXRhQnlJZAEFA3RJZAkArAICCQCsAgICGUVycm9yIHJlYWRpbmcgdG91cm5hbWVudCAJAKQDAQUDdElkAgUgZGF0YQICX18EB2R5bmFtaWMJALwJAgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFDHRvdXJDb250cmFjdAkBFmtleVRvdXJEeW5hbWljRGF0YUJ5SWQBBQN0SWQJAKwCAgkArAICAhlFcnJvciByZWFkaW5nIHRvdXJuYW1lbnQgCQCkAwEFA3RJZAIFIGRhdGECAl9fCQDMCAIFBnN0YXRpYwkAzAgCBQdkeW5hbWljBQNuaWwBDmlzSW5Ub3VybmFtZW50Agx0b3VyQ29udHJhY3QIbG9jYXRpb24EBmxhc3RJZAkBC3ZhbHVlT3JFbHNlAgkAmggCBQx0b3VyQ29udHJhY3QFDWxhc3RUb3VySWRLZXkAAAQDbG9jCQC1CQIFCGxvY2F0aW9uAgFfBANub3cIBQlsYXN0QmxvY2sJdGltZXN0YW1wBAV0RGF0YQkBC2dldFRvdXJEYXRhAgUMdG91ckNvbnRyYWN0BQZsYXN0SWQEBnN0YXRpYwkAkQMCBQV0RGF0YQUJaWR4U3RhdGljBAdkeW5hbWljCQCRAwIFBXREYXRhBQppZHhEeW5hbWljAwMDCQAAAgkAkQMCBQNsb2MFCmxvY0lkeFR5cGUCAVQJAAACCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDbG9jBQ9sb2NJZHhDb250aW5lbnQFBmxhc3RJZAcJAAACCQCRAwIFB2R5bmFtaWMFDnREeW5hbWljU3RhdHVzAgpJTlBST0dSRVNTBwkAZgIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQZzdGF0aWMFCnRTdGF0aWNFbmQFA25vdwcBDGlzSW5EZWxpdmVyeQEIbG9jYXRpb24EA2xvYwkAtQkCBQhsb2NhdGlvbgIBXwQDbm93CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQJc3RhcnRUaW1lCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDbG9jBQ9sb2NJZHhDb250aW5lbnQECGRpc3RhbmNlCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDbG9jBQhsb2NJZHhJZAMDCQAAAgkAkQMCBQNsb2MFCmxvY0lkeFR5cGUCAUQJAGYCBQNub3cJAGQCBQlzdGFydFRpbWUFElRFTl9NSU5VVEVTX01JTExJUwcJAGcCAAMFCGRpc3RhbmNlBwEPaXNVc3VhbExvY2F0aW9uAQhsb2NhdGlvbgQHbG9jVHlwZQkAkQMCCQC1CQIFCGxvY2F0aW9uAgFfBQpsb2NJZHhUeXBlAwkBAiE9AgUHbG9jVHlwZQIBVAkBAiE9AgUHbG9jVHlwZQIBRAcBCW9uTWlzc2lvbgIMdG91ckNvbnRyYWN0CGxvY2F0aW9uBAZsYXN0SWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUMdG91ckNvbnRyYWN0BQ1sYXN0VG91cklkS2V5AAAEA2xvYwkAtQkCBQhsb2NhdGlvbgIBXwQDbm93CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQFdERhdGEJAQtnZXRUb3VyRGF0YQIFDHRvdXJDb250cmFjdAUGbGFzdElkBAZzdGF0aWMJAJEDAgUFdERhdGEFCWlkeFN0YXRpYwQHZHluYW1pYwkAkQMCBQV0RGF0YQUKaWR4RHluYW1pYwQHbG9jVHlwZQkAkQMCBQNsb2MFCmxvY0lkeFR5cGUDCQAAAgUHbG9jVHlwZQIBRAYDAwMJAAACCQCRAwIFA2xvYwUKbG9jSWR4VHlwZQIBVAkAAAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNsb2MFD2xvY0lkeENvbnRpbmVudAUGbGFzdElkBwkAAAIJAJEDAgUHZHluYW1pYwUOdER5bmFtaWNTdGF0dXMCCklOUFJPR1JFU1MHCQBmAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBnN0YXRpYwUKdFN0YXRpY0VuZAUDbm93BwESZ2V0UmVjaXBlTWF0ZXJpYWxzAQZyZWNpcGUJAGgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUGcmVjaXBlBQlySWR4Q29lZmYFCUNPRUZGMk1BVAEMY2hlYXRBdHRlbXB0AwZvbGRMb2MGbmV3TG9jCWNoZWF0Q2FzZQkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAhZDaGVhdCBhdHRlbXB0OiBvbGRMb2M9BQZvbGRMb2MCCSwgbmV3TG9jPQUGbmV3TG9jAgcsIGNhc2U9CQCkAwEFCWNoZWF0Q2FzZQAWS1NfU0VQQVJBVEVfUFVCTElDX0tFWQcAGEtTX0FMTE9XX0JJR19JTkZSQV9NRVJHRQcAEUtTX0FMTE9XX0RFTElWRVJZBgAFY2hhaW4JAMkBAgkAygECCAUEdGhpcwVieXRlcwABAAEAC3VzZHRBc3NldElkBAckbWF0Y2gwBQVjaGFpbgMJAAACAQFXBQckbWF0Y2gwASCE2nqyCAM/TtG7yo7ui5O8yYLdC136B5ao1CP5qA//uQMJAAACAQFUBQckbWF0Y2gwASBVsdifcoeC7+XjW42sBatl3ppDoS8WuwXzGreHpfHFGAkAAgECDVVua25vd24gY2hhaW4AFWRlZmF1bHRSZXN0QWRkcmVzc1N0cgQHJG1hdGNoMAUFY2hhaW4DCQAAAgEBVwUHJG1hdGNoMAIjM1BRQ3V2RmJ2aDRMa1BVbnJuVTF6M2puYkExcDltM1dOaHYDCQAAAgEBVAUHJG1hdGNoMAIjM011bWtHR3p0Q0tBWHBXRHF4a2Rkb2ZxWFNVYnFRa3ZTSnkJAAIBAg1Vbmtub3duIGNoYWluABFJbmZyYVVwZ3JhZGVDb3N0UwQHJG1hdGNoMAUFY2hhaW4DCQAAAgEBVwUHJG1hdGNoMACAyK+gJQMJAAACAQFUBQckbWF0Y2gwAIDC1y8JAAIBAg1Vbmtub3duIGNoYWluAA5hcmJpdHJhZ2VEZWxheQQHJG1hdGNoMAUFY2hhaW4DCQAAAgEBVwUHJG1hdGNoMACAuJkpAwkAAAIBAVQFByRtYXRjaDAA4NQDCQACAQINVW5rbm93biBjaGFpbgADU0VQAgJfXwAFTVVMVDYAwIQ9AAVNVUxUOACAwtcvAAVTU0laRQAZAAVNU0laRQBkAAVMU0laRQDhAQAGWExTSVpFAJADAAdYWExTSVpFAPEEAAVJVEVSNgkAzAgCAAAJAMwIAgABCQDMCAIAAgkAzAgCAAMJAMwIAgAECQDMCAIABQUDbmlsAQ9nZXRTdHJpbmdPckZhaWwCB2FkZHJlc3MDa2V5CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUHYWRkcmVzcwUDa2V5CQC5CQIJAMwIAgIKbWFuZGF0b3J5IAkAzAgCCQClCAEFB2FkZHJlc3MJAMwIAgIBLgkAzAgCBQNrZXkJAMwIAgIPIGlzIG5vdCBkZWZpbmVkBQNuaWwCAAARSWR4Q2ZnU3Rha2luZ0RhcHAAAQARSWR4Q2ZnRWNvbm9teURhcHAAAgAUSWR4Q2ZnR292ZXJuYW5jZURhcHAAAwANSWR4Q2ZnV2xnRGFwcAAEABRJZHhDZmdUb3VybmFtZW50RGFwcAAHAA9JZHhDZmdBY3Jlc0RhcHAACAEKa2V5UmVzdENmZwACDiVzX19yZXN0Q29uZmlnAQ5rZXlSZXN0QWRkcmVzcwACDCVzX19yZXN0QWRkcgERcmVhZFJlc3RDZmdPckZhaWwBBHJlc3QJALwJAgkBD2dldFN0cmluZ09yRmFpbAIFBHJlc3QJAQprZXlSZXN0Q2ZnAAUDU0VQARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCB3Jlc3RDZmcDaWR4CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQdyZXN0Q2ZnBQNpZHgJAKwCAgIqUmVzdCBjZmcgZG9lc24ndCBjb250YWluIGFkZHJlc3MgYXQgaW5kZXggCQCkAwEFA2lkeAAMcmVzdENvbnRyYWN0CQERQGV4dHJOYXRpdmUoMTA2MikBCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMJAQ5rZXlSZXN0QWRkcmVzcwAFFWRlZmF1bHRSZXN0QWRkcmVzc1N0cgAHcmVzdENmZwkBEXJlYWRSZXN0Q2ZnT3JGYWlsAQUMcmVzdENvbnRyYWN0AA9zdGFraW5nQ29udHJhY3QJARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCBQdyZXN0Q2ZnBRFJZHhDZmdTdGFraW5nRGFwcAAPZWNvbm9teUNvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUHcmVzdENmZwURSWR4Q2ZnRWNvbm9teURhcHAAC2dvdkNvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUHcmVzdENmZwUUSWR4Q2ZnR292ZXJuYW5jZURhcHAAC3dsZ0NvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUHcmVzdENmZwUNSWR4Q2ZnV2xnRGFwcAASdG91cm5hbWVudENvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUHcmVzdENmZwUUSWR4Q2ZnVG91cm5hbWVudERhcHAADWFjcmVzQ29udHJhY3QJARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCBQdyZXN0Q2ZnBQ9JZHhDZmdBY3Jlc0RhcHAACnJlY0xhbmROdW0AAAALcmVjTGFuZFNpemUAAQALcmVjVGVycmFpbnMAAgAMcmVjQ29udGluZW50AAMADXdsZ0Fzc2V0SWRLZXkCC3dsZ19hc3NldElkAAp3bGdBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJwIAgULd2xnQ29udHJhY3QFDXdsZ0Fzc2V0SWRLZXkCGFdMR09MRCBpcyBub3QgaXNzdWVkIHlldAAPYWNyZXNBc3NldElkS2V5AgxhY3Jlc0Fzc2V0SWQADGFjcmVzQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCcCAIFDWFjcmVzQ29udHJhY3QFD2FjcmVzQXNzZXRJZEtleQIXQUNSRVMgaXMgbm90IGlzc3VlZCB5ZXQAC3JhbmRvbURlbGF5AAIBCWtleUNvbW1pdAEHYWRkcmVzcwkArAICAhNmaW5pc2hCbG9ja0ZvckFkZHJfBQdhZGRyZXNzARFrZXlSZXNQcm9wb3J0aW9ucwACE3Jlc1R5cGVzUHJvcG9ydGlvbnMBFmtleVJlc1R5cGVzQnlDb250aW5lbnQBCWNvbnRpbmVudAkArAICAhRyZXNUeXBlc0J5Q29udGluZW50XwUJY29udGluZW50ARVrZXlTdGFrZWRMYW5kc0J5T3duZXIBCW93bmVyQWRkcgkArAICAhNzdGFrZWRMYW5kc0J5T3duZXJfBQlvd25lckFkZHIBFmtleVN0YWtlZFBpZWNlc0J5T3duZXIBCW93bmVyQWRkcgkArAICAhRzdGFrZWRQaWVjZXNCeU93bmVyXwUJb3duZXJBZGRyAQhhc1N0cmluZwEBdgQHJG1hdGNoMAUBdgMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXMFByRtYXRjaDAFAXMJAAIBAhhmYWlsIHRvIGNhc3QgaW50byBTdHJpbmcBBWFzSW50AQF2BAckbWF0Y2gwBQF2AwkAAQIFByRtYXRjaDACA0ludAQBbgUHJG1hdGNoMAUBbgkAAgECFWZhaWwgdG8gY2FzdCBpbnRvIEludAEJYXNBbnlMaXN0AQF2BAckbWF0Y2gwBQF2AwkAAQIFByRtYXRjaDACCUxpc3RbQW55XQQBbAUHJG1hdGNoMAUBbAkAAgECG2ZhaWwgdG8gY2FzdCBpbnRvIExpc3RbQW55XQEJYXNCb29sZWFuAQF2BAckbWF0Y2gwBQF2AwkAAQIFByRtYXRjaDACB0Jvb2xlYW4EAXMFByRtYXRjaDAFAXMJAAIBAhlmYWlsIHRvIGNhc3QgaW50byBCb29sZWFuARBhc1N0cmluZ0ludFR1cGxlAQN2YWwEByRtYXRjaDAFA3ZhbAMJAAECBQckbWF0Y2gwAg0oU3RyaW5nLCBJbnQpBAJ0MgUHJG1hdGNoMAUCdDIJAAIBAh9mYWlsIHRvIGNhc3QgaW50byAoU3RyaW5nLCBJbnQpAQ9udW1QaWVjZXNCeVNpemUBCGxhbmRTaXplBAckbWF0Y2gwBQhsYW5kU2l6ZQMJAAACAgFTBQckbWF0Y2gwBQVTU0laRQMJAAACAgFNBQckbWF0Y2gwBQVNU0laRQMJAAACAgFMBQckbWF0Y2gwBQVMU0laRQMJAAACAgJYTAUHJG1hdGNoMAUGWExTSVpFAwkAAAICA1hYTAUHJG1hdGNoMAUHWFhMU0laRQkAAgECEVVua25vd24gbGFuZCBzaXplAQdpc0RpZ2l0AQFzCQEJaXNEZWZpbmVkAQkAtgkBBQFzAQprZXlCbG9ja2VkAAIQY29udHJhY3RzQmxvY2tlZAERa2V5TGFzdFR4SWRCeVVzZXIBBGFkZHIJAKwCAgIPbGFzdFR4SWRCeVVzZXJfBQRhZGRyAQpmaXhlZFBvaW50AgN2YWwIZGVjaW1hbHMEBnRlblBvdwkAbAYACgAABQhkZWNpbWFscwAAAAAFBERPV04EB2xvd1BhcnQJAKQDAQkAagIFA3ZhbAUGdGVuUG93BAZ6ZXJvZXMJALACAgkApAMBBQZ0ZW5Qb3cJAGQCAAEJALECAQUHbG93UGFydAkArAICCQCsAgIJAKwCAgkApAMBCQBpAgUDdmFsBQZ0ZW5Qb3cCAS4FBnplcm9l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bmVyQWRkcgERa2V5TGFuZE51bVRvT3duZXIBB2xhbmROdW0JAKwCAgIDbG9fBQdsYW5kTnVtARprZXlEdWNrQ3VzdG9tTmFtZVRvQXNzZXRJZAEEbmFtZQkArAICAhFkdWNrQnlDdXN0b21OYW1lXwUEbmFtZQEWa2V5Q3VzdG9tTmFtZVRvQWRkcmVzcwEEbmFtZQkArAICAhRhY2NvdW50QnlDdXN0b21OYW1lXwUEbmFtZQEJa2V5T2xkaWVzAAIKb2xkaWVzTGlzdAALY2xhaW1Nb2RlV2gAAAANY2xhaW1Nb2RlRHVjawABABNjbGFpbU1vZGVXaFRoZW5EdWNrAAIACGZsSGVhbHRoAAAAC2ZsVGltZXN0YW1wAAUAB2ZsQm9udXMABgALZmxQcm9kc1VzZWQABwEHbmZ0TmFtZQIHbGFuZE51bQhsYW5kU2l6ZQkArAICCQCsAgIFCkxBTkRQUkVGSVgFB2xhbmROdW0FCGxhbmRTaXplAQh0b1ZvbHVtZQIGYW1vdW50B3BrZ1NpemUEBHBrZ3MDCQBnAgUGYW1vdW50AAAJAGkCCQBlAgkAZAIFBmFtb3VudAUHcGtnU2l6ZQABBQdwa2dTaXplCQEBLQEJAGkCCQBlAgkAZAIJAQEtAQUGYW1vdW50BQdwa2dTaXplAAEFB3BrZ1NpemUJAGgCBQRwa2dzBQVNVUxUOAETZGlzdHJpYnV0ZUJ5V2VpZ2h0cwIFdG90YWwHd2VpZ2h0cwQDc3VtCQBkAgkAZAIJAGQCCQBkAgkAZAIJAJEDAgUHd2VpZ2h0cwAACQCRAwIFB3dlaWdodHMAAQkAkQMCBQd3ZWlnaHRzAAIJAJEDAgUHd2VpZ2h0cwADCQCRAwIFB3dlaWdodHMABAkAkQMCBQd3ZWlnaHRzAAUDCQBnAgAABQNzdW0JAAIBAhBaZXJvIHdlaWdodHMgc3VtBAVub3JtNgkAawMFBXRvdGFsBQVNVUxUNgUDc3VtCgEKbm9ybWFsaXplcgIDYWNjBGVsZW0JAM0IAgUDYWNjCQBrAwUEZWxlbQUFbm9ybTYFBU1VTFQ2CgACJGwFB3dlaWdodHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBCm5vcm1hbGl6ZXICBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDYJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYBEmdldE5lZWRlZE1hdGVyaWFscwEFdG90YWwEBXByb3BzCQC1CQIJAQV2YWx1ZQEJAKIIAQkBEWtleVJlc1Byb3BvcnRpb25zAAIBXwMJAQIhPQIJAJADAQUFcHJvcHMFBk5VTVJFUwkAAgECFldyb25nIHByb3BvcnRpb25zIGRhdGEEAXIJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXByb3BzAAAJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXByb3BzAAEJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXByb3BzAAIJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXByb3BzAAMJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXByb3BzAAQJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXByb3BzAAUFA25pbAkBE2Rpc3RyaWJ1dGVCeVdlaWdodHMCBQV0b3RhbAUBcgERc3VidHJhY3RNYXRlcmlhbHMDDHNob3VsZFVzZU1hdANoYXMJdG90YWxOZWVkBARuZWVkCQESZ2V0TmVlZGVkTWF0ZXJpYWxzAQUJdG90YWxOZWVkCgEKc3VidHJhY3RvcgIDYWNjA2lkeAQGcmVzdWx0CQBlAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFA2hhcwUDaWR4CQCRAwIFBG5lZWQFA2lkeAMJAGYCAAAFBnJlc3VsdAkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAhhOb3QgZW5vdWdoIG1hdGVyaWFsIGlkeD0JAKQDAQUDaWR4AgssIHlvdSBoYXZlIAkAkQMCBQNoYXMFA2lkeAILLCBidXQgbmVlZCAJAKQDAQkAkQMCBQRuZWVkBQNpZHgJAM0IAgUDYWNjCQCkAwEFBnJlc3VsdAMFDHNob3VsZFVzZU1hdAoAAiRsBQVJVEVSNgoAAiRzCQCQAwEFAiRsCgAFJGFjYzAFA25pbAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEKc3VidHJhY3RvcgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNgkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgUDaGFzARFzdWJ0cmFjdEVxdWlwbWVudAIFb2xkRXEFcFVzZWQDCQAAAgUFcFVzZWQCAAkAlAoCBQVvbGRFcQcKAQdzdWJVc2VkAgNhY2MGaWR4QW10BAVwYXJ0cwkAtQkCBQZpZHhBbXQCASwDCQECIT0CCQCQAwEFBXBhcnRzAAIJAAIBAihJbmNvcnJlY3QgZm9ybWF0LCBzaG91bGQgYmUgaW5kZXgsYW1vdW50BANpZHgJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwYXJ0cwAAAwMJAGYCAAAFA2lkeAYJAGcCBQNpZHgJAJADAQUQcHJvZHVjdGlvbk1hdHJpeAkAAgECE1Vua25vd24gcHJvZHVjdCBpZHgEA2FtdAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXBhcnRzAAEEB2VxUGFydHMJALUJAggFA2FjYwJfMQkArAICCQCRAwIFBXBhcnRzAAACAToDCQECIT0CCQCQAwEFB2VxUGFydHMAAgkAAgEJAKwCAgkArAICAg9Zb3UgZG9uJ3QgaGF2ZSAJAJEDAgUJcHJvZFR5cGVzBQNpZHgCCSBlcXVpcHBlZAQDdG1wCQCRAwIFB2VxUGFydHMAAQQGbnVtTGVuAwkBB2lzRGlnaXQBCQCvAgIJALACAgUDdG1wAAEAAQACAAEEBGN1cnIJAQ1wYXJzZUludFZhbHVlAQkArwICBQN0bXAFBm51bUxlbgQEdGFpbAkAsAICBQN0bXAFBm51bUxlbgQGbmV3QW10AwkAZwIFBGN1cnIFA2FtdAkAZQIFBGN1cnIFA2FtdAkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAg1Zb3UgZXF1aXBwZWQg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ZWRzIDcJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwEKcGxhY2VQcm9kQgYGaWR4Q250BXBMaXN0CmlzUG9zaXRpdmUJZHVja1N0YXRzCG9jY3VwaWVkBGZyZWUEBXBhcnRzCQC1CQIFBmlkeENudAIBOgMJAQIhPQIJAJADAQUFcGFydHMAAgkAAgECKEluY29ycmVjdCBmb3JtYXQsIHNob3VsZCBiZSBpbmRleDphbW91bnQDAwkBASEBBQppc1Bvc2l0aXZlCQECIT0CCQCxAgEJAJEDAgUFcGFydHMAAAACBwkAAgECK1Byb2R1Y3QgaWR4IHNob3VsZCBiZSAyIGRpZ2l0cywgemVybyBwYWRkZWQECnByb2R1Y3RJZHgJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwYXJ0cwAABAVjb3VudAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXBhcnRzAAEDCQEBIQEJAQ9jb250YWluc0VsZW1lbnQCBRBmb3J0QWxsb3dlZFByb2RzBQpwcm9kdWN0SWR4CQACAQkArAICCQCsAgICCVByb2R1Y3QgJwkAkQMCBQlwcm9kVHlwZXMFCnByb2R1Y3RJZHgCIScgY2Fubm90IGJlIHVzZWQgZm9yIGxhbmQgZGVmZW5zZQMJAGYCAAAFBWNvdW50CQACAQIXQ291bnQgY2FuJ3QgYmUgbmVnYXRpdmUDCQBmAgUFY291bnQFDU1BWFBST0RJTlNMT1QJAAIBCQCsAgIJAKwCAgkArAICAhRDYW4ndCBwdXQgbW9yZSB0aGFuIAkApAMBBQ1NQVhQUk9ESU5TTE9UAgQgb2YgCQCRAwIFCXByb2RUeXBlcwUKcHJvZHVjdElkeAMJAAACBQVjb3VudAAACQCVCgMFBXBMaXN0BQhvY2N1cGllZAUEZnJlZQQEaGVhZAkAyQECBQVwTGlzdAkAaAIACAUKcHJvZHVjdElkeAQEY3VycgkAsQkBCQDJAQIJAMoBAgUFcExpc3QJAGgCAAgFCnByb2R1Y3RJZHgACAQEdGFpbAkAygECBQVwTGlzdAkAaAIACAkAZAIFCnByb2R1Y3RJZHgAAQQGcmVjaXBlCQC1CQIJAJEDAgUQcHJvZHVjdGlvbk1hdHJpeAUKcHJvZHVjdElkeAIBXwMDCQEBIQEFCmlzUG9zaXRpdmUJAGYCBQVjb3VudAUEY3VycgcJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIJWW91IGhhdmUgCQCkAwEFBGN1cnICBCBvZiAJAJEDAgUJcHJvZFR5cGVzBQpwcm9kdWN0SWR4AhMsIGJ1dCB0cmllZCB0byB1c2UgCQCkAwEFBWNvdW50BAZuZXdBbXQDAwkBASEBBQppc1Bvc2l0aXZlCQEVY2hlY2tTdGF0UmVxdWlyZW1lbnRzAgUJZHVja1N0YXRzCQC1CQIJAJEDAgUGcmVjaXBlBRBySWR4UmVxdWlyZW1lbnRzAgEsBwkAZQIFBGN1cnIFBWNvdW50CQBkAgUEY3VycgUFY291bnQECGRlbHRhVm9sCQBlAgkBCHRvVm9sdW1lAgUGbmV3QW10BQ5QUk9EVUNUUEtHU0laRQkBCHRvVm9sdW1lAgUEY3VycgUOUFJPRFVDVFBLR1NJWkUJAJUKAwkAywECCQDLAQIFBGhlYWQJAJoDAQUGbmV3QW10BQR0YWlsCQBkAgUIb2NjdXBpZWQFCGRlbHRhVm9sCQBlAgUEZnJlZQUIZGVsdGFWb2wBCGFkZFByb2RCBwZpZHhDbnQFcExpc3QKaXNQb3NpdGl2ZQdzZWdtZW50B21haW5BdXgEc2xvdAlkdWNrU3RhdHMEBXBhcnRzCQC1CQIFBmlkeENudAIBOgMJAQIhPQIJAJADAQUFcGFydHMAAgkAAgECKEluY29ycmVjdCBmb3JtYXQsIHNob3VsZCBiZSBpbmRleDphbW91bnQDAwkBASEBBQppc1Bvc2l0aXZlCQECIT0CCQCxAgEJAJEDAgUFcGFydHMAAAACBwkAAgECK1Byb2R1Y3QgaWR4IHNob3VsZCBiZSAyIGRpZ2l0cywgemVybyBwYWRkZWQECnByb2R1Y3RJZHgJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwYXJ0cwAABAVjb3VudAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXBhcnRzAAEDAwkAZgIAAAUKcHJvZHVjdElkeAYJAGcCBQpwcm9kdWN0SWR4CQCQAwEFEHByb2R1Y3Rpb25NYXRyaXgJAAIBAhNVbmtub3duIHByb2R1Y3QgaWR4AwkAZgIAAAUFY291bnQJAAIBAhdDb3VudCBjYW4ndCBiZSBuZWdhdGl2ZQMJAGYCBQVjb3VudAUNTUFYUFJPRElOU0xPVAkAAgEJAKwCAgkArAICCQCsAgICFENhbid0IHB1dCBtb3JlIHRoYW4gCQCkAwEFDU1BWFBST0RJTlNMT1QCBCBvZiAJAJEDAgUJcHJvZFR5cGVzBQpwcm9kdWN0SWR4AwkAAAIFBWNvdW50AAAJAJQKAgUFcExpc3QHBARoZWFkCQDJAQIFBXBMaXN0CQBoAgAIBQpwcm9kdWN0SWR4BARjdXJyCQCxCQEJAMkBAgkAygECBQVwTGlzdAkAaAIACAUKcHJvZHVjdElkeAAIBAR0YWlsCQDKAQIFBXBMaXN0CQBoAgAICQBkAgUKcHJvZHVjdElkeAABBAZyZWNpcGUJALUJAgkAkQMCBRBwcm9kdWN0aW9uTWF0cml4BQpwcm9kdWN0SWR4AgFfAwMJAQEhAQUKaXNQb3NpdGl2ZQkAZgIFBWNvdW50BQRjdXJyBwkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAglZb3UgaGF2ZSAJAKQDAQUEY3VycgIEIG9mIAkAkQMCBQlwcm9kVHlwZXMFCnByb2R1Y3RJZHgCEywgYnV0IHRyaWVkIHRvIHVzZSAJAKQDAQUFY291bnQECWlzQmlnSXRlbQMDCQEBIQEFCmlzUG9zaXRpdmUJARVjaGVja1N0YXRSZXF1aXJlbWVudHMCBQlkdWNrU3RhdHMJALUJAgkAkQMCBQZyZWNpcGUFEHJJZHhSZXF1aXJlbWVudHMCASwHBAZjb21wYXQJAJEDAgUGcmVjaXBlBQlySWR4U2xvdHMDCQAAAgUGY29tcGF0AgAJAAIBAhdJdGVtIGNhbm5vdCBiZSBlcXVpcHBlZAQBYwkBDXBhcnNlSW50VmFsdWUBBQZjb21wYXQEBGNTZWcJAGkCBQFjAGQDCQECIT0CBQdzZWdtZW50BQRjU2VnCQACAQIUU2VnbWVudCBpbmNvbXBhdGlibGUECGNNYWluQXV4CQBpAgkAagIFAWMAZAAKAwkBAiE9AgUHbWFpbkF1eAUIY01haW5BdXgJAAIBAhFTbG90IGluY29tcGF0aWJsZQQJY051bVNsb3RzCQBqAgUBYwAKAwMJAQIhPQIFBHNsb3QAAAkAZgIFCWNOdW1TbG90cwABBwkAAgECHkJpZyBpdGVtcyBzaG91bGQgb2NjdXB5IHNsb3QgMAkAZgIFCWNOdW1TbG90cwABBwkAlAoCCQDLAQIJAMsBAgUEaGVhZAkAmgMBCQBkAgUEY3VycgMFCmlzUG9zaXRpdmUFBWNvdW50CQEBLQEFBWNvdW50BQR0YWlsBQlpc0JpZ0l0ZW0BC3Nsb3RzR3JvdXBCBgFnBGJwSW4KaXNQb3NpdGl2ZQdzZWdtZW50B21haW5BdXgFc3RhdHMDCQECIT0CBQFnAgAEBXNsb3RzCQC1CQIFAWcCASwDCQBmAgkAkAMBBQVzbG90cwUITUFYU0xPVFMJAAIBAhJXcm9uZyBzbG90cyBmb3JtYXQEAnMwCQCRAwIFBXNsb3RzAAAEAnMxAwkAZgIJAJADAQUFc2xvdHMAAQkAkQMCBQVzbG90cwABAgADAwkAAAIFAnMwAgAJAAACBQJzMQIABwUEYnBJbgQFdG1wUzADCQECIT0CBQJzMAIACQEIYWRkUHJvZEIHBQJzMAUEYnBJbgUKaXNQb3NpdGl2ZQUHc2VnbWVudAUHbWFpbkF1eAAABQVzdGF0cwkAlAoCBQRicEluBwMJAQIhPQIFAnMxAgADCAUFdG1wUzACXzIJAAIBAh5CaWcgaXRlbSBhbHJlYWR5IG9jY3VwaWVzIHNsb3QICQEIYWRkUHJvZEIHBQJzMQgFBXRtcFMwAl8xBQppc1Bvc2l0aXZlBQdzZWdtZW50BQdtYWluQXV4AAEFBXN0YXRzAl8xCAUFdG1wUzACXzEFBGJwSW4BBmRyZXNzQgQHc2VnTGlzdAZwQnl0ZXMKaXNQb3NpdGl2ZQVzdGF0cwoBB3NlZ21lbnQCA2FjYwNzZWcEAWoIBQNhY2MCXzEEB21haW5BdXgJALUJAgUDc2VnAgE7AwkBAiE9AgkAkAMBBQdtYWluQXV4BQpOVU1NQUlOQVVYCQACAQIUV3Jvbmcgc2VnbWVudCBmb3JtYXQEAW0JAJEDAgUHbWFpbkF1eAAABAFhCQCRAwIFB21haW5BdXgAAQMDCQAAAgUBbQIACQAAAgUBYQIABwkAlAoCCQBkAgUBagABCAUDYWNjAl8yBAR0bXBNCQELc2xvdHNHcm91cEIGBQFtCAUDYWNjAl8yBQppc1Bvc2l0aXZlBQFqAAAFBXN0YXRzCQCUCgIJAGQCBQFqAAEJAQtzbG90c0dyb3VwQgYFAWEFBHRtcE0FCmlzUG9zaXRpdmUFAWoAAQUFc3RhdHMICgACJGwFB3NlZ0xpc3QKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCUCgIAAAUGcEJ5dGVzCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQdzZWdtZW50AgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA2CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAl8yAQVmb3J0QgYHc2VnTGlzdAZwQnl0ZXMIb2NjdXBpZWQEZnJlZQppc1Bvc2l0aXZlCWR1Y2tTdGF0cwMJAGYCAAMJAJADAQUHc2VnTGlzdAkAAgECMUF0IGxlYXN0IGR1Y2ssIG1pbmVzIGFuZCB0cmFwcyBwYXJ0cyBhcmUgcmVxdWlyZWQKAQdzZWdtZW50AgNhY2MDc2VnBAFqCAUDYWNjAl8xAwkAAAIFAWoAAAkAlgoECQBkAgUBagABCAUDYWNjAl8yCAUDYWNjAl8zCAUDYWNjAl80BAFwCQEKcGxhY2VQcm9kQgYFA3NlZwgFA2FjYwJfMgUKaXNQb3NpdGl2ZQUJZHVja1N0YXRzCAUDYWNjAl8zCAUDYWNjAl80CQCWCgQJAGQCBQFqAAEIBQFwAl8xCAUBcAJfMggFAXACXzMEAXQKAAIkbAUHc2VnTGlzdAoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJYKBAAABQZwQnl0ZXMFCG9jY3VwaWVkBQRmcmVlCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQdzZWdtZW50AgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKCQCVCgMIBQF0Al8yCAUBdAJfMwgFAXQCXzQBF2NhbldlYXJDdXJyZW50RXF1aXBtZW50AQtkdWNrQXNzZXRJZAQFZXFLZXkJARBrZXlEdWNrRXF1aXBtZW50AQULZHVja0Fzc2V0SWQEBmN1cnJFcQkAtQkCCQELdmFsdWVPckVsc2UCCQCiCAEFBWVxS2V5AhcsOyxfLDssXyw7LF8sOyxfLDssXyw7LAIBXwQJdGVtcFByb2RCCQEGZHJlc3NCBAUGY3VyckVxBQxFTVBUWV9QUk9ENTAGBQNuaWwECHNlZ0JwQXV4CQCRAwIJALUJAgkAkQMCBQZjdXJyRXEFC3NlZ0JhY2twYWNrAgE7AAEECmJ1ZmZFZmZlY3QDCQAAAgUIc2VnQnBBdXgCAAAABARhdXgwCQCRAwIJALUJAgUIc2VnQnBBdXgCASwAAAMJAAACBQRhdXgwAgAAAAQGaWR4Q250CQC1CQIFBGF1eDACAToEA2lkeAkAkQMCBQZpZHhDbnQAAAQDY250CQCRAwIFBmlkeENudAABAwMDAwMJAAACBQNpZHgCAjA2BgkAAAIFA2lkeAICMDcGCQAAAgUDaWR4AgIwOAkBAiE9AgUDY250AgAHCQBmAgkBDXBhcnNlSW50VmFsdWUBBQNjbnQAAAcJAQ1wYXJzZUludFZhbHVlAQkAkQMCCQC1CQIJAJEDAgUQcHJvZHVjdGlvbk1hdHJpeAkBDXBhcnNlSW50VmFsdWUBBQNpZHgCAV8FCnJJZHhFZmZlY3QAAAQFc3RhdHMJAQxnZXREdWNrU3RhdHMEBQR0aGlzBQtkdWNrQXNzZXRJZAUKYnVmZkVmZmVjdAYECG5ld1Byb2RCCQEGZHJlc3NCBAUGY3VyckVxBQl0ZW1wUHJvZEIHBQVzdGF0cwkAAAIFCG5ld1Byb2RCBQhuZXdQcm9kQgEZdXBkYXRlUHJvcG9ydGlvbnNJbnRlcm5hbAQIcHJvcExpc3QNdGVycmFpbkNvdW50cw1sYW5kU2l6ZUluZGV4BHNpZ24DCQECIT0CCQCQAwEFCHByb3BMaXN0BQZOVU1SRVMJAAIBAhZXcm9uZyBwcm9wb3J0aW9ucyBkYXRhCgEHdXBkYXRlcgIDYWNjAWkEBnJlc3VsdAkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQhwcm9wTGlzdAUBaQkAaAIJAGgCBQRzaWduCQCRAwIFDXRlcnJhaW5Db3VudHMFAWkFDWxhbmRTaXplSW5kZXgDCQBmAgAABQZyZXN1bHQJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICFlBhbmljISBQaWVjZXMgb2YgdHlwZT0JAKQDAQUBaQIHLCBzaWduPQkApAMBBQRzaWduAhMsIHRlcnJhaW5Db3VudHNbaV09CQCkAwEJAJEDAgUNdGVycmFpbkNvdW50cwUBaQIQLCBsYW5kU2l6ZUluZGV4PQkApAMBBQ1sYW5kU2l6ZUluZGV4CQDNCAIFA2FjYwkApAMBBQZyZXN1bHQKAAIkbAUFSVRFUjYKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBB3VwZGF0ZXICBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDYJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYBEXVwZGF0ZVByb3BvcnRpb25zAw10ZXJyYWluQ291bnRzDWxhbmRTaXplSW5kZXgEc2lnbgQIcHJvcExpc3QJALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBCQERa2V5UmVzUHJvcG9ydGlvbnMAAgswXzBfMF8wXzBfMAIBXwkAuQkCCQEZdXBkYXRlUHJvcG9ydGlvbnNJbnRlcm5hbAQFCHByb3BMaXN0BQ10ZXJyYWluQ291bnRzBQ1sYW5kU2l6ZUluZGV4BQRzaWduAgFfAQ1jb3VudFRlcnJhaW5zAQh0ZXJyYWlucwkAzAgCCQBlAgkAkAMBCQC1CQIFCHRlcnJhaW5zAgFBAAEJAMwIAgkAZQIJ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ZU9jY3VwaWVkVm9sAQUCd2gEBndoTG9mdAMJAGYCAAUJAJADAQUCd2gJALkJAgkAzAgCAgEwCQDMCAIJAKQDAQUKd2hPY2N1cGllZAkAzAgCCQCkAwEJAGUCBQd3aFRvdGFsBQp3aE9jY3VwaWVkCQDMCAIJAKQDAQUHd2hUb3RhbAUDbmlsAgFfBARsb2Z0CQC1CQIJAJEDAgUCd2gFCXdoSWR4TE9GVAIBXwQId2hMb2NrZWQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQl2b2xMb2NrZWQEA29jYwMJAGYCCQCQAwEFBGxvZnQAAQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFC3ZvbE9jY3VwaWVkBQp3aE9jY3VwaWVkCQC5CQIJAMwIAgkApAMBBQh3aExvY2tlZAkAzAgCCQCkAwEFA29jYwkAzAgCCQCkAwEJAGUCCQBlAgUHd2hUb3RhbAUId2hMb2NrZWQFA29jYwkAzAgCCQCkAwEFB3doVG90YWwFA25pbAIBXwkAzAgCCQCRAwIFAndoBQt3aElkeExldmVscwkAzAgCAwkAAAIJAJADAQkAtQkCCQCRAwIFAndoBQh3aElkeFJlcwIBXwUGTlVNUkVTCQCRAwIFAndoBQh3aElkeFJlcwILMF8wXzBfMF8wXzAJAMwIAgMJAAACCQCQAwEJALUJAgkAkQMCBQJ3aAUId2hJZHhNYXQCAV8FBk5VTVJFUwkAkQMCBQJ3aAUId2hJZHhNYXQCCzBfMF8wXzBfMF8wCQDMCAIJAJEDAgUCd2gFCXdoSWR4UHJvZAkAzAgCBQZ3aExvZnQFA25pbAEVZ2V0V2FyZWhvdXNlU3BhY2VMZWZ0AQljdXJyZW50V2gEC29jY3VwaWVkVm9sCQEXZ2V0V2FyZWhvdXNlT2NjdXBpZWRWb2wBBQljdXJyZW50V2gED2N1cnJXaExvY2tlZFZvbAkBDXBhcnNlSW50VmFsdWUBCQCRAwIJALUJAgkAkQMCBQljdXJyZW50V2gFCXdoSWR4TE9GVAIBXwUJdm9sTG9ja2VkCQBlAgkAZQIJARdnZXRXYXJlaG91c2VUb3RhbFZvbHVtZQEJAJEDAgUJY3VycmVudFdoBQt3aElkeExldmVscwULb2NjdXBpZWRWb2wFD2N1cnJXaExvY2tlZFZvbAEJbW92ZVN0dWZmAwpjYXJnb1BhcnRzCWN1cnJlbnRXaAtjdXJyZW50UGFjawMJAQIhPQIJAJADAQUKY2FyZ29QYXJ0cwADCQACAQI0Y2FyZ29MaXN0U3RyIHNob3VsZCBjb250YWluIGV4YWN0bHkgMiAnOicgc2VwYXJhdG9ycwQIcmVzUGFydHMJALUJAgkAkQMCBQpjYXJnb1BhcnRzAAACAV8ECG1hdFBhcnRzCQC1CQIJAJEDAgUKY2FyZ29QYXJ0cwABAgFfBAlwcm9kUGFydHMDCQAAAgkAkQMCBQpjYXJnb1BhcnRzAAICAAUDbmlsCQC8CQIJAJEDAgUKY2FyZ29QYXJ0cwACAgFfAwkBAiE9AgkAkAMBBQhyZXNQYXJ0cwUGTlVNUkVTCQACAQIgQWxsIDYgcmVzb3VyY2VzIHNob3VsZCBiZSBwYXNzZWQDCQECIT0CCQCQAwEFCG1hdFBhcnRzBQZOVU1SRVMJAAIBAiBBbGwgNiBtYXRlcmlhbHMgc2hvdWxkIGJlIHBhc3NlZAQLd2hTcGFjZUxlZnQJARVnZXRXYXJlaG91c2VTcGFjZUxlZnQBBQljdXJyZW50V2gECWN1cnJXaFJlcwkAtQkCCQCRAwIFCWN1cnJlbnRXaAUId2hJZHhSZXMCAV8ECWN1cnJXaE1hdAkAtQkCCQCRAwIFCWN1cnJlbnRXaAUId2hJZHhNYXQCAV8ECmN1cnJXaFByb2QDCQAAAgkAkQMCBQljdXJyZW50V2gFCXdoSWR4UHJvZAIABQNuaWwJALwJAgkAkQMCBQljdXJyZW50V2gFCXdoSWR4UHJvZAIBXwQOY3VycmVudFBhY2tSZXMJALUJAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhSZXMCAV8EDmN1cnJlbnRQYWNrTWF0CQC1CQIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4TWF0AgFfBA9jdXJyZW50UGFja1Byb2QDCQAAAgkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kAgAFA25pbAkAvAkCCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QCAV8KAQNtdlICA2FjYwRpdGVtBAFpCAUDYWNjAl8xBAJhbQkBDXBhcnNlSW50VmFsdWUBBQRpdGVtBAN3aHIJAQ1w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BQUkYWNjMAAAAAEAAgADAAQABQAGCgEDbXZQAgNhY2MEaXRlbQQBaQgFA2FjYwJfMQQCYW0JAQ1wYXJzZUludFZhbHVlAQUEaXRlbQQDd2hwAwkAZgIJAJADAQUKY3VycldoUHJvZAUBaQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCmN1cnJXaFByb2QFAWkAAAQDYnBwAwkAZgIJAJADAQUPY3VycmVudFBhY2tQcm9kBQFpCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUPY3VycmVudFBhY2tQcm9kBQFpAAADCQAAAgUCYW0AAAkAlgoECQBkAgUBaQABCQDNCAIIBQNhY2MCXzIJAKQDAQUDd2hwCQDNCAIIBQNhY2MCXzMJAKQDAQUDYnBwCAUDYWNjAl80AwkAZgIFAmFtAAADCQBmAgUCYW0FA2JwcAkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgIQQXR0ZW1wdCB0byB0YWtlIAUEaXRlbQIZIGZyb20gYmFja3BhY2ssIGJ1dCBvbmx5IAkApAMBBQNicHACCiBhdmFpbGFibGUECGRlbHRhVm9sCQBlAgkBCHRvVm9sdW1lAgkAZAIFA3docAUCYW0FDlBST0RVQ1RQS0dTSVpFCQEIdG9Wb2x1bWUCBQN3aHAFDlBST0RVQ1RQS0dTSVpFCQCWCgQJAGQCBQFpAAEJAM0IAggFA2FjYwJfMgkApAMBCQBkAgUDd2hwBQJhbQkAzQgCCAUDYWNjAl8zCQCkAwEJAGUCBQNicHAFAmFtCQBkAggFA2FjYwJfNAUIZGVsdGFWb2wDCQBmAgkBAS0BBQJhbQUDd2hwCQACAQkArAICCQCsAgIJAKwCAgkArAICAhBBdHRlbXB0IHRvIHRha2UgCQCkAwEJAQEtAQUCYW0CGiBmcm9tIHdhcmVob3VzZSwgYnV0IG9ubHkgCQCkAwEFA3docAIKIGF2YWlsYWJsZQQIZGVsdGFWb2wJAGUCCQEIdG9Wb2x1bWUCCQBkAgUDd2hwBQJhbQUOUFJPRFVDVFBLR1NJWkUJAQh0b1ZvbHVtZQIFA3docAUOUFJPRFVDVFBLR1NJWkUJAJYKBAkAZAIFAWkAAQkAzQgCCAUDYWNjAl8yCQCkAwEJAGQCBQN3aHAFAmFtCQDNCAIIBQNhY2MCXzMJAKQDAQkAZQIFA2JwcAUCYW0JAGQCCAUDYWNjAl80BQhkZWx0YVZvbAQBcAMJAQIhPQIJAJADAQUJcHJvZFBhcnRzAAAKAAIkbAUJcHJvZFBhcnRzCgACJHMJAJADAQUCJGwKAAUkYWNjMAkAlgoEAAAFA25pbAUDbmlsCAUBbQJfNAoBBSRmMl8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEDbXZQAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYyXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyA1MAkBBSRmMl8yAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiACMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIJAJYKBAAABQpjdXJyV2hQcm9kBQ9jdXJyZW50UGFja1Byb2QIBQFtAl80BAh2b2xTYWxkbwgFAXACXzQDCQBmAgUIdm9sU2FsZG8FC3doU3BhY2VMZWZ0CQACAQkArAICCQCsAgIJAKwCAgkArAICAhVBdHRlbXB0IHRvIHB1dCB0b3RhbCAJAKQDAQUIdm9sU2FsZG8CESBzdHVmZiwgYnV0IG9ubHkgCQCkAwEFC3doU3BhY2VMZWZ0AhUgd2FyZWhvdXNlIHNwYWNlIGxlZnQJAJkKBwkAuQkCCAUBcgJfMgIBXwkAuQkCCAUBbQJfMgIBXwkAugkCCAUBcAJfMgIBXwkAuQkCCAUBcgJfMwIBXwkAuQkCCAUBbQJfMwIBXwkAugkCCAUBcAJfMwIBXwUIdm9sU2FsZG8BEmV4cGVkaXRpb25JbnRlcm5hbAIGY2FsbGVyBHR4SWQECHVzZXJBZGRyCQClCAEFBmNhbGxlcgQGYmlnTnVtCQEDYWJzAQkAngMBBQR0eElkBAdmcmVlTnVtCQELdmFsdWVPckVsc2UCCQCfCAEJARJrZXlOZXh0RnJlZUxhbmROdW0ACQBkAgUPUFJFU0FMRU5VTUxBTkRTAAEEB2xhbmROdW0JAKQDAQUHZnJlZU51bQQMY29udGluZW50SWR4CQCgAwEJALsCAgUGYmlnTnVtBQVGSVZFWAQIdGVycmFpbnMJAQtnZW5UZXJyYWlucwIFBmJpZ051bQUMY29udGluZW50SWR4BAljb250aW5lbnQJAJEDAgUKY29udGluZW50cwUMY29udGluZW50SWR4BAVpc3N1ZQkAwggFCQEHbmZ0TmFtZQIFB2xhbmROdW0CAVMJALkJAgkAzAgCBQdsYW5kTnVtCQDMCAICAVMJAMwIAgUIdGVycmFpbnMJAMwIAgUJY29udGluZW50BQNuaWwCAV8AAQAABwQHYXNzZXRJZAkAuAgBBQVpc3N1ZQQCaWQJANgEAQUHYXNzZXRJZAkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQESa2V5TmV4dEZyZWVMYW5kTnVtAAkAZAIFB2ZyZWVOdW0AAQkAzAgCBQVpc3N1ZQkAzAgCCQELU3RyaW5nRW50cnkCCQEQa2V5TGFuZFRvQXNzZXRJZAEFB2xhbmROdW0FAmlkCQDMCAIJAQtTdHJpbmdFbnRyeQIJARVrZXlMYW5kQXNzZXRJZFRvT3duZXIBBQJpZAUIdXNlckFkZHIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBEWtleUxhbmROdW1Ub093bmVyAQUHbGFuZE51bQUIdXNlckFkZHIJAMwIAgkBDEludGVnZXJFbnRyeQIJARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQUCaWQAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBHmtleUluZnJhTGV2ZWxCeUFzc2V0SWRBbmRPd25lcgIFAmlkBQh1c2VyQWRkcgAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFBmNhbGxlcgABBQdhc3NldElkBQNuaWwJAJQKAgUCaWQFCWNvbnRpbmVudAEMZmxpZ2h0Q29tbW9uAwh1c2VyQWRkcgdtZXNzYWdlA3NpZwMJAQEhAQkAxBMDBQdtZXNzYWdlBQNzaWcFA3B1YgkAAgECGHNpZ25hdHVyZSBkb2VzIG5vdCBtYXRjaAQFcGFydHMJALwJAgkAsAkBBQdtZXNzYWdlAgE7BAlmbGlnaHRMb2cJALwJAgkAkQMCBQVwYXJ0cwAAAgF8BAJocAkAtQkCCQCRAwIFCWZsaWdodExvZwUIZmxIZWFsdGgCAV8EBWN1ckhQCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCaHAAAAQFbmV3SFAJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJocAABBAtuZXdMb2NUeFZlcgkAtQkCCQCRAwIFBXBhcnRzAAECAToEC25ld0xvY2F0aW9uCQCRAwIFC25ld0xvY1R4VmVyAAAEBHRpbWUJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQlmbGlnaHRMb2cFC2ZsVGltZXN0YW1wAwMJAGYCBQR0aW1lCQBkAggFCWxhc3RCbG9jawl0aW1lc3RhbXAFEUZJVkVNSU5VVEVTTUlMTElTBgkAZgIJAGUCCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAURRklWRU1JTlVURVNNSUxMSVMFBHRpbWUJAAIBCQCsAgIJAKwCAgkArAICAhxzaWduYXR1cmUgb3V0ZGF0ZWQ6IGxvZ1RpbWU9CQCkAwEFBHRpbWUCCSwgYmNUaW1lPQkApAMBCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQJdHhGcm9tTXNnCQCRAwIFC25ld0xvY1R4VmVyAAEEBmxhc3RUeAkBC3ZhbHVlT3JFbHNlAgkAoggBCQERa2V5TGFzdFR4SWRCeVVzZXIBBQh1c2VyQWRkcgIAAwkBAiE9AgUGbGFzdFR4BQl0eEZyb21Nc2cJAAIBCQCsAgIJAKwCAgkArAICAh5UeCBpZHMgZG9uJ3QgbWF0Y2ghIEluIHN0YXRlOiAFBmxhc3RUeAIKLCBpbiBtc2c6IAUJdHhGcm9tTXNnBAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFCHVzZXJBZGRyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkBAlrZXlIZWFsdGgJAQ1rZXlEdWNrSGVhbHRoAQULZHVja0Fzc2V0SWQEBW1heEhQCQEJbWF4SGVhbHRoAQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEMa2V5RHVja0xldmVsAQULZHVja0Fzc2V0SWQAAAQMb2xkRnJvbVN0YXRlCQELdmFsdWVPckVsc2UCCQCfCAEFCWtleUhlYWx0aAUFbWF4SFADCQECIT0CBQxvbGRGcm9tU3RhdGUFBWN1ckhQCQACAQkArAICCQCsAgIJAKwCAgIKb2xkSGVhbHRoPQkApAMBBQxvbGRGcm9tU3RhdGUCLyBmcm9tIHN0YXRlIGRvZXMgbm90IG1hdGNoIG9uZSBmcm9tIGZsaWdodCBsb2c9CQCkAwEFBWN1ckhQAwkAZwIAAAUFY3VySFAJAAIBAh5Zb3UgY2FuJ3QgZmx5IHdpdGggemVybyBoZWFsdGgDCQEBIQEJARdjYW5XZWFyQ3VycmVudEVxdWlwbWVudAEFC2R1Y2tBc3NldElkCQACAQIWRXF1aXBtZW50IGluY29tcGF0aWJsZQQFYm9udXMDCQBmAgkAkAMBBQlmbGlnaHRMb2cFB2ZsQm9udXMJAJEDAgUJZmxpZ2h0TG9nBQdmbEJvbnVzAgAECHByb2RVc2VkAwkAZgIJAJADAQUJZmxpZ2h0TG9nBQtmbFByb2RzVXNlZAkAkQMCBQlmbGlnaHRMb2cFC2ZsUHJvZHNVc2VkAgAECnNlbnRBbW91bnQDAwkAZgIFBW5ld0hQAAAJAAACBQVib251cwIBJAcJAQVhc0ludAEJAPwHBAUMcmVzdENvbnRyYWN0Ag1zZW5kVXNkdFByaXplCQDMCAIFCHVzZXJBZGRyBQNuaWwFA25pbAAACQCXCgUFBW5ld0hQBQtkdWNrQXNzZXRJZAUKc2VudEFtb3VudAULbmV3TG9jYXRpb24FCHByb2RVc2VkAQxhcHBseUJvbnVzZXMCC2xhbmRBc3NldElkBnBpZWNlcwQKaW5mcmFMZXZlbAkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEWa2V5SW5mcmFMZXZlbEJ5QXNzZXRJZAEFC2xhbmRBc3NldElkAAAECWFydFBpZWNlcwkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEga2V5TGFuZEFydFN0YXR1c0J5VHlwZUFuZEFzc2V0SWQCBQpBUlRQUkVTQUxFBQtsYW5kQXNzZXRJZAAABARhZGQ2CQBpAgUKaW5mcmFMZXZlbAAGBARhZGQ3CQBpAgUKaW5mcmFMZXZlbAAHCQBkAgkAZAIFD0RBSUxZUkVTQllQSUVDRQkAawMFD0RBSUxZUkVTQllQSUVDRQkAZAIJAGQCBQppbmZyYUxldmVsBQRhZGQ2CQBoAgACBQRhZGQ3AAUJAGsDBQ9EQUlMWVJFU0JZUElFQ0UFCWFydFBpZWNlcwkAaAIFBnBpZWNlcwAFARRjaGVja0NsYWltQ29uZGl0aW9ucwMEYWRkcgljbGFpbU1vZGUNbGFuZEFzc2V0SWRJbgQNJHQwMzM3MzgzNDI3NwMJAAACBQljbGFpbU1vZGUFC2NsYWltTW9kZVdoCQCUCgIFDWxhbmRBc3NldElkSW4JAQt2YWx1ZU9yRWxzZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUEYWRkcgIABAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFBGFkZHICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQEC2N1ckxvY2F0aW9uCQELdmFsdWVPckVsc2UCCQCiCAEJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAUPREVGQVVMVExPQ0FUSU9OBANsb2MJALUJAgkBBXZhbHVlAQULY3VyTG9jYXRpb24CAV8DCQECIT0CCQCRAwIFA2xvYwUKbG9jSWR4VHlwZQIBTAkAAgEJAKwCAgkArAICAhZEdWNrIGxvY2F0aW9uIHR5cGUgaXMgCQCRAwIFA2xvYwUKbG9jSWR4VHlwZQIRLCBidXQgc2hvdWxkIGJlIEwJAJQKAgkAkQMCBQNsb2MFCGxvY0lkeElkBQtkdWNrQXNzZXRJZAQLbGFuZEFzc2V0SWQIBQ0kdDAzMzczODM0Mjc3Al8xBAZkdWNrSWQIBQ0kdDAzMzczODM0Mjc3Al8yBAVhc3NldAkBBXZhbHVlAQkA7AcBCQDZBAEFC2xhbmRBc3NldElkBAd0aW1lS2V5CQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFC2xhbmRBc3NldElkBAlzYXZlZFRpbWUJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnwgBBQd0aW1lS2V5CQCsAgIJAKwCAgIFTGFuZCAIBQVhc3NldARuYW1lAg4gaXMgbm90IHN0YWtlZAQFb3duZXIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEVa2V5TGFuZEFzc2V0SWRUb093bmVyAQULbGFuZEFzc2V0SWQJAKwCAgkArAICAgRORlQgCAUFYXNzZXQEbmFtZQIMIGlzIG9ycGhhbmVkAwkBAiE9AgUFb3duZXIFBGFkZHIJAAIBCQCsAgIFCkxBTkRQUkVGSVgCDSBpcyBub3QgeW91cnMEAWQJALUJAggFBWFzc2V0C2Rlc2NyaXB0aW9uAgFfCQCWCgQFBmR1Y2tJZAULbGFuZEFzc2V0SWQFAWQFCXNhdmVkVGltZQEQY2xhaW1SZXNJbnRlcm5hbAQEYWRkcgZhbW91bnQJY2xhaW1Nb2RlDWxhbmRBc3NldElkSW4DCQBmAgAABQZhbW91bnQJAAIBAg9OZWdhdGl2ZSBhbW91bnQEAWMJARRjaGVja0NsYWltQ29uZGl0aW9ucwMFBGFkZHIFCWNsYWltTW9kZQUNbGFuZEFzc2V0SWRJbgQIbGFuZFNpemUJAJEDAggFAWMCXzMFC3JlY0xhbmRTaXplBA10ZXJyYWluQ291bnRzCQENY291bnRUZXJyYWlucwEJAJEDAggFAWMCXzMFC3JlY1RlcnJhaW5zBAlkZWx0YVRpbWUJAGUCCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAgFAWMCXzQDCQBmAgAABQlkZWx0YVRpbWUJAAIBCQCsAgIJAKwCAgkArAICAiZTYXZlZCB0aW1lc3RhbXAgaXMgaW4gZnV0dXJlLCBzYXZlZCA9IAkApAMBCAUBYwJfNAIMLCBjdXJyZW50ID0gCQCkAwEIBQlsYXN0QmxvY2sJdGltZXN0YW1wBAZwaWVjZXMJAQ9udW1QaWVjZXNCeVNpemUBBQhsYW5kU2l6ZQQWZGFpbHlQcm9kdWN0aW9uQnlQaWVjZQkBDGFwcGx5Qm9udXNlcwIIBQFjAl8yBQZwaWVjZXMECGF2YWlsUmVzCQBrAwUJZGVsdGFUaW1lCQBoAgUWZGFpbHlQcm9kdWN0aW9uQnlQaWVjZQUGcGllY2VzBQlEQVlNSUxMSVMDCQBmAgUGYW1vdW50BQhhdmFpbFJlcwkAAgEJAKwCAgkArAICCQCsAgICIk5vdCBlbm91Z2ggcmVzb3VyY2VzLCBhdmFpbGFibGUgPSAJAKQDAQUIYXZhaWxSZXMCDiwgcmVxdWVzdGVkID0gCQCkAwEFBmFtb3VudAQMbmV3RGVsdGFUaW1lCQBrAwkAZQIFCGF2YWlsUmVzBQZhbW91bnQFCURBWU1JTExJUwkAaAIFFmRhaWx5UHJvZHVjdGlvbkJ5UGllY2UFBnBpZWNlcwQMbmV3VGltZXN0YW1wCQBlAggFCWxhc3RCbG9jawl0aW1lc3RhbXAFDG5ld0RlbHRhVGltZQQJbGFuZEluZGV4CQBpAgUGcGllY2VzBQVTU0laRQQKcmVzVG9DbGFpbQkBCXZpcnRDbGFpbQQFDXRlcnJhaW5Db3VudHMJAGUCBQlkZWx0YVRpbWUFDG5ld0RlbHRhVGltZQUJbGFuZEluZGV4BRZkYWlseVByb2R1Y3Rpb25CeVBpZWNlBAV3aEtleQkBEmtleVdhcmVob3VzZUJ5TGFuZAEIBQFjAl8yBAppbmZyYUxldmVsCQELdmFsdWVPckVsc2UCCQCfCAEJARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQgFAWMCXzIAAAQJY3VycmVudFdoCQEMZ2V0V2FyZWhvdXNlAwUFd2hLZXkFCWxhbmRJbmRleAUKaW5mcmFMZXZlbAQEbG9mdAkAtQkCCQCRAwIFCWN1cnJlbnRXaAUJd2hJZHhMT0ZUAgFfBAt3aFNwYWNlTGVmdAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFB3ZvbEZyZWUDAwkAAAIFCWNsYWltTW9kZQULY2xhaW1Nb2RlV2gJAGYCBQZhbW91bnQFC3doU3BhY2VMZWZ0BwkAAgEJAKwCAgkArAICAgVPbmx5IAkApAMBBQt3aFNwYWNlTGVmdAIYIHNwYWNlIGxlZnQgaW4gd2FyZWhvdXNlBAVicEtleQkBEWtleUJhY2twYWNrQnlEdWNrAQgFAWMCXzEEC2N1cnJlbnRQYWNrCQELZ2V0QmFja3BhY2sBBQVicEtleQQOY3VycmVudFBhY2tSZXMJALUJAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhSZXMCAV8EDGN1cnJlbnRXaFJlcwkAtQkCCQCRAwIFCWN1cnJlbnRXaAUId2hJZHhSZXMCAV8EDSR0MDM2NjUxMzc1MjIDCQAAAgUJY2xhaW1Nb2RlBQtjbGFpbU1vZGVXaAkAlgoECQEGYWRkUmVzBQUMY3VycmVudFdoUmVzBQ10ZXJyYWluQ291bnRzCQBlAgUJZGVsdGFUaW1lBQxuZXdEZWx0YVRpbWUFCWxhbmRJbmRleAUWZGFpbHlQcm9kdWN0aW9uQnlQaWVjZQkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhSZXMJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEbG9mdAULdm9sT2NjdXBpZWQIBQpyZXNUb0NsYWltAl8yCQBlAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFB3ZvbEZyZWUIBQpyZXNUb0NsYWltAl8yAwkAAAIFCWNsYWltTW9kZQUNY2xhaW1Nb2RlRHVjawkAlgoECQCRAwIFCWN1cnJlbnRXaAUId2hJZHhSZXMJAQZhZGRSZXMFBQ5jdXJyZW50UGFja1JlcwUNdGVycmFpbkNvdW50cwkAZQIFCWRlbHRhVGltZQUMbmV3RGVsdGFUaW1lBQlsYW5kSW5kZXgFFmRhaWx5UHJvZHVjdGlvbkJ5UGllY2UJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQt2b2xPY2N1cGllZAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFB3ZvbEZyZWUEBWRpc3RyCQENZGlzdHJpYnV0ZVJlcwQFDGN1cnJlbnRXaFJlcwUOY3VycmVudFBhY2tSZXMFCnJlc1RvQ2xhaW0FC3doU3BhY2VMZWZ0BAR3aEFtCQCXAwEJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFB3ZvbEZyZWUJAMwIAggFCnJlc1RvQ2xhaW0CXzIFA25pbAkAlgoECAUFZGlzdHICXzEIBQVkaXN0cgJfMgkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQt2b2xPY2N1cGllZAUEd2hBbQkAZQIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQd2b2xGcmVlBQR3aEFtBAV3aFJlcwgFDSR0MDM2NjUxMzc1MjICXzEEBWJwUmVzCAUNJHQwMzY2NTEzNzUyMgJfMgQFbG9mdE8IBQ0kdDAzNjY1MTM3NTIyAl8zBAVsb2Z0RggFDSR0MDM2NjUxMzc1MjICXzQJAJcKBQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBCAUBYwJfMgUMbmV3VGltZXN0YW1wCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEia2V5U3Rha2VkVGltZUJ5VHlwZUFzc2V0SWRBbmRPd25lcgMFCkxBTkRQUkVGSVgIBQFjAl8yBQRhZGRyBQxuZXdUaW1lc3RhbXAFA25pbAUFYnBLZXkJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUKYnBJZHhMZXZlbAkAzAgCBQVicFJlcwkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeE1hdAkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QFA25pbAUFd2hLZXkJAMwIAgkAkQMCBQljdXJyZW50V2gFC3doSWR4TGV2ZWxzCQDMCAIFBXdoUmVzCQDMCAIJAJEDAgUJY3VycmVudFdoBQh3aElkeE1hdAkAzAgCCQCRAwIFCWN1cnJlbnRXaAUJd2hJZHhQcm9kCQDMCAIJALkJAgkAzAgCCQCRAwIFBGxvZnQFCXZvbExvY2tlZAkAzAgCCQCkAwEFBWxvZnRPCQDMCAIJAKQDAQUFbG9mdEYJAMwIAgkAkQMCBQRsb2Z0BQh2b2xUb3RhbAUDbmlsAgFfBQNuaWwBCGNsYWltQWxsBARhZGRyC2xhbmRBc3NldElkBnBpZWNlcwljbGFpbU1vZGUEB3RpbWVLZXkJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQULbGFuZEFzc2V0SWQECXNhdmVkVGltZQkBBXZhbHVlAQkAnwgBBQd0aW1lS2V5BAhhdmFpbFJlcwkAaAIJAGsDCQBlAggFCWxhc3RCbG9jawl0aW1lc3RhbXAFCXNhdmVkVGltZQkBDGFwcGx5Qm9udXNlcwIFC2xhbmRBc3NldElkBQZwaWVjZXMFCURBWU1JTExJUwUGcGllY2VzCQEQY2xhaW1SZXNJbnRlcm5hbAQFBGFkZHIFCGF2YWlsUmVzBQljbGFpbU1vZGUFC2xhbmRBc3NldElkAQ11cEluZnJhQ29tbW9uBAxzaG91bGRVc2VNYXQGY2FsbGVyDXBheW1lbnRBbW91bnQLbGFuZEFzc2V0SWQEBGFkZHIJAKUIAQUGY2FsbGVyBAFjCQEUY2hlY2tDbGFpbUNvbmRpdGlvbnMDBQRhZGRyBRNjbGFpbU1vZGVXaFRoZW5EdWNrBQtsYW5kQXNzZXRJZAQGcGllY2VzCQEPbnVtUGllY2VzQnlTaXplAQkAkQMCCAUBYwJfMwULcmVjTGFuZFNpemUECGluZnJhS2V5CQEWa2V5SW5mcmFMZXZlbEJ5QXNzZXRJZAEIBQFjAl8yBAhjdXJMZXZlbAkBC3ZhbHVlT3JFbHNlAgkAnwgBBQhpbmZyYUtleQAAAwMJAQEhAQUYS1NfQUxMT1dfQklHX0lORlJBX01FUkdFCQBnAgUIY3VyTGV2ZWwAAwcJAAIBAiZDdXJyZW50bHkgbWF4IGluZnJhc3RydWN0dXJlIGxldmVsID0gMwQIbWF4SW5mcmEJAGQCCQBpAgkBBHNxcnQEBQZwaWVjZXMAAAAABQRET1dOAAUAAgQIbmV3TGV2ZWwJAGQCBQhjdXJMZXZlbAABAwMFGEtTX0FMTE9XX0JJR19JTkZSQV9NRVJHRQkAZgIFCG5ld0xldmVsBQhtYXhJbmZyYQcJAAIBCQCsAgICJUN1cnJlbnRseSBtYXggaW5mcmFzdHJ1Y3R1cmUgbGV2ZWwgPSAJAKQDAQUIbWF4SW5mcmEEBGNvc3QJAGsDBRVJbmZyYVVwZ3JhZGVDb3N0U1VzZHQJAGgCBQZwaWVjZXMFCG5ld0xldmVsBQVTU0laRQMDCQEBIQEFDHNob3VsZFVzZU1hdAkBAiE9AgUNcGF5bWVudEFtb3VudAUEY29zdAcJAAIBCQCsAgICG1BheW1lbnQgYXR0YWNoZWQgc2hvdWxkIGJlIAkApAMBBQRjb3N0BAVicEtleQkBEWtleUJhY2twYWNrQnlEdWNrAQgFAWMCXzEEC2N1cnJlbnRQYWNrCQELZ2V0QmFja3BhY2sBBQVicEtleQQFbUxpc3QJALUJAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhNYXQCAV8EB21hdFVzZWQJAGsDBRFJbmZyYVVwZ3JhZGVDb3N0UwkAaAIFBnBpZWNlcwUIbmV3TGV2ZWwFBVNTSVpFBAZuZXdNYXQJALkJAgkBEXN1YnRyYWN0TWF0ZXJpYWxzAwUMc2hvdWxkVXNlTWF0BQVtTGlzdAUHbWF0VXNlZAIBXwQLY2xhaW1SZXN1bHQJAQhjbGFpbUFsbAQFBGFkZHIIBQFjAl8yBQZwaWVjZXMFE2NsYWltTW9kZVdoVGhlbkR1Y2sEBndoRGF0YQgFC2NsYWltUmVzdWx0Al81BAZvbGRWb2wJARdnZXRXYXJlaG91c2VUb3RhbFZvbHVtZQEJAJEDAgUGd2hEYXRhBQt3aElkeExldmVscwQKbmV3Vm9sRGF0YQkAuQkCCQDMCAIJAJEDAgkAtQkCCQCRAwIFBndoRGF0YQULd2hJZHhMZXZlbHMCAV8AAAkAzAgCCQCkAwEFCG5ld0xldmVsBQNuaWwCAV8EBm5ld1ZvbAkBF2dldFdhcmVob3VzZVRvdGFsVm9sdW1lAQUKbmV3Vm9sRGF0YQQEbG9mdAkAtQkCCQCRAwIFBndoRGF0YQUJd2hJZHhMT0ZUAgFfBApuZXdMb2Z0U3RyCQC5CQIJAMwIAgkAkQMCBQRsb2Z0BQl2b2xMb2NrZWQJAMwIAgkAkQMCBQRsb2Z0BQt2b2xPY2N1cGllZAkAzAgCCQCkAwEJAGUCCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFB3ZvbEZyZWUFBm5ld1ZvbAUGb2xkVm9sCQDMCAIJAKQDAQUGbmV3Vm9sBQNuaWwCAV8JAJUKAwkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQhpbmZyYUtleQUIbmV3TGV2ZWwJAMwIAgkBDEludGVnZXJFbnRyeQIJAR5rZXlJbmZyYUxldmVsQnlBc3NldElkQW5kT3duZXICCAUBYwJfMgUEYWRkcgUIbmV3TGV2ZWwJAMwIAgkBC1N0cmluZ0VudHJ5AgUFYnBLZXkJALkJAgkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQpicElkeExldmVsCQDMCAIJAJEDAggFC2NsYWltUmVzdWx0Al8zBQhicElkeFJlcwkAzAgCBQZuZXdNYXQJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kBQNuaWwCAToJAMwIAgkBC1N0cmluZ0VudHJ5AggFC2NsYWltUmVzdWx0Al80CQC5CQIJAMwIAgUKbmV3Vm9sRGF0YQkAzAgCCQCRAwIFBndoRGF0YQUId2hJZHhSZXMJAMwIAgkAkQMCBQZ3aERhdGEFCHdoSWR4TWF0CQDMCAIJAJEDAgUGd2hEYXRhBQl3aElkeFByb2QJAMwIAgUKbmV3TG9mdFN0cgUDbmlsAgE6BQNuaWwIBQtjbGFpbVJlc3VsdAJfMQUIbmV3TGV2ZWwFB21hdFVzZWQBF3VwZGF0ZUR1Y2tTdGF0c0ludGVybmFsAgtkdWNrQXNzZXRJZAdkZWx0YVhQBAZsdmxLZXkJAQxrZXlEdWNrTGV2ZWwBBQtkdWNrQXNzZXRJZAQFeHBLZXkJAQlrZXlEdWNrWFABBQtkdWNrQXNzZXRJZAQCeHAJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUFeHBLZXkAAAQFbmV3WFAJAGQCBQJ4cAUHZGVsdGFYUAQJbHZsUG9pbnRzCQEHbGV2ZWxVcAIJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUGbHZsS2V5AAAFBW5ld1hQBAlrZXlQb2ludHMJARFrZXlEdWNrRnJlZVBvaW50cwEFC2R1Y2tBc3NldElkCQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIFBmx2bEtleQkAkQMCBQlsdmxQb2ludHMAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgUFeHBLZXkFBW5ld1hQCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQlrZXlQb2ludHMJAGQCCQELdmFsdWVPckVsc2UCCQCfCAEFCWtleVBvaW50cwAACQCRAwIFCWx2bFBvaW50cwABBQNuaWwFBW5ld1hQARZ1cGRhdGVBY2NTdGF0c0ludGVybmFsAgRhZGRyB2RlbHRhWFAEBmx2bEtleQkBDGtleVVzZXJMZXZlbAEFBGFkZHIEBXhwS2V5CQEJa2V5VXNlclhQAQUEYWRkcgQCeHAJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUFeHBLZXkAAAQFbmV3WFAJAGQCBQJ4cAUHZGVsdGFYUAQJbHZsUG9pbnRzCQEHbGV2ZWxVcAIJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUGbHZsS2V5AAAFBW5ld1hQBAlrZXlQb2ludHMJARFrZXlVc2VyRnJlZVBvaW50cwEFBGFkZHIJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUGbHZsS2V5CQCRAwIFCWx2bFBvaW50cwAACQDMCAIJAQxJbnRlZ2VyRW50cnkCBQV4cEtleQUFbmV3WFAJAMwIAgkBDEludGVnZXJFbnRyeQIFCWtleVBvaW50cwkAZAIJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJa2V5UG9pbnRzAAAJAJEDAgUJbHZsUG9pbnRzAAEFA25pbAUFbmV3WFABEmFjdGl2YXRlT25ib2FyZEFydAEEYWRkcgQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQRhZGRyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkBAhyZWZCeUtleQkBD2tleUFkZHJlc3NSZWZCeQEFBGFkZHIEBXJlZkJ5CQCiCAEFCHJlZkJ5S2V5AwkBASEBCQEJaXNEZWZpbmVkAQUFcmVmQnkJAAIBAilZb3UgYXJlIG5vdCBlbGlnaWJsZSBmb3IgT05CT0FSRCBhcnRpZmFjdAQGYXJ0S2V5CQEca2V5T25ib2FyZEFydER1Y2tBY3RpdmF0ZWRCeQEFBGFkZHIEB2FydER1Y2sJAKIIAQUGYXJ0S2V5AwkBCWlzRGVmaW5lZAEFB2FydER1Y2sJAAIBCQCsAgICL1lvdSBhbHJlYWR5IHVzZWQgeW91ciBPTkJPQVJEIGFydGlmYWN0IG9uIGR1Y2sgCQEFdmFsdWUBBQdhcnREdWNrBBBkdWNrQWN0aXZhdG9yS2V5CQEca2V5T25ib2FyZEFydEFjdGl2YXRlZE9uRHVjawEFC2R1Y2tBc3NldElkBA1kdWNrQWN0aXZhdG9yCQCiCAEFEGR1Y2tBY3RpdmF0b3JLZXkDCQEJaXNEZWZpbmVkAQUNZHVja0FjdGl2YXRvcgkAAgEJAKwCAgkArAICCQCsAgICCVRoZSBkdWNrIAULZHVja0Fzc2V0SWQCNCBhbHJlYWR5IGdvdCBwb2ludHMgZnJvbSBPTkJPQVJEIGFydGlmYWN0IGZyb20gdXNlciAJAQV2YWx1ZQEFDWR1Y2tBY3RpdmF0b3IJAM4IAgkAzAgCCQELU3RyaW5nRW50cnkCBQZhcnRLZXkFC2R1Y2tBc3NldElkCQDMCAIJAQtTdHJpbmdFbnRyeQIFEGR1Y2tBY3RpdmF0b3JLZXkFBGFkZHIFA25pbAgJARd1cGRhdGVEdWNrU3RhdHNJbnRlcm5hbAIFC2R1Y2tBc3NldElkBQl4cE9uYm9hcmQCXzEBEmFjdGl2YXRlUHJlc2FsZUFydAIEYWRkcg1sYW5kQXNzZXRJZEluBAFjCQEUY2hlY2tDbGFpbUNvbmRpdGlvbnMDBQRhZGRyBRNjbGFpbU1vZGVXaFRoZW5EdWNrBQ1sYW5kQXNzZXRJZEluBAtsYW5kQXNzZXRJZAgFAWMCXzIEBnBpZWNlcwkBD251bVBpZWNlc0J5U2l6ZQEJAJEDAggFAWMCXzMFC3JlY0xhbmRTaXplBA1hY3RpdmF0aW9uS2V5CQEga2V5TGFuZEFydFN0YXR1c0J5VHlwZUFuZEFzc2V0SWQCBQpBUlRQUkVTQUxFBQtsYW5kQXNzZXRJZAMJAGYCCQELdmFsdWVPckVsc2UCCQCfCAEFDWFjdGl2YXRpb25LZXkAAAAACQACAQIlUHJlc2FsZSBhcnRpZmFjdCBpcyBhbHJlYWR5IGFjdGl2YXRlZAMJAGYCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAggFAWMCXzMFCnJlY0xhbmROdW0FD1BSRVNBTEVOVU1MQU5EUwkAAgEJAKwCAgkArAICCQCsAgIFCkxBTkRQUkVGSVgCASAFC2xhbmRBc3NldElkAiUgaXMgbm90IGVsaWdpYmxlIGZvciBwcmVzYWxlIGFydGlmYWN0BAtjbGFpbVJlc3VsdAkBCGNsYWltQWxsBAUEYWRkcgULbGFuZEFzc2V0SWQFBnBpZWNlcwUTY2xhaW1Nb2RlV2hUaGVuRHVjawkAzQgCCQDNCAIJAM0IAggFC2NsYWltUmVzdWx0Al8xCQEMSW50ZWdlckVudHJ5AgUNYWN0aXZhdGlvbktleQUGcGllY2VzCQELU3RyaW5nRW50cnkCCAULY2xhaW1SZXN1bHQCXzIJALkJAggFC2NsYWltUmVzdWx0Al8zAgE6CQELU3RyaW5nRW50cnkCCAULY2xhaW1SZXN1bHQCXzQJALkJAggFC2NsYWltUmVzdWx0Al81AgE6AQ9jaGVja1RvdXJuYW1lbnQBC2R1Y2tBc3NldElkBAZsYXN0SWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUSdG91cm5hbWVudENvbnRyYWN0BQ1sYXN0VG91cklkS2V5AAAEC2N1ckxvY2F0aW9uCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAKIIAQkBD2tleUR1Y2tMb2NhdGlvbgEFC2R1Y2tBc3NldElkBQ9ERUZBVUxUTE9DQVRJT04CAV8EA25vdwgFCWxhc3RCbG9jawl0aW1lc3RhbXAEBXREYXRhCQELZ2V0VG91ckRhdGECBRJ0b3VybmFtZW50Q29udHJhY3QFBmxhc3RJZAQGc3RhdGljCQCRAwIFBXREYXRhBQlpZHhTdGF0aWMEB2R5bmFtaWMJAJEDAgUFdERhdGEFCmlkeER5bmFtaWMDCQECIT0CCQCRAwIFC2N1ckxvY2F0aW9uBQpsb2NJZHhUeXBlAgFUBwMDAwkAAAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQtjdXJMb2NhdGlvbgUPbG9jSWR4Q29udGluZW50BQZsYXN0SWQJAAACCQCRAwIFB2R5bmFtaWMFDnREeW5hbWljU3RhdHVzAgpJTlBST0dSRVNTBwkAZgIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQZzdGF0aWMFCnRTdGF0aWNFbmQFA25vdwcJAAIBAipZb3VyIGR1Y2sgaXMgdGFraW5nIHBhcnQgaW4gdGhlIHRvdXJuYW1lbnQJAQlhc0Jvb2xlYW4BCQD8BwQFBHRoaXMCFmV4aXRUb3VybmFtZW50SW50ZXJuYWwJAMwIAgULZHVja0Fzc2V0SWQFA25pbAUDbmlsAQ1jaGVja0RlbGl2ZXJ5AQtkdWNrQXNzZXRJZAMJAQEhAQURS1NfQUxMT1dfREVMSVZFUlkHBAtjdXJMb2NhdGlvbgkAtQkCCQELdmFsdWVPckVsc2UCCQCiCAEJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAUPREVGQVVMVExPQ0FUSU9OAgFfBANub3cIBQlsYXN0QmxvY2sJdGltZXN0YW1wAwkBAiE9AgkAkQMCBQtjdXJMb2NhdGlvbgUKbG9jSWR4VHlwZQIBRAcECXN0YXJ0VGltZQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFC2N1ckxvY2F0aW9uBQ9sb2NJZHhDb250aW5lbnQECGRpc3RhbmNlCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgULY3VyTG9jYXRpb24FCGxvY0lkeElkAwMJAGYCBQNub3cJAGQCBQlzdGFydFRpbWUFElRFTl9NSU5VVEVTX01JTExJUwkAZgIAAwUIZGlzdGFuY2UHCQACAQIgWW91ciBkdWNrIGlzIG9uIGRlbGl2ZXJ5IG1pc3Npb24JAQlhc0Jvb2xlYW4BCQD8BwQFBHRoaXMCFGV4aXREZWxpdmVyeUludGVybmFsCQDMCAIFC2R1Y2tBc3NldElkBQNuaWwFA25pbAESZXhpdERlbGl2ZXJ5Q29tbW9uAwtkdWNrQXNzZXRJZApjaGVja05ld0hQBW5ld0hQBAtjdXJMb2NhdGlvbgkAtQkCCQELdmFsdWVPckVsc2UCCQCiCAEJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAUPREVGQVVMVExPQ0FUSU9OAgFfBANub3cIBQlsYXN0QmxvY2sJdGltZXN0YW1wBAlzdGFydFRpbWUJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQtjdXJMb2NhdGlvbgUPbG9jSWR4Q29udGluZW50BAhkaXN0YW5jZQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFC2N1ckxvY2F0aW9uBQhsb2NJZHhJZAQFb3duZXIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEQa2V5RHVja0lkVG9Pd25lcgEFC2R1Y2tBc3NldElkAhRORlQgZHVjayBpcyBvcnBoYW5lZAQJaGVhbHRoS2V5CQENa2V5RHVja0hlYWx0aAEFC2R1Y2tBc3NldElkBAljdXJIZWFsdGgJARFAZXh0ck5hdGl2ZSgxMDU1KQEFCWhlYWx0aEtleQQOb3V0Y29tZUFjdGlvbnMDCQBnAgUIZGlzdGFuY2UAAwQGcmV3YXJkCQD8BwQFD2Vjb25vbXlDb250cmFjdAISc2VuZERlbGl2ZXJ5UmV3YXJkCQDMCAIFBW93bmVyBQNuaWwFA25pbAMJAAACBQZyZXdhcmQFBnJld2FyZAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAwMDBQpjaGVja05ld0hQCQBmAgUFbmV3SFAAAAcJAGYCBQNub3cJAGQCBQlzdGFydFRpbWUFElRFTl9NSU5VVEVTX01JTExJUwcJAAIBAiZZb3VyIGR1Y2sgaXMgc3RpbGwgb24gZGVsaXZlcnkgbWlzc2lvbgQLbG9ja2VkVG90YWwJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPZWNvbm9teUNvbnRyYWN0BRFkZWxpdmVyeUxvY2tlZEtleQAABAZ1bmxvY2sJAPwHBAUPZWNvbm9teUNvbnRyYWN0AhR1cGRhdGVEZWxpdmVyeUxvY2tlZAkAzAgCCQBlAgULbG9ja2VkVG90YWwFFU1JTl9VU0RUX0ZFRV9ERUxJVkVSWQUDbmlsBQNuaWwDCQAAAgUGdW5sb2NrBQZ1bmxvY2sDCQBnAgAABQljdXJIZWFsdGgFA25pbAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBFmtleURlbGl2ZXJ5RGVsYXlCeUR1Y2sBBQtkdWNrQXNzZXRJZAkAZAIFCXN0YXJ0VGltZQUTREVMSVZFUllfUFVOSVNITUVOVAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBAtzYXZlZEhlYWx0aAkBEUBleHRyTmF0aXZlKDEwNTUpAQkBDmtleVNhdmVkSGVhbHRoAQULZHVja0Fzc2V0SWQEDXNhdmVkTG9jYXRpb24JARFAZXh0ck5hdGl2ZSgxMDU4KQEJARBrZXlTYXZlZExvY2F0aW9uAQULZHVja0Fzc2V0SWQJAJYKBAUOb3V0Y29tZUFjdGlvbnMJAMwIAgkBDEludGVnZXJFbnRyeQIFCWhlYWx0aEtleQULc2F2ZWRIZWFsdGgJAMwIAgkBC1N0cmluZ0VudHJ5AgkBD2tleUR1Y2tMb2NhdGlvbgEFC2R1Y2tBc3NldElkBQ1zYXZlZExvY2F0aW9uBQNuaWwFDXNhdmVkTG9jYXRpb24FC3NhdmVkSGVhbHRoAQ1tZXJnZUludGVybmFsBgtuZXdMYW5kU2l6ZQhuZXdMZXZlbAdmb3JtdWxhBGFkZHIMbGFuZEFzc2V0SWRzB25lZWRNYXQEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUEYWRkcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAMJAQ9jaGVja1RvdXJuYW1lbnQBBQtkdWNrQXNzZXRJZAkAAgECHW1lcmdlSW50ZXJuYWxfY2hlY2tUb3VybmFtZW50AwkBDWNoZWNrRGVsaXZlcnkBBQtkdWNrQXNzZXRJZAkAAgECG21lcmdlSW50ZXJuYWxfY2hlY2tEZWxpdmVyeQoBCmNoZWNrTWVyZ2UCA2FjYwtsYW5kQXNzZXRJZAQFYXNzZXQJAQV2YWx1ZQEJAOwHAQkA2QQBBQtsYW5kQXNzZXRJZAQHdGltZUtleQkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAQJc2F2ZWRUaW1lCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ8IAQUHdGltZUtleQkArAICCQCsAgICBE5GVCAIBQVhc3NldARuYW1lAg4gaXMgbm90IHN0YWtlZAQFb3duZXIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEVa2V5TGFuZEFzc2V0SWRUb093bmVyAQULbGFuZEFzc2V0SWQJAKwCAgkArAICAgRORlQgCAUFYXNzZXQEbmFtZQIMIGlzIG9ycGhhbmVkAwkBAiE9AgUFb3duZXIFBGFkZHIJAAIBCQCsAgIFCkxBTkRQUkVGSVgCDSBpcyBub3QgeW91cnMEAWQJALUJAggFBWFzc2V0C2Rlc2NyaXB0aW9uAgFfBAljb250aW5lbnQJAJEDAgUBZAUMcmVjQ29udGluZW50AwMJAQIhPQIIBQNhY2MCXzMCAAkBAiE9AggFA2FjYwJfMwUJY29udGluZW50BwkAAgECLkxhbmRzIHNob3VsZCBiZSBvbiB0aGUgc2FtZSBjb250aW5lbnQgdG8gbWVyZ2UECGxhbmRTaXplCQCRAwIFAWQFC3JlY0xhbmRTaXplBAdzaXplc0luCAUDYWNjAl8xBAFpCQETdmFsdWVPckVycm9yTWVzc2FnZQIJALMJAgUHc2l6ZXNJbgUIbGFuZFNpemUCJ1lvdSBoYXZlbid0IHBhc3NlZCBhbGwgdGhlIGxhbmRzIG5lZWRlZAQIc2l6ZXNPdXQJAKwCAgkArwICBQdzaXplc0luBQFpCQCwAgIFB3NpemVzSW4JAGQCBQFpAAEEBnBpZWNlcwkBD251bVBpZWNlc0J5U2l6ZQEFCGxhbmRTaXplBARhcnRzCQBkAggFA2FjYwJfMgkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEga2V5TGFuZEFydFN0YXR1c0J5VHlwZUFuZEFzc2V0SWQCBQpBUlRQUkVTQUxFBQtsYW5kQXNzZXRJZAAABAppbmZyYUxldmVsCQELdmFsdWVPckVsc2UCCQCfCAEJARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQULbGFuZEFzc2V0SWQAAAQIcmVxTGV2ZWwEByRtYXRjaDAFCGxhbmRTaXplAwkAAAICAVMFByRtYXRjaDAAAwMJAAACAgFNBQckbWF0Y2gwAAQDCQAAAgIBTAUHJG1hdGNoMAAFAwkAAAICAlhMBQckbWF0Y2gwAAYJAAIBAhpPbmx5IFMsIE0sIEwsIFhMIGNhbiBtZXJnZQMJAQIhPQIFCmluZnJhTGV2ZWwFCHJlcUxldmVsCQACAQIiQWxsIGxhbmRzIHNob3VsZCBiZSBtYXhlZCB0byBtZXJnZQQHbGFuZE51bQkAkQMCBQFkBQpyZWNMYW5kTnVtBA10ZXJyYWluQ291bnRzCQENY291bnRUZXJyYWlucwEJAJEDAgUBZAULcmVjVGVycmFpbnMECWRlbHRhVGltZQkAZQIIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQlzYXZlZFRpbWUDCQBmAgAABQlkZWx0YVRpbWUJAAIBCQCsAgIJAKwCAgkArAICAiZTYXZlZCB0aW1lc3RhbXAgaXMgaW4gZnV0dXJlLCBzYXZlZCA9IAkApAMBBQlzYXZlZFRpbWUCDCwgY3VycmVudCA9IAkApAMBCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQWZGFpbHlQcm9kdWN0aW9uQnlQaWVjZQkBDGFwcGx5Qm9udXNlcwIFC2xhbmRBc3NldElkBQZwaWVjZXMECWxhbmRJbmRleAkAaQIFBnBpZWNlcwUFU1NJWkUEBWJwUmVzCQEGYWRkUmVzBQkAtQkCCAUDYWNjAl80AgFfBQ10ZXJyYWluQ291bnRzBQlkZWx0YVRpbWUFCWxhbmRJbmRleAUWZGFpbHlQcm9kdWN0aW9uQnlQaWVjZQQFcHJvcHMJARl1cGRhdGVQcm9wb3J0aW9uc0ludGVybmFsBAgFA2FjYwJfNgUNdGVycmFpbkNvdW50cwUJbGFuZEluZGV4AP///////////wEEBmNQcm9wcwkBGXVwZGF0ZVByb3BvcnRpb25zSW50ZXJuYWwECAUDYWNjA18xMAUNdGVycmFpbkNvdW50cwUJbGFuZEluZGV4AP///////////wEEC3N1bVRlcnJhaW5zCQEZdXBkYXRlUHJvcG9ydGlvbnNJbnRlcm5hbAQIBQNhY2MCXzkFDXRlcnJhaW5Db3VudHMFCWxhbmRJbmRleAABBAVsYW5kcwgFA2FjYwJfNwQDaWR4CQDPCAIFBWxhbmRzBQtsYW5kQXNzZXRJZAMJAQEhAQkBCWlzRGVmaW5lZAEFA2lkeAkAAgEJAKwCAgIgWW91ciBzdGFrZWQgbGFuZHMgZG9uJ3QgY29udGFpbiAFC2xhbmRBc3NldElkBAljdXN0b21LZXkJARprZXlMYW5kQXNzZXRJZFRvQ3VzdG9tTmFtZQEFC2xhbmRBc3NldElkBApjdXN0b21OYW1lCQELdmFsdWVPckVsc2UCCQCiCAEFCWN1c3RvbUtleQIACQCcCgoFCHNpemVzT3V0BQRhcnRzBQljb250aW5lbnQFBWJwUmVzCQDOCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCAUDYWNjAl81CQELRGVsZXRlRW50cnkBCQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFC2xhbmRBc3NldElkCQELRGVsZXRlRW50cnkBCQEia2V5U3Rha2VkVGltZUJ5VHlwZUFzc2V0SWRBbmRPd25lcgMFCkxBTkRQUkVGSVgFC2xhbmRBc3NldElkBQRhZGRyCQELRGVsZXRlRW50cnkBCQEQa2V5TGFuZFRvQXNzZXRJZAEFB2xhbmROdW0JAQtEZWxldGVFbnRyeQEJARVrZXlMYW5kQXNzZXRJZFRvT3duZXIBBQtsYW5kQXNzZXRJZAkBC0RlbGV0ZUVudHJ5AQkBFmtleUluZnJhTGV2ZWxCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAkBC0RlbGV0ZUVudHJ5AQkBHmtleUluZnJhTGV2ZWxCeUFzc2V0SWRBbmRPd25lcgIFC2xhbmRBc3NldElkBQRhZGRyCQELRGVsZXRlRW50cnkBCQEga2V5TGFuZEFydFN0YXR1c0J5VHlwZUFuZEFzc2V0SWQCBQpBUlRQUkVTQUxFBQtsYW5kQXNzZXRJZAkBC0RlbGV0ZUVudHJ5AQkBEWtleUxhbmROdW1Ub093bmVyAQUHbGFuZE51bQkBC0RlbGV0ZUVudHJ5AQkBEmtleVdhcmVob3VzZUJ5TGFuZAEFC2xhbmRBc3NldElkCQELRGVsZXRlRW50cnkBBQljdXN0b21LZXkJAQRCdXJuAgkA2QQBBQtsYW5kQXNzZXRJZAABAwkBAiE9AgUKY3VzdG9tTmFtZQIACQDMCAIJAQtEZWxldGVFbnRyeQEJARprZXlMYW5kQ3VzdG9tTmFtZVRvQXNzZXRJZAEFCmN1c3RvbU5hbWUFA25pbAUDbmlsBQVwcm9wcwkA0QgCBQVsYW5kcwkBBXZhbHVlAQUDaWR4CQBkAggFA2FjYwJfOAUGcGllY2VzBQtzdW1UZXJyYWlucwUGY1Byb3BzBAVicEtleQkBEWtleUJhY2twYWNrQnlEdWNrAQULZHVja0Fzc2V0SWQEC2N1cnJlbnRQYWNrCQELZ2V0QmFja3BhY2sBBQVicEtleQQIcHJvcExpc3QJALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBCQERa2V5UmVzUHJvcG9ydGlvbnMAAgswXzBfMF8wXzBfMAIBXwQIbGFuZHNLZXkJARVrZXlTdGFrZWRMYW5kc0J5T3duZXIBBQRhZGRyBAhsYW5kc1N0cgkAoggBBQhsYW5kc0tleQQHbGFuZHNJbgMJAQlpc0RlZmluZWQBBQhsYW5kc1N0cgkAvQkCCQEFdmFsdWUBBQhsYW5kc1N0cgIBXwUDbmlsBAVjb250MAkAkQMCCQC1CQIICQEFdmFsdWUBCQDsBwEJANkEAQkAkQMCBQxsYW5kQXNzZXRJZHMAAAtkZXNjcmlwdGlvbgIBXwUMcmVjQ29udGluZW50BAljb250UHJvcHMJALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBCQEWa2V5UmVzVHlwZXNCeUNvbnRpbmVudAEFBWNvbnQwAgswXzBfMF8wXzBfMAIBXwQBcgoAAiRsBQxsYW5kQXNzZXRJZHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCcCgoFB2Zvcm11bGEAAAIACQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeFJlcwUDbmlsBQhwcm9wTGlzdAUHbGFuZHNJbgAACQC1CQICCzBfMF8wXzBfMF8wAgFfBQljb250UHJvcHMKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBCmNoZWNrTWVyZ2UCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDUJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFBAljb250aW5lbnQIBQFyAl8zBAxjb250aW5lbnRJZHgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAzwgCBQpjb250aW5lbnRzBQljb250aW5lbnQJAKwCAgITVW5rbm93biBjb250aW5lbnQ6IAUJY29udGluZW50BAh0ZXJyYWlucwkBE2dlblRlcnJhaW5zRm9yTWVyZ2UCCAUBcgJfOQkAaQIJAQ9udW1QaWVjZXNCeVNpemUBBQtuZXdMYW5kU2l6ZQUFU1NJWkUEB2ZyZWVOdW0JAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBEmtleU5leHRGcmVlTGFuZE51bQAJAGQCBQ9QUkVTQUxFTlVNTEFORFMAAQQKbmV3TGFuZE51bQkApAMBBQdmcmVlTnVtBAVpc3N1ZQkAwggFCQEHbmZ0TmFtZQIFCm5ld0xhbmROdW0FC25ld0xhbmRTaXplCQC5CQIJAMwIAgUKbmV3TGFuZE51bQkAzAgCBQtuZXdMYW5kU2l6ZQkAzAgCBQh0ZXJyYWlucwkAzAgCBQljb250aW5lbnQFA25pbAIBXwABAAAHBAdhc3NldElkCQC4CAEFBWlzc3VlBA5uZXdMYW5kQXNzZXRJZAkA2AQBBQdhc3NldElkBAZuZXdNYXQJALkJAgkBEXN1YnRyYWN0TWF0ZXJpYWxzAwkAZgIFB25lZWRNYXQAAAkAtQkCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeE1hdAIBXwUHbmVlZE1hdAIBXwQJcGllY2VzS2V5CQEWa2V5U3Rha2VkUGllY2VzQnlPd25lcgEFBGFkZHIEDHN0YWtlZFBpZWNlcwkBC3ZhbHVlT3JFbHNlAgkAnwgBBQlwaWVjZXNLZXkAAAkAlAoCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCAUBcgJfNQMJAGYCCQCQAwEIBQFyAl83AAAJAQtTdHJpbmdFbnRyeQIFCGxhbmRzS2V5CQC7CQIIBQFyAl83AgFfCQELRGVsZXRlRW50cnkBBQhsYW5kc0tleQkBDEludGVnZXJFbnRyeQIFCXBpZWNlc0tleQMJAGYCCAUBcgJfOAUMc3Rha2VkUGllY2VzAAAJAGUCBQxzdGFrZWRQaWVjZXMIBQFyAl84CQEMSW50ZWdlckVudHJ5AgkBEmtleU5leHRGcmVlTGFuZE51bQAJAGQCBQdmcmVlTnVtAAEFBWlzc3VlCQELU3RyaW5nRW50cnkCCQEQa2V5TGFuZFRvQXNzZXRJZAEFCm5ld0xhbmROdW0FDm5ld0xhbmRBc3NldElkCQELU3RyaW5nRW50cnkCCQEVa2V5TGFuZEFzc2V0SWRUb093bmVyAQUObmV3TGFuZEFzc2V0SWQFBGFkZHIJAQtTdHJpbmdFbnRyeQIJARFrZXlMYW5kTnVtVG9Pd25lcgEFCm5ld0xhbmROdW0FBGFkZHIJAQxJbnRlZ2VyRW50cnkCCQEga2V5TGFuZEFydFN0YXR1c0J5VHlwZUFuZEFzc2V0SWQCBQpBUlRQUkVTQUxFBQ5uZXdMYW5kQXNzZXRJZAgFAXICXzIJAQxJbnRlZ2VyRW50cnkCCQEWa2V5SW5mcmFMZXZlbEJ5QXNzZXRJZAEFDm5ld0xhbmRBc3NldElkBQhuZXdMZXZlbAkBDEludGVnZXJFbnRyeQIJAR5rZXlJbmZyYUxldmVsQnlBc3NldElkQW5kT3duZXICBQ5uZXdMYW5kQXNzZXRJZAUEYWRkcgUIbmV3TGV2ZWwJAQtTdHJpbmdFbnRyeQIFBWJwS2V5CQC5CQIJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUKYnBJZHhMZXZlbAkAzAgCCAUBcgJfNAkAzAgCBQZuZXdNYXQJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kBQNuaWwCAToJAQtTdHJpbmdFbnRyeQIJARFrZXlSZXNQcm9wb3J0aW9ucwAJALkJAggFAXICXzYCAV8JAQtTdHJpbmdFbnRyeQIJARZrZXlSZXNUeXBlc0J5Q29udGluZW50AQUJY29udGluZW50CQC5CQIIBQFyA18xMAIBXwkBC1N0cmluZ0VudHJ5AgkBD2tleUR1Y2tMb2NhdGlvbgEFC2R1Y2tBc3NldElkCQC5CQIJAMwIAgUJY29udGluZW50CQDMCAICAUwJAMwIAgUObmV3TGFuZEFzc2V0SWQFA25pbAIBXwkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQUEYWRkcgABBQdhc3NldElkBQ5uZXdMYW5kQXNzZXRJZAEDczJtAgRhZGRyDGxhbmRBc3NldElkcwkBDW1lcmdlSW50ZXJuYWwGAgFNAAMCBFNTU1MFBGFkZHIFDGxhbmRBc3NldElkcwAAAQNtMmwCBGFkZHIMbGFuZEFzc2V0SWRzCQENbWVyZ2VJbnRlcm5hbAYCAUwABAIDU01NBQRhZGRyBQxsYW5kQXNzZXRJZHMJAGgCBRFJbmZyYVVwZ3JhZGVDb3N0UwAEAQRsMnhsAgRhZGRyDGxhbmRBc3NldElkcwkBDW1lcmdlSW50ZXJuYWwGAgJYTAAFAgVTU1NNTAUEYWRkcgUMbGFuZEFzc2V0SWRzCQBoAgURSW5mcmFVcGdyYWRlQ29zdFMALwEGeGwyeHhsAgRhZGRyDGxhbmRBc3NldElkcwkBDW1lcmdlSW50ZXJuYWwGAgNYWEwABgIDTFhMBQRhZGRyBQxsYW5kQXNzZXRJZHMJAGgCBRFJbmZyYVVwZ3JhZGVDb3N0UwA2AQttZXJnZUNvbW1vbgIEYWRkcgxsYW5kQXNzZXRJZHMEByRtYXRjaDAJAJADAQUMbGFuZEFzc2V0SWRzAwkAAAIABAUHJG1hdGNoMAkBA3MybQIFBGFkZHIFDGxhbmRBc3NldElkcwMJAAACAAMFByRtYXRjaDAJAQNtMmwCBQRhZGRyBQxsYW5kQXNzZXRJZHMDCQAAAgAFBQckbWF0Y2gwCQEEbDJ4bAIFBGFkZHIFDGxhbmRBc3NldElkcwMJAAACAAIFByRtYXRjaDAJAQZ4bDJ4eGwCBQRhZGRyBQxsYW5kQXNzZXRJZHMJAAIBAg1Vbmtub3duIG1lcmdlARVjaGVja091dGRhdGVkRGVsaXZlcnkBCHVzZXJBZGRyBARkdWNrCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFCHVzZXJBZGRyAwMFEUtTX0FMTE9XX0RFTElWRVJZCQEJaXNEZWZpbmVkAQUEZHVjawcEC2R1Y2tBc3NldElkCQEFdmFsdWUBBQRkdWNrBAZsb2NLZXkJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAQDbG9jCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAKIIAQUGbG9jS2V5BQ9ERUZBVUxUTE9DQVRJT04CAV8ECXN0YXJ0VGltZQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFA2xvYwUPbG9jSWR4Q29udGluZW50AwMJAQIhPQIJAJEDAgUDbG9jBQpsb2NJZHhUeXBlAgFEBgkAZgIIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQBkAgUJc3RhcnRUaW1lBRJURU5fTUlOVVRFU19NSUxMSVMFA25pbAQJaGVhbHRoS2V5CQENa2V5RHVja0hlYWx0aAEFC2R1Y2tBc3NldElkAwkAZwIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNsb2MFCGxvY0lkeElkAAMEBnJld2FyZAkA/AcEBQ9lY29ub215Q29udHJhY3QCEnNlbmREZWxpdmVyeVJld2FyZAkAzAgCBQh1c2VyQWRkcgUDbmlsBQNuaWwDCQAAAgUGcmV3YXJkBQZyZXdhcmQFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAzQgCCQDNCAIEC2xvY2tlZFRvdGFsCQELdmFsdWVPckVsc2UCCQCaCAIFD2Vjb25vbXlDb250cmFjdAURZGVsaXZlcnlMb2NrZWRLZXkAAAQGdW5sb2NrCQD8BwQFD2Vjb25vbXlDb250cmFjdAIUdXBkYXRlRGVsaXZlcnlMb2NrZWQJAMwIAgkAZQIFC2xvY2tlZFRvdGFsBRVNSU5fVVNEVF9GRUVfREVMSVZFUlkFA25pbAUDbmlsAwkAAAIFBnVubG9jawUGdW5sb2NrAwkAZwIAAAkBEUBleHRyTmF0aXZlKDEwNTUpAQUJaGVhbHRoS2V5BQNuaWwECnB1bmlzaG1lbnQJAPwHBAUEdGhpcwILc2F2ZUludGVnZXIJAMwIAgkBFmtleURlbGl2ZXJ5RGVsYXlCeUR1Y2sBBQtkdWNrQXNzZXRJZAkAzAgCCQBkAgUJc3RhcnRUaW1lBRNERUxJVkVSWV9QVU5JU0hNRU5UBQNuaWwFA25pbAMJAAACBQpwdW5pc2htZW50BQpwdW5pc2htZW50BQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAQxJbnRlZ2VyRW50cnkCBQloZWFsdGhLZXkJARFAZXh0ck5hdGl2ZSgxMDU1KQEJAQ5rZXlTYXZlZEhlYWx0aAEFC2R1Y2tBc3NldElkCQELU3RyaW5nRW50cnkCBQZsb2NLZXkJARFAZXh0ck5hdGl2ZSgxMDU4KQEJARBrZXlTYXZlZExvY2F0aW9uAQULZHVja0Fzc2V0SWQFA25pbAEGcHJvbG9nAQFpAwMJAQIhPQIIBQFpDG9yaWdpbkNhbGxlcgUMcmVzdENvbnRyYWN0CQELdmFsdWVPckVsc2UCCQCgCAEJAQprZXlCbG9ja2VkAAcHCQACAQIfQ29udHJhY3RzIGFyZSB1bmRlciBtYWludGVuYW5jZQQIdXNlckFkZHIJAKUIAQgFAWkMb3JpZ2luQ2FsbGVyCQDNCAIJARVjaGVja091dGRhdGVkRGVsaXZlcnkBBQh1c2VyQWRkcgkBC1N0cmluZ0VudHJ5AgkBEWtleUxhc3RUeElkQnlVc2VyAQUIdXNlckFkZHIJANgEAQgFAWkNdHJhbnNhY3Rpb25JZAEMcHJvbG9nRmxpZ2h0AQFpAwMJAQIhPQIIBQFpDG9yaWdpbkNhbGxlcgUMcmVzdENvbnRyYWN0CQELdmFsdWVPckVsc2UCCQCgCAEJAQprZXlCbG9ja2VkAAcHCQACAQIfQ29udHJhY3RzIGFyZSB1bmRlciBtYWludGVuYW5jZQkAzAgCCQELU3RyaW5nRW50cnkCCQERa2V5TGFzdFR4SWRCeVVzZXIBCQClCAEIBQFpDG9yaWdpbkNhbGxlcgkA2AQBCAUBaQ10cmFuc2FjdGlvbklkBQNuaWwtAWkBDWNvbnN0cnVjdG9yVjEBCHJlc3RBZGRyAwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQIRUGVybWlzc2lvbiBkZW5pZWQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDmtleVJlc3RBZGRyZXNzAAUIcmVzdEFkZHIFA25pbAFpAQtzYXZlSW50ZWdlcgIDa2V5BmFtb3VudAMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECIHNhdmVJbnRlZ2VyIGlzIG5vdCBwdWJsaWMgbWV0aG9kCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQNrZXkFBmFtb3VudAUDbmlsAWkBCnNldEJsb2NrZWQBCWlzQmxvY2tlZAMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECEXBlcm1pc3Npb24gZGVuaWVkCQDMCAIJAQxCb29sZWFuRW50cnkCCQEKa2V5QmxvY2tlZAAFCWlzQmxvY2tlZAUDbmlsAWkBCXN0YWtlTGFuZAAEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQIcRXhhY3RseSBvbmUgcGF5bWVudCByZXF1aXJlZAQDcG10CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAEB2Fzc2V0SWQJAQV2YWx1ZQEIBQNwbXQHYXNzZXRJZAQHYWRkcmVzcwkApQgBCAUBaQZjYWxsZXIDCQECIT0CCAUDcG10BmFtb3VudAABCQACAQkArAICCQCsAgICBE5GVCAFCkxBTkRQUkVGSVgCJCB0b2tlbiBzaG91bGQgYmUgYXR0YWNoZWQgYXMgcGF5bWVudAQFYXNzZXQJAQV2YWx1ZQEJAOwHAQUHYXNzZXRJZAMJAQIhPQIIBQVhc3NldAZpc3N1ZXIFBHRoaXMJAAIBAhdVbmtub3duIGlzc3VlciBvZiB0b2tlbgMJAQEhAQkBCGNvbnRhaW5zAggFBWFzc2V0BG5hbWUFCkxBTkRQUkVGSVgJAAIBCQCsAgIJAKwCAgIJT25seSBORlQgBQpMQU5EUFJFRklYAhQgdG9rZW5zIGFyZSBhY2NlcHRlZAQLbGFuZE51bVNpemUJALACAggFBWFzc2V0BG5hbWUABAQHbGFuZE51bQMJAQhjb250YWlucwIFC2xhbmROdW1TaXplAgNYWEwJALMCAgULbGFuZE51bVNpemUAAwMJAQhjb250YWlucwIFC2xhbmROdW1TaXplAgJYTAkAswICBQtsYW5kTnVtU2l6ZQACCQCzAgIFC2xhbmROdW1TaXplAAEDCQEBIQEJAQlpc0RlZmluZWQBCQC2CQEFB2xhbmROdW0JAAIBCQCsAgICHkNhbm5vdCBwYXJzZSBsYW5kIG51bWJlciBmcm9tIAgFBWFzc2V0BG5hbWUEC2xhbmRBc3NldElkCQDYBAEFB2Fzc2V0SWQEB3RpbWVLZXkJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQULbGFuZEFzc2V0SWQDCQEJaXNEZWZpbmVkAQkAnwgBBQd0aW1lS2V5CQACAQkArAICCQCsAgICBE5GVCAIBQVhc3NldARuYW1lAhIgaXMgYWxyZWFkeSBzdGFrZWQEAWQJALUJAggFBWFzc2V0C2Rlc2NyaXB0aW9uAgFfBA10ZXJyYWluQ291bnRzCQENY291bnRUZXJyYWlucwEJAJEDAgUBZAULcmVjVGVycmFpbnMEBnBpZWNlcwkBD251bVBpZWNlc0J5U2l6ZQEJAJEDAgUBZAULcmVjTGFuZFNpemUECWxhbmRJbmRleAkAaQIFBnBpZWNlcwUFU1NJWkUEBXByb3BzCQERdXBkYXRlUHJvcG9ydGlvbnMDBQ10ZXJyYWluQ291bnRzBQlsYW5kSW5kZXgAAQQMcmVzQnlDb250S2V5CQEWa2V5UmVzVHlwZXNCeUNvbnRpbmVudAEJAJEDAgUBZAUMcmVjQ29udGluZW50BAljb250UHJvcHMJALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBBQxyZXNCeUNvbnRLZXkCCzBfMF8wXzBfMF8wAgFfBBB1cGRhdGVkQ29udFByb3BzCQC5CQIJARl1cGRhdGVQcm9wb3J0aW9uc0ludGVybmFsBAUJY29udFByb3BzBQ10ZXJyYWluQ291bnRzBQlsYW5kSW5kZXgAAQIBXwQIbGFuZHNLZXkJARVrZXlTdGFrZWRMYW5kc0J5T3duZXIBBQdhZGRyZXNzBAhsYW5kc1N0cgkAoggBBQhsYW5kc0tleQQFbGFuZHMDCQEJaXNEZWZpbmVkAQUIbGFuZHNTdHIJAL0JAgkBBXZhbHVlAQUIbGFuZHNTdHICAV8FA25pbAMJAQ9jb250YWluc0VsZW1lbnQCBQVsYW5kcwULbGFuZEFzc2V0SWQJAAIBCQCsAgICIllvdXIgc3Rha2VkIGxhbmRzIGFscmVhZHkgY29udGFpbiAFC2xhbmRBc3NldElkAwkAZwIJAJADAQUFbGFuZHMFGE1BWF9MQU5EU19TVEFLRURfQllfVVNFUgkAAgEJAKwCAgkArAICAhlZb3VyIGFscmVhZHkgc3Rha2VkIG1heCAoCQCkAwEFGE1BWF9MQU5EU19TVEFLRURfQllfVVNFUgIHKSBsYW5kcwQKaW5mcmFMZXZlbAkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEWa2V5SW5mcmFMZXZlbEJ5QXNzZXRJZAEFC2xhbmRBc3NldElkAAAECXBpZWNlc0tleQkBFmtleVN0YWtlZFBpZWNlc0J5T3duZXIBBQdhZGRyZXNzBAlvbGRQaWVjZXMJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJcGllY2VzS2V5AAAECXdsZ1Jlc3VsdAkA/AcEBQt3bGdDb250cmFjdAISb25TdGFrZVVuc3Rha2VMYW5kCQDMCAIFB2FkZHJlc3MFA25pbAUDbmlsCQCUCgIJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUHdGltZUtleQgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJASJrZXlTdGFrZWRUaW1lQnlUeXBlQXNzZXRJZEFuZE93bmVyAwUKTEFORFBSRUZJWAULbGFuZEFzc2V0SWQFB2FkZHJlc3MIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQtTdHJpbmdFbnRyeQIFCGxhbmRzS2V5CQC7CQIJAM0IAgUFbGFuZHMFC2xhbmRBc3NldElkAgFfCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQlwaWVjZXNLZXkJAGQCBQlvbGRQaWVjZXMFBnBpZWNlcwkAzAgCCQELU3RyaW5nRW50cnkCCQEVa2V5TGFuZEFzc2V0SWRUb093bmVyAQULbGFuZEFzc2V0SWQFB2FkZHJlc3MJAMwIAgkBC1N0cmluZ0VudHJ5AgkBEWtleUxhbmROdW1Ub093bmVyAQUHbGFuZE51bQUHYWRkcmVzcwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBHmtleUluZnJhTGV2ZWxCeUFzc2V0SWRBbmRPd25lcgIFC2xhbmRBc3NldElkBQdhZGRyZXNzBQppbmZyYUxldmVsCQDMCAIJAQtTdHJpbmdFbnRyeQIJARFrZXlSZXNQcm9wb3J0aW9ucwAFBXByb3BzCQDMCAIJAQtTdHJpbmdFbnRyeQIFDHJlc0J5Q29udEtleQUQdXBkYXRlZENvbnRQcm9wcwUDbmlsBQ1wcm9sb2dBY3Rpb25zBQl3bGdSZXN1bHQBaQELdW5zdGFrZUxhbmQBDWxhbmRBc3NldElkSW4EDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQEBGFkZHIJAKUIAQgFAWkGY2FsbGVyBAFjCQEUY2hlY2tDbGFpbUNvbmRpdGlvbnMDBQRhZGRyBQ1jbGFpbU1vZGVEdWNrBQ1sYW5kQXNzZXRJZEluBAtsYW5kQXNzZXRJZAgFAWMCXzIEAWQIBQFjAl8zBAhsYW5kc0tleQkBFWtleVN0YWtlZExhbmRzQnlPd25lcgEFBGFkZHIEDXRlcnJhaW5Db3VudHMJAQ1jb3VudFRlcnJhaW5zAQkAkQMCBQFkBQtyZWNUZXJyYWlucwQGcGllY2VzCQEPbnVtUGllY2VzQnlTaXplAQkAkQMCBQFkBQtyZWNMYW5kU2l6ZQQJbGFuZEluZGV4CQBpAgUGcGllY2VzBQVTU0laRQQFcHJvcHMJARF1cGRhdGVQcm9wb3J0aW9ucwMFDXRlcnJhaW5Db3VudHMFCWxhbmRJbmRleAD///////////8BBAxyZXNCeUNvbnRLZXkJARZrZXlSZXNUeXBlc0J5Q29udGluZW50AQkAkQMCBQFkBQxyZWNDb250aW5lbnQECWNvbnRQcm9wcwkAtQkCCQELdmFsdWVPckVsc2UCCQCiCAEFDHJlc0J5Q29udEtleQILMF8wXzBfMF8wXzACAV8EEHVwZGF0ZWRDb250UHJvcHMJALkJAgkBGXVwZGF0ZVByb3BvcnRpb25zSW50ZXJuYWwEBQljb250UHJvcHMFDXRlcnJhaW5Db3VudHMFCWxhbmRJbmRleAD///////////8BAgFfBAtjbGFpbVJlc3VsdAkBCGNsYWltQWxsBAUEYWRkcgULbGFuZEFzc2V0SWQFBnBpZWNlcwUNY2xhaW1Nb2RlRHVjawQFbGFuZHMJAL0JAgkBC3ZhbHVlT3JFbHNlAgkAoggBBQhsYW5kc0tleQIAAgFfBANpZHgJAM8IAgUFbGFuZHMFC2xhbmRBc3NldElkAwkBASEBCQEJaXNEZWZpbmVkAQUDaWR4CQACAQkArAICAiBZb3VyIHN0YWtlZCBsYW5kcyBkb24ndCBjb250YWluIAULbGFuZEFzc2V0SWQEA25vdwgFCWxhc3RCbG9jawl0aW1lc3RhbXAEDmdvdlJlbGVhc2VUaW1lCQELdmFsdWVPckVsc2UCCQCaCAIFC2dvdkNvbnRyYWN0CQEVa2V5VXNlckd3bFJlbGVhc2VUaW1lAQUEYWRkcgAAAwkAZwIFDmdvdlJlbGVhc2VUaW1lBQNub3cJAAIBCQCsAgICOVlvdXIgZ1dMIGFyZSB0YWtpbmcgcGFydCBpbiB2b3RpbmcsIGNhbm5vdCB1bnN0YWtlIHVudGlsIAkApAMBBQ5nb3ZSZWxlYXNlVGltZQQOYXJiUmVsZWFzZVRpbWUJAGQCCQELdmFsdWVPckVsc2UCCQCaCAIFC3dsZ0NvbnRyYWN0CQEUa2V5TGFzdEFyYlRpbWVCeVVzZXIBBQRhZGRyAAAFDmFyYml0cmFnZURlbGF5AwkAZgIFDmFyYlJlbGVhc2VUaW1lBQNub3cJAAIBCQCsAgICP1lvdXIgc3Rha2VkIGxhbmRzIHRvb2sgcGFydCBpbiBhcmJpdHJhZ2UsIGNhbm5vdCB1bnN0YWtlIHVudGlsIAkApAMBBQ5hcmJSZWxlYXNlVGltZQQJcGllY2VzS2V5CQEWa2V5U3Rha2VkUGllY2VzQnlPd25lcgEFBGFkZHIEDHN0YWtlZFBpZWNlcwkBC3ZhbHVlT3JFbHNlAgkAnwgBBQlwaWVjZXNLZXkAAAQJbmV3UGllY2VzAwkAZgIFBnBpZWNlcwUMc3Rha2VkUGllY2VzAAAJAGUCBQxzdGFrZWRQaWVjZXMFBnBpZWNlcwQJd2xnUmVzdWx0CQD8BwQFC3dsZ0NvbnRyYWN0AhJvblN0YWtlVW5zdGFrZUxhbmQJAMwIAgUEYWRkcgUDbmlsBQNuaWwJAJQKAgkAzggCCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgABCQDZBAEFC2xhbmRBc3NldElkCQDMCAIJAQtEZWxldGVFbnRyeQEJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQULbGFuZEFzc2V0SWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBImtleVN0YWtlZFRpbWVCeVR5cGVBc3NldElkQW5kT3duZXIDBQpMQU5EUFJFRklYBQtsYW5kQXNzZXRJZAUEYWRkcgkAzAgCCQELU3RyaW5nRW50cnkCCQERa2V5UmVzUHJvcG9ydGlvbnMABQVwcm9wcwkAzAgCCQELU3RyaW5nRW50cnkCBQxyZXNCeUNvbnRLZXkFEHVwZGF0ZWRDb250UHJvcHMJAMwIAgkBC1N0cmluZ0VudHJ5AggFC2NsYWltUmVzdWx0Al8yCQC5CQIIBQtjbGFpbVJlc3VsdAJfMwIBOgkAzAgCAwkAZgIJAJADAQUFbGFuZHMAAQkBC1N0cmluZ0VudHJ5AgUIbGFuZHNLZXkJALsJAgkA0QgCBQVsYW5kcwkBBXZhbHVlAQUDaWR4AgFfCQELRGVsZXRlRW50cnkBBQhsYW5kc0tleQkAzAgCCQEMSW50ZWdlckVudHJ5AgUJcGllY2VzS2V5BQluZXdQaWVjZXMFA25pbAUNcHJvbG9nQWN0aW9ucwUJd2xnUmVzdWx0AWkBCXN0YWtlRHVjawAEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQIcRXhhY3RseSBvbmUgcGF5bWVudCByZXF1aXJlZAQDcG10CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAEB2Fzc2V0SWQJAQV2YWx1ZQEIBQNwbXQHYXNzZXRJZAQHYWRkcmVzcwkApQgBCAUBaQZjYWxsZXIDCQECIT0CCAUDcG10BmFtb3VudAABCQACAQkArAICCQCsAgICBE5GVCAFCkRVQ0tQUkVGSVgCJCB0b2tlbiBzaG91bGQgYmUgYXR0YWNoZWQgYXMgcGF5bWVudAQFYXNzZXQJAQV2YWx1ZQEJAOwHAQUHYXNzZXRJZAMDCQECIT0CCAUFYXNzZXQGaXNzdWVyBQ1pbmN1YmF0b3JBZGRyCQECIT0CCAUFYXNzZXQGaXNzdWVyBQticmVlZGVyQWRkcgcJAAIBCQCsAgIJAKwCAgISVW5rbm93biBpc3N1ZXIgb2YgBQpEVUNLUFJFRklYAgYgdG9rZW4DCQEBIQEJAQhjb250YWlucwIIBQVhc3NldARuYW1lBQpEVUNLUFJFRklYCQACAQkArAICCQCsAgICCU9ubHkgTkZUIAUKRFVDS1BSRUZJWAIUIHRva2VucyBhcmUgYWNjZXB0ZWQECmFzc2V0SWRTdHIJANgEAQUHYXNzZXRJZAQHdGltZUtleQkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQphc3NldElkU3RyAwkBCWlzRGVmaW5lZAEJAJ8IAQUHdGltZUtleQkAAgEJAKwCAgkArAICAgRORlQgCAUFYXNzZXQEbmFtZQISIGlzIGFscmVhZHkgc3Rha2VkAwkBCWlzRGVmaW5lZAEJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUHYWRkcmVzcwkAAgEJAKwCAgIdWW91IGFscmVhZHkgc3Rha2VkIG9uZSBkdWNrOiAIBQVhc3NldARuYW1lBAZsb2NLZXkJAQ9rZXlEdWNrTG9jYXRpb24BBQphc3NldElkU3RyBAhsb2NhdGlvbgkAoggBBQZsb2NLZXkEBWJwS2V5CQERa2V5QmFja3BhY2tCeUR1Y2sBBQphc3NldElkU3RyBAhiYWNrcGFjawkAoggBBQVicEtleQQJa2V5SGVhbHRoCQENa2V5RHVja0hlYWx0aAEFCmFzc2V0SWRTdHIEBW1heEhQCQEJbWF4SGVhbHRoAQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEMa2V5RHVja0xldmVsAQUKYXNzZXRJZFN0cgAABAljdXJIZWFsdGgJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJa2V5SGVhbHRoBQVtYXhIUAkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQd0aW1lS2V5CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBImtleVN0YWtlZFRpbWVCeVR5cGVBc3NldElkQW5kT3duZXIDBQpEVUNLUFJFRklYCQDYBAEFB2Fzc2V0SWQFB2FkZHJlc3MIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQtTdHJpbmdFbnRyeQIJARBrZXlEdWNrSWRUb093bmVyAQUKYXNzZXRJZFN0cgUHYWRkcmVzcwkAzAgCCQELU3RyaW5nRW50cnkCCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQdhZGRyZXNzBQphc3NldElkU3RyBQNuaWwDCQEJaXNEZWZpbmVkAQUIbG9jYXRpb24FA25pbAkAzggCCQDMCAIJAQtTdHJpbmdFbnRyeQIFBmxvY0tleQUPREVGQVVMVExPQ0FUSU9OBQNuaWwDCQEJaXNEZWZpbmVkAQUIYmFja3BhY2sFA25pbAkAzggCCQDNCAIJAMwIAgkBC1N0cmluZ0VudHJ5AgUFYnBLZXkCGjA6MF8wXzBfMF8wXzA6MF8wXzBfMF8wXzA6BQNuaWwJAQxJbnRlZ2VyRW50cnkCBQlrZXlIZWFsdGgFCWN1ckhlYWx0aAUNcHJvbG9nQWN0aW9ucwFpAQt1bnN0YWtlRHVjawEKYXNzZXRJZFN0cgQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQHYXNzZXRJZAkA2QQBBQphc3NldElkU3RyBAdhZGRyZXNzCQClCAEIBQFpBmNhbGxlcgQFYXNzZXQJAQV2YWx1ZQEJAOwHAQUHYXNzZXRJZAQHdGltZUtleQkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQphc3NldElkU3RyAwkBASEBCQEJaXNEZWZpbmVkAQkAnwgBBQd0aW1lS2V5CQACAQkArAICCQCsAgICBE5GVCAIBQVhc3NldARuYW1lAg4gaXMgbm90IHN0YWtlZAMJAQEhAQkBCWlzRGVmaW5lZAEJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUHYWRkcmVzcwkAAgEJAKwCAgkArAICAglUaGUgZHVjayAIBQVhc3NldARuYW1lAg4gaXMgbm90IHN0YWtlZAQFb3duZXIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEQa2V5RHVja0lkVG9Pd25lcgEFCmFzc2V0SWRTdHIJAKwCAgkArAICAgRORlQgCAUFYXNzZXQEbmFtZQIMIGlzIG9ycGhhbmVkAwkBAiE9AgUFb3duZXIFB2FkZHJlc3MJAAIBAhdTdGFrZWQgTkZUIGlzIG5vdCB5b3VycwMJAQ9jaGVja1RvdXJuYW1lbnQBBQphc3NldElkU3RyCQACAQIbdW5zdGFrZUR1Y2tfY2hlY2tUb3VybmFtZW50AwkBDWNoZWNrRGVsaXZlcnkBBQphc3NldElkU3RyCQACAQIZdW5zdGFrZUR1Y2tfY2hlY2tEZWxpdmVyeQQJa2V5SGVhbHRoCQENa2V5RHVja0hlYWx0aAEFCmFzc2V0SWRTdHIEBW1heEhQCQEJbWF4SGVhbHRoAQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEMa2V5RHVja0xldmVsAQUKYXNzZXRJZFN0cgAABAZoZWFsdGgJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJa2V5SGVhbHRoBQVtYXhIUAMJAGYCBQVtYXhIUAUGaGVhbHRoCQACAQkArAICCQCsAgICGVBsZWFzZSBoZWFsIHlvdXIgZHVjayB0byAJAKQDAQUFbWF4SFACE2hwIGJlZm9yZSB1bnN0YWtpbmcJAM4IAgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIAAQUHYXNzZXRJZAkAzAgCCQELRGVsZXRlRW50cnkBBQd0aW1lS2V5CQDMCAIJAQtEZWxldGVFbnRyeQEFCWtleUhlYWx0aAkAzAgCCQELRGVsZXRlRW50cnkBCQEPa2V5RHVja0xvY2F0aW9uAQUKYXNzZXRJZFN0cgkAzAgCCQELRGVsZXRlRW50cnkBCQEQa2V5RHVja0lkVG9Pd25lcgEFCmFzc2V0SWRTdHIJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBImtleVN0YWtlZFRpbWVCeVR5cGVBc3NldElkQW5kT3duZXIDBQpEVUNLUFJFRklYBQphc3NldElkU3RyBQdhZGRyZXNzCQDMCAIJAQtEZWxldGVFbnRyeQEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFB2FkZHJlc3MFA25pbAUNcHJvbG9nQWN0aW9ucwFpAQhjbGFpbVJlcwIGYW1vdW50DmxhbmRBc3NldElkU3RyBA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBARhZGRyCQClCAEIBQFpDG9yaWdpbkNhbGxlcgQGcmVzdWx0CQEQY2xhaW1SZXNJbnRlcm5hbAQFBGFkZHIFBmFtb3VudAUNY2xhaW1Nb2RlRHVjawUObGFuZEFzc2V0SWRTdHIEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUEYWRkcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAkAlAoCCQDOCAIJAM0IAgkAzQgCCQDOCAIIBQZyZXN1bHQCXzEICQEXdXBkYXRlRHVja1N0YXRzSW50ZXJuYWwCBQtkdWNrQXNzZXRJZAkAawMFB3hwQ2xhaW0FBmFtb3VudAUFTVVMVDgCXzEJAQtTdHJpbmdFbnRyeQIIBQZyZXN1bHQCXzIJALkJAggFBnJlc3VsdAJfMwIBOgkBC1N0cmluZ0VudHJ5AggFBnJlc3VsdAJfNAkAuQkCCAUGcmVzdWx0Al81AgE6BQ1wcm9sb2dBY3Rpb25zCQCRAwIIBQZyZXN1bHQCXzMFCGJwSWR4UmVzAWkBDGNsYWltUmVzVG9XSAIGYW1vdW50DmxhbmRBc3NldElkU3RyBA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBARhZGRyCQClCAEIBQFpDG9yaWdpbkNhbGxlcgQGcmVzdWx0CQEQY2xhaW1SZXNJbnRlcm5hbAQFBGFkZHIFBmFtb3VudAULY2xhaW1Nb2RlV2gFDmxhbmRBc3NldElkU3RyCQCUCgIJAM4IAgkAzQgCCQDNCAIJAM4IAggFBnJlc3VsdAJfMQgJARZ1cGRhdGVBY2NTdGF0c0ludGVybmFsAgUEYWRkcgkAawMFB3hwQ2xhaW0FBmFtb3VudAUFTVVMVDgCXzEJAQtTdHJpbmdFbnRyeQIIBQZyZXN1bHQCXzIJALkJAggFBnJlc3VsdAJfMwIBOgkBC1N0cmluZ0VudHJ5AggFBnJlc3VsdAJfNAkAuQkCCAUGcmVzdWx0Al81AgE6BQ1wcm9sb2dBY3Rpb25zCQCRAwIIBQZyZXN1bHQCXzUFCHdoSWR4UmVzAWkBBmZsaWdodAIHbWVzc2FnZQNzaWcEDXByb2xvZ0FjdGlvbnMJAQxwcm9sb2dGbGlnaHQBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQECHVzZXJBZGRyCQClCAEIBQFpBmNhbGxlcgQBZgkBDGZsaWdodENvbW1vbgMFCHVzZXJBZGRyBQdtZXNzYWdlBQNzaWcEBW5ld0hQCAUBZgJfMQQLZHVja0Fzc2V0SWQIBQFmAl8yBAZsb2NLZXkJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAQLY3VyTG9jYXRpb24JAQt2YWx1ZU9yRWxzZQIJAKIIAQUGbG9jS2V5BQ9ERUZBVUxUTE9DQVRJT04EC25ld0xvY2F0aW9uCAUBZgJfNAMJAAACBQtuZXdMb2NhdGlvbgULY3VyTG9jYXRpb24JAAIBAiJZb3UgY2FuJ3QgZmx5IHRvIHRoZSBzYW1lIGxvY2F0aW9uBAZuZXdMb2MJALUJAgULbmV3TG9jYXRpb24CAV8EBmlzVG91cgkAAAIJAJEDAgUGbmV3TG9jBQpsb2NJZHhUeXBlAgFUBAdpc0RlbGl2CQAAAgkAkQMCBQZuZXdMb2MFCmxvY0lkeFR5cGUCAUQEBWVxS2V5CQEQa2V5RHVja0VxdWlwbWVudAEFC2R1Y2tBc3NldElkBAljdXJyZW50RXEJAQt2YWx1ZU9yRWxzZQIJAKIIAQUFZXFLZXkCFyw7LF8sOyxfLDssXyw7LF8sOyxfLDssBA0kdDA3MDMxMzcwNDEwCQERc3VidHJhY3RFcXVpcG1lbnQCBQljdXJyZW50RXEIBQFmAl81BAVuZXdFcQgFDSR0MDcwMzEzNzA0MTACXzEED3Nob3VsZFplcm9CdWZmcwgFDSR0MDcwMzEzNzA0MTACXzIEDSR0MDcwNDEzNzM0NzgDCQEBIQEJAQlvbk1pc3Npb24CBRJ0b3VybmFtZW50Q29udHJhY3QFC2N1ckxvY2F0aW9uAwkBASEBCQEPaXNVc3VhbExvY2F0aW9uAQULbmV3TG9jYXRpb24JAQxjaGVhdEF0dGVtcHQDBQtjdXJMb2NhdGlvbgULbmV3TG9jYXRpb24ABQMJAGYCBQVuZXdIUAAACQCUCgIFC25ld0xvY2F0aW9uBQVuZXdIUAkAlAoCBQtjdXJMb2NhdGlvbgAAAwkBDmlzSW5Ub3VybmFtZW50AgUSdG91cm5hbWVudENvbnRyYWN0BQtjdXJMb2NhdGlvbgMJAQEhAQkBDmlzSW5Ub3VybmFtZW50AgUSdG91cm5hbWVudENvbnRyYWN0BQtuZXdMb2NhdGlvbgkAAgECKllvdXIgZHVjayBpcyB0YWtpbmcgcGFydCBpbiB0aGUgdG91cm5hbWVudAQFc2NvcmUJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQZuZXdMb2MFCGxvY0lkeElkBAZjdXJMb2MJALUJAgULY3VyTG9jYXRpb24CAV8EBmxhc3RJZAkBC3ZhbHVlT3JFbHNlAgkAmggCBRJ0b3VybmFtZW50Q29udHJhY3QFDWxhc3RUb3VySWRLZXkAAAMJAQIhPQIFBXNjb3JlCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBmN1ckxvYwUIbG9jSWR4SWQAAQkBDGNoZWF0QXR0ZW1wdAMFC2N1ckxvY2F0aW9uBQtuZXdMb2NhdGlvbgAHAwkAZgIFBW5ld0hQAAAECWxvY2FsQmVzdAkBC3ZhbHVlT3JFbHNlAgkAmggCBRJ0b3VybmFtZW50Q29udHJhY3QJARprZXlCZXN0UmVzdWx0QnlUb3VyQW5kRHVjawIFBmxhc3RJZAULZHVja0Fzc2V0SWQAAAQIdXBkTG9jYWwDCQBmAgUFc2NvcmUFCWxvY2FsQmVzdAkA/AcEBRJ0b3VybmFtZW50Q29udHJhY3QCDnNhdmVEdWNrUmVzdWx0CQDMCAIFC2R1Y2tBc3NldElkCQDMCAIFBXNjb3JlBQNuaWwFA25pbAUEdW5pdAMJAAACBQh1cGRMb2NhbAUIdXBkTG9jYWwJAJQKAgULbmV3TG9jYXRpb24FBW5ld0hQCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQCUCgIFC2N1ckxvY2F0aW9uAAADCQEBIQEJAQxpc0luRGVsaXZlcnkBBQtjdXJMb2NhdGlvbgQJbG9jSGVhbHRoCQEQYXNTdHJpbmdJbnRUdXBsZQEJAPwHBAUEdGhpcwIQYXV0b0V4aXREZWxpdmVyeQkAzAgCBQtkdWNrQXNzZXRJZAkAzAgCBQVuZXdIUAUDbmlsBQNuaWwDCQAAAgUJbG9jSGVhbHRoBQlsb2NIZWFsdGgDBQdpc0RlbGl2BQlsb2NIZWFsdGgDCQBmAgUFbmV3SFAAAAkAlAoCBQtuZXdMb2NhdGlvbgUFbmV3SFAJAJQKAggFCWxvY0hlYWx0aAJfMQAACQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAwkBASEBBQdpc0RlbGl2CQACAQIkWW91ciBkdWNrIGlzIHRha2luZyBwYXJ0IGluIGRlbGl2ZXJ5AwkBASEBCQEMaXNJbkRlbGl2ZXJ5AQULbmV3TG9jYXRpb24JAQxjaGVhdEF0dGVtcHQDBQtjdXJMb2NhdGlvbgULbmV3TG9jYXRpb24ADQQFc2NvcmUJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQZuZXdMb2MFCGxvY0lkeElkBAZjdXJMb2MJALUJAgULY3VyTG9jYXRpb24CAV8DCQECIT0CBQVzY29yZQkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQZjdXJMb2MFCGxvY0lkeElkAAEJAQxjaGVhdEF0dGVtcHQDBQtjdXJMb2NhdGlvbgULbmV3TG9jYXRpb24ADgMDCQBmAgUFbmV3SFAAAAkAZgIAAwUFc2NvcmUHCQCUCgIFC25ld0xvY2F0aW9uBQVuZXdIUAQJbG9jSGVhbHRoCQEQYXNTdHJpbmdJbnRUdXBsZQEJAPwHBAUEdGhpcwIQYXV0b0V4aXREZWxpdmVyeQkAzAgCBQtkdWNrQXNzZXRJZAkAzAgCBQVuZXdIUAUDbmlsBQNuaWwDCQAAAgUJbG9jSGVhbHRoBQlsb2NIZWFsdGgFCWxvY0hlYWx0aAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgQJbG9jVG9TYXZlCAUNJHQwNzA0MTM3MzQ3OAJfMQQIaHBUb1NhdmUIBQ0kdDA3MDQxMzczNDc4Al8yCQCUCgIJAM4IAgkAzggCCQDOCAIJAMwIAgkBC1N0cmluZ0VudHJ5AgUGbG9jS2V5BQlsb2NUb1NhdmUJAMwIAgkBC1N0cmluZ0VudHJ5AgUFZXFLZXkFBW5ld0VxCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQENa2V5RHVja0hlYWx0aAEFC2R1Y2tBc3NldElkBQVuZXdIUAUDbmlsBQ1wcm9sb2dBY3Rpb25zAwUPc2hvdWxkWmVyb0J1ZmZzCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQxrZXlEdWNrQnVmZnMBBQtkdWNrQXNzZXRJZAIJMF8wXzBfMF8wBQNuaWwFA25pbAgJARd1cGRhdGVEdWNrU3RhdHNJbnRlcm5hbAIFC2R1Y2tBc3NldElkAwkAZgIFBW5ld0hQAAAFD3hwU3VjY2Vzc0ZsaWdodAUMeHBGYWlsRmxpZ2h0Al8xCAUBZgJfMwFpAQRoZWFsAwpxdWFudGl0eUwxCnF1YW50aXR5TDIKcXVhbnRpdHlMMwQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDAwMJAGYCAAAFCnF1YW50aXR5TDEGCQBmAgAABQpxdWFudGl0eUwyBgkAZgIAAAUKcXVhbnRpdHlMMwkAAgECG1F1YW50aXR5IGNhbm5vdCBiZSBuZWdhdGl2ZQQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBCQClCAEIBQFpBmNhbGxlcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAMJAQ9jaGVja1RvdXJuYW1lbnQBBQtkdWNrQXNzZXRJZAkAAgECFGhlYWxfY2hlY2tUb3VybmFtZW50AwkBDWNoZWNrRGVsaXZlcnkBBQtkdWNrQXNzZXRJZAkAAgECEmhlYWxfY2hlY2tEZWxpdmVyeQQDcXRzCQDMCAIFCnF1YW50aXR5TDEJAMwIAgUKcXVhbnRpdHlMMgkAzAgCBQpxdWFudGl0eUwzBQNuaWwECWtleUhlYWx0aAkBDWtleUR1Y2tIZWFsdGgBBQtkdWNrQXNzZXRJZAQFbWF4SFAJAQltYXhIZWFsdGgBCQELdmFsdWVPckVsc2UCCQCfCAEJAQxrZXlEdWNrTGV2ZWwBBQtkdWNrQXNzZXRJZAAABAlvbGRIZWFsdGgJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJa2V5SGVhbHRoBQVtYXhIUAMJAGcCBQlvbGRIZWFsdGgFBW1heEhQCQACAQkArAICCQCsAgICD0hQIHNob3VsZCBiZSA8IAkApAMBBQVtYXhIUAIIIHRvIGhlYWwEBWJwS2V5CQERa2V5QmFja3BhY2tCeUR1Y2sBBQtkdWNrQXNzZXRJZAQLY3VycmVudFBhY2sJAQtnZXRCYWNrcGFjawEFBWJwS2V5BAhwcm9kTGlzdAMJAAACCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QCAAUDbmlsCQC8CQIJAJEDAgULY3VycmVudFBhY2sFCWJwSWR4UHJvZAIBXwoBC2l0ZXJhdGVQcm9kAgNhY2MGcmVjaXBlBAFuCAUDYWNjAl8yBAF4AwkAZgIJAJADAQUIcHJvZExpc3QFAW4JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQhwcm9kTGlzdAUBbgAAAwkAZgIAAwUBbgQBcQkAkQMCBQNxdHMFAW4DCQBmAgUBcQUBeAkAAgEJAKwCAgkArAICCQCsAgICDllvdSBoYXZlIG9ubHkgCQCkAwEFAXgCBCBvZiAJAJEDAgUJcHJvZFR5cGVzBQFuCQCVCgMJAM0IAggFA2FjYwJfMQkApAMBCQBlAgUBeAUBcQkAZAIFAW4AAQkAZAIIBQNhY2MCXzMJAGgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgkAtQkCBQZyZWNpcGUCAV8FCnJJZHhFZmZlY3QFAXEJAJUKAwkAzQgCCAUDYWNjAl8xCQCkAwEFAXgJAGQCBQFuAAEIBQNhY2MCXzMEBnJlc3VsdAoAAiRsBRBwcm9kdWN0aW9uTWF0cml4CgACJHMJAJADAQUCJGwKAAUkYWNjMAkAlQoDBQNuaWwAAAAACgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQtpdGVyYXRlUHJvZAIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgNTAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyBAluZXdIZWFsdGgJAJcDAQkAzAgCBQVtYXhIUAkAzAgCCQBkAgUJb2xkSGVhbHRoCAUGcmVzdWx0Al8zBQNuaWwJAJQKAgkAzggCCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIFCWtleUhlYWx0aAUJbmV3SGVhbHRoCQDMCAIJAQtTdHJpbmdFbnRyeQIFBWJwS2V5CQC6CQIJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUKYnBJZHhMZXZlbAkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeFJlcwkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeE1hdAkAzAgCCQC5CQIIBQZyZXN1bHQCXzECAV8FA25pbAIBOgUDbmlsBQ1wcm9sb2dBY3Rpb25zCAkBF3VwZGF0ZUR1Y2tTdGF0c0ludGVybmFsAgULZHVja0Fzc2V0SWQJAGgCBQZ4cEhlYWwJAGQCCQBkAgUKcXVhbnRpdHlMMQUKcXVhbnRpdHlMMgUKcXVhbnRpdHlMMwJfMQUJbmV3SGVhbHRoAWkBBmhlYWxFUwAEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQIcRXhhY3RseSBvbmUgcGF5bWVudCByZXF1aXJlZAQDcG10CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAADCQECIT0CCAUDcG10B2Fzc2V0SWQFC3VzZHRBc3NldElkCQACAQIaQWxsb3dlZCBVU0RUIHBheW1lbnQgb25seSEEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQkApQgBCAUBaQZjYWxsZXICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQDCQEPY2hlY2tUb3VybmFtZW50AQULZHVja0Fzc2V0SWQJAAIBAhZoZWFsRVNfY2hlY2tUb3VybmFtZW50AwkBDWNoZWNrRGVsaXZlcnkBBQtkdWNrQXNzZXRJZAkAAgECFGhlYWxFU19jaGVja0RlbGl2ZXJ5BAlrZXlIZWFsdGgJAQ1rZXlEdWNrSGVhbHRoAQULZHVja0Fzc2V0SWQEBW1heEhQCQEJbWF4SGVhbHRoAQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEMa2V5RHVja0xldmVsAQULZHVja0Fzc2V0SWQAAAQJb2xkSGVhbHRoCQELdmFsdWVPckVsc2UCCQCfCAEFCWtleUhlYWx0aAUFbWF4SFADCQBmAgUJb2xkSGVhbHRoAAAJAAIBAihIUCBzaG91bGQgYmUgMCB0byBjYWxsIEVtZXJnZW5jeSBTZXJ2aWNlBAVicEtleQkBEWtleUJhY2twYWNrQnlEdWNrAQULZHVja0Fzc2V0SWQEC2N1cnJlbnRQYWNrCQELZ2V0QmFja3BhY2sBBQVicEtleQQIcHJvZExpc3QDCQAAAgkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kAgAFA25pbAkAvAkCCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QCAV8EDW1lZEtpdEFtb3VudDEDCQBmAgkAkAMBBQhwcm9kTGlzdAAACQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUIcHJvZExpc3QAAAAABA1tZWRLaXRBbW91bnQyAwkAZgIJAJADAQUIcHJvZExpc3QAAQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCHByb2RMaXN0AAEAAAQNbWVkS2l0QW1vdW50MwMJAGYCCQCQAwEFCHByb2RMaXN0AAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQhwcm9kTGlzdAACAAADAwMJAGYCBQ1tZWRLaXRBbW91bnQxAAAGCQBmAgUNbWVkS2l0QW1vdW50MgAABgkAZgIFDW1lZEtpdEFtb3VudDMAAAkAAgECH1lvdSBoYXZlIHRvIHVzZSBvd24gTWVkaWNhbCBLaXQECGV4aXN0U3RyCQCdCAIFD2Vjb25vbXlDb250cmFjdAkBDmtleUVzV2FyZWhvdXNlAAQMZXhpc3RBbW91bnRzAwkBCWlzRGVmaW5lZAEFCGV4aXN0U3RyCQC8CQIJAQV2YWx1ZQEFCGV4aXN0U3RyAgFfBQNuaWwEC2V4aXN0QW1vdW50AwkAZgIJAJADAQUMZXhpc3RBbW91bnRzAAAJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQxleGlzdEFtb3VudHMAAAAAAwkAZwIAAAULZXhpc3RBbW91bnQJAAIBAjlUaGVyZSBhcmUgbm8gTWVkaWNhbCBLaXRzIEwxIGF0IEVtZXJnZW5jeSBTZXJ2aWNlIHN0b3JhZ2UECW5ld0hlYWx0aAkAZAIFCW9sZEhlYWx0aAkBDXBhcnNlSW50VmFsdWUBCQCRAwIJALUJAgkAkQMCBRBwcm9kdWN0aW9uTWF0cml4AAACAV8FCnJJZHhFZmZlY3QEBW5ld0VTCQC5CQIJAMwIAgkApAMBCQBlAgULZXhpc3RBbW91bnQAAQkA0QgCBQxleGlzdEFtb3VudHMAAAIBXwQGcmVjaXBlCQC1CQIJAJEDAgUQcHJvZHVjdGlvbk1hdHJpeAAAAgFfBAh0b3RhbE1hdAkBEmdldFJlY2lwZU1hdGVyaWFscwEFBnJlY2lwZQQJc2VsbFByaWNlCQBrAwkAaAIFCHRvdGFsTWF0BQpFU1NFTExDT0VGBRBSRVNPVVJDRVBSSUNFTUlOCQBoAgUFTVVMVDgFDlBST0RVQ1RQS0dTSVpFAwkBAiE9AggFA3BtdAZhbW91bnQFCXNlbGxQcmljZQkAAgEJAKwCAgIbUGF5bWVudCBhdHRhY2hlZCBzaG91bGQgYmUgCQCkAwEFCXNlbGxQcmljZQQGcmVzdWx0CQEIYXNTdHJpbmcBCQD8BwQFD2Vjb25vbXlDb250cmFjdAIPdXBkYXRlRXNTdG9yYWdlCQDMCAIFBW5ld0VTBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFC3VzZHRBc3NldElkBQlzZWxsUHJpY2UFA25pbAkAlAoCCQDOCAIJAM0IAgUNcHJvbG9nQWN0aW9ucwkBDEludGVnZXJFbnRyeQIFCWtleUhlYWx0aAUJbmV3SGVhbHRoCAkBF3VwZGF0ZUR1Y2tTdGF0c0ludGVybmFsAgULZHVja0Fzc2V0SWQFCHhwQ2FsbEVTAl8xBQZyZXN1bHQBaQEOdXBkYXRlQmFja3BhY2sCC2R1Y2tBc3NldElkB25ld1BhY2sDCQECIT0CCAUBaQZjYWxsZXIFD2Vjb25vbXlDb250cmFjdAkAAgECEXBlcm1pc3Npb24gZGVuaWVkCQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBEWtleUJhY2twYWNrQnlEdWNrAQULZHVja0Fzc2V0SWQFB25ld1BhY2sFA25pbAUHbmV3UGFjawFpAQ9jb21taXRGb3JSYW5kb20ABA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQQLZmluaXNoQmxvY2sJAGQCBQZoZWlnaHQFC3JhbmRvbURlbGF5BARhZGRyCQClCAEIBQFpBmNhbGxlcgkAlAoCCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIJAQlrZXlDb21taXQBBQRhZGRyBQtmaW5pc2hCbG9jawUDbmlsBQ1wcm9sb2dBY3Rpb25zBQtmaW5pc2hCbG9jawFpAQhidXlTTGFuZAAEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQIcRXhhY3RseSBvbmUgcGF5bWVudCByZXF1aXJlZAQDcG10CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAADCQECIT0CCAUDcG10B2Fzc2V0SWQFC3VzZHRBc3NldElkCQACAQIaQWxsb3dlZCBVU0RUIHBheW1lbnQgb25seSEDCQECIT0CCAUDcG10BmFtb3VudAUHRVhQVVNEVAkAAgEJAKwCAgIbUGF5bWVudCBhdHRhY2hlZCBzaG91bGQgYmUgCQCkAwEFB0VYUFVTRFQEBnJlc3VsdAkBEmV4cGVkaXRpb25JbnRlcm5hbAIIBQFpBmNhbGxlcggFAWkNdHJhbnNhY3Rpb25JZAQLYWNyZXNSZXN1bHQJAQVhc0ludAEJAPwHBAUNYWNyZXNDb250cmFjdAIJYnVybkFjcmVzCQDMCAIFDFNfQ09TVF9BQ1JFUwUDbmlsBQNuaWwJAJQKAgkAzggCCQDOCAIJAM0IAggFBnJlc3VsdAJfMQkBDlNjcmlwdFRyYW5zZmVyAwUPZWNvbm9teUNvbnRyYWN0CAUDcG10BmFtb3VudAULdXNkdEFzc2V0SWQICQEWdXBkYXRlQWNjU3RhdHNJbnRlcm5hbAIJAKUIAQgFAWkGY2FsbGVyBQp4cE5ld1NMYW5kAl8xBQ1wcm9sb2dBY3Rpb25zCQCUCgIICAUGcmVzdWx0Al8yAl8xBQthY3Jlc1Jlc3VsdAFpAQpleHBlZGl0aW9uAgdtZXNzYWdlA3NpZwQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQIdXNlckFkZHIJAKUIAQgFAWkGY2FsbGVyBAFmCQEMZmxpZ2h0Q29tbW9uAwUIdXNlckFkZHIFB21lc3NhZ2UFA3NpZwQLZHVja0Fzc2V0SWQIBQFmAl8yBAlrZXlIZWFsdGgJAQ1rZXlEdWNrSGVhbHRoAQULZHVja0Fzc2V0SWQEBWJwS2V5CQERa2V5QmFja3BhY2tCeUR1Y2sBBQtkdWNrQXNzZXRJZAQLY3VycmVudFBhY2sJAQtnZXRCYWNrcGFjawEFBWJwS2V5BAVtTGlzdAkAtQkCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeE1hdAIBXwQGbmV3TWF0CQC5CQIJARFzdWJ0cmFjdE1hdGVyaWFscwMGBQVtTGlzdAUMRVhQTUFURVJJQUxTAgFfBAVlcUtleQkBEGtleUR1Y2tFcXVpcG1lbnQBBQtkdWNrQXNzZXRJZAQJY3VycmVudEVxCQELdmFsdWVPckVsc2UCCQCiCAEFBWVxS2V5AhcsOyxfLDssXyw7LF8sOyxfLDssXyw7LAQNJHQwODA5MTU4MTAxMgkBEXN1YnRyYWN0RXF1aXBtZW50AgUJY3VycmVudEVxCAUBZgJfNQQFbmV3RXEIBQ0kdDA4MDkxNTgxMDEyAl8xBA9zaG91bGRaZXJvQnVmZnMIBQ0kdDA4MDkxNTgxMDEyAl8yBAFlCQESZXhwZWRpdGlvbkludGVybmFsAggFAWkGY2FsbGVyCAUBaQ10cmFuc2FjdGlvbklkBAJpZAgIBQFlAl8yAl8xBAZyZXN1bHQDCQBnAgAACAUBZgJfMQkAlQoDCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQlrZXlIZWFsdGgAAAkAzAgCCQELU3RyaW5nRW50cnkCBQVlcUtleQUFbmV3RXEFA25pbAIAAAAJAJUKAwkAzggCCAUBZQJfMQMFD3Nob3VsZFplcm9CdWZmcwkAzAgCCQELU3RyaW5nRW50cnkCCQEMa2V5RHVja0J1ZmZzAQULZHVja0Fzc2V0SWQCCTBfMF8wXzBfMAUDbmlsCQDNCAIJAM0IAgkAzQgCCQDNCAIFA25pbAkBC1N0cmluZ0VudHJ5AgkBD2tleUR1Y2tMb2NhdGlvbgEFC2R1Y2tBc3NldElkCQC5CQIJAMwIAggIBQFlAl8yAl8yCQDMCAICAUwJAMwIAgUCaWQFA25pbAIBXwkBDEludGVnZXJFbnRyeQIFCWtleUhlYWx0aAgFAWYCXzEJAQtTdHJpbmdFbnRyeQIFBWVxS2V5BQVuZXdFcQkBC1N0cmluZ0VudHJ5AgUFYnBLZXkJALkJAgkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQpicElkeExldmVsCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4UmVzCQDMCAIFBm5ld01hdAkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QFA25pbAIBOgUCaWQIBQFmAl8zAwkBD2NoZWNrVG91cm5hbWVudAEFC2R1Y2tBc3NldElkCQACAQIaZXhwZWRpdGlvbl9jaGVja1RvdXJuYW1lbnQDCQENY2hlY2tEZWxpdmVyeQEFC2R1Y2tBc3NldElkCQACAQIYZXhwZWRpdGlvbl9jaGVja0RlbGl2ZXJ5BAthY3Jlc1Jlc3VsdAkBBWFzSW50AQkA/AcEBQ1hY3Jlc0NvbnRyYWN0AglidXJuQWNyZXMJAMwIAgUMU19DT1NUX0FDUkVTBQNuaWwFA25pbAkAlAoCCQDOCAIJAM4IAggFBnJlc3VsdAJfMQgJARd1cGRhdGVEdWNrU3RhdHNJbnRlcm5hbAIFC2R1Y2tBc3NldElkBQp4cE5ld1NMYW5kAl8xBQ1wcm9sb2dBY3Rpb25zCQCVCgMIBQZyZXN1bHQCXzIIBQZyZXN1bHQCXzMFC2FjcmVzUmVzdWx0AWkBEGJ1eVNMYW5kRm9yQWNyZXMABA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECImV4YWN0bHkgMSBwYXltZW50IG11c3QgYmUgYXR0YWNoZWQEA3BtdAkAkQMCCAUBaQhwYXltZW50cwAABANhbXQIBQNwbXQGYW1vdW50AwMJAQEhAQkBCWlzRGVmaW5lZAEIBQNwbXQHYXNzZXRJZAYJAQIhPQIJAQV2YWx1ZQEIBQNwbXQHYXNzZXRJZAUMYWNyZXNBc3NldElkCQACAQIUQUNSRVMgcGF5bWVudHMgb25seSEDCQECIT0CBQNhbXQFDFNfQ09TVF9BQ1JFUwkAAgEJAKwCAgIbUGF5bWVudCBhdHRhY2hlZCBzaG91bGQgYmUgCQCkAwEFDFNfQ09TVF9BQ1JFUwQGcmVzdWx0CQESZXhwZWRpdGlvbkludGVybmFsAggFAWkGY2FsbGVyCAUBaQ10cmFuc2FjdGlvbklkBAthY3Jlc1Jlc3VsdAkBBWFzSW50AQkA/AcEBQ1hY3Jlc0NvbnRyYWN0AglidXJuQWNyZXMJAMwIAgUMU19DT1NUX0FDUkVTBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFDGFjcmVzQXNzZXRJZAUDYW10BQNuaWwJAJQKAgkAzggCCQDOCAIIBQZyZXN1bHQCXzEICQEWdXBkYXRlQWNjU3RhdHNJbnRlcm5hbAIJAKUIAQgFAWkGY2FsbGVyBQp4cE5ld1NMYW5kAl8xBQ1wcm9sb2dBY3Rpb25zCQCUCgIICAUGcmVzdWx0Al8yAl8xBQthY3Jlc1Jlc3VsdAFpAQx1cGdyYWRlSW5mcmEBC2xhbmRBc3NldElkBA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBAZyZXN1bHQJAQ11cEluZnJhQ29tbW9uBAYIBQFpBmNhbGxlcgAABQtsYW5kQXNzZXRJZAQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBCQClCAEIBQFpBmNhbGxlcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAkAlAoCCQDOCAIJAM4IAggFBnJlc3VsdAJfMQUNcHJvbG9nQWN0aW9ucwgJARd1cGRhdGVEdWNrU3RhdHNJbnRlcm5hbAIFC2R1Y2tBc3NldElkCQBrAwUOeHBVcGdyYWRlSW5mcmEIBQZyZXN1bHQCXzMFBU1VTFQ4Al8xCAUGcmVzdWx0Al8yAWkBEGFjdGl2YXRlQXJ0aWZhY3QCB2FydE5hbWUObGFuZEFzc2V0SWRPcHQEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQEBGFkZHIJAKUIAQgFAWkGY2FsbGVyBAZyZXN1bHQEByRtYXRjaDAFB2FydE5hbWUDCQAAAgIHUFJFU0FMRQUHJG1hdGNoMAkBEmFjdGl2YXRlUHJlc2FsZUFydAIFBGFkZHIFDmxhbmRBc3NldElkT3B0AwkAAAICB09OQk9BUkQFByRtYXRjaDAJARJhY3RpdmF0ZU9uYm9hcmRBcnQBBQRhZGRyCQACAQIQVW5rbm93biBhcnRpZmFjdAkAzggCBQZyZXN1bHQFDXByb2xvZ0FjdGlvbnMBaQEKbWVyZ2VMYW5kcwEMbGFuZEFzc2V0SWRzBA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBAZyZXN1bHQJAQttZXJnZUNvbW1vbgIJAKUIAQgFAWkGY2FsbGVyBQxsYW5kQXNzZXRJZHMJAJQKAgkAzggCCQDOCAIIBQZyZXN1bHQCXzEFDXByb2xvZ0FjdGlvbnMICQEWdXBkYXRlQWNjU3RhdHNJbnRlcm5hbAIJAKUIAQgFAWkGY2FsbGVyBQd4cE1lcmdlAl8xCAUGcmVzdWx0Al8yAWkBDWNhcmdvRXhjaGFuZ2UCDGNhcmdvTGlzdFN0cgtsYW5kQXNzZXRJZAQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQKY2FyZ29QYXJ0cwkAvAkCBQxjYXJnb0xpc3RTdHICAToEBGFkZHIJAKUIAQgFAWkMb3JpZ2luQ2FsbGVyBAVhc3NldAkBBXZhbHVlAQkA7AcBCQDZBAEFC2xhbmRBc3NldElkBAd0aW1lS2V5CQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFC2xhbmRBc3NldElkAwkBASEBCQEJaXNEZWZpbmVkAQkAnwgBBQd0aW1lS2V5CQACAQkArAICCAUFYXNzZXQEbmFtZQIOIGlzIG5vdCBzdGFrZWQEBW93bmVyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFWtleUxhbmRBc3NldElkVG9Pd25lcgEFC2xhbmRBc3NldElkCQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCDCBpcyBvcnBoYW5lZAMJAQIhPQIFBW93bmVyBQRhZGRyCQACAQkArAICBQpMQU5EUFJFRklYAg0gaXMgbm90IHlvdXJzBAlsYW5kSW5kZXgJAGkCCQEPbnVtUGllY2VzQnlTaXplAQkAkQMCCQC1CQIIBQVhc3NldAtkZXNjcmlwdGlvbgIBXwULcmVjTGFuZFNpemUFBVNTSVpFBAppbmZyYUxldmVsCQELdmFsdWVPckVsc2UCCQCfCAEJARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQULbGFuZEFzc2V0SWQAAAQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQRhZGRyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkBAtjdXJMb2NhdGlvbgkBC3ZhbHVlT3JFbHNlAgkAoggBCQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQFD0RFRkFVTFRMT0NBVElPTgQDbG9jCQC1CQIJAQV2YWx1ZQEFC2N1ckxvY2F0aW9uAgFfAwkBAiE9AgkAkQMCBQNsb2MFCmxvY0lkeFR5cGUCAUwJAAIBCQCsAgIJAKwCAgIWRHVjayBsb2NhdGlvbiB0eXBlIGlzIAkAkQMCBQNsb2MFCmxvY0lkeFR5cGUCESwgYnV0IHNob3VsZCBiZSBMAwkBAiE9AgkAkQMCBQNsb2MFCGxvY0lkeElkBQtsYW5kQXNzZXRJZAkAAgEJAKwCAgIbRHVjayBzaG91bGQgYmUgb24gdGhlIGxhbmQgBQtsYW5kQXNzZXRJZAQFd2hLZXkJARJrZXlXYXJlaG91c2VCeUxhbmQBBQtsYW5kQXNzZXRJZAQJY3VycmVudFdoCQEMZ2V0V2FyZWhvdXNlAwUFd2hLZXkFCWxhbmRJbmRleAUKaW5mcmFMZXZlbAQFYnBLZXkJARFrZXlCYWNrcGFja0J5RHVjawEFC2R1Y2tBc3NldElkBAtjdXJyZW50UGFjawkBC2dldEJhY2twYWNrAQUFYnBLZXkEBnJlc3VsdAkBCW1vdmVTdHVmZgMFCmNhcmdvUGFydHMFCWN1cnJlbnRXaAULY3VycmVudFBhY2sEBGxvZnQJALUJAgkAkQMCBQljdXJyZW50V2gFCXdoSWR4TE9GVAIBXwQFbG9mdE8JAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEbG9mdAULdm9sT2NjdXBpZWQIBQZyZXN1bHQCXzcEBWxvZnRGCQBlAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFB3ZvbEZyZWUIBQZyZXN1bHQCXzcJAM4IAgkAzAgCCQELU3RyaW5nRW50cnkCBQVicEtleQkAugkCCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCmJwSWR4TGV2ZWwJAMwIAggFBnJlc3VsdAJfNAkAzAgCCAUGcmVzdWx0Al81CQDMCAIIBQZyZXN1bHQCXzYFA25pbAIBOgkAzAgCCQELU3RyaW5nRW50cnkCBQV3aEtleQkAugkCCQDMCAIJAJEDAgUJY3VycmVudFdoBQt3aElkeExldmVscwkAzAgCCAUGcmVzdWx0Al8xCQDMCAIIBQZyZXN1bHQCXzIJAMwIAggFBnJlc3VsdAJfMwkAzAgCCQC5CQIJAMwIAgkAkQMCBQRsb2Z0BQl2b2xMb2NrZWQJAMwIAgkApAMBBQVsb2Z0TwkAzAgCCQCkAwEFBWxvZnRGCQDMCAIJAJEDAgUEbG9mdAUIdm9sVG90YWwFA25pbAIBXwUDbmlsAgE6BQNuaWwFDXByb2xvZ0FjdGlvbnMBaQENc2F2ZVdhcmVob3VzZQIFd2hTdHILbGFuZEFzc2V0SWQDCQECIT0CCAUBaQZjYWxsZXIFD2Vjb25vbXlDb250cmFjdAkAAgECDUFjY2VzcyBkZW5pZWQEBXdoS2V5CQESa2V5V2FyZWhvdXNlQnlMYW5kAQULbGFuZEFzc2V0SWQEAndoCQC8CQIFBXdoU3RyAgE6AwkBAiE9AgkAkAMBBQJ3aAAFCQACAQIwd2FyZWhvdXNlIHN0cmluZyBzaG91bGQgY29udGFpbiA0ICc6JyBzZXBhcmF0b3JzBAVsb2Z0TAkAkQMCCQC1CQIJAJEDAgUCd2gFCXdoSWR4TE9GVAIBXwUJdm9sTG9ja2VkBAVsb2Z0TwkBF2dldFdhcmVob3VzZU9jY3VwaWVkVm9sAQUCd2gEBWxvZnRUCQEXZ2V0V2FyZWhvdXNlVG90YWxWb2x1bWUBCQCRAwIFAndoBQt3aElkeExldmVscwQFbG9mdEYJAGUCCQBlAgUFbG9mdFQJAQ1wYXJzZUludFZhbHVlAQUFbG9mdEwFBWxvZnRPBAhuZXdXaFN0cgkAugkCCQDMCAIJAJEDAgUCd2gFC3doSWR4TGV2ZWxzCQDMCAIJAJEDAgUCd2gFCHdoSWR4UmVzCQDMCAIJAJEDAgUCd2gFCHdoSWR4TWF0CQDMCAIJAJEDAgUCd2gFCXdoSWR4UHJvZAkAzAgCCQC5CQIJAMwIAgUFbG9mdEwJAMwIAgkApAMBBQVsb2Z0TwkAzAgCCQCkAwEFBWxvZnRGCQDMCAIJAKQDAQUFbG9mdFQFA25pbAIBXwUDbmlsAgE6CQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgUFd2hLZXkFCG5ld1doU3RyBQNuaWwFCG5ld1doU3RyAWkBEmZpeFdhcmVob3VzZUZvcm1hdAELbGFuZEFzc2V0SWQDCQECIT0CCAUBaQZjYWxsZXIFDHJlc3RDb250cmFjdAkAAgECDUFjY2VzcyBkZW5pZWQEBXdoS2V5CQESa2V5V2FyZWhvdXNlQnlMYW5kAQULbGFuZEFzc2V0SWQEBWFzc2V0CQEFdmFsdWUBCQDsBwEJANkEAQULbGFuZEFzc2V0SWQECWxhbmRJbmRleAkAaQIJAQ9udW1QaWVjZXNCeVNpemUBCQCRAwIJALUJAggFBWFzc2V0C2Rlc2NyaXB0aW9uAgFfBQtyZWNMYW5kU2l6ZQUFU1NJWkUECmluZnJhTGV2ZWwJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBFmtleUluZnJhTGV2ZWxCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAAABAJ3aAkBDGdldFdhcmVob3VzZQMFBXdoS2V5BQlsYW5kSW5kZXgFCmluZnJhTGV2ZWwEBWxvZnRMCQEFYXNJbnQBCQD8BwQFD2Vjb25vbXlDb250cmFjdAIacmVjYWxjTG9ja2VkVm9sdW1lUkVBRE9OTFkJAMwIAgULbGFuZEFzc2V0SWQJAMwIAgUCd2gFA25pbAUDbmlsBAVsb2Z0TwkBF2dldFdhcmVob3VzZU9jY3VwaWVkVm9sAQUCd2gEBWxvZnRUCQEXZ2V0V2FyZWhvdXNlVG90YWxWb2x1bWUBCQCRAwIFAndoBQt3aElkeExldmVscwQFbG9mdEYJAGUCCQBlAgUFbG9mdFQFBWxvZnRMBQVsb2Z0TwQIbmV3V2hTdHIJALoJAgkAzAgCCQCRAwIFAndoBQt3aElkeExldmVscwkAzAgCCQCRAwIFAndoBQh3aElkeFJlcwkAzAgCCQCRAwIFAndoBQh3aElkeE1hdAkAzAgCCQCRAwIFAndoBQl3aElkeFByb2QJAMwIAgkAuQkCCQDMCAIJAKQDAQUFbG9mdEwJAMwIAgkApAMBBQVsb2Z0TwkAzAgCCQCkAwEFBWxvZnRGCQDMCAIJAKQDAQUFbG9mdFQFA25pbAIBXwUDbmlsAgE6CQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgUFd2hLZXkFCG5ld1doU3RyBQNuaWwFCG5ld1doU3RyAWkBF2ZpeENvbnRpbmVudFByb3BvcnRpb25zAQxsYW5kQXNzZXRJZHMDCQECIT0CCAUBaQZjYWxsZXIFDHJlc3RDb250cmFjdAkAAgECDUFjY2VzcyBkZW5pZWQKAQhnZXRQcm9wcwIDYWNjBGNvbnQJAM0IAgUDYWNjCQELdmFsdWVPckVsc2UCCQCiCAEJARZrZXlSZXNUeXBlc0J5Q29udGluZW50AQUEY29udAILMF8wXzBfMF8wXzAEAXAKAAIkbAUKY29udGluZW50cwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAFA25pbAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEIZ2V0UHJvcHMCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDUJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFCgEJcHJvY2Vzc29yAgNhY2MLbGFuZEFzc2V0SWQEBWFzc2V0CQEFdmFsdWUBCQDsBwEJANkEAQULbGFuZEFzc2V0SWQEAWQJALUJAggFBWFzc2V0C2Rlc2NyaXB0aW9uAgFfBAlsYW5kSW5kZXgJAGkCCQEPbnVtUGllY2VzQnlTaXplAQkAkQMCBQFkBQtyZWNMYW5kU2l6ZQUFU1NJWkUEBGNvbnQJAJEDAgUBZAUMcmVjQ29udGluZW50BA10ZXJyYWluQ291bnRzCQENY291bnRUZXJyYWlucwEJAJEDAgUBZAULcmVjVGVycmFpbnMEDGNvbnRpbmVudElkeAkBBXZhbHVlAQkAzwgCBQpjb250aW5lbnRzBQRjb250BAljb250UHJvcHMJALUJAgkAkQMCBQNhY2MFDGNvbnRpbmVudElkeAIBXwQHdXBkYXRlZAkAuQkCCQEZdXBkYXRlUHJvcG9ydGlvbnNJbnRlcm5hbAQFCWNvbnRQcm9wcwUNdGVycmFpbkNvdW50cwUJbGFuZEluZGV4AAECAV8EByRtYXRjaDAFBGNvbnQDCQAAAgIIQW1lcmljYXMFByRtYXRjaDAJAMwIAgUHdXBkYXRlZAkAzAgCCQCRAwIFA2FjYwABCQDMCAIJAJEDAgUDYWNjAAIJAMwIAgkAkQMCBQNhY2MAAwkAzAgCCQCRAwIFA2FjYwAEBQNuaWwDCQAAAgIGRXVyb3BlBQckbWF0Y2gwCQDMCAIJAJEDAgUDYWNjAAAJAMwIAgUHdXBkYXRlZAkAzAgCCQCRAwIFA2FjYwACCQDMCAIJAJEDAgUDYWNjAAMJAMwIAgkAkQMCBQNhY2MABAUDbmlsAwkAAAICBEFzaWEFByRtYXRjaDAJAMwIAgkAkQMCBQNhY2MAAAkAzAgCCQCRAwIFA2FjYwABCQDMCAIFB3VwZGF0ZWQJAMwIAgkAkQMCBQNhY2MAAwkAzAgCCQCRAwIFA2FjYwAEBQNuaWwDCQAAAgIGQWZyaWNhBQckbWF0Y2gwCQDMCAIJAJEDAgUDYWNjAAAJAMwIAgkAkQMCBQNhY2MAAQkAzAgCCQCRAwIFA2FjYwACCQDMCAIFB3VwZGF0ZWQJAMwIAgkAkQMCBQNhY2MABAUDbmlsAwkAAAICB09jZWFuaWEFByRtYXRjaDAJAMwIAgkAkQMCBQNhY2MAAAkAzAgCCQCRAwIFA2FjYwABCQDMCAIJAJEDAgUDYWNjAAIJAMwIAgkAkQMCBQNhY2MAAwkAzAgCBQd1cGRhdGVkBQNuaWwJAAIBAg93cm9uZyBjb250aW5lbnQEAXIKAAIkbAUMbGFuZEFzc2V0SWRzCgACJHMJAJADAQUCJGwKAAUkYWNjMAUBcAoBBSRmMV8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEJcHJvY2Vzc29yAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYxXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhVMaXN0IHNpemUgZXhjZWVkcyAxMDAJAQUkZjFfMgIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyADMANAA1ADYANwA4ADkAOgA7ADwAPQA+AD8AQABBAEIAQwBEAEUARgBHAEgASQBKAEsATABNAE4ATwBQAFEAUgBTAFQAVQBWAFcAWABZAFoAWwBcAF0AXgBfAGAAYQBiAGMAZAkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQIJARZrZXlSZXNUeXBlc0J5Q29udGluZW50AQIIQW1lcmljYXMJAJEDAgUBcgAACQDMCAIJAQtTdHJpbmdFbnRyeQIJARZrZXlSZXNUeXBlc0J5Q29udGluZW50AQIGRXVyb3BlCQCRAwIFAXIAAQkAzAgCCQELU3RyaW5nRW50cnkCCQEWa2V5UmVzVHlwZXNCeUNvbnRpbmVudAECBEFzaWEJAJEDAgUBcgACCQDMCAIJAQtTdHJpbmdFbnRyeQIJARZrZXlSZXNUeXBlc0J5Q29udGluZW50AQIGQWZyaWNhCQCRAwIFAXIAAwkAzAgCCQELU3RyaW5nRW50cnkCCQEWa2V5UmVzVHlwZXNCeUNvbnRpbmVudAECB09jZWFuaWEJAJEDAgUBcgAEBQNuaWwAAAFpAQ9maXhTdGFrZWRQaWVjZXMBB2FkZHJlc3MDCQECIT0CCAUBaQZjYWxsZXIFDHJlc3RDb250cmFjdAkAAgECDUFjY2VzcyBkZW5pZWQEDHN0YWtlZFBpZWNlcwMJAAACBQdhZGRyZXNzAgAAAAQIbGFuZHNTdHIJAJ0IAgUPc3Rha2luZ0NvbnRyYWN0CQEVa2V5U3Rha2VkTGFuZHNCeU93bmVyAQUHYWRkcmVzcwQFbGFuZHMDCQEJaXNEZWZpbmVkAQUIbGFuZHNTdHIJAL0JAgkBBXZhbHVlAQUIbGFuZHNTdHICAV8FA25pbAoBB29uZUxhbmQCA2FjYwtsYW5kQXNzZXRJZAQFYXNzZXQJAQV2YWx1ZQEJAOwHAQkA2QQBBQtsYW5kQXNzZXRJZAQIbGFuZFNpemUJAJEDAgkAtQkCCAUFYXNzZXQLZGVzY3JpcHRpb24CAV8FC3JlY0xhbmRTaXplCQBkAgUDYWNjCQEPbnVtUGllY2VzQnlTaXplAQUIbGFuZFNpemUKAAIkbAUFbGFuZHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwAAAKAQUkZjBfMQIC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TEVOBARhZGRyCQClCAEIBQFpDG9yaWdpbkNhbGxlcgQHYWN0aW9ucwQHJG1hdGNoMAUEdHlwZQMJAAACAgdBQ0NPVU5UBQckbWF0Y2gwBApyZXZlcnNlS2V5CQEWa2V5Q3VzdG9tTmFtZVRvQWRkcmVzcwEFCmN1c3RvbU5hbWUECW5hbWVPd25lcgkAoggBBQpyZXZlcnNlS2V5AwkBCWlzRGVmaW5lZAEFCW5hbWVPd25lcgkAAgEJAKwCAgIZTmFtZSBhbHJlYWR5IHJlZ2lzdGVyZWQ6IAUKY3VzdG9tTmFtZQQNYWRkclRvTmFtZUtleQkBFmtleUFkZHJlc3NUb0N1c3RvbU5hbWUBBQRhZGRyBAdvbGROYW1lCQCiCAEFDWFkZHJUb05hbWVLZXkEB2ZyZWVPbGQDCQEJaXNEZWZpbmVkAQUHb2xkTmFtZQkAzAgCCQELRGVsZXRlRW50cnkBCQEWa2V5Q3VzdG9tTmFtZVRvQWRkcmVzcwEJAQV2YWx1ZQEFB29sZE5hbWUFA25pbAUDbmlsCQDOCAIJAM0IAgkAzQgCBQdmcmVlT2xkCQELU3RyaW5nRW50cnkCBQ1hZGRyVG9OYW1lS2V5BQpjdXN0b21OYW1lCQELU3RyaW5nRW50cnkCBQpyZXZlcnNlS2V5BQRhZGRyCAkBFnVwZGF0ZUFjY1N0YXRzSW50ZXJuYWwCBQRhZGRyBQx4cEN1c3RvbU5hbWUCXzEDCQAAAgIETEFORAUHJG1hdGNoMAQFYXNzZXQJAQV2YWx1ZQEJAOwHAQkA2QQBBQdhc3NldElkBAd0aW1lS2V5CQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFB2Fzc2V0SWQDCQEBIQEJAQlpc0RlZmluZWQBCQCfCAEFB3RpbWVLZXkJAAIBCQCsAgIIBQVhc3NldARuYW1lAg4gaXMgbm90IHN0YWtlZAQFb3duZXIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEVa2V5TGFuZEFzc2V0SWRUb093bmVyAQUHYXNzZXRJZAkArAICCQCsAgICBE5GVCAIBQVhc3NldARuYW1lAgwgaXMgb3JwaGFuZWQDCQECIT0CBQVvd25lcgUEYWRkcgkAAgEJAKwCAgUKTEFORFBSRUZJWAINIGlzIG5vdCB5b3VycwQKcmV2ZXJzZUtleQkBGmtleUxhbmRDdXN0b21OYW1lVG9Bc3NldElkAQUKY3VzdG9tTmFtZQQJbmFtZU93bmVyCQCiCAEFCnJldmVyc2VLZXkDCQEJaXNEZWZpbmVkAQUJbmFtZU93bmVyCQACAQkArAICAhlOYW1lIGFscmVhZHkgcmVnaXN0ZXJlZDogBQpjdXN0b21OYW1lBA5hc3NldFRvTmFtZUtleQkBGmtleUxhbmRBc3NldElkVG9DdXN0b21OYW1lAQUHYXNzZXRJZAQHb2xkTmFtZQkAoggBBQ5hc3NldFRvTmFtZUtleQQHZnJlZU9sZAMJAQlpc0RlZmluZWQBBQdvbGROYW1lCQDMCAIJAQtEZWxldGVFbnRyeQEJARprZXlMYW5kQ3VzdG9tTmFtZVRvQXNzZXRJZAEJAQV2YWx1ZQEFB29sZE5hbWUFA25pbAUDbmlsCQDOCAIJAM0IAgkAzQgCBQdmcmVlT2xkCQELU3RyaW5nRW50cnkCBQ5hc3NldFRvTmFtZUtleQUKY3VzdG9tTmFtZQkBC1N0cmluZ0VudHJ5AgUKcmV2ZXJzZUtleQUHYXNzZXRJZAgJARZ1cGRhdGVBY2NTdGF0c0ludGVybmFsAgUEYWRkcgUMeHBDdXN0b21OYW1lAl8xAwkAAAICBERVQ0sFByRtYXRjaDAEBWFzc2V0CQEFdmFsdWUBCQDsBwEJANkEAQUHYXNzZXRJZAQHdGltZUtleQkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQdhc3NldElkAwMJAQEhAQkBCWlzRGVmaW5lZAEJAJ8IAQUHdGltZUtleQYJAQEhAQkBCWlzRGVmaW5lZAEJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUEYWRkcgkAAgEJAKwCAggFBWFzc2V0BG5hbWUCDiBpcyBub3Qgc3Rha2VkBAVvd25lcgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARBrZXlEdWNrSWRUb093bmVyAQUHYXNzZXRJZAkArAICCQCsAgICBE5GVCAIBQVhc3NldARuYW1lAgwgaXMgb3JwaGFuZWQDCQECIT0CBQVvd25lcgUEYWRkcgkAAgEJAKwCAgUKRFVDS1BSRUZJWAINIGlzIG5vdCB5b3VycwQKcmV2ZXJzZUtleQkBGmtleUR1Y2tDdXN0b21OYW1lVG9Bc3NldElkAQUKY3VzdG9tTmFtZQQJbmFtZU93bmVyCQCiCAEFCnJldmVyc2VLZXkDCQEJaXNEZWZpbmVkAQUJbmFtZU93bmVyCQACAQkArAICAhlOYW1lIGFscmVhZHkgcmVnaXN0ZXJlZDogBQpjdXN0b21OYW1lBA5hc3NldFRvTmFtZUtleQkBGmtleUR1Y2tBc3NldElkVG9DdXN0b21OYW1lAQUHYXNzZXRJZAQHb2xkTmFtZQkAoggBBQ5hc3NldFRvTmFtZUtleQQHZnJlZU9sZAMJAQlpc0RlZmluZWQBBQdvbGROYW1lCQDMCAIJAQtEZWxldGVFbnRyeQEJARprZXlEdWNrQ3VzdG9tTmFtZVRvQXNzZXRJZAEJAQV2YWx1ZQEFB29sZE5hbWUFA25pbAUDbmlsCQDOCAIJAM0IAgkAzQgCBQdmcmVlT2xkCQELU3RyaW5nRW50cnkCBQ5hc3NldFRvTmFtZUtleQUKY3VzdG9tTmFtZQkBC1N0cmluZ0VudHJ5AgUKcmV2ZXJzZUtleQUHYXNzZXRJZAgJARd1cGRhdGVEdWNrU3RhdHNJbnRlcm5hbAIFB2Fzc2V0SWQFDHhwQ3VzdG9tTmFtZQJfMQkAAgECE1Vua25vd24gZW50aXR5IHR5cGUJAJQKAgkAzggCCQDNCAIFB2FjdGlvbnMJAQ5TY3JpcHRUcmFuc2ZlcgMFD2Vjb25vbXlDb250cmFjdAgFA3BtdAZhbW91bnQFC3VzZHRBc3NldElkBQ1wcm9sb2dBY3Rpb25zAAABaQEMc2V0UmVmZXJyYWxzAglvbGRQbGF5ZXIJbmV3UGxheWVyAwkBAiE9AggFAWkPY2FsbGVyUHVibGljS2V5BQNwdWIJAAIBAhFQZXJtaXNzaW9uIGRlbmllZAQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAMJAQEhAQkBCWlzRGVmaW5lZAEJAKYIAQUJb2xkUGxheWVyCQACAQkArAICAhFJbnZhbGlkIGFkZHJlc3M6IAUJb2xkUGxheWVyAwkBASEBCQEJaXNEZWZpbmVkAQkApggBBQluZXdQbGF5ZXIJAAIBCQCsAgICEUludmFsaWQgYWRkcmVzczogBQluZXdQbGF5ZXIEB29sZHNLZXkJAQlrZXlPbGRpZXMABARvbGRzCQCiCAEFB29sZHNLZXkEBm9sZGllcwMJAQlpc0RlZmluZWQBBQRvbGRzCQC8CQIJAQV2YWx1ZQEFBG9sZHMCAV8FA25pbAMJAQ9jb250YWluc0VsZW1lbnQCBQZvbGRpZXMFCW5ld1BsYXllcgkAAgEJAKwCAgUJbmV3UGxheWVyAiYgaXMgbm90IG5ld2JpZSAoYWxyZWFkeSBoYXMgcmVmZXJyYWxzKQQIcmVmQnlLZXkJAQ9rZXlBZGRyZXNzUmVmQnkBBQluZXdQbGF5ZXIEBXJlZkJ5CQCiCAEFCHJlZkJ5S2V5AwMJAQlpc0RlZmluZWQBBQVyZWZCeQkBCWlzRGVmaW5lZAEJAKYIAQkBBXZhbHVlAQUFcmVmQnkHCQACAQkArAICCQCsAgIFCW5ld1BsYXllcgIUIGFscmVhZHkgaGFzIHJlZkJ5OiAJAQV2YWx1ZQEFBXJlZkJ5BAdyZWZzS2V5CQETa2V5QWRkcmVzc1JlZmVycmFscwEFCW9sZFBsYXllcgQEcmVmcwkAoggBBQdyZWZzS2V5BAlyZWZzQXJyYXkDCQEJaXNEZWZpbmVkAQUEcmVmcwkAvAkCCQEFdmFsdWUBBQRyZWZzAgFfBQNuaWwDCQEPY29udGFpbnNFbGVtZW50AgUJcmVmc0FycmF5BQluZXdQbGF5ZXIJAAIBCQCsAgIJAKwCAgkArAICBQlvbGRQbGF5ZXICEiBhbHJlYWR5IGNvbnRhaW5zIAUJbmV3UGxheWVyAhEgd2l0aGluIHJlZmVycmFscwQHbmV3UmVmcwkAugkCCQDNCAIFCXJlZnNBcnJheQUJbmV3UGxheWVyAgFfBAduZXdPbGRzAwkBD2NvbnRhaW5zRWxlbWVudAIFBm9sZGllcwUJb2xkUGxheWVyCQEFdmFsdWUBBQRvbGRzCQC6CQIJAM0IAgUGb2xkaWVzBQlvbGRQbGF5ZXICAV8JAJQKAgkAzggCCQDMCAIJAQtTdHJpbmdFbnRyeQIFCHJlZkJ5S2V5BQlvbGRQbGF5ZXIJAMwIAgkBC1N0cmluZ0VudHJ5AgUHcmVmc0tleQUHbmV3UmVmcwkAzAgCCQELU3RyaW5nRW50cnkCBQdvbGRzS2V5BQduZXdPbGRzBQNuaWwFDXByb2xvZ0FjdGlvbnMAAAFpARBkaXN0cmlidXRlUG9pbnRzBQhzdHJlbmd0aAhhY2N1cmFjeQlpbnRlbGxlY3QJZW5kdXJhbmNlCWRleHRlcml0eQQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQEYWRkcgkApQgBCAUBaQxvcmlnaW5DYWxsZXIEC3ZpcnRXbGdEYXRhCQEJYXNBbnlMaXN0AQkA/AcEBQt3bGdDb250cmFjdAISY2hlY2tXbGdYcFJFQURPTkxZCQDMCAIFBGFkZHIFA25pbAUDbmlsBA12aXJ0V2xnUG9pbnRzCQEFYXNJbnQBCQCRAwIFC3ZpcnRXbGdEYXRhAAEEDSR0MDk2Mzk3OTY3ODcDCQBnAgAABQ12aXJ0V2xnUG9pbnRzCQCUCgIAAAUDbmlsBAdkZWx0YVhQCQEFYXNJbnQBCQD8BwQFC3dsZ0NvbnRyYWN0Agl0YWtlV2xnWHAJAMwIAgUEYWRkcgUDbmlsBQNuaWwDCQAAAgUHZGVsdGFYUAUHZGVsdGFYUAkAlAoCBQ12aXJ0V2xnUG9pbnRzCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEMa2V5VXNlckxldmVsAQUEYWRkcgkBBWFzSW50AQkAkQMCBQt2aXJ0V2xnRGF0YQAACQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEJa2V5VXNlclhQAQUEYWRkcgkBBWFzSW50AQkAkQMCBQt2aXJ0V2xnRGF0YQACBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4ECXdsZ1BvaW50cwgFDSR0MDk2Mzk3OTY3ODcCXzEECndsZ0FjdGlvbnMIBQ0kdDA5NjM5Nzk2Nzg3Al8yBAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFBGFkZHICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQECmZyZWVLZXlBY2MJARFrZXlVc2VyRnJlZVBvaW50cwEFBGFkZHIEDWZyZWVQb2ludHNBY2MJAGQCCQELdmFsdWVPckVsc2UCCQCfCAEFCmZyZWVLZXlBY2MAAAUJd2xnUG9pbnRzBAtmcmVlS2V5RHVjawkBEWtleUR1Y2tGcmVlUG9pbnRzAQULZHVja0Fzc2V0SWQEDmZyZWVQb2ludHNEdWNrCQELdmFsdWVPckVsc2UCCQCfCAEFC2ZyZWVLZXlEdWNrAAAEB3N1bUZyZWUJAGQCBQ1mcmVlUG9pbnRzQWNjBQ5mcmVlUG9pbnRzRHVjawQPc3VtVG9EaXN0cmlidXRlCQBkAgkAZAIJAGQCCQBkAgUIc3RyZW5ndGgFCGFjY3VyYWN5BQlpbnRlbGxlY3QFCWVuZHVyYW5jZQUJZGV4dGVyaXR5AwkAZgIFD3N1bVRvRGlzdHJpYnV0ZQUHc3VtRnJlZQkAAgEJAKwCAgkArAICAg9UaGVyZSBhcmUgb25seSAJAKQDAQUHc3VtRnJlZQIaIGZyZWUgcG9pbnRzIHRvIGRpc3RyaWJ1dGUECGNoYXJzS2V5CQEMa2V5RHVja0NoYXJzAQULZHVja0Fzc2V0SWQEBWNoYXJzCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAKIIAQUIY2hhcnNLZXkCCTBfMF8wXzBfMAIBXwQGbmV3QWNjCQBlAgUNZnJlZVBvaW50c0FjYwUPc3VtVG9EaXN0cmlidXRlCQCUCgIJAM4IAgkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQpmcmVlS2V5QWNjAwkAZgIAAAUGbmV3QWNjAAAFBm5ld0FjYwkAzAgCCQEMSW50ZWdlckVudHJ5AgULZnJlZUtleUR1Y2sDCQBmAgAABQZuZXdBY2MJAGQCBQ5mcmVlUG9pbnRzRHVjawUGbmV3QWNjBQ5mcmVlUG9pbnRzRHVjawkAzAgCCQELU3RyaW5nRW50cnkCBQhjaGFyc0tleQkAuQkCCQDMCAIJAKQDAQkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVjaGFycwUMY2hhclN0cmVuZ3RoBQhzdHJlbmd0aAkAzAgCCQCkAwEJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFY2hhcnMFDGNoYXJBY2N1cmFjeQUIYWNjdXJhY3kJAMwIAgkApAMBCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBWNoYXJzBQ1jaGFySW50ZWxsZWN0BQlpbnRlbGxlY3QJAMwIAgkApAMBCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBWNoYXJzBQ1jaGFyRW5kdXJhbmNlBQllbmR1cmFuY2UJAMwIAgkApAMBCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBWNoYXJzBQ1jaGFyRGV4dGVyaXR5BQlkZXh0ZXJpdHkFA25pbAIBXwUDbmlsBQ1wcm9sb2dBY3Rpb25zBQp3bGdBY3Rpb25zAAABaQEcc3BsaXRCeUdsb2JhbFdlaWdodHNSRUFET05MWQEGYW1vdW50CQCUCgIFA25pbAkBEmdldE5lZWRlZE1hdGVyaWFscwEFBmFtb3VudAFpASRzcGxpdEJ5R2xvYmFsQW5kTG9jYWxXZWlnaHRzUkVBRE9OTFkDCW1hdEFtb3VudAlyZXNBbW91bnQIdGVycmFpbnMEDXRlcnJhaW5Db3VudHMJAQ1jb3VudFRlcnJhaW5zAQUIdGVycmFpbnMJAJQKAgUDbmlsCQCUCgIJARJnZXROZWVkZWRNYXRlcmlhbHMBBQltYXRBbW91bnQJARNkaXN0cmlidXRlQnlXZWlnaHRzAgUJcmVzQW1vdW50BQ10ZXJyYWluQ291bnRzAWkBE2dldEJhY2twYWNrUkVBRE9OTFkBC2R1Y2tBc3NldElkCQCUCgIFA25pbAkAuQkCCQELZ2V0QmFja3BhY2sBCQERa2V5QmFja3BhY2tCeUR1Y2sBBQtkdWNrQXNzZXRJZAIBOgFpARRnZXRXYXJlaG91c2VSRUFET05MWQELbGFuZEFzc2V0SWQEBWFzc2V0CQEFdmFsdWUBCQDsBwEJANkEAQULbGFuZEFzc2V0SWQECWxhbmRJbmRleAkAaQIJAQ9udW1QaWVjZXNCeVNpemUBCQCRAwIJALUJAggFBWFzc2V0C2Rlc2NyaXB0aW9uAgFfBQtyZWNMYW5kU2l6ZQUFU1NJWkUECmluZnJhTGV2ZWwJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBFmtleUluZnJhTGV2ZWxCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAAACQCUCgIFA25pbAkAugkCCQEMZ2V0V2FyZWhvdXNlAwkBEmtleVdhcmVob3VzZUJ5TGFuZAEFC2xhbmRBc3NldElkBQlsYW5kSW5kZXgFCmluZnJhTGV2ZWwCAToBaQEKc2F2ZUxhc3RUeAADCQEBIQEJAQ9jb250YWluc0VsZW1lbnQCCQDMCAIFC3dsZ0NvbnRyYWN0CQDMCAIFD2Vjb25vbXlDb250cmFjdAkAzAgCBRJ0b3VybmFtZW50Q29udHJhY3QJAMwIAgUNYWNyZXNDb250cmFjdAUDbmlsCAUBaQZjYWxsZXIJAAIBAg1BY2Nlc3MgZGVuaWVkCQCUCgIJAQZwcm9sb2cBBQFpACoBaQEPdXBkYXRlRHVja1N0YXRzAgtkdWNrQXNzZXRJZAdkZWx0YVhQAwkBAiE9AggFAWkGY2FsbGVyBQ9lY29ub215Q29udHJhY3QJAAIBAg1BY2Nlc3MgZGVuaWVkCQEXdXBkYXRlRHVja1N0YXRzSW50ZXJuYWwCBQtkdWNrQXNzZXRJZAUHZGVsdGFYUAFpAQ51cGRhdGVBY2NTdGF0cwIEYWRkcgdkZWx0YVhQAwkBASEBCQEPY29udGFpbnNFbGVtZW50AgkAzAgCBQt3bGdDb250cmFjdAkAzAgCBQ9lY29ub215Q29udHJhY3QJAMwIAgUNYWNyZXNDb250cmFjdAUDbmlsCAUBaQZjYWxsZXIJAAIBAg1BY2Nlc3MgZGVuaWVkCQEWdXBkYXRlQWNjU3RhdHNJbnRlcm5hbAIFBGFkZHIFB2RlbHRhWFABaQEJZXF1aXBEdWNrAQllcXVpcG1lbnQEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQEBGFkZHIJAKUIAQgFAWkMb3JpZ2luQ2FsbGVyBAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFBGFkZHICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQDCQEPY2hlY2tUb3VybmFtZW50AQULZHVja0Fzc2V0SWQJAAIBAhllcXVpcER1Y2tfY2hlY2tUb3VybmFtZW50AwkBDWNoZWNrRGVsaXZlcnkBBQtkdWNrQXNzZXRJZAkAAgECF2VxdWlwRHVja19jaGVja0RlbGl2ZXJ5BAVlcUtleQkBEGtleUR1Y2tFcXVpcG1lbnQBBQtkdWNrQXNzZXRJZAQLY3VycmVudFNlZ3MJALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBBQVlcUtleQIXLDssXyw7LF8sOyxfLDssXyw7LF8sOywCAV8EBWJwS2V5CQERa2V5QmFja3BhY2tCeUR1Y2sBBQtkdWNrQXNzZXRJZAQLY3VycmVudFBhY2sJAQtnZXRCYWNrcGFjawEFBWJwS2V5BAVuZXdFcQkAtQkCBQllcXVpcG1lbnQCAV8DCQECIT0CCQCQAwEFBW5ld0VxBQtOVU1TRUdNRU5UUwkAAgECFldyb25nIGVxdWlwbWVudCBzdHJpbmcECXRlbXBQcm9kQgkBBmRyZXNzQgQFC2N1cnJlbnRTZWdzCQEOcHJvZFN0clRvQnl0ZXMBCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QGBQNuaWwECHNlZ0JwQXV4CQCRAwIJALUJAgkAkQMCBQVuZXdFcQULc2VnQmFja3BhY2sCATsAAQQKYnVmZkVmZmVjdAMJAAACBQhzZWdCcEF1eAIAAAAEBGF1eDAJAJEDAgkAtQkCBQhzZWdCcEF1eAIBLAAAAwkAAAIFBGF1eDACAAAABAZpZHhDbnQJALUJAgUEYXV4MAIBOgQDaWR4CQCRAwIFBmlkeENudAAABANjbnQJAJEDAgUGaWR4Q250AAEDAwMDAwkAAAIFA2lkeAICMDYGCQAAAgUDaWR4AgIwNwYJAAACBQNpZHgCAjA4CQECIT0CBQNjbnQCAAcJAGYCCQENcGFyc2VJbnRWYWx1ZQEFA2NudAAABwkBDXBhcnNlSW50VmFsdWUBCQCRAwIJALUJAgkAkQMCBRBwcm9kdWN0aW9uTWF0cml4CQENcGFyc2VJbnRWYWx1ZQEFA2lkeAIBXwUKcklkeEVmZmVjdAAABAVzdGF0cwkBDGdldER1Y2tTdGF0cwQFBHRoaXMFC2R1Y2tBc3NldElkBQpidWZmRWZmZWN0BgQIbmV3UHJvZEIJAQZkcmVzc0IEBQVuZXdFcQUJdGVtcFByb2RCBwUFc3RhdHMECm5ld1Byb2RTdHIJAQ5ieXRlc1RvUHJvZFN0cgEFCG5ld1Byb2RCCQCUCgIJAM4IAgkAzAgCCQELU3RyaW5nRW50cnkCBQVlcUtleQUJZXF1aXBtZW50CQDMCAIJAQtTdHJpbmdFbnRyeQIFBWJwS2V5CQC6CQIJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUKYnBJZHhMZXZlbAkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeFJlcwkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeE1hdAkAzAgCBQpuZXdQcm9kU3RyBQNuaWwCAToJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDGtleUR1Y2tCdWZmcwEFC2R1Y2tBc3NldElkCQC5CQIJAMwIAgkApAMBCQCRAwIFBXN0YXRzAAcJAMwIAgkApAMBCQCRAwIFBXN0YXRzAAgJAMwIAgkApAMBCQCRAwIFBXN0YXRzAAkJAMwIAgkApAMBCQCRAwIFBXN0YXRzAAoJAMwIAgkApAMBCQCRAwIFBXN0YXRzAAsFA25pbAIBXwUDbmlsBQ1wcm9sb2dBY3Rpb25zAAABaQEPZm9ydGlmaWNhdGVMYW5kAgtsYW5kQXNzZXRJZARwbGFuBA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBARhZGRyCQClCAEIBQFpDG9yaWdpbkNhbGxlcgQLZHVja0Fzc2V0SWQJAQt2YWx1ZU9yRWxzZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUEYWRkcgIABAlkdWNrU3RhdHMJAQxnZXREdWNrU3RhdHMEBQR0aGlzBQtkdWNrQXNzZXRJZAAABwQHZm9ydEtleQkBF2tleUZvcnRpZmljYXRpb25zQnlMYW5kAQULbGFuZEFzc2V0SWQEDGN1cnJlbnRGb3J0cwkAtQkCCQELdmFsdWVPckVsc2UCCQCiCAEFB2ZvcnRLZXkCDDowXzE1OjBfMTg6MAIBXwQFYXNzZXQJAQV2YWx1ZQEJAOwHAQkA2QQBBQtsYW5kQXNzZXRJZAQJbGFuZEluZGV4CQBpAgkBD251bVBpZWNlc0J5U2l6ZQEJAJEDAgkAtQkCCAUFYXNzZXQLZGVzY3JpcHRpb24CAV8FC3JlY0xhbmRTaXplBQVTU0laRQQKaW5mcmFMZXZlbAkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEWa2V5SW5mcmFMZXZlbEJ5QXNzZXRJZAEFC2xhbmRBc3NldElkAAAEBXdoS2V5CQESa2V5V2FyZWhvdXNlQnlMYW5kAQULbGFuZEFzc2V0SWQEAndoCQEMZ2V0V2FyZWhvdXNlAwUFd2hLZXkFCWxhbmRJbmRleAUKaW5mcmFMZXZlbAQHY3VyTG9mdAkAtQkCCQCRAwIFAndoBQl3aElkeExPRlQCAV8EBGN1ck8JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQdjdXJMb2Z0BQt2b2xPY2N1cGllZAQEY3VyRgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFB2N1ckxvZnQFB3ZvbEZyZWUECG5ld0ZvcnRzCQC1CQIFBHBsYW4CAV8EDyR0MDEwMzYyNTEwMzc0MAkBBWZvcnRCBgUMY3VycmVudEZvcnRzCQEOcHJvZFN0clRvQnl0ZXMBCQCRAwIFAndoBQl3aElkeFByb2QFBGN1ck8FBGN1ckYGBQNuaWwECXRlbXBQcm9kQggFDyR0MDEwMzYyNTEwMzc0MAJfMQQFdGVtcE8IBQ8kdDAxMDM2MjUxMDM3NDACXzIEBXRlbXBGCAUPJHQwMTAzNjI1MTAzNzQwAl8zBA8kdDAxMDM3NDMxMDM4MzkJAQVmb3J0QgYFCG5ld0ZvcnRzBQl0ZW1wUHJvZEIFBXRlbXBPBQV0ZW1wRgcFCWR1Y2tTdGF0cwQIbmV3UHJvZEIIBQ8kdDAxMDM3NDMxMDM4MzkCXzEEBG5ld08IBQ8kdDAxMDM3NDMxMDM4MzkCXzIEBG5ld0YIBQ8kdDAxMDM3NDMxMDM4MzkCXzMECm5ld1Byb2RTdHIJAQ5ieXRlc1RvUHJvZFN0cgEFCG5ld1Byb2RCBApuZXdMb2Z0U3RyCQC5CQIJAMwIAgkAkQMCBQdjdXJMb2Z0BQl2b2xMb2NrZWQJAMwIAgkApAMBBQRuZXdPCQDMCAIJAKQDAQUEbmV3RgkAzAgCCQCRAwIFB2N1ckxvZnQFCHZvbFRvdGFsBQNuaWwCAV8JAJQKAgkAzggCCQDMCAIJAQtTdHJpbmdFbnRyeQIFB2ZvcnRLZXkFBHBsYW4JAMwIAgkBC1N0cmluZ0VudHJ5AgUFd2hLZXkJALoJAgkAzAgCCQCRAwIFAndoBQt3aElkeExldmVscwkAzAgCCQCRAwIFAndoBQh3aElkeFJlcwkAzAgCCQCRAwIFAndoBQh3aElkeE1hdAkAzAgCBQpuZXdQcm9kU3RyCQDMCAIFCm5ld0xvZnRTdHIFA25pbAIBOgUDbmlsBQ1wcm9sb2dBY3Rpb25zAAABaQETaW5pdER1Y2tUb3VyQXR0ZW1wdAELZHVja0Fzc2V0SWQDCQECIT0CCAUBaQZjYWxsZXIFEnRvdXJuYW1lbnRDb250cmFjdAkAAgECDUFjY2VzcyBkZW5pZWQECWtleUhlYWx0aAkBDWtleUR1Y2tIZWFsdGgBBQtkdWNrQXNzZXRJZAQFbWF4SFAJAQltYXhIZWFsdGgBCQELdmFsdWVPckVsc2UCCQCfCAEJAQxrZXlEdWNrTGV2ZWwBBQtkdWNrQXNzZXRJZAAABAljdXJIZWFsdGgJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJa2V5SGVhbHRoBQVtYXhIUAQJY3VyTG9jS2V5CQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQEC2N1ckxvY2F0aW9uCQELdmFsdWVPckVsc2UCCQCiCAEFCWN1ckxvY0tleQUPREVGQVVMVExPQ0FUSU9OBAZsYXN0SWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUSdG91cm5hbWVudENvbnRyYWN0BQ1sYXN0VG91cklkS2V5AAAEDHRvdXJMb2NhdGlvbgkArAICCQCkAwEFBmxhc3RJZAIEX1RfMAkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEOa2V5U2F2ZWRIZWFsdGgBBQtkdWNrQXNzZXRJZAUJY3VySGVhbHRoCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQlrZXlIZWFsdGgFBW1heEhQCQDMCAIJAQtTdHJpbmdFbnRyeQIJARBrZXlTYXZlZExvY2F0aW9uAQULZHVja0Fzc2V0SWQFC2N1ckxvY2F0aW9uCQDMCAIJAQtTdHJpbmdFbnRyeQIFCWN1ckxvY0tleQUMdG91ckxvY2F0aW9uBQNuaWwFDHRvdXJMb2NhdGlvbgFpAQxicmVha0F0dGVtcHQABA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBCQClCAEIBQFpBmNhbGxlcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAQJY3VyTG9jS2V5CQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQEC2N1ckxvY2F0aW9uCQELdmFsdWVPckVsc2UCCQCiCAEFCWN1ckxvY0tleQUPREVGQVVMVExPQ0FUSU9OAwkBAiE9AgkAkQMCCQC1CQIFC2N1ckxvY2F0aW9uAgFfBQpsb2NJZHhUeXBlAgFUCQACAQIiWW91ciBkdWNrIGlzIG5vdCBpbiB0aGUgdG91cm5hbWVudAQLc2F2ZWRIZWFsdGgJARFAZXh0ck5hdGl2ZSgxMDU1KQEJAQ5rZXlTYXZlZEhlYWx0aAEFC2R1Y2tBc3NldElkBA1zYXZlZExvY2F0aW9uCQERQGV4dHJOYXRpdmUoMTA1OCkBCQEQa2V5U2F2ZWRMb2NhdGlvbgEFC2R1Y2tBc3NldElkCQCUCgIJAM0IAgkAzQgCBQ1wcm9sb2dBY3Rpb25zCQEMSW50ZWdlckVudHJ5AgkBDWtleUR1Y2tIZWFsdGgBBQtkdWNrQXNzZXRJZAULc2F2ZWRIZWFsdGgJAQtTdHJpbmdFbnRyeQIFCWN1ckxvY0tleQUNc2F2ZWRMb2NhdGlvbgULY3VyTG9jYXRpb24BaQEWZXhpdFRvdXJuYW1lbnRJbnRlcm5hbAELZHVja0Fzc2V0SWQDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAg1BY2Nlc3MgZGVuaWVkBAtzYXZlZEhlYWx0aAkBEUBleHRyTmF0aXZlKDEwNTUpAQkBDmtleVNhdmVkSGVhbHRoAQULZHVja0Fzc2V0SWQEDXNhdmVkTG9jYXRpb24JARFAZXh0ck5hdGl2ZSgxMDU4KQEJARBrZXlTYXZlZExvY2F0aW9uAQULZHVja0Fzc2V0SWQJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBDWtleUR1Y2tIZWFsdGgBBQtkdWNrQXNzZXRJZAULc2F2ZWRIZWFsdGgJAMwIAgkBC1N0cmluZ0VudHJ5AgkBD2tleUR1Y2tMb2NhdGlvbgEFC2R1Y2tBc3NldElkBQ1zYXZlZExvY2F0aW9uBQNuaWwHAWkBFGV4aXREZWxpdmVyeUludGVybmFsAQtkdWNrQXNzZXRJZAMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECDUFjY2VzcyBkZW5pZWQEAWUJARJleGl0RGVsaXZlcnlDb21tb24DBQtkdWNrQXNzZXRJZAcAAAkAlAoCCQDOCAIIBQFlAl8xCAUBZQJfMgcBaQEQYXV0b0V4aXREZWxpdmVyeQILZHVja0Fzc2V0SWQFbmV3SFADCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAg1BY2Nlc3MgZGVuaWVkBAFlCQESZXhpdERlbGl2ZXJ5Q29tbW9uAwULZHVja0Fzc2V0SWQGBQVuZXdIUAkAlAoCCAUBZQJfMQkAlAoCCAUBZQJfMwgFAWUCXzQBaQEOcHJlcGFyZVJvYmJlcnkCB21lc3NhZ2UDc2lnBA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQEhAQkAxBMDBQdtZXNzYWdlBQNzaWcFA3B1YgkAAgECGHNpZ25hdHVyZSBkb2VzIG5vdCBtYXRjaAMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECImV4YWN0bHkgMSBwYXltZW50IG11c3QgYmUgYXR0YWNoZWQEA3BtdAkAkQMCCAUBaQhwYXltZW50cwAABAZ3bGdBbXQIBQNwbXQGYW1vdW50AwMJAQEhAQkBCWlzRGVmaW5lZAEIBQNwbXQHYXNzZXRJZAYJAQIhPQIJAQV2YWx1ZQEIBQNwbXQHYXNzZXRJZAUKd2xnQXNzZXRJZAkAAgECFVdMR09MRCBwYXltZW50cyBvbmx5IQQFcGFydHMJALUJAgkAsAkBBQdtZXNzYWdlAgF8AwkBAiE9AgkAkAMBBQVwYXJ0cwACCQACAQIUV3JvbmcgbWVzc2FnZSBmb3JtYXQEC2R1Y2tBc3NldElkCQCRAwIFBXBhcnRzAAADCQEPY2hlY2tUb3VybmFtZW50AQULZHVja0Fzc2V0SWQJAAIBAh5wcmVwYXJlUm9iYmVyeV9jaGVja1RvdXJuYW1lbnQDCQENY2hlY2tEZWxpdmVyeQEFC2R1Y2tBc3NldElkCQACAQIccHJlcGFyZVJvYmJlcnlfY2hlY2tEZWxpdmVyeQQHcm9iQ29zdAgJAQ5nZXRSb2JiZXJ5RGF0YQIFBHRoaXMFC2R1Y2tBc3NldElkAl8xAwkAZgIFB3JvYkNvc3QFBndsZ0FtdAkAAgEJAKwCAgkArAICCQCsAgICCFBheW1lbnQgCQCkAwEFBndsZ0FtdAIMIDwgcmVxdWlyZWQgCQCkAwEFB3JvYkNvc3QECmNhbmRpZGF0ZXMJALUJAgkAkQMCBQVwYXJ0cwABAgFfBANub3cIBQlsYXN0QmxvY2sJdGltZXN0YW1wBAlkdWNrU3RhdGUJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBE2tleUR1Y2tSb2JiZXJ5U3RhdGUBBQtkdWNrQXNzZXRJZAAABApsb2NrZWRMYW5kCQELdmFsdWVPckVsc2UCCQCiCAEJARNrZXlMb2NrZWRMYW5kQnlEdWNrAQULZHVja0Fzc2V0SWQCAAQHbGFuZEVUQQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQESa2V5TGFuZENvb2xkb3duRVRBAQUKbG9ja2VkTGFuZAAAAwMJAQIhPQIFCWR1Y2tTdGF0ZQULZHVja0lkeEZyZWUJAGYCBQdsYW5kRVRBBQNub3cHCQACAQkArAICAidZb3UgYWxyZWFkeSBzdGFydGVkIHJvYmJpbmcsIHdhaXQgdGlsbCAJAKQDAQUHbGFuZEVUQQoBB2NoZWNrZXICA2FjYwtsYW5kQXNzZXRJZAQFc3RhdGUJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBE2tleUxhbmRSb2JiZXJ5U3RhdGUBBQtsYW5kQXNzZXRJZAAABAtjb29sZG93bkVUQQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQESa2V5TGFuZENvb2xkb3duRVRBAQULbGFuZEFzc2V0SWQAAAMJAGYCBQVzdGF0ZQkAkAMBBRBsYW5kUm9iQ29vbGRvd25zCQACAQINSW52YWxpZCBzdGF0ZQMJAGYCBQNub3cFC2Nvb2xkb3duRVRBBApzdGFrZWRUaW1lCQELdmFsdWVPckVsc2UCCQCfCAEJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQULbGFuZEFzc2V0SWQAAAMJAGcCAAAFCnN0YWtlZFRpbWUFA2FjYwQBYQkBBXZhbHVlAQkA7AcBCQDZBAEFC2xhbmRBc3NldElkBAFkCQC1CQIIBQFhC2Rlc2NyaXB0aW9uAgFfBAZwaWVjZXMJAQ9udW1QaWVjZXNCeVNpemUBCQCRAwIFAWQFC3JlY0xhbmRTaXplBAxwcm9kdWN0aXZpdHkJAQxhcHBseUJvbnVzZXMCBQtsYW5kQXNzZXRJZAUGcGllY2VzBAlkZWx0YVRpbWUJAGUCBQNub3cFCnN0YWtlZFRpbWUECGF2YWlsUmVzCQBrAwUJZGVsdGFUaW1lCQBoAgUMcHJvZHVjdGl2aXR5BQZwaWVjZXMFCURBWU1JTExJUwMJAGYCBQ5NSU5fUkVTX1RPX1JPQgUIYXZhaWxSZXMFA2FjYwkAzQgCBQNhY2MFC2xhbmRBc3NldElkBQNhY2MECGZpbHRlcmVkCgACJGwFCmNhbmRpZGF0ZXMKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBB2NoZWNrZXICBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDEwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoDCQAAAgkAkAMBBQhmaWx0ZXJlZAAACQACAQIZTm8gY2FuZGlkYXRlcyBmb3Igcm9iYmVyeQQGcm5kSWR4CQEPZ2V0UmFuZG9tTnVtYmVyAwkAkAMBBQhmaWx0ZXJlZAUGaGVpZ2h0CQDLAQIFA3NpZwgFAWkNdHJhbnNhY3Rpb25JZAQLbGFuZEFzc2V0SWQJAJEDAgUIZmlsdGVyZWQFBnJuZElkeAkAlAoCCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIJARNrZXlMYW5kUm9iYmVyeVN0YXRlAQULbGFuZEFzc2V0SWQFDHJvYklkeExvY2tlZAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBEmtleUxhbmRDb29sZG93bkVUQQEFC2xhbmRBc3NldElkCQBkAgUDbm93CQCRAwIFEGxhbmRSb2JDb29sZG93bnMFDHJvYklkeExvY2tlZAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBE2tleUR1Y2tSb2JiZXJ5U3RhdGUBBQtkdWNrQXNzZXRJZAUQZHVja0lkeFByZXBhcmluZwkAzAgCCQELU3RyaW5nRW50cnkCCQETa2V5TG9ja2VkTGFuZEJ5RHVjawEFC2R1Y2tBc3NldElkBQtsYW5kQXNzZXRJZAUDbmlsBQ1wcm9sb2dBY3Rpb25zBQtsYW5kQXNzZXRJZAFpAQdyb2JMYW5kAgdtZXNzYWdlA3NpZwQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQEBIQEJAMQTAwUHbWVzc2FnZQUDc2lnBQNwdWIJAAIBAhhzaWduYXR1cmUgZG9lcyBub3QgbWF0Y2gECHVzZXJBZGRyCQClCAEIBQFpBmNhbGxlcgQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQh1c2VyQWRkcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAQDbm93CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAlAoCCQDNCAIFDXByb2xvZ0FjdGlvbnMJAQxJbnRlZ2VyRW50cnkCCQEYa2V5TGFzdFJvYmJlcnlUaW1lQnlEdWNrAQULZHVja0Fzc2V0SWQFA25vdwAAAWkBDmFjY2VwdERlbGl2ZXJ5AAMJAQEhAQURS1NfQUxMT1dfREVMSVZFUlkJAAIBAh9EZWxpdmVyeSBmZWF0dXJlIGlzIHR1cm5lZCBvZmYhBA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQQIdXNlckFkZHIJAKUIAQgFAWkGY2FsbGVyBAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFCHVzZXJBZGRyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkBAlmdW5kVG90YWwJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPZWNvbm9teUNvbnRyYWN0BQ9kZWxpdmVyeUZ1bmRLZXkAAAQLbG9ja2VkVG90YWwJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPZWNvbm9teUNvbnRyYWN0BRFkZWxpdmVyeUxvY2tlZEtleQAAAwkAZgIFFU1JTl9VU0RUX0ZFRV9ERUxJVkVSWQkAZQIFCWZ1bmRUb3RhbAULbG9ja2VkVG90YWwJAAIBCQCsAgIJAKwCAgkArAICAiBEZWxpdmVyeSBpcyBub3QgYXZhaWxhYmxlLCBmdW5kPQkBCmZpeGVkUG9pbnQCBQlmdW5kVG90YWwABgIJLCBsb2NrZWQ9CQEKZml4ZWRQb2ludAIFC2xvY2tlZFRvdGFsAAYEA25vdwgFCWxhc3RCbG9jawl0aW1lc3RhbXAECGRlbGF5RVRBCQELdmFsdWVPckVsc2UCCQCfCAEJARZrZXlEZWxpdmVyeURlbGF5QnlEdWNrAQULZHVja0Fzc2V0SWQAAAMJAGYCBQhkZWxheUVUQQUDbm93CQACAQkArAICAipEZWxpdmVyeSBpcyBmb3JiaWRkZW4gZm9yIHlvdXIgZHVjayB1bnRpbCAJAKQDAQUIZGVsYXlFVEEDCQEPY2hlY2tUb3VybmFtZW50AQULZHVja0Fzc2V0SWQJAAIBAh5hY2NlcHREZWxpdmVyeV9jaGVja1RvdXJuYW1lbnQDCQENY2hlY2tEZWxpdmVyeQEFC2R1Y2tBc3NldElkCQACAQIcYWNjZXB0RGVsaXZlcnlfY2hlY2tEZWxpdmVyeQQObmV3TG9ja2VkVG90YWwJAQVhc0ludAEJAPwHBAUPZWNvbm9teUNvbnRyYWN0AhR1cGRhdGVEZWxpdmVyeUxvY2tlZAkAzAgCCQBkAgULbG9ja2VkVG90YWwFFU1JTl9VU0RUX0ZFRV9ERUxJVkVSWQUDbmlsBQNuaWwECWtleUhlYWx0aAkBDWtleUR1Y2tIZWFsdGgBBQtkdWNrQXNzZXRJZAQFbWF4SFAJAQltYXhIZWFsdGgBCQELdmFsdWVPckVsc2UCCQCfCAEJAQxrZXlEdWNrTGV2ZWwBBQtkdWNrQXNzZXRJZAAABAljdXJIZWFsdGgJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJa2V5SGVhbHRoBQVtYXhIUAQJY3VyTG9jS2V5CQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQEC2N1ckxvY2F0aW9uCQELdmFsdWVPckVsc2UCCQCiCAEFCWN1ckxvY0tleQUPREVGQVVMVExPQ0FUSU9OBBBkZWxpdmVyeUxvY2F0aW9uCQCsAgIJAKQDAQUDbm93AgRfRF8wCQCUCgIJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBDmtleVNhdmVkSGVhbHRoAQULZHVja0Fzc2V0SWQFCWN1ckhlYWx0aAkAzAgCCQEMSW50ZWdlckVudHJ5AgUJa2V5SGVhbHRoBQVtYXhIUAkAzAgCCQELU3RyaW5nRW50cnkCCQEQa2V5U2F2ZWRMb2NhdGlvbgEFC2R1Y2tBc3NldElkBQtjdXJMb2NhdGlvbgkAzAgCCQELU3RyaW5nRW50cnkCBQljdXJMb2NLZXkFEGRlbGl2ZXJ5TG9jYXRpb24FA25pbAUNcHJvbG9nQWN0aW9ucwkAlAoCBRBkZWxpdmVyeUxvY2F0aW9uBQ5uZXdMb2NrZWRUb3RhbAAMaUWA", "height": 2791327, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: Dj5wY6S2UuhUK6rrW5AcXiVJHWY368zjfYbhsuQP1VZd Next: 3JaEF7XvsGn31zRN5KHg6FiXajhMYboYrLwHdkdsxGNE Diff:
OldNewDifferences
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 86400000
55
6-func b (c) = ("lastArbTimeUser_" + c)
7-
8-
9-let d = 100000000
10-
11-let e = 3200
12-
13-let f = 4000
14-
15-let g = 3
16-
17-let h = 100000000
18-
19-let i = 400
20-
21-let j = ["Strength", "Accuracy", "Intellect", "Endurance", "Dexterity", "Level", "Health"]
22-
23-let k = 0
24-
25-let l = 1
26-
27-let m = 2
28-
29-let n = 3
30-
31-let o = 4
32-
33-let p = 0
34-
35-let q = 6
36-
37-let r = 2
6+let b = 60000
7+
8+func c (d) = ("lastArbTimeUser_" + d)
9+
10+
11+let e = 100000000
12+
13+let f = 3200
14+
15+let g = 4000
16+
17+let h = 3
18+
19+let i = 100000000
20+
21+let j = 400
22+
23+let k = ["Strength", "Accuracy", "Intellect", "Endurance", "Dexterity", "Level", "Health"]
24+
25+let l = 0
26+
27+let m = 1
28+
29+let n = 2
30+
31+let o = 3
32+
33+let p = 4
34+
35+let q = 0
36+
37+let r = 6
3838
3939 let s = 2
4040
41-let t = 30
42-
43-let u = [0, 600000, 900000, 43200000, 21600000]
44-
45-let v = 20000000
46-
47-let w = 1
48-
49-let x = 0
50-
51-let y = 1
52-
53-func z (A) = ("duckHealth_" + A)
54-
55-
56-func B (A) = ("duckChars_" + A)
57-
58-
59-func C (A) = ("duckXP_" + A)
60-
61-
62-func D (A) = ("duckLevel_" + A)
63-
64-
65-func E (A) = ("duckFreePoints_" + A)
66-
67-
68-func F (A) = ("duckEquipment_" + A)
69-
70-
71-func G (c) = ("userXP_" + c)
72-
73-
74-func H (c) = ("userLevel_" + c)
75-
76-
77-func I (c) = ("userFreePoints_" + c)
78-
79-
80-func J (A) = ("savedHealth_" + A)
81-
82-
83-func K (A) = ("savedLocation_" + A)
84-
85-
86-func L (A) = ("duckBuffs_" + A)
87-
88-
89-func M (A) = ("lastRobberyTime_" + A)
90-
91-
92-func N (A) = ("lastRobberyCost_" + A)
93-
94-
95-func O (P) = ("landRobberyState_" + P)
96-
97-
98-func Q (P) = ("landCooldownETA_" + P)
99-
100-
101-func R (A) = ("duckRobberyState_" + A)
102-
103-
104-func S (A) = ("lockedLandByDuck_" + A)
105-
106-
107-func T (A) = ("deliveryDelayByDuck_" + A)
108-
109-
110-let U = 10000
41+let t = 2
42+
43+let u = 30
44+
45+let v = [0, 600000, 900000, 43200000, 21600000]
46+
47+let w = 20000000
48+
49+let x = 1
50+
51+let y = 0
52+
53+let z = 1
54+
55+func A (B) = ("duckHealth_" + B)
56+
57+
58+func C (B) = ("duckChars_" + B)
59+
60+
61+func D (B) = ("duckXP_" + B)
62+
63+
64+func E (B) = ("duckLevel_" + B)
65+
66+
67+func F (B) = ("duckFreePoints_" + B)
68+
69+
70+func G (B) = ("duckEquipment_" + B)
71+
72+
73+func H (d) = ("userXP_" + d)
74+
75+
76+func I (d) = ("userLevel_" + d)
77+
78+
79+func J (d) = ("userFreePoints_" + d)
80+
81+
82+func K (B) = ("savedHealth_" + B)
83+
84+
85+func L (B) = ("savedLocation_" + B)
86+
87+
88+func M (B) = ("duckBuffs_" + B)
89+
90+
91+func N (B) = ("lastRobberyTime_" + B)
92+
93+
94+func O (B) = ("lastRobberyCost_" + B)
95+
96+
97+func P (Q) = ("landRobberyState_" + Q)
98+
99+
100+func R (Q) = ("landCooldownETA_" + Q)
101+
102+
103+func S (B) = ("duckRobberyState_" + B)
104+
105+
106+func T (B) = ("lockedLandByDuck_" + B)
107+
108+
109+func U (B) = ("deliveryDelayByDuck_" + B)
110+
111111
112112 let V = 10000
113113
114-let W = 2000
115-
116-let X = 100000
117-
118-let Y = 1000000
119-
120-let Z = 5000000
121-
122-let aa = 10000
123-
124-let ab = 1000000
114+let W = 10000
115+
116+let X = 2000
117+
118+let Y = 100000
119+
120+let Z = 1000000
121+
122+let aa = 5000000
123+
124+let ab = 10000
125125
126126 let ac = 1000000
127127
128-let ad = 10000
129-
130-func ae (af) = fraction(e, pow(af, 4, f, 4, 4, DOWN), d)
131-
132-
133-func ag (ah) = (100 + ah)
134-
135-
136-func ai (aj,ak) = {
137- let al = ae(ak)
138-[al, (g * (al - aj))]
139- }
140-
141-
142-func am (an,A,ao,ap) = {
143- let aq = split(valueOrElse(getString(an, B(A)), "0_0_0_0_0"), "_")
144- let ar = valueOrElse(getInteger(an, D(A)), 0)
145- let as = valueOrElse(getInteger(an, z(A)), ag(ar))
146- let at = split(valueOrElse(getString(an, L(A)), "0_0_0_0_0"), "_")
147- ([parseIntValue(aq[k]), parseIntValue(aq[l]), parseIntValue(aq[m]), parseIntValue(aq[n]), parseIntValue(aq[o]), ar, as] ++ (if (ap)
148- then [ao, ao, ao, ao, ao]
149- else [parseIntValue(at[k]), parseIntValue(at[l]), parseIntValue(at[m]), parseIntValue(at[n]), parseIntValue(at[o])]))
150- }
151-
152-
153-func au (an,A) = {
154- let av = valueOrElse(getInteger(an, N(A)), 0)
155- let aw = valueOrElse(getInteger(an, M(A)), 0)
156- let ax = lastBlock.timestamp
157- let ay = max([h, (av - (i * (ax - aw)))])
158- let az = valueOrElse(getInteger(an, R(A)), 0)
159- let aA = valueOrElse(getString(an, S(A)), "")
160- let aB = valueOrElse(getInteger(an, Q(aA)), 0)
161- $Tuple5(ay, aw, az, aA, aB)
162- }
163-
164-
165-let aC = "LAND"
166-
167-let aD = "DUCK"
168-
169-let aE = "PRESALE"
170-
171-let aF = 6
172-
173-let aG = 25
174-
175-let aH = 3456000
176-
177-let aI = 10000000000
178-
179-let aJ = "Africa_F_Africa"
180-
181-let aK = 39637
182-
183-let aL = 10
184-
185-let aM = 50000
186-
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-
205-let aW = 10
128+let ad = 1000000
129+
130+let ae = 10000
131+
132+func af (ag) = fraction(f, pow(ag, 4, g, 4, 4, DOWN), e)
133+
134+
135+func ah (ai) = (100 + ai)
136+
137+
138+func aj (ak,al) = {
139+ let am = af(al)
140+[am, (h * (am - ak))]
141+ }
142+
143+
144+func an (ao,B,ap,aq) = {
145+ let ar = split(valueOrElse(getString(ao, C(B)), "0_0_0_0_0"), "_")
146+ let as = valueOrElse(getInteger(ao, E(B)), 0)
147+ let at = valueOrElse(getInteger(ao, A(B)), ah(as))
148+ let au = split(valueOrElse(getString(ao, M(B)), "0_0_0_0_0"), "_")
149+ ([parseIntValue(ar[l]), parseIntValue(ar[m]), parseIntValue(ar[n]), parseIntValue(ar[o]), parseIntValue(ar[p]), as, at] ++ (if (aq)
150+ then [ap, ap, ap, ap, ap]
151+ else [parseIntValue(au[l]), parseIntValue(au[m]), parseIntValue(au[n]), parseIntValue(au[o]), parseIntValue(au[p])]))
152+ }
153+
154+
155+func av (ao,B) = {
156+ let aw = valueOrElse(getInteger(ao, O(B)), 0)
157+ let ax = valueOrElse(getInteger(ao, N(B)), 0)
158+ let ay = lastBlock.timestamp
159+ let az = max([i, (aw - (j * (ay - ax)))])
160+ let aA = valueOrElse(getInteger(ao, S(B)), 0)
161+ let aB = valueOrElse(getString(ao, T(B)), "")
162+ let aC = valueOrElse(getInteger(ao, R(aB)), 0)
163+ $Tuple5(az, ax, aA, aB, aC)
164+ }
165+
166+
167+let aD = "LAND"
168+
169+let aE = "DUCK"
170+
171+let aF = "PRESALE"
172+
173+let aG = 6
174+
175+let aH = 25
176+
177+let aI = 3456000
178+
179+let aJ = 10000000000
180+
181+let aK = "Africa_F_Africa"
182+
183+let aL = 39637
184+
185+let aM = 10
186+
187+let aN = 50000
188+
189+let aO = 600000
190+
191+let aP = ["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"]
192+
193+let aQ = ["Americas", "Europe", "Asia", "Africa", "Oceania"]
194+
195+let aR = 10000000
196+
197+let aS = [15, 16, 17, 18, 19, 20]
198+
199+let aT = ["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_"]
200+
201+let aU = 6
202+
203+let aV = 8
204+
205+let aW = 9
206206
207207 let aX = 10
208208
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, "_")
334- let ax = lastBlock.timestamp
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)
209+let aY = 10
210+
211+let aZ = 0
212+
213+let ba = 1
214+
215+let bb = 2
216+
217+let bc = 3
218+
219+let bd = 4
220+
221+let be = 0
222+
223+let bf = 1
224+
225+let bg = 2
226+
227+let bh = 3
228+
229+let bi = 0
230+
231+let bj = 1
232+
233+let bk = 2
234+
235+let bl = 3
236+
237+let bm = 0
238+
239+let bn = 1
240+
241+let bo = 2
242+
243+func bp (bq) = ("no_" + bq)
244+
245+
246+func br (bq) = ("lcna_" + bq)
247+
248+
249+func bs (bq) = ("st_" + bq)
250+
251+
252+func bt (bu,bq) = makeString(["las", bu, bq], "_")
253+
254+
255+func bv (bw,bq,bx) = ((((("sttao_" + bw) + "_") + bq) + "_") + bx)
256+
257+
258+func by (Q) = ("wh_" + Q)
259+
260+
261+func bz (bq) = ("infraLevel_" + bq)
262+
263+
264+func bA (Q) = ("fortifications_" + Q)
265+
266+
267+func bB (bq) = ("duckCustomNameByAssetId_" + bq)
268+
269+
270+func bC (d) = ("accountCustomNameByAddr_" + d)
271+
272+
273+func bD (d) = ("accRefBy_" + d)
274+
275+
276+func bE (B) = ("onboardArtActivatedOnDuck_" + B)
277+
278+
279+func bF (d) = ("onboardArtActivatedDuckBy_" + d)
280+
281+
282+func bG (d) = ("accReferrals_" + d)
283+
284+
285+func bH (bq) = ("duckOwner_" + bq)
286+
287+
288+func bI (bx) = ("stakedDuckByOwner_" + bx)
289+
290+
291+func bJ (B) = ("backPack_" + B)
292+
293+
294+func bK (B) = ("duckLocation_" + B)
295+
296+
297+func bL (bM) = ("%s%s__userGwlReleaseTime__" + bM)
298+
299+
300+func bN () = "emergencyWarehouseProducts"
301+
302+
303+let bO = "deliveryFund"
304+
305+let bP = "deliveryLocked"
306+
307+let bQ = "%s__lastTourId"
308+
309+func bR (bS) = ("%s%d__tourStaticData__" + toString(bS))
310+
311+
312+func bT (bS) = ("%s%d__tourDynamicData__" + toString(bS))
313+
314+
315+func bU (bS,B) = makeString(["%s%d%s__bestResultByTourAndDuck", toString(bS), B], "__")
316+
317+
318+let bV = 0
319+
320+let bW = 1
321+
322+let bX = 6
323+
324+let bY = 1
325+
326+func bZ (ca,bS) = {
327+ let cb = split(valueOrErrorMessage(getString(ca, bR(bS)), (("Error reading tournament " + toString(bS)) + " data")), "__")
328+ let cc = split_4C(valueOrErrorMessage(getString(ca, bT(bS)), (("Error reading tournament " + toString(bS)) + " data")), "__")
329+[cb, cc]
330+ }
331+
332+
333+func cd (ca,ce) = {
334+ let cf = valueOrElse(getInteger(ca, bQ), 0)
335+ let cg = split(ce, "_")
336+ let ay = lastBlock.timestamp
337+ let ch = bZ(ca, cf)
338+ let cb = ch[bV]
339+ let cc = ch[bW]
340+ if (if (if ((cg[bn] == "T"))
341+ then (parseIntValue(cg[bm]) == cf)
340342 else false)
341- then (cb[bX] == "INPROGRESS")
343+ then (cc[bY] == "INPROGRESS")
342344 else false)
343- then (parseIntValue(ca[bW]) > ax)
345+ then (parseIntValue(cb[bX]) > ay)
344346 else false
345347 }
346348
347349
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))
350+func ci (ce) = {
351+ let cg = split(ce, "_")
352+ let ay = lastBlock.timestamp
353+ let cj = parseIntValue(cg[bm])
354+ let ck = parseIntValue(cg[bo])
355+ if (if ((cg[bn] == "D"))
356+ then (ay > (cj + aO))
355357 else false)
356- then (3 >= cj)
358+ then (3 >= ck)
357359 else false
358360 }
359361
360362
361-func ck (cd) = {
362- let cl = split(cd, "_")[bm]
363- if ((cl != "T"))
364- then (cl != "D")
363+func cl (ce) = {
364+ let cm = split(ce, "_")[bn]
365+ if ((cm != "T"))
366+ then (cm != "D")
365367 else false
366368 }
367369
368370
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 ((cl == "D"))
371+func cn (ca,ce) = {
372+ let cf = valueOrElse(getInteger(ca, bQ), 0)
373+ let cg = split(ce, "_")
374+ let ay = lastBlock.timestamp
375+ let ch = bZ(ca, cf)
376+ let cb = ch[bV]
377+ let cc = ch[bW]
378+ let cm = cg[bn]
379+ if ((cm == "D"))
378380 then true
379- else if (if (if ((cf[bm] == "T"))
380- then (parseIntValue(cf[bl]) == ce)
381+ else if (if (if ((cg[bn] == "T"))
382+ then (parseIntValue(cg[bm]) == cf)
381383 else false)
382- then (cb[bX] == "INPROGRESS")
384+ then (cc[bY] == "INPROGRESS")
383385 else false)
384- then (parseIntValue(ca[bW]) > ax)
386+ then (parseIntValue(cb[bX]) > ay)
385387 else false
386388 }
387389
388390
389-func cn (co) = (parseIntValue(co[aT]) * aQ)
390-
391-
392-func cp (cq,cr,cs) = throw(((((("Cheat attempt: oldLoc=" + cq) + ", newLoc=") + cr) + ", case=") + toString(cs)))
393-
394-
395-let ct = false
391+func co (cp) = (parseIntValue(cp[aU]) * aR)
392+
393+
394+func cq (cr,cs,ct) = throw(((((("Cheat attempt: oldLoc=" + cr) + ", newLoc=") + cs) + ", case=") + toString(ct)))
395+
396396
397397 let cu = false
398398
399-let cv = true
400-
401-let cw = take(drop(this.bytes, 1), 1)
402-
403-let cx = {
404- let cy = cw
405- if ((base58'2W' == cy))
399+let cv = false
400+
401+let cw = true
402+
403+let cx = take(drop(this.bytes, 1), 1)
404+
405+let cy = {
406+ let cz = cx
407+ if ((base58'2W' == cz))
406408 then base58'9wc3LXNA4TEBsXyKtoLE9mrbDD7WMHXvXrCjZvabLAsi'
407- else if ((base58'2T' == cy))
409+ else if ((base58'2T' == cz))
408410 then base58'6mWwf9mZBjVgkC54idpyaZLQfAosD914wT8fGf2iiY63'
409411 else throw("Unknown chain")
410412 }
411413
412-let cz = {
413- let cy = cw
414- if ((base58'2W' == cy))
414+let cA = {
415+ let cz = cx
416+ if ((base58'2W' == cz))
415417 then "3PQCuvFbvh4LkPUnrnU1z3jnbA1p9m3WNhv"
416- else if ((base58'2T' == cy))
418+ else if ((base58'2T' == cz))
417419 then "3MumkGGztCKAXpWDqxkddofqXSUbqQkvSJy"
418420 else throw("Unknown chain")
419421 }
420422
421-let cA = {
422- let cy = cw
423- if ((base58'2W' == cy))
423+let cB = {
424+ let cz = cx
425+ if ((base58'2W' == cz))
424426 then 10000000000
425- else if ((base58'2T' == cy))
427+ else if ((base58'2T' == cz))
426428 then 100000000
427429 else throw("Unknown chain")
428430 }
429431
430-let cB = {
431- let cy = cw
432- if ((base58'2W' == cy))
432+let cC = {
433+ let cz = cx
434+ if ((base58'2W' == cz))
433435 then 86400000
434- else if ((base58'2T' == cy))
436+ else if ((base58'2T' == cz))
435437 then 60000
436438 else throw("Unknown chain")
437439 }
438440
439-let cC = "__"
440-
441-let cD = 1000000
442-
443-let cE = 100000000
444-
445-let cF = 25
446-
447-let cG = 100
448-
449-let cH = 225
450-
451-let cI = 400
452-
453-let cJ = 625
454-
455-let cK = [0, 1, 2, 3, 4, 5]
456-
457-func cL (cM,cN) = valueOrErrorMessage(getString(cM, cN), makeString(["mandatory ", toString(cM), ".", cN, " is not defined"], ""))
458-
459-
460-let cO = 1
461-
462-let cP = 2
463-
464-let cQ = 3
465-
466-let cR = 4
467-
468-let cS = 7
469-
470-let cT = 8
471-
472-func cU () = "%s__restConfig"
473-
474-
475-func cV () = "%s__restAddr"
476-
477-
478-func cW (cX) = split_4C(cL(cX, cU()), cC)
479-
480-
481-func cY (cZ,da) = valueOrErrorMessage(addressFromString(cZ[da]), ("Rest cfg doesn't contain address at index " + toString(da)))
482-
483-
484-let db = addressFromStringValue(valueOrElse(getString(this, cV()), cz))
485-
486-let cZ = cW(db)
487-
488-let an = cY(cZ, cO)
489-
490-let dc = cY(cZ, cP)
491-
492-let dd = cY(cZ, cQ)
493-
494-let de = cY(cZ, cR)
495-
496-let df = cY(cZ, cS)
497-
498-let dg = cY(cZ, cT)
499-
500-let dh = 0
501-
502-let di = 1
503-
504-let dj = 2
505-
506-let dk = 3
507-
508-let dl = "wlg_assetId"
509-
510-let dm = valueOrErrorMessage(getBinary(de, dl), "WLGOLD is not issued yet")
511-
512-let dn = "acresAssetId"
513-
514-let do = valueOrErrorMessage(getBinary(dg, dn), "ACRES is not issued yet")
515-
516-let dp = 2
517-
518-func dq (cM) = ("finishBlockForAddr_" + cM)
519-
520-
521-func dr () = "resTypesProportions"
522-
523-
524-func ds (dt) = ("resTypesByContinent_" + dt)
525-
526-
527-func du (bw) = ("stakedLandsByOwner_" + bw)
528-
529-
530-func dv (bw) = ("stakedPiecesByOwner_" + bw)
531-
532-
533-func dw (dx) = {
534- let cy = dx
535- if ($isInstanceOf(cy, "String"))
441+let cD = "__"
442+
443+let cE = 1000000
444+
445+let cF = 100000000
446+
447+let cG = 25
448+
449+let cH = 100
450+
451+let cI = 225
452+
453+let cJ = 400
454+
455+let cK = 625
456+
457+let cL = [0, 1, 2, 3, 4, 5]
458+
459+func cM (cN,cO) = valueOrErrorMessage(getString(cN, cO), makeString(["mandatory ", toString(cN), ".", cO, " is not defined"], ""))
460+
461+
462+let cP = 1
463+
464+let cQ = 2
465+
466+let cR = 3
467+
468+let cS = 4
469+
470+let cT = 7
471+
472+let cU = 8
473+
474+func cV () = "%s__restConfig"
475+
476+
477+func cW () = "%s__restAddr"
478+
479+
480+func cX (cY) = split_4C(cM(cY, cV()), cD)
481+
482+
483+func cZ (da,db) = valueOrErrorMessage(addressFromString(da[db]), ("Rest cfg doesn't contain address at index " + toString(db)))
484+
485+
486+let dc = addressFromStringValue(valueOrElse(getString(this, cW()), cA))
487+
488+let da = cX(dc)
489+
490+let ao = cZ(da, cP)
491+
492+let dd = cZ(da, cQ)
493+
494+let de = cZ(da, cR)
495+
496+let df = cZ(da, cS)
497+
498+let dg = cZ(da, cT)
499+
500+let dh = cZ(da, cU)
501+
502+let di = 0
503+
504+let dj = 1
505+
506+let dk = 2
507+
508+let dl = 3
509+
510+let dm = "wlg_assetId"
511+
512+let dn = valueOrErrorMessage(getBinary(df, dm), "WLGOLD is not issued yet")
513+
514+let do = "acresAssetId"
515+
516+let dp = valueOrErrorMessage(getBinary(dh, do), "ACRES is not issued yet")
517+
518+let dq = 2
519+
520+func dr (cN) = ("finishBlockForAddr_" + cN)
521+
522+
523+func ds () = "resTypesProportions"
524+
525+
526+func dt (du) = ("resTypesByContinent_" + du)
527+
528+
529+func dv (bx) = ("stakedLandsByOwner_" + bx)
530+
531+
532+func dw (bx) = ("stakedPiecesByOwner_" + bx)
533+
534+
535+func dx (dy) = {
536+ let cz = dy
537+ if ($isInstanceOf(cz, "String"))
536538 then {
537- let dy = cy
538- dy
539+ let dz = cz
540+ dz
539541 }
540542 else throw("fail to cast into String")
541543 }
542544
543545
544-func dz (dx) = {
545- let cy = dx
546- if ($isInstanceOf(cy, "Int"))
546+func dA (dy) = {
547+ let cz = dy
548+ if ($isInstanceOf(cz, "Int"))
547549 then {
548- let dA = cy
549- dA
550+ let dB = cz
551+ dB
550552 }
551553 else throw("fail to cast into Int")
552554 }
553555
554556
555-func dB (dx) = {
556- let cy = dx
557- if ($isInstanceOf(cy, "List[Any]"))
557+func dC (dy) = {
558+ let cz = dy
559+ if ($isInstanceOf(cz, "List[Any]"))
558560 then {
559- let dC = cy
560- dC
561+ let dD = cz
562+ dD
561563 }
562564 else throw("fail to cast into List[Any]")
563565 }
564566
565567
566-func dD (dx) = {
567- let cy = dx
568- if ($isInstanceOf(cy, "Boolean"))
568+func dE (dy) = {
569+ let cz = dy
570+ if ($isInstanceOf(cz, "Boolean"))
569571 then {
570- let dy = cy
571- dy
572+ let dz = cz
573+ dz
572574 }
573575 else throw("fail to cast into Boolean")
574576 }
575577
576578
577-func dE (dF) = {
578- let cy = dF
579- if ($isInstanceOf(cy, "(String, Int)"))
579+func dF (dG) = {
580+ let cz = dG
581+ if ($isInstanceOf(cz, "(String, Int)"))
580582 then {
581- let dG = cy
582- dG
583+ let dH = cz
584+ dH
583585 }
584586 else throw("fail to cast into (String, Int)")
585587 }
586588
587589
588-func dH (dI) = {
589- let cy = dI
590- if (("S" == cy))
591- then cF
592- else if (("M" == cy))
593- then cG
594- else if (("L" == cy))
595- then cH
596- else if (("XL" == cy))
597- then cI
598- else if (("XXL" == cy))
599- then cJ
590+func dI (dJ) = {
591+ let cz = dJ
592+ if (("S" == cz))
593+ then cG
594+ else if (("M" == cz))
595+ then cH
596+ else if (("L" == cz))
597+ then cI
598+ else if (("XL" == cz))
599+ then cJ
600+ else if (("XXL" == cz))
601+ then cK
600602 else throw("Unknown land size")
601603 }
602604
603605
604-func dJ (dy) = isDefined(parseInt(dy))
605-
606-
607-func dK () = "contractsBlocked"
608-
609-
610-func dL (c) = ("lastTxIdByUser_" + c)
611-
612-
613-func dM (dF,dN) = {
614- let dO = pow(10, 0, dN, 0, 0, DOWN)
615- let dP = toString((dF % dO))
616- let dQ = drop(toString(dO), (1 + size(dP)))
617- (((toString((dF / dO)) + ".") + dQ) + dP)
618- }
619-
620-
621-func dR (dS,dT,dU) = {
622- let dV = value(blockInfoByHeight(dT))
623- let dW = sha256((value(dV.vrf) + dU))
624- (toInt(dW) % dS)
625- }
626-
627-
628-let dX = {
629- let cy = cw
630- if ((base58'2W' == cy))
606+func dK (dz) = isDefined(parseInt(dz))
607+
608+
609+func dL () = "contractsBlocked"
610+
611+
612+func dM (d) = ("lastTxIdByUser_" + d)
613+
614+
615+func dN (dG,dO) = {
616+ let dP = pow(10, 0, dO, 0, 0, DOWN)
617+ let dQ = toString((dG % dP))
618+ let dR = drop(toString(dP), (1 + size(dQ)))
619+ (((toString((dG / dP)) + ".") + dR) + dQ)
620+ }
621+
622+
623+func dS (dT,dU,dV) = {
624+ let dW = value(blockInfoByHeight(dU))
625+ let dX = sha256((value(dW.vrf) + dV))
626+ (toInt(dX) % dT)
627+ }
628+
629+
630+let dY = {
631+ let cz = cx
632+ if ((base58'2W' == cz))
631633 then addressFromStringValue("3PEktVux2RhchSN63DsDo4b4mz4QqzKSeDv")
632- else if ((base58'2T' == cy))
634+ else if ((base58'2T' == cz))
633635 then this
634636 else throw("Unknown chain")
635637 }
636638
637-let dY = {
638- let cy = cw
639- if ((base58'2W' == cy))
639+let dZ = {
640+ let cz = cx
641+ if ((base58'2W' == cz))
640642 then addressFromStringValue("3PDVuU45H7Eh5dmtNbnRNRStGwULA7NY6Hb")
641- else if ((base58'2T' == cy))
643+ else if ((base58'2T' == cz))
642644 then this
643645 else throw("Unknown chain")
644646 }
645647
646-let dZ = {
647- let cy = cw
648- if ((base58'2W' == cy))
649- then if (ct)
648+let ea = {
649+ let cz = cx
650+ if ((base58'2W' == cz))
651+ then if (cu)
650652 then base58'CWsMtTZC5BjjoL4Q1ayW4Wwb1ehGACQB6DrKyPgotKfm'
651653 else base58'6LfPuKJjLgekmncBhMg2LZyMTNVzZBccXR28ySXm9uXD'
652- else if ((base58'2T' == cy))
654+ else if ((base58'2T' == cz))
653655 then base58'6LfPuKJjLgekmncBhMg2LZyMTNVzZBccXR28ySXm9uXD'
654656 else throw("Unknown chain")
655657 }
656658
657-let ea = base64'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=='
658-
659-let eb = 300000
660-
661-let ec = 5000000
662-
663-let ed = 50
664-
665-let ee = 10000000
666-
667-let ef = {
668- let cy = cw
669- if ((base58'2W' == cy))
659+let eb = base64'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=='
660+
661+let ec = 300000
662+
663+let ed = 5000000
664+
665+let ee = 50
666+
667+let ef = 10000000
668+
669+let eg = {
670+ let cz = cx
671+ if ((base58'2W' == cz))
670672 then 252289527462
671- else if ((base58'2T' == cy))
673+ else if ((base58'2T' == cz))
672674 then 2522895274
673675 else throw("Unknown chain")
674676 }
675677
676-let eg = {
677- let cy = cw
678- if ((base58'2W' == cy))
678+let eh = {
679+ let cz = cx
680+ if ((base58'2W' == cz))
679681 then 250000000
680- else if ((base58'2T' == cy))
682+ else if ((base58'2T' == cz))
681683 then 250000000
682684 else throw("Unknown chain")
683685 }
684686
685-let eh = 2500000000
686-
687-let ei = toBigInt(5)
688-
689-let ej = toBigInt(20)
690-
691-let ek = toBigInt((20 * 20))
692-
693-let el = toBigInt(((20 * 20) * 20))
694-
695-let em = toBigInt((((20 * 20) * 20) * 20))
696-
697-let en = toBigInt(((((20 * 20) * 20) * 20) * 20))
698-
699-let eo = 500
700-
701-func ep () = "nextLandNum"
702-
703-
704-func eq (er) = ("lcn_" + er)
705-
706-
707-func es (et) = ("la_" + et)
708-
709-
710-func eu (bp,bw) = ((("ilao_" + bp) + "_") + bw)
711-
712-
713-func ev (et) = ("lo_" + et)
714-
715-
716-func ew (er) = ("duckByCustomName_" + er)
717-
718-
719-func ex (er) = ("accountByCustomName_" + er)
720-
721-
722-func ey () = "oldiesList"
723-
724-
725-let ez = 0
726-
727-let eA = 1
728-
729-let eB = 2
730-
731-let eC = 0
732-
733-let eD = 5
734-
735-let eE = 6
736-
737-let eF = 7
738-
739-func eG (et,dI) = ((aC + et) + dI)
740-
741-
742-func eH (eI,eJ) = {
743- let eK = if ((eI >= 0))
744- then (((eI + eJ) - 1) / eJ)
745- else -((((-(eI) + eJ) - 1) / eJ))
746- (eK * cE)
747- }
748-
749-
750-func eL (eM,eN) = {
751- let eO = (((((eN[0] + eN[1]) + eN[2]) + eN[3]) + eN[4]) + eN[5])
752- if ((0 >= eO))
687+let ei = 2500000000
688+
689+let ej = toBigInt(5)
690+
691+let ek = toBigInt(20)
692+
693+let el = toBigInt((20 * 20))
694+
695+let em = toBigInt(((20 * 20) * 20))
696+
697+let en = toBigInt((((20 * 20) * 20) * 20))
698+
699+let eo = toBigInt(((((20 * 20) * 20) * 20) * 20))
700+
701+let ep = 500
702+
703+func eq () = "nextLandNum"
704+
705+
706+func er (es) = ("lcn_" + es)
707+
708+
709+func et (eu) = ("la_" + eu)
710+
711+
712+func ev (bq,bx) = ((("ilao_" + bq) + "_") + bx)
713+
714+
715+func ew (eu) = ("lo_" + eu)
716+
717+
718+func ex (es) = ("duckByCustomName_" + es)
719+
720+
721+func ey (es) = ("accountByCustomName_" + es)
722+
723+
724+func ez () = "oldiesList"
725+
726+
727+let eA = 0
728+
729+let eB = 1
730+
731+let eC = 2
732+
733+let eD = 0
734+
735+let eE = 5
736+
737+let eF = 6
738+
739+let eG = 7
740+
741+func eH (eu,dJ) = ((aD + eu) + dJ)
742+
743+
744+func eI (eJ,eK) = {
745+ let eL = if ((eJ >= 0))
746+ then (((eJ + eK) - 1) / eK)
747+ else -((((-(eJ) + eK) - 1) / eK))
748+ (eL * cF)
749+ }
750+
751+
752+func eM (eN,eO) = {
753+ let eP = (((((eO[0] + eO[1]) + eO[2]) + eO[3]) + eO[4]) + eO[5])
754+ if ((0 >= eP))
753755 then throw("Zero weights sum")
754756 else {
755- let eP = fraction(eM, cD, eO)
756- func eQ (eR,eS) = (eR :+ fraction(eS, eP, cD))
757-
758- let eT = eN
759- let eU = size(eT)
760- let eV = nil
761- func eW (eX,eY) = if ((eY >= eU))
762- then eX
763- else eQ(eX, eT[eY])
764-
765- func eZ (eX,eY) = if ((eY >= eU))
766- then eX
757+ let eQ = fraction(eN, cE, eP)
758+ func eR (eS,eT) = (eS :+ fraction(eT, eQ, cE))
759+
760+ let eU = eO
761+ let eV = size(eU)
762+ let eW = nil
763+ func eX (eY,eZ) = if ((eZ >= eV))
764+ then eY
765+ else eR(eY, eU[eZ])
766+
767+ func fa (eY,eZ) = if ((eZ >= eV))
768+ then eY
767769 else throw("List size exceeds 6")
768770
769- eZ(eW(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5), 6)
770- }
771- }
772-
773-
774-func fa (eM) = {
775- let fb = split(value(getString(dr())), "_")
776- if ((size(fb) != aF))
771+ fa(eX(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5), 6)
772+ }
773+ }
774+
775+
776+func fb (eN) = {
777+ let fc = split(value(getString(ds())), "_")
778+ if ((size(fc) != aG))
777779 then throw("Wrong proportions data")
778780 else {
779- let fc = [parseIntValue(fb[0]), parseIntValue(fb[1]), parseIntValue(fb[2]), parseIntValue(fb[3]), parseIntValue(fb[4]), parseIntValue(fb[5])]
780- eL(eM, fc)
781- }
782- }
783-
784-
785-func fd (fe,ff,fg) = {
786- let fh = fa(fg)
787- func fi (eR,da) = {
788- let fj = (parseIntValue(ff[da]) - fh[da])
789- if ((0 > fj))
790- then throw(((((("Not enough material idx=" + toString(da)) + ", you have ") + ff[da]) + ", but need ") + toString(fh[da])))
791- else (eR :+ toString(fj))
781+ let fd = [parseIntValue(fc[0]), parseIntValue(fc[1]), parseIntValue(fc[2]), parseIntValue(fc[3]), parseIntValue(fc[4]), parseIntValue(fc[5])]
782+ eM(eN, fd)
783+ }
784+ }
785+
786+
787+func fe (ff,fg,fh) = {
788+ let fi = fb(fh)
789+ func fj (eS,db) = {
790+ let fk = (parseIntValue(fg[db]) - fi[db])
791+ if ((0 > fk))
792+ then throw(((((("Not enough material idx=" + toString(db)) + ", you have ") + fg[db]) + ", but need ") + toString(fi[db])))
793+ else (eS :+ toString(fk))
792794 }
793795
794- if (fe)
796+ if (ff)
795797 then {
796- let eT = cK
797- let eU = size(eT)
798- let eV = nil
799- func eW (eX,eY) = if ((eY >= eU))
800- then eX
801- else fi(eX, eT[eY])
802-
803- func eZ (eX,eY) = if ((eY >= eU))
804- then eX
798+ let eU = cL
799+ let eV = size(eU)
800+ let eW = nil
801+ func eX (eY,eZ) = if ((eZ >= eV))
802+ then eY
803+ else fj(eY, eU[eZ])
804+
805+ func fa (eY,eZ) = if ((eZ >= eV))
806+ then eY
805807 else throw("List size exceeds 6")
806808
807- eZ(eW(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5), 6)
808- }
809- else ff
810- }
811-
812-
813-func fk (fl,fm) = if ((fm == ""))
814- then $Tuple2(fl, false)
809+ fa(eX(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5), 6)
810+ }
811+ else fg
812+ }
813+
814+
815+func fl (fm,fn) = if ((fn == ""))
816+ then $Tuple2(fm, false)
815817 else {
816- func fn (eR,fo) = {
817- let fp = split(fo, ",")
818- if ((size(fp) != 2))
818+ func fo (eS,fp) = {
819+ let fq = split(fp, ",")
820+ if ((size(fq) != 2))
819821 then throw("Incorrect format, should be index,amount")
820822 else {
821- let da = parseIntValue(fp[0])
822- if (if ((0 > da))
823+ let db = parseIntValue(fq[0])
824+ if (if ((0 > db))
823825 then true
824- else (da >= size(aS)))
826+ else (db >= size(aT)))
825827 then throw("Unknown product idx")
826828 else {
827- let fq = parseIntValue(fp[1])
828- let fr = split(eR._1, (fp[0] + ":"))
829- if ((size(fr) != 2))
830- then throw((("You don't have " + aO[da]) + " equipped"))
829+ let fr = parseIntValue(fq[1])
830+ let fs = split(eS._1, (fq[0] + ":"))
831+ if ((size(fs) != 2))
832+ then throw((("You don't have " + aP[db]) + " equipped"))
831833 else {
832- let fs = fr[1]
833- let ft = if (dJ(take(drop(fs, 1), 1)))
834+ let ft = fs[1]
835+ let fu = if (dK(take(drop(ft, 1), 1)))
834836 then 2
835837 else 1
836- let fu = parseIntValue(take(fs, ft))
837- let fv = drop(fs, ft)
838- let fw = if ((fu >= fq))
839- then (fu - fq)
840- else throw(((((("You equipped " + toString(fu)) + " of ") + aO[da]) + ", but tried to use ") + toString(fq)))
841- $Tuple2(((((fr[0] + fp[0]) + ":") + toString(fw)) + fv), if (eR._2)
838+ let fv = parseIntValue(take(ft, fu))
839+ let fw = drop(ft, fu)
840+ let fx = if ((fv >= fr))
841+ then (fv - fr)
842+ else throw(((((("You equipped " + toString(fv)) + " of ") + aP[db]) + ", but tried to use ") + toString(fr)))
843+ $Tuple2(((((fs[0] + fq[0]) + ":") + toString(fx)) + fw), if (eS._2)
842844 then true
843- else if (if ((da >= 6))
844- then (8 >= da)
845+ else if (if ((db >= 6))
846+ then (8 >= db)
845847 else false)
846- then (fw == 0)
848+ then (fx == 0)
847849 else false)
848850 }
849851 }
850852 }
851853 }
852854
853- let eT = split(fm, "_")
854- let eU = size(eT)
855- let eV = $Tuple2(fl, false)
856- func eW (eX,eY) = if ((eY >= eU))
857- then eX
858- else fn(eX, eT[eY])
859-
860- func eZ (eX,eY) = if ((eY >= eU))
861- then eX
855+ let eU = split(fn, "_")
856+ let eV = size(eU)
857+ let eW = $Tuple2(fm, false)
858+ func eX (eY,eZ) = if ((eZ >= eV))
859+ then eY
860+ else fo(eY, eU[eZ])
861+
862+ func fa (eY,eZ) = if ((eZ >= eV))
863+ then eY
862864 else throw("List size exceeds 10")
863865
864- eZ(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
866+ fa(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
865867 }
866868
867869
868-func fx (fy) = {
869- let fz = if ((fy == ""))
870+func fy (fz) = {
871+ let fA = if ((fz == ""))
870872 then nil
871- else split_4C(fy, "_")
872- func fA (eR,co) = {
873- let fB = (size(eR) / 8)
874- let fu = if ((size(fz) > fB))
875- then parseIntValue(fz[fB])
873+ else split_4C(fz, "_")
874+ func fB (eS,cp) = {
875+ let fC = (size(eS) / 8)
876+ let fv = if ((size(fA) > fC))
877+ then parseIntValue(fA[fC])
876878 else 0
877- (eR + toBytes(fu))
879+ (eS + toBytes(fv))
878880 }
879881
880- let eT = aS
881- let eU = size(eT)
882- let eV = base58''
883- func eW (eX,eY) = if ((eY >= eU))
884- then eX
885- else fA(eX, eT[eY])
886-
887- func eZ (eX,eY) = if ((eY >= eU))
888- then eX
882+ let eU = aT
883+ let eV = size(eU)
884+ let eW = base58''
885+ func eX (eY,eZ) = if ((eZ >= eV))
886+ then eY
887+ else fB(eY, eU[eZ])
888+
889+ func fa (eY,eZ) = if ((eZ >= eV))
890+ then eY
889891 else throw("List size exceeds 50")
890892
891- eZ(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eV, 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)
892- }
893-
894-
895-func fC (fD) = {
896- func fE (eR,co) = {
897- let fB = size(eR)
898- let fF = take(drop(fD, (8 * fB)), 8)
899- (eR :+ toString(toInt(fF)))
893+ fa(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eW, 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)
894+ }
895+
896+
897+func fD (fE) = {
898+ func fF (eS,cp) = {
899+ let fC = size(eS)
900+ let fG = take(drop(fE, (8 * fC)), 8)
901+ (eS :+ toString(toInt(fG)))
900902 }
901903
902904 makeString_2C({
903- let eT = aS
904- let eU = size(eT)
905- let eV = nil
906- func eW (eX,eY) = if ((eY >= eU))
907- then eX
908- else fE(eX, eT[eY])
909-
910- func eZ (eX,eY) = if ((eY >= eU))
911- then eX
905+ let eU = aT
906+ let eV = size(eU)
907+ let eW = nil
908+ func eX (eY,eZ) = if ((eZ >= eV))
909+ then eY
910+ else fF(eY, eU[eZ])
911+
912+ func fa (eY,eZ) = if ((eZ >= eV))
913+ then eY
912914 else throw("List size exceeds 50")
913915
914- eZ(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eV, 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)
916+ fa(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eW, 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)
915917 }, "_")
916918 }
917919
918920
919-func fG (fH,fI) = {
920- func fJ (eR,fB) = {
921- let fK = if ((size(fH) > (7 + fB)))
922- then fH[(7 + fB)]
921+func fH (fI,fJ) = {
922+ func fK (eS,fC) = {
923+ let fL = if ((size(fI) > (7 + fC)))
924+ then fI[(7 + fC)]
923925 else 0
924- if ((parseIntValue(fI[fB]) > (fH[fB] + fK)))
925- then throw(("Requirement not satisfied: " + j[fB]))
926+ if ((parseIntValue(fJ[fC]) > (fI[fC] + fL)))
927+ then throw(("Requirement not satisfied: " + k[fC]))
926928 else true
927929 }
928930
929- let eT = [0, 1, 2, 3, 4, 5, 6]
930- let eU = size(eT)
931- let eV = false
932- func eW (eX,eY) = if ((eY >= eU))
933- then eX
934- else fJ(eX, eT[eY])
935-
936- func eZ (eX,eY) = if ((eY >= eU))
937- then eX
931+ let eU = [0, 1, 2, 3, 4, 5, 6]
932+ let eV = size(eU)
933+ let eW = false
934+ func eX (eY,eZ) = if ((eZ >= eV))
935+ then eY
936+ else fK(eY, eU[eZ])
937+
938+ func fa (eY,eZ) = if ((eZ >= eV))
939+ then eY
938940 else throw("List size exceeds 7")
939941
940- eZ(eW(eW(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5), 6), 7)
941- }
942-
943-
944-func fL (fM,fz,fN,fH,fO,fP) = {
945- let fp = split(fM, ":")
946- if ((size(fp) != 2))
942+ fa(eX(eX(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5), 6), 7)
943+ }
944+
945+
946+func fM (fN,fA,fO,fI,fP,fQ) = {
947+ let fq = split(fN, ":")
948+ if ((size(fq) != 2))
947949 then throw("Incorrect format, should be index:amount")
948- else if (if (!(fN))
949- then (size(fp[0]) != 2)
950+ else if (if (!(fO))
951+ then (size(fq[0]) != 2)
950952 else false)
951953 then throw("Product idx should be 2 digits, zero padded")
952954 else {
953- let fQ = parseIntValue(fp[0])
954- let fR = parseIntValue(fp[1])
955- if (!(containsElement(aR, fQ)))
956- then throw((("Product '" + aO[fQ]) + "' cannot be used for land defense"))
957- else if ((0 > fR))
955+ let fR = parseIntValue(fq[0])
956+ let fS = parseIntValue(fq[1])
957+ if (!(containsElement(aS, fR)))
958+ then throw((("Product '" + aP[fR]) + "' cannot be used for land defense"))
959+ else if ((0 > fS))
958960 then throw("Count can't be negative")
959- else if ((fR > t))
960- then throw(((("Can't put more than " + toString(t)) + " of ") + aO[fQ]))
961- else if ((fR == 0))
962- then $Tuple3(fz, fO, fP)
961+ else if ((fS > u))
962+ then throw(((("Can't put more than " + toString(u)) + " of ") + aP[fR]))
963+ else if ((fS == 0))
964+ then $Tuple3(fA, fP, fQ)
963965 else {
964- let fS = take(fz, (8 * fQ))
965- let fu = toInt(take(drop(fz, (8 * fQ)), 8))
966- let fv = drop(fz, (8 * (fQ + 1)))
967- let co = split(aS[fQ], "_")
968- if (if (!(fN))
969- then (fR > fu)
966+ let fT = take(fA, (8 * fR))
967+ let fv = toInt(take(drop(fA, (8 * fR)), 8))
968+ let fw = drop(fA, (8 * (fR + 1)))
969+ let cp = split(aT[fR], "_")
970+ if (if (!(fO))
971+ then (fS > fv)
970972 else false)
971- then throw(((((("You have " + toString(fu)) + " of ") + aO[fQ]) + ", but tried to use ") + toString(fR)))
973+ then throw(((((("You have " + toString(fv)) + " of ") + aP[fR]) + ", but tried to use ") + toString(fS)))
972974 else {
973- let fw = if (if (!(fN))
974- then fG(fH, split(co[aV], ","))
975+ let fx = if (if (!(fO))
976+ then fH(fI, split(cp[aW], ","))
975977 else false)
976- then (fu - fR)
977- else (fu + fR)
978- let fT = (eH(fw, aX) - eH(fu, aX))
979- $Tuple3(((fS + toBytes(fw)) + fv), (fO + fT), (fP - fT))
978+ then (fv - fS)
979+ else (fv + fS)
980+ let fU = (eI(fx, aY) - eI(fv, aY))
981+ $Tuple3(((fT + toBytes(fx)) + fw), (fP + fU), (fQ - fU))
980982 }
981983 }
982984 }
983985 }
984986
985987
986-func fU (fM,fz,fN,fV,fW,fX,fH) = {
987- let fp = split(fM, ":")
988- if ((size(fp) != 2))
988+func fV (fN,fA,fO,fW,fX,fY,fI) = {
989+ let fq = split(fN, ":")
990+ if ((size(fq) != 2))
989991 then throw("Incorrect format, should be index:amount")
990- else if (if (!(fN))
991- then (size(fp[0]) != 2)
992+ else if (if (!(fO))
993+ then (size(fq[0]) != 2)
992994 else false)
993995 then throw("Product idx should be 2 digits, zero padded")
994996 else {
995- let fQ = parseIntValue(fp[0])
996- let fR = parseIntValue(fp[1])
997- if (if ((0 > fQ))
997+ let fR = parseIntValue(fq[0])
998+ let fS = parseIntValue(fq[1])
999+ if (if ((0 > fR))
9981000 then true
999- else (fQ >= size(aS)))
1001+ else (fR >= size(aT)))
10001002 then throw("Unknown product idx")
1001- else if ((0 > fR))
1003+ else if ((0 > fS))
10021004 then throw("Count can't be negative")
1003- else if ((fR > t))
1004- then throw(((("Can't put more than " + toString(t)) + " of ") + aO[fQ]))
1005- else if ((fR == 0))
1006- then $Tuple2(fz, false)
1005+ else if ((fS > u))
1006+ then throw(((("Can't put more than " + toString(u)) + " of ") + aP[fR]))
1007+ else if ((fS == 0))
1008+ then $Tuple2(fA, false)
10071009 else {
1008- let fS = take(fz, (8 * fQ))
1009- let fu = toInt(take(drop(fz, (8 * fQ)), 8))
1010- let fv = drop(fz, (8 * (fQ + 1)))
1011- let co = split(aS[fQ], "_")
1012- if (if (!(fN))
1013- then (fR > fu)
1010+ let fT = take(fA, (8 * fR))
1011+ let fv = toInt(take(drop(fA, (8 * fR)), 8))
1012+ let fw = drop(fA, (8 * (fR + 1)))
1013+ let cp = split(aT[fR], "_")
1014+ if (if (!(fO))
1015+ then (fS > fv)
10141016 else false)
1015- then throw(((((("You have " + toString(fu)) + " of ") + aO[fQ]) + ", but tried to use ") + toString(fR)))
1017+ then throw(((((("You have " + toString(fv)) + " of ") + aP[fR]) + ", but tried to use ") + toString(fS)))
10161018 else {
1017- let fY = if (if (!(fN))
1018- then fG(fH, split(co[aV], ","))
1019+ let fZ = if (if (!(fO))
1020+ then fH(fI, split(cp[aW], ","))
10191021 else false)
10201022 then {
1021- let fZ = co[aW]
1022- if ((fZ == ""))
1023+ let ga = cp[aX]
1024+ if ((ga == ""))
10231025 then throw("Item cannot be equipped")
10241026 else {
1025- let ga = parseIntValue(fZ)
1026- let gb = (ga / 100)
1027- if ((fV != gb))
1027+ let gb = parseIntValue(ga)
1028+ let gc = (gb / 100)
1029+ if ((fW != gc))
10281030 then throw("Segment incompatible")
10291031 else {
1030- let gc = ((ga % 100) / 10)
1031- if ((fW != gc))
1032+ let gd = ((gb % 100) / 10)
1033+ if ((fX != gd))
10321034 then throw("Slot incompatible")
10331035 else {
1034- let gd = (ga % 10)
1035- if (if ((fX != 0))
1036- then (gd > 1)
1036+ let ge = (gb % 10)
1037+ if (if ((fY != 0))
1038+ then (ge > 1)
10371039 else false)
10381040 then throw("Big items should occupy slot 0")
1039- else (gd > 1)
1041+ else (ge > 1)
10401042 }
10411043 }
10421044 }
10431045 }
10441046 else false
1045- $Tuple2(((fS + toBytes((fu + (if (fN)
1046- then fR
1047- else -(fR))))) + fv), fY)
1047+ $Tuple2(((fT + toBytes((fv + (if (fO)
1048+ then fS
1049+ else -(fS))))) + fw), fZ)
10481050 }
10491051 }
10501052 }
10511053 }
10521054
10531055
1054-func ge (gf,gg,fN,fV,fW,gh) = if ((gf != ""))
1056+func gf (gg,gh,fO,fW,fX,gi) = if ((gg != ""))
10551057 then {
1056- let gi = split(gf, ",")
1057- if ((size(gi) > s))
1058+ let gj = split(gg, ",")
1059+ if ((size(gj) > t))
10581060 then throw("Wrong slots format")
10591061 else {
1060- let gj = gi[0]
1061- let gk = if ((size(gi) > 1))
1062- then gi[1]
1062+ let gk = gj[0]
1063+ let gl = if ((size(gj) > 1))
1064+ then gj[1]
10631065 else ""
1064- if (if ((gj == ""))
1065- then (gk == "")
1066+ if (if ((gk == ""))
1067+ then (gl == "")
10661068 else false)
1067- then gg
1069+ then gh
10681070 else {
1069- let gl = if ((gj != ""))
1070- then fU(gj, gg, fN, fV, fW, 0, gh)
1071- else $Tuple2(gg, false)
1072- if ((gk != ""))
1073- then if (gl._2)
1071+ let gm = if ((gk != ""))
1072+ then fV(gk, gh, fO, fW, fX, 0, gi)
1073+ else $Tuple2(gh, false)
1074+ if ((gl != ""))
1075+ then if (gm._2)
10741076 then throw("Big item already occupies slot")
1075- else fU(gk, gl._1, fN, fV, fW, 1, gh)._1
1076- else gl._1
1077+ else fV(gl, gm._1, fO, fW, fX, 1, gi)._1
1078+ else gm._1
10771079 }
10781080 }
10791081 }
1080- else gg
1081-
1082-
1083-func gm (gn,go,fN,gh) = {
1084- func fV (eR,gp) = {
1085- let fB = eR._1
1086- let fW = split(gp, ";")
1087- if ((size(fW) != r))
1082+ else gh
1083+
1084+
1085+func gn (go,gp,fO,gi) = {
1086+ func fW (eS,gq) = {
1087+ let fC = eS._1
1088+ let fX = split(gq, ";")
1089+ if ((size(fX) != s))
10881090 then throw("Wrong segment format")
10891091 else {
1090- let gq = fW[0]
1091- let gr = fW[1]
1092- if (if ((gq == ""))
1093- then (gr == "")
1092+ let gr = fX[0]
1093+ let gs = fX[1]
1094+ if (if ((gr == ""))
1095+ then (gs == "")
10941096 else false)
1095- then $Tuple2((fB + 1), eR._2)
1097+ then $Tuple2((fC + 1), eS._2)
10961098 else {
1097- let gs = ge(gq, eR._2, fN, fB, 0, gh)
1098- $Tuple2((fB + 1), ge(gr, gs, fN, fB, 1, gh))
1099+ let gt = gf(gr, eS._2, fO, fC, 0, gi)
1100+ $Tuple2((fC + 1), gf(gs, gt, fO, fC, 1, gi))
10991101 }
11001102 }
11011103 }
11021104
1103-( let eT = gn
1104- let eU = size(eT)
1105- let eV = $Tuple2(0, go)
1106- func eW (eX,eY) = if ((eY >= eU))
1107- then eX
1108- else fV(eX, eT[eY])
1109-
1110- func eZ (eX,eY) = if ((eY >= eU))
1111- then eX
1105+( let eU = go
1106+ let eV = size(eU)
1107+ let eW = $Tuple2(0, gp)
1108+ func eX (eY,eZ) = if ((eZ >= eV))
1109+ then eY
1110+ else fW(eY, eU[eZ])
1111+
1112+ func fa (eY,eZ) = if ((eZ >= eV))
1113+ then eY
11121114 else throw("List size exceeds 6")
11131115
1114- eZ(eW(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5), 6))._2
1115- }
1116-
1117-
1118-func gt (gn,go,fO,fP,fN,fH) = if ((3 > size(gn)))
1116+ fa(eX(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5), 6))._2
1117+ }
1118+
1119+
1120+func gu (go,gp,fP,fQ,fO,fI) = if ((3 > size(go)))
11191121 then throw("At least duck, mines and traps parts are required")
11201122 else {
1121- func fV (eR,gp) = {
1122- let fB = eR._1
1123- if ((fB == 0))
1124- then $Tuple4((fB + 1), eR._2, eR._3, eR._4)
1123+ func fW (eS,gq) = {
1124+ let fC = eS._1
1125+ if ((fC == 0))
1126+ then $Tuple4((fC + 1), eS._2, eS._3, eS._4)
11251127 else {
1126- let gu = fL(gp, eR._2, fN, fH, eR._3, eR._4)
1127- $Tuple4((fB + 1), gu._1, gu._2, gu._3)
1128+ let gv = fM(gq, eS._2, fO, fI, eS._3, eS._4)
1129+ $Tuple4((fC + 1), gv._1, gv._2, gv._3)
11281130 }
11291131 }
11301132
1131- let gv = {
1132- let eT = gn
1133- let eU = size(eT)
1134- let eV = $Tuple4(0, go, fO, fP)
1135- func eW (eX,eY) = if ((eY >= eU))
1136- then eX
1137- else fV(eX, eT[eY])
1138-
1139- func eZ (eX,eY) = if ((eY >= eU))
1140- then eX
1133+ let gw = {
1134+ let eU = go
1135+ let eV = size(eU)
1136+ let eW = $Tuple4(0, gp, fP, fQ)
1137+ func eX (eY,eZ) = if ((eZ >= eV))
1138+ then eY
1139+ else fW(eY, eU[eZ])
1140+
1141+ func fa (eY,eZ) = if ((eZ >= eV))
1142+ then eY
11411143 else throw("List size exceeds 10")
11421144
1143- eZ(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
1144- }
1145- $Tuple3(gv._2, gv._3, gv._4)
1145+ fa(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
1146+ }
1147+ $Tuple3(gw._2, gw._3, gw._4)
11461148 }
11471149
11481150
1149-func gw (A) = {
1150- let gx = F(A)
1151- let gy = split(valueOrElse(getString(gx), ",;,_,;,_,;,_,;,_,;,_,;,"), "_")
1152- let gz = gm(gy, ea, true, nil)
1153- let gA = split(gy[p], ";")[1]
1154- let ao = if ((gA == ""))
1151+func gx (B) = {
1152+ let gy = G(B)
1153+ let gz = split(valueOrElse(getString(gy), ",;,_,;,_,;,_,;,_,;,_,;,"), "_")
1154+ let gA = gn(gz, eb, true, nil)
1155+ let gB = split(gz[q], ";")[1]
1156+ let ap = if ((gB == ""))
11551157 then 0
11561158 else {
1157- let gB = split(gA, ",")[0]
1158- if ((gB == ""))
1159+ let gC = split(gB, ",")[0]
1160+ if ((gC == ""))
11591161 then 0
11601162 else {
1161- let fM = split(gB, ":")
1162- let da = fM[0]
1163- let gC = fM[1]
1164- if (if (if (if (if ((da == "06"))
1163+ let fN = split(gC, ":")
1164+ let db = fN[0]
1165+ let gD = fN[1]
1166+ if (if (if (if (if ((db == "06"))
11651167 then true
1166- else (da == "07"))
1168+ else (db == "07"))
11671169 then true
1168- else (da == "08"))
1169- then (gC != "")
1170+ else (db == "08"))
1171+ then (gD != "")
11701172 else false)
1171- then (parseIntValue(gC) > 0)
1173+ then (parseIntValue(gD) > 0)
11721174 else false)
1173- then parseIntValue(split(aS[parseIntValue(da)], "_")[aU])
1175+ then parseIntValue(split(aT[parseIntValue(db)], "_")[aV])
11741176 else 0
11751177 }
11761178 }
1177- let gh = am(this, A, ao, true)
1178- let gD = gm(gy, gz, false, gh)
1179- (gD == gD)
1180- }
1181-
1182-
1183-func gE (gF,gG,gH,gI) = if ((size(gF) != aF))
1179+ let gi = an(this, B, ap, true)
1180+ let gE = gn(gz, gA, false, gi)
1181+ (gE == gE)
1182+ }
1183+
1184+
1185+func gF (gG,gH,gI,gJ) = if ((size(gG) != aG))
11841186 then throw("Wrong proportions data")
11851187 else {
1186- func gJ (eR,gK) = {
1187- let fj = (parseIntValue(gF[gK]) + ((gI * gG[gK]) * gH))
1188- if ((0 > fj))
1189- then throw(((((((("Panic! Pieces of type=" + toString(gK)) + ", sign=") + toString(gI)) + ", terrainCounts[i]=") + toString(gG[gK])) + ", landSizeIndex=") + toString(gH)))
1190- else (eR :+ toString(fj))
1191- }
1192-
1193- let eT = cK
1194- let eU = size(eT)
1195- let eV = nil
1196- func eW (eX,eY) = if ((eY >= eU))
1197- then eX
1198- else gJ(eX, eT[eY])
1199-
1200- func eZ (eX,eY) = if ((eY >= eU))
1201- then eX
1188+ func gK (eS,gL) = {
1189+ let fk = (parseIntValue(gG[gL]) + ((gJ * gH[gL]) * gI))
1190+ if ((0 > fk))
1191+ then throw(((((((("Panic! Pieces of type=" + toString(gL)) + ", sign=") + toString(gJ)) + ", terrainCounts[i]=") + toString(gH[gL])) + ", landSizeIndex=") + toString(gI)))
1192+ else (eS :+ toString(fk))
1193+ }
1194+
1195+ let eU = cL
1196+ let eV = size(eU)
1197+ let eW = nil
1198+ func eX (eY,eZ) = if ((eZ >= eV))
1199+ then eY
1200+ else gK(eY, eU[eZ])
1201+
1202+ func fa (eY,eZ) = if ((eZ >= eV))
1203+ then eY
12021204 else throw("List size exceeds 6")
12031205
1204- eZ(eW(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5), 6)
1206+ fa(eX(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5), 6)
12051207 }
12061208
12071209
1208-func gL (gG,gH,gI) = {
1209- let gF = split(valueOrElse(getString(dr()), "0_0_0_0_0_0"), "_")
1210- makeString(gE(gF, gG, gH, gI), "_")
1211- }
1212-
1213-
1214-func gM (gN) = [(size(split(gN, "A")) - 1), (size(split(gN, "B")) - 1), (size(split(gN, "C")) - 1), (size(split(gN, "D")) - 1), (size(split(gN, "E")) - 1), (size(split(gN, "F")) - 1)]
1215-
1216-
1217-func gO (gP,gG,gQ,gH,gR) = {
1218- func gS (eR,gK) = {
1219- let gT = ((fraction(gQ, gR, a) * gG[gK]) * gH)
1220- (eR :+ toString((parseIntValue(gP[gK]) + gT)))
1210+func gM (gH,gI,gJ) = {
1211+ let gG = split(valueOrElse(getString(ds()), "0_0_0_0_0_0"), "_")
1212+ makeString(gF(gG, gH, gI, gJ), "_")
1213+ }
1214+
1215+
1216+func gN (gO) = [(size(split(gO, "A")) - 1), (size(split(gO, "B")) - 1), (size(split(gO, "C")) - 1), (size(split(gO, "D")) - 1), (size(split(gO, "E")) - 1), (size(split(gO, "F")) - 1)]
1217+
1218+
1219+func gP (gQ,gH,gR,gI,gS) = {
1220+ func gT (eS,gL) = {
1221+ let gU = ((fraction(gR, gS, a) * gH[gL]) * gI)
1222+ (eS :+ toString((parseIntValue(gQ[gL]) + gU)))
12211223 }
12221224
1223- let fc = {
1224- let eT = cK
1225- let eU = size(eT)
1226- let eV = nil
1227- func eW (eX,eY) = if ((eY >= eU))
1228- then eX
1229- else gS(eX, eT[eY])
1230-
1231- func eZ (eX,eY) = if ((eY >= eU))
1232- then eX
1225+ let fd = {
1226+ let eU = cL
1227+ let eV = size(eU)
1228+ let eW = nil
1229+ func eX (eY,eZ) = if ((eZ >= eV))
1230+ then eY
1231+ else gT(eY, eU[eZ])
1232+
1233+ func fa (eY,eZ) = if ((eZ >= eV))
1234+ then eY
12331235 else throw("List size exceeds 6")
12341236
1235- eZ(eW(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5), 6)
1237+ fa(eX(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5), 6)
12361238 }
1237- makeString(fc, "_")
1238- }
1239-
1240-
1241-func gU (gG,gQ,gH,gR) = {
1242- func gS (eR,gK) = {
1243- let gT = ((fraction(gQ, gR, a) * gG[gK]) * gH)
1244- $Tuple2((eR._1 :+ gT), (eR._2 + gT))
1239+ makeString(fd, "_")
1240+ }
1241+
1242+
1243+func gV (gH,gR,gI,gS) = {
1244+ func gT (eS,gL) = {
1245+ let gU = ((fraction(gR, gS, a) * gH[gL]) * gI)
1246+ $Tuple2((eS._1 :+ gU), (eS._2 + gU))
12451247 }
12461248
1247- let eT = cK
1248- let eU = size(eT)
1249- let eV = $Tuple2(nil, 0)
1250- func eW (eX,eY) = if ((eY >= eU))
1251- then eX
1252- else gS(eX, eT[eY])
1253-
1254- func eZ (eX,eY) = if ((eY >= eU))
1255- then eX
1249+ let eU = cL
1250+ let eV = size(eU)
1251+ let eW = $Tuple2(nil, 0)
1252+ func eX (eY,eZ) = if ((eZ >= eV))
1253+ then eY
1254+ else gT(eY, eU[eZ])
1255+
1256+ func fa (eY,eZ) = if ((eZ >= eV))
1257+ then eY
12561258 else throw("List size exceeds 6")
12571259
1258- eZ(eW(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5), 6)
1259- }
1260-
1261-
1262-func gV (gW,gX,gY,gZ) = {
1263- let ha = gY._1
1264- let hb = gY._2
1265- if ((hb == 0))
1266- then $Tuple2(makeString(gW, "_"), makeString(gX, "_"))
1267- else if ((gZ >= hb))
1260+ fa(eX(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5), 6)
1261+ }
1262+
1263+
1264+func gW (gX,gY,gZ,ha) = {
1265+ let hb = gZ._1
1266+ let hc = gZ._2
1267+ if ((hc == 0))
1268+ then $Tuple2(makeString(gX, "_"), makeString(gY, "_"))
1269+ else if ((ha >= hc))
12681270 then {
1269- func hc (eR,gK) = (eR :+ toString((parseIntValue(gW[gK]) + ha[gK])))
1270-
1271- let fc = {
1272- let eT = cK
1273- let eU = size(eT)
1274- let eV = nil
1275- func eW (eX,eY) = if ((eY >= eU))
1276- then eX
1277- else hc(eX, eT[eY])
1278-
1279- func eZ (eX,eY) = if ((eY >= eU))
1280- then eX
1271+ func hd (eS,gL) = (eS :+ toString((parseIntValue(gX[gL]) + hb[gL])))
1272+
1273+ let fd = {
1274+ let eU = cL
1275+ let eV = size(eU)
1276+ let eW = nil
1277+ func eX (eY,eZ) = if ((eZ >= eV))
1278+ then eY
1279+ else hd(eY, eU[eZ])
1280+
1281+ func fa (eY,eZ) = if ((eZ >= eV))
1282+ then eY
12811283 else throw("List size exceeds 6")
12821284
1283- eZ(eW(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5), 6)
1285+ fa(eX(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5), 6)
12841286 }
1285- $Tuple2(makeString(fc, "_"), makeString(gX, "_"))
1287+ $Tuple2(makeString(fd, "_"), makeString(gY, "_"))
12861288 }
12871289 else {
1288- func hd (eR,gK) = {
1289- let he = fraction(ha[gK], gZ, hb)
1290- $Tuple2((eR._1 :+ toString((parseIntValue(gW[gK]) + he))), (eR._2 :+ toString(((parseIntValue(gX[gK]) + ha[gK]) - he))))
1290+ func he (eS,gL) = {
1291+ let hf = fraction(hb[gL], ha, hc)
1292+ $Tuple2((eS._1 :+ toString((parseIntValue(gX[gL]) + hf))), (eS._2 :+ toString(((parseIntValue(gY[gL]) + hb[gL]) - hf))))
12911293 }
12921294
1293- let fc = {
1294- let eT = cK
1295- let eU = size(eT)
1296- let eV = $Tuple2(nil, nil)
1297- func eW (eX,eY) = if ((eY >= eU))
1298- then eX
1299- else hd(eX, eT[eY])
1300-
1301- func eZ (eX,eY) = if ((eY >= eU))
1302- then eX
1295+ let fd = {
1296+ let eU = cL
1297+ let eV = size(eU)
1298+ let eW = $Tuple2(nil, nil)
1299+ func eX (eY,eZ) = if ((eZ >= eV))
1300+ then eY
1301+ else he(eY, eU[eZ])
1302+
1303+ func fa (eY,eZ) = if ((eZ >= eV))
1304+ then eY
13031305 else throw("List size exceeds 6")
13041306
1305- eZ(eW(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5), 6)
1307+ fa(eX(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5), 6)
13061308 }
1307- $Tuple2(makeString(fc._1, "_"), makeString(fc._2, "_"))
1309+ $Tuple2(makeString(fd._1, "_"), makeString(fd._2, "_"))
13081310 }
13091311 }
13101312
13111313
1312-func hf (hg) = if ((hg >= toBigInt(0)))
1313- then hg
1314- else -(hg)
1315-
1316-
1317-let hh = [[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]]
1318-
1319-func hi (dA,hj) = {
1320- let hk = toInt((dA % ej))
1321- let hl = if ((hj[0] > hk))
1314+func hg (hh) = if ((hh >= toBigInt(0)))
1315+ then hh
1316+ else -(hh)
1317+
1318+
1319+let hi = [[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]]
1320+
1321+func hj (dB,hk) = {
1322+ let hl = toInt((dB % ek))
1323+ let hm = if ((hk[0] > hl))
13221324 then "A"
1323- else if ((hj[1] > hk))
1325+ else if ((hk[1] > hl))
13241326 then "B"
1325- else if ((hj[2] > hk))
1327+ else if ((hk[2] > hl))
13261328 then "C"
1327- else if ((hj[3] > hk))
1329+ else if ((hk[3] > hl))
13281330 then "D"
1329- else if ((hj[4] > hk))
1331+ else if ((hk[4] > hl))
13301332 then "E"
13311333 else "F"
1332- hl
1333- }
1334-
1335-
1336-func hm (hn,ho) = {
1337- let hp = hh[ho]
1338- func hq (eR,eS) = $Tuple2((((((eR._1 + hi(eR._2, hp)) + hi((eR._2 / ej), hp)) + hi((eR._2 / ek), hp)) + hi((eR._2 / el), hp)) + hi((eR._2 / em), hp)), (eR._2 / en))
1339-
1340- let gv = {
1341- let eT = [1, 2, 3, 4, 5]
1342- let eU = size(eT)
1343- let eV = $Tuple2("", (hn / ei))
1344- func eW (eX,eY) = if ((eY >= eU))
1345- then eX
1346- else hq(eX, eT[eY])
1347-
1348- func eZ (eX,eY) = if ((eY >= eU))
1349- then eX
1334+ hm
1335+ }
1336+
1337+
1338+func hn (ho,hp) = {
1339+ let hq = hi[hp]
1340+ func hr (eS,eT) = $Tuple2((((((eS._1 + hj(eS._2, hq)) + hj((eS._2 / ek), hq)) + hj((eS._2 / el), hq)) + hj((eS._2 / em), hq)) + hj((eS._2 / en), hq)), (eS._2 / eo))
1341+
1342+ let gw = {
1343+ let eU = [1, 2, 3, 4, 5]
1344+ let eV = size(eU)
1345+ let eW = $Tuple2("", (ho / ej))
1346+ func eX (eY,eZ) = if ((eZ >= eV))
1347+ then eY
1348+ else hr(eY, eU[eZ])
1349+
1350+ func fa (eY,eZ) = if ((eZ >= eV))
1351+ then eY
13501352 else throw("List size exceeds 5")
13511353
1352- eZ(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5)
1354+ fa(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5)
13531355 }
1354- gv._1
1355- }
1356-
1357-
1358-let hr = [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]
1359-
1360-let hs = ["A", "B", "C", "D", "E", "F"]
1361-
1362-func ht (hu,gH) = {
1363- func hv (eR,dy) = {
1364- let fB = eR._2
1365- let hw = parseIntValue(dy)
1366- let hg = if ((hw == 0))
1356+ gw._1
1357+ }
1358+
1359+
1360+let hs = [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]
1361+
1362+let ht = ["A", "B", "C", "D", "E", "F"]
1363+
1364+func hu (hv,gI) = {
1365+ func hw (eS,dz) = {
1366+ let fC = eS._2
1367+ let hx = parseIntValue(dz)
1368+ let hh = if ((hx == 0))
13671369 then 0
1368- else if ((hw >= (4 * gH)))
1369- then (hw / gH)
1370- else if ((hw > (3 * gH)))
1370+ else if ((hx >= (4 * gI)))
1371+ then (hx / gI)
1372+ else if ((hx > (3 * gI)))
13711373 then 3
1372- else (((hw - 1) / gH) + 1)
1373- $Tuple3((eR._1 :+ hg), (eR._2 + 1), (eR._3 + hg))
1374+ else (((hx - 1) / gI) + 1)
1375+ $Tuple3((eS._1 :+ hh), (eS._2 + 1), (eS._3 + hh))
13741376 }
13751377
1376- let gv = {
1377- let eT = hu
1378- let eU = size(eT)
1379- let eV = $Tuple3(nil, 0, 0)
1380- func eW (eX,eY) = if ((eY >= eU))
1381- then eX
1382- else hv(eX, eT[eY])
1383-
1384- func eZ (eX,eY) = if ((eY >= eU))
1385- then eX
1378+ let gw = {
1379+ let eU = hv
1380+ let eV = size(eU)
1381+ let eW = $Tuple3(nil, 0, 0)
1382+ func eX (eY,eZ) = if ((eZ >= eV))
1383+ then eY
1384+ else hw(eY, eU[eZ])
1385+
1386+ func fa (eY,eZ) = if ((eZ >= eV))
1387+ then eY
13861388 else throw("List size exceeds 6")
13871389
1388- eZ(eW(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5), 6)
1390+ fa(eX(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5), 6)
13891391 }
1390- let hx = gv._1
1391- let hy = value(indexOf(hx, max(hx)))
1392- let hz = (gv._3 - 25)
1393- func hA (eR,da) = {
1394- let dF = if ((da == hy))
1395- then (hx[da] - hz)
1396- else hx[da]
1397- let dQ = if ((dF == 0))
1392+ let hy = gw._1
1393+ let hz = value(indexOf(hy, max(hy)))
1394+ let hA = (gw._3 - 25)
1395+ func hB (eS,db) = {
1396+ let dG = if ((db == hz))
1397+ then (hy[db] - hA)
1398+ else hy[db]
1399+ let dR = if ((dG == 0))
13981400 then nil
1399- else split(drop(toString(pow(10, 0, dF, 0, 0, DOWN)), 1), "")
1400- let ga = hs[da]
1401- func hB (hC,hD) = (hC :+ ga)
1402-
1403- let hE = {
1404- let eT = dQ
1405- let eU = size(eT)
1406- let eV = nil
1407- func hF (eX,eY) = if ((eY >= eU))
1408- then eX
1409- else hB(eX, eT[eY])
1410-
1411- func hG (eX,eY) = if ((eY >= eU))
1412- then eX
1401+ else split(drop(toString(pow(10, 0, dG, 0, 0, DOWN)), 1), "")
1402+ let gb = ht[db]
1403+ func hC (hD,hE) = (hD :+ gb)
1404+
1405+ let hF = {
1406+ let eU = dR
1407+ let eV = size(eU)
1408+ let eW = nil
1409+ func hG (eY,eZ) = if ((eZ >= eV))
1410+ then eY
1411+ else hC(eY, eU[eZ])
1412+
1413+ func hH (eY,eZ) = if ((eZ >= eV))
1414+ then eY
14131415 else throw("List size exceeds 25")
14141416
1415- 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(eV, 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)
1416- }
1417- (eR ++ hE)
1417+ hH(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(eW, 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)
1418+ }
1419+ (eS ++ hF)
14181420 }
14191421
1420- let fc = {
1421- let eT = cK
1422- let eU = size(eT)
1423- let eV = nil
1424- func hF (eX,eY) = if ((eY >= eU))
1425- then eX
1426- else hA(eX, eT[eY])
1427-
1428- func hG (eX,eY) = if ((eY >= eU))
1429- then eX
1422+ let fd = {
1423+ let eU = cL
1424+ let eV = size(eU)
1425+ let eW = nil
1426+ func hG (eY,eZ) = if ((eZ >= eV))
1427+ then eY
1428+ else hB(eY, eU[eZ])
1429+
1430+ func hH (eY,eZ) = if ((eZ >= eV))
1431+ then eY
14301432 else throw("List size exceeds 6")
14311433
1432- hG(hF(hF(hF(hF(hF(hF(eV, 0), 1), 2), 3), 4), 5), 6)
1434+ hH(hG(hG(hG(hG(hG(hG(eW, 0), 1), 2), 3), 4), 5), 6)
14331435 }
1434- func hH (eR,fB) = (eR + fc[fB])
1435-
1436- let eT = hr
1437- let eU = size(eT)
1438- let eV = ""
1439- func hI (eX,eY) = if ((eY >= eU))
1440- then eX
1441- else hH(eX, eT[eY])
1442-
1443- func hJ (eX,eY) = if ((eY >= eU))
1444- then eX
1436+ func hI (eS,fC) = (eS + fd[fC])
1437+
1438+ let eU = hs
1439+ let eV = size(eU)
1440+ let eW = ""
1441+ func hJ (eY,eZ) = if ((eZ >= eV))
1442+ then eY
1443+ else hI(eY, eU[eZ])
1444+
1445+ func hK (eY,eZ) = if ((eZ >= eV))
1446+ then eY
14451447 else throw("List size exceeds 25")
14461448
1447- hJ(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(eV, 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)
1448- }
1449-
1450-
1451-func hK (hL) = {
1452- let gu = split(valueOrElse(getString(hL), "0:0_0_0_0_0_0:0_0_0_0_0_0:"), ":")
1453-[toString(valueOrElse(parseInt(gu[bh]), 0)), if ((size(split(gu[bi], "_")) == aF))
1454- then gu[bi]
1455- else "0_0_0_0_0_0", if ((size(split(gu[bj], "_")) == aF))
1456- then gu[bj]
1457- else "0_0_0_0_0_0", gu[bk]]
1458- }
1459-
1460-
1461-func hM (hN) = {
1462- let fp = split(hN, "_")
1463- ((aI * (parseIntValue(fp[1]) + 1)) * parseIntValue(fp[0]))
1464- }
1465-
1466-
1467-func hO (hP) = {
1468- let hQ = hP[bb]
1469- func hR (eR,hS) = (eR + parseIntValue(hS))
1470-
1471- func hT (eR,hS) = {
1472- let da = eR._1
1473- let eK = (((parseIntValue(hS) + aX) - 1) / aX)
1474- $Tuple2((da + 1), (eR._2 + (eK * cE)))
1449+ hK(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(eW, 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)
1450+ }
1451+
1452+
1453+func hL (hM) = {
1454+ let gv = split(valueOrElse(getString(hM), "0:0_0_0_0_0_0:0_0_0_0_0_0:"), ":")
1455+[toString(valueOrElse(parseInt(gv[bi]), 0)), if ((size(split(gv[bj], "_")) == aG))
1456+ then gv[bj]
1457+ else "0_0_0_0_0_0", if ((size(split(gv[bk], "_")) == aG))
1458+ then gv[bk]
1459+ else "0_0_0_0_0_0", gv[bl]]
1460+ }
1461+
1462+
1463+func hN (hO) = {
1464+ let fq = split(hO, "_")
1465+ ((aJ * (parseIntValue(fq[1]) + 1)) * parseIntValue(fq[0]))
1466+ }
1467+
1468+
1469+func hP (hQ) = {
1470+ let hR = hQ[bc]
1471+ func hS (eS,hT) = (eS + parseIntValue(hT))
1472+
1473+ func hU (eS,hT) = {
1474+ let db = eS._1
1475+ let eL = (((parseIntValue(hT) + aY) - 1) / aY)
1476+ $Tuple2((db + 1), (eS._2 + (eL * cF)))
14751477 }
14761478
1477- let hU = {
1478- let eT = split(hP[aZ], "_")
1479- let eU = size(eT)
1480- let eV = 0
1481- func eW (eX,eY) = if ((eY >= eU))
1482- then eX
1483- else hR(eX, eT[eY])
1484-
1485- func eZ (eX,eY) = if ((eY >= eU))
1486- then eX
1479+ let hV = {
1480+ let eU = split(hQ[ba], "_")
1481+ let eV = size(eU)
1482+ let eW = 0
1483+ func eX (eY,eZ) = if ((eZ >= eV))
1484+ then eY
1485+ else hS(eY, eU[eZ])
1486+
1487+ func fa (eY,eZ) = if ((eZ >= eV))
1488+ then eY
14871489 else throw("List size exceeds 6")
14881490
1489- eZ(eW(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5), 6)
1491+ fa(eX(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5), 6)
14901492 }
1491- let hV = {
1492- let eT = split(hP[ba], "_")
1493- let eU = size(eT)
1494- let eV = 0
1495- func hF (eX,eY) = if ((eY >= eU))
1496- then eX
1497- else hR(eX, eT[eY])
1498-
1499- func hG (eX,eY) = if ((eY >= eU))
1500- then eX
1493+ let hW = {
1494+ let eU = split(hQ[bb], "_")
1495+ let eV = size(eU)
1496+ let eW = 0
1497+ func hG (eY,eZ) = if ((eZ >= eV))
1498+ then eY
1499+ else hS(eY, eU[eZ])
1500+
1501+ func hH (eY,eZ) = if ((eZ >= eV))
1502+ then eY
15011503 else throw("List size exceeds 6")
15021504
1503- hG(hF(hF(hF(hF(hF(hF(eV, 0), 1), 2), 3), 4), 5), 6)
1505+ hH(hG(hG(hG(hG(hG(hG(eW, 0), 1), 2), 3), 4), 5), 6)
15041506 }
1505- let hW = if ((hQ == ""))
1507+ let hX = if ((hR == ""))
15061508 then 0
1507- else ( let eT = split_4C(hQ, "_")
1508- let eU = size(eT)
1509- let eV = $Tuple2(0, 0)
1510- func hI (eX,eY) = if ((eY >= eU))
1511- then eX
1512- else hT(eX, eT[eY])
1513-
1514- func hJ (eX,eY) = if ((eY >= eU))
1515- then eX
1509+ else ( let eU = split_4C(hR, "_")
1510+ let eV = size(eU)
1511+ let eW = $Tuple2(0, 0)
1512+ func hJ (eY,eZ) = if ((eZ >= eV))
1513+ then eY
1514+ else hU(eY, eU[eZ])
1515+
1516+ func hK (eY,eZ) = if ((eZ >= eV))
1517+ then eY
15161518 else throw("List size exceeds 50")
15171519
1518- hJ(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(eV, 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
1519- ((hU + hV) + hW)
1520- }
1521-
1522-
1523-func hX (hY,hZ,ia) = {
1524- let hN = ((toString(hZ) + "_") + toString(ia))
1525- let ib = hM(hN)
1526- let ic = valueOrElse(getString(hY), (hN + ":0_0_0_0_0_0:0_0_0_0_0_0::0"))
1527- let id = split_4C(ic, ":")
1528- let ie = hO(id)
1529- let if = if ((5 > size(id)))
1530- then makeString(["0", toString(ie), toString((ib - ie)), toString(ib)], "_")
1520+ hK(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(eW, 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
1521+ ((hV + hW) + hX)
1522+ }
1523+
1524+
1525+func hY (hZ,ia,ib) = {
1526+ let hO = ((toString(ia) + "_") + toString(ib))
1527+ let ic = hN(hO)
1528+ let id = valueOrElse(getString(hZ), (hO + ":0_0_0_0_0_0:0_0_0_0_0_0::0"))
1529+ let ie = split_4C(id, ":")
1530+ let if = hP(ie)
1531+ let ig = if ((5 > size(ie)))
1532+ then makeString(["0", toString(if), toString((ic - if)), toString(ic)], "_")
15311533 else {
1532- let ig = split(id[bc], "_")
1533- let ih = parseIntValue(ig[bd])
1534- let ii = if ((size(ig) > 1))
1535- then parseIntValue(ig[be])
1536- else ie
1537- makeString([toString(ih), toString(ii), toString(((ib - ih) - ii)), toString(ib)], "_")
1538- }
1539-[id[aY], if ((size(split(id[aZ], "_")) == aF))
1540- then id[aZ]
1541- else "0_0_0_0_0_0", if ((size(split(id[ba], "_")) == aF))
1542- then id[ba]
1543- else "0_0_0_0_0_0", id[bb], if]
1544- }
1545-
1546-
1547-func ij (hP) = {
1548- let ik = hO(hP)
1549- let il = parseIntValue(split(hP[bc], "_")[bd])
1550- ((hM(hP[aY]) - ik) - il)
1551- }
1552-
1553-
1554-func im (in,hP,io) = if ((size(in) != 3))
1534+ let ih = split(ie[bd], "_")
1535+ let ii = parseIntValue(ih[be])
1536+ let ij = if ((size(ih) > 1))
1537+ then parseIntValue(ih[bf])
1538+ else if
1539+ makeString([toString(ii), toString(ij), toString(((ic - ii) - ij)), toString(ic)], "_")
1540+ }
1541+[ie[aZ], if ((size(split(ie[ba], "_")) == aG))
1542+ then ie[ba]
1543+ else "0_0_0_0_0_0", if ((size(split(ie[bb], "_")) == aG))
1544+ then ie[bb]
1545+ else "0_0_0_0_0_0", ie[bc], ig]
1546+ }
1547+
1548+
1549+func ik (hQ) = {
1550+ let il = hP(hQ)
1551+ let im = parseIntValue(split(hQ[bd], "_")[be])
1552+ ((hN(hQ[aZ]) - il) - im)
1553+ }
1554+
1555+
1556+func in (io,hQ,ip) = if ((size(io) != 3))
15551557 then throw("cargoListStr should contain exactly 2 ':' separators")
15561558 else {
1557- let ip = split(in[0], "_")
1558- let iq = split(in[1], "_")
1559- let ir = if ((in[2] == ""))
1559+ let iq = split(io[0], "_")
1560+ let ir = split(io[1], "_")
1561+ let is = if ((io[2] == ""))
15601562 then nil
1561- else split_4C(in[2], "_")
1562- if ((size(ip) != aF))
1563+ else split_4C(io[2], "_")
1564+ if ((size(iq) != aG))
15631565 then throw("All 6 resources should be passed")
1564- else if ((size(iq) != aF))
1566+ else if ((size(ir) != aG))
15651567 then throw("All 6 materials should be passed")
15661568 else {
1567- let gZ = ij(hP)
1568- let is = split(hP[aZ], "_")
1569- let it = split(hP[ba], "_")
1570- let iu = if ((hP[bb] == ""))
1569+ let ha = ik(hQ)
1570+ let it = split(hQ[ba], "_")
1571+ let iu = split(hQ[bb], "_")
1572+ let iv = if ((hQ[bc] == ""))
15711573 then nil
1572- else split_4C(hP[bb], "_")
1573- let gX = split(io[bi], "_")
1574- let iv = split(io[bj], "_")
1575- let iw = if ((io[bk] == ""))
1574+ else split_4C(hQ[bc], "_")
1575+ let gY = split(ip[bj], "_")
1576+ let iw = split(ip[bk], "_")
1577+ let ix = if ((ip[bl] == ""))
15761578 then nil
1577- else split_4C(io[bk], "_")
1578- func ix (eR,hS) = {
1579- let gK = eR._1
1580- let iy = parseIntValue(hS)
1581- let iz = parseIntValue(is[gK])
1582- let iA = parseIntValue(gX[gK])
1583- if ((iy == 0))
1584- then $Tuple4((gK + 1), (eR._2 :+ is[gK]), (eR._3 :+ gX[gK]), eR._4)
1585- else if ((iy > 0))
1586- then if ((iy > iA))
1587- then throw((((("Attempt to take " + hS) + " from backpack, but only ") + toString(iA)) + " available"))
1588- else $Tuple4((gK + 1), (eR._2 :+ toString((iz + iy))), (eR._3 :+ toString((iA - iy))), (eR._4 + iy))
1589- else if ((-(iy) > iz))
1590- then throw((((("Attempt to take " + toString(-(iy))) + " from warehouse, but only ") + toString(iz)) + " available"))
1591- else $Tuple4((gK + 1), (eR._2 :+ toString((iz + iy))), (eR._3 :+ toString((iA - iy))), (eR._4 + iy))
1579+ else split_4C(ip[bl], "_")
1580+ func iy (eS,hT) = {
1581+ let gL = eS._1
1582+ let iz = parseIntValue(hT)
1583+ let iA = parseIntValue(it[gL])
1584+ let iB = parseIntValue(gY[gL])
1585+ if ((iz == 0))
1586+ then $Tuple4((gL + 1), (eS._2 :+ it[gL]), (eS._3 :+ gY[gL]), eS._4)
1587+ else if ((iz > 0))
1588+ then if ((iz > iB))
1589+ then throw((((("Attempt to take " + hT) + " from backpack, but only ") + toString(iB)) + " available"))
1590+ else $Tuple4((gL + 1), (eS._2 :+ toString((iA + iz))), (eS._3 :+ toString((iB - iz))), (eS._4 + iz))
1591+ else if ((-(iz) > iA))
1592+ then throw((((("Attempt to take " + toString(-(iz))) + " from warehouse, but only ") + toString(iA)) + " available"))
1593+ else $Tuple4((gL + 1), (eS._2 :+ toString((iA + iz))), (eS._3 :+ toString((iB - iz))), (eS._4 + iz))
15921594 }
15931595
1594- let fc = {
1595- let eT = ip
1596- let eU = size(eT)
1597- let eV = $Tuple4(0, nil, nil, 0)
1598- func eW (eX,eY) = if ((eY >= eU))
1599- then eX
1600- else ix(eX, eT[eY])
1601-
1602- func eZ (eX,eY) = if ((eY >= eU))
1603- then eX
1596+ let fd = {
1597+ let eU = iq
1598+ let eV = size(eU)
1599+ let eW = $Tuple4(0, nil, nil, 0)
1600+ func eX (eY,eZ) = if ((eZ >= eV))
1601+ then eY
1602+ else iy(eY, eU[eZ])
1603+
1604+ func fa (eY,eZ) = if ((eZ >= eV))
1605+ then eY
16041606 else throw("List size exceeds 6")
16051607
1606- eZ(eW(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5), 6)
1608+ fa(eX(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5), 6)
16071609 }
1608- func iB (eR,hS) = {
1609- let gK = eR._1
1610- let iy = parseIntValue(hS)
1611- let iC = parseIntValue(it[gK])
1612- let iD = parseIntValue(iv[gK])
1613- if ((iy == 0))
1614- then $Tuple4((gK + 1), (eR._2 :+ it[gK]), (eR._3 :+ iv[gK]), eR._4)
1615- else if ((iy > 0))
1616- then if ((iy > iD))
1617- then throw((((("Attempt to take " + hS) + " from backpack, but only ") + toString(iD)) + " available"))
1618- else $Tuple4((gK + 1), (eR._2 :+ toString((iC + iy))), (eR._3 :+ toString((iD - iy))), (eR._4 + iy))
1619- else if ((-(iy) > iC))
1620- then throw((((("Attempt to take " + toString(-(iy))) + " from warehouse, but only ") + toString(iC)) + " available"))
1621- else $Tuple4((gK + 1), (eR._2 :+ toString((iC + iy))), (eR._3 :+ toString((iD - iy))), (eR._4 + iy))
1610+ func iC (eS,hT) = {
1611+ let gL = eS._1
1612+ let iz = parseIntValue(hT)
1613+ let iD = parseIntValue(iu[gL])
1614+ let iE = parseIntValue(iw[gL])
1615+ if ((iz == 0))
1616+ then $Tuple4((gL + 1), (eS._2 :+ iu[gL]), (eS._3 :+ iw[gL]), eS._4)
1617+ else if ((iz > 0))
1618+ then if ((iz > iE))
1619+ then throw((((("Attempt to take " + hT) + " from backpack, but only ") + toString(iE)) + " available"))
1620+ else $Tuple4((gL + 1), (eS._2 :+ toString((iD + iz))), (eS._3 :+ toString((iE - iz))), (eS._4 + iz))
1621+ else if ((-(iz) > iD))
1622+ then throw((((("Attempt to take " + toString(-(iz))) + " from warehouse, but only ") + toString(iD)) + " available"))
1623+ else $Tuple4((gL + 1), (eS._2 :+ toString((iD + iz))), (eS._3 :+ toString((iE - iz))), (eS._4 + iz))
16221624 }
16231625
1624- let gq = {
1625- let eT = iq
1626- let eU = size(eT)
1627- let eV = $Tuple4(0, nil, nil, fc._4)
1628- func hF (eX,eY) = if ((eY >= eU))
1629- then eX
1630- else iB(eX, eT[eY])
1631-
1632- func hG (eX,eY) = if ((eY >= eU))
1633- then eX
1626+ let gr = {
1627+ let eU = ir
1628+ let eV = size(eU)
1629+ let eW = $Tuple4(0, nil, nil, fd._4)
1630+ func hG (eY,eZ) = if ((eZ >= eV))
1631+ then eY
1632+ else iC(eY, eU[eZ])
1633+
1634+ func hH (eY,eZ) = if ((eZ >= eV))
1635+ then eY
16341636 else throw("List size exceeds 6")
16351637
1636- hG(hF(hF(hF(hF(hF(hF(eV, 0), 1), 2), 3), 4), 5), 6)
1638+ hH(hG(hG(hG(hG(hG(hG(eW, 0), 1), 2), 3), 4), 5), 6)
16371639 }
1638- func iE (eR,hS) = {
1639- let gK = eR._1
1640- let iy = parseIntValue(hS)
1641- let iF = if ((size(iu) > gK))
1642- then parseIntValue(iu[gK])
1640+ func iF (eS,hT) = {
1641+ let gL = eS._1
1642+ let iz = parseIntValue(hT)
1643+ let iG = if ((size(iv) > gL))
1644+ then parseIntValue(iv[gL])
16431645 else 0
1644- let iG = if ((size(iw) > gK))
1645- then parseIntValue(iw[gK])
1646+ let iH = if ((size(ix) > gL))
1647+ then parseIntValue(ix[gL])
16461648 else 0
1647- if ((iy == 0))
1648- then $Tuple4((gK + 1), (eR._2 :+ toString(iF)), (eR._3 :+ toString(iG)), eR._4)
1649- else if ((iy > 0))
1650- then if ((iy > iG))
1651- then throw((((("Attempt to take " + hS) + " from backpack, but only ") + toString(iG)) + " available"))
1649+ if ((iz == 0))
1650+ then $Tuple4((gL + 1), (eS._2 :+ toString(iG)), (eS._3 :+ toString(iH)), eS._4)
1651+ else if ((iz > 0))
1652+ then if ((iz > iH))
1653+ then throw((((("Attempt to take " + hT) + " from backpack, but only ") + toString(iH)) + " available"))
16521654 else {
1653- let fT = (eH((iF + iy), aX) - eH(iF, aX))
1654- $Tuple4((gK + 1), (eR._2 :+ toString((iF + iy))), (eR._3 :+ toString((iG - iy))), (eR._4 + fT))
1655+ let fU = (eI((iG + iz), aY) - eI(iG, aY))
1656+ $Tuple4((gL + 1), (eS._2 :+ toString((iG + iz))), (eS._3 :+ toString((iH - iz))), (eS._4 + fU))
16551657 }
1656- else if ((-(iy) > iF))
1657- then throw((((("Attempt to take " + toString(-(iy))) + " from warehouse, but only ") + toString(iF)) + " available"))
1658+ else if ((-(iz) > iG))
1659+ then throw((((("Attempt to take " + toString(-(iz))) + " from warehouse, but only ") + toString(iG)) + " available"))
16581660 else {
1659- let fT = (eH((iF + iy), aX) - eH(iF, aX))
1660- $Tuple4((gK + 1), (eR._2 :+ toString((iF + iy))), (eR._3 :+ toString((iG - iy))), (eR._4 + fT))
1661+ let fU = (eI((iG + iz), aY) - eI(iG, aY))
1662+ $Tuple4((gL + 1), (eS._2 :+ toString((iG + iz))), (eS._3 :+ toString((iH - iz))), (eS._4 + fU))
16611663 }
16621664 }
16631665
1664- let gu = if ((size(ir) != 0))
1666+ let gv = if ((size(is) != 0))
16651667 then {
1666- let eT = ir
1667- let eU = size(eT)
1668- let eV = $Tuple4(0, nil, nil, gq._4)
1669- func hI (eX,eY) = if ((eY >= eU))
1670- then eX
1671- else iE(eX, eT[eY])
1672-
1673- func hJ (eX,eY) = if ((eY >= eU))
1674- then eX
1668+ let eU = is
1669+ let eV = size(eU)
1670+ let eW = $Tuple4(0, nil, nil, gr._4)
1671+ func hJ (eY,eZ) = if ((eZ >= eV))
1672+ then eY
1673+ else iF(eY, eU[eZ])
1674+
1675+ func hK (eY,eZ) = if ((eZ >= eV))
1676+ then eY
16751677 else throw("List size exceeds 50")
16761678
1677- hJ(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(eV, 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)
1679+ hK(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(eW, 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)
16781680 }
1679- else $Tuple4(0, iu, iw, gq._4)
1680- let iH = gu._4
1681- if ((iH > gZ))
1682- then throw((((("Attempt to put total " + toString(iH)) + " stuff, but only ") + toString(gZ)) + " warehouse space left"))
1683- else $Tuple7(makeString(fc._2, "_"), makeString(gq._2, "_"), makeString_2C(gu._2, "_"), makeString(fc._3, "_"), makeString(gq._3, "_"), makeString_2C(gu._3, "_"), iH)
1681+ else $Tuple4(0, iv, ix, gr._4)
1682+ let iI = gv._4
1683+ if ((iI > ha))
1684+ then throw((((("Attempt to put total " + toString(iI)) + " stuff, but only ") + toString(ha)) + " warehouse space left"))
1685+ else $Tuple7(makeString(fd._2, "_"), makeString(gr._2, "_"), makeString_2C(gv._2, "_"), makeString(fd._3, "_"), makeString(gr._3, "_"), makeString_2C(gv._3, "_"), iI)
16841686 }
16851687 }
16861688
16871689
1688-func iI (iJ,iK) = {
1689- let bL = toString(iJ)
1690- let iL = hf(toBigInt(iK))
1691- let iM = valueOrElse(getInteger(ep()), (eo + 1))
1692- let et = toString(iM)
1693- let ho = toInt((iL % ei))
1694- let gN = hm(iL, ho)
1695- let dt = aP[ho]
1696- let iN = Issue(eG(et, "S"), makeString([et, "S", gN, dt], "_"), 1, 0, false)
1697- let bp = calculateAssetId(iN)
1698- let iO = toBase58String(bp)
1699- $Tuple2([IntegerEntry(ep(), (iM + 1)), iN, StringEntry(es(et), iO), StringEntry(bo(iO), bL), StringEntry(ev(et), bL), IntegerEntry(by(iO), 0), IntegerEntry(eu(iO, bL), 0), ScriptTransfer(iJ, 1, bp)], $Tuple2(iO, dt))
1700- }
1701-
1702-
1703-func iP (bL,iQ,iR) = if (!(sigVerify_8Kb(iQ, iR, dZ)))
1690+func iJ (iK,iL) = {
1691+ let bM = toString(iK)
1692+ let iM = hg(toBigInt(iL))
1693+ let iN = valueOrElse(getInteger(eq()), (ep + 1))
1694+ let eu = toString(iN)
1695+ let hp = toInt((iM % ej))
1696+ let gO = hn(iM, hp)
1697+ let du = aQ[hp]
1698+ let iO = Issue(eH(eu, "S"), makeString([eu, "S", gO, du], "_"), 1, 0, false)
1699+ let bq = calculateAssetId(iO)
1700+ let iP = toBase58String(bq)
1701+ $Tuple2([IntegerEntry(eq(), (iN + 1)), iO, StringEntry(et(eu), iP), StringEntry(bp(iP), bM), StringEntry(ew(eu), bM), IntegerEntry(bz(iP), 0), IntegerEntry(ev(iP, bM), 0), ScriptTransfer(iK, 1, bq)], $Tuple2(iP, du))
1702+ }
1703+
1704+
1705+func iQ (bM,iR,iS) = if (!(sigVerify_8Kb(iR, iS, ea)))
17041706 then throw("signature does not match")
17051707 else {
1706- let fp = split_4C(toUtf8String(iQ), ";")
1707- let iS = split_4C(fp[0], "|")
1708- let iT = split(iS[eC], "_")
1709- let iU = parseIntValue(iT[0])
1710- let iV = parseIntValue(iT[1])
1711- let iW = split(fp[1], ":")
1712- let iX = iW[0]
1713- let iY = parseIntValue(iS[eD])
1714- if (if ((iY > (lastBlock.timestamp + eb)))
1708+ let fq = split_4C(toUtf8String(iR), ";")
1709+ let iT = split_4C(fq[0], "|")
1710+ let iU = split(iT[eD], "_")
1711+ let iV = parseIntValue(iU[0])
1712+ let iW = parseIntValue(iU[1])
1713+ let iX = split(fq[1], ":")
1714+ let iY = iX[0]
1715+ let iZ = parseIntValue(iT[eE])
1716+ if (if ((iZ > (lastBlock.timestamp + ec)))
17151717 then true
1716- else ((lastBlock.timestamp - eb) > iY))
1717- then throw(((("signature outdated: logTime=" + toString(iY)) + ", bcTime=") + toString(lastBlock.timestamp)))
1718+ else ((lastBlock.timestamp - ec) > iZ))
1719+ then throw(((("signature outdated: logTime=" + toString(iZ)) + ", bcTime=") + toString(lastBlock.timestamp)))
17181720 else {
1719- let iZ = iW[1]
1720- let ja = valueOrElse(getString(dL(bL)), "")
1721- if ((ja != iZ))
1722- then throw(((("Tx ids don't match! In state: " + ja) + ", in msg: ") + iZ))
1721+ let ja = iX[1]
1722+ let jb = valueOrElse(getString(dM(bM)), "")
1723+ if ((jb != ja))
1724+ then throw(((("Tx ids don't match! In state: " + jb) + ", in msg: ") + ja))
17231725 else {
1724- let A = valueOrErrorMessage(getString(bH(bL)), "You don't have a duck staked")
1725- let jb = z(A)
1726- let jc = ag(valueOrElse(getInteger(D(A)), 0))
1727- let jd = valueOrElse(getInteger(jb), jc)
1728- if ((jd != iU))
1729- then throw(((("oldHealth=" + toString(jd)) + " from state does not match one from flight log=") + toString(iU)))
1730- else if ((0 >= iU))
1726+ let B = valueOrErrorMessage(getString(bI(bM)), "You don't have a duck staked")
1727+ let jc = A(B)
1728+ let jd = ah(valueOrElse(getInteger(E(B)), 0))
1729+ let je = valueOrElse(getInteger(jc), jd)
1730+ if ((je != iV))
1731+ then throw(((("oldHealth=" + toString(je)) + " from state does not match one from flight log=") + toString(iV)))
1732+ else if ((0 >= iV))
17311733 then throw("You can't fly with zero health")
1732- else if (!(gw(A)))
1734+ else if (!(gx(B)))
17331735 then throw("Equipment incompatible")
17341736 else {
1735- let je = if ((size(iS) > eE))
1736- then iS[eE]
1737+ let jf = if ((size(iT) > eF))
1738+ then iT[eF]
17371739 else ""
1738- let jf = if ((size(iS) > eF))
1739- then iS[eF]
1740+ let jg = if ((size(iT) > eG))
1741+ then iT[eG]
17401742 else ""
1741- let jg = if (if ((iV > 0))
1742- then (je == "$")
1743+ let jh = if (if ((iW > 0))
1744+ then (jf == "$")
17431745 else false)
1744- then dz(invoke(db, "sendUsdtPrize", [bL], nil))
1746+ then dA(invoke(dc, "sendUsdtPrize", [bM], nil))
17451747 else 0
1746- $Tuple5(iV, A, jg, iX, jf)
1748+ $Tuple5(iW, B, jh, iY, jg)
17471749 }
17481750 }
17491751 }
17501752 }
17511753
17521754
1753-func jh (P,ji) = {
1754- let ia = valueOrElse(getInteger(by(P)), 0)
1755- let jj = valueOrElse(getInteger(bs(aE, P)), 0)
1756- let jk = (ia / 6)
1757- let jl = (ia / 7)
1758- ((aH + fraction(aH, ((ia + jk) + (2 * jl)), 5)) + fraction(aH, jj, (ji * 5)))
1759- }
1760-
1761-
1762-func jm (c,jn,jo) = {
1763- let jp = if ((jn == ez))
1764- then $Tuple2(jo, valueOrElse(getString(bH(c)), ""))
1755+func ji (Q,jj) = {
1756+ let ib = valueOrElse(getInteger(bz(Q)), 0)
1757+ let jk = valueOrElse(getInteger(bt(aF, Q)), 0)
1758+ let jl = (ib / 6)
1759+ let jm = (ib / 7)
1760+ ((aI + fraction(aI, ((ib + jl) + (2 * jm)), 5)) + fraction(aI, jk, (jj * 5)))
1761+ }
1762+
1763+
1764+func jn (d,jo,jp) = {
1765+ let jq = if ((jo == eA))
1766+ then $Tuple2(jp, valueOrElse(getString(bI(d)), ""))
17651767 else {
1766- let A = valueOrErrorMessage(getString(bH(c)), "You don't have a duck staked")
1767- let jq = valueOrElse(getString(bJ(A)), aJ)
1768- let cf = split(value(jq), "_")
1769- if ((cf[bm] != "L"))
1770- then throw((("Duck location type is " + cf[bm]) + ", but should be L"))
1771- else $Tuple2(cf[bn], A)
1772- }
1773- let P = jp._1
1774- let jr = jp._2
1775- let js = value(assetInfo(fromBase58String(P)))
1776- let jt = br(P)
1777- let ju = valueOrErrorMessage(getInteger(jt), (("Land " + js.name) + " is not staked"))
1778- let jv = valueOrErrorMessage(getString(bo(P)), (("NFT " + js.name) + " is orphaned"))
1779- if ((jv != c))
1780- then throw((aC + " is not yours"))
1768+ let B = valueOrErrorMessage(getString(bI(d)), "You don't have a duck staked")
1769+ let jr = valueOrElse(getString(bK(B)), aK)
1770+ let cg = split(value(jr), "_")
1771+ if ((cg[bn] != "L"))
1772+ then throw((("Duck location type is " + cg[bn]) + ", but should be L"))
1773+ else $Tuple2(cg[bo], B)
1774+ }
1775+ let Q = jq._1
1776+ let js = jq._2
1777+ let jt = value(assetInfo(fromBase58String(Q)))
1778+ let ju = bs(Q)
1779+ let jv = valueOrErrorMessage(getInteger(ju), (("Land " + jt.name) + " is not staked"))
1780+ let jw = valueOrErrorMessage(getString(bp(Q)), (("NFT " + jt.name) + " is orphaned"))
1781+ if ((jw != d))
1782+ then throw((aD + " is not yours"))
17811783 else {
1782- let jw = split(js.description, "_")
1783- $Tuple4(jr, P, jw, ju)
1784- }
1785- }
1786-
1787-
1788-func jx (c,eI,jn,jo) = if ((0 > eI))
1784+ let jx = split(jt.description, "_")
1785+ $Tuple4(js, Q, jx, jv)
1786+ }
1787+ }
1788+
1789+
1790+func jy (d,eJ,jo,jp) = if ((0 > eJ))
17891791 then throw("Negative amount")
17901792 else {
1791- let ga = jm(c, jn, jo)
1792- let dI = ga._3[di]
1793- let gG = gM(ga._3[dj])
1794- let gQ = (lastBlock.timestamp - ga._4)
1795- if ((0 > gQ))
1796- then throw(((("Saved timestamp is in future, saved = " + toString(ga._4)) + ", current = ") + toString(lastBlock.timestamp)))
1793+ let gb = jn(d, jo, jp)
1794+ let dJ = gb._3[dj]
1795+ let gH = gN(gb._3[dk])
1796+ let gR = (lastBlock.timestamp - gb._4)
1797+ if ((0 > gR))
1798+ then throw(((("Saved timestamp is in future, saved = " + toString(gb._4)) + ", current = ") + toString(lastBlock.timestamp)))
17971799 else {
1798- let ji = dH(dI)
1799- let jy = jh(ga._2, ji)
1800- let jz = fraction(gQ, (jy * ji), a)
1801- if ((eI > jz))
1802- then throw(((("Not enough resources, available = " + toString(jz)) + ", requested = ") + toString(eI)))
1800+ let jj = dI(dJ)
1801+ let jz = ji(gb._2, jj)
1802+ let jA = fraction(gR, (jz * jj), a)
1803+ if ((eJ > jA))
1804+ then throw(((("Not enough resources, available = " + toString(jA)) + ", requested = ") + toString(eJ)))
18031805 else {
1804- let jA = fraction((jz - eI), a, (jy * ji))
1805- let jB = (lastBlock.timestamp - jA)
1806- let hZ = (ji / cF)
1807- let gY = gU(gG, (gQ - jA), hZ, jy)
1808- let hY = bx(ga._2)
1809- let ia = valueOrElse(getInteger(by(ga._2)), 0)
1810- let hP = hX(hY, hZ, ia)
1811- let ig = split(hP[bc], "_")
1812- let gZ = parseIntValue(ig[bf])
1813- if (if ((jn == ez))
1814- then (eI > gZ)
1806+ let jB = fraction((jA - eJ), a, (jz * jj))
1807+ let jC = (lastBlock.timestamp - jB)
1808+ let ia = (jj / cG)
1809+ let gZ = gV(gH, (gR - jB), ia, jz)
1810+ let hZ = by(gb._2)
1811+ let ib = valueOrElse(getInteger(bz(gb._2)), 0)
1812+ let hQ = hY(hZ, ia, ib)
1813+ let ih = split(hQ[bd], "_")
1814+ let ha = parseIntValue(ih[bg])
1815+ if (if ((jo == eA))
1816+ then (eJ > ha)
18151817 else false)
1816- then throw((("Only " + toString(gZ)) + " space left in warehouse"))
1818+ then throw((("Only " + toString(ha)) + " space left in warehouse"))
18171819 else {
1818- let hL = bI(ga._1)
1819- let io = hK(hL)
1820- let gX = split(io[bi], "_")
1821- let gW = split(hP[aZ], "_")
1822- let jC = if ((jn == ez))
1823- then $Tuple4(gO(gW, gG, (gQ - jA), hZ, jy), io[bi], (parseIntValue(ig[be]) + gY._2), (parseIntValue(ig[bf]) - gY._2))
1824- else if ((jn == eA))
1825- then $Tuple4(hP[aZ], gO(gX, gG, (gQ - jA), hZ, jy), parseIntValue(ig[be]), parseIntValue(ig[bf]))
1820+ let hM = bJ(gb._1)
1821+ let ip = hL(hM)
1822+ let gY = split(ip[bj], "_")
1823+ let gX = split(hQ[ba], "_")
1824+ let jD = if ((jo == eA))
1825+ then $Tuple4(gP(gX, gH, (gR - jB), ia, jz), ip[bj], (parseIntValue(ih[bf]) + gZ._2), (parseIntValue(ih[bg]) - gZ._2))
1826+ else if ((jo == eB))
1827+ then $Tuple4(hQ[ba], gP(gY, gH, (gR - jB), ia, jz), parseIntValue(ih[bf]), parseIntValue(ih[bg]))
18261828 else {
1827- let jD = gV(gW, gX, gY, gZ)
1828- let jE = min([parseIntValue(ig[bf]), gY._2])
1829- $Tuple4(jD._1, jD._2, (parseIntValue(ig[be]) + jE), (parseIntValue(ig[bf]) - jE))
1829+ let jE = gW(gX, gY, gZ, ha)
1830+ let jF = min([parseIntValue(ih[bg]), gZ._2])
1831+ $Tuple4(jE._1, jE._2, (parseIntValue(ih[bf]) + jF), (parseIntValue(ih[bg]) - jF))
18301832 }
1831- let jF = jC._1
1832- let jG = jC._2
1833- let jH = jC._3
1834- let jI = jC._4
1835- $Tuple5([IntegerEntry(br(ga._2), jB), IntegerEntry(bu(aC, ga._2, c), jB)], hL, [io[bh], jG, io[bj], io[bk]], hY, [hP[aY], jF, hP[ba], hP[bb], makeString([ig[bd], toString(jH), toString(jI), ig[bg]], "_")])
1833+ let jG = jD._1
1834+ let jH = jD._2
1835+ let jI = jD._3
1836+ let jJ = jD._4
1837+ $Tuple5([IntegerEntry(bs(gb._2), jC), IntegerEntry(bv(aD, gb._2, d), jC)], hM, [ip[bi], jH, ip[bk], ip[bl]], hZ, [hQ[aZ], jG, hQ[bb], hQ[bc], makeString([ih[be], toString(jI), toString(jJ), ih[bh]], "_")])
18361838 }
18371839 }
18381840 }
18391841 }
18401842
18411843
1842-func jJ (c,P,ji,jn) = {
1843- let jt = br(P)
1844- let ju = value(getInteger(jt))
1845- let jz = (fraction((lastBlock.timestamp - ju), jh(P, ji), a) * ji)
1846- jx(c, jz, jn, P)
1847- }
1848-
1849-
1850-func jK (fe,iJ,jL,P) = {
1851- let c = toString(iJ)
1852- let ga = jm(c, eB, P)
1853- let ji = dH(ga._3[di])
1854- let jM = by(ga._2)
1855- let jN = valueOrElse(getInteger(jM), 0)
1856- if (if (!(cu))
1857- then (jN >= 3)
1844+func jK (d,Q,jj,jo) = {
1845+ let ju = bs(Q)
1846+ let jv = value(getInteger(ju))
1847+ let jA = (fraction((lastBlock.timestamp - jv), ji(Q, jj), a) * jj)
1848+ jy(d, jA, jo, Q)
1849+ }
1850+
1851+
1852+func jL (ff,iK,jM,Q) = {
1853+ let d = toString(iK)
1854+ let gb = jn(d, eC, Q)
1855+ let jj = dI(gb._3[dj])
1856+ let jN = bz(gb._2)
1857+ let jO = valueOrElse(getInteger(jN), 0)
1858+ if (if (!(cv))
1859+ then (jO >= 3)
18581860 else false)
18591861 then throw("Currently max infrastructure level = 3")
18601862 else {
1861- let jO = ((sqrt(ji, 0, 0, DOWN) / 5) + 2)
1862- let al = (jN + 1)
1863- if (if (cu)
1864- then (al > jO)
1863+ let jP = ((sqrt(jj, 0, 0, DOWN) / 5) + 2)
1864+ let am = (jO + 1)
1865+ if (if (cv)
1866+ then (am > jP)
18651867 else false)
1866- then throw(("Currently max infrastructure level = " + toString(jO)))
1868+ then throw(("Currently max infrastructure level = " + toString(jP)))
18671869 else {
1868- let jP = fraction(ee, (ji * al), cF)
1869- if (if (!(fe))
1870- then (jL != jP)
1870+ let jQ = fraction(ef, (jj * am), cG)
1871+ if (if (!(ff))
1872+ then (jM != jQ)
18711873 else false)
1872- then throw(("Payment attached should be " + toString(jP)))
1874+ then throw(("Payment attached should be " + toString(jQ)))
18731875 else {
1874- let hL = bI(ga._1)
1875- let io = hK(hL)
1876- let jQ = split(io[bj], "_")
1877- let jR = fraction(cA, (ji * al), cF)
1878- let jS = makeString(fd(fe, jQ, jR), "_")
1879- let jT = jJ(c, ga._2, ji, eB)
1880- let jU = jT._5
1881- let jV = hM(jU[aY])
1882- let jW = makeString([split(jU[aY], "_")[0], toString(al)], "_")
1883- let jX = hM(jW)
1884- let ig = split(jU[bc], "_")
1885- let jY = makeString([ig[bd], ig[be], toString(((parseIntValue(ig[bf]) + jX) - jV)), toString(jX)], "_")
1886- $Tuple3(([IntegerEntry(jM, al), IntegerEntry(eu(ga._2, c), al), StringEntry(hL, makeString([io[bh], jT._3[bi], jS, io[bk]], ":")), StringEntry(jT._4, makeString([jW, jU[aZ], jU[ba], jU[bb], jY], ":"))] ++ jT._1), al, jR)
1876+ let hM = bJ(gb._1)
1877+ let ip = hL(hM)
1878+ let jR = split(ip[bk], "_")
1879+ let jS = fraction(cB, (jj * am), cG)
1880+ let jT = makeString(fe(ff, jR, jS), "_")
1881+ let jU = jK(d, gb._2, jj, eC)
1882+ let jV = jU._5
1883+ let jW = hN(jV[aZ])
1884+ let jX = makeString([split(jV[aZ], "_")[0], toString(am)], "_")
1885+ let jY = hN(jX)
1886+ let ih = split(jV[bd], "_")
1887+ let jZ = makeString([ih[be], ih[bf], toString(((parseIntValue(ih[bg]) + jY) - jW)), toString(jY)], "_")
1888+ $Tuple3(([IntegerEntry(jN, am), IntegerEntry(ev(gb._2, d), am), StringEntry(hM, makeString([ip[bi], jU._3[bj], jT, ip[bl]], ":")), StringEntry(jU._4, makeString([jX, jV[ba], jV[bb], jV[bc], jZ], ":"))] ++ jU._1), am, jS)
18871889 }
18881890 }
18891891 }
18901892 }
18911893
18921894
1893-func jZ (A,ka) = {
1894- let kb = D(A)
1895- let kc = C(A)
1896- let af = valueOrElse(getInteger(kc), 0)
1897- let ak = (af + ka)
1898- let kd = ai(valueOrElse(getInteger(kb), 0), ak)
1899- let ke = E(A)
1900- $Tuple2([IntegerEntry(kb, kd[0]), IntegerEntry(kc, ak), IntegerEntry(ke, (valueOrElse(getInteger(ke), 0) + kd[1]))], ak)
1901- }
1902-
1903-
1904-func kf (c,ka) = {
1905- let kb = H(c)
1906- let kc = G(c)
1907- let af = valueOrElse(getInteger(kc), 0)
1908- let ak = (af + ka)
1909- let kd = ai(valueOrElse(getInteger(kb), 0), ak)
1910- let ke = I(c)
1911- $Tuple2([IntegerEntry(kb, kd[0]), IntegerEntry(kc, ak), IntegerEntry(ke, (valueOrElse(getInteger(ke), 0) + kd[1]))], ak)
1912- }
1913-
1914-
1915-func kg (c) = {
1916- let A = valueOrErrorMessage(getString(bH(c)), "You don't have a duck staked")
1917- let kh = bC(c)
1918- let ki = getString(kh)
1919- if (!(isDefined(ki)))
1895+func ka (B,kb) = {
1896+ let kc = E(B)
1897+ let kd = D(B)
1898+ let ag = valueOrElse(getInteger(kd), 0)
1899+ let al = (ag + kb)
1900+ let ke = aj(valueOrElse(getInteger(kc), 0), al)
1901+ let kf = F(B)
1902+ $Tuple2([IntegerEntry(kc, ke[0]), IntegerEntry(kd, al), IntegerEntry(kf, (valueOrElse(getInteger(kf), 0) + ke[1]))], al)
1903+ }
1904+
1905+
1906+func kg (d,kb) = {
1907+ let kc = I(d)
1908+ let kd = H(d)
1909+ let ag = valueOrElse(getInteger(kd), 0)
1910+ let al = (ag + kb)
1911+ let ke = aj(valueOrElse(getInteger(kc), 0), al)
1912+ let kf = J(d)
1913+ $Tuple2([IntegerEntry(kc, ke[0]), IntegerEntry(kd, al), IntegerEntry(kf, (valueOrElse(getInteger(kf), 0) + ke[1]))], al)
1914+ }
1915+
1916+
1917+func kh (d) = {
1918+ let B = valueOrErrorMessage(getString(bI(d)), "You don't have a duck staked")
1919+ let ki = bD(d)
1920+ let kj = getString(ki)
1921+ if (!(isDefined(kj)))
19201922 then throw("You are not eligible for ONBOARD artifact")
19211923 else {
1922- let kj = bE(c)
1923- let kk = getString(kj)
1924- if (isDefined(kk))
1925- then throw(("You already used your ONBOARD artifact on duck " + value(kk)))
1924+ let kk = bF(d)
1925+ let kl = getString(kk)
1926+ if (isDefined(kl))
1927+ then throw(("You already used your ONBOARD artifact on duck " + value(kl)))
19261928 else {
1927- let kl = bD(A)
1928- let km = getString(kl)
1929- if (isDefined(km))
1930- then throw(((("The duck " + A) + " already got points from ONBOARD artifact from user ") + value(km)))
1931- else ([StringEntry(kj, A), StringEntry(kl, c)] ++ jZ(A, ac)._1)
1929+ let km = bE(B)
1930+ let kn = getString(km)
1931+ if (isDefined(kn))
1932+ then throw(((("The duck " + B) + " already got points from ONBOARD artifact from user ") + value(kn)))
1933+ else ([StringEntry(kk, B), StringEntry(km, d)] ++ ka(B, ad)._1)
19321934 }
19331935 }
19341936 }
19351937
19361938
1937-func kn (c,jo) = {
1938- let ga = jm(c, eB, jo)
1939- let P = ga._2
1940- let ji = dH(ga._3[di])
1941- let ko = bs(aE, P)
1942- if ((valueOrElse(getInteger(ko), 0) > 0))
1939+func ko (d,jp) = {
1940+ let gb = jn(d, eC, jp)
1941+ let Q = gb._2
1942+ let jj = dI(gb._3[dj])
1943+ let kp = bt(aF, Q)
1944+ if ((valueOrElse(getInteger(kp), 0) > 0))
19431945 then throw("Presale artifact is already activated")
1944- else if ((parseIntValue(ga._3[dh]) > eo))
1945- then throw((((aC + " ") + P) + " is not eligible for presale artifact"))
1946+ else if ((parseIntValue(gb._3[di]) > ep))
1947+ then throw((((aD + " ") + Q) + " is not eligible for presale artifact"))
19461948 else {
1947- let jT = jJ(c, P, ji, eB)
1948- (((jT._1 :+ IntegerEntry(ko, ji)) :+ StringEntry(jT._2, makeString(jT._3, ":"))) :+ StringEntry(jT._4, makeString(jT._5, ":")))
1949+ let jU = jK(d, Q, jj, eC)
1950+ (((jU._1 :+ IntegerEntry(kp, jj)) :+ StringEntry(jU._2, makeString(jU._3, ":"))) :+ StringEntry(jU._4, makeString(jU._5, ":")))
19491951 }
19501952 }
19511953
19521954
1953-func kp (A) = {
1954- let ce = valueOrElse(getInteger(df, bP), 0)
1955- let jq = split(valueOrElse(getString(bJ(A)), aJ), "_")
1956- let ax = lastBlock.timestamp
1957- let cg = bY(df, ce)
1958- let ca = cg[bU]
1959- let cb = cg[bV]
1960- if ((jq[bm] != "T"))
1955+func kq (B) = {
1956+ let cf = valueOrElse(getInteger(dg, bQ), 0)
1957+ let jr = split(valueOrElse(getString(bK(B)), aK), "_")
1958+ let ay = lastBlock.timestamp
1959+ let ch = bZ(dg, cf)
1960+ let cb = ch[bV]
1961+ let cc = ch[bW]
1962+ if ((jr[bn] != "T"))
19611963 then false
1962- else if (if (if ((parseIntValue(jq[bl]) == ce))
1963- then (cb[bX] == "INPROGRESS")
1964+ else if (if (if ((parseIntValue(jr[bm]) == cf))
1965+ then (cc[bY] == "INPROGRESS")
19641966 else false)
1965- then (parseIntValue(ca[bW]) > ax)
1967+ then (parseIntValue(cb[bX]) > ay)
19661968 else false)
19671969 then throw("Your duck is taking part in the tournament")
1968- else dD(invoke(this, "exitTournamentInternal", [A], nil))
1969- }
1970-
1971-
1972-func kq (A) = if (!(cv))
1970+ else dE(invoke(this, "exitTournamentInternal", [B], nil))
1971+ }
1972+
1973+
1974+func kr (B) = if (!(cw))
19731975 then false
19741976 else {
1975- let jq = split(valueOrElse(getString(bJ(A)), aJ), "_")
1976- let ax = lastBlock.timestamp
1977- if ((jq[bm] != "D"))
1977+ let jr = split(valueOrElse(getString(bK(B)), aK), "_")
1978+ let ay = lastBlock.timestamp
1979+ if ((jr[bn] != "D"))
19781980 then false
19791981 else {
1980- let ci = parseIntValue(jq[bl])
1981- let cj = parseIntValue(jq[bn])
1982- if (if ((ax > (ci + aN)))
1983- then (3 > cj)
1982+ let cj = parseIntValue(jr[bm])
1983+ let ck = parseIntValue(jr[bo])
1984+ if (if ((ay > (cj + aO)))
1985+ then (3 > ck)
19841986 else false)
19851987 then throw("Your duck is on delivery mission")
1986- else dD(invoke(this, "exitDeliveryInternal", [A], nil))
1988+ else dE(invoke(this, "exitDeliveryInternal", [B], nil))
19871989 }
19881990 }
19891991
19901992
1991-func kr (A,ks,iV) = {
1992- let jq = split(valueOrElse(getString(bJ(A)), aJ), "_")
1993- let ax = lastBlock.timestamp
1994- let ci = parseIntValue(jq[bl])
1995- let cj = parseIntValue(jq[bn])
1996- let jv = valueOrErrorMessage(getString(bG(A)), "NFT duck is orphaned")
1997- let kt = z(A)
1998- let ku = getIntegerValue(kt)
1999- let kv = if ((cj >= 3))
1993+func ks (B,kt,iW) = {
1994+ let jr = split(valueOrElse(getString(bK(B)), aK), "_")
1995+ let ay = lastBlock.timestamp
1996+ let cj = parseIntValue(jr[bm])
1997+ let ck = parseIntValue(jr[bo])
1998+ let jw = valueOrErrorMessage(getString(bH(B)), "NFT duck is orphaned")
1999+ let ku = A(B)
2000+ let kv = getIntegerValue(ku)
2001+ let kw = if ((ck >= 3))
20002002 then {
2001- let kw = invoke(dc, "sendDeliveryReward", [jv], nil)
2002- if ((kw == kw))
2003+ let kx = invoke(dd, "sendDeliveryReward", [jw], nil)
2004+ if ((kx == kx))
20032005 then nil
20042006 else throw("Strict value is not equal to itself.")
20052007 }
2006- else if (if (if (ks)
2007- then (iV > 0)
2008+ else if (if (if (kt)
2009+ then (iW > 0)
20082010 else false)
2009- then (ax > (ci + aN))
2011+ then (ay > (cj + aO))
20102012 else false)
20112013 then throw("Your duck is still on delivery mission")
20122014 else {
2013- let kx = valueOrElse(getInteger(dc, bO), 0)
2014- let ky = invoke(dc, "updateDeliveryLocked", [(kx - aM)], nil)
2015- if ((ky == ky))
2016- then if ((0 >= ku))
2015+ let ky = valueOrElse(getInteger(dd, bP), 0)
2016+ let kz = invoke(dd, "updateDeliveryLocked", [(ky - aN)], nil)
2017+ if ((kz == kz))
2018+ then if ((0 >= kv))
20172019 then nil
2018- else [IntegerEntry(T(A), (ci + a))]
2020+ else [IntegerEntry(U(B), (cj + b))]
20192021 else throw("Strict value is not equal to itself.")
20202022 }
2021- let kz = getIntegerValue(J(A))
2022- let kA = getStringValue(K(A))
2023- $Tuple4(kv, [IntegerEntry(kt, kz), StringEntry(bJ(A), kA)], kA, kz)
2024- }
2025-
2026-
2027-func kB (kC,al,kD,c,kE,kF) = {
2028- let A = valueOrErrorMessage(getString(bH(c)), "You don't have a duck staked")
2029- if (kp(A))
2023+ let kA = getIntegerValue(K(B))
2024+ let kB = getStringValue(L(B))
2025+ $Tuple4(kw, [IntegerEntry(ku, kA), StringEntry(bK(B), kB)], kB, kA)
2026+ }
2027+
2028+
2029+func kC (kD,am,kE,d,kF,kG) = {
2030+ let B = valueOrErrorMessage(getString(bI(d)), "You don't have a duck staked")
2031+ if (kq(B))
20302032 then throw("mergeInternal_checkTournament")
2031- else if (kq(A))
2033+ else if (kr(B))
20322034 then throw("mergeInternal_checkDelivery")
20332035 else {
2034- func kG (eR,P) = {
2035- let js = value(assetInfo(fromBase58String(P)))
2036- let jt = br(P)
2037- let ju = valueOrErrorMessage(getInteger(jt), (("NFT " + js.name) + " is not staked"))
2038- let jv = valueOrErrorMessage(getString(bo(P)), (("NFT " + js.name) + " is orphaned"))
2039- if ((jv != c))
2040- then throw((aC + " is not yours"))
2036+ func kH (eS,Q) = {
2037+ let jt = value(assetInfo(fromBase58String(Q)))
2038+ let ju = bs(Q)
2039+ let jv = valueOrErrorMessage(getInteger(ju), (("NFT " + jt.name) + " is not staked"))
2040+ let jw = valueOrErrorMessage(getString(bp(Q)), (("NFT " + jt.name) + " is orphaned"))
2041+ if ((jw != d))
2042+ then throw((aD + " is not yours"))
20412043 else {
2042- let jw = split(js.description, "_")
2043- let dt = jw[dk]
2044- if (if ((eR._3 != ""))
2045- then (eR._3 != dt)
2044+ let jx = split(jt.description, "_")
2045+ let du = jx[dl]
2046+ if (if ((eS._3 != ""))
2047+ then (eS._3 != du)
20462048 else false)
20472049 then throw("Lands should be on the same continent to merge")
20482050 else {
2049- let dI = jw[di]
2050- let kH = eR._1
2051- let gK = valueOrErrorMessage(indexOf(kH, dI), "You haven't passed all the lands needed")
2052- let kI = (take(kH, gK) + drop(kH, (gK + 1)))
2053- let ji = dH(dI)
2054- let kJ = (eR._2 + valueOrElse(getInteger(bs(aE, P)), 0))
2055- let ia = valueOrElse(getInteger(by(P)), 0)
2056- let kK = {
2057- let cy = dI
2058- if (("S" == cy))
2051+ let dJ = jx[dj]
2052+ let kI = eS._1
2053+ let gL = valueOrErrorMessage(indexOf(kI, dJ), "You haven't passed all the lands needed")
2054+ let kJ = (take(kI, gL) + drop(kI, (gL + 1)))
2055+ let jj = dI(dJ)
2056+ let kK = (eS._2 + valueOrElse(getInteger(bt(aF, Q)), 0))
2057+ let ib = valueOrElse(getInteger(bz(Q)), 0)
2058+ let kL = {
2059+ let cz = dJ
2060+ if (("S" == cz))
20592061 then 3
2060- else if (("M" == cy))
2062+ else if (("M" == cz))
20612063 then 4
2062- else if (("L" == cy))
2064+ else if (("L" == cz))
20632065 then 5
2064- else if (("XL" == cy))
2066+ else if (("XL" == cz))
20652067 then 6
20662068 else throw("Only S, M, L, XL can merge")
20672069 }
2068- if ((ia != kK))
2070+ if ((ib != kL))
20692071 then throw("All lands should be maxed to merge")
20702072 else {
2071- let et = jw[dh]
2072- let gG = gM(jw[dj])
2073- let gQ = (lastBlock.timestamp - ju)
2074- if ((0 > gQ))
2075- then throw(((("Saved timestamp is in future, saved = " + toString(ju)) + ", current = ") + toString(lastBlock.timestamp)))
2073+ let eu = jx[di]
2074+ let gH = gN(jx[dk])
2075+ let gR = (lastBlock.timestamp - jv)
2076+ if ((0 > gR))
2077+ then throw(((("Saved timestamp is in future, saved = " + toString(jv)) + ", current = ") + toString(lastBlock.timestamp)))
20762078 else {
2077- let jy = jh(P, ji)
2078- let hZ = (ji / cF)
2079- let jG = gO(split(eR._4, "_"), gG, gQ, hZ, jy)
2080- let fb = gE(eR._6, gG, hZ, -1)
2081- let kL = gE(eR._10, gG, hZ, -1)
2082- let hu = gE(eR._9, gG, hZ, 1)
2083- let kM = eR._7
2084- let da = indexOf(kM, P)
2085- if (!(isDefined(da)))
2086- then throw(("Your staked lands don't contain " + P))
2079+ let jz = ji(Q, jj)
2080+ let ia = (jj / cG)
2081+ let jH = gP(split(eS._4, "_"), gH, gR, ia, jz)
2082+ let fc = gF(eS._6, gH, ia, -1)
2083+ let kM = gF(eS._10, gH, ia, -1)
2084+ let hv = gF(eS._9, gH, ia, 1)
2085+ let kN = eS._7
2086+ let db = indexOf(kN, Q)
2087+ if (!(isDefined(db)))
2088+ then throw(("Your staked lands don't contain " + Q))
20872089 else {
2088- let kN = bq(P)
2089- let kO = valueOrElse(getString(kN), "")
2090- $Tuple10(kI, kJ, dt, jG, ((((((((((((eR._5 :+ DeleteEntry(br(P))) :+ DeleteEntry(bu(aC, P, c))) :+ DeleteEntry(es(et))) :+ DeleteEntry(bo(P))) :+ DeleteEntry(by(P))) :+ DeleteEntry(eu(P, c))) :+ DeleteEntry(bs(aE, P))) :+ DeleteEntry(ev(et))) :+ DeleteEntry(bx(P))) :+ DeleteEntry(kN)) :+ Burn(fromBase58String(P), 1)) ++ (if ((kO != ""))
2091- then [DeleteEntry(eq(kO))]
2092- else nil)), fb, removeByIndex(kM, value(da)), (eR._8 + ji), hu, kL)
2090+ let kO = br(Q)
2091+ let kP = valueOrElse(getString(kO), "")
2092+ $Tuple10(kJ, kK, du, jH, ((((((((((((eS._5 :+ DeleteEntry(bs(Q))) :+ DeleteEntry(bv(aD, Q, d))) :+ DeleteEntry(et(eu))) :+ DeleteEntry(bp(Q))) :+ DeleteEntry(bz(Q))) :+ DeleteEntry(ev(Q, d))) :+ DeleteEntry(bt(aF, Q))) :+ DeleteEntry(ew(eu))) :+ DeleteEntry(by(Q))) :+ DeleteEntry(kO)) :+ Burn(fromBase58String(Q), 1)) ++ (if ((kP != ""))
2093+ then [DeleteEntry(er(kP))]
2094+ else nil)), fc, removeByIndex(kN, value(db)), (eS._8 + jj), hv, kM)
20932095 }
20942096 }
20952097 }
20972099 }
20982100 }
20992101
2100- let hL = bI(A)
2101- let io = hK(hL)
2102- let gF = split(valueOrElse(getString(dr()), "0_0_0_0_0_0"), "_")
2103- let kP = du(c)
2104- let kQ = getString(kP)
2105- let kR = if (isDefined(kQ))
2106- then split_51C(value(kQ), "_")
2102+ let hM = bJ(B)
2103+ let ip = hL(hM)
2104+ let gG = split(valueOrElse(getString(ds()), "0_0_0_0_0_0"), "_")
2105+ let kQ = dv(d)
2106+ let kR = getString(kQ)
2107+ let kS = if (isDefined(kR))
2108+ then split_51C(value(kR), "_")
21072109 else nil
2108- let kS = split(value(assetInfo(fromBase58String(kE[0]))).description, "_")[dk]
2109- let kT = split(valueOrElse(getString(ds(kS)), "0_0_0_0_0_0"), "_")
2110- let fc = {
2111- let eT = kE
2112- let eU = size(eT)
2113- let eV = $Tuple10(kD, 0, "", io[bi], nil, gF, kR, 0, split("0_0_0_0_0_0", "_"), kT)
2114- func eW (eX,eY) = if ((eY >= eU))
2115- then eX
2116- else kG(eX, eT[eY])
2117-
2118- func eZ (eX,eY) = if ((eY >= eU))
2119- then eX
2110+ let kT = split(value(assetInfo(fromBase58String(kF[0]))).description, "_")[dl]
2111+ let kU = split(valueOrElse(getString(dt(kT)), "0_0_0_0_0_0"), "_")
2112+ let fd = {
2113+ let eU = kF
2114+ let eV = size(eU)
2115+ let eW = $Tuple10(kE, 0, "", ip[bj], nil, gG, kS, 0, split("0_0_0_0_0_0", "_"), kU)
2116+ func eX (eY,eZ) = if ((eZ >= eV))
2117+ then eY
2118+ else kH(eY, eU[eZ])
2119+
2120+ func fa (eY,eZ) = if ((eZ >= eV))
2121+ then eY
21202122 else throw("List size exceeds 5")
21212123
2122- eZ(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5)
2124+ fa(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5)
21232125 }
2124- let dt = fc._3
2125- let ho = valueOrErrorMessage(indexOf(aP, dt), ("Unknown continent: " + dt))
2126- let gN = ht(fc._9, (dH(kC) / cF))
2127- let iM = valueOrElse(getInteger(ep()), (eo + 1))
2128- let kU = toString(iM)
2129- let iN = Issue(eG(kU, kC), makeString([kU, kC, gN, dt], "_"), 1, 0, false)
2130- let bp = calculateAssetId(iN)
2131- let kV = toBase58String(bp)
2132- let jS = makeString(fd((kF > 0), split(io[bj], "_"), kF), "_")
2133- let kW = dv(c)
2134- let kX = valueOrElse(getInteger(kW), 0)
2135- $Tuple2((((((((((((((((fc._5 :+ (if ((size(fc._7) > 0))
2136- then StringEntry(kP, makeString_11C(fc._7, "_"))
2137- else DeleteEntry(kP))) :+ IntegerEntry(kW, if ((fc._8 > kX))
2126+ let du = fd._3
2127+ let hp = valueOrErrorMessage(indexOf(aQ, du), ("Unknown continent: " + du))
2128+ let gO = hu(fd._9, (dI(kD) / cG))
2129+ let iN = valueOrElse(getInteger(eq()), (ep + 1))
2130+ let kV = toString(iN)
2131+ let iO = Issue(eH(kV, kD), makeString([kV, kD, gO, du], "_"), 1, 0, false)
2132+ let bq = calculateAssetId(iO)
2133+ let kW = toBase58String(bq)
2134+ let jT = makeString(fe((kG > 0), split(ip[bk], "_"), kG), "_")
2135+ let kX = dw(d)
2136+ let kY = valueOrElse(getInteger(kX), 0)
2137+ $Tuple2((((((((((((((((fd._5 :+ (if ((size(fd._7) > 0))
2138+ then StringEntry(kQ, makeString_11C(fd._7, "_"))
2139+ else DeleteEntry(kQ))) :+ IntegerEntry(kX, if ((fd._8 > kY))
21382140 then 0
2139- else (kX - fc._8))) :+ IntegerEntry(ep(), (iM + 1))) :+ iN) :+ StringEntry(es(kU), kV)) :+ StringEntry(bo(kV), c)) :+ StringEntry(ev(kU), c)) :+ IntegerEntry(bs(aE, kV), fc._2)) :+ IntegerEntry(by(kV), al)) :+ IntegerEntry(eu(kV, c), al)) :+ StringEntry(hL, makeString([io[bh], fc._4, jS, io[bk]], ":"))) :+ StringEntry(dr(), makeString(fc._6, "_"))) :+ StringEntry(ds(dt), makeString(fc._10, "_"))) :+ StringEntry(bJ(A), makeString([dt, "L", kV], "_"))) :+ ScriptTransfer(addressFromStringValue(c), 1, bp)), kV)
2141+ else (kY - fd._8))) :+ IntegerEntry(eq(), (iN + 1))) :+ iO) :+ StringEntry(et(kV), kW)) :+ StringEntry(bp(kW), d)) :+ StringEntry(ew(kV), d)) :+ IntegerEntry(bt(aF, kW), fd._2)) :+ IntegerEntry(bz(kW), am)) :+ IntegerEntry(ev(kW, d), am)) :+ StringEntry(hM, makeString([ip[bi], fd._4, jT, ip[bl]], ":"))) :+ StringEntry(ds(), makeString(fd._6, "_"))) :+ StringEntry(dt(du), makeString(fd._10, "_"))) :+ StringEntry(bK(B), makeString([du, "L", kW], "_"))) :+ ScriptTransfer(addressFromStringValue(d), 1, bq)), kW)
21402142 }
21412143 }
21422144
21432145
2144-func kY (c,kE) = kB("M", 3, "SSSS", c, kE, 0)
2145-
2146-
2147-func kZ (c,kE) = kB("L", 4, "SMM", c, kE, (cA * 4))
2148-
2149-
2150-func la (c,kE) = kB("XL", 5, "SSSML", c, kE, (cA * 47))
2151-
2152-
2153-func lb (c,kE) = kB("XXL", 6, "LXL", c, kE, (cA * 54))
2154-
2155-
2156-func lc (c,kE) = {
2157- let cy = size(kE)
2158- if ((4 == cy))
2159- then kY(c, kE)
2160- else if ((3 == cy))
2161- then kZ(c, kE)
2162- else if ((5 == cy))
2163- then la(c, kE)
2164- else if ((2 == cy))
2165- then lb(c, kE)
2146+func kZ (d,kF) = kC("M", 3, "SSSS", d, kF, 0)
2147+
2148+
2149+func la (d,kF) = kC("L", 4, "SMM", d, kF, (cB * 4))
2150+
2151+
2152+func lb (d,kF) = kC("XL", 5, "SSSML", d, kF, (cB * 47))
2153+
2154+
2155+func lc (d,kF) = kC("XXL", 6, "LXL", d, kF, (cB * 54))
2156+
2157+
2158+func ld (d,kF) = {
2159+ let cz = size(kF)
2160+ if ((4 == cz))
2161+ then kZ(d, kF)
2162+ else if ((3 == cz))
2163+ then la(d, kF)
2164+ else if ((5 == cz))
2165+ then lb(d, kF)
2166+ else if ((2 == cz))
2167+ then lc(d, kF)
21662168 else throw("Unknown merge")
21672169 }
21682170
21692171
2170-func ld (bL) = {
2171- let le = getString(bH(bL))
2172- if (if (cv)
2173- then isDefined(le)
2172+func le (bM) = {
2173+ let lf = getString(bI(bM))
2174+ if (if (cw)
2175+ then isDefined(lf)
21742176 else false)
21752177 then {
2176- let A = value(le)
2177- let lf = bJ(A)
2178- let cf = split(valueOrElse(getString(lf), aJ), "_")
2179- let ci = parseIntValue(cf[bl])
2180- if (if ((cf[bm] != "D"))
2178+ let B = value(lf)
2179+ let lg = bK(B)
2180+ let cg = split(valueOrElse(getString(lg), aK), "_")
2181+ let cj = parseIntValue(cg[bm])
2182+ if (if ((cg[bn] != "D"))
21812183 then true
2182- else (lastBlock.timestamp > (ci + aN)))
2184+ else (lastBlock.timestamp > (cj + aO)))
21832185 then nil
21842186 else {
2185- let kt = z(A)
2186- if ((parseIntValue(cf[bn]) >= 3))
2187+ let ku = A(B)
2188+ if ((parseIntValue(cg[bo]) >= 3))
21872189 then {
2188- let kw = invoke(dc, "sendDeliveryReward", [bL], nil)
2189- if ((kw == kw))
2190+ let kx = invoke(dd, "sendDeliveryReward", [bM], nil)
2191+ if ((kx == kx))
21902192 then nil
21912193 else throw("Strict value is not equal to itself.")
21922194 }
21932195 else (({
2194- let kx = valueOrElse(getInteger(dc, bO), 0)
2195- let ky = invoke(dc, "updateDeliveryLocked", [(kx - aM)], nil)
2196- if ((ky == ky))
2197- then if ((0 >= getIntegerValue(kt)))
2196+ let ky = valueOrElse(getInteger(dd, bP), 0)
2197+ let kz = invoke(dd, "updateDeliveryLocked", [(ky - aN)], nil)
2198+ if ((kz == kz))
2199+ then if ((0 >= getIntegerValue(ku)))
21982200 then nil
21992201 else {
2200- let lg = invoke(this, "saveInteger", [T(A), (ci + a)], nil)
2201- if ((lg == lg))
2202+ let lh = invoke(this, "saveInteger", [U(B), (cj + b)], nil)
2203+ if ((lh == lh))
22022204 then nil
22032205 else throw("Strict value is not equal to itself.")
22042206 }
22052207 else throw("Strict value is not equal to itself.")
2206- } :+ IntegerEntry(kt, getIntegerValue(J(A)))) :+ StringEntry(lf, getStringValue(K(A))))
2208+ } :+ IntegerEntry(ku, getIntegerValue(K(B)))) :+ StringEntry(lg, getStringValue(L(B))))
22072209 }
22082210 }
22092211 else nil
22102212 }
22112213
22122214
2213-func lh (gK) = if (if ((gK.originCaller != db))
2214- then valueOrElse(getBoolean(dK()), false)
2215+func li (gL) = if (if ((gL.originCaller != dc))
2216+ then valueOrElse(getBoolean(dL()), false)
22152217 else false)
22162218 then throw("Contracts are under maintenance")
22172219 else {
2218- let bL = toString(gK.originCaller)
2219- (ld(bL) :+ StringEntry(dL(bL), toBase58String(gK.transactionId)))
2220+ let bM = toString(gL.originCaller)
2221+ (le(bM) :+ StringEntry(dM(bM), toBase58String(gL.transactionId)))
22202222 }
22212223
22222224
2223-func li (gK) = if (if ((gK.originCaller != db))
2224- then valueOrElse(getBoolean(dK()), false)
2225+func lj (gL) = if (if ((gL.originCaller != dc))
2226+ then valueOrElse(getBoolean(dL()), false)
22252227 else false)
22262228 then throw("Contracts are under maintenance")
2227- else [StringEntry(dL(toString(gK.originCaller)), toBase58String(gK.transactionId))]
2228-
2229-
2230-@Callable(gK)
2231-func constructorV1 (lj) = if ((gK.caller != this))
2229+ else [StringEntry(dM(toString(gL.originCaller)), toBase58String(gL.transactionId))]
2230+
2231+
2232+@Callable(gL)
2233+func constructorV1 (lk) = if ((gL.caller != this))
22322234 then throw("Permission denied")
2233- else [StringEntry(cV(), lj)]
2234-
2235-
2236-
2237-@Callable(gK)
2238-func saveInteger (cN,eI) = if ((gK.caller != this))
2235+ else [StringEntry(cW(), lk)]
2236+
2237+
2238+
2239+@Callable(gL)
2240+func saveInteger (cO,eJ) = if ((gL.caller != this))
22392241 then throw("saveInteger is not public method")
2240- else [IntegerEntry(cN, eI)]
2241-
2242-
2243-
2244-@Callable(gK)
2245-func setBlocked (lk) = if ((gK.caller != this))
2242+ else [IntegerEntry(cO, eJ)]
2243+
2244+
2245+
2246+@Callable(gL)
2247+func setBlocked (ll) = if ((gL.caller != this))
22462248 then throw("permission denied")
2247- else [BooleanEntry(dK(), lk)]
2248-
2249-
2250-
2251-@Callable(gK)
2249+ else [BooleanEntry(dL(), ll)]
2250+
2251+
2252+
2253+@Callable(gL)
22522254 func stakeLand () = {
2253- let ll = lh(gK)
2254- if ((size(gK.payments) != 1))
2255+ let lm = li(gL)
2256+ if ((size(gL.payments) != 1))
22552257 then throw("Exactly one payment required")
22562258 else {
2257- let lm = value(gK.payments[0])
2258- let bp = value(lm.assetId)
2259- let cM = toString(gK.caller)
2260- if ((lm.amount != 1))
2261- then throw((("NFT " + aC) + " token should be attached as payment"))
2259+ let ln = value(gL.payments[0])
2260+ let bq = value(ln.assetId)
2261+ let cN = toString(gL.caller)
2262+ if ((ln.amount != 1))
2263+ then throw((("NFT " + aD) + " token should be attached as payment"))
22622264 else {
2263- let js = value(assetInfo(bp))
2264- if ((js.issuer != this))
2265+ let jt = value(assetInfo(bq))
2266+ if ((jt.issuer != this))
22652267 then throw("Unknown issuer of token")
2266- else if (!(contains(js.name, aC)))
2267- then throw((("Only NFT " + aC) + " tokens are accepted"))
2268+ else if (!(contains(jt.name, aD)))
2269+ then throw((("Only NFT " + aD) + " tokens are accepted"))
22682270 else {
2269- let ln = drop(js.name, 4)
2270- let et = if (contains(ln, "XXL"))
2271- then dropRight(ln, 3)
2272- else if (contains(ln, "XL"))
2273- then dropRight(ln, 2)
2274- else dropRight(ln, 1)
2275- if (!(isDefined(parseInt(et))))
2276- then throw(("Cannot parse land number from " + js.name))
2271+ let lo = drop(jt.name, 4)
2272+ let eu = if (contains(lo, "XXL"))
2273+ then dropRight(lo, 3)
2274+ else if (contains(lo, "XL"))
2275+ then dropRight(lo, 2)
2276+ else dropRight(lo, 1)
2277+ if (!(isDefined(parseInt(eu))))
2278+ then throw(("Cannot parse land number from " + jt.name))
22772279 else {
2278- let P = toBase58String(bp)
2279- let jt = br(P)
2280- if (isDefined(getInteger(jt)))
2281- then throw((("NFT " + js.name) + " is already staked"))
2280+ let Q = toBase58String(bq)
2281+ let ju = bs(Q)
2282+ if (isDefined(getInteger(ju)))
2283+ then throw((("NFT " + jt.name) + " is already staked"))
22822284 else {
2283- let jw = split(js.description, "_")
2284- let gG = gM(jw[dj])
2285- let ji = dH(jw[di])
2286- let hZ = (ji / cF)
2287- let fb = gL(gG, hZ, 1)
2288- let lo = ds(jw[dk])
2289- let kT = split(valueOrElse(getString(lo), "0_0_0_0_0_0"), "_")
2290- let lp = makeString(gE(kT, gG, hZ, 1), "_")
2291- let kP = du(cM)
2292- let kQ = getString(kP)
2293- let kM = if (isDefined(kQ))
2294- then split_51C(value(kQ), "_")
2285+ let jx = split(jt.description, "_")
2286+ let gH = gN(jx[dk])
2287+ let jj = dI(jx[dj])
2288+ let ia = (jj / cG)
2289+ let fc = gM(gH, ia, 1)
2290+ let lp = dt(jx[dl])
2291+ let kU = split(valueOrElse(getString(lp), "0_0_0_0_0_0"), "_")
2292+ let lq = makeString(gF(kU, gH, ia, 1), "_")
2293+ let kQ = dv(cN)
2294+ let kR = getString(kQ)
2295+ let kN = if (isDefined(kR))
2296+ then split_51C(value(kR), "_")
22952297 else nil
2296- if (containsElement(kM, P))
2297- then throw(("Your staked lands already contain " + P))
2298- else if ((size(kM) >= aG))
2299- then throw((("Your already staked max (" + toString(aG)) + ") lands"))
2298+ if (containsElement(kN, Q))
2299+ then throw(("Your staked lands already contain " + Q))
2300+ else if ((size(kN) >= aH))
2301+ then throw((("Your already staked max (" + toString(aH)) + ") lands"))
23002302 else {
2301- let ia = valueOrElse(getInteger(by(P)), 0)
2302- let kW = dv(cM)
2303- let lq = valueOrElse(getInteger(kW), 0)
2304- let lr = invoke(de, "onStakeUnstakeLand", [cM], nil)
2305- $Tuple2(([IntegerEntry(jt, lastBlock.timestamp), IntegerEntry(bu(aC, P, cM), lastBlock.timestamp), StringEntry(kP, makeString_11C((kM :+ P), "_")), IntegerEntry(kW, (lq + ji)), StringEntry(bo(P), cM), StringEntry(ev(et), cM), IntegerEntry(eu(P, cM), ia), StringEntry(dr(), fb), StringEntry(lo, lp)] ++ ll), lr)
2303+ let ib = valueOrElse(getInteger(bz(Q)), 0)
2304+ let kX = dw(cN)
2305+ let lr = valueOrElse(getInteger(kX), 0)
2306+ let ls = invoke(df, "onStakeUnstakeLand", [cN], nil)
2307+ $Tuple2(([IntegerEntry(ju, lastBlock.timestamp), IntegerEntry(bv(aD, Q, cN), lastBlock.timestamp), StringEntry(kQ, makeString_11C((kN :+ Q), "_")), IntegerEntry(kX, (lr + jj)), StringEntry(bp(Q), cN), StringEntry(ew(eu), cN), IntegerEntry(ev(Q, cN), ib), StringEntry(ds(), fc), StringEntry(lp, lq)] ++ lm), ls)
23062308 }
23072309 }
23082310 }
23132315
23142316
23152317
2316-@Callable(gK)
2317-func unstakeLand (jo) = {
2318- let ll = lh(gK)
2319- if ((size(gK.payments) != 0))
2318+@Callable(gL)
2319+func unstakeLand (jp) = {
2320+ let lm = li(gL)
2321+ if ((size(gL.payments) != 0))
23202322 then throw("No payments required")
23212323 else {
2322- let c = toString(gK.caller)
2323- let ga = jm(c, eA, jo)
2324- let P = ga._2
2325- let jw = ga._3
2326- let kP = du(c)
2327- let gG = gM(jw[dj])
2328- let ji = dH(jw[di])
2329- let hZ = (ji / cF)
2330- let fb = gL(gG, hZ, -1)
2331- let lo = ds(jw[dk])
2332- let kT = split(valueOrElse(getString(lo), "0_0_0_0_0_0"), "_")
2333- let lp = makeString(gE(kT, gG, hZ, -1), "_")
2334- let jT = jJ(c, P, ji, eA)
2335- let kM = split_51C(valueOrElse(getString(kP), ""), "_")
2336- let da = indexOf(kM, P)
2337- if (!(isDefined(da)))
2338- then throw(("Your staked lands don't contain " + P))
2324+ let d = toString(gL.caller)
2325+ let gb = jn(d, eB, jp)
2326+ let Q = gb._2
2327+ let jx = gb._3
2328+ let kQ = dv(d)
2329+ let gH = gN(jx[dk])
2330+ let jj = dI(jx[dj])
2331+ let ia = (jj / cG)
2332+ let fc = gM(gH, ia, -1)
2333+ let lp = dt(jx[dl])
2334+ let kU = split(valueOrElse(getString(lp), "0_0_0_0_0_0"), "_")
2335+ let lq = makeString(gF(kU, gH, ia, -1), "_")
2336+ let jU = jK(d, Q, jj, eB)
2337+ let kN = split_51C(valueOrElse(getString(kQ), ""), "_")
2338+ let db = indexOf(kN, Q)
2339+ if (!(isDefined(db)))
2340+ then throw(("Your staked lands don't contain " + Q))
23392341 else {
2340- let ax = lastBlock.timestamp
2341- let ls = valueOrElse(getInteger(dd, bK(c)), 0)
2342- if ((ls >= ax))
2343- then throw(("Your gWL are taking part in voting, cannot unstake until " + toString(ls)))
2342+ let ay = lastBlock.timestamp
2343+ let lt = valueOrElse(getInteger(de, bL(d)), 0)
2344+ if ((lt >= ay))
2345+ then throw(("Your gWL are taking part in voting, cannot unstake until " + toString(lt)))
23442346 else {
2345- let lt = (valueOrElse(getInteger(de, b(c)), 0) + cB)
2346- if ((lt > ax))
2347- then throw(("Your staked lands took part in arbitrage, cannot unstake until " + toString(lt)))
2347+ let lu = (valueOrElse(getInteger(df, c(d)), 0) + cC)
2348+ if ((lu > ay))
2349+ then throw(("Your staked lands took part in arbitrage, cannot unstake until " + toString(lu)))
23482350 else {
2349- let kW = dv(c)
2350- let kX = valueOrElse(getInteger(kW), 0)
2351- let lu = if ((ji > kX))
2351+ let kX = dw(d)
2352+ let kY = valueOrElse(getInteger(kX), 0)
2353+ let lv = if ((jj > kY))
23522354 then 0
2353- else (kX - ji)
2354- let lr = invoke(de, "onStakeUnstakeLand", [c], nil)
2355- $Tuple2(([ScriptTransfer(gK.caller, 1, fromBase58String(P)), DeleteEntry(br(P)), DeleteEntry(bu(aC, P, c)), StringEntry(dr(), fb), StringEntry(lo, lp), StringEntry(jT._2, makeString(jT._3, ":")), if ((size(kM) > 1))
2356- then StringEntry(kP, makeString_11C(removeByIndex(kM, value(da)), "_"))
2357- else DeleteEntry(kP), IntegerEntry(kW, lu)] ++ ll), lr)
2355+ else (kY - jj)
2356+ let ls = invoke(df, "onStakeUnstakeLand", [d], nil)
2357+ $Tuple2(([ScriptTransfer(gL.caller, 1, fromBase58String(Q)), DeleteEntry(bs(Q)), DeleteEntry(bv(aD, Q, d)), StringEntry(ds(), fc), StringEntry(lp, lq), StringEntry(jU._2, makeString(jU._3, ":")), if ((size(kN) > 1))
2358+ then StringEntry(kQ, makeString_11C(removeByIndex(kN, value(db)), "_"))
2359+ else DeleteEntry(kQ), IntegerEntry(kX, lv)] ++ lm), ls)
23582360 }
23592361 }
23602362 }
23632365
23642366
23652367
2366-@Callable(gK)
2368+@Callable(gL)
23672369 func stakeDuck () = {
2368- let ll = lh(gK)
2369- if ((size(gK.payments) != 1))
2370+ let lm = li(gL)
2371+ if ((size(gL.payments) != 1))
23702372 then throw("Exactly one payment required")
23712373 else {
2372- let lm = value(gK.payments[0])
2373- let bp = value(lm.assetId)
2374- let cM = toString(gK.caller)
2375- if ((lm.amount != 1))
2376- then throw((("NFT " + aD) + " token should be attached as payment"))
2374+ let ln = value(gL.payments[0])
2375+ let bq = value(ln.assetId)
2376+ let cN = toString(gL.caller)
2377+ if ((ln.amount != 1))
2378+ then throw((("NFT " + aE) + " token should be attached as payment"))
23772379 else {
2378- let js = value(assetInfo(bp))
2379- if (if ((js.issuer != dX))
2380- then (js.issuer != dY)
2380+ let jt = value(assetInfo(bq))
2381+ if (if ((jt.issuer != dY))
2382+ then (jt.issuer != dZ)
23812383 else false)
2382- then throw((("Unknown issuer of " + aD) + " token"))
2383- else if (!(contains(js.name, aD)))
2384- then throw((("Only NFT " + aD) + " tokens are accepted"))
2384+ then throw((("Unknown issuer of " + aE) + " token"))
2385+ else if (!(contains(jt.name, aE)))
2386+ then throw((("Only NFT " + aE) + " tokens are accepted"))
23852387 else {
2386- let lv = toBase58String(bp)
2387- let jt = br(lv)
2388- if (isDefined(getInteger(jt)))
2389- then throw((("NFT " + js.name) + " is already staked"))
2390- else if (isDefined(getString(bH(cM))))
2391- then throw(("You already staked one duck: " + js.name))
2388+ let lw = toBase58String(bq)
2389+ let ju = bs(lw)
2390+ if (isDefined(getInteger(ju)))
2391+ then throw((("NFT " + jt.name) + " is already staked"))
2392+ else if (isDefined(getString(bI(cN))))
2393+ then throw(("You already staked one duck: " + jt.name))
23922394 else {
2393- let lf = bJ(lv)
2394- let cd = getString(lf)
2395- let hL = bI(lv)
2396- let lw = getString(hL)
2397- let jb = z(lv)
2398- let jc = ag(valueOrElse(getInteger(D(lv)), 0))
2399- let ku = valueOrElse(getInteger(jb), jc)
2400- ([IntegerEntry(jt, lastBlock.timestamp), IntegerEntry(bu(aD, toBase58String(bp), cM), lastBlock.timestamp), StringEntry(bG(lv), cM), StringEntry(bH(cM), lv)] ++ (if (isDefined(cd))
2395+ let lg = bK(lw)
2396+ let ce = getString(lg)
2397+ let hM = bJ(lw)
2398+ let lx = getString(hM)
2399+ let jc = A(lw)
2400+ let jd = ah(valueOrElse(getInteger(E(lw)), 0))
2401+ let kv = valueOrElse(getInteger(jc), jd)
2402+ ([IntegerEntry(ju, lastBlock.timestamp), IntegerEntry(bv(aE, toBase58String(bq), cN), lastBlock.timestamp), StringEntry(bH(lw), cN), StringEntry(bI(cN), lw)] ++ (if (isDefined(ce))
24012403 then nil
2402- else ([StringEntry(lf, aJ)] ++ (if (isDefined(lw))
2404+ else ([StringEntry(lg, aK)] ++ (if (isDefined(lx))
24032405 then nil
2404- else (([StringEntry(hL, "0:0_0_0_0_0_0:0_0_0_0_0_0:")] :+ IntegerEntry(jb, ku)) ++ ll)))))
2406+ else (([StringEntry(hM, "0:0_0_0_0_0_0:0_0_0_0_0_0:")] :+ IntegerEntry(jc, kv)) ++ lm)))))
24052407 }
24062408 }
24072409 }
24102412
24112413
24122414
2413-@Callable(gK)
2414-func unstakeDuck (lv) = {
2415- let ll = lh(gK)
2416- if ((size(gK.payments) != 0))
2415+@Callable(gL)
2416+func unstakeDuck (lw) = {
2417+ let lm = li(gL)
2418+ if ((size(gL.payments) != 0))
24172419 then throw("No payments required")
24182420 else {
2419- let bp = fromBase58String(lv)
2420- let cM = toString(gK.caller)
2421- let js = value(assetInfo(bp))
2422- let jt = br(lv)
2423- if (!(isDefined(getInteger(jt))))
2424- then throw((("NFT " + js.name) + " is not staked"))
2425- else if (!(isDefined(getString(bH(cM)))))
2426- then throw((("The duck " + js.name) + " is not staked"))
2421+ let bq = fromBase58String(lw)
2422+ let cN = toString(gL.caller)
2423+ let jt = value(assetInfo(bq))
2424+ let ju = bs(lw)
2425+ if (!(isDefined(getInteger(ju))))
2426+ then throw((("NFT " + jt.name) + " is not staked"))
2427+ else if (!(isDefined(getString(bI(cN)))))
2428+ then throw((("The duck " + jt.name) + " is not staked"))
24272429 else {
2428- let jv = valueOrErrorMessage(getString(bG(lv)), (("NFT " + js.name) + " is orphaned"))
2429- if ((jv != cM))
2430+ let jw = valueOrErrorMessage(getString(bH(lw)), (("NFT " + jt.name) + " is orphaned"))
2431+ if ((jw != cN))
24302432 then throw("Staked NFT is not yours")
2431- else if (kp(lv))
2433+ else if (kq(lw))
24322434 then throw("unstakeDuck_checkTournament")
2433- else if (kq(lv))
2435+ else if (kr(lw))
24342436 then throw("unstakeDuck_checkDelivery")
24352437 else {
2436- let jb = z(lv)
2437- let jc = ag(valueOrElse(getInteger(D(lv)), 0))
2438- let as = valueOrElse(getInteger(jb), jc)
2439- if ((jc > as))
2440- then throw((("Please heal your duck to " + toString(jc)) + "hp before unstaking"))
2441- else ([ScriptTransfer(gK.caller, 1, bp), DeleteEntry(jt), DeleteEntry(jb), DeleteEntry(bJ(lv)), DeleteEntry(bG(lv)), DeleteEntry(bu(aD, lv, cM)), DeleteEntry(bH(cM))] ++ ll)
2438+ let jc = A(lw)
2439+ let jd = ah(valueOrElse(getInteger(E(lw)), 0))
2440+ let at = valueOrElse(getInteger(jc), jd)
2441+ if ((jd > at))
2442+ then throw((("Please heal your duck to " + toString(jd)) + "hp before unstaking"))
2443+ else ([ScriptTransfer(gL.caller, 1, bq), DeleteEntry(ju), DeleteEntry(jc), DeleteEntry(bK(lw)), DeleteEntry(bH(lw)), DeleteEntry(bv(aE, lw, cN)), DeleteEntry(bI(cN))] ++ lm)
24422444 }
24432445 }
24442446 }
24462448
24472449
24482450
2449-@Callable(gK)
2450-func claimRes (eI,lx) = {
2451- let ll = lh(gK)
2452- if ((size(gK.payments) != 0))
2451+@Callable(gL)
2452+func claimRes (eJ,ly) = {
2453+ let lm = li(gL)
2454+ if ((size(gL.payments) != 0))
24532455 then throw("No payments required")
24542456 else {
2455- let c = toString(gK.originCaller)
2456- let fj = jx(c, eI, eA, lx)
2457- let A = valueOrErrorMessage(getString(bH(c)), "You don't have a duck staked")
2458- $Tuple2(((((fj._1 ++ jZ(A, fraction(U, eI, cE))._1) :+ StringEntry(fj._2, makeString(fj._3, ":"))) :+ StringEntry(fj._4, makeString(fj._5, ":"))) ++ ll), fj._3[bi])
2459- }
2460- }
2461-
2462-
2463-
2464-@Callable(gK)
2465-func claimResToWH (eI,lx) = {
2466- let ll = lh(gK)
2467- if ((size(gK.payments) != 0))
2457+ let d = toString(gL.originCaller)
2458+ let fk = jy(d, eJ, eB, ly)
2459+ let B = valueOrErrorMessage(getString(bI(d)), "You don't have a duck staked")
2460+ $Tuple2(((((fk._1 ++ ka(B, fraction(V, eJ, cF))._1) :+ StringEntry(fk._2, makeString(fk._3, ":"))) :+ StringEntry(fk._4, makeString(fk._5, ":"))) ++ lm), fk._3[bj])
2461+ }
2462+ }
2463+
2464+
2465+
2466+@Callable(gL)
2467+func claimResToWH (eJ,ly) = {
2468+ let lm = li(gL)
2469+ if ((size(gL.payments) != 0))
24682470 then throw("No payments required")
24692471 else {
2470- let c = toString(gK.originCaller)
2471- let fj = jx(c, eI, ez, lx)
2472- $Tuple2(((((fj._1 ++ kf(c, fraction(U, eI, cE))._1) :+ StringEntry(fj._2, makeString(fj._3, ":"))) :+ StringEntry(fj._4, makeString(fj._5, ":"))) ++ ll), fj._5[aZ])
2473- }
2474- }
2475-
2476-
2477-
2478-@Callable(gK)
2479-func flight (iQ,iR) = {
2480- let ll = li(gK)
2481- if ((size(gK.payments) != 0))
2472+ let d = toString(gL.originCaller)
2473+ let fk = jy(d, eJ, eA, ly)
2474+ $Tuple2(((((fk._1 ++ kg(d, fraction(V, eJ, cF))._1) :+ StringEntry(fk._2, makeString(fk._3, ":"))) :+ StringEntry(fk._4, makeString(fk._5, ":"))) ++ lm), fk._5[ba])
2475+ }
2476+ }
2477+
2478+
2479+
2480+@Callable(gL)
2481+func flight (iR,iS) = {
2482+ let lm = lj(gL)
2483+ if ((size(gL.payments) != 0))
24822484 then throw("No payments required")
24832485 else {
2484- let bL = toString(gK.caller)
2485- let hp = iP(bL, iQ, iR)
2486- let iV = hp._1
2487- let A = hp._2
2488- let lf = bJ(A)
2489- let jq = valueOrElse(getString(lf), aJ)
2490- let iX = hp._4
2491- if ((iX == jq))
2486+ let bM = toString(gL.caller)
2487+ let hq = iQ(bM, iR, iS)
2488+ let iW = hq._1
2489+ let B = hq._2
2490+ let lg = bK(B)
2491+ let jr = valueOrElse(getString(lg), aK)
2492+ let iY = hq._4
2493+ if ((iY == jr))
24922494 then throw("You can't fly to the same location")
24932495 else {
2494- let cr = split(iX, "_")
2495- let ly = (cr[bm] == "T")
2496- let lz = (cr[bm] == "D")
2497- let gx = F(A)
2498- let lA = valueOrElse(getString(gx), ",;,_,;,_,;,_,;,_,;,_,;,")
2499- let lB = fk(lA, hp._5)
2500- let lC = lB._1
2501- let lD = lB._2
2502- let lE = if (!(cm(df, jq)))
2503- then if (!(ck(iX)))
2504- then cp(jq, iX, 5)
2505- else if ((iV > 0))
2506- then $Tuple2(iX, iV)
2507- else $Tuple2(jq, 0)
2508- else if (cc(df, jq))
2509- then if (!(cc(df, iX)))
2496+ let cs = split(iY, "_")
2497+ let lz = (cs[bn] == "T")
2498+ let lA = (cs[bn] == "D")
2499+ let gy = G(B)
2500+ let lB = valueOrElse(getString(gy), ",;,_,;,_,;,_,;,_,;,_,;,")
2501+ let lC = fl(lB, hq._5)
2502+ let lD = lC._1
2503+ let lE = lC._2
2504+ let lF = if (!(cn(dg, jr)))
2505+ then if (!(cl(iY)))
2506+ then cq(jr, iY, 5)
2507+ else if ((iW > 0))
2508+ then $Tuple2(iY, iW)
2509+ else $Tuple2(jr, 0)
2510+ else if (cd(dg, jr))
2511+ then if (!(cd(dg, iY)))
25102512 then throw("Your duck is taking part in the tournament")
25112513 else {
2512- let lF = parseIntValue(cr[bn])
2513- let lG = split(jq, "_")
2514- let ce = valueOrElse(getInteger(df, bP), 0)
2515- if ((lF != (parseIntValue(lG[bn]) + 1)))
2516- then cp(jq, iX, 7)
2517- else if ((iV > 0))
2514+ let lG = parseIntValue(cs[bo])
2515+ let lH = split(jr, "_")
2516+ let cf = valueOrElse(getInteger(dg, bQ), 0)
2517+ if ((lG != (parseIntValue(lH[bo]) + 1)))
2518+ then cq(jr, iY, 7)
2519+ else if ((iW > 0))
25182520 then {
2519- let lH = valueOrElse(getInteger(df, bT(ce, A)), 0)
2520- let lI = if ((lF > lH))
2521- then invoke(df, "saveDuckResult", [A, lF], nil)
2521+ let lI = valueOrElse(getInteger(dg, bU(cf, B)), 0)
2522+ let lJ = if ((lG > lI))
2523+ then invoke(dg, "saveDuckResult", [B, lG], nil)
25222524 else unit
2523- if ((lI == lI))
2524- then $Tuple2(iX, iV)
2525+ if ((lJ == lJ))
2526+ then $Tuple2(iY, iW)
25252527 else throw("Strict value is not equal to itself.")
25262528 }
2527- else $Tuple2(jq, 0)
2529+ else $Tuple2(jr, 0)
25282530 }
2529- else if (!(ch(jq)))
2531+ else if (!(ci(jr)))
25302532 then {
2531- let lJ = dE(invoke(this, "autoExitDelivery", [A, iV], nil))
2532- if ((lJ == lJ))
2533- then if (lz)
2534- then lJ
2535- else if ((iV > 0))
2536- then $Tuple2(iX, iV)
2537- else $Tuple2(lJ._1, 0)
2533+ let lK = dF(invoke(this, "autoExitDelivery", [B, iW], nil))
2534+ if ((lK == lK))
2535+ then if (lA)
2536+ then lK
2537+ else if ((iW > 0))
2538+ then $Tuple2(iY, iW)
2539+ else $Tuple2(lK._1, 0)
25382540 else throw("Strict value is not equal to itself.")
25392541 }
2540- else if (!(lz))
2542+ else if (!(lA))
25412543 then throw("Your duck is taking part in delivery")
2542- else if (!(ch(iX)))
2543- then cp(jq, iX, 13)
2544+ else if (!(ci(iY)))
2545+ then cq(jr, iY, 13)
25442546 else {
2545- let lF = parseIntValue(cr[bn])
2546- let lG = split(jq, "_")
2547- if ((lF != (parseIntValue(lG[bn]) + 1)))
2548- then cp(jq, iX, 14)
2549- else if (if ((iV > 0))
2550- then (3 > lF)
2547+ let lG = parseIntValue(cs[bo])
2548+ let lH = split(jr, "_")
2549+ if ((lG != (parseIntValue(lH[bo]) + 1)))
2550+ then cq(jr, iY, 14)
2551+ else if (if ((iW > 0))
2552+ then (3 > lG)
25512553 else false)
2552- then $Tuple2(iX, iV)
2554+ then $Tuple2(iY, iW)
25532555 else {
2554- let lJ = dE(invoke(this, "autoExitDelivery", [A, iV], nil))
2555- if ((lJ == lJ))
2556- then lJ
2556+ let lK = dF(invoke(this, "autoExitDelivery", [B, iW], nil))
2557+ if ((lK == lK))
2558+ then lK
25572559 else throw("Strict value is not equal to itself.")
25582560 }
25592561 }
2560- let lK = lE._1
2561- let lL = lE._2
2562- $Tuple2(((([StringEntry(lf, lK), StringEntry(gx, lC), IntegerEntry(z(A), iV)] ++ ll) ++ (if (lD)
2563- then [StringEntry(L(A), "0_0_0_0_0")]
2564- else nil)) ++ jZ(A, if ((iV > 0))
2565- then V
2566- else W)._1), hp._3)
2562+ let lL = lF._1
2563+ let lM = lF._2
2564+ $Tuple2(((([StringEntry(lg, lL), StringEntry(gy, lD), IntegerEntry(A(B), iW)] ++ lm) ++ (if (lE)
2565+ then [StringEntry(M(B), "0_0_0_0_0")]
2566+ else nil)) ++ ka(B, if ((iW > 0))
2567+ then W
2568+ else X)._1), hq._3)
25672569 }
25682570 }
25692571 }
25702572
25712573
25722574
2573-@Callable(gK)
2574-func heal (lM,lN,lO) = {
2575- let ll = lh(gK)
2576- if (if (if ((0 > lM))
2577- then true
2578- else (0 > lN))
2575+@Callable(gL)
2576+func heal (lN,lO,lP) = {
2577+ let lm = li(gL)
2578+ if (if (if ((0 > lN))
25792579 then true
25802580 else (0 > lO))
2581+ then true
2582+ else (0 > lP))
25812583 then throw("Quantity cannot be negative")
25822584 else {
2583- let A = valueOrErrorMessage(getString(bH(toString(gK.caller))), "You don't have a duck staked")
2584- if (kp(A))
2585+ let B = valueOrErrorMessage(getString(bI(toString(gL.caller))), "You don't have a duck staked")
2586+ if (kq(B))
25852587 then throw("heal_checkTournament")
2586- else if (kq(A))
2588+ else if (kr(B))
25872589 then throw("heal_checkDelivery")
25882590 else {
2589- let lP = [lM, lN, lO]
2590- let jb = z(A)
2591- let jc = ag(valueOrElse(getInteger(D(A)), 0))
2592- let lQ = valueOrElse(getInteger(jb), jc)
2593- if ((lQ >= jc))
2594- then throw((("HP should be < " + toString(jc)) + " to heal"))
2591+ let lQ = [lN, lO, lP]
2592+ let jc = A(B)
2593+ let jd = ah(valueOrElse(getInteger(E(B)), 0))
2594+ let lR = valueOrElse(getInteger(jc), jd)
2595+ if ((lR >= jd))
2596+ then throw((("HP should be < " + toString(jd)) + " to heal"))
25952597 else {
2596- let hL = bI(A)
2597- let io = hK(hL)
2598- let lR = if ((io[bk] == ""))
2598+ let hM = bJ(B)
2599+ let ip = hL(hM)
2600+ let lS = if ((ip[bl] == ""))
25992601 then nil
2600- else split_4C(io[bk], "_")
2601- func lS (eR,co) = {
2602- let dA = eR._2
2603- let hg = if ((size(lR) > dA))
2604- then parseIntValue(lR[dA])
2602+ else split_4C(ip[bl], "_")
2603+ func lT (eS,cp) = {
2604+ let dB = eS._2
2605+ let hh = if ((size(lS) > dB))
2606+ then parseIntValue(lS[dB])
26052607 else 0
2606- if ((3 > dA))
2608+ if ((3 > dB))
26072609 then {
2608- let lT = lP[dA]
2609- if ((lT > hg))
2610- then throw(((("You have only " + toString(hg)) + " of ") + aO[dA]))
2611- else $Tuple3((eR._1 :+ toString((hg - lT))), (dA + 1), (eR._3 + (parseIntValue(split(co, "_")[aU]) * lT)))
2610+ let lU = lQ[dB]
2611+ if ((lU > hh))
2612+ then throw(((("You have only " + toString(hh)) + " of ") + aP[dB]))
2613+ else $Tuple3((eS._1 :+ toString((hh - lU))), (dB + 1), (eS._3 + (parseIntValue(split(cp, "_")[aV]) * lU)))
26122614 }
2613- else $Tuple3((eR._1 :+ toString(hg)), (dA + 1), eR._3)
2615+ else $Tuple3((eS._1 :+ toString(hh)), (dB + 1), eS._3)
26142616 }
26152617
2616- let fj = {
2617- let eT = aS
2618- let eU = size(eT)
2619- let eV = $Tuple3(nil, 0, 0)
2620- func eW (eX,eY) = if ((eY >= eU))
2621- then eX
2622- else lS(eX, eT[eY])
2623-
2624- func eZ (eX,eY) = if ((eY >= eU))
2625- then eX
2618+ let fk = {
2619+ let eU = aT
2620+ let eV = size(eU)
2621+ let eW = $Tuple3(nil, 0, 0)
2622+ func eX (eY,eZ) = if ((eZ >= eV))
2623+ then eY
2624+ else lT(eY, eU[eZ])
2625+
2626+ func fa (eY,eZ) = if ((eZ >= eV))
2627+ then eY
26262628 else throw("List size exceeds 50")
26272629
2628- eZ(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eV, 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)
2630+ fa(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eW, 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)
26292631 }
2630- let lU = min([jc, (lQ + fj._3)])
2631- $Tuple2((([IntegerEntry(jb, lU), StringEntry(hL, makeString_2C([io[bh], io[bi], io[bj], makeString(fj._1, "_")], ":"))] ++ ll) ++ jZ(A, (ad * ((lM + lN) + lO)))._1), lU)
2632+ let lV = min([jd, (lR + fk._3)])
2633+ $Tuple2((([IntegerEntry(jc, lV), StringEntry(hM, makeString_2C([ip[bi], ip[bj], ip[bk], makeString(fk._1, "_")], ":"))] ++ lm) ++ ka(B, (ae * ((lN + lO) + lP)))._1), lV)
26322634 }
26332635 }
26342636 }
26362638
26372639
26382640
2639-@Callable(gK)
2641+@Callable(gL)
26402642 func healES () = {
2641- let ll = lh(gK)
2642- if ((size(gK.payments) != 1))
2643+ let lm = li(gL)
2644+ if ((size(gL.payments) != 1))
26432645 then throw("Exactly one payment required")
26442646 else {
2645- let lm = value(gK.payments[0])
2646- if ((lm.assetId != cx))
2647+ let ln = value(gL.payments[0])
2648+ if ((ln.assetId != cy))
26472649 then throw("Allowed USDT payment only!")
26482650 else {
2649- let A = valueOrErrorMessage(getString(bH(toString(gK.caller))), "You don't have a duck staked")
2650- if (kp(A))
2651+ let B = valueOrErrorMessage(getString(bI(toString(gL.caller))), "You don't have a duck staked")
2652+ if (kq(B))
26512653 then throw("healES_checkTournament")
2652- else if (kq(A))
2654+ else if (kr(B))
26532655 then throw("healES_checkDelivery")
26542656 else {
2655- let jb = z(A)
2656- let jc = ag(valueOrElse(getInteger(D(A)), 0))
2657- let lQ = valueOrElse(getInteger(jb), jc)
2658- if ((lQ > 0))
2657+ let jc = A(B)
2658+ let jd = ah(valueOrElse(getInteger(E(B)), 0))
2659+ let lR = valueOrElse(getInteger(jc), jd)
2660+ if ((lR > 0))
26592661 then throw("HP should be 0 to call Emergency Service")
26602662 else {
2661- let hL = bI(A)
2662- let io = hK(hL)
2663- let lR = if ((io[bk] == ""))
2663+ let hM = bJ(B)
2664+ let ip = hL(hM)
2665+ let lS = if ((ip[bl] == ""))
26642666 then nil
2665- else split_4C(io[bk], "_")
2666- let lV = if ((size(lR) > 0))
2667- then parseIntValue(lR[0])
2667+ else split_4C(ip[bl], "_")
2668+ let lW = if ((size(lS) > 0))
2669+ then parseIntValue(lS[0])
26682670 else 0
2669- let lW = if ((size(lR) > 1))
2670- then parseIntValue(lR[1])
2671+ let lX = if ((size(lS) > 1))
2672+ then parseIntValue(lS[1])
26712673 else 0
2672- let lX = if ((size(lR) > 2))
2673- then parseIntValue(lR[2])
2674+ let lY = if ((size(lS) > 2))
2675+ then parseIntValue(lS[2])
26742676 else 0
2675- if (if (if ((lV > 0))
2676- then true
2677- else (lW > 0))
2677+ if (if (if ((lW > 0))
26782678 then true
26792679 else (lX > 0))
2680+ then true
2681+ else (lY > 0))
26802682 then throw("You have to use own Medical Kit")
26812683 else {
2682- let lY = getString(dc, bM())
2683- let lZ = if (isDefined(lY))
2684- then split_4C(value(lY), "_")
2684+ let lZ = getString(dd, bN())
2685+ let ma = if (isDefined(lZ))
2686+ then split_4C(value(lZ), "_")
26852687 else nil
2686- let ma = if ((size(lZ) > 0))
2687- then parseIntValue(lZ[0])
2688+ let mb = if ((size(ma) > 0))
2689+ then parseIntValue(ma[0])
26882690 else 0
2689- if ((0 >= ma))
2691+ if ((0 >= mb))
26902692 then throw("There are no Medical Kits L1 at Emergency Service storage")
26912693 else {
2692- let lU = (lQ + parseIntValue(split(aS[0], "_")[aU]))
2693- let mb = makeString([toString((ma - 1)), removeByIndex(lZ, 0)], "_")
2694- let co = split(aS[0], "_")
2695- let mc = cn(co)
2696- let md = fraction((mc * aL), aK, (cE * aX))
2697- if ((lm.amount != md))
2698- then throw(("Payment attached should be " + toString(md)))
2694+ let lV = (lR + parseIntValue(split(aT[0], "_")[aV]))
2695+ let mc = makeString([toString((mb - 1)), removeByIndex(ma, 0)], "_")
2696+ let cp = split(aT[0], "_")
2697+ let md = co(cp)
2698+ let me = fraction((md * aM), aL, (cF * aY))
2699+ if ((ln.amount != me))
2700+ then throw(("Payment attached should be " + toString(me)))
26992701 else {
2700- let fj = dw(invoke(dc, "updateEsStorage", [mb], [AttachedPayment(cx, md)]))
2701- $Tuple2(((ll :+ IntegerEntry(jb, lU)) ++ jZ(A, X)._1), fj)
2702+ let fk = dx(invoke(dd, "updateEsStorage", [mc], [AttachedPayment(cy, me)]))
2703+ $Tuple2(((lm :+ IntegerEntry(jc, lV)) ++ ka(B, Y)._1), fk)
27022704 }
27032705 }
27042706 }
27102712
27112713
27122714
2713-@Callable(gK)
2714-func updateBackpack (A,me) = if ((gK.caller != dc))
2715+@Callable(gL)
2716+func updateBackpack (B,mf) = if ((gL.caller != dd))
27152717 then throw("permission denied")
2716- else $Tuple2([StringEntry(bI(A), me)], me)
2717-
2718-
2719-
2720-@Callable(gK)
2718+ else $Tuple2([StringEntry(bJ(B), mf)], mf)
2719+
2720+
2721+
2722+@Callable(gL)
27212723 func commitForRandom () = {
2722- let ll = lh(gK)
2723- let mf = (height + dp)
2724- let c = toString(gK.caller)
2725- $Tuple2(([IntegerEntry(dq(c), mf)] ++ ll), mf)
2726- }
2727-
2728-
2729-
2730-@Callable(gK)
2724+ let lm = li(gL)
2725+ let mg = (height + dq)
2726+ let d = toString(gL.caller)
2727+ $Tuple2(([IntegerEntry(dr(d), mg)] ++ lm), mg)
2728+ }
2729+
2730+
2731+
2732+@Callable(gL)
27312733 func buySLand () = {
2732- let ll = lh(gK)
2733- if ((size(gK.payments) != 1))
2734+ let lm = li(gL)
2735+ if ((size(gL.payments) != 1))
27342736 then throw("Exactly one payment required")
27352737 else {
2736- let lm = value(gK.payments[0])
2737- if ((lm.assetId != cx))
2738+ let ln = value(gL.payments[0])
2739+ if ((ln.assetId != cy))
27382740 then throw("Allowed USDT payment only!")
2739- else if ((lm.amount != eg))
2740- then throw(("Payment attached should be " + toString(eg)))
2741+ else if ((ln.amount != eh))
2742+ then throw(("Payment attached should be " + toString(eh)))
27412743 else {
2742- let fj = iI(gK.caller, gK.transactionId)
2743- let mg = dz(invoke(dg, "burnAcres", [eh], nil))
2744- $Tuple2((((fj._1 :+ ScriptTransfer(dc, lm.amount, cx)) ++ kf(toString(gK.caller), Z)._1) ++ ll), $Tuple2(fj._2._1, mg))
2744+ let fk = iJ(gL.caller, gL.transactionId)
2745+ let mh = dA(invoke(dh, "burnAcres", [ei], nil))
2746+ $Tuple2((((fk._1 :+ ScriptTransfer(dd, ln.amount, cy)) ++ kg(toString(gL.caller), aa)._1) ++ lm), $Tuple2(fk._2._1, mh))
27452747 }
27462748 }
27472749 }
27482750
27492751
27502752
2751-@Callable(gK)
2752-func expedition (iQ,iR) = {
2753- let ll = lh(gK)
2754- if ((size(gK.payments) != 0))
2753+@Callable(gL)
2754+func expedition (iR,iS) = {
2755+ let lm = li(gL)
2756+ if ((size(gL.payments) != 0))
27552757 then throw("No payments required")
27562758 else {
2757- let bL = toString(gK.caller)
2758- let hp = iP(bL, iQ, iR)
2759- let A = hp._2
2760- let jb = z(A)
2761- let hL = bI(A)
2762- let io = hK(hL)
2763- let jQ = split(io[bj], "_")
2764- let jS = makeString(fd(true, jQ, ef), "_")
2765- let gx = F(A)
2766- let lA = valueOrElse(getString(gx), ",;,_,;,_,;,_,;,_,;,_,;,")
2767- let mh = fk(lA, hp._5)
2768- let lC = mh._1
2769- let lD = mh._2
2770- let mi = iI(gK.caller, gK.transactionId)
2771- let iO = mi._2._1
2772- let fj = if ((0 >= hp._1))
2773- then $Tuple3([IntegerEntry(jb, 0), StringEntry(gx, lC)], "", 0)
2774- else $Tuple3((mi._1 ++ (if (lD)
2775- then [StringEntry(L(A), "0_0_0_0_0")]
2776- else ((((nil :+ StringEntry(bJ(A), makeString([mi._2._2, "L", iO], "_"))) :+ IntegerEntry(jb, hp._1)) :+ StringEntry(gx, lC)) :+ StringEntry(hL, makeString([io[bh], io[bi], jS, io[bk]], ":"))))), iO, hp._3)
2777- if (kp(A))
2759+ let bM = toString(gL.caller)
2760+ let hq = iQ(bM, iR, iS)
2761+ let B = hq._2
2762+ let jc = A(B)
2763+ let hM = bJ(B)
2764+ let ip = hL(hM)
2765+ let jR = split(ip[bk], "_")
2766+ let jT = makeString(fe(true, jR, eg), "_")
2767+ let gy = G(B)
2768+ let lB = valueOrElse(getString(gy), ",;,_,;,_,;,_,;,_,;,_,;,")
2769+ let mi = fl(lB, hq._5)
2770+ let lD = mi._1
2771+ let lE = mi._2
2772+ let mj = iJ(gL.caller, gL.transactionId)
2773+ let iP = mj._2._1
2774+ let fk = if ((0 >= hq._1))
2775+ then $Tuple3([IntegerEntry(jc, 0), StringEntry(gy, lD)], "", 0)
2776+ else $Tuple3((mj._1 ++ (if (lE)
2777+ then [StringEntry(M(B), "0_0_0_0_0")]
2778+ else ((((nil :+ StringEntry(bK(B), makeString([mj._2._2, "L", iP], "_"))) :+ IntegerEntry(jc, hq._1)) :+ StringEntry(gy, lD)) :+ StringEntry(hM, makeString([ip[bi], ip[bj], jT, ip[bl]], ":"))))), iP, hq._3)
2779+ if (kq(B))
27782780 then throw("expedition_checkTournament")
2779- else if (kq(A))
2781+ else if (kr(B))
27802782 then throw("expedition_checkDelivery")
27812783 else {
2782- let mg = dz(invoke(dg, "burnAcres", [eh], nil))
2783- $Tuple2(((fj._1 ++ jZ(A, Z)._1) ++ ll), $Tuple3(fj._2, fj._3, mg))
2784+ let mh = dA(invoke(dh, "burnAcres", [ei], nil))
2785+ $Tuple2(((fk._1 ++ ka(B, aa)._1) ++ lm), $Tuple3(fk._2, fk._3, mh))
27842786 }
27852787 }
27862788 }
27872789
27882790
27892791
2790-@Callable(gK)
2792+@Callable(gL)
27912793 func buySLandForAcres () = {
2792- let ll = lh(gK)
2793- if ((size(gK.payments) != 1))
2794+ let lm = li(gL)
2795+ if ((size(gL.payments) != 1))
27942796 then throw("exactly 1 payment must be attached")
27952797 else {
2796- let lm = gK.payments[0]
2797- let fq = lm.amount
2798- if (if (!(isDefined(lm.assetId)))
2798+ let ln = gL.payments[0]
2799+ let fr = ln.amount
2800+ if (if (!(isDefined(ln.assetId)))
27992801 then true
2800- else (value(lm.assetId) != do))
2802+ else (value(ln.assetId) != dp))
28012803 then throw("ACRES payments only!")
2802- else if ((fq != eh))
2803- then throw(("Payment attached should be " + toString(eh)))
2804+ else if ((fr != ei))
2805+ then throw(("Payment attached should be " + toString(ei)))
28042806 else {
2805- let fj = iI(gK.caller, gK.transactionId)
2806- let mg = dz(invoke(dg, "burnAcres", [eh], [AttachedPayment(do, fq)]))
2807- $Tuple2(((fj._1 ++ kf(toString(gK.caller), Z)._1) ++ ll), $Tuple2(fj._2._1, mg))
2807+ let fk = iJ(gL.caller, gL.transactionId)
2808+ let mh = dA(invoke(dh, "burnAcres", [ei], [AttachedPayment(dp, fr)]))
2809+ $Tuple2(((fk._1 ++ kg(toString(gL.caller), aa)._1) ++ lm), $Tuple2(fk._2._1, mh))
28082810 }
28092811 }
28102812 }
28112813
28122814
28132815
2814-@Callable(gK)
2815-func upgradeInfra (P) = {
2816- let ll = lh(gK)
2817- if ((size(gK.payments) != 0))
2816+@Callable(gL)
2817+func upgradeInfra (Q) = {
2818+ let lm = li(gL)
2819+ if ((size(gL.payments) != 0))
28182820 then throw("No payments required")
28192821 else {
2820- let fj = jK(true, gK.caller, 0, P)
2821- let A = valueOrErrorMessage(getString(bH(toString(gK.caller))), "You don't have a duck staked")
2822- $Tuple2(((fj._1 ++ ll) ++ jZ(A, fraction(aa, fj._3, cE))._1), fj._2)
2823- }
2824- }
2825-
2826-
2827-
2828-@Callable(gK)
2829-func activateArtifact (mj,mk) = {
2830- let ll = lh(gK)
2831- if ((size(gK.payments) != 0))
2822+ let fk = jL(true, gL.caller, 0, Q)
2823+ let B = valueOrErrorMessage(getString(bI(toString(gL.caller))), "You don't have a duck staked")
2824+ $Tuple2(((fk._1 ++ lm) ++ ka(B, fraction(ab, fk._3, cF))._1), fk._2)
2825+ }
2826+ }
2827+
2828+
2829+
2830+@Callable(gL)
2831+func activateArtifact (mk,ml) = {
2832+ let lm = li(gL)
2833+ if ((size(gL.payments) != 0))
28322834 then throw("No payments required")
28332835 else {
2834- let c = toString(gK.caller)
2835- let fj = {
2836- let cy = mj
2837- if (("PRESALE" == cy))
2838- then kn(c, mk)
2839- else if (("ONBOARD" == cy))
2840- then kg(c)
2836+ let d = toString(gL.caller)
2837+ let fk = {
2838+ let cz = mk
2839+ if (("PRESALE" == cz))
2840+ then ko(d, ml)
2841+ else if (("ONBOARD" == cz))
2842+ then kh(d)
28412843 else throw("Unknown artifact")
28422844 }
2843- (fj ++ ll)
2844- }
2845- }
2846-
2847-
2848-
2849-@Callable(gK)
2850-func mergeLands (kE) = {
2851- let ll = lh(gK)
2852- if ((size(gK.payments) != 0))
2845+ (fk ++ lm)
2846+ }
2847+ }
2848+
2849+
2850+
2851+@Callable(gL)
2852+func mergeLands (kF) = {
2853+ let lm = li(gL)
2854+ if ((size(gL.payments) != 0))
28532855 then throw("No payments required")
28542856 else {
2855- let fj = lc(toString(gK.caller), kE)
2856- $Tuple2(((fj._1 ++ ll) ++ kf(toString(gK.caller), ab)._1), fj._2)
2857- }
2858- }
2859-
2860-
2861-
2862-@Callable(gK)
2863-func cargoExchange (ml,P) = {
2864- let ll = lh(gK)
2865- if ((size(gK.payments) != 0))
2857+ let fk = ld(toString(gL.caller), kF)
2858+ $Tuple2(((fk._1 ++ lm) ++ kg(toString(gL.caller), ac)._1), fk._2)
2859+ }
2860+ }
2861+
2862+
2863+
2864+@Callable(gL)
2865+func cargoExchange (mm,Q) = {
2866+ let lm = li(gL)
2867+ if ((size(gL.payments) != 0))
28662868 then throw("No payments required")
28672869 else {
2868- let in = split_4C(ml, ":")
2869- let c = toString(gK.originCaller)
2870- let js = value(assetInfo(fromBase58String(P)))
2871- let jt = br(P)
2872- if (!(isDefined(getInteger(jt))))
2873- then throw((js.name + " is not staked"))
2870+ let io = split_4C(mm, ":")
2871+ let d = toString(gL.originCaller)
2872+ let jt = value(assetInfo(fromBase58String(Q)))
2873+ let ju = bs(Q)
2874+ if (!(isDefined(getInteger(ju))))
2875+ then throw((jt.name + " is not staked"))
28742876 else {
2875- let jv = valueOrErrorMessage(getString(bo(P)), (("NFT " + js.name) + " is orphaned"))
2876- if ((jv != c))
2877- then throw((aC + " is not yours"))
2877+ let jw = valueOrErrorMessage(getString(bp(Q)), (("NFT " + jt.name) + " is orphaned"))
2878+ if ((jw != d))
2879+ then throw((aD + " is not yours"))
28782880 else {
2879- let hZ = (dH(split(js.description, "_")[di]) / cF)
2880- let ia = valueOrElse(getInteger(by(P)), 0)
2881- let A = valueOrErrorMessage(getString(bH(c)), "You don't have a duck staked")
2882- let jq = valueOrElse(getString(bJ(A)), aJ)
2883- let cf = split(value(jq), "_")
2884- if ((cf[bm] != "L"))
2885- then throw((("Duck location type is " + cf[bm]) + ", but should be L"))
2886- else if ((cf[bn] != P))
2887- then throw(("Duck should be on the land " + P))
2881+ let ia = (dI(split(jt.description, "_")[dj]) / cG)
2882+ let ib = valueOrElse(getInteger(bz(Q)), 0)
2883+ let B = valueOrErrorMessage(getString(bI(d)), "You don't have a duck staked")
2884+ let jr = valueOrElse(getString(bK(B)), aK)
2885+ let cg = split(value(jr), "_")
2886+ if ((cg[bn] != "L"))
2887+ then throw((("Duck location type is " + cg[bn]) + ", but should be L"))
2888+ else if ((cg[bo] != Q))
2889+ then throw(("Duck should be on the land " + Q))
28882890 else {
2889- let hY = bx(P)
2890- let hP = hX(hY, hZ, ia)
2891- let hL = bI(A)
2892- let io = hK(hL)
2893- let fj = im(in, hP, io)
2894- let ig = split(hP[bc], "_")
2895- let jH = (parseIntValue(ig[be]) + fj._7)
2896- let jI = (parseIntValue(ig[bf]) - fj._7)
2897- ([StringEntry(hL, makeString_2C([io[bh], fj._4, fj._5, fj._6], ":")), StringEntry(hY, makeString_2C([hP[aY], fj._1, fj._2, fj._3, makeString([ig[bd], toString(jH), toString(jI), ig[bg]], "_")], ":"))] ++ ll)
2891+ let hZ = by(Q)
2892+ let hQ = hY(hZ, ia, ib)
2893+ let hM = bJ(B)
2894+ let ip = hL(hM)
2895+ let fk = in(io, hQ, ip)
2896+ let ih = split(hQ[bd], "_")
2897+ let jI = (parseIntValue(ih[bf]) + fk._7)
2898+ let jJ = (parseIntValue(ih[bg]) - fk._7)
2899+ ([StringEntry(hM, makeString_2C([ip[bi], fk._4, fk._5, fk._6], ":")), StringEntry(hZ, makeString_2C([hQ[aZ], fk._1, fk._2, fk._3, makeString([ih[be], toString(jI), toString(jJ), ih[bh]], "_")], ":"))] ++ lm)
28982900 }
28992901 }
29002902 }
29032905
29042906
29052907
2906-@Callable(gK)
2907-func saveWarehouse (ic,P) = if ((gK.caller != dc))
2908+@Callable(gL)
2909+func saveWarehouse (id,Q) = if ((gL.caller != dd))
29082910 then throw("Access denied")
29092911 else {
2910- let hY = bx(P)
2911- let id = split_4C(ic, ":")
2912- if ((size(id) != 5))
2912+ let hZ = by(Q)
2913+ let ie = split_4C(id, ":")
2914+ if ((size(ie) != 5))
29132915 then throw("warehouse string should contain 4 ':' separators")
29142916 else {
2915- let mm = split(id[bc], "_")[bd]
2916- let jH = hO(id)
2917- let mn = hM(id[aY])
2918- let jI = ((mn - parseIntValue(mm)) - jH)
2919- let mo = makeString_2C([id[aY], id[aZ], id[ba], id[bb], makeString([mm, toString(jH), toString(jI), toString(mn)], "_")], ":")
2920- $Tuple2([StringEntry(hY, mo)], mo)
2917+ let mn = split(ie[bd], "_")[be]
2918+ let jI = hP(ie)
2919+ let mo = hN(ie[aZ])
2920+ let jJ = ((mo - parseIntValue(mn)) - jI)
2921+ let mp = makeString_2C([ie[aZ], ie[ba], ie[bb], ie[bc], makeString([mn, toString(jI), toString(jJ), toString(mo)], "_")], ":")
2922+ $Tuple2([StringEntry(hZ, mp)], mp)
29212923 }
29222924 }
29232925
29242926
29252927
2926-@Callable(gK)
2927-func fixWarehouseFormat (P) = if ((gK.caller != db))
2928+@Callable(gL)
2929+func fixWarehouseFormat (Q) = if ((gL.caller != dc))
29282930 then throw("Access denied")
29292931 else {
2930- let hY = bx(P)
2931- let js = value(assetInfo(fromBase58String(P)))
2932- let hZ = (dH(split(js.description, "_")[di]) / cF)
2933- let ia = valueOrElse(getInteger(by(P)), 0)
2934- let id = hX(hY, hZ, ia)
2935- let mm = dz(invoke(dc, "recalcLockedVolumeREADONLY", [P, id], nil))
2936- let jH = hO(id)
2937- let mn = hM(id[aY])
2938- let jI = ((mn - mm) - jH)
2939- let mo = makeString_2C([id[aY], id[aZ], id[ba], id[bb], makeString([toString(mm), toString(jH), toString(jI), toString(mn)], "_")], ":")
2940- $Tuple2([StringEntry(hY, mo)], mo)
2932+ let hZ = by(Q)
2933+ let jt = value(assetInfo(fromBase58String(Q)))
2934+ let ia = (dI(split(jt.description, "_")[dj]) / cG)
2935+ let ib = valueOrElse(getInteger(bz(Q)), 0)
2936+ let ie = hY(hZ, ia, ib)
2937+ let mn = dA(invoke(dd, "recalcLockedVolumeREADONLY", [Q, ie], nil))
2938+ let jI = hP(ie)
2939+ let mo = hN(ie[aZ])
2940+ let jJ = ((mo - mn) - jI)
2941+ let mp = makeString_2C([ie[aZ], ie[ba], ie[bb], ie[bc], makeString([toString(mn), toString(jI), toString(jJ), toString(mo)], "_")], ":")
2942+ $Tuple2([StringEntry(hZ, mp)], mp)
29412943 }
29422944
29432945
29442946
2945-@Callable(gK)
2946-func fixContinentProportions (kE) = if ((gK.caller != db))
2947+@Callable(gL)
2948+func fixContinentProportions (kF) = if ((gL.caller != dc))
29472949 then throw("Access denied")
29482950 else {
2949- func mp (eR,mq) = (eR :+ valueOrElse(getString(ds(mq)), "0_0_0_0_0_0"))
2950-
2951- let gu = {
2952- let eT = aP
2953- let eU = size(eT)
2954- let eV = nil
2955- func eW (eX,eY) = if ((eY >= eU))
2956- then eX
2957- else mp(eX, eT[eY])
2958-
2959- func eZ (eX,eY) = if ((eY >= eU))
2960- then eX
2951+ func mq (eS,mr) = (eS :+ valueOrElse(getString(dt(mr)), "0_0_0_0_0_0"))
2952+
2953+ let gv = {
2954+ let eU = aQ
2955+ let eV = size(eU)
2956+ let eW = nil
2957+ func eX (eY,eZ) = if ((eZ >= eV))
2958+ then eY
2959+ else mq(eY, eU[eZ])
2960+
2961+ func fa (eY,eZ) = if ((eZ >= eV))
2962+ then eY
29612963 else throw("List size exceeds 5")
29622964
2963- eZ(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5)
2964- }
2965- func mr (eR,P) = {
2966- let js = value(assetInfo(fromBase58String(P)))
2967- let jw = split(js.description, "_")
2968- let hZ = (dH(jw[di]) / cF)
2969- let mq = jw[dk]
2970- let gG = gM(jw[dj])
2971- let ho = value(indexOf(aP, mq))
2972- let kT = split(eR[ho], "_")
2973- let ms = makeString(gE(kT, gG, hZ, 1), "_")
2974- let cy = mq
2975- if (("Americas" == cy))
2976- then [ms, eR[1], eR[2], eR[3], eR[4]]
2977- else if (("Europe" == cy))
2978- then [eR[0], ms, eR[2], eR[3], eR[4]]
2979- else if (("Asia" == cy))
2980- then [eR[0], eR[1], ms, eR[3], eR[4]]
2981- else if (("Africa" == cy))
2982- then [eR[0], eR[1], eR[2], ms, eR[4]]
2983- else if (("Oceania" == cy))
2984- then [eR[0], eR[1], eR[2], eR[3], ms]
2965+ fa(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5)
2966+ }
2967+ func ms (eS,Q) = {
2968+ let jt = value(assetInfo(fromBase58String(Q)))
2969+ let jx = split(jt.description, "_")
2970+ let ia = (dI(jx[dj]) / cG)
2971+ let mr = jx[dl]
2972+ let gH = gN(jx[dk])
2973+ let hp = value(indexOf(aQ, mr))
2974+ let kU = split(eS[hp], "_")
2975+ let mt = makeString(gF(kU, gH, ia, 1), "_")
2976+ let cz = mr
2977+ if (("Americas" == cz))
2978+ then [mt, eS[1], eS[2], eS[3], eS[4]]
2979+ else if (("Europe" == cz))
2980+ then [eS[0], mt, eS[2], eS[3], eS[4]]
2981+ else if (("Asia" == cz))
2982+ then [eS[0], eS[1], mt, eS[3], eS[4]]
2983+ else if (("Africa" == cz))
2984+ then [eS[0], eS[1], eS[2], mt, eS[4]]
2985+ else if (("Oceania" == cz))
2986+ then [eS[0], eS[1], eS[2], eS[3], mt]
29852987 else throw("wrong continent")
29862988 }
29872989
2988- let fc = {
2989- let eT = kE
2990- let eU = size(eT)
2991- let eV = gu
2992- func hF (eX,eY) = if ((eY >= eU))
2993- then eX
2994- else mr(eX, eT[eY])
2995-
2996- func hG (eX,eY) = if ((eY >= eU))
2997- then eX
2990+ let fd = {
2991+ let eU = kF
2992+ let eV = size(eU)
2993+ let eW = gv
2994+ func hG (eY,eZ) = if ((eZ >= eV))
2995+ then eY
2996+ else ms(eY, eU[eZ])
2997+
2998+ func hH (eY,eZ) = if ((eZ >= eV))
2999+ then eY
29983000 else throw("List size exceeds 100")
29993001
3000- 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(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(eV, 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)
3001- }
3002- $Tuple2([StringEntry(ds("Americas"), fc[0]), StringEntry(ds("Europe"), fc[1]), StringEntry(ds("Asia"), fc[2]), StringEntry(ds("Africa"), fc[3]), StringEntry(ds("Oceania"), fc[4])], 0)
3002+ hH(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(eW, 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)
3003+ }
3004+ $Tuple2([StringEntry(dt("Americas"), fd[0]), StringEntry(dt("Europe"), fd[1]), StringEntry(dt("Asia"), fd[2]), StringEntry(dt("Africa"), fd[3]), StringEntry(dt("Oceania"), fd[4])], 0)
30033005 }
30043006
30053007
30063008
3007-@Callable(gK)
3008-func fixStakedPieces (cM) = if ((gK.caller != db))
3009+@Callable(gL)
3010+func fixStakedPieces (cN) = if ((gL.caller != dc))
30093011 then throw("Access denied")
30103012 else {
3011- let kX = if ((cM == ""))
3013+ let kY = if ((cN == ""))
30123014 then 0
30133015 else {
3014- let kQ = getString(an, du(cM))
3015- let kM = if (isDefined(kQ))
3016- then split_51C(value(kQ), "_")
3016+ let kR = getString(ao, dv(cN))
3017+ let kN = if (isDefined(kR))
3018+ then split_51C(value(kR), "_")
30173019 else nil
3018- func mt (eR,P) = {
3019- let js = value(assetInfo(fromBase58String(P)))
3020- let dI = split(js.description, "_")[di]
3021- (eR + dH(dI))
3020+ func mu (eS,Q) = {
3021+ let jt = value(assetInfo(fromBase58String(Q)))
3022+ let dJ = split(jt.description, "_")[dj]
3023+ (eS + dI(dJ))
30223024 }
30233025
3024- let eT = kM
3025- let eU = size(eT)
3026- let eV = 0
3027- func eW (eX,eY) = if ((eY >= eU))
3028- then eX
3029- else mt(eX, eT[eY])
3030-
3031- func eZ (eX,eY) = if ((eY >= eU))
3032- then eX
3026+ let eU = kN
3027+ let eV = size(eU)
3028+ let eW = 0
3029+ func eX (eY,eZ) = if ((eZ >= eV))
3030+ then eY
3031+ else mu(eY, eU[eZ])
3032+
3033+ func fa (eY,eZ) = if ((eZ >= eV))
3034+ then eY
30333035 else throw("List size exceeds 100")
30343036
3035- eZ(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eV, 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)
3037+ fa(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eW, 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)
30363038 }
3037- $Tuple2([IntegerEntry(dv(cM), kX)], kX)
3039+ $Tuple2([IntegerEntry(dw(cN), kY)], kY)
30383040 }
30393041
30403042
30413043
3042-@Callable(gK)
3043-func setCustomName (bp,kO,bt) = {
3044- let ll = lh(gK)
3045- if ((size(gK.payments) != 1))
3044+@Callable(gL)
3045+func setCustomName (bq,kP,bu) = {
3046+ let lm = li(gL)
3047+ if ((size(gL.payments) != 1))
30463048 then throw("Exactly one payment required")
30473049 else {
3048- let lm = value(gK.payments[0])
3049- if ((lm.assetId != cx))
3050+ let ln = value(gL.payments[0])
3051+ if ((ln.assetId != cy))
30503052 then throw("Allowed USDT payment only!")
3051- else if ((lm.amount != ec))
3052- then throw(("Payment should be " + toString(ec)))
3053- else if (contains(kO, "__"))
3054- then throw(("Name should not contain '__': " + kO))
3055- else if ((size(kO) > ed))
3056- then throw(("Name too long, maxLength=" + toString(ed)))
3053+ else if ((ln.amount != ed))
3054+ then throw(("Payment should be " + toString(ed)))
3055+ else if (contains(kP, "__"))
3056+ then throw(("Name should not contain '__': " + kP))
3057+ else if ((size(kP) > ee))
3058+ then throw(("Name too long, maxLength=" + toString(ee)))
30573059 else {
3058- let c = toString(gK.originCaller)
3059- let mu = {
3060- let cy = bt
3061- if (("ACCOUNT" == cy))
3060+ let d = toString(gL.originCaller)
3061+ let mv = {
3062+ let cz = bu
3063+ if (("ACCOUNT" == cz))
30623064 then {
3063- let mv = ex(kO)
3064- let mw = getString(mv)
3065- if (isDefined(mw))
3066- then throw(("Name already registered: " + kO))
3065+ let mw = ey(kP)
3066+ let mx = getString(mw)
3067+ if (isDefined(mx))
3068+ then throw(("Name already registered: " + kP))
30673069 else {
3068- let mx = bB(c)
3069- let my = getString(mx)
3070- let mz = if (isDefined(my))
3071- then [DeleteEntry(ex(value(my)))]
3070+ let my = bC(d)
3071+ let mz = getString(my)
3072+ let mA = if (isDefined(mz))
3073+ then [DeleteEntry(ey(value(mz)))]
30723074 else nil
3073- (((mz :+ StringEntry(mx, kO)) :+ StringEntry(mv, c)) ++ kf(c, Y)._1)
3075+ (((mA :+ StringEntry(my, kP)) :+ StringEntry(mw, d)) ++ kg(d, Z)._1)
30743076 }
30753077 }
3076- else if (("LAND" == cy))
3078+ else if (("LAND" == cz))
30773079 then {
3078- let js = value(assetInfo(fromBase58String(bp)))
3079- let jt = br(bp)
3080- if (!(isDefined(getInteger(jt))))
3081- then throw((js.name + " is not staked"))
3080+ let jt = value(assetInfo(fromBase58String(bq)))
3081+ let ju = bs(bq)
3082+ if (!(isDefined(getInteger(ju))))
3083+ then throw((jt.name + " is not staked"))
30823084 else {
3083- let jv = valueOrErrorMessage(getString(bo(bp)), (("NFT " + js.name) + " is orphaned"))
3084- if ((jv != c))
3085- then throw((aC + " is not yours"))
3085+ let jw = valueOrErrorMessage(getString(bp(bq)), (("NFT " + jt.name) + " is orphaned"))
3086+ if ((jw != d))
3087+ then throw((aD + " is not yours"))
30863088 else {
3087- let mv = eq(kO)
3088- let mw = getString(mv)
3089- if (isDefined(mw))
3090- then throw(("Name already registered: " + kO))
3089+ let mw = er(kP)
3090+ let mx = getString(mw)
3091+ if (isDefined(mx))
3092+ then throw(("Name already registered: " + kP))
30913093 else {
3092- let mA = bq(bp)
3093- let my = getString(mA)
3094- let mz = if (isDefined(my))
3095- then [DeleteEntry(eq(value(my)))]
3094+ let mB = br(bq)
3095+ let mz = getString(mB)
3096+ let mA = if (isDefined(mz))
3097+ then [DeleteEntry(er(value(mz)))]
30963098 else nil
3097- (((mz :+ StringEntry(mA, kO)) :+ StringEntry(mv, bp)) ++ kf(c, Y)._1)
3099+ (((mA :+ StringEntry(mB, kP)) :+ StringEntry(mw, bq)) ++ kg(d, Z)._1)
30983100 }
30993101 }
31003102 }
31013103 }
3102- else if (("DUCK" == cy))
3104+ else if (("DUCK" == cz))
31033105 then {
3104- let js = value(assetInfo(fromBase58String(bp)))
3105- let jt = br(bp)
3106- if (if (!(isDefined(getInteger(jt))))
3106+ let jt = value(assetInfo(fromBase58String(bq)))
3107+ let ju = bs(bq)
3108+ if (if (!(isDefined(getInteger(ju))))
31073109 then true
3108- else !(isDefined(getString(bH(c)))))
3109- then throw((js.name + " is not staked"))
3110+ else !(isDefined(getString(bI(d)))))
3111+ then throw((jt.name + " is not staked"))
31103112 else {
3111- let jv = valueOrErrorMessage(getString(bG(bp)), (("NFT " + js.name) + " is orphaned"))
3112- if ((jv != c))
3113- then throw((aD + " is not yours"))
3113+ let jw = valueOrErrorMessage(getString(bH(bq)), (("NFT " + jt.name) + " is orphaned"))
3114+ if ((jw != d))
3115+ then throw((aE + " is not yours"))
31143116 else {
3115- let mv = ew(kO)
3116- let mw = getString(mv)
3117- if (isDefined(mw))
3118- then throw(("Name already registered: " + kO))
3117+ let mw = ex(kP)
3118+ let mx = getString(mw)
3119+ if (isDefined(mx))
3120+ then throw(("Name already registered: " + kP))
31193121 else {
3120- let mA = bA(bp)
3121- let my = getString(mA)
3122- let mz = if (isDefined(my))
3123- then [DeleteEntry(ew(value(my)))]
3122+ let mB = bB(bq)
3123+ let mz = getString(mB)
3124+ let mA = if (isDefined(mz))
3125+ then [DeleteEntry(ex(value(mz)))]
31243126 else nil
3125- (((mz :+ StringEntry(mA, kO)) :+ StringEntry(mv, bp)) ++ jZ(bp, Y)._1)
3127+ (((mA :+ StringEntry(mB, kP)) :+ StringEntry(mw, bq)) ++ ka(bq, Z)._1)
31263128 }
31273129 }
31283130 }
31293131 }
31303132 else throw("Unknown entity type")
31313133 }
3132- $Tuple2(((mu :+ ScriptTransfer(dc, lm.amount, cx)) ++ ll), 0)
3134+ $Tuple2(((mv :+ ScriptTransfer(dd, ln.amount, cy)) ++ lm), 0)
31333135 }
31343136 }
31353137 }
31363138
31373139
31383140
3139-@Callable(gK)
3140-func setReferrals (mB,mC) = if ((gK.callerPublicKey != dZ))
3141+@Callable(gL)
3142+func setReferrals (mC,mD) = if ((gL.callerPublicKey != ea))
31413143 then throw("Permission denied")
31423144 else {
3143- let ll = lh(gK)
3144- if ((size(gK.payments) != 0))
3145+ let lm = li(gL)
3146+ if ((size(gL.payments) != 0))
31453147 then throw("No payments required")
3146- else if (!(isDefined(addressFromString(mB))))
3147- then throw(("Invalid address: " + mB))
3148- else if (!(isDefined(addressFromString(mC))))
3149- then throw(("Invalid address: " + mC))
3148+ else if (!(isDefined(addressFromString(mC))))
3149+ then throw(("Invalid address: " + mC))
3150+ else if (!(isDefined(addressFromString(mD))))
3151+ then throw(("Invalid address: " + mD))
31503152 else {
3151- let mD = ey()
3152- let mE = getString(mD)
3153- let mF = if (isDefined(mE))
3154- then split_4C(value(mE), "_")
3153+ let mE = ez()
3154+ let mF = getString(mE)
3155+ let mG = if (isDefined(mF))
3156+ then split_4C(value(mF), "_")
31553157 else nil
3156- if (containsElement(mF, mC))
3157- then throw((mC + " is not newbie (already has referrals)"))
3158+ if (containsElement(mG, mD))
3159+ then throw((mD + " is not newbie (already has referrals)"))
31583160 else {
3159- let kh = bC(mC)
3160- let ki = getString(kh)
3161- if (if (isDefined(ki))
3162- then isDefined(addressFromString(value(ki)))
3161+ let ki = bD(mD)
3162+ let kj = getString(ki)
3163+ if (if (isDefined(kj))
3164+ then isDefined(addressFromString(value(kj)))
31633165 else false)
3164- then throw(((mC + " already has refBy: ") + value(ki)))
3166+ then throw(((mD + " already has refBy: ") + value(kj)))
31653167 else {
3166- let mG = bF(mB)
3167- let mH = getString(mG)
3168- let mI = if (isDefined(mH))
3169- then split_4C(value(mH), "_")
3168+ let mH = bG(mC)
3169+ let mI = getString(mH)
3170+ let mJ = if (isDefined(mI))
3171+ then split_4C(value(mI), "_")
31703172 else nil
3171- if (containsElement(mI, mC))
3172- then throw((((mB + " already contains ") + mC) + " within referrals"))
3173+ if (containsElement(mJ, mD))
3174+ then throw((((mC + " already contains ") + mD) + " within referrals"))
31733175 else {
3174- let mJ = makeString_2C((mI :+ mC), "_")
3175- let mK = if (containsElement(mF, mB))
3176- then value(mE)
3177- else makeString_2C((mF :+ mB), "_")
3178- $Tuple2(([StringEntry(kh, mB), StringEntry(mG, mJ), StringEntry(mD, mK)] ++ ll), 0)
3176+ let mK = makeString_2C((mJ :+ mD), "_")
3177+ let mL = if (containsElement(mG, mC))
3178+ then value(mF)
3179+ else makeString_2C((mG :+ mC), "_")
3180+ $Tuple2(([StringEntry(ki, mC), StringEntry(mH, mK), StringEntry(mE, mL)] ++ lm), 0)
31793181 }
31803182 }
31813183 }
31843186
31853187
31863188
3187-@Callable(gK)
3188-func distributePoints (mL,mM,mN,mO,mP) = {
3189- let ll = lh(gK)
3190- if ((size(gK.payments) != 0))
3189+@Callable(gL)
3190+func distributePoints (mM,mN,mO,mP,mQ) = {
3191+ let lm = li(gL)
3192+ if ((size(gL.payments) != 0))
31913193 then throw("No payments required")
31923194 else {
3193- let c = toString(gK.originCaller)
3194- let mQ = dB(invoke(de, "checkWlgXpREADONLY", [c], nil))
3195- let mR = dz(mQ[1])
3196- let mS = if ((0 >= mR))
3195+ let d = toString(gL.originCaller)
3196+ let mR = dC(invoke(df, "checkWlgXpREADONLY", [d], nil))
3197+ let mS = dA(mR[1])
3198+ let mT = if ((0 >= mS))
31973199 then $Tuple2(0, nil)
31983200 else {
3199- let ka = dz(invoke(de, "takeWlgXp", [c], nil))
3200- if ((ka == ka))
3201- then $Tuple2(mR, [IntegerEntry(H(c), dz(mQ[0])), IntegerEntry(G(c), dz(mQ[2]))])
3201+ let kb = dA(invoke(df, "takeWlgXp", [d], nil))
3202+ if ((kb == kb))
3203+ then $Tuple2(mS, [IntegerEntry(I(d), dA(mR[0])), IntegerEntry(H(d), dA(mR[2]))])
32023204 else throw("Strict value is not equal to itself.")
32033205 }
3204- let mT = mS._1
3205- let mU = mS._2
3206- let A = valueOrErrorMessage(getString(bH(c)), "You don't have a duck staked")
3207- let mV = I(c)
3208- let mW = (valueOrElse(getInteger(mV), 0) + mT)
3209- let mX = E(A)
3210- let mY = valueOrElse(getInteger(mX), 0)
3211- let mZ = (mW + mY)
3212- let na = ((((mL + mM) + mN) + mO) + mP)
3213- if ((na > mZ))
3214- then throw((("There are only " + toString(mZ)) + " free points to distribute"))
3206+ let mU = mT._1
3207+ let mV = mT._2
3208+ let B = valueOrErrorMessage(getString(bI(d)), "You don't have a duck staked")
3209+ let mW = J(d)
3210+ let mX = (valueOrElse(getInteger(mW), 0) + mU)
3211+ let mY = F(B)
3212+ let mZ = valueOrElse(getInteger(mY), 0)
3213+ let na = (mX + mZ)
3214+ let nb = ((((mM + mN) + mO) + mP) + mQ)
3215+ if ((nb > na))
3216+ then throw((("There are only " + toString(na)) + " free points to distribute"))
32153217 else {
3216- let nb = B(A)
3217- let aq = split(valueOrElse(getString(nb), "0_0_0_0_0"), "_")
3218- let nc = (mW - na)
3219- $Tuple2((([IntegerEntry(mV, if ((0 > nc))
3218+ let nc = C(B)
3219+ let ar = split(valueOrElse(getString(nc), "0_0_0_0_0"), "_")
3220+ let nd = (mX - nb)
3221+ $Tuple2((([IntegerEntry(mW, if ((0 > nd))
32203222 then 0
3221- else nc), IntegerEntry(mX, if ((0 > nc))
3222- then (mY + nc)
3223- else mY), StringEntry(nb, makeString([toString((parseIntValue(aq[k]) + mL)), toString((parseIntValue(aq[l]) + mM)), toString((parseIntValue(aq[m]) + mN)), toString((parseIntValue(aq[n]) + mO)), toString((parseIntValue(aq[o]) + mP))], "_"))] ++ ll) ++ mU), 0)
3223+ else nd), IntegerEntry(mY, if ((0 > nd))
3224+ then (mZ + nd)
3225+ else mZ), StringEntry(nc, makeString([toString((parseIntValue(ar[l]) + mM)), toString((parseIntValue(ar[m]) + mN)), toString((parseIntValue(ar[n]) + mO)), toString((parseIntValue(ar[o]) + mP)), toString((parseIntValue(ar[p]) + mQ))], "_"))] ++ lm) ++ mV), 0)
32243226 }
32253227 }
32263228 }
32273229
32283230
32293231
3230-@Callable(gK)
3231-func splitByGlobalWeightsREADONLY (eI) = $Tuple2(nil, fa(eI))
3232-
3233-
3234-
3235-@Callable(gK)
3236-func splitByGlobalAndLocalWeightsREADONLY (nd,ne,gN) = {
3237- let gG = gM(gN)
3238- $Tuple2(nil, $Tuple2(fa(nd), eL(ne, gG)))
3239- }
3240-
3241-
3242-
3243-@Callable(gK)
3244-func getBackpackREADONLY (A) = $Tuple2(nil, makeString(hK(bI(A)), ":"))
3245-
3246-
3247-
3248-@Callable(gK)
3249-func getWarehouseREADONLY (P) = {
3250- let js = value(assetInfo(fromBase58String(P)))
3251- let hZ = (dH(split(js.description, "_")[di]) / cF)
3252- let ia = valueOrElse(getInteger(by(P)), 0)
3253- $Tuple2(nil, makeString_2C(hX(bx(P), hZ, ia), ":"))
3254- }
3255-
3256-
3257-
3258-@Callable(gK)
3259-func saveLastTx () = if (!(containsElement([de, dc, df, dg], gK.caller)))
3232+@Callable(gL)
3233+func splitByGlobalWeightsREADONLY (eJ) = $Tuple2(nil, fb(eJ))
3234+
3235+
3236+
3237+@Callable(gL)
3238+func splitByGlobalAndLocalWeightsREADONLY (ne,nf,gO) = {
3239+ let gH = gN(gO)
3240+ $Tuple2(nil, $Tuple2(fb(ne), eM(nf, gH)))
3241+ }
3242+
3243+
3244+
3245+@Callable(gL)
3246+func getBackpackREADONLY (B) = $Tuple2(nil, makeString(hL(bJ(B)), ":"))
3247+
3248+
3249+
3250+@Callable(gL)
3251+func getWarehouseREADONLY (Q) = {
3252+ let jt = value(assetInfo(fromBase58String(Q)))
3253+ let ia = (dI(split(jt.description, "_")[dj]) / cG)
3254+ let ib = valueOrElse(getInteger(bz(Q)), 0)
3255+ $Tuple2(nil, makeString_2C(hY(by(Q), ia, ib), ":"))
3256+ }
3257+
3258+
3259+
3260+@Callable(gL)
3261+func saveLastTx () = if (!(containsElement([df, dd, dg, dh], gL.caller)))
32603262 then throw("Access denied")
3261- else $Tuple2(lh(gK), 42)
3262-
3263-
3264-
3265-@Callable(gK)
3266-func updateDuckStats (A,ka) = if ((gK.caller != dc))
3263+ else $Tuple2(li(gL), 42)
3264+
3265+
3266+
3267+@Callable(gL)
3268+func updateDuckStats (B,kb) = if ((gL.caller != dd))
32673269 then throw("Access denied")
3268- else jZ(A, ka)
3269-
3270-
3271-
3272-@Callable(gK)
3273-func updateAccStats (c,ka) = if (!(containsElement([de, dc, dg], gK.caller)))
3270+ else ka(B, kb)
3271+
3272+
3273+
3274+@Callable(gL)
3275+func updateAccStats (d,kb) = if (!(containsElement([df, dd, dh], gL.caller)))
32743276 then throw("Access denied")
3275- else kf(c, ka)
3276-
3277-
3278-
3279-@Callable(gK)
3280-func equipDuck (nf) = {
3281- let ll = lh(gK)
3282- if ((size(gK.payments) != 0))
3277+ else kg(d, kb)
3278+
3279+
3280+
3281+@Callable(gL)
3282+func equipDuck (ng) = {
3283+ let lm = li(gL)
3284+ if ((size(gL.payments) != 0))
32833285 then throw("No payments required")
32843286 else {
3285- let c = toString(gK.originCaller)
3286- let A = valueOrErrorMessage(getString(bH(c)), "You don't have a duck staked")
3287- if (kp(A))
3287+ let d = toString(gL.originCaller)
3288+ let B = valueOrErrorMessage(getString(bI(d)), "You don't have a duck staked")
3289+ if (kq(B))
32883290 then throw("equipDuck_checkTournament")
3289- else if (kq(A))
3291+ else if (kr(B))
32903292 then throw("equipDuck_checkDelivery")
32913293 else {
3292- let gx = F(A)
3293- let ng = split(valueOrElse(getString(gx), ",;,_,;,_,;,_,;,_,;,_,;,"), "_")
3294- let hL = bI(A)
3295- let io = hK(hL)
3296- let lC = split(nf, "_")
3297- if ((size(lC) != q))
3294+ let gy = G(B)
3295+ let nh = split(valueOrElse(getString(gy), ",;,_,;,_,;,_,;,_,;,_,;,"), "_")
3296+ let hM = bJ(B)
3297+ let ip = hL(hM)
3298+ let lD = split(ng, "_")
3299+ if ((size(lD) != r))
32983300 then throw("Wrong equipment string")
32993301 else {
3300- let gz = gm(ng, fx(io[bk]), true, nil)
3301- let gA = split(lC[p], ";")[1]
3302- let ao = if ((gA == ""))
3302+ let gA = gn(nh, fy(ip[bl]), true, nil)
3303+ let gB = split(lD[q], ";")[1]
3304+ let ap = if ((gB == ""))
33033305 then 0
33043306 else {
3305- let gB = split(gA, ",")[0]
3306- if ((gB == ""))
3307+ let gC = split(gB, ",")[0]
3308+ if ((gC == ""))
33073309 then 0
33083310 else {
3309- let fM = split(gB, ":")
3310- let da = fM[0]
3311- let gC = fM[1]
3312- if (if (if (if (if ((da == "06"))
3311+ let fN = split(gC, ":")
3312+ let db = fN[0]
3313+ let gD = fN[1]
3314+ if (if (if (if (if ((db == "06"))
33133315 then true
3314- else (da == "07"))
3316+ else (db == "07"))
33153317 then true
3316- else (da == "08"))
3317- then (gC != "")
3318+ else (db == "08"))
3319+ then (gD != "")
33183320 else false)
3319- then (parseIntValue(gC) > 0)
3321+ then (parseIntValue(gD) > 0)
33203322 else false)
3321- then parseIntValue(split(aS[parseIntValue(da)], "_")[aU])
3323+ then parseIntValue(split(aT[parseIntValue(db)], "_")[aV])
33223324 else 0
33233325 }
33243326 }
3325- let gh = am(this, A, ao, true)
3326- let gD = gm(lC, gz, false, gh)
3327- let nh = fC(gD)
3328- $Tuple2(([StringEntry(gx, nf), StringEntry(hL, makeString_2C([io[bh], io[bi], io[bj], nh], ":")), StringEntry(L(A), makeString([toString(gh[7]), toString(gh[8]), toString(gh[9]), toString(gh[10]), toString(gh[11])], "_"))] ++ ll), 0)
3327+ let gi = an(this, B, ap, true)
3328+ let gE = gn(lD, gA, false, gi)
3329+ let ni = fD(gE)
3330+ $Tuple2(([StringEntry(gy, ng), StringEntry(hM, makeString_2C([ip[bi], ip[bj], ip[bk], ni], ":")), StringEntry(M(B), makeString([toString(gi[7]), toString(gi[8]), toString(gi[9]), toString(gi[10]), toString(gi[11])], "_"))] ++ lm), 0)
33293331 }
33303332 }
33313333 }
33333335
33343336
33353337
3336-@Callable(gK)
3337-func fortificateLand (P,ni) = {
3338- let ll = lh(gK)
3339- if ((size(gK.payments) != 0))
3338+@Callable(gL)
3339+func fortificateLand (Q,nj) = {
3340+ let lm = li(gL)
3341+ if ((size(gL.payments) != 0))
33403342 then throw("No payments required")
33413343 else {
3342- let c = toString(gK.originCaller)
3343- let A = valueOrElse(getString(bH(c)), "")
3344- let fH = am(this, A, 0, false)
3345- let nj = bz(P)
3346- let nk = split(valueOrElse(getString(nj), ":0_15:0_18:0"), "_")
3347- let js = value(assetInfo(fromBase58String(P)))
3348- let hZ = (dH(split(js.description, "_")[di]) / cF)
3349- let ia = valueOrElse(getInteger(by(P)), 0)
3350- let hY = bx(P)
3351- let id = hX(hY, hZ, ia)
3352- let nl = split(id[bc], "_")
3353- let nm = parseIntValue(nl[be])
3354- let nn = parseIntValue(nl[bf])
3355- let no = split(ni, "_")
3356- let np = gt(nk, fx(id[bb]), nm, nn, true, nil)
3357- let gz = np._1
3358- let nq = np._2
3359- let nr = np._3
3360- let ns = gt(no, gz, nq, nr, false, fH)
3361- let gD = ns._1
3362- let nt = ns._2
3363- let nu = ns._3
3364- let nh = fC(gD)
3365- let jY = makeString([nl[bd], toString(nt), toString(nu), nl[bg]], "_")
3366- $Tuple2(([StringEntry(nj, ni), StringEntry(hY, makeString_2C([id[aY], id[aZ], id[ba], nh, jY], ":"))] ++ ll), 0)
3367- }
3368- }
3369-
3370-
3371-
3372-@Callable(gK)
3373-func initDuckTourAttempt (A) = if ((gK.caller != df))
3344+ let d = toString(gL.originCaller)
3345+ let B = valueOrElse(getString(bI(d)), "")
3346+ let fI = an(this, B, 0, false)
3347+ let nk = bA(Q)
3348+ let nl = split(valueOrElse(getString(nk), ":0_15:0_18:0"), "_")
3349+ let jt = value(assetInfo(fromBase58String(Q)))
3350+ let ia = (dI(split(jt.description, "_")[dj]) / cG)
3351+ let ib = valueOrElse(getInteger(bz(Q)), 0)
3352+ let hZ = by(Q)
3353+ let ie = hY(hZ, ia, ib)
3354+ let nm = split(ie[bd], "_")
3355+ let nn = parseIntValue(nm[bf])
3356+ let no = parseIntValue(nm[bg])
3357+ let np = split(nj, "_")
3358+ let nq = gu(nl, fy(ie[bc]), nn, no, true, nil)
3359+ let gA = nq._1
3360+ let nr = nq._2
3361+ let ns = nq._3
3362+ let nt = gu(np, gA, nr, ns, false, fI)
3363+ let gE = nt._1
3364+ let nu = nt._2
3365+ let nv = nt._3
3366+ let ni = fD(gE)
3367+ let jZ = makeString([nm[be], toString(nu), toString(nv), nm[bh]], "_")
3368+ $Tuple2(([StringEntry(nk, nj), StringEntry(hZ, makeString_2C([ie[aZ], ie[ba], ie[bb], ni, jZ], ":"))] ++ lm), 0)
3369+ }
3370+ }
3371+
3372+
3373+
3374+@Callable(gL)
3375+func initDuckTourAttempt (B) = if ((gL.caller != dg))
33743376 then throw("Access denied")
33753377 else {
3376- let jb = z(A)
3377- let jc = ag(valueOrElse(getInteger(D(A)), 0))
3378- let ku = valueOrElse(getInteger(jb), jc)
3379- let nv = bJ(A)
3380- let jq = valueOrElse(getString(nv), aJ)
3381- let ce = valueOrElse(getInteger(df, bP), 0)
3382- let nw = (toString(ce) + "_T_0")
3383- $Tuple2([IntegerEntry(J(A), ku), IntegerEntry(jb, jc), StringEntry(K(A), jq), StringEntry(nv, nw)], nw)
3378+ let jc = A(B)
3379+ let jd = ah(valueOrElse(getInteger(E(B)), 0))
3380+ let kv = valueOrElse(getInteger(jc), jd)
3381+ let nw = bK(B)
3382+ let jr = valueOrElse(getString(nw), aK)
3383+ let cf = valueOrElse(getInteger(dg, bQ), 0)
3384+ let nx = (toString(cf) + "_T_0")
3385+ $Tuple2([IntegerEntry(K(B), kv), IntegerEntry(jc, jd), StringEntry(L(B), jr), StringEntry(nw, nx)], nx)
33843386 }
33853387
33863388
33873389
3388-@Callable(gK)
3390+@Callable(gL)
33893391 func breakAttempt () = {
3390- let ll = lh(gK)
3391- let A = valueOrErrorMessage(getString(bH(toString(gK.caller))), "You don't have a duck staked")
3392- let nv = bJ(A)
3393- let jq = valueOrElse(getString(nv), aJ)
3394- if ((split(jq, "_")[bm] != "T"))
3392+ let lm = li(gL)
3393+ let B = valueOrErrorMessage(getString(bI(toString(gL.caller))), "You don't have a duck staked")
3394+ let nw = bK(B)
3395+ let jr = valueOrElse(getString(nw), aK)
3396+ if ((split(jr, "_")[bn] != "T"))
33953397 then throw("Your duck is not in the tournament")
33963398 else {
3397- let kz = getIntegerValue(J(A))
3398- let kA = getStringValue(K(A))
3399- $Tuple2(((ll :+ IntegerEntry(z(A), kz)) :+ StringEntry(nv, kA)), jq)
3400- }
3401- }
3402-
3403-
3404-
3405-@Callable(gK)
3406-func exitTournamentInternal (A) = if ((gK.caller != this))
3399+ let kA = getIntegerValue(K(B))
3400+ let kB = getStringValue(L(B))
3401+ $Tuple2(((lm :+ IntegerEntry(A(B), kA)) :+ StringEntry(nw, kB)), jr)
3402+ }
3403+ }
3404+
3405+
3406+
3407+@Callable(gL)
3408+func exitTournamentInternal (B) = if ((gL.caller != this))
34073409 then throw("Access denied")
34083410 else {
3409- let kz = getIntegerValue(J(A))
3410- let kA = getStringValue(K(A))
3411- $Tuple2([IntegerEntry(z(A), kz), StringEntry(bJ(A), kA)], false)
3411+ let kA = getIntegerValue(K(B))
3412+ let kB = getStringValue(L(B))
3413+ $Tuple2([IntegerEntry(A(B), kA), StringEntry(bK(B), kB)], false)
34123414 }
34133415
34143416
34153417
3416-@Callable(gK)
3417-func exitDeliveryInternal (A) = if ((gK.caller != this))
3418+@Callable(gL)
3419+func exitDeliveryInternal (B) = if ((gL.caller != this))
34183420 then throw("Access denied")
34193421 else {
3420- let mi = kr(A, false, 0)
3421- $Tuple2((mi._1 ++ mi._2), false)
3422+ let mj = ks(B, false, 0)
3423+ $Tuple2((mj._1 ++ mj._2), false)
34223424 }
34233425
34243426
34253427
3426-@Callable(gK)
3427-func autoExitDelivery (A,iV) = if ((gK.caller != this))
3428+@Callable(gL)
3429+func autoExitDelivery (B,iW) = if ((gL.caller != this))
34283430 then throw("Access denied")
34293431 else {
3430- let mi = kr(A, true, iV)
3431- $Tuple2(mi._1, $Tuple2(mi._3, mi._4))
3432+ let mj = ks(B, true, iW)
3433+ $Tuple2(mj._1, $Tuple2(mj._3, mj._4))
34323434 }
34333435
34343436
34353437
3436-@Callable(gK)
3437-func prepareRobbery (iQ,iR) = {
3438- let ll = lh(gK)
3439- if (!(sigVerify_8Kb(iQ, iR, dZ)))
3438+@Callable(gL)
3439+func prepareRobbery (iR,iS) = {
3440+ let lm = li(gL)
3441+ if (!(sigVerify_8Kb(iR, iS, ea)))
34403442 then throw("signature does not match")
3441- else if ((size(gK.payments) != 1))
3443+ else if ((size(gL.payments) != 1))
34423444 then throw("exactly 1 payment must be attached")
34433445 else {
3444- let lm = gK.payments[0]
3445- let nx = lm.amount
3446- if (if (!(isDefined(lm.assetId)))
3446+ let ln = gL.payments[0]
3447+ let ny = ln.amount
3448+ if (if (!(isDefined(ln.assetId)))
34473449 then true
3448- else (value(lm.assetId) != dm))
3450+ else (value(ln.assetId) != dn))
34493451 then throw("WLGOLD payments only!")
34503452 else {
3451- let fp = split(toUtf8String(iQ), "|")
3452- if ((size(fp) != 2))
3453+ let fq = split(toUtf8String(iR), "|")
3454+ if ((size(fq) != 2))
34533455 then throw("Wrong message format")
34543456 else {
3455- let A = fp[0]
3456- if (kp(A))
3457+ let B = fq[0]
3458+ if (kq(B))
34573459 then throw("prepareRobbery_checkTournament")
3458- else if (kq(A))
3460+ else if (kr(B))
34593461 then throw("prepareRobbery_checkDelivery")
34603462 else {
3461- let ay = au(this, A)._1
3462- if ((ay > nx))
3463- then throw(((("Payment " + toString(nx)) + " < required ") + toString(ay)))
3463+ let az = av(this, B)._1
3464+ if ((az > ny))
3465+ then throw(((("Payment " + toString(ny)) + " < required ") + toString(az)))
34643466 else {
3465- let ny = split(fp[1], "_")
3466- let ax = lastBlock.timestamp
3467- let az = valueOrElse(getInteger(R(A)), 0)
3468- let aA = valueOrElse(getString(S(A)), "")
3469- let aB = valueOrElse(getInteger(Q(aA)), 0)
3470- if (if ((az != x))
3471- then (aB > ax)
3467+ let nz = split(fq[1], "_")
3468+ let ay = lastBlock.timestamp
3469+ let aA = valueOrElse(getInteger(S(B)), 0)
3470+ let aB = valueOrElse(getString(T(B)), "")
3471+ let aC = valueOrElse(getInteger(R(aB)), 0)
3472+ if (if ((aA != y))
3473+ then (aC > ay)
34723474 else false)
3473- then throw(("You already started robbing, wait till " + toString(aB)))
3475+ then throw(("You already started robbing, wait till " + toString(aC)))
34743476 else {
3475- func nz (eR,P) = {
3476- let nA = valueOrElse(getInteger(O(P)), 0)
3477- let nB = valueOrElse(getInteger(Q(P)), 0)
3478- if ((nA > size(u)))
3477+ func nA (eS,Q) = {
3478+ let nB = valueOrElse(getInteger(P(Q)), 0)
3479+ let nC = valueOrElse(getInteger(R(Q)), 0)
3480+ if ((nB > size(v)))
34793481 then throw("Invalid state")
3480- else if ((ax > nB))
3482+ else if ((ay > nC))
34813483 then {
3482- let nC = valueOrElse(getInteger(br(P)), 0)
3483- if ((0 >= nC))
3484- then eR
3484+ let nD = valueOrElse(getInteger(bs(Q)), 0)
3485+ if ((0 >= nD))
3486+ then eS
34853487 else {
3486- let gr = value(assetInfo(fromBase58String(P)))
3487- let jw = split(gr.description, "_")
3488- let ji = dH(jw[di])
3489- let nD = jh(P, ji)
3490- let gQ = (ax - nC)
3491- let jz = fraction(gQ, (nD * ji), a)
3492- if ((v > jz))
3493- then eR
3494- else (eR :+ P)
3488+ let gs = value(assetInfo(fromBase58String(Q)))
3489+ let jx = split(gs.description, "_")
3490+ let jj = dI(jx[dj])
3491+ let nE = ji(Q, jj)
3492+ let gR = (ay - nD)
3493+ let jA = fraction(gR, (nE * jj), a)
3494+ if ((w > jA))
3495+ then eS
3496+ else (eS :+ Q)
34953497 }
34963498 }
3497- else eR
3499+ else eS
34983500 }
34993501
3500- let nE = {
3501- let eT = ny
3502- let eU = size(eT)
3503- let eV = nil
3504- func eW (eX,eY) = if ((eY >= eU))
3505- then eX
3506- else nz(eX, eT[eY])
3507-
3508- func eZ (eX,eY) = if ((eY >= eU))
3509- then eX
3502+ let nF = {
3503+ let eU = nz
3504+ let eV = size(eU)
3505+ let eW = nil
3506+ func eX (eY,eZ) = if ((eZ >= eV))
3507+ then eY
3508+ else nA(eY, eU[eZ])
3509+
3510+ func fa (eY,eZ) = if ((eZ >= eV))
3511+ then eY
35103512 else throw("List size exceeds 10")
35113513
3512- eZ(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
3514+ fa(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
35133515 }
3514- if ((size(nE) == 0))
3516+ if ((size(nF) == 0))
35153517 then throw("No candidates for robbery")
35163518 else {
3517- let nF = dR(size(nE), height, (iR + gK.transactionId))
3518- let P = nE[nF]
3519- $Tuple2(([IntegerEntry(O(P), w), IntegerEntry(Q(P), (ax + u[w])), IntegerEntry(R(A), y), StringEntry(S(A), P)] ++ ll), P)
3519+ let nG = dS(size(nF), height, (iS + gL.transactionId))
3520+ let Q = nF[nG]
3521+ $Tuple2(([IntegerEntry(P(Q), x), IntegerEntry(R(Q), (ay + v[x])), IntegerEntry(S(B), z), StringEntry(T(B), Q)] ++ lm), Q)
35203522 }
35213523 }
35223524 }
35283530
35293531
35303532
3531-@Callable(gK)
3532-func robLand (iQ,iR) = {
3533- let ll = lh(gK)
3534- if (!(sigVerify_8Kb(iQ, iR, dZ)))
3533+@Callable(gL)
3534+func robLand (iR,iS) = {
3535+ let lm = li(gL)
3536+ if (!(sigVerify_8Kb(iR, iS, ea)))
35353537 then throw("signature does not match")
35363538 else {
3537- let bL = toString(gK.caller)
3538- let A = valueOrErrorMessage(getString(bH(bL)), "You don't have a duck staked")
3539- let ax = lastBlock.timestamp
3540- $Tuple2((ll :+ IntegerEntry(M(A), ax)), 0)
3541- }
3542- }
3543-
3544-
3545-
3546-@Callable(gK)
3547-func acceptDelivery () = if (!(cv))
3539+ let bM = toString(gL.caller)
3540+ let B = valueOrErrorMessage(getString(bI(bM)), "You don't have a duck staked")
3541+ let ay = lastBlock.timestamp
3542+ $Tuple2((lm :+ IntegerEntry(N(B), ay)), 0)
3543+ }
3544+ }
3545+
3546+
3547+
3548+@Callable(gL)
3549+func acceptDelivery () = if (!(cw))
35483550 then throw("Delivery feature is turned off!")
35493551 else {
3550- let ll = lh(gK)
3551- let bL = toString(gK.caller)
3552- let A = valueOrErrorMessage(getString(bH(bL)), "You don't have a duck staked")
3553- let nG = valueOrElse(getInteger(dc, bN), 0)
3554- let kx = valueOrElse(getInteger(dc, bO), 0)
3555- if ((aM > (nG - kx)))
3556- then throw(((("Delivery is not available, fund=" + dM(nG, 6)) + ", locked=") + dM(kx, 6)))
3552+ let lm = li(gL)
3553+ let bM = toString(gL.caller)
3554+ let B = valueOrErrorMessage(getString(bI(bM)), "You don't have a duck staked")
3555+ let nH = valueOrElse(getInteger(dd, bO), 0)
3556+ let ky = valueOrElse(getInteger(dd, bP), 0)
3557+ if ((aN > (nH - ky)))
3558+ then throw(((("Delivery is not available, fund=" + dN(nH, 6)) + ", locked=") + dN(ky, 6)))
35573559 else {
3558- let ax = lastBlock.timestamp
3559- let nH = valueOrElse(getInteger(T(A)), 0)
3560- if ((nH > ax))
3561- then throw(("Delivery is forbidden for your duck until " + toString(nH)))
3562- else if (kp(A))
3560+ let ay = lastBlock.timestamp
3561+ let nI = valueOrElse(getInteger(U(B)), 0)
3562+ if ((nI > ay))
3563+ then throw(("Delivery is forbidden for your duck until " + toString(nI)))
3564+ else if (kq(B))
35633565 then throw("acceptDelivery_checkTournament")
3564- else if (kq(A))
3566+ else if (kr(B))
35653567 then throw("acceptDelivery_checkDelivery")
35663568 else {
3567- let nI = dz(invoke(dc, "updateDeliveryLocked", [(kx + aM)], nil))
3568- let jb = z(A)
3569- let jc = ag(valueOrElse(getInteger(D(A)), 0))
3570- let ku = valueOrElse(getInteger(jb), jc)
3571- let nv = bJ(A)
3572- let jq = valueOrElse(getString(nv), aJ)
3573- let nJ = (toString(ax) + "_D_0")
3574- $Tuple2(([IntegerEntry(J(A), ku), IntegerEntry(jb, jc), StringEntry(K(A), jq), StringEntry(nv, nJ)] ++ ll), $Tuple2(nJ, nI))
3569+ let nJ = dA(invoke(dd, "updateDeliveryLocked", [(ky + aN)], nil))
3570+ let jc = A(B)
3571+ let jd = ah(valueOrElse(getInteger(E(B)), 0))
3572+ let kv = valueOrElse(getInteger(jc), jd)
3573+ let nw = bK(B)
3574+ let jr = valueOrElse(getString(nw), aK)
3575+ let nK = (toString(ay) + "_D_0")
3576+ $Tuple2(([IntegerEntry(K(B), kv), IntegerEntry(jc, jd), StringEntry(L(B), jr), StringEntry(nw, nK)] ++ lm), $Tuple2(nK, nJ))
35753577 }
35763578 }
35773579 }
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 86400000
55
6-func b (c) = ("lastArbTimeUser_" + c)
7-
8-
9-let d = 100000000
10-
11-let e = 3200
12-
13-let f = 4000
14-
15-let g = 3
16-
17-let h = 100000000
18-
19-let i = 400
20-
21-let j = ["Strength", "Accuracy", "Intellect", "Endurance", "Dexterity", "Level", "Health"]
22-
23-let k = 0
24-
25-let l = 1
26-
27-let m = 2
28-
29-let n = 3
30-
31-let o = 4
32-
33-let p = 0
34-
35-let q = 6
36-
37-let r = 2
6+let b = 60000
7+
8+func c (d) = ("lastArbTimeUser_" + d)
9+
10+
11+let e = 100000000
12+
13+let f = 3200
14+
15+let g = 4000
16+
17+let h = 3
18+
19+let i = 100000000
20+
21+let j = 400
22+
23+let k = ["Strength", "Accuracy", "Intellect", "Endurance", "Dexterity", "Level", "Health"]
24+
25+let l = 0
26+
27+let m = 1
28+
29+let n = 2
30+
31+let o = 3
32+
33+let p = 4
34+
35+let q = 0
36+
37+let r = 6
3838
3939 let s = 2
4040
41-let t = 30
42-
43-let u = [0, 600000, 900000, 43200000, 21600000]
44-
45-let v = 20000000
46-
47-let w = 1
48-
49-let x = 0
50-
51-let y = 1
52-
53-func z (A) = ("duckHealth_" + A)
54-
55-
56-func B (A) = ("duckChars_" + A)
57-
58-
59-func C (A) = ("duckXP_" + A)
60-
61-
62-func D (A) = ("duckLevel_" + A)
63-
64-
65-func E (A) = ("duckFreePoints_" + A)
66-
67-
68-func F (A) = ("duckEquipment_" + A)
69-
70-
71-func G (c) = ("userXP_" + c)
72-
73-
74-func H (c) = ("userLevel_" + c)
75-
76-
77-func I (c) = ("userFreePoints_" + c)
78-
79-
80-func J (A) = ("savedHealth_" + A)
81-
82-
83-func K (A) = ("savedLocation_" + A)
84-
85-
86-func L (A) = ("duckBuffs_" + A)
87-
88-
89-func M (A) = ("lastRobberyTime_" + A)
90-
91-
92-func N (A) = ("lastRobberyCost_" + A)
93-
94-
95-func O (P) = ("landRobberyState_" + P)
96-
97-
98-func Q (P) = ("landCooldownETA_" + P)
99-
100-
101-func R (A) = ("duckRobberyState_" + A)
102-
103-
104-func S (A) = ("lockedLandByDuck_" + A)
105-
106-
107-func T (A) = ("deliveryDelayByDuck_" + A)
108-
109-
110-let U = 10000
41+let t = 2
42+
43+let u = 30
44+
45+let v = [0, 600000, 900000, 43200000, 21600000]
46+
47+let w = 20000000
48+
49+let x = 1
50+
51+let y = 0
52+
53+let z = 1
54+
55+func A (B) = ("duckHealth_" + B)
56+
57+
58+func C (B) = ("duckChars_" + B)
59+
60+
61+func D (B) = ("duckXP_" + B)
62+
63+
64+func E (B) = ("duckLevel_" + B)
65+
66+
67+func F (B) = ("duckFreePoints_" + B)
68+
69+
70+func G (B) = ("duckEquipment_" + B)
71+
72+
73+func H (d) = ("userXP_" + d)
74+
75+
76+func I (d) = ("userLevel_" + d)
77+
78+
79+func J (d) = ("userFreePoints_" + d)
80+
81+
82+func K (B) = ("savedHealth_" + B)
83+
84+
85+func L (B) = ("savedLocation_" + B)
86+
87+
88+func M (B) = ("duckBuffs_" + B)
89+
90+
91+func N (B) = ("lastRobberyTime_" + B)
92+
93+
94+func O (B) = ("lastRobberyCost_" + B)
95+
96+
97+func P (Q) = ("landRobberyState_" + Q)
98+
99+
100+func R (Q) = ("landCooldownETA_" + Q)
101+
102+
103+func S (B) = ("duckRobberyState_" + B)
104+
105+
106+func T (B) = ("lockedLandByDuck_" + B)
107+
108+
109+func U (B) = ("deliveryDelayByDuck_" + B)
110+
111111
112112 let V = 10000
113113
114-let W = 2000
115-
116-let X = 100000
117-
118-let Y = 1000000
119-
120-let Z = 5000000
121-
122-let aa = 10000
123-
124-let ab = 1000000
114+let W = 10000
115+
116+let X = 2000
117+
118+let Y = 100000
119+
120+let Z = 1000000
121+
122+let aa = 5000000
123+
124+let ab = 10000
125125
126126 let ac = 1000000
127127
128-let ad = 10000
129-
130-func ae (af) = fraction(e, pow(af, 4, f, 4, 4, DOWN), d)
131-
132-
133-func ag (ah) = (100 + ah)
134-
135-
136-func ai (aj,ak) = {
137- let al = ae(ak)
138-[al, (g * (al - aj))]
139- }
140-
141-
142-func am (an,A,ao,ap) = {
143- let aq = split(valueOrElse(getString(an, B(A)), "0_0_0_0_0"), "_")
144- let ar = valueOrElse(getInteger(an, D(A)), 0)
145- let as = valueOrElse(getInteger(an, z(A)), ag(ar))
146- let at = split(valueOrElse(getString(an, L(A)), "0_0_0_0_0"), "_")
147- ([parseIntValue(aq[k]), parseIntValue(aq[l]), parseIntValue(aq[m]), parseIntValue(aq[n]), parseIntValue(aq[o]), ar, as] ++ (if (ap)
148- then [ao, ao, ao, ao, ao]
149- else [parseIntValue(at[k]), parseIntValue(at[l]), parseIntValue(at[m]), parseIntValue(at[n]), parseIntValue(at[o])]))
150- }
151-
152-
153-func au (an,A) = {
154- let av = valueOrElse(getInteger(an, N(A)), 0)
155- let aw = valueOrElse(getInteger(an, M(A)), 0)
156- let ax = lastBlock.timestamp
157- let ay = max([h, (av - (i * (ax - aw)))])
158- let az = valueOrElse(getInteger(an, R(A)), 0)
159- let aA = valueOrElse(getString(an, S(A)), "")
160- let aB = valueOrElse(getInteger(an, Q(aA)), 0)
161- $Tuple5(ay, aw, az, aA, aB)
162- }
163-
164-
165-let aC = "LAND"
166-
167-let aD = "DUCK"
168-
169-let aE = "PRESALE"
170-
171-let aF = 6
172-
173-let aG = 25
174-
175-let aH = 3456000
176-
177-let aI = 10000000000
178-
179-let aJ = "Africa_F_Africa"
180-
181-let aK = 39637
182-
183-let aL = 10
184-
185-let aM = 50000
186-
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-
205-let aW = 10
128+let ad = 1000000
129+
130+let ae = 10000
131+
132+func af (ag) = fraction(f, pow(ag, 4, g, 4, 4, DOWN), e)
133+
134+
135+func ah (ai) = (100 + ai)
136+
137+
138+func aj (ak,al) = {
139+ let am = af(al)
140+[am, (h * (am - ak))]
141+ }
142+
143+
144+func an (ao,B,ap,aq) = {
145+ let ar = split(valueOrElse(getString(ao, C(B)), "0_0_0_0_0"), "_")
146+ let as = valueOrElse(getInteger(ao, E(B)), 0)
147+ let at = valueOrElse(getInteger(ao, A(B)), ah(as))
148+ let au = split(valueOrElse(getString(ao, M(B)), "0_0_0_0_0"), "_")
149+ ([parseIntValue(ar[l]), parseIntValue(ar[m]), parseIntValue(ar[n]), parseIntValue(ar[o]), parseIntValue(ar[p]), as, at] ++ (if (aq)
150+ then [ap, ap, ap, ap, ap]
151+ else [parseIntValue(au[l]), parseIntValue(au[m]), parseIntValue(au[n]), parseIntValue(au[o]), parseIntValue(au[p])]))
152+ }
153+
154+
155+func av (ao,B) = {
156+ let aw = valueOrElse(getInteger(ao, O(B)), 0)
157+ let ax = valueOrElse(getInteger(ao, N(B)), 0)
158+ let ay = lastBlock.timestamp
159+ let az = max([i, (aw - (j * (ay - ax)))])
160+ let aA = valueOrElse(getInteger(ao, S(B)), 0)
161+ let aB = valueOrElse(getString(ao, T(B)), "")
162+ let aC = valueOrElse(getInteger(ao, R(aB)), 0)
163+ $Tuple5(az, ax, aA, aB, aC)
164+ }
165+
166+
167+let aD = "LAND"
168+
169+let aE = "DUCK"
170+
171+let aF = "PRESALE"
172+
173+let aG = 6
174+
175+let aH = 25
176+
177+let aI = 3456000
178+
179+let aJ = 10000000000
180+
181+let aK = "Africa_F_Africa"
182+
183+let aL = 39637
184+
185+let aM = 10
186+
187+let aN = 50000
188+
189+let aO = 600000
190+
191+let aP = ["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"]
192+
193+let aQ = ["Americas", "Europe", "Asia", "Africa", "Oceania"]
194+
195+let aR = 10000000
196+
197+let aS = [15, 16, 17, 18, 19, 20]
198+
199+let aT = ["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_"]
200+
201+let aU = 6
202+
203+let aV = 8
204+
205+let aW = 9
206206
207207 let aX = 10
208208
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, "_")
334- let ax = lastBlock.timestamp
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)
209+let aY = 10
210+
211+let aZ = 0
212+
213+let ba = 1
214+
215+let bb = 2
216+
217+let bc = 3
218+
219+let bd = 4
220+
221+let be = 0
222+
223+let bf = 1
224+
225+let bg = 2
226+
227+let bh = 3
228+
229+let bi = 0
230+
231+let bj = 1
232+
233+let bk = 2
234+
235+let bl = 3
236+
237+let bm = 0
238+
239+let bn = 1
240+
241+let bo = 2
242+
243+func bp (bq) = ("no_" + bq)
244+
245+
246+func br (bq) = ("lcna_" + bq)
247+
248+
249+func bs (bq) = ("st_" + bq)
250+
251+
252+func bt (bu,bq) = makeString(["las", bu, bq], "_")
253+
254+
255+func bv (bw,bq,bx) = ((((("sttao_" + bw) + "_") + bq) + "_") + bx)
256+
257+
258+func by (Q) = ("wh_" + Q)
259+
260+
261+func bz (bq) = ("infraLevel_" + bq)
262+
263+
264+func bA (Q) = ("fortifications_" + Q)
265+
266+
267+func bB (bq) = ("duckCustomNameByAssetId_" + bq)
268+
269+
270+func bC (d) = ("accountCustomNameByAddr_" + d)
271+
272+
273+func bD (d) = ("accRefBy_" + d)
274+
275+
276+func bE (B) = ("onboardArtActivatedOnDuck_" + B)
277+
278+
279+func bF (d) = ("onboardArtActivatedDuckBy_" + d)
280+
281+
282+func bG (d) = ("accReferrals_" + d)
283+
284+
285+func bH (bq) = ("duckOwner_" + bq)
286+
287+
288+func bI (bx) = ("stakedDuckByOwner_" + bx)
289+
290+
291+func bJ (B) = ("backPack_" + B)
292+
293+
294+func bK (B) = ("duckLocation_" + B)
295+
296+
297+func bL (bM) = ("%s%s__userGwlReleaseTime__" + bM)
298+
299+
300+func bN () = "emergencyWarehouseProducts"
301+
302+
303+let bO = "deliveryFund"
304+
305+let bP = "deliveryLocked"
306+
307+let bQ = "%s__lastTourId"
308+
309+func bR (bS) = ("%s%d__tourStaticData__" + toString(bS))
310+
311+
312+func bT (bS) = ("%s%d__tourDynamicData__" + toString(bS))
313+
314+
315+func bU (bS,B) = makeString(["%s%d%s__bestResultByTourAndDuck", toString(bS), B], "__")
316+
317+
318+let bV = 0
319+
320+let bW = 1
321+
322+let bX = 6
323+
324+let bY = 1
325+
326+func bZ (ca,bS) = {
327+ let cb = split(valueOrErrorMessage(getString(ca, bR(bS)), (("Error reading tournament " + toString(bS)) + " data")), "__")
328+ let cc = split_4C(valueOrErrorMessage(getString(ca, bT(bS)), (("Error reading tournament " + toString(bS)) + " data")), "__")
329+[cb, cc]
330+ }
331+
332+
333+func cd (ca,ce) = {
334+ let cf = valueOrElse(getInteger(ca, bQ), 0)
335+ let cg = split(ce, "_")
336+ let ay = lastBlock.timestamp
337+ let ch = bZ(ca, cf)
338+ let cb = ch[bV]
339+ let cc = ch[bW]
340+ if (if (if ((cg[bn] == "T"))
341+ then (parseIntValue(cg[bm]) == cf)
340342 else false)
341- then (cb[bX] == "INPROGRESS")
343+ then (cc[bY] == "INPROGRESS")
342344 else false)
343- then (parseIntValue(ca[bW]) > ax)
345+ then (parseIntValue(cb[bX]) > ay)
344346 else false
345347 }
346348
347349
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))
350+func ci (ce) = {
351+ let cg = split(ce, "_")
352+ let ay = lastBlock.timestamp
353+ let cj = parseIntValue(cg[bm])
354+ let ck = parseIntValue(cg[bo])
355+ if (if ((cg[bn] == "D"))
356+ then (ay > (cj + aO))
355357 else false)
356- then (3 >= cj)
358+ then (3 >= ck)
357359 else false
358360 }
359361
360362
361-func ck (cd) = {
362- let cl = split(cd, "_")[bm]
363- if ((cl != "T"))
364- then (cl != "D")
363+func cl (ce) = {
364+ let cm = split(ce, "_")[bn]
365+ if ((cm != "T"))
366+ then (cm != "D")
365367 else false
366368 }
367369
368370
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 ((cl == "D"))
371+func cn (ca,ce) = {
372+ let cf = valueOrElse(getInteger(ca, bQ), 0)
373+ let cg = split(ce, "_")
374+ let ay = lastBlock.timestamp
375+ let ch = bZ(ca, cf)
376+ let cb = ch[bV]
377+ let cc = ch[bW]
378+ let cm = cg[bn]
379+ if ((cm == "D"))
378380 then true
379- else if (if (if ((cf[bm] == "T"))
380- then (parseIntValue(cf[bl]) == ce)
381+ else if (if (if ((cg[bn] == "T"))
382+ then (parseIntValue(cg[bm]) == cf)
381383 else false)
382- then (cb[bX] == "INPROGRESS")
384+ then (cc[bY] == "INPROGRESS")
383385 else false)
384- then (parseIntValue(ca[bW]) > ax)
386+ then (parseIntValue(cb[bX]) > ay)
385387 else false
386388 }
387389
388390
389-func cn (co) = (parseIntValue(co[aT]) * aQ)
390-
391-
392-func cp (cq,cr,cs) = throw(((((("Cheat attempt: oldLoc=" + cq) + ", newLoc=") + cr) + ", case=") + toString(cs)))
393-
394-
395-let ct = false
391+func co (cp) = (parseIntValue(cp[aU]) * aR)
392+
393+
394+func cq (cr,cs,ct) = throw(((((("Cheat attempt: oldLoc=" + cr) + ", newLoc=") + cs) + ", case=") + toString(ct)))
395+
396396
397397 let cu = false
398398
399-let cv = true
400-
401-let cw = take(drop(this.bytes, 1), 1)
402-
403-let cx = {
404- let cy = cw
405- if ((base58'2W' == cy))
399+let cv = false
400+
401+let cw = true
402+
403+let cx = take(drop(this.bytes, 1), 1)
404+
405+let cy = {
406+ let cz = cx
407+ if ((base58'2W' == cz))
406408 then base58'9wc3LXNA4TEBsXyKtoLE9mrbDD7WMHXvXrCjZvabLAsi'
407- else if ((base58'2T' == cy))
409+ else if ((base58'2T' == cz))
408410 then base58'6mWwf9mZBjVgkC54idpyaZLQfAosD914wT8fGf2iiY63'
409411 else throw("Unknown chain")
410412 }
411413
412-let cz = {
413- let cy = cw
414- if ((base58'2W' == cy))
414+let cA = {
415+ let cz = cx
416+ if ((base58'2W' == cz))
415417 then "3PQCuvFbvh4LkPUnrnU1z3jnbA1p9m3WNhv"
416- else if ((base58'2T' == cy))
418+ else if ((base58'2T' == cz))
417419 then "3MumkGGztCKAXpWDqxkddofqXSUbqQkvSJy"
418420 else throw("Unknown chain")
419421 }
420422
421-let cA = {
422- let cy = cw
423- if ((base58'2W' == cy))
423+let cB = {
424+ let cz = cx
425+ if ((base58'2W' == cz))
424426 then 10000000000
425- else if ((base58'2T' == cy))
427+ else if ((base58'2T' == cz))
426428 then 100000000
427429 else throw("Unknown chain")
428430 }
429431
430-let cB = {
431- let cy = cw
432- if ((base58'2W' == cy))
432+let cC = {
433+ let cz = cx
434+ if ((base58'2W' == cz))
433435 then 86400000
434- else if ((base58'2T' == cy))
436+ else if ((base58'2T' == cz))
435437 then 60000
436438 else throw("Unknown chain")
437439 }
438440
439-let cC = "__"
440-
441-let cD = 1000000
442-
443-let cE = 100000000
444-
445-let cF = 25
446-
447-let cG = 100
448-
449-let cH = 225
450-
451-let cI = 400
452-
453-let cJ = 625
454-
455-let cK = [0, 1, 2, 3, 4, 5]
456-
457-func cL (cM,cN) = valueOrErrorMessage(getString(cM, cN), makeString(["mandatory ", toString(cM), ".", cN, " is not defined"], ""))
458-
459-
460-let cO = 1
461-
462-let cP = 2
463-
464-let cQ = 3
465-
466-let cR = 4
467-
468-let cS = 7
469-
470-let cT = 8
471-
472-func cU () = "%s__restConfig"
473-
474-
475-func cV () = "%s__restAddr"
476-
477-
478-func cW (cX) = split_4C(cL(cX, cU()), cC)
479-
480-
481-func cY (cZ,da) = valueOrErrorMessage(addressFromString(cZ[da]), ("Rest cfg doesn't contain address at index " + toString(da)))
482-
483-
484-let db = addressFromStringValue(valueOrElse(getString(this, cV()), cz))
485-
486-let cZ = cW(db)
487-
488-let an = cY(cZ, cO)
489-
490-let dc = cY(cZ, cP)
491-
492-let dd = cY(cZ, cQ)
493-
494-let de = cY(cZ, cR)
495-
496-let df = cY(cZ, cS)
497-
498-let dg = cY(cZ, cT)
499-
500-let dh = 0
501-
502-let di = 1
503-
504-let dj = 2
505-
506-let dk = 3
507-
508-let dl = "wlg_assetId"
509-
510-let dm = valueOrErrorMessage(getBinary(de, dl), "WLGOLD is not issued yet")
511-
512-let dn = "acresAssetId"
513-
514-let do = valueOrErrorMessage(getBinary(dg, dn), "ACRES is not issued yet")
515-
516-let dp = 2
517-
518-func dq (cM) = ("finishBlockForAddr_" + cM)
519-
520-
521-func dr () = "resTypesProportions"
522-
523-
524-func ds (dt) = ("resTypesByContinent_" + dt)
525-
526-
527-func du (bw) = ("stakedLandsByOwner_" + bw)
528-
529-
530-func dv (bw) = ("stakedPiecesByOwner_" + bw)
531-
532-
533-func dw (dx) = {
534- let cy = dx
535- if ($isInstanceOf(cy, "String"))
441+let cD = "__"
442+
443+let cE = 1000000
444+
445+let cF = 100000000
446+
447+let cG = 25
448+
449+let cH = 100
450+
451+let cI = 225
452+
453+let cJ = 400
454+
455+let cK = 625
456+
457+let cL = [0, 1, 2, 3, 4, 5]
458+
459+func cM (cN,cO) = valueOrErrorMessage(getString(cN, cO), makeString(["mandatory ", toString(cN), ".", cO, " is not defined"], ""))
460+
461+
462+let cP = 1
463+
464+let cQ = 2
465+
466+let cR = 3
467+
468+let cS = 4
469+
470+let cT = 7
471+
472+let cU = 8
473+
474+func cV () = "%s__restConfig"
475+
476+
477+func cW () = "%s__restAddr"
478+
479+
480+func cX (cY) = split_4C(cM(cY, cV()), cD)
481+
482+
483+func cZ (da,db) = valueOrErrorMessage(addressFromString(da[db]), ("Rest cfg doesn't contain address at index " + toString(db)))
484+
485+
486+let dc = addressFromStringValue(valueOrElse(getString(this, cW()), cA))
487+
488+let da = cX(dc)
489+
490+let ao = cZ(da, cP)
491+
492+let dd = cZ(da, cQ)
493+
494+let de = cZ(da, cR)
495+
496+let df = cZ(da, cS)
497+
498+let dg = cZ(da, cT)
499+
500+let dh = cZ(da, cU)
501+
502+let di = 0
503+
504+let dj = 1
505+
506+let dk = 2
507+
508+let dl = 3
509+
510+let dm = "wlg_assetId"
511+
512+let dn = valueOrErrorMessage(getBinary(df, dm), "WLGOLD is not issued yet")
513+
514+let do = "acresAssetId"
515+
516+let dp = valueOrErrorMessage(getBinary(dh, do), "ACRES is not issued yet")
517+
518+let dq = 2
519+
520+func dr (cN) = ("finishBlockForAddr_" + cN)
521+
522+
523+func ds () = "resTypesProportions"
524+
525+
526+func dt (du) = ("resTypesByContinent_" + du)
527+
528+
529+func dv (bx) = ("stakedLandsByOwner_" + bx)
530+
531+
532+func dw (bx) = ("stakedPiecesByOwner_" + bx)
533+
534+
535+func dx (dy) = {
536+ let cz = dy
537+ if ($isInstanceOf(cz, "String"))
536538 then {
537- let dy = cy
538- dy
539+ let dz = cz
540+ dz
539541 }
540542 else throw("fail to cast into String")
541543 }
542544
543545
544-func dz (dx) = {
545- let cy = dx
546- if ($isInstanceOf(cy, "Int"))
546+func dA (dy) = {
547+ let cz = dy
548+ if ($isInstanceOf(cz, "Int"))
547549 then {
548- let dA = cy
549- dA
550+ let dB = cz
551+ dB
550552 }
551553 else throw("fail to cast into Int")
552554 }
553555
554556
555-func dB (dx) = {
556- let cy = dx
557- if ($isInstanceOf(cy, "List[Any]"))
557+func dC (dy) = {
558+ let cz = dy
559+ if ($isInstanceOf(cz, "List[Any]"))
558560 then {
559- let dC = cy
560- dC
561+ let dD = cz
562+ dD
561563 }
562564 else throw("fail to cast into List[Any]")
563565 }
564566
565567
566-func dD (dx) = {
567- let cy = dx
568- if ($isInstanceOf(cy, "Boolean"))
568+func dE (dy) = {
569+ let cz = dy
570+ if ($isInstanceOf(cz, "Boolean"))
569571 then {
570- let dy = cy
571- dy
572+ let dz = cz
573+ dz
572574 }
573575 else throw("fail to cast into Boolean")
574576 }
575577
576578
577-func dE (dF) = {
578- let cy = dF
579- if ($isInstanceOf(cy, "(String, Int)"))
579+func dF (dG) = {
580+ let cz = dG
581+ if ($isInstanceOf(cz, "(String, Int)"))
580582 then {
581- let dG = cy
582- dG
583+ let dH = cz
584+ dH
583585 }
584586 else throw("fail to cast into (String, Int)")
585587 }
586588
587589
588-func dH (dI) = {
589- let cy = dI
590- if (("S" == cy))
591- then cF
592- else if (("M" == cy))
593- then cG
594- else if (("L" == cy))
595- then cH
596- else if (("XL" == cy))
597- then cI
598- else if (("XXL" == cy))
599- then cJ
590+func dI (dJ) = {
591+ let cz = dJ
592+ if (("S" == cz))
593+ then cG
594+ else if (("M" == cz))
595+ then cH
596+ else if (("L" == cz))
597+ then cI
598+ else if (("XL" == cz))
599+ then cJ
600+ else if (("XXL" == cz))
601+ then cK
600602 else throw("Unknown land size")
601603 }
602604
603605
604-func dJ (dy) = isDefined(parseInt(dy))
605-
606-
607-func dK () = "contractsBlocked"
608-
609-
610-func dL (c) = ("lastTxIdByUser_" + c)
611-
612-
613-func dM (dF,dN) = {
614- let dO = pow(10, 0, dN, 0, 0, DOWN)
615- let dP = toString((dF % dO))
616- let dQ = drop(toString(dO), (1 + size(dP)))
617- (((toString((dF / dO)) + ".") + dQ) + dP)
618- }
619-
620-
621-func dR (dS,dT,dU) = {
622- let dV = value(blockInfoByHeight(dT))
623- let dW = sha256((value(dV.vrf) + dU))
624- (toInt(dW) % dS)
625- }
626-
627-
628-let dX = {
629- let cy = cw
630- if ((base58'2W' == cy))
606+func dK (dz) = isDefined(parseInt(dz))
607+
608+
609+func dL () = "contractsBlocked"
610+
611+
612+func dM (d) = ("lastTxIdByUser_" + d)
613+
614+
615+func dN (dG,dO) = {
616+ let dP = pow(10, 0, dO, 0, 0, DOWN)
617+ let dQ = toString((dG % dP))
618+ let dR = drop(toString(dP), (1 + size(dQ)))
619+ (((toString((dG / dP)) + ".") + dR) + dQ)
620+ }
621+
622+
623+func dS (dT,dU,dV) = {
624+ let dW = value(blockInfoByHeight(dU))
625+ let dX = sha256((value(dW.vrf) + dV))
626+ (toInt(dX) % dT)
627+ }
628+
629+
630+let dY = {
631+ let cz = cx
632+ if ((base58'2W' == cz))
631633 then addressFromStringValue("3PEktVux2RhchSN63DsDo4b4mz4QqzKSeDv")
632- else if ((base58'2T' == cy))
634+ else if ((base58'2T' == cz))
633635 then this
634636 else throw("Unknown chain")
635637 }
636638
637-let dY = {
638- let cy = cw
639- if ((base58'2W' == cy))
639+let dZ = {
640+ let cz = cx
641+ if ((base58'2W' == cz))
640642 then addressFromStringValue("3PDVuU45H7Eh5dmtNbnRNRStGwULA7NY6Hb")
641- else if ((base58'2T' == cy))
643+ else if ((base58'2T' == cz))
642644 then this
643645 else throw("Unknown chain")
644646 }
645647
646-let dZ = {
647- let cy = cw
648- if ((base58'2W' == cy))
649- then if (ct)
648+let ea = {
649+ let cz = cx
650+ if ((base58'2W' == cz))
651+ then if (cu)
650652 then base58'CWsMtTZC5BjjoL4Q1ayW4Wwb1ehGACQB6DrKyPgotKfm'
651653 else base58'6LfPuKJjLgekmncBhMg2LZyMTNVzZBccXR28ySXm9uXD'
652- else if ((base58'2T' == cy))
654+ else if ((base58'2T' == cz))
653655 then base58'6LfPuKJjLgekmncBhMg2LZyMTNVzZBccXR28ySXm9uXD'
654656 else throw("Unknown chain")
655657 }
656658
657-let ea = base64'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=='
658-
659-let eb = 300000
660-
661-let ec = 5000000
662-
663-let ed = 50
664-
665-let ee = 10000000
666-
667-let ef = {
668- let cy = cw
669- if ((base58'2W' == cy))
659+let eb = base64'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=='
660+
661+let ec = 300000
662+
663+let ed = 5000000
664+
665+let ee = 50
666+
667+let ef = 10000000
668+
669+let eg = {
670+ let cz = cx
671+ if ((base58'2W' == cz))
670672 then 252289527462
671- else if ((base58'2T' == cy))
673+ else if ((base58'2T' == cz))
672674 then 2522895274
673675 else throw("Unknown chain")
674676 }
675677
676-let eg = {
677- let cy = cw
678- if ((base58'2W' == cy))
678+let eh = {
679+ let cz = cx
680+ if ((base58'2W' == cz))
679681 then 250000000
680- else if ((base58'2T' == cy))
682+ else if ((base58'2T' == cz))
681683 then 250000000
682684 else throw("Unknown chain")
683685 }
684686
685-let eh = 2500000000
686-
687-let ei = toBigInt(5)
688-
689-let ej = toBigInt(20)
690-
691-let ek = toBigInt((20 * 20))
692-
693-let el = toBigInt(((20 * 20) * 20))
694-
695-let em = toBigInt((((20 * 20) * 20) * 20))
696-
697-let en = toBigInt(((((20 * 20) * 20) * 20) * 20))
698-
699-let eo = 500
700-
701-func ep () = "nextLandNum"
702-
703-
704-func eq (er) = ("lcn_" + er)
705-
706-
707-func es (et) = ("la_" + et)
708-
709-
710-func eu (bp,bw) = ((("ilao_" + bp) + "_") + bw)
711-
712-
713-func ev (et) = ("lo_" + et)
714-
715-
716-func ew (er) = ("duckByCustomName_" + er)
717-
718-
719-func ex (er) = ("accountByCustomName_" + er)
720-
721-
722-func ey () = "oldiesList"
723-
724-
725-let ez = 0
726-
727-let eA = 1
728-
729-let eB = 2
730-
731-let eC = 0
732-
733-let eD = 5
734-
735-let eE = 6
736-
737-let eF = 7
738-
739-func eG (et,dI) = ((aC + et) + dI)
740-
741-
742-func eH (eI,eJ) = {
743- let eK = if ((eI >= 0))
744- then (((eI + eJ) - 1) / eJ)
745- else -((((-(eI) + eJ) - 1) / eJ))
746- (eK * cE)
747- }
748-
749-
750-func eL (eM,eN) = {
751- let eO = (((((eN[0] + eN[1]) + eN[2]) + eN[3]) + eN[4]) + eN[5])
752- if ((0 >= eO))
687+let ei = 2500000000
688+
689+let ej = toBigInt(5)
690+
691+let ek = toBigInt(20)
692+
693+let el = toBigInt((20 * 20))
694+
695+let em = toBigInt(((20 * 20) * 20))
696+
697+let en = toBigInt((((20 * 20) * 20) * 20))
698+
699+let eo = toBigInt(((((20 * 20) * 20) * 20) * 20))
700+
701+let ep = 500
702+
703+func eq () = "nextLandNum"
704+
705+
706+func er (es) = ("lcn_" + es)
707+
708+
709+func et (eu) = ("la_" + eu)
710+
711+
712+func ev (bq,bx) = ((("ilao_" + bq) + "_") + bx)
713+
714+
715+func ew (eu) = ("lo_" + eu)
716+
717+
718+func ex (es) = ("duckByCustomName_" + es)
719+
720+
721+func ey (es) = ("accountByCustomName_" + es)
722+
723+
724+func ez () = "oldiesList"
725+
726+
727+let eA = 0
728+
729+let eB = 1
730+
731+let eC = 2
732+
733+let eD = 0
734+
735+let eE = 5
736+
737+let eF = 6
738+
739+let eG = 7
740+
741+func eH (eu,dJ) = ((aD + eu) + dJ)
742+
743+
744+func eI (eJ,eK) = {
745+ let eL = if ((eJ >= 0))
746+ then (((eJ + eK) - 1) / eK)
747+ else -((((-(eJ) + eK) - 1) / eK))
748+ (eL * cF)
749+ }
750+
751+
752+func eM (eN,eO) = {
753+ let eP = (((((eO[0] + eO[1]) + eO[2]) + eO[3]) + eO[4]) + eO[5])
754+ if ((0 >= eP))
753755 then throw("Zero weights sum")
754756 else {
755- let eP = fraction(eM, cD, eO)
756- func eQ (eR,eS) = (eR :+ fraction(eS, eP, cD))
757-
758- let eT = eN
759- let eU = size(eT)
760- let eV = nil
761- func eW (eX,eY) = if ((eY >= eU))
762- then eX
763- else eQ(eX, eT[eY])
764-
765- func eZ (eX,eY) = if ((eY >= eU))
766- then eX
757+ let eQ = fraction(eN, cE, eP)
758+ func eR (eS,eT) = (eS :+ fraction(eT, eQ, cE))
759+
760+ let eU = eO
761+ let eV = size(eU)
762+ let eW = nil
763+ func eX (eY,eZ) = if ((eZ >= eV))
764+ then eY
765+ else eR(eY, eU[eZ])
766+
767+ func fa (eY,eZ) = if ((eZ >= eV))
768+ then eY
767769 else throw("List size exceeds 6")
768770
769- eZ(eW(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5), 6)
770- }
771- }
772-
773-
774-func fa (eM) = {
775- let fb = split(value(getString(dr())), "_")
776- if ((size(fb) != aF))
771+ fa(eX(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5), 6)
772+ }
773+ }
774+
775+
776+func fb (eN) = {
777+ let fc = split(value(getString(ds())), "_")
778+ if ((size(fc) != aG))
777779 then throw("Wrong proportions data")
778780 else {
779- let fc = [parseIntValue(fb[0]), parseIntValue(fb[1]), parseIntValue(fb[2]), parseIntValue(fb[3]), parseIntValue(fb[4]), parseIntValue(fb[5])]
780- eL(eM, fc)
781- }
782- }
783-
784-
785-func fd (fe,ff,fg) = {
786- let fh = fa(fg)
787- func fi (eR,da) = {
788- let fj = (parseIntValue(ff[da]) - fh[da])
789- if ((0 > fj))
790- then throw(((((("Not enough material idx=" + toString(da)) + ", you have ") + ff[da]) + ", but need ") + toString(fh[da])))
791- else (eR :+ toString(fj))
781+ let fd = [parseIntValue(fc[0]), parseIntValue(fc[1]), parseIntValue(fc[2]), parseIntValue(fc[3]), parseIntValue(fc[4]), parseIntValue(fc[5])]
782+ eM(eN, fd)
783+ }
784+ }
785+
786+
787+func fe (ff,fg,fh) = {
788+ let fi = fb(fh)
789+ func fj (eS,db) = {
790+ let fk = (parseIntValue(fg[db]) - fi[db])
791+ if ((0 > fk))
792+ then throw(((((("Not enough material idx=" + toString(db)) + ", you have ") + fg[db]) + ", but need ") + toString(fi[db])))
793+ else (eS :+ toString(fk))
792794 }
793795
794- if (fe)
796+ if (ff)
795797 then {
796- let eT = cK
797- let eU = size(eT)
798- let eV = nil
799- func eW (eX,eY) = if ((eY >= eU))
800- then eX
801- else fi(eX, eT[eY])
802-
803- func eZ (eX,eY) = if ((eY >= eU))
804- then eX
798+ let eU = cL
799+ let eV = size(eU)
800+ let eW = nil
801+ func eX (eY,eZ) = if ((eZ >= eV))
802+ then eY
803+ else fj(eY, eU[eZ])
804+
805+ func fa (eY,eZ) = if ((eZ >= eV))
806+ then eY
805807 else throw("List size exceeds 6")
806808
807- eZ(eW(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5), 6)
808- }
809- else ff
810- }
811-
812-
813-func fk (fl,fm) = if ((fm == ""))
814- then $Tuple2(fl, false)
809+ fa(eX(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5), 6)
810+ }
811+ else fg
812+ }
813+
814+
815+func fl (fm,fn) = if ((fn == ""))
816+ then $Tuple2(fm, false)
815817 else {
816- func fn (eR,fo) = {
817- let fp = split(fo, ",")
818- if ((size(fp) != 2))
818+ func fo (eS,fp) = {
819+ let fq = split(fp, ",")
820+ if ((size(fq) != 2))
819821 then throw("Incorrect format, should be index,amount")
820822 else {
821- let da = parseIntValue(fp[0])
822- if (if ((0 > da))
823+ let db = parseIntValue(fq[0])
824+ if (if ((0 > db))
823825 then true
824- else (da >= size(aS)))
826+ else (db >= size(aT)))
825827 then throw("Unknown product idx")
826828 else {
827- let fq = parseIntValue(fp[1])
828- let fr = split(eR._1, (fp[0] + ":"))
829- if ((size(fr) != 2))
830- then throw((("You don't have " + aO[da]) + " equipped"))
829+ let fr = parseIntValue(fq[1])
830+ let fs = split(eS._1, (fq[0] + ":"))
831+ if ((size(fs) != 2))
832+ then throw((("You don't have " + aP[db]) + " equipped"))
831833 else {
832- let fs = fr[1]
833- let ft = if (dJ(take(drop(fs, 1), 1)))
834+ let ft = fs[1]
835+ let fu = if (dK(take(drop(ft, 1), 1)))
834836 then 2
835837 else 1
836- let fu = parseIntValue(take(fs, ft))
837- let fv = drop(fs, ft)
838- let fw = if ((fu >= fq))
839- then (fu - fq)
840- else throw(((((("You equipped " + toString(fu)) + " of ") + aO[da]) + ", but tried to use ") + toString(fq)))
841- $Tuple2(((((fr[0] + fp[0]) + ":") + toString(fw)) + fv), if (eR._2)
838+ let fv = parseIntValue(take(ft, fu))
839+ let fw = drop(ft, fu)
840+ let fx = if ((fv >= fr))
841+ then (fv - fr)
842+ else throw(((((("You equipped " + toString(fv)) + " of ") + aP[db]) + ", but tried to use ") + toString(fr)))
843+ $Tuple2(((((fs[0] + fq[0]) + ":") + toString(fx)) + fw), if (eS._2)
842844 then true
843- else if (if ((da >= 6))
844- then (8 >= da)
845+ else if (if ((db >= 6))
846+ then (8 >= db)
845847 else false)
846- then (fw == 0)
848+ then (fx == 0)
847849 else false)
848850 }
849851 }
850852 }
851853 }
852854
853- let eT = split(fm, "_")
854- let eU = size(eT)
855- let eV = $Tuple2(fl, false)
856- func eW (eX,eY) = if ((eY >= eU))
857- then eX
858- else fn(eX, eT[eY])
859-
860- func eZ (eX,eY) = if ((eY >= eU))
861- then eX
855+ let eU = split(fn, "_")
856+ let eV = size(eU)
857+ let eW = $Tuple2(fm, false)
858+ func eX (eY,eZ) = if ((eZ >= eV))
859+ then eY
860+ else fo(eY, eU[eZ])
861+
862+ func fa (eY,eZ) = if ((eZ >= eV))
863+ then eY
862864 else throw("List size exceeds 10")
863865
864- eZ(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
866+ fa(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
865867 }
866868
867869
868-func fx (fy) = {
869- let fz = if ((fy == ""))
870+func fy (fz) = {
871+ let fA = if ((fz == ""))
870872 then nil
871- else split_4C(fy, "_")
872- func fA (eR,co) = {
873- let fB = (size(eR) / 8)
874- let fu = if ((size(fz) > fB))
875- then parseIntValue(fz[fB])
873+ else split_4C(fz, "_")
874+ func fB (eS,cp) = {
875+ let fC = (size(eS) / 8)
876+ let fv = if ((size(fA) > fC))
877+ then parseIntValue(fA[fC])
876878 else 0
877- (eR + toBytes(fu))
879+ (eS + toBytes(fv))
878880 }
879881
880- let eT = aS
881- let eU = size(eT)
882- let eV = base58''
883- func eW (eX,eY) = if ((eY >= eU))
884- then eX
885- else fA(eX, eT[eY])
886-
887- func eZ (eX,eY) = if ((eY >= eU))
888- then eX
882+ let eU = aT
883+ let eV = size(eU)
884+ let eW = base58''
885+ func eX (eY,eZ) = if ((eZ >= eV))
886+ then eY
887+ else fB(eY, eU[eZ])
888+
889+ func fa (eY,eZ) = if ((eZ >= eV))
890+ then eY
889891 else throw("List size exceeds 50")
890892
891- eZ(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eV, 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)
892- }
893-
894-
895-func fC (fD) = {
896- func fE (eR,co) = {
897- let fB = size(eR)
898- let fF = take(drop(fD, (8 * fB)), 8)
899- (eR :+ toString(toInt(fF)))
893+ fa(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eW, 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)
894+ }
895+
896+
897+func fD (fE) = {
898+ func fF (eS,cp) = {
899+ let fC = size(eS)
900+ let fG = take(drop(fE, (8 * fC)), 8)
901+ (eS :+ toString(toInt(fG)))
900902 }
901903
902904 makeString_2C({
903- let eT = aS
904- let eU = size(eT)
905- let eV = nil
906- func eW (eX,eY) = if ((eY >= eU))
907- then eX
908- else fE(eX, eT[eY])
909-
910- func eZ (eX,eY) = if ((eY >= eU))
911- then eX
905+ let eU = aT
906+ let eV = size(eU)
907+ let eW = nil
908+ func eX (eY,eZ) = if ((eZ >= eV))
909+ then eY
910+ else fF(eY, eU[eZ])
911+
912+ func fa (eY,eZ) = if ((eZ >= eV))
913+ then eY
912914 else throw("List size exceeds 50")
913915
914- eZ(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eV, 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)
916+ fa(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eW, 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)
915917 }, "_")
916918 }
917919
918920
919-func fG (fH,fI) = {
920- func fJ (eR,fB) = {
921- let fK = if ((size(fH) > (7 + fB)))
922- then fH[(7 + fB)]
921+func fH (fI,fJ) = {
922+ func fK (eS,fC) = {
923+ let fL = if ((size(fI) > (7 + fC)))
924+ then fI[(7 + fC)]
923925 else 0
924- if ((parseIntValue(fI[fB]) > (fH[fB] + fK)))
925- then throw(("Requirement not satisfied: " + j[fB]))
926+ if ((parseIntValue(fJ[fC]) > (fI[fC] + fL)))
927+ then throw(("Requirement not satisfied: " + k[fC]))
926928 else true
927929 }
928930
929- let eT = [0, 1, 2, 3, 4, 5, 6]
930- let eU = size(eT)
931- let eV = false
932- func eW (eX,eY) = if ((eY >= eU))
933- then eX
934- else fJ(eX, eT[eY])
935-
936- func eZ (eX,eY) = if ((eY >= eU))
937- then eX
931+ let eU = [0, 1, 2, 3, 4, 5, 6]
932+ let eV = size(eU)
933+ let eW = false
934+ func eX (eY,eZ) = if ((eZ >= eV))
935+ then eY
936+ else fK(eY, eU[eZ])
937+
938+ func fa (eY,eZ) = if ((eZ >= eV))
939+ then eY
938940 else throw("List size exceeds 7")
939941
940- eZ(eW(eW(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5), 6), 7)
941- }
942-
943-
944-func fL (fM,fz,fN,fH,fO,fP) = {
945- let fp = split(fM, ":")
946- if ((size(fp) != 2))
942+ fa(eX(eX(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5), 6), 7)
943+ }
944+
945+
946+func fM (fN,fA,fO,fI,fP,fQ) = {
947+ let fq = split(fN, ":")
948+ if ((size(fq) != 2))
947949 then throw("Incorrect format, should be index:amount")
948- else if (if (!(fN))
949- then (size(fp[0]) != 2)
950+ else if (if (!(fO))
951+ then (size(fq[0]) != 2)
950952 else false)
951953 then throw("Product idx should be 2 digits, zero padded")
952954 else {
953- let fQ = parseIntValue(fp[0])
954- let fR = parseIntValue(fp[1])
955- if (!(containsElement(aR, fQ)))
956- then throw((("Product '" + aO[fQ]) + "' cannot be used for land defense"))
957- else if ((0 > fR))
955+ let fR = parseIntValue(fq[0])
956+ let fS = parseIntValue(fq[1])
957+ if (!(containsElement(aS, fR)))
958+ then throw((("Product '" + aP[fR]) + "' cannot be used for land defense"))
959+ else if ((0 > fS))
958960 then throw("Count can't be negative")
959- else if ((fR > t))
960- then throw(((("Can't put more than " + toString(t)) + " of ") + aO[fQ]))
961- else if ((fR == 0))
962- then $Tuple3(fz, fO, fP)
961+ else if ((fS > u))
962+ then throw(((("Can't put more than " + toString(u)) + " of ") + aP[fR]))
963+ else if ((fS == 0))
964+ then $Tuple3(fA, fP, fQ)
963965 else {
964- let fS = take(fz, (8 * fQ))
965- let fu = toInt(take(drop(fz, (8 * fQ)), 8))
966- let fv = drop(fz, (8 * (fQ + 1)))
967- let co = split(aS[fQ], "_")
968- if (if (!(fN))
969- then (fR > fu)
966+ let fT = take(fA, (8 * fR))
967+ let fv = toInt(take(drop(fA, (8 * fR)), 8))
968+ let fw = drop(fA, (8 * (fR + 1)))
969+ let cp = split(aT[fR], "_")
970+ if (if (!(fO))
971+ then (fS > fv)
970972 else false)
971- then throw(((((("You have " + toString(fu)) + " of ") + aO[fQ]) + ", but tried to use ") + toString(fR)))
973+ then throw(((((("You have " + toString(fv)) + " of ") + aP[fR]) + ", but tried to use ") + toString(fS)))
972974 else {
973- let fw = if (if (!(fN))
974- then fG(fH, split(co[aV], ","))
975+ let fx = if (if (!(fO))
976+ then fH(fI, split(cp[aW], ","))
975977 else false)
976- then (fu - fR)
977- else (fu + fR)
978- let fT = (eH(fw, aX) - eH(fu, aX))
979- $Tuple3(((fS + toBytes(fw)) + fv), (fO + fT), (fP - fT))
978+ then (fv - fS)
979+ else (fv + fS)
980+ let fU = (eI(fx, aY) - eI(fv, aY))
981+ $Tuple3(((fT + toBytes(fx)) + fw), (fP + fU), (fQ - fU))
980982 }
981983 }
982984 }
983985 }
984986
985987
986-func fU (fM,fz,fN,fV,fW,fX,fH) = {
987- let fp = split(fM, ":")
988- if ((size(fp) != 2))
988+func fV (fN,fA,fO,fW,fX,fY,fI) = {
989+ let fq = split(fN, ":")
990+ if ((size(fq) != 2))
989991 then throw("Incorrect format, should be index:amount")
990- else if (if (!(fN))
991- then (size(fp[0]) != 2)
992+ else if (if (!(fO))
993+ then (size(fq[0]) != 2)
992994 else false)
993995 then throw("Product idx should be 2 digits, zero padded")
994996 else {
995- let fQ = parseIntValue(fp[0])
996- let fR = parseIntValue(fp[1])
997- if (if ((0 > fQ))
997+ let fR = parseIntValue(fq[0])
998+ let fS = parseIntValue(fq[1])
999+ if (if ((0 > fR))
9981000 then true
999- else (fQ >= size(aS)))
1001+ else (fR >= size(aT)))
10001002 then throw("Unknown product idx")
1001- else if ((0 > fR))
1003+ else if ((0 > fS))
10021004 then throw("Count can't be negative")
1003- else if ((fR > t))
1004- then throw(((("Can't put more than " + toString(t)) + " of ") + aO[fQ]))
1005- else if ((fR == 0))
1006- then $Tuple2(fz, false)
1005+ else if ((fS > u))
1006+ then throw(((("Can't put more than " + toString(u)) + " of ") + aP[fR]))
1007+ else if ((fS == 0))
1008+ then $Tuple2(fA, false)
10071009 else {
1008- let fS = take(fz, (8 * fQ))
1009- let fu = toInt(take(drop(fz, (8 * fQ)), 8))
1010- let fv = drop(fz, (8 * (fQ + 1)))
1011- let co = split(aS[fQ], "_")
1012- if (if (!(fN))
1013- then (fR > fu)
1010+ let fT = take(fA, (8 * fR))
1011+ let fv = toInt(take(drop(fA, (8 * fR)), 8))
1012+ let fw = drop(fA, (8 * (fR + 1)))
1013+ let cp = split(aT[fR], "_")
1014+ if (if (!(fO))
1015+ then (fS > fv)
10141016 else false)
1015- then throw(((((("You have " + toString(fu)) + " of ") + aO[fQ]) + ", but tried to use ") + toString(fR)))
1017+ then throw(((((("You have " + toString(fv)) + " of ") + aP[fR]) + ", but tried to use ") + toString(fS)))
10161018 else {
1017- let fY = if (if (!(fN))
1018- then fG(fH, split(co[aV], ","))
1019+ let fZ = if (if (!(fO))
1020+ then fH(fI, split(cp[aW], ","))
10191021 else false)
10201022 then {
1021- let fZ = co[aW]
1022- if ((fZ == ""))
1023+ let ga = cp[aX]
1024+ if ((ga == ""))
10231025 then throw("Item cannot be equipped")
10241026 else {
1025- let ga = parseIntValue(fZ)
1026- let gb = (ga / 100)
1027- if ((fV != gb))
1027+ let gb = parseIntValue(ga)
1028+ let gc = (gb / 100)
1029+ if ((fW != gc))
10281030 then throw("Segment incompatible")
10291031 else {
1030- let gc = ((ga % 100) / 10)
1031- if ((fW != gc))
1032+ let gd = ((gb % 100) / 10)
1033+ if ((fX != gd))
10321034 then throw("Slot incompatible")
10331035 else {
1034- let gd = (ga % 10)
1035- if (if ((fX != 0))
1036- then (gd > 1)
1036+ let ge = (gb % 10)
1037+ if (if ((fY != 0))
1038+ then (ge > 1)
10371039 else false)
10381040 then throw("Big items should occupy slot 0")
1039- else (gd > 1)
1041+ else (ge > 1)
10401042 }
10411043 }
10421044 }
10431045 }
10441046 else false
1045- $Tuple2(((fS + toBytes((fu + (if (fN)
1046- then fR
1047- else -(fR))))) + fv), fY)
1047+ $Tuple2(((fT + toBytes((fv + (if (fO)
1048+ then fS
1049+ else -(fS))))) + fw), fZ)
10481050 }
10491051 }
10501052 }
10511053 }
10521054
10531055
1054-func ge (gf,gg,fN,fV,fW,gh) = if ((gf != ""))
1056+func gf (gg,gh,fO,fW,fX,gi) = if ((gg != ""))
10551057 then {
1056- let gi = split(gf, ",")
1057- if ((size(gi) > s))
1058+ let gj = split(gg, ",")
1059+ if ((size(gj) > t))
10581060 then throw("Wrong slots format")
10591061 else {
1060- let gj = gi[0]
1061- let gk = if ((size(gi) > 1))
1062- then gi[1]
1062+ let gk = gj[0]
1063+ let gl = if ((size(gj) > 1))
1064+ then gj[1]
10631065 else ""
1064- if (if ((gj == ""))
1065- then (gk == "")
1066+ if (if ((gk == ""))
1067+ then (gl == "")
10661068 else false)
1067- then gg
1069+ then gh
10681070 else {
1069- let gl = if ((gj != ""))
1070- then fU(gj, gg, fN, fV, fW, 0, gh)
1071- else $Tuple2(gg, false)
1072- if ((gk != ""))
1073- then if (gl._2)
1071+ let gm = if ((gk != ""))
1072+ then fV(gk, gh, fO, fW, fX, 0, gi)
1073+ else $Tuple2(gh, false)
1074+ if ((gl != ""))
1075+ then if (gm._2)
10741076 then throw("Big item already occupies slot")
1075- else fU(gk, gl._1, fN, fV, fW, 1, gh)._1
1076- else gl._1
1077+ else fV(gl, gm._1, fO, fW, fX, 1, gi)._1
1078+ else gm._1
10771079 }
10781080 }
10791081 }
1080- else gg
1081-
1082-
1083-func gm (gn,go,fN,gh) = {
1084- func fV (eR,gp) = {
1085- let fB = eR._1
1086- let fW = split(gp, ";")
1087- if ((size(fW) != r))
1082+ else gh
1083+
1084+
1085+func gn (go,gp,fO,gi) = {
1086+ func fW (eS,gq) = {
1087+ let fC = eS._1
1088+ let fX = split(gq, ";")
1089+ if ((size(fX) != s))
10881090 then throw("Wrong segment format")
10891091 else {
1090- let gq = fW[0]
1091- let gr = fW[1]
1092- if (if ((gq == ""))
1093- then (gr == "")
1092+ let gr = fX[0]
1093+ let gs = fX[1]
1094+ if (if ((gr == ""))
1095+ then (gs == "")
10941096 else false)
1095- then $Tuple2((fB + 1), eR._2)
1097+ then $Tuple2((fC + 1), eS._2)
10961098 else {
1097- let gs = ge(gq, eR._2, fN, fB, 0, gh)
1098- $Tuple2((fB + 1), ge(gr, gs, fN, fB, 1, gh))
1099+ let gt = gf(gr, eS._2, fO, fC, 0, gi)
1100+ $Tuple2((fC + 1), gf(gs, gt, fO, fC, 1, gi))
10991101 }
11001102 }
11011103 }
11021104
1103-( let eT = gn
1104- let eU = size(eT)
1105- let eV = $Tuple2(0, go)
1106- func eW (eX,eY) = if ((eY >= eU))
1107- then eX
1108- else fV(eX, eT[eY])
1109-
1110- func eZ (eX,eY) = if ((eY >= eU))
1111- then eX
1105+( let eU = go
1106+ let eV = size(eU)
1107+ let eW = $Tuple2(0, gp)
1108+ func eX (eY,eZ) = if ((eZ >= eV))
1109+ then eY
1110+ else fW(eY, eU[eZ])
1111+
1112+ func fa (eY,eZ) = if ((eZ >= eV))
1113+ then eY
11121114 else throw("List size exceeds 6")
11131115
1114- eZ(eW(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5), 6))._2
1115- }
1116-
1117-
1118-func gt (gn,go,fO,fP,fN,fH) = if ((3 > size(gn)))
1116+ fa(eX(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5), 6))._2
1117+ }
1118+
1119+
1120+func gu (go,gp,fP,fQ,fO,fI) = if ((3 > size(go)))
11191121 then throw("At least duck, mines and traps parts are required")
11201122 else {
1121- func fV (eR,gp) = {
1122- let fB = eR._1
1123- if ((fB == 0))
1124- then $Tuple4((fB + 1), eR._2, eR._3, eR._4)
1123+ func fW (eS,gq) = {
1124+ let fC = eS._1
1125+ if ((fC == 0))
1126+ then $Tuple4((fC + 1), eS._2, eS._3, eS._4)
11251127 else {
1126- let gu = fL(gp, eR._2, fN, fH, eR._3, eR._4)
1127- $Tuple4((fB + 1), gu._1, gu._2, gu._3)
1128+ let gv = fM(gq, eS._2, fO, fI, eS._3, eS._4)
1129+ $Tuple4((fC + 1), gv._1, gv._2, gv._3)
11281130 }
11291131 }
11301132
1131- let gv = {
1132- let eT = gn
1133- let eU = size(eT)
1134- let eV = $Tuple4(0, go, fO, fP)
1135- func eW (eX,eY) = if ((eY >= eU))
1136- then eX
1137- else fV(eX, eT[eY])
1138-
1139- func eZ (eX,eY) = if ((eY >= eU))
1140- then eX
1133+ let gw = {
1134+ let eU = go
1135+ let eV = size(eU)
1136+ let eW = $Tuple4(0, gp, fP, fQ)
1137+ func eX (eY,eZ) = if ((eZ >= eV))
1138+ then eY
1139+ else fW(eY, eU[eZ])
1140+
1141+ func fa (eY,eZ) = if ((eZ >= eV))
1142+ then eY
11411143 else throw("List size exceeds 10")
11421144
1143- eZ(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
1144- }
1145- $Tuple3(gv._2, gv._3, gv._4)
1145+ fa(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
1146+ }
1147+ $Tuple3(gw._2, gw._3, gw._4)
11461148 }
11471149
11481150
1149-func gw (A) = {
1150- let gx = F(A)
1151- let gy = split(valueOrElse(getString(gx), ",;,_,;,_,;,_,;,_,;,_,;,"), "_")
1152- let gz = gm(gy, ea, true, nil)
1153- let gA = split(gy[p], ";")[1]
1154- let ao = if ((gA == ""))
1151+func gx (B) = {
1152+ let gy = G(B)
1153+ let gz = split(valueOrElse(getString(gy), ",;,_,;,_,;,_,;,_,;,_,;,"), "_")
1154+ let gA = gn(gz, eb, true, nil)
1155+ let gB = split(gz[q], ";")[1]
1156+ let ap = if ((gB == ""))
11551157 then 0
11561158 else {
1157- let gB = split(gA, ",")[0]
1158- if ((gB == ""))
1159+ let gC = split(gB, ",")[0]
1160+ if ((gC == ""))
11591161 then 0
11601162 else {
1161- let fM = split(gB, ":")
1162- let da = fM[0]
1163- let gC = fM[1]
1164- if (if (if (if (if ((da == "06"))
1163+ let fN = split(gC, ":")
1164+ let db = fN[0]
1165+ let gD = fN[1]
1166+ if (if (if (if (if ((db == "06"))
11651167 then true
1166- else (da == "07"))
1168+ else (db == "07"))
11671169 then true
1168- else (da == "08"))
1169- then (gC != "")
1170+ else (db == "08"))
1171+ then (gD != "")
11701172 else false)
1171- then (parseIntValue(gC) > 0)
1173+ then (parseIntValue(gD) > 0)
11721174 else false)
1173- then parseIntValue(split(aS[parseIntValue(da)], "_")[aU])
1175+ then parseIntValue(split(aT[parseIntValue(db)], "_")[aV])
11741176 else 0
11751177 }
11761178 }
1177- let gh = am(this, A, ao, true)
1178- let gD = gm(gy, gz, false, gh)
1179- (gD == gD)
1180- }
1181-
1182-
1183-func gE (gF,gG,gH,gI) = if ((size(gF) != aF))
1179+ let gi = an(this, B, ap, true)
1180+ let gE = gn(gz, gA, false, gi)
1181+ (gE == gE)
1182+ }
1183+
1184+
1185+func gF (gG,gH,gI,gJ) = if ((size(gG) != aG))
11841186 then throw("Wrong proportions data")
11851187 else {
1186- func gJ (eR,gK) = {
1187- let fj = (parseIntValue(gF[gK]) + ((gI * gG[gK]) * gH))
1188- if ((0 > fj))
1189- then throw(((((((("Panic! Pieces of type=" + toString(gK)) + ", sign=") + toString(gI)) + ", terrainCounts[i]=") + toString(gG[gK])) + ", landSizeIndex=") + toString(gH)))
1190- else (eR :+ toString(fj))
1191- }
1192-
1193- let eT = cK
1194- let eU = size(eT)
1195- let eV = nil
1196- func eW (eX,eY) = if ((eY >= eU))
1197- then eX
1198- else gJ(eX, eT[eY])
1199-
1200- func eZ (eX,eY) = if ((eY >= eU))
1201- then eX
1188+ func gK (eS,gL) = {
1189+ let fk = (parseIntValue(gG[gL]) + ((gJ * gH[gL]) * gI))
1190+ if ((0 > fk))
1191+ then throw(((((((("Panic! Pieces of type=" + toString(gL)) + ", sign=") + toString(gJ)) + ", terrainCounts[i]=") + toString(gH[gL])) + ", landSizeIndex=") + toString(gI)))
1192+ else (eS :+ toString(fk))
1193+ }
1194+
1195+ let eU = cL
1196+ let eV = size(eU)
1197+ let eW = nil
1198+ func eX (eY,eZ) = if ((eZ >= eV))
1199+ then eY
1200+ else gK(eY, eU[eZ])
1201+
1202+ func fa (eY,eZ) = if ((eZ >= eV))
1203+ then eY
12021204 else throw("List size exceeds 6")
12031205
1204- eZ(eW(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5), 6)
1206+ fa(eX(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5), 6)
12051207 }
12061208
12071209
1208-func gL (gG,gH,gI) = {
1209- let gF = split(valueOrElse(getString(dr()), "0_0_0_0_0_0"), "_")
1210- makeString(gE(gF, gG, gH, gI), "_")
1211- }
1212-
1213-
1214-func gM (gN) = [(size(split(gN, "A")) - 1), (size(split(gN, "B")) - 1), (size(split(gN, "C")) - 1), (size(split(gN, "D")) - 1), (size(split(gN, "E")) - 1), (size(split(gN, "F")) - 1)]
1215-
1216-
1217-func gO (gP,gG,gQ,gH,gR) = {
1218- func gS (eR,gK) = {
1219- let gT = ((fraction(gQ, gR, a) * gG[gK]) * gH)
1220- (eR :+ toString((parseIntValue(gP[gK]) + gT)))
1210+func gM (gH,gI,gJ) = {
1211+ let gG = split(valueOrElse(getString(ds()), "0_0_0_0_0_0"), "_")
1212+ makeString(gF(gG, gH, gI, gJ), "_")
1213+ }
1214+
1215+
1216+func gN (gO) = [(size(split(gO, "A")) - 1), (size(split(gO, "B")) - 1), (size(split(gO, "C")) - 1), (size(split(gO, "D")) - 1), (size(split(gO, "E")) - 1), (size(split(gO, "F")) - 1)]
1217+
1218+
1219+func gP (gQ,gH,gR,gI,gS) = {
1220+ func gT (eS,gL) = {
1221+ let gU = ((fraction(gR, gS, a) * gH[gL]) * gI)
1222+ (eS :+ toString((parseIntValue(gQ[gL]) + gU)))
12211223 }
12221224
1223- let fc = {
1224- let eT = cK
1225- let eU = size(eT)
1226- let eV = nil
1227- func eW (eX,eY) = if ((eY >= eU))
1228- then eX
1229- else gS(eX, eT[eY])
1230-
1231- func eZ (eX,eY) = if ((eY >= eU))
1232- then eX
1225+ let fd = {
1226+ let eU = cL
1227+ let eV = size(eU)
1228+ let eW = nil
1229+ func eX (eY,eZ) = if ((eZ >= eV))
1230+ then eY
1231+ else gT(eY, eU[eZ])
1232+
1233+ func fa (eY,eZ) = if ((eZ >= eV))
1234+ then eY
12331235 else throw("List size exceeds 6")
12341236
1235- eZ(eW(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5), 6)
1237+ fa(eX(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5), 6)
12361238 }
1237- makeString(fc, "_")
1238- }
1239-
1240-
1241-func gU (gG,gQ,gH,gR) = {
1242- func gS (eR,gK) = {
1243- let gT = ((fraction(gQ, gR, a) * gG[gK]) * gH)
1244- $Tuple2((eR._1 :+ gT), (eR._2 + gT))
1239+ makeString(fd, "_")
1240+ }
1241+
1242+
1243+func gV (gH,gR,gI,gS) = {
1244+ func gT (eS,gL) = {
1245+ let gU = ((fraction(gR, gS, a) * gH[gL]) * gI)
1246+ $Tuple2((eS._1 :+ gU), (eS._2 + gU))
12451247 }
12461248
1247- let eT = cK
1248- let eU = size(eT)
1249- let eV = $Tuple2(nil, 0)
1250- func eW (eX,eY) = if ((eY >= eU))
1251- then eX
1252- else gS(eX, eT[eY])
1253-
1254- func eZ (eX,eY) = if ((eY >= eU))
1255- then eX
1249+ let eU = cL
1250+ let eV = size(eU)
1251+ let eW = $Tuple2(nil, 0)
1252+ func eX (eY,eZ) = if ((eZ >= eV))
1253+ then eY
1254+ else gT(eY, eU[eZ])
1255+
1256+ func fa (eY,eZ) = if ((eZ >= eV))
1257+ then eY
12561258 else throw("List size exceeds 6")
12571259
1258- eZ(eW(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5), 6)
1259- }
1260-
1261-
1262-func gV (gW,gX,gY,gZ) = {
1263- let ha = gY._1
1264- let hb = gY._2
1265- if ((hb == 0))
1266- then $Tuple2(makeString(gW, "_"), makeString(gX, "_"))
1267- else if ((gZ >= hb))
1260+ fa(eX(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5), 6)
1261+ }
1262+
1263+
1264+func gW (gX,gY,gZ,ha) = {
1265+ let hb = gZ._1
1266+ let hc = gZ._2
1267+ if ((hc == 0))
1268+ then $Tuple2(makeString(gX, "_"), makeString(gY, "_"))
1269+ else if ((ha >= hc))
12681270 then {
1269- func hc (eR,gK) = (eR :+ toString((parseIntValue(gW[gK]) + ha[gK])))
1270-
1271- let fc = {
1272- let eT = cK
1273- let eU = size(eT)
1274- let eV = nil
1275- func eW (eX,eY) = if ((eY >= eU))
1276- then eX
1277- else hc(eX, eT[eY])
1278-
1279- func eZ (eX,eY) = if ((eY >= eU))
1280- then eX
1271+ func hd (eS,gL) = (eS :+ toString((parseIntValue(gX[gL]) + hb[gL])))
1272+
1273+ let fd = {
1274+ let eU = cL
1275+ let eV = size(eU)
1276+ let eW = nil
1277+ func eX (eY,eZ) = if ((eZ >= eV))
1278+ then eY
1279+ else hd(eY, eU[eZ])
1280+
1281+ func fa (eY,eZ) = if ((eZ >= eV))
1282+ then eY
12811283 else throw("List size exceeds 6")
12821284
1283- eZ(eW(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5), 6)
1285+ fa(eX(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5), 6)
12841286 }
1285- $Tuple2(makeString(fc, "_"), makeString(gX, "_"))
1287+ $Tuple2(makeString(fd, "_"), makeString(gY, "_"))
12861288 }
12871289 else {
1288- func hd (eR,gK) = {
1289- let he = fraction(ha[gK], gZ, hb)
1290- $Tuple2((eR._1 :+ toString((parseIntValue(gW[gK]) + he))), (eR._2 :+ toString(((parseIntValue(gX[gK]) + ha[gK]) - he))))
1290+ func he (eS,gL) = {
1291+ let hf = fraction(hb[gL], ha, hc)
1292+ $Tuple2((eS._1 :+ toString((parseIntValue(gX[gL]) + hf))), (eS._2 :+ toString(((parseIntValue(gY[gL]) + hb[gL]) - hf))))
12911293 }
12921294
1293- let fc = {
1294- let eT = cK
1295- let eU = size(eT)
1296- let eV = $Tuple2(nil, nil)
1297- func eW (eX,eY) = if ((eY >= eU))
1298- then eX
1299- else hd(eX, eT[eY])
1300-
1301- func eZ (eX,eY) = if ((eY >= eU))
1302- then eX
1295+ let fd = {
1296+ let eU = cL
1297+ let eV = size(eU)
1298+ let eW = $Tuple2(nil, nil)
1299+ func eX (eY,eZ) = if ((eZ >= eV))
1300+ then eY
1301+ else he(eY, eU[eZ])
1302+
1303+ func fa (eY,eZ) = if ((eZ >= eV))
1304+ then eY
13031305 else throw("List size exceeds 6")
13041306
1305- eZ(eW(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5), 6)
1307+ fa(eX(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5), 6)
13061308 }
1307- $Tuple2(makeString(fc._1, "_"), makeString(fc._2, "_"))
1309+ $Tuple2(makeString(fd._1, "_"), makeString(fd._2, "_"))
13081310 }
13091311 }
13101312
13111313
1312-func hf (hg) = if ((hg >= toBigInt(0)))
1313- then hg
1314- else -(hg)
1315-
1316-
1317-let hh = [[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]]
1318-
1319-func hi (dA,hj) = {
1320- let hk = toInt((dA % ej))
1321- let hl = if ((hj[0] > hk))
1314+func hg (hh) = if ((hh >= toBigInt(0)))
1315+ then hh
1316+ else -(hh)
1317+
1318+
1319+let hi = [[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]]
1320+
1321+func hj (dB,hk) = {
1322+ let hl = toInt((dB % ek))
1323+ let hm = if ((hk[0] > hl))
13221324 then "A"
1323- else if ((hj[1] > hk))
1325+ else if ((hk[1] > hl))
13241326 then "B"
1325- else if ((hj[2] > hk))
1327+ else if ((hk[2] > hl))
13261328 then "C"
1327- else if ((hj[3] > hk))
1329+ else if ((hk[3] > hl))
13281330 then "D"
1329- else if ((hj[4] > hk))
1331+ else if ((hk[4] > hl))
13301332 then "E"
13311333 else "F"
1332- hl
1333- }
1334-
1335-
1336-func hm (hn,ho) = {
1337- let hp = hh[ho]
1338- func hq (eR,eS) = $Tuple2((((((eR._1 + hi(eR._2, hp)) + hi((eR._2 / ej), hp)) + hi((eR._2 / ek), hp)) + hi((eR._2 / el), hp)) + hi((eR._2 / em), hp)), (eR._2 / en))
1339-
1340- let gv = {
1341- let eT = [1, 2, 3, 4, 5]
1342- let eU = size(eT)
1343- let eV = $Tuple2("", (hn / ei))
1344- func eW (eX,eY) = if ((eY >= eU))
1345- then eX
1346- else hq(eX, eT[eY])
1347-
1348- func eZ (eX,eY) = if ((eY >= eU))
1349- then eX
1334+ hm
1335+ }
1336+
1337+
1338+func hn (ho,hp) = {
1339+ let hq = hi[hp]
1340+ func hr (eS,eT) = $Tuple2((((((eS._1 + hj(eS._2, hq)) + hj((eS._2 / ek), hq)) + hj((eS._2 / el), hq)) + hj((eS._2 / em), hq)) + hj((eS._2 / en), hq)), (eS._2 / eo))
1341+
1342+ let gw = {
1343+ let eU = [1, 2, 3, 4, 5]
1344+ let eV = size(eU)
1345+ let eW = $Tuple2("", (ho / ej))
1346+ func eX (eY,eZ) = if ((eZ >= eV))
1347+ then eY
1348+ else hr(eY, eU[eZ])
1349+
1350+ func fa (eY,eZ) = if ((eZ >= eV))
1351+ then eY
13501352 else throw("List size exceeds 5")
13511353
1352- eZ(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5)
1354+ fa(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5)
13531355 }
1354- gv._1
1355- }
1356-
1357-
1358-let hr = [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]
1359-
1360-let hs = ["A", "B", "C", "D", "E", "F"]
1361-
1362-func ht (hu,gH) = {
1363- func hv (eR,dy) = {
1364- let fB = eR._2
1365- let hw = parseIntValue(dy)
1366- let hg = if ((hw == 0))
1356+ gw._1
1357+ }
1358+
1359+
1360+let hs = [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]
1361+
1362+let ht = ["A", "B", "C", "D", "E", "F"]
1363+
1364+func hu (hv,gI) = {
1365+ func hw (eS,dz) = {
1366+ let fC = eS._2
1367+ let hx = parseIntValue(dz)
1368+ let hh = if ((hx == 0))
13671369 then 0
1368- else if ((hw >= (4 * gH)))
1369- then (hw / gH)
1370- else if ((hw > (3 * gH)))
1370+ else if ((hx >= (4 * gI)))
1371+ then (hx / gI)
1372+ else if ((hx > (3 * gI)))
13711373 then 3
1372- else (((hw - 1) / gH) + 1)
1373- $Tuple3((eR._1 :+ hg), (eR._2 + 1), (eR._3 + hg))
1374+ else (((hx - 1) / gI) + 1)
1375+ $Tuple3((eS._1 :+ hh), (eS._2 + 1), (eS._3 + hh))
13741376 }
13751377
1376- let gv = {
1377- let eT = hu
1378- let eU = size(eT)
1379- let eV = $Tuple3(nil, 0, 0)
1380- func eW (eX,eY) = if ((eY >= eU))
1381- then eX
1382- else hv(eX, eT[eY])
1383-
1384- func eZ (eX,eY) = if ((eY >= eU))
1385- then eX
1378+ let gw = {
1379+ let eU = hv
1380+ let eV = size(eU)
1381+ let eW = $Tuple3(nil, 0, 0)
1382+ func eX (eY,eZ) = if ((eZ >= eV))
1383+ then eY
1384+ else hw(eY, eU[eZ])
1385+
1386+ func fa (eY,eZ) = if ((eZ >= eV))
1387+ then eY
13861388 else throw("List size exceeds 6")
13871389
1388- eZ(eW(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5), 6)
1390+ fa(eX(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5), 6)
13891391 }
1390- let hx = gv._1
1391- let hy = value(indexOf(hx, max(hx)))
1392- let hz = (gv._3 - 25)
1393- func hA (eR,da) = {
1394- let dF = if ((da == hy))
1395- then (hx[da] - hz)
1396- else hx[da]
1397- let dQ = if ((dF == 0))
1392+ let hy = gw._1
1393+ let hz = value(indexOf(hy, max(hy)))
1394+ let hA = (gw._3 - 25)
1395+ func hB (eS,db) = {
1396+ let dG = if ((db == hz))
1397+ then (hy[db] - hA)
1398+ else hy[db]
1399+ let dR = if ((dG == 0))
13981400 then nil
1399- else split(drop(toString(pow(10, 0, dF, 0, 0, DOWN)), 1), "")
1400- let ga = hs[da]
1401- func hB (hC,hD) = (hC :+ ga)
1402-
1403- let hE = {
1404- let eT = dQ
1405- let eU = size(eT)
1406- let eV = nil
1407- func hF (eX,eY) = if ((eY >= eU))
1408- then eX
1409- else hB(eX, eT[eY])
1410-
1411- func hG (eX,eY) = if ((eY >= eU))
1412- then eX
1401+ else split(drop(toString(pow(10, 0, dG, 0, 0, DOWN)), 1), "")
1402+ let gb = ht[db]
1403+ func hC (hD,hE) = (hD :+ gb)
1404+
1405+ let hF = {
1406+ let eU = dR
1407+ let eV = size(eU)
1408+ let eW = nil
1409+ func hG (eY,eZ) = if ((eZ >= eV))
1410+ then eY
1411+ else hC(eY, eU[eZ])
1412+
1413+ func hH (eY,eZ) = if ((eZ >= eV))
1414+ then eY
14131415 else throw("List size exceeds 25")
14141416
1415- 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(eV, 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)
1416- }
1417- (eR ++ hE)
1417+ hH(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(eW, 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)
1418+ }
1419+ (eS ++ hF)
14181420 }
14191421
1420- let fc = {
1421- let eT = cK
1422- let eU = size(eT)
1423- let eV = nil
1424- func hF (eX,eY) = if ((eY >= eU))
1425- then eX
1426- else hA(eX, eT[eY])
1427-
1428- func hG (eX,eY) = if ((eY >= eU))
1429- then eX
1422+ let fd = {
1423+ let eU = cL
1424+ let eV = size(eU)
1425+ let eW = nil
1426+ func hG (eY,eZ) = if ((eZ >= eV))
1427+ then eY
1428+ else hB(eY, eU[eZ])
1429+
1430+ func hH (eY,eZ) = if ((eZ >= eV))
1431+ then eY
14301432 else throw("List size exceeds 6")
14311433
1432- hG(hF(hF(hF(hF(hF(hF(eV, 0), 1), 2), 3), 4), 5), 6)
1434+ hH(hG(hG(hG(hG(hG(hG(eW, 0), 1), 2), 3), 4), 5), 6)
14331435 }
1434- func hH (eR,fB) = (eR + fc[fB])
1435-
1436- let eT = hr
1437- let eU = size(eT)
1438- let eV = ""
1439- func hI (eX,eY) = if ((eY >= eU))
1440- then eX
1441- else hH(eX, eT[eY])
1442-
1443- func hJ (eX,eY) = if ((eY >= eU))
1444- then eX
1436+ func hI (eS,fC) = (eS + fd[fC])
1437+
1438+ let eU = hs
1439+ let eV = size(eU)
1440+ let eW = ""
1441+ func hJ (eY,eZ) = if ((eZ >= eV))
1442+ then eY
1443+ else hI(eY, eU[eZ])
1444+
1445+ func hK (eY,eZ) = if ((eZ >= eV))
1446+ then eY
14451447 else throw("List size exceeds 25")
14461448
1447- hJ(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(eV, 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)
1448- }
1449-
1450-
1451-func hK (hL) = {
1452- let gu = split(valueOrElse(getString(hL), "0:0_0_0_0_0_0:0_0_0_0_0_0:"), ":")
1453-[toString(valueOrElse(parseInt(gu[bh]), 0)), if ((size(split(gu[bi], "_")) == aF))
1454- then gu[bi]
1455- else "0_0_0_0_0_0", if ((size(split(gu[bj], "_")) == aF))
1456- then gu[bj]
1457- else "0_0_0_0_0_0", gu[bk]]
1458- }
1459-
1460-
1461-func hM (hN) = {
1462- let fp = split(hN, "_")
1463- ((aI * (parseIntValue(fp[1]) + 1)) * parseIntValue(fp[0]))
1464- }
1465-
1466-
1467-func hO (hP) = {
1468- let hQ = hP[bb]
1469- func hR (eR,hS) = (eR + parseIntValue(hS))
1470-
1471- func hT (eR,hS) = {
1472- let da = eR._1
1473- let eK = (((parseIntValue(hS) + aX) - 1) / aX)
1474- $Tuple2((da + 1), (eR._2 + (eK * cE)))
1449+ hK(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(eW, 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)
1450+ }
1451+
1452+
1453+func hL (hM) = {
1454+ let gv = split(valueOrElse(getString(hM), "0:0_0_0_0_0_0:0_0_0_0_0_0:"), ":")
1455+[toString(valueOrElse(parseInt(gv[bi]), 0)), if ((size(split(gv[bj], "_")) == aG))
1456+ then gv[bj]
1457+ else "0_0_0_0_0_0", if ((size(split(gv[bk], "_")) == aG))
1458+ then gv[bk]
1459+ else "0_0_0_0_0_0", gv[bl]]
1460+ }
1461+
1462+
1463+func hN (hO) = {
1464+ let fq = split(hO, "_")
1465+ ((aJ * (parseIntValue(fq[1]) + 1)) * parseIntValue(fq[0]))
1466+ }
1467+
1468+
1469+func hP (hQ) = {
1470+ let hR = hQ[bc]
1471+ func hS (eS,hT) = (eS + parseIntValue(hT))
1472+
1473+ func hU (eS,hT) = {
1474+ let db = eS._1
1475+ let eL = (((parseIntValue(hT) + aY) - 1) / aY)
1476+ $Tuple2((db + 1), (eS._2 + (eL * cF)))
14751477 }
14761478
1477- let hU = {
1478- let eT = split(hP[aZ], "_")
1479- let eU = size(eT)
1480- let eV = 0
1481- func eW (eX,eY) = if ((eY >= eU))
1482- then eX
1483- else hR(eX, eT[eY])
1484-
1485- func eZ (eX,eY) = if ((eY >= eU))
1486- then eX
1479+ let hV = {
1480+ let eU = split(hQ[ba], "_")
1481+ let eV = size(eU)
1482+ let eW = 0
1483+ func eX (eY,eZ) = if ((eZ >= eV))
1484+ then eY
1485+ else hS(eY, eU[eZ])
1486+
1487+ func fa (eY,eZ) = if ((eZ >= eV))
1488+ then eY
14871489 else throw("List size exceeds 6")
14881490
1489- eZ(eW(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5), 6)
1491+ fa(eX(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5), 6)
14901492 }
1491- let hV = {
1492- let eT = split(hP[ba], "_")
1493- let eU = size(eT)
1494- let eV = 0
1495- func hF (eX,eY) = if ((eY >= eU))
1496- then eX
1497- else hR(eX, eT[eY])
1498-
1499- func hG (eX,eY) = if ((eY >= eU))
1500- then eX
1493+ let hW = {
1494+ let eU = split(hQ[bb], "_")
1495+ let eV = size(eU)
1496+ let eW = 0
1497+ func hG (eY,eZ) = if ((eZ >= eV))
1498+ then eY
1499+ else hS(eY, eU[eZ])
1500+
1501+ func hH (eY,eZ) = if ((eZ >= eV))
1502+ then eY
15011503 else throw("List size exceeds 6")
15021504
1503- hG(hF(hF(hF(hF(hF(hF(eV, 0), 1), 2), 3), 4), 5), 6)
1505+ hH(hG(hG(hG(hG(hG(hG(eW, 0), 1), 2), 3), 4), 5), 6)
15041506 }
1505- let hW = if ((hQ == ""))
1507+ let hX = if ((hR == ""))
15061508 then 0
1507- else ( let eT = split_4C(hQ, "_")
1508- let eU = size(eT)
1509- let eV = $Tuple2(0, 0)
1510- func hI (eX,eY) = if ((eY >= eU))
1511- then eX
1512- else hT(eX, eT[eY])
1513-
1514- func hJ (eX,eY) = if ((eY >= eU))
1515- then eX
1509+ else ( let eU = split_4C(hR, "_")
1510+ let eV = size(eU)
1511+ let eW = $Tuple2(0, 0)
1512+ func hJ (eY,eZ) = if ((eZ >= eV))
1513+ then eY
1514+ else hU(eY, eU[eZ])
1515+
1516+ func hK (eY,eZ) = if ((eZ >= eV))
1517+ then eY
15161518 else throw("List size exceeds 50")
15171519
1518- hJ(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(eV, 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
1519- ((hU + hV) + hW)
1520- }
1521-
1522-
1523-func hX (hY,hZ,ia) = {
1524- let hN = ((toString(hZ) + "_") + toString(ia))
1525- let ib = hM(hN)
1526- let ic = valueOrElse(getString(hY), (hN + ":0_0_0_0_0_0:0_0_0_0_0_0::0"))
1527- let id = split_4C(ic, ":")
1528- let ie = hO(id)
1529- let if = if ((5 > size(id)))
1530- then makeString(["0", toString(ie), toString((ib - ie)), toString(ib)], "_")
1520+ hK(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(eW, 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
1521+ ((hV + hW) + hX)
1522+ }
1523+
1524+
1525+func hY (hZ,ia,ib) = {
1526+ let hO = ((toString(ia) + "_") + toString(ib))
1527+ let ic = hN(hO)
1528+ let id = valueOrElse(getString(hZ), (hO + ":0_0_0_0_0_0:0_0_0_0_0_0::0"))
1529+ let ie = split_4C(id, ":")
1530+ let if = hP(ie)
1531+ let ig = if ((5 > size(ie)))
1532+ then makeString(["0", toString(if), toString((ic - if)), toString(ic)], "_")
15311533 else {
1532- let ig = split(id[bc], "_")
1533- let ih = parseIntValue(ig[bd])
1534- let ii = if ((size(ig) > 1))
1535- then parseIntValue(ig[be])
1536- else ie
1537- makeString([toString(ih), toString(ii), toString(((ib - ih) - ii)), toString(ib)], "_")
1538- }
1539-[id[aY], if ((size(split(id[aZ], "_")) == aF))
1540- then id[aZ]
1541- else "0_0_0_0_0_0", if ((size(split(id[ba], "_")) == aF))
1542- then id[ba]
1543- else "0_0_0_0_0_0", id[bb], if]
1544- }
1545-
1546-
1547-func ij (hP) = {
1548- let ik = hO(hP)
1549- let il = parseIntValue(split(hP[bc], "_")[bd])
1550- ((hM(hP[aY]) - ik) - il)
1551- }
1552-
1553-
1554-func im (in,hP,io) = if ((size(in) != 3))
1534+ let ih = split(ie[bd], "_")
1535+ let ii = parseIntValue(ih[be])
1536+ let ij = if ((size(ih) > 1))
1537+ then parseIntValue(ih[bf])
1538+ else if
1539+ makeString([toString(ii), toString(ij), toString(((ic - ii) - ij)), toString(ic)], "_")
1540+ }
1541+[ie[aZ], if ((size(split(ie[ba], "_")) == aG))
1542+ then ie[ba]
1543+ else "0_0_0_0_0_0", if ((size(split(ie[bb], "_")) == aG))
1544+ then ie[bb]
1545+ else "0_0_0_0_0_0", ie[bc], ig]
1546+ }
1547+
1548+
1549+func ik (hQ) = {
1550+ let il = hP(hQ)
1551+ let im = parseIntValue(split(hQ[bd], "_")[be])
1552+ ((hN(hQ[aZ]) - il) - im)
1553+ }
1554+
1555+
1556+func in (io,hQ,ip) = if ((size(io) != 3))
15551557 then throw("cargoListStr should contain exactly 2 ':' separators")
15561558 else {
1557- let ip = split(in[0], "_")
1558- let iq = split(in[1], "_")
1559- let ir = if ((in[2] == ""))
1559+ let iq = split(io[0], "_")
1560+ let ir = split(io[1], "_")
1561+ let is = if ((io[2] == ""))
15601562 then nil
1561- else split_4C(in[2], "_")
1562- if ((size(ip) != aF))
1563+ else split_4C(io[2], "_")
1564+ if ((size(iq) != aG))
15631565 then throw("All 6 resources should be passed")
1564- else if ((size(iq) != aF))
1566+ else if ((size(ir) != aG))
15651567 then throw("All 6 materials should be passed")
15661568 else {
1567- let gZ = ij(hP)
1568- let is = split(hP[aZ], "_")
1569- let it = split(hP[ba], "_")
1570- let iu = if ((hP[bb] == ""))
1569+ let ha = ik(hQ)
1570+ let it = split(hQ[ba], "_")
1571+ let iu = split(hQ[bb], "_")
1572+ let iv = if ((hQ[bc] == ""))
15711573 then nil
1572- else split_4C(hP[bb], "_")
1573- let gX = split(io[bi], "_")
1574- let iv = split(io[bj], "_")
1575- let iw = if ((io[bk] == ""))
1574+ else split_4C(hQ[bc], "_")
1575+ let gY = split(ip[bj], "_")
1576+ let iw = split(ip[bk], "_")
1577+ let ix = if ((ip[bl] == ""))
15761578 then nil
1577- else split_4C(io[bk], "_")
1578- func ix (eR,hS) = {
1579- let gK = eR._1
1580- let iy = parseIntValue(hS)
1581- let iz = parseIntValue(is[gK])
1582- let iA = parseIntValue(gX[gK])
1583- if ((iy == 0))
1584- then $Tuple4((gK + 1), (eR._2 :+ is[gK]), (eR._3 :+ gX[gK]), eR._4)
1585- else if ((iy > 0))
1586- then if ((iy > iA))
1587- then throw((((("Attempt to take " + hS) + " from backpack, but only ") + toString(iA)) + " available"))
1588- else $Tuple4((gK + 1), (eR._2 :+ toString((iz + iy))), (eR._3 :+ toString((iA - iy))), (eR._4 + iy))
1589- else if ((-(iy) > iz))
1590- then throw((((("Attempt to take " + toString(-(iy))) + " from warehouse, but only ") + toString(iz)) + " available"))
1591- else $Tuple4((gK + 1), (eR._2 :+ toString((iz + iy))), (eR._3 :+ toString((iA - iy))), (eR._4 + iy))
1579+ else split_4C(ip[bl], "_")
1580+ func iy (eS,hT) = {
1581+ let gL = eS._1
1582+ let iz = parseIntValue(hT)
1583+ let iA = parseIntValue(it[gL])
1584+ let iB = parseIntValue(gY[gL])
1585+ if ((iz == 0))
1586+ then $Tuple4((gL + 1), (eS._2 :+ it[gL]), (eS._3 :+ gY[gL]), eS._4)
1587+ else if ((iz > 0))
1588+ then if ((iz > iB))
1589+ then throw((((("Attempt to take " + hT) + " from backpack, but only ") + toString(iB)) + " available"))
1590+ else $Tuple4((gL + 1), (eS._2 :+ toString((iA + iz))), (eS._3 :+ toString((iB - iz))), (eS._4 + iz))
1591+ else if ((-(iz) > iA))
1592+ then throw((((("Attempt to take " + toString(-(iz))) + " from warehouse, but only ") + toString(iA)) + " available"))
1593+ else $Tuple4((gL + 1), (eS._2 :+ toString((iA + iz))), (eS._3 :+ toString((iB - iz))), (eS._4 + iz))
15921594 }
15931595
1594- let fc = {
1595- let eT = ip
1596- let eU = size(eT)
1597- let eV = $Tuple4(0, nil, nil, 0)
1598- func eW (eX,eY) = if ((eY >= eU))
1599- then eX
1600- else ix(eX, eT[eY])
1601-
1602- func eZ (eX,eY) = if ((eY >= eU))
1603- then eX
1596+ let fd = {
1597+ let eU = iq
1598+ let eV = size(eU)
1599+ let eW = $Tuple4(0, nil, nil, 0)
1600+ func eX (eY,eZ) = if ((eZ >= eV))
1601+ then eY
1602+ else iy(eY, eU[eZ])
1603+
1604+ func fa (eY,eZ) = if ((eZ >= eV))
1605+ then eY
16041606 else throw("List size exceeds 6")
16051607
1606- eZ(eW(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5), 6)
1608+ fa(eX(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5), 6)
16071609 }
1608- func iB (eR,hS) = {
1609- let gK = eR._1
1610- let iy = parseIntValue(hS)
1611- let iC = parseIntValue(it[gK])
1612- let iD = parseIntValue(iv[gK])
1613- if ((iy == 0))
1614- then $Tuple4((gK + 1), (eR._2 :+ it[gK]), (eR._3 :+ iv[gK]), eR._4)
1615- else if ((iy > 0))
1616- then if ((iy > iD))
1617- then throw((((("Attempt to take " + hS) + " from backpack, but only ") + toString(iD)) + " available"))
1618- else $Tuple4((gK + 1), (eR._2 :+ toString((iC + iy))), (eR._3 :+ toString((iD - iy))), (eR._4 + iy))
1619- else if ((-(iy) > iC))
1620- then throw((((("Attempt to take " + toString(-(iy))) + " from warehouse, but only ") + toString(iC)) + " available"))
1621- else $Tuple4((gK + 1), (eR._2 :+ toString((iC + iy))), (eR._3 :+ toString((iD - iy))), (eR._4 + iy))
1610+ func iC (eS,hT) = {
1611+ let gL = eS._1
1612+ let iz = parseIntValue(hT)
1613+ let iD = parseIntValue(iu[gL])
1614+ let iE = parseIntValue(iw[gL])
1615+ if ((iz == 0))
1616+ then $Tuple4((gL + 1), (eS._2 :+ iu[gL]), (eS._3 :+ iw[gL]), eS._4)
1617+ else if ((iz > 0))
1618+ then if ((iz > iE))
1619+ then throw((((("Attempt to take " + hT) + " from backpack, but only ") + toString(iE)) + " available"))
1620+ else $Tuple4((gL + 1), (eS._2 :+ toString((iD + iz))), (eS._3 :+ toString((iE - iz))), (eS._4 + iz))
1621+ else if ((-(iz) > iD))
1622+ then throw((((("Attempt to take " + toString(-(iz))) + " from warehouse, but only ") + toString(iD)) + " available"))
1623+ else $Tuple4((gL + 1), (eS._2 :+ toString((iD + iz))), (eS._3 :+ toString((iE - iz))), (eS._4 + iz))
16221624 }
16231625
1624- let gq = {
1625- let eT = iq
1626- let eU = size(eT)
1627- let eV = $Tuple4(0, nil, nil, fc._4)
1628- func hF (eX,eY) = if ((eY >= eU))
1629- then eX
1630- else iB(eX, eT[eY])
1631-
1632- func hG (eX,eY) = if ((eY >= eU))
1633- then eX
1626+ let gr = {
1627+ let eU = ir
1628+ let eV = size(eU)
1629+ let eW = $Tuple4(0, nil, nil, fd._4)
1630+ func hG (eY,eZ) = if ((eZ >= eV))
1631+ then eY
1632+ else iC(eY, eU[eZ])
1633+
1634+ func hH (eY,eZ) = if ((eZ >= eV))
1635+ then eY
16341636 else throw("List size exceeds 6")
16351637
1636- hG(hF(hF(hF(hF(hF(hF(eV, 0), 1), 2), 3), 4), 5), 6)
1638+ hH(hG(hG(hG(hG(hG(hG(eW, 0), 1), 2), 3), 4), 5), 6)
16371639 }
1638- func iE (eR,hS) = {
1639- let gK = eR._1
1640- let iy = parseIntValue(hS)
1641- let iF = if ((size(iu) > gK))
1642- then parseIntValue(iu[gK])
1640+ func iF (eS,hT) = {
1641+ let gL = eS._1
1642+ let iz = parseIntValue(hT)
1643+ let iG = if ((size(iv) > gL))
1644+ then parseIntValue(iv[gL])
16431645 else 0
1644- let iG = if ((size(iw) > gK))
1645- then parseIntValue(iw[gK])
1646+ let iH = if ((size(ix) > gL))
1647+ then parseIntValue(ix[gL])
16461648 else 0
1647- if ((iy == 0))
1648- then $Tuple4((gK + 1), (eR._2 :+ toString(iF)), (eR._3 :+ toString(iG)), eR._4)
1649- else if ((iy > 0))
1650- then if ((iy > iG))
1651- then throw((((("Attempt to take " + hS) + " from backpack, but only ") + toString(iG)) + " available"))
1649+ if ((iz == 0))
1650+ then $Tuple4((gL + 1), (eS._2 :+ toString(iG)), (eS._3 :+ toString(iH)), eS._4)
1651+ else if ((iz > 0))
1652+ then if ((iz > iH))
1653+ then throw((((("Attempt to take " + hT) + " from backpack, but only ") + toString(iH)) + " available"))
16521654 else {
1653- let fT = (eH((iF + iy), aX) - eH(iF, aX))
1654- $Tuple4((gK + 1), (eR._2 :+ toString((iF + iy))), (eR._3 :+ toString((iG - iy))), (eR._4 + fT))
1655+ let fU = (eI((iG + iz), aY) - eI(iG, aY))
1656+ $Tuple4((gL + 1), (eS._2 :+ toString((iG + iz))), (eS._3 :+ toString((iH - iz))), (eS._4 + fU))
16551657 }
1656- else if ((-(iy) > iF))
1657- then throw((((("Attempt to take " + toString(-(iy))) + " from warehouse, but only ") + toString(iF)) + " available"))
1658+ else if ((-(iz) > iG))
1659+ then throw((((("Attempt to take " + toString(-(iz))) + " from warehouse, but only ") + toString(iG)) + " available"))
16581660 else {
1659- let fT = (eH((iF + iy), aX) - eH(iF, aX))
1660- $Tuple4((gK + 1), (eR._2 :+ toString((iF + iy))), (eR._3 :+ toString((iG - iy))), (eR._4 + fT))
1661+ let fU = (eI((iG + iz), aY) - eI(iG, aY))
1662+ $Tuple4((gL + 1), (eS._2 :+ toString((iG + iz))), (eS._3 :+ toString((iH - iz))), (eS._4 + fU))
16611663 }
16621664 }
16631665
1664- let gu = if ((size(ir) != 0))
1666+ let gv = if ((size(is) != 0))
16651667 then {
1666- let eT = ir
1667- let eU = size(eT)
1668- let eV = $Tuple4(0, nil, nil, gq._4)
1669- func hI (eX,eY) = if ((eY >= eU))
1670- then eX
1671- else iE(eX, eT[eY])
1672-
1673- func hJ (eX,eY) = if ((eY >= eU))
1674- then eX
1668+ let eU = is
1669+ let eV = size(eU)
1670+ let eW = $Tuple4(0, nil, nil, gr._4)
1671+ func hJ (eY,eZ) = if ((eZ >= eV))
1672+ then eY
1673+ else iF(eY, eU[eZ])
1674+
1675+ func hK (eY,eZ) = if ((eZ >= eV))
1676+ then eY
16751677 else throw("List size exceeds 50")
16761678
1677- hJ(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(eV, 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)
1679+ hK(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(eW, 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)
16781680 }
1679- else $Tuple4(0, iu, iw, gq._4)
1680- let iH = gu._4
1681- if ((iH > gZ))
1682- then throw((((("Attempt to put total " + toString(iH)) + " stuff, but only ") + toString(gZ)) + " warehouse space left"))
1683- else $Tuple7(makeString(fc._2, "_"), makeString(gq._2, "_"), makeString_2C(gu._2, "_"), makeString(fc._3, "_"), makeString(gq._3, "_"), makeString_2C(gu._3, "_"), iH)
1681+ else $Tuple4(0, iv, ix, gr._4)
1682+ let iI = gv._4
1683+ if ((iI > ha))
1684+ then throw((((("Attempt to put total " + toString(iI)) + " stuff, but only ") + toString(ha)) + " warehouse space left"))
1685+ else $Tuple7(makeString(fd._2, "_"), makeString(gr._2, "_"), makeString_2C(gv._2, "_"), makeString(fd._3, "_"), makeString(gr._3, "_"), makeString_2C(gv._3, "_"), iI)
16841686 }
16851687 }
16861688
16871689
1688-func iI (iJ,iK) = {
1689- let bL = toString(iJ)
1690- let iL = hf(toBigInt(iK))
1691- let iM = valueOrElse(getInteger(ep()), (eo + 1))
1692- let et = toString(iM)
1693- let ho = toInt((iL % ei))
1694- let gN = hm(iL, ho)
1695- let dt = aP[ho]
1696- let iN = Issue(eG(et, "S"), makeString([et, "S", gN, dt], "_"), 1, 0, false)
1697- let bp = calculateAssetId(iN)
1698- let iO = toBase58String(bp)
1699- $Tuple2([IntegerEntry(ep(), (iM + 1)), iN, StringEntry(es(et), iO), StringEntry(bo(iO), bL), StringEntry(ev(et), bL), IntegerEntry(by(iO), 0), IntegerEntry(eu(iO, bL), 0), ScriptTransfer(iJ, 1, bp)], $Tuple2(iO, dt))
1700- }
1701-
1702-
1703-func iP (bL,iQ,iR) = if (!(sigVerify_8Kb(iQ, iR, dZ)))
1690+func iJ (iK,iL) = {
1691+ let bM = toString(iK)
1692+ let iM = hg(toBigInt(iL))
1693+ let iN = valueOrElse(getInteger(eq()), (ep + 1))
1694+ let eu = toString(iN)
1695+ let hp = toInt((iM % ej))
1696+ let gO = hn(iM, hp)
1697+ let du = aQ[hp]
1698+ let iO = Issue(eH(eu, "S"), makeString([eu, "S", gO, du], "_"), 1, 0, false)
1699+ let bq = calculateAssetId(iO)
1700+ let iP = toBase58String(bq)
1701+ $Tuple2([IntegerEntry(eq(), (iN + 1)), iO, StringEntry(et(eu), iP), StringEntry(bp(iP), bM), StringEntry(ew(eu), bM), IntegerEntry(bz(iP), 0), IntegerEntry(ev(iP, bM), 0), ScriptTransfer(iK, 1, bq)], $Tuple2(iP, du))
1702+ }
1703+
1704+
1705+func iQ (bM,iR,iS) = if (!(sigVerify_8Kb(iR, iS, ea)))
17041706 then throw("signature does not match")
17051707 else {
1706- let fp = split_4C(toUtf8String(iQ), ";")
1707- let iS = split_4C(fp[0], "|")
1708- let iT = split(iS[eC], "_")
1709- let iU = parseIntValue(iT[0])
1710- let iV = parseIntValue(iT[1])
1711- let iW = split(fp[1], ":")
1712- let iX = iW[0]
1713- let iY = parseIntValue(iS[eD])
1714- if (if ((iY > (lastBlock.timestamp + eb)))
1708+ let fq = split_4C(toUtf8String(iR), ";")
1709+ let iT = split_4C(fq[0], "|")
1710+ let iU = split(iT[eD], "_")
1711+ let iV = parseIntValue(iU[0])
1712+ let iW = parseIntValue(iU[1])
1713+ let iX = split(fq[1], ":")
1714+ let iY = iX[0]
1715+ let iZ = parseIntValue(iT[eE])
1716+ if (if ((iZ > (lastBlock.timestamp + ec)))
17151717 then true
1716- else ((lastBlock.timestamp - eb) > iY))
1717- then throw(((("signature outdated: logTime=" + toString(iY)) + ", bcTime=") + toString(lastBlock.timestamp)))
1718+ else ((lastBlock.timestamp - ec) > iZ))
1719+ then throw(((("signature outdated: logTime=" + toString(iZ)) + ", bcTime=") + toString(lastBlock.timestamp)))
17181720 else {
1719- let iZ = iW[1]
1720- let ja = valueOrElse(getString(dL(bL)), "")
1721- if ((ja != iZ))
1722- then throw(((("Tx ids don't match! In state: " + ja) + ", in msg: ") + iZ))
1721+ let ja = iX[1]
1722+ let jb = valueOrElse(getString(dM(bM)), "")
1723+ if ((jb != ja))
1724+ then throw(((("Tx ids don't match! In state: " + jb) + ", in msg: ") + ja))
17231725 else {
1724- let A = valueOrErrorMessage(getString(bH(bL)), "You don't have a duck staked")
1725- let jb = z(A)
1726- let jc = ag(valueOrElse(getInteger(D(A)), 0))
1727- let jd = valueOrElse(getInteger(jb), jc)
1728- if ((jd != iU))
1729- then throw(((("oldHealth=" + toString(jd)) + " from state does not match one from flight log=") + toString(iU)))
1730- else if ((0 >= iU))
1726+ let B = valueOrErrorMessage(getString(bI(bM)), "You don't have a duck staked")
1727+ let jc = A(B)
1728+ let jd = ah(valueOrElse(getInteger(E(B)), 0))
1729+ let je = valueOrElse(getInteger(jc), jd)
1730+ if ((je != iV))
1731+ then throw(((("oldHealth=" + toString(je)) + " from state does not match one from flight log=") + toString(iV)))
1732+ else if ((0 >= iV))
17311733 then throw("You can't fly with zero health")
1732- else if (!(gw(A)))
1734+ else if (!(gx(B)))
17331735 then throw("Equipment incompatible")
17341736 else {
1735- let je = if ((size(iS) > eE))
1736- then iS[eE]
1737+ let jf = if ((size(iT) > eF))
1738+ then iT[eF]
17371739 else ""
1738- let jf = if ((size(iS) > eF))
1739- then iS[eF]
1740+ let jg = if ((size(iT) > eG))
1741+ then iT[eG]
17401742 else ""
1741- let jg = if (if ((iV > 0))
1742- then (je == "$")
1743+ let jh = if (if ((iW > 0))
1744+ then (jf == "$")
17431745 else false)
1744- then dz(invoke(db, "sendUsdtPrize", [bL], nil))
1746+ then dA(invoke(dc, "sendUsdtPrize", [bM], nil))
17451747 else 0
1746- $Tuple5(iV, A, jg, iX, jf)
1748+ $Tuple5(iW, B, jh, iY, jg)
17471749 }
17481750 }
17491751 }
17501752 }
17511753
17521754
1753-func jh (P,ji) = {
1754- let ia = valueOrElse(getInteger(by(P)), 0)
1755- let jj = valueOrElse(getInteger(bs(aE, P)), 0)
1756- let jk = (ia / 6)
1757- let jl = (ia / 7)
1758- ((aH + fraction(aH, ((ia + jk) + (2 * jl)), 5)) + fraction(aH, jj, (ji * 5)))
1759- }
1760-
1761-
1762-func jm (c,jn,jo) = {
1763- let jp = if ((jn == ez))
1764- then $Tuple2(jo, valueOrElse(getString(bH(c)), ""))
1755+func ji (Q,jj) = {
1756+ let ib = valueOrElse(getInteger(bz(Q)), 0)
1757+ let jk = valueOrElse(getInteger(bt(aF, Q)), 0)
1758+ let jl = (ib / 6)
1759+ let jm = (ib / 7)
1760+ ((aI + fraction(aI, ((ib + jl) + (2 * jm)), 5)) + fraction(aI, jk, (jj * 5)))
1761+ }
1762+
1763+
1764+func jn (d,jo,jp) = {
1765+ let jq = if ((jo == eA))
1766+ then $Tuple2(jp, valueOrElse(getString(bI(d)), ""))
17651767 else {
1766- let A = valueOrErrorMessage(getString(bH(c)), "You don't have a duck staked")
1767- let jq = valueOrElse(getString(bJ(A)), aJ)
1768- let cf = split(value(jq), "_")
1769- if ((cf[bm] != "L"))
1770- then throw((("Duck location type is " + cf[bm]) + ", but should be L"))
1771- else $Tuple2(cf[bn], A)
1772- }
1773- let P = jp._1
1774- let jr = jp._2
1775- let js = value(assetInfo(fromBase58String(P)))
1776- let jt = br(P)
1777- let ju = valueOrErrorMessage(getInteger(jt), (("Land " + js.name) + " is not staked"))
1778- let jv = valueOrErrorMessage(getString(bo(P)), (("NFT " + js.name) + " is orphaned"))
1779- if ((jv != c))
1780- then throw((aC + " is not yours"))
1768+ let B = valueOrErrorMessage(getString(bI(d)), "You don't have a duck staked")
1769+ let jr = valueOrElse(getString(bK(B)), aK)
1770+ let cg = split(value(jr), "_")
1771+ if ((cg[bn] != "L"))
1772+ then throw((("Duck location type is " + cg[bn]) + ", but should be L"))
1773+ else $Tuple2(cg[bo], B)
1774+ }
1775+ let Q = jq._1
1776+ let js = jq._2
1777+ let jt = value(assetInfo(fromBase58String(Q)))
1778+ let ju = bs(Q)
1779+ let jv = valueOrErrorMessage(getInteger(ju), (("Land " + jt.name) + " is not staked"))
1780+ let jw = valueOrErrorMessage(getString(bp(Q)), (("NFT " + jt.name) + " is orphaned"))
1781+ if ((jw != d))
1782+ then throw((aD + " is not yours"))
17811783 else {
1782- let jw = split(js.description, "_")
1783- $Tuple4(jr, P, jw, ju)
1784- }
1785- }
1786-
1787-
1788-func jx (c,eI,jn,jo) = if ((0 > eI))
1784+ let jx = split(jt.description, "_")
1785+ $Tuple4(js, Q, jx, jv)
1786+ }
1787+ }
1788+
1789+
1790+func jy (d,eJ,jo,jp) = if ((0 > eJ))
17891791 then throw("Negative amount")
17901792 else {
1791- let ga = jm(c, jn, jo)
1792- let dI = ga._3[di]
1793- let gG = gM(ga._3[dj])
1794- let gQ = (lastBlock.timestamp - ga._4)
1795- if ((0 > gQ))
1796- then throw(((("Saved timestamp is in future, saved = " + toString(ga._4)) + ", current = ") + toString(lastBlock.timestamp)))
1793+ let gb = jn(d, jo, jp)
1794+ let dJ = gb._3[dj]
1795+ let gH = gN(gb._3[dk])
1796+ let gR = (lastBlock.timestamp - gb._4)
1797+ if ((0 > gR))
1798+ then throw(((("Saved timestamp is in future, saved = " + toString(gb._4)) + ", current = ") + toString(lastBlock.timestamp)))
17971799 else {
1798- let ji = dH(dI)
1799- let jy = jh(ga._2, ji)
1800- let jz = fraction(gQ, (jy * ji), a)
1801- if ((eI > jz))
1802- then throw(((("Not enough resources, available = " + toString(jz)) + ", requested = ") + toString(eI)))
1800+ let jj = dI(dJ)
1801+ let jz = ji(gb._2, jj)
1802+ let jA = fraction(gR, (jz * jj), a)
1803+ if ((eJ > jA))
1804+ then throw(((("Not enough resources, available = " + toString(jA)) + ", requested = ") + toString(eJ)))
18031805 else {
1804- let jA = fraction((jz - eI), a, (jy * ji))
1805- let jB = (lastBlock.timestamp - jA)
1806- let hZ = (ji / cF)
1807- let gY = gU(gG, (gQ - jA), hZ, jy)
1808- let hY = bx(ga._2)
1809- let ia = valueOrElse(getInteger(by(ga._2)), 0)
1810- let hP = hX(hY, hZ, ia)
1811- let ig = split(hP[bc], "_")
1812- let gZ = parseIntValue(ig[bf])
1813- if (if ((jn == ez))
1814- then (eI > gZ)
1806+ let jB = fraction((jA - eJ), a, (jz * jj))
1807+ let jC = (lastBlock.timestamp - jB)
1808+ let ia = (jj / cG)
1809+ let gZ = gV(gH, (gR - jB), ia, jz)
1810+ let hZ = by(gb._2)
1811+ let ib = valueOrElse(getInteger(bz(gb._2)), 0)
1812+ let hQ = hY(hZ, ia, ib)
1813+ let ih = split(hQ[bd], "_")
1814+ let ha = parseIntValue(ih[bg])
1815+ if (if ((jo == eA))
1816+ then (eJ > ha)
18151817 else false)
1816- then throw((("Only " + toString(gZ)) + " space left in warehouse"))
1818+ then throw((("Only " + toString(ha)) + " space left in warehouse"))
18171819 else {
1818- let hL = bI(ga._1)
1819- let io = hK(hL)
1820- let gX = split(io[bi], "_")
1821- let gW = split(hP[aZ], "_")
1822- let jC = if ((jn == ez))
1823- then $Tuple4(gO(gW, gG, (gQ - jA), hZ, jy), io[bi], (parseIntValue(ig[be]) + gY._2), (parseIntValue(ig[bf]) - gY._2))
1824- else if ((jn == eA))
1825- then $Tuple4(hP[aZ], gO(gX, gG, (gQ - jA), hZ, jy), parseIntValue(ig[be]), parseIntValue(ig[bf]))
1820+ let hM = bJ(gb._1)
1821+ let ip = hL(hM)
1822+ let gY = split(ip[bj], "_")
1823+ let gX = split(hQ[ba], "_")
1824+ let jD = if ((jo == eA))
1825+ then $Tuple4(gP(gX, gH, (gR - jB), ia, jz), ip[bj], (parseIntValue(ih[bf]) + gZ._2), (parseIntValue(ih[bg]) - gZ._2))
1826+ else if ((jo == eB))
1827+ then $Tuple4(hQ[ba], gP(gY, gH, (gR - jB), ia, jz), parseIntValue(ih[bf]), parseIntValue(ih[bg]))
18261828 else {
1827- let jD = gV(gW, gX, gY, gZ)
1828- let jE = min([parseIntValue(ig[bf]), gY._2])
1829- $Tuple4(jD._1, jD._2, (parseIntValue(ig[be]) + jE), (parseIntValue(ig[bf]) - jE))
1829+ let jE = gW(gX, gY, gZ, ha)
1830+ let jF = min([parseIntValue(ih[bg]), gZ._2])
1831+ $Tuple4(jE._1, jE._2, (parseIntValue(ih[bf]) + jF), (parseIntValue(ih[bg]) - jF))
18301832 }
1831- let jF = jC._1
1832- let jG = jC._2
1833- let jH = jC._3
1834- let jI = jC._4
1835- $Tuple5([IntegerEntry(br(ga._2), jB), IntegerEntry(bu(aC, ga._2, c), jB)], hL, [io[bh], jG, io[bj], io[bk]], hY, [hP[aY], jF, hP[ba], hP[bb], makeString([ig[bd], toString(jH), toString(jI), ig[bg]], "_")])
1833+ let jG = jD._1
1834+ let jH = jD._2
1835+ let jI = jD._3
1836+ let jJ = jD._4
1837+ $Tuple5([IntegerEntry(bs(gb._2), jC), IntegerEntry(bv(aD, gb._2, d), jC)], hM, [ip[bi], jH, ip[bk], ip[bl]], hZ, [hQ[aZ], jG, hQ[bb], hQ[bc], makeString([ih[be], toString(jI), toString(jJ), ih[bh]], "_")])
18361838 }
18371839 }
18381840 }
18391841 }
18401842
18411843
1842-func jJ (c,P,ji,jn) = {
1843- let jt = br(P)
1844- let ju = value(getInteger(jt))
1845- let jz = (fraction((lastBlock.timestamp - ju), jh(P, ji), a) * ji)
1846- jx(c, jz, jn, P)
1847- }
1848-
1849-
1850-func jK (fe,iJ,jL,P) = {
1851- let c = toString(iJ)
1852- let ga = jm(c, eB, P)
1853- let ji = dH(ga._3[di])
1854- let jM = by(ga._2)
1855- let jN = valueOrElse(getInteger(jM), 0)
1856- if (if (!(cu))
1857- then (jN >= 3)
1844+func jK (d,Q,jj,jo) = {
1845+ let ju = bs(Q)
1846+ let jv = value(getInteger(ju))
1847+ let jA = (fraction((lastBlock.timestamp - jv), ji(Q, jj), a) * jj)
1848+ jy(d, jA, jo, Q)
1849+ }
1850+
1851+
1852+func jL (ff,iK,jM,Q) = {
1853+ let d = toString(iK)
1854+ let gb = jn(d, eC, Q)
1855+ let jj = dI(gb._3[dj])
1856+ let jN = bz(gb._2)
1857+ let jO = valueOrElse(getInteger(jN), 0)
1858+ if (if (!(cv))
1859+ then (jO >= 3)
18581860 else false)
18591861 then throw("Currently max infrastructure level = 3")
18601862 else {
1861- let jO = ((sqrt(ji, 0, 0, DOWN) / 5) + 2)
1862- let al = (jN + 1)
1863- if (if (cu)
1864- then (al > jO)
1863+ let jP = ((sqrt(jj, 0, 0, DOWN) / 5) + 2)
1864+ let am = (jO + 1)
1865+ if (if (cv)
1866+ then (am > jP)
18651867 else false)
1866- then throw(("Currently max infrastructure level = " + toString(jO)))
1868+ then throw(("Currently max infrastructure level = " + toString(jP)))
18671869 else {
1868- let jP = fraction(ee, (ji * al), cF)
1869- if (if (!(fe))
1870- then (jL != jP)
1870+ let jQ = fraction(ef, (jj * am), cG)
1871+ if (if (!(ff))
1872+ then (jM != jQ)
18711873 else false)
1872- then throw(("Payment attached should be " + toString(jP)))
1874+ then throw(("Payment attached should be " + toString(jQ)))
18731875 else {
1874- let hL = bI(ga._1)
1875- let io = hK(hL)
1876- let jQ = split(io[bj], "_")
1877- let jR = fraction(cA, (ji * al), cF)
1878- let jS = makeString(fd(fe, jQ, jR), "_")
1879- let jT = jJ(c, ga._2, ji, eB)
1880- let jU = jT._5
1881- let jV = hM(jU[aY])
1882- let jW = makeString([split(jU[aY], "_")[0], toString(al)], "_")
1883- let jX = hM(jW)
1884- let ig = split(jU[bc], "_")
1885- let jY = makeString([ig[bd], ig[be], toString(((parseIntValue(ig[bf]) + jX) - jV)), toString(jX)], "_")
1886- $Tuple3(([IntegerEntry(jM, al), IntegerEntry(eu(ga._2, c), al), StringEntry(hL, makeString([io[bh], jT._3[bi], jS, io[bk]], ":")), StringEntry(jT._4, makeString([jW, jU[aZ], jU[ba], jU[bb], jY], ":"))] ++ jT._1), al, jR)
1876+ let hM = bJ(gb._1)
1877+ let ip = hL(hM)
1878+ let jR = split(ip[bk], "_")
1879+ let jS = fraction(cB, (jj * am), cG)
1880+ let jT = makeString(fe(ff, jR, jS), "_")
1881+ let jU = jK(d, gb._2, jj, eC)
1882+ let jV = jU._5
1883+ let jW = hN(jV[aZ])
1884+ let jX = makeString([split(jV[aZ], "_")[0], toString(am)], "_")
1885+ let jY = hN(jX)
1886+ let ih = split(jV[bd], "_")
1887+ let jZ = makeString([ih[be], ih[bf], toString(((parseIntValue(ih[bg]) + jY) - jW)), toString(jY)], "_")
1888+ $Tuple3(([IntegerEntry(jN, am), IntegerEntry(ev(gb._2, d), am), StringEntry(hM, makeString([ip[bi], jU._3[bj], jT, ip[bl]], ":")), StringEntry(jU._4, makeString([jX, jV[ba], jV[bb], jV[bc], jZ], ":"))] ++ jU._1), am, jS)
18871889 }
18881890 }
18891891 }
18901892 }
18911893
18921894
1893-func jZ (A,ka) = {
1894- let kb = D(A)
1895- let kc = C(A)
1896- let af = valueOrElse(getInteger(kc), 0)
1897- let ak = (af + ka)
1898- let kd = ai(valueOrElse(getInteger(kb), 0), ak)
1899- let ke = E(A)
1900- $Tuple2([IntegerEntry(kb, kd[0]), IntegerEntry(kc, ak), IntegerEntry(ke, (valueOrElse(getInteger(ke), 0) + kd[1]))], ak)
1901- }
1902-
1903-
1904-func kf (c,ka) = {
1905- let kb = H(c)
1906- let kc = G(c)
1907- let af = valueOrElse(getInteger(kc), 0)
1908- let ak = (af + ka)
1909- let kd = ai(valueOrElse(getInteger(kb), 0), ak)
1910- let ke = I(c)
1911- $Tuple2([IntegerEntry(kb, kd[0]), IntegerEntry(kc, ak), IntegerEntry(ke, (valueOrElse(getInteger(ke), 0) + kd[1]))], ak)
1912- }
1913-
1914-
1915-func kg (c) = {
1916- let A = valueOrErrorMessage(getString(bH(c)), "You don't have a duck staked")
1917- let kh = bC(c)
1918- let ki = getString(kh)
1919- if (!(isDefined(ki)))
1895+func ka (B,kb) = {
1896+ let kc = E(B)
1897+ let kd = D(B)
1898+ let ag = valueOrElse(getInteger(kd), 0)
1899+ let al = (ag + kb)
1900+ let ke = aj(valueOrElse(getInteger(kc), 0), al)
1901+ let kf = F(B)
1902+ $Tuple2([IntegerEntry(kc, ke[0]), IntegerEntry(kd, al), IntegerEntry(kf, (valueOrElse(getInteger(kf), 0) + ke[1]))], al)
1903+ }
1904+
1905+
1906+func kg (d,kb) = {
1907+ let kc = I(d)
1908+ let kd = H(d)
1909+ let ag = valueOrElse(getInteger(kd), 0)
1910+ let al = (ag + kb)
1911+ let ke = aj(valueOrElse(getInteger(kc), 0), al)
1912+ let kf = J(d)
1913+ $Tuple2([IntegerEntry(kc, ke[0]), IntegerEntry(kd, al), IntegerEntry(kf, (valueOrElse(getInteger(kf), 0) + ke[1]))], al)
1914+ }
1915+
1916+
1917+func kh (d) = {
1918+ let B = valueOrErrorMessage(getString(bI(d)), "You don't have a duck staked")
1919+ let ki = bD(d)
1920+ let kj = getString(ki)
1921+ if (!(isDefined(kj)))
19201922 then throw("You are not eligible for ONBOARD artifact")
19211923 else {
1922- let kj = bE(c)
1923- let kk = getString(kj)
1924- if (isDefined(kk))
1925- then throw(("You already used your ONBOARD artifact on duck " + value(kk)))
1924+ let kk = bF(d)
1925+ let kl = getString(kk)
1926+ if (isDefined(kl))
1927+ then throw(("You already used your ONBOARD artifact on duck " + value(kl)))
19261928 else {
1927- let kl = bD(A)
1928- let km = getString(kl)
1929- if (isDefined(km))
1930- then throw(((("The duck " + A) + " already got points from ONBOARD artifact from user ") + value(km)))
1931- else ([StringEntry(kj, A), StringEntry(kl, c)] ++ jZ(A, ac)._1)
1929+ let km = bE(B)
1930+ let kn = getString(km)
1931+ if (isDefined(kn))
1932+ then throw(((("The duck " + B) + " already got points from ONBOARD artifact from user ") + value(kn)))
1933+ else ([StringEntry(kk, B), StringEntry(km, d)] ++ ka(B, ad)._1)
19321934 }
19331935 }
19341936 }
19351937
19361938
1937-func kn (c,jo) = {
1938- let ga = jm(c, eB, jo)
1939- let P = ga._2
1940- let ji = dH(ga._3[di])
1941- let ko = bs(aE, P)
1942- if ((valueOrElse(getInteger(ko), 0) > 0))
1939+func ko (d,jp) = {
1940+ let gb = jn(d, eC, jp)
1941+ let Q = gb._2
1942+ let jj = dI(gb._3[dj])
1943+ let kp = bt(aF, Q)
1944+ if ((valueOrElse(getInteger(kp), 0) > 0))
19431945 then throw("Presale artifact is already activated")
1944- else if ((parseIntValue(ga._3[dh]) > eo))
1945- then throw((((aC + " ") + P) + " is not eligible for presale artifact"))
1946+ else if ((parseIntValue(gb._3[di]) > ep))
1947+ then throw((((aD + " ") + Q) + " is not eligible for presale artifact"))
19461948 else {
1947- let jT = jJ(c, P, ji, eB)
1948- (((jT._1 :+ IntegerEntry(ko, ji)) :+ StringEntry(jT._2, makeString(jT._3, ":"))) :+ StringEntry(jT._4, makeString(jT._5, ":")))
1949+ let jU = jK(d, Q, jj, eC)
1950+ (((jU._1 :+ IntegerEntry(kp, jj)) :+ StringEntry(jU._2, makeString(jU._3, ":"))) :+ StringEntry(jU._4, makeString(jU._5, ":")))
19491951 }
19501952 }
19511953
19521954
1953-func kp (A) = {
1954- let ce = valueOrElse(getInteger(df, bP), 0)
1955- let jq = split(valueOrElse(getString(bJ(A)), aJ), "_")
1956- let ax = lastBlock.timestamp
1957- let cg = bY(df, ce)
1958- let ca = cg[bU]
1959- let cb = cg[bV]
1960- if ((jq[bm] != "T"))
1955+func kq (B) = {
1956+ let cf = valueOrElse(getInteger(dg, bQ), 0)
1957+ let jr = split(valueOrElse(getString(bK(B)), aK), "_")
1958+ let ay = lastBlock.timestamp
1959+ let ch = bZ(dg, cf)
1960+ let cb = ch[bV]
1961+ let cc = ch[bW]
1962+ if ((jr[bn] != "T"))
19611963 then false
1962- else if (if (if ((parseIntValue(jq[bl]) == ce))
1963- then (cb[bX] == "INPROGRESS")
1964+ else if (if (if ((parseIntValue(jr[bm]) == cf))
1965+ then (cc[bY] == "INPROGRESS")
19641966 else false)
1965- then (parseIntValue(ca[bW]) > ax)
1967+ then (parseIntValue(cb[bX]) > ay)
19661968 else false)
19671969 then throw("Your duck is taking part in the tournament")
1968- else dD(invoke(this, "exitTournamentInternal", [A], nil))
1969- }
1970-
1971-
1972-func kq (A) = if (!(cv))
1970+ else dE(invoke(this, "exitTournamentInternal", [B], nil))
1971+ }
1972+
1973+
1974+func kr (B) = if (!(cw))
19731975 then false
19741976 else {
1975- let jq = split(valueOrElse(getString(bJ(A)), aJ), "_")
1976- let ax = lastBlock.timestamp
1977- if ((jq[bm] != "D"))
1977+ let jr = split(valueOrElse(getString(bK(B)), aK), "_")
1978+ let ay = lastBlock.timestamp
1979+ if ((jr[bn] != "D"))
19781980 then false
19791981 else {
1980- let ci = parseIntValue(jq[bl])
1981- let cj = parseIntValue(jq[bn])
1982- if (if ((ax > (ci + aN)))
1983- then (3 > cj)
1982+ let cj = parseIntValue(jr[bm])
1983+ let ck = parseIntValue(jr[bo])
1984+ if (if ((ay > (cj + aO)))
1985+ then (3 > ck)
19841986 else false)
19851987 then throw("Your duck is on delivery mission")
1986- else dD(invoke(this, "exitDeliveryInternal", [A], nil))
1988+ else dE(invoke(this, "exitDeliveryInternal", [B], nil))
19871989 }
19881990 }
19891991
19901992
1991-func kr (A,ks,iV) = {
1992- let jq = split(valueOrElse(getString(bJ(A)), aJ), "_")
1993- let ax = lastBlock.timestamp
1994- let ci = parseIntValue(jq[bl])
1995- let cj = parseIntValue(jq[bn])
1996- let jv = valueOrErrorMessage(getString(bG(A)), "NFT duck is orphaned")
1997- let kt = z(A)
1998- let ku = getIntegerValue(kt)
1999- let kv = if ((cj >= 3))
1993+func ks (B,kt,iW) = {
1994+ let jr = split(valueOrElse(getString(bK(B)), aK), "_")
1995+ let ay = lastBlock.timestamp
1996+ let cj = parseIntValue(jr[bm])
1997+ let ck = parseIntValue(jr[bo])
1998+ let jw = valueOrErrorMessage(getString(bH(B)), "NFT duck is orphaned")
1999+ let ku = A(B)
2000+ let kv = getIntegerValue(ku)
2001+ let kw = if ((ck >= 3))
20002002 then {
2001- let kw = invoke(dc, "sendDeliveryReward", [jv], nil)
2002- if ((kw == kw))
2003+ let kx = invoke(dd, "sendDeliveryReward", [jw], nil)
2004+ if ((kx == kx))
20032005 then nil
20042006 else throw("Strict value is not equal to itself.")
20052007 }
2006- else if (if (if (ks)
2007- then (iV > 0)
2008+ else if (if (if (kt)
2009+ then (iW > 0)
20082010 else false)
2009- then (ax > (ci + aN))
2011+ then (ay > (cj + aO))
20102012 else false)
20112013 then throw("Your duck is still on delivery mission")
20122014 else {
2013- let kx = valueOrElse(getInteger(dc, bO), 0)
2014- let ky = invoke(dc, "updateDeliveryLocked", [(kx - aM)], nil)
2015- if ((ky == ky))
2016- then if ((0 >= ku))
2015+ let ky = valueOrElse(getInteger(dd, bP), 0)
2016+ let kz = invoke(dd, "updateDeliveryLocked", [(ky - aN)], nil)
2017+ if ((kz == kz))
2018+ then if ((0 >= kv))
20172019 then nil
2018- else [IntegerEntry(T(A), (ci + a))]
2020+ else [IntegerEntry(U(B), (cj + b))]
20192021 else throw("Strict value is not equal to itself.")
20202022 }
2021- let kz = getIntegerValue(J(A))
2022- let kA = getStringValue(K(A))
2023- $Tuple4(kv, [IntegerEntry(kt, kz), StringEntry(bJ(A), kA)], kA, kz)
2024- }
2025-
2026-
2027-func kB (kC,al,kD,c,kE,kF) = {
2028- let A = valueOrErrorMessage(getString(bH(c)), "You don't have a duck staked")
2029- if (kp(A))
2023+ let kA = getIntegerValue(K(B))
2024+ let kB = getStringValue(L(B))
2025+ $Tuple4(kw, [IntegerEntry(ku, kA), StringEntry(bK(B), kB)], kB, kA)
2026+ }
2027+
2028+
2029+func kC (kD,am,kE,d,kF,kG) = {
2030+ let B = valueOrErrorMessage(getString(bI(d)), "You don't have a duck staked")
2031+ if (kq(B))
20302032 then throw("mergeInternal_checkTournament")
2031- else if (kq(A))
2033+ else if (kr(B))
20322034 then throw("mergeInternal_checkDelivery")
20332035 else {
2034- func kG (eR,P) = {
2035- let js = value(assetInfo(fromBase58String(P)))
2036- let jt = br(P)
2037- let ju = valueOrErrorMessage(getInteger(jt), (("NFT " + js.name) + " is not staked"))
2038- let jv = valueOrErrorMessage(getString(bo(P)), (("NFT " + js.name) + " is orphaned"))
2039- if ((jv != c))
2040- then throw((aC + " is not yours"))
2036+ func kH (eS,Q) = {
2037+ let jt = value(assetInfo(fromBase58String(Q)))
2038+ let ju = bs(Q)
2039+ let jv = valueOrErrorMessage(getInteger(ju), (("NFT " + jt.name) + " is not staked"))
2040+ let jw = valueOrErrorMessage(getString(bp(Q)), (("NFT " + jt.name) + " is orphaned"))
2041+ if ((jw != d))
2042+ then throw((aD + " is not yours"))
20412043 else {
2042- let jw = split(js.description, "_")
2043- let dt = jw[dk]
2044- if (if ((eR._3 != ""))
2045- then (eR._3 != dt)
2044+ let jx = split(jt.description, "_")
2045+ let du = jx[dl]
2046+ if (if ((eS._3 != ""))
2047+ then (eS._3 != du)
20462048 else false)
20472049 then throw("Lands should be on the same continent to merge")
20482050 else {
2049- let dI = jw[di]
2050- let kH = eR._1
2051- let gK = valueOrErrorMessage(indexOf(kH, dI), "You haven't passed all the lands needed")
2052- let kI = (take(kH, gK) + drop(kH, (gK + 1)))
2053- let ji = dH(dI)
2054- let kJ = (eR._2 + valueOrElse(getInteger(bs(aE, P)), 0))
2055- let ia = valueOrElse(getInteger(by(P)), 0)
2056- let kK = {
2057- let cy = dI
2058- if (("S" == cy))
2051+ let dJ = jx[dj]
2052+ let kI = eS._1
2053+ let gL = valueOrErrorMessage(indexOf(kI, dJ), "You haven't passed all the lands needed")
2054+ let kJ = (take(kI, gL) + drop(kI, (gL + 1)))
2055+ let jj = dI(dJ)
2056+ let kK = (eS._2 + valueOrElse(getInteger(bt(aF, Q)), 0))
2057+ let ib = valueOrElse(getInteger(bz(Q)), 0)
2058+ let kL = {
2059+ let cz = dJ
2060+ if (("S" == cz))
20592061 then 3
2060- else if (("M" == cy))
2062+ else if (("M" == cz))
20612063 then 4
2062- else if (("L" == cy))
2064+ else if (("L" == cz))
20632065 then 5
2064- else if (("XL" == cy))
2066+ else if (("XL" == cz))
20652067 then 6
20662068 else throw("Only S, M, L, XL can merge")
20672069 }
2068- if ((ia != kK))
2070+ if ((ib != kL))
20692071 then throw("All lands should be maxed to merge")
20702072 else {
2071- let et = jw[dh]
2072- let gG = gM(jw[dj])
2073- let gQ = (lastBlock.timestamp - ju)
2074- if ((0 > gQ))
2075- then throw(((("Saved timestamp is in future, saved = " + toString(ju)) + ", current = ") + toString(lastBlock.timestamp)))
2073+ let eu = jx[di]
2074+ let gH = gN(jx[dk])
2075+ let gR = (lastBlock.timestamp - jv)
2076+ if ((0 > gR))
2077+ then throw(((("Saved timestamp is in future, saved = " + toString(jv)) + ", current = ") + toString(lastBlock.timestamp)))
20762078 else {
2077- let jy = jh(P, ji)
2078- let hZ = (ji / cF)
2079- let jG = gO(split(eR._4, "_"), gG, gQ, hZ, jy)
2080- let fb = gE(eR._6, gG, hZ, -1)
2081- let kL = gE(eR._10, gG, hZ, -1)
2082- let hu = gE(eR._9, gG, hZ, 1)
2083- let kM = eR._7
2084- let da = indexOf(kM, P)
2085- if (!(isDefined(da)))
2086- then throw(("Your staked lands don't contain " + P))
2079+ let jz = ji(Q, jj)
2080+ let ia = (jj / cG)
2081+ let jH = gP(split(eS._4, "_"), gH, gR, ia, jz)
2082+ let fc = gF(eS._6, gH, ia, -1)
2083+ let kM = gF(eS._10, gH, ia, -1)
2084+ let hv = gF(eS._9, gH, ia, 1)
2085+ let kN = eS._7
2086+ let db = indexOf(kN, Q)
2087+ if (!(isDefined(db)))
2088+ then throw(("Your staked lands don't contain " + Q))
20872089 else {
2088- let kN = bq(P)
2089- let kO = valueOrElse(getString(kN), "")
2090- $Tuple10(kI, kJ, dt, jG, ((((((((((((eR._5 :+ DeleteEntry(br(P))) :+ DeleteEntry(bu(aC, P, c))) :+ DeleteEntry(es(et))) :+ DeleteEntry(bo(P))) :+ DeleteEntry(by(P))) :+ DeleteEntry(eu(P, c))) :+ DeleteEntry(bs(aE, P))) :+ DeleteEntry(ev(et))) :+ DeleteEntry(bx(P))) :+ DeleteEntry(kN)) :+ Burn(fromBase58String(P), 1)) ++ (if ((kO != ""))
2091- then [DeleteEntry(eq(kO))]
2092- else nil)), fb, removeByIndex(kM, value(da)), (eR._8 + ji), hu, kL)
2090+ let kO = br(Q)
2091+ let kP = valueOrElse(getString(kO), "")
2092+ $Tuple10(kJ, kK, du, jH, ((((((((((((eS._5 :+ DeleteEntry(bs(Q))) :+ DeleteEntry(bv(aD, Q, d))) :+ DeleteEntry(et(eu))) :+ DeleteEntry(bp(Q))) :+ DeleteEntry(bz(Q))) :+ DeleteEntry(ev(Q, d))) :+ DeleteEntry(bt(aF, Q))) :+ DeleteEntry(ew(eu))) :+ DeleteEntry(by(Q))) :+ DeleteEntry(kO)) :+ Burn(fromBase58String(Q), 1)) ++ (if ((kP != ""))
2093+ then [DeleteEntry(er(kP))]
2094+ else nil)), fc, removeByIndex(kN, value(db)), (eS._8 + jj), hv, kM)
20932095 }
20942096 }
20952097 }
20962098 }
20972099 }
20982100 }
20992101
2100- let hL = bI(A)
2101- let io = hK(hL)
2102- let gF = split(valueOrElse(getString(dr()), "0_0_0_0_0_0"), "_")
2103- let kP = du(c)
2104- let kQ = getString(kP)
2105- let kR = if (isDefined(kQ))
2106- then split_51C(value(kQ), "_")
2102+ let hM = bJ(B)
2103+ let ip = hL(hM)
2104+ let gG = split(valueOrElse(getString(ds()), "0_0_0_0_0_0"), "_")
2105+ let kQ = dv(d)
2106+ let kR = getString(kQ)
2107+ let kS = if (isDefined(kR))
2108+ then split_51C(value(kR), "_")
21072109 else nil
2108- let kS = split(value(assetInfo(fromBase58String(kE[0]))).description, "_")[dk]
2109- let kT = split(valueOrElse(getString(ds(kS)), "0_0_0_0_0_0"), "_")
2110- let fc = {
2111- let eT = kE
2112- let eU = size(eT)
2113- let eV = $Tuple10(kD, 0, "", io[bi], nil, gF, kR, 0, split("0_0_0_0_0_0", "_"), kT)
2114- func eW (eX,eY) = if ((eY >= eU))
2115- then eX
2116- else kG(eX, eT[eY])
2117-
2118- func eZ (eX,eY) = if ((eY >= eU))
2119- then eX
2110+ let kT = split(value(assetInfo(fromBase58String(kF[0]))).description, "_")[dl]
2111+ let kU = split(valueOrElse(getString(dt(kT)), "0_0_0_0_0_0"), "_")
2112+ let fd = {
2113+ let eU = kF
2114+ let eV = size(eU)
2115+ let eW = $Tuple10(kE, 0, "", ip[bj], nil, gG, kS, 0, split("0_0_0_0_0_0", "_"), kU)
2116+ func eX (eY,eZ) = if ((eZ >= eV))
2117+ then eY
2118+ else kH(eY, eU[eZ])
2119+
2120+ func fa (eY,eZ) = if ((eZ >= eV))
2121+ then eY
21202122 else throw("List size exceeds 5")
21212123
2122- eZ(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5)
2124+ fa(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5)
21232125 }
2124- let dt = fc._3
2125- let ho = valueOrErrorMessage(indexOf(aP, dt), ("Unknown continent: " + dt))
2126- let gN = ht(fc._9, (dH(kC) / cF))
2127- let iM = valueOrElse(getInteger(ep()), (eo + 1))
2128- let kU = toString(iM)
2129- let iN = Issue(eG(kU, kC), makeString([kU, kC, gN, dt], "_"), 1, 0, false)
2130- let bp = calculateAssetId(iN)
2131- let kV = toBase58String(bp)
2132- let jS = makeString(fd((kF > 0), split(io[bj], "_"), kF), "_")
2133- let kW = dv(c)
2134- let kX = valueOrElse(getInteger(kW), 0)
2135- $Tuple2((((((((((((((((fc._5 :+ (if ((size(fc._7) > 0))
2136- then StringEntry(kP, makeString_11C(fc._7, "_"))
2137- else DeleteEntry(kP))) :+ IntegerEntry(kW, if ((fc._8 > kX))
2126+ let du = fd._3
2127+ let hp = valueOrErrorMessage(indexOf(aQ, du), ("Unknown continent: " + du))
2128+ let gO = hu(fd._9, (dI(kD) / cG))
2129+ let iN = valueOrElse(getInteger(eq()), (ep + 1))
2130+ let kV = toString(iN)
2131+ let iO = Issue(eH(kV, kD), makeString([kV, kD, gO, du], "_"), 1, 0, false)
2132+ let bq = calculateAssetId(iO)
2133+ let kW = toBase58String(bq)
2134+ let jT = makeString(fe((kG > 0), split(ip[bk], "_"), kG), "_")
2135+ let kX = dw(d)
2136+ let kY = valueOrElse(getInteger(kX), 0)
2137+ $Tuple2((((((((((((((((fd._5 :+ (if ((size(fd._7) > 0))
2138+ then StringEntry(kQ, makeString_11C(fd._7, "_"))
2139+ else DeleteEntry(kQ))) :+ IntegerEntry(kX, if ((fd._8 > kY))
21382140 then 0
2139- else (kX - fc._8))) :+ IntegerEntry(ep(), (iM + 1))) :+ iN) :+ StringEntry(es(kU), kV)) :+ StringEntry(bo(kV), c)) :+ StringEntry(ev(kU), c)) :+ IntegerEntry(bs(aE, kV), fc._2)) :+ IntegerEntry(by(kV), al)) :+ IntegerEntry(eu(kV, c), al)) :+ StringEntry(hL, makeString([io[bh], fc._4, jS, io[bk]], ":"))) :+ StringEntry(dr(), makeString(fc._6, "_"))) :+ StringEntry(ds(dt), makeString(fc._10, "_"))) :+ StringEntry(bJ(A), makeString([dt, "L", kV], "_"))) :+ ScriptTransfer(addressFromStringValue(c), 1, bp)), kV)
2141+ else (kY - fd._8))) :+ IntegerEntry(eq(), (iN + 1))) :+ iO) :+ StringEntry(et(kV), kW)) :+ StringEntry(bp(kW), d)) :+ StringEntry(ew(kV), d)) :+ IntegerEntry(bt(aF, kW), fd._2)) :+ IntegerEntry(bz(kW), am)) :+ IntegerEntry(ev(kW, d), am)) :+ StringEntry(hM, makeString([ip[bi], fd._4, jT, ip[bl]], ":"))) :+ StringEntry(ds(), makeString(fd._6, "_"))) :+ StringEntry(dt(du), makeString(fd._10, "_"))) :+ StringEntry(bK(B), makeString([du, "L", kW], "_"))) :+ ScriptTransfer(addressFromStringValue(d), 1, bq)), kW)
21402142 }
21412143 }
21422144
21432145
2144-func kY (c,kE) = kB("M", 3, "SSSS", c, kE, 0)
2145-
2146-
2147-func kZ (c,kE) = kB("L", 4, "SMM", c, kE, (cA * 4))
2148-
2149-
2150-func la (c,kE) = kB("XL", 5, "SSSML", c, kE, (cA * 47))
2151-
2152-
2153-func lb (c,kE) = kB("XXL", 6, "LXL", c, kE, (cA * 54))
2154-
2155-
2156-func lc (c,kE) = {
2157- let cy = size(kE)
2158- if ((4 == cy))
2159- then kY(c, kE)
2160- else if ((3 == cy))
2161- then kZ(c, kE)
2162- else if ((5 == cy))
2163- then la(c, kE)
2164- else if ((2 == cy))
2165- then lb(c, kE)
2146+func kZ (d,kF) = kC("M", 3, "SSSS", d, kF, 0)
2147+
2148+
2149+func la (d,kF) = kC("L", 4, "SMM", d, kF, (cB * 4))
2150+
2151+
2152+func lb (d,kF) = kC("XL", 5, "SSSML", d, kF, (cB * 47))
2153+
2154+
2155+func lc (d,kF) = kC("XXL", 6, "LXL", d, kF, (cB * 54))
2156+
2157+
2158+func ld (d,kF) = {
2159+ let cz = size(kF)
2160+ if ((4 == cz))
2161+ then kZ(d, kF)
2162+ else if ((3 == cz))
2163+ then la(d, kF)
2164+ else if ((5 == cz))
2165+ then lb(d, kF)
2166+ else if ((2 == cz))
2167+ then lc(d, kF)
21662168 else throw("Unknown merge")
21672169 }
21682170
21692171
2170-func ld (bL) = {
2171- let le = getString(bH(bL))
2172- if (if (cv)
2173- then isDefined(le)
2172+func le (bM) = {
2173+ let lf = getString(bI(bM))
2174+ if (if (cw)
2175+ then isDefined(lf)
21742176 else false)
21752177 then {
2176- let A = value(le)
2177- let lf = bJ(A)
2178- let cf = split(valueOrElse(getString(lf), aJ), "_")
2179- let ci = parseIntValue(cf[bl])
2180- if (if ((cf[bm] != "D"))
2178+ let B = value(lf)
2179+ let lg = bK(B)
2180+ let cg = split(valueOrElse(getString(lg), aK), "_")
2181+ let cj = parseIntValue(cg[bm])
2182+ if (if ((cg[bn] != "D"))
21812183 then true
2182- else (lastBlock.timestamp > (ci + aN)))
2184+ else (lastBlock.timestamp > (cj + aO)))
21832185 then nil
21842186 else {
2185- let kt = z(A)
2186- if ((parseIntValue(cf[bn]) >= 3))
2187+ let ku = A(B)
2188+ if ((parseIntValue(cg[bo]) >= 3))
21872189 then {
2188- let kw = invoke(dc, "sendDeliveryReward", [bL], nil)
2189- if ((kw == kw))
2190+ let kx = invoke(dd, "sendDeliveryReward", [bM], nil)
2191+ if ((kx == kx))
21902192 then nil
21912193 else throw("Strict value is not equal to itself.")
21922194 }
21932195 else (({
2194- let kx = valueOrElse(getInteger(dc, bO), 0)
2195- let ky = invoke(dc, "updateDeliveryLocked", [(kx - aM)], nil)
2196- if ((ky == ky))
2197- then if ((0 >= getIntegerValue(kt)))
2196+ let ky = valueOrElse(getInteger(dd, bP), 0)
2197+ let kz = invoke(dd, "updateDeliveryLocked", [(ky - aN)], nil)
2198+ if ((kz == kz))
2199+ then if ((0 >= getIntegerValue(ku)))
21982200 then nil
21992201 else {
2200- let lg = invoke(this, "saveInteger", [T(A), (ci + a)], nil)
2201- if ((lg == lg))
2202+ let lh = invoke(this, "saveInteger", [U(B), (cj + b)], nil)
2203+ if ((lh == lh))
22022204 then nil
22032205 else throw("Strict value is not equal to itself.")
22042206 }
22052207 else throw("Strict value is not equal to itself.")
2206- } :+ IntegerEntry(kt, getIntegerValue(J(A)))) :+ StringEntry(lf, getStringValue(K(A))))
2208+ } :+ IntegerEntry(ku, getIntegerValue(K(B)))) :+ StringEntry(lg, getStringValue(L(B))))
22072209 }
22082210 }
22092211 else nil
22102212 }
22112213
22122214
2213-func lh (gK) = if (if ((gK.originCaller != db))
2214- then valueOrElse(getBoolean(dK()), false)
2215+func li (gL) = if (if ((gL.originCaller != dc))
2216+ then valueOrElse(getBoolean(dL()), false)
22152217 else false)
22162218 then throw("Contracts are under maintenance")
22172219 else {
2218- let bL = toString(gK.originCaller)
2219- (ld(bL) :+ StringEntry(dL(bL), toBase58String(gK.transactionId)))
2220+ let bM = toString(gL.originCaller)
2221+ (le(bM) :+ StringEntry(dM(bM), toBase58String(gL.transactionId)))
22202222 }
22212223
22222224
2223-func li (gK) = if (if ((gK.originCaller != db))
2224- then valueOrElse(getBoolean(dK()), false)
2225+func lj (gL) = if (if ((gL.originCaller != dc))
2226+ then valueOrElse(getBoolean(dL()), false)
22252227 else false)
22262228 then throw("Contracts are under maintenance")
2227- else [StringEntry(dL(toString(gK.originCaller)), toBase58String(gK.transactionId))]
2228-
2229-
2230-@Callable(gK)
2231-func constructorV1 (lj) = if ((gK.caller != this))
2229+ else [StringEntry(dM(toString(gL.originCaller)), toBase58String(gL.transactionId))]
2230+
2231+
2232+@Callable(gL)
2233+func constructorV1 (lk) = if ((gL.caller != this))
22322234 then throw("Permission denied")
2233- else [StringEntry(cV(), lj)]
2234-
2235-
2236-
2237-@Callable(gK)
2238-func saveInteger (cN,eI) = if ((gK.caller != this))
2235+ else [StringEntry(cW(), lk)]
2236+
2237+
2238+
2239+@Callable(gL)
2240+func saveInteger (cO,eJ) = if ((gL.caller != this))
22392241 then throw("saveInteger is not public method")
2240- else [IntegerEntry(cN, eI)]
2241-
2242-
2243-
2244-@Callable(gK)
2245-func setBlocked (lk) = if ((gK.caller != this))
2242+ else [IntegerEntry(cO, eJ)]
2243+
2244+
2245+
2246+@Callable(gL)
2247+func setBlocked (ll) = if ((gL.caller != this))
22462248 then throw("permission denied")
2247- else [BooleanEntry(dK(), lk)]
2248-
2249-
2250-
2251-@Callable(gK)
2249+ else [BooleanEntry(dL(), ll)]
2250+
2251+
2252+
2253+@Callable(gL)
22522254 func stakeLand () = {
2253- let ll = lh(gK)
2254- if ((size(gK.payments) != 1))
2255+ let lm = li(gL)
2256+ if ((size(gL.payments) != 1))
22552257 then throw("Exactly one payment required")
22562258 else {
2257- let lm = value(gK.payments[0])
2258- let bp = value(lm.assetId)
2259- let cM = toString(gK.caller)
2260- if ((lm.amount != 1))
2261- then throw((("NFT " + aC) + " token should be attached as payment"))
2259+ let ln = value(gL.payments[0])
2260+ let bq = value(ln.assetId)
2261+ let cN = toString(gL.caller)
2262+ if ((ln.amount != 1))
2263+ then throw((("NFT " + aD) + " token should be attached as payment"))
22622264 else {
2263- let js = value(assetInfo(bp))
2264- if ((js.issuer != this))
2265+ let jt = value(assetInfo(bq))
2266+ if ((jt.issuer != this))
22652267 then throw("Unknown issuer of token")
2266- else if (!(contains(js.name, aC)))
2267- then throw((("Only NFT " + aC) + " tokens are accepted"))
2268+ else if (!(contains(jt.name, aD)))
2269+ then throw((("Only NFT " + aD) + " tokens are accepted"))
22682270 else {
2269- let ln = drop(js.name, 4)
2270- let et = if (contains(ln, "XXL"))
2271- then dropRight(ln, 3)
2272- else if (contains(ln, "XL"))
2273- then dropRight(ln, 2)
2274- else dropRight(ln, 1)
2275- if (!(isDefined(parseInt(et))))
2276- then throw(("Cannot parse land number from " + js.name))
2271+ let lo = drop(jt.name, 4)
2272+ let eu = if (contains(lo, "XXL"))
2273+ then dropRight(lo, 3)
2274+ else if (contains(lo, "XL"))
2275+ then dropRight(lo, 2)
2276+ else dropRight(lo, 1)
2277+ if (!(isDefined(parseInt(eu))))
2278+ then throw(("Cannot parse land number from " + jt.name))
22772279 else {
2278- let P = toBase58String(bp)
2279- let jt = br(P)
2280- if (isDefined(getInteger(jt)))
2281- then throw((("NFT " + js.name) + " is already staked"))
2280+ let Q = toBase58String(bq)
2281+ let ju = bs(Q)
2282+ if (isDefined(getInteger(ju)))
2283+ then throw((("NFT " + jt.name) + " is already staked"))
22822284 else {
2283- let jw = split(js.description, "_")
2284- let gG = gM(jw[dj])
2285- let ji = dH(jw[di])
2286- let hZ = (ji / cF)
2287- let fb = gL(gG, hZ, 1)
2288- let lo = ds(jw[dk])
2289- let kT = split(valueOrElse(getString(lo), "0_0_0_0_0_0"), "_")
2290- let lp = makeString(gE(kT, gG, hZ, 1), "_")
2291- let kP = du(cM)
2292- let kQ = getString(kP)
2293- let kM = if (isDefined(kQ))
2294- then split_51C(value(kQ), "_")
2285+ let jx = split(jt.description, "_")
2286+ let gH = gN(jx[dk])
2287+ let jj = dI(jx[dj])
2288+ let ia = (jj / cG)
2289+ let fc = gM(gH, ia, 1)
2290+ let lp = dt(jx[dl])
2291+ let kU = split(valueOrElse(getString(lp), "0_0_0_0_0_0"), "_")
2292+ let lq = makeString(gF(kU, gH, ia, 1), "_")
2293+ let kQ = dv(cN)
2294+ let kR = getString(kQ)
2295+ let kN = if (isDefined(kR))
2296+ then split_51C(value(kR), "_")
22952297 else nil
2296- if (containsElement(kM, P))
2297- then throw(("Your staked lands already contain " + P))
2298- else if ((size(kM) >= aG))
2299- then throw((("Your already staked max (" + toString(aG)) + ") lands"))
2298+ if (containsElement(kN, Q))
2299+ then throw(("Your staked lands already contain " + Q))
2300+ else if ((size(kN) >= aH))
2301+ then throw((("Your already staked max (" + toString(aH)) + ") lands"))
23002302 else {
2301- let ia = valueOrElse(getInteger(by(P)), 0)
2302- let kW = dv(cM)
2303- let lq = valueOrElse(getInteger(kW), 0)
2304- let lr = invoke(de, "onStakeUnstakeLand", [cM], nil)
2305- $Tuple2(([IntegerEntry(jt, lastBlock.timestamp), IntegerEntry(bu(aC, P, cM), lastBlock.timestamp), StringEntry(kP, makeString_11C((kM :+ P), "_")), IntegerEntry(kW, (lq + ji)), StringEntry(bo(P), cM), StringEntry(ev(et), cM), IntegerEntry(eu(P, cM), ia), StringEntry(dr(), fb), StringEntry(lo, lp)] ++ ll), lr)
2303+ let ib = valueOrElse(getInteger(bz(Q)), 0)
2304+ let kX = dw(cN)
2305+ let lr = valueOrElse(getInteger(kX), 0)
2306+ let ls = invoke(df, "onStakeUnstakeLand", [cN], nil)
2307+ $Tuple2(([IntegerEntry(ju, lastBlock.timestamp), IntegerEntry(bv(aD, Q, cN), lastBlock.timestamp), StringEntry(kQ, makeString_11C((kN :+ Q), "_")), IntegerEntry(kX, (lr + jj)), StringEntry(bp(Q), cN), StringEntry(ew(eu), cN), IntegerEntry(ev(Q, cN), ib), StringEntry(ds(), fc), StringEntry(lp, lq)] ++ lm), ls)
23062308 }
23072309 }
23082310 }
23092311 }
23102312 }
23112313 }
23122314 }
23132315
23142316
23152317
2316-@Callable(gK)
2317-func unstakeLand (jo) = {
2318- let ll = lh(gK)
2319- if ((size(gK.payments) != 0))
2318+@Callable(gL)
2319+func unstakeLand (jp) = {
2320+ let lm = li(gL)
2321+ if ((size(gL.payments) != 0))
23202322 then throw("No payments required")
23212323 else {
2322- let c = toString(gK.caller)
2323- let ga = jm(c, eA, jo)
2324- let P = ga._2
2325- let jw = ga._3
2326- let kP = du(c)
2327- let gG = gM(jw[dj])
2328- let ji = dH(jw[di])
2329- let hZ = (ji / cF)
2330- let fb = gL(gG, hZ, -1)
2331- let lo = ds(jw[dk])
2332- let kT = split(valueOrElse(getString(lo), "0_0_0_0_0_0"), "_")
2333- let lp = makeString(gE(kT, gG, hZ, -1), "_")
2334- let jT = jJ(c, P, ji, eA)
2335- let kM = split_51C(valueOrElse(getString(kP), ""), "_")
2336- let da = indexOf(kM, P)
2337- if (!(isDefined(da)))
2338- then throw(("Your staked lands don't contain " + P))
2324+ let d = toString(gL.caller)
2325+ let gb = jn(d, eB, jp)
2326+ let Q = gb._2
2327+ let jx = gb._3
2328+ let kQ = dv(d)
2329+ let gH = gN(jx[dk])
2330+ let jj = dI(jx[dj])
2331+ let ia = (jj / cG)
2332+ let fc = gM(gH, ia, -1)
2333+ let lp = dt(jx[dl])
2334+ let kU = split(valueOrElse(getString(lp), "0_0_0_0_0_0"), "_")
2335+ let lq = makeString(gF(kU, gH, ia, -1), "_")
2336+ let jU = jK(d, Q, jj, eB)
2337+ let kN = split_51C(valueOrElse(getString(kQ), ""), "_")
2338+ let db = indexOf(kN, Q)
2339+ if (!(isDefined(db)))
2340+ then throw(("Your staked lands don't contain " + Q))
23392341 else {
2340- let ax = lastBlock.timestamp
2341- let ls = valueOrElse(getInteger(dd, bK(c)), 0)
2342- if ((ls >= ax))
2343- then throw(("Your gWL are taking part in voting, cannot unstake until " + toString(ls)))
2342+ let ay = lastBlock.timestamp
2343+ let lt = valueOrElse(getInteger(de, bL(d)), 0)
2344+ if ((lt >= ay))
2345+ then throw(("Your gWL are taking part in voting, cannot unstake until " + toString(lt)))
23442346 else {
2345- let lt = (valueOrElse(getInteger(de, b(c)), 0) + cB)
2346- if ((lt > ax))
2347- then throw(("Your staked lands took part in arbitrage, cannot unstake until " + toString(lt)))
2347+ let lu = (valueOrElse(getInteger(df, c(d)), 0) + cC)
2348+ if ((lu > ay))
2349+ then throw(("Your staked lands took part in arbitrage, cannot unstake until " + toString(lu)))
23482350 else {
2349- let kW = dv(c)
2350- let kX = valueOrElse(getInteger(kW), 0)
2351- let lu = if ((ji > kX))
2351+ let kX = dw(d)
2352+ let kY = valueOrElse(getInteger(kX), 0)
2353+ let lv = if ((jj > kY))
23522354 then 0
2353- else (kX - ji)
2354- let lr = invoke(de, "onStakeUnstakeLand", [c], nil)
2355- $Tuple2(([ScriptTransfer(gK.caller, 1, fromBase58String(P)), DeleteEntry(br(P)), DeleteEntry(bu(aC, P, c)), StringEntry(dr(), fb), StringEntry(lo, lp), StringEntry(jT._2, makeString(jT._3, ":")), if ((size(kM) > 1))
2356- then StringEntry(kP, makeString_11C(removeByIndex(kM, value(da)), "_"))
2357- else DeleteEntry(kP), IntegerEntry(kW, lu)] ++ ll), lr)
2355+ else (kY - jj)
2356+ let ls = invoke(df, "onStakeUnstakeLand", [d], nil)
2357+ $Tuple2(([ScriptTransfer(gL.caller, 1, fromBase58String(Q)), DeleteEntry(bs(Q)), DeleteEntry(bv(aD, Q, d)), StringEntry(ds(), fc), StringEntry(lp, lq), StringEntry(jU._2, makeString(jU._3, ":")), if ((size(kN) > 1))
2358+ then StringEntry(kQ, makeString_11C(removeByIndex(kN, value(db)), "_"))
2359+ else DeleteEntry(kQ), IntegerEntry(kX, lv)] ++ lm), ls)
23582360 }
23592361 }
23602362 }
23612363 }
23622364 }
23632365
23642366
23652367
2366-@Callable(gK)
2368+@Callable(gL)
23672369 func stakeDuck () = {
2368- let ll = lh(gK)
2369- if ((size(gK.payments) != 1))
2370+ let lm = li(gL)
2371+ if ((size(gL.payments) != 1))
23702372 then throw("Exactly one payment required")
23712373 else {
2372- let lm = value(gK.payments[0])
2373- let bp = value(lm.assetId)
2374- let cM = toString(gK.caller)
2375- if ((lm.amount != 1))
2376- then throw((("NFT " + aD) + " token should be attached as payment"))
2374+ let ln = value(gL.payments[0])
2375+ let bq = value(ln.assetId)
2376+ let cN = toString(gL.caller)
2377+ if ((ln.amount != 1))
2378+ then throw((("NFT " + aE) + " token should be attached as payment"))
23772379 else {
2378- let js = value(assetInfo(bp))
2379- if (if ((js.issuer != dX))
2380- then (js.issuer != dY)
2380+ let jt = value(assetInfo(bq))
2381+ if (if ((jt.issuer != dY))
2382+ then (jt.issuer != dZ)
23812383 else false)
2382- then throw((("Unknown issuer of " + aD) + " token"))
2383- else if (!(contains(js.name, aD)))
2384- then throw((("Only NFT " + aD) + " tokens are accepted"))
2384+ then throw((("Unknown issuer of " + aE) + " token"))
2385+ else if (!(contains(jt.name, aE)))
2386+ then throw((("Only NFT " + aE) + " tokens are accepted"))
23852387 else {
2386- let lv = toBase58String(bp)
2387- let jt = br(lv)
2388- if (isDefined(getInteger(jt)))
2389- then throw((("NFT " + js.name) + " is already staked"))
2390- else if (isDefined(getString(bH(cM))))
2391- then throw(("You already staked one duck: " + js.name))
2388+ let lw = toBase58String(bq)
2389+ let ju = bs(lw)
2390+ if (isDefined(getInteger(ju)))
2391+ then throw((("NFT " + jt.name) + " is already staked"))
2392+ else if (isDefined(getString(bI(cN))))
2393+ then throw(("You already staked one duck: " + jt.name))
23922394 else {
2393- let lf = bJ(lv)
2394- let cd = getString(lf)
2395- let hL = bI(lv)
2396- let lw = getString(hL)
2397- let jb = z(lv)
2398- let jc = ag(valueOrElse(getInteger(D(lv)), 0))
2399- let ku = valueOrElse(getInteger(jb), jc)
2400- ([IntegerEntry(jt, lastBlock.timestamp), IntegerEntry(bu(aD, toBase58String(bp), cM), lastBlock.timestamp), StringEntry(bG(lv), cM), StringEntry(bH(cM), lv)] ++ (if (isDefined(cd))
2395+ let lg = bK(lw)
2396+ let ce = getString(lg)
2397+ let hM = bJ(lw)
2398+ let lx = getString(hM)
2399+ let jc = A(lw)
2400+ let jd = ah(valueOrElse(getInteger(E(lw)), 0))
2401+ let kv = valueOrElse(getInteger(jc), jd)
2402+ ([IntegerEntry(ju, lastBlock.timestamp), IntegerEntry(bv(aE, toBase58String(bq), cN), lastBlock.timestamp), StringEntry(bH(lw), cN), StringEntry(bI(cN), lw)] ++ (if (isDefined(ce))
24012403 then nil
2402- else ([StringEntry(lf, aJ)] ++ (if (isDefined(lw))
2404+ else ([StringEntry(lg, aK)] ++ (if (isDefined(lx))
24032405 then nil
2404- else (([StringEntry(hL, "0:0_0_0_0_0_0:0_0_0_0_0_0:")] :+ IntegerEntry(jb, ku)) ++ ll)))))
2406+ else (([StringEntry(hM, "0:0_0_0_0_0_0:0_0_0_0_0_0:")] :+ IntegerEntry(jc, kv)) ++ lm)))))
24052407 }
24062408 }
24072409 }
24082410 }
24092411 }
24102412
24112413
24122414
2413-@Callable(gK)
2414-func unstakeDuck (lv) = {
2415- let ll = lh(gK)
2416- if ((size(gK.payments) != 0))
2415+@Callable(gL)
2416+func unstakeDuck (lw) = {
2417+ let lm = li(gL)
2418+ if ((size(gL.payments) != 0))
24172419 then throw("No payments required")
24182420 else {
2419- let bp = fromBase58String(lv)
2420- let cM = toString(gK.caller)
2421- let js = value(assetInfo(bp))
2422- let jt = br(lv)
2423- if (!(isDefined(getInteger(jt))))
2424- then throw((("NFT " + js.name) + " is not staked"))
2425- else if (!(isDefined(getString(bH(cM)))))
2426- then throw((("The duck " + js.name) + " is not staked"))
2421+ let bq = fromBase58String(lw)
2422+ let cN = toString(gL.caller)
2423+ let jt = value(assetInfo(bq))
2424+ let ju = bs(lw)
2425+ if (!(isDefined(getInteger(ju))))
2426+ then throw((("NFT " + jt.name) + " is not staked"))
2427+ else if (!(isDefined(getString(bI(cN)))))
2428+ then throw((("The duck " + jt.name) + " is not staked"))
24272429 else {
2428- let jv = valueOrErrorMessage(getString(bG(lv)), (("NFT " + js.name) + " is orphaned"))
2429- if ((jv != cM))
2430+ let jw = valueOrErrorMessage(getString(bH(lw)), (("NFT " + jt.name) + " is orphaned"))
2431+ if ((jw != cN))
24302432 then throw("Staked NFT is not yours")
2431- else if (kp(lv))
2433+ else if (kq(lw))
24322434 then throw("unstakeDuck_checkTournament")
2433- else if (kq(lv))
2435+ else if (kr(lw))
24342436 then throw("unstakeDuck_checkDelivery")
24352437 else {
2436- let jb = z(lv)
2437- let jc = ag(valueOrElse(getInteger(D(lv)), 0))
2438- let as = valueOrElse(getInteger(jb), jc)
2439- if ((jc > as))
2440- then throw((("Please heal your duck to " + toString(jc)) + "hp before unstaking"))
2441- else ([ScriptTransfer(gK.caller, 1, bp), DeleteEntry(jt), DeleteEntry(jb), DeleteEntry(bJ(lv)), DeleteEntry(bG(lv)), DeleteEntry(bu(aD, lv, cM)), DeleteEntry(bH(cM))] ++ ll)
2438+ let jc = A(lw)
2439+ let jd = ah(valueOrElse(getInteger(E(lw)), 0))
2440+ let at = valueOrElse(getInteger(jc), jd)
2441+ if ((jd > at))
2442+ then throw((("Please heal your duck to " + toString(jd)) + "hp before unstaking"))
2443+ else ([ScriptTransfer(gL.caller, 1, bq), DeleteEntry(ju), DeleteEntry(jc), DeleteEntry(bK(lw)), DeleteEntry(bH(lw)), DeleteEntry(bv(aE, lw, cN)), DeleteEntry(bI(cN))] ++ lm)
24422444 }
24432445 }
24442446 }
24452447 }
24462448
24472449
24482450
2449-@Callable(gK)
2450-func claimRes (eI,lx) = {
2451- let ll = lh(gK)
2452- if ((size(gK.payments) != 0))
2451+@Callable(gL)
2452+func claimRes (eJ,ly) = {
2453+ let lm = li(gL)
2454+ if ((size(gL.payments) != 0))
24532455 then throw("No payments required")
24542456 else {
2455- let c = toString(gK.originCaller)
2456- let fj = jx(c, eI, eA, lx)
2457- let A = valueOrErrorMessage(getString(bH(c)), "You don't have a duck staked")
2458- $Tuple2(((((fj._1 ++ jZ(A, fraction(U, eI, cE))._1) :+ StringEntry(fj._2, makeString(fj._3, ":"))) :+ StringEntry(fj._4, makeString(fj._5, ":"))) ++ ll), fj._3[bi])
2459- }
2460- }
2461-
2462-
2463-
2464-@Callable(gK)
2465-func claimResToWH (eI,lx) = {
2466- let ll = lh(gK)
2467- if ((size(gK.payments) != 0))
2457+ let d = toString(gL.originCaller)
2458+ let fk = jy(d, eJ, eB, ly)
2459+ let B = valueOrErrorMessage(getString(bI(d)), "You don't have a duck staked")
2460+ $Tuple2(((((fk._1 ++ ka(B, fraction(V, eJ, cF))._1) :+ StringEntry(fk._2, makeString(fk._3, ":"))) :+ StringEntry(fk._4, makeString(fk._5, ":"))) ++ lm), fk._3[bj])
2461+ }
2462+ }
2463+
2464+
2465+
2466+@Callable(gL)
2467+func claimResToWH (eJ,ly) = {
2468+ let lm = li(gL)
2469+ if ((size(gL.payments) != 0))
24682470 then throw("No payments required")
24692471 else {
2470- let c = toString(gK.originCaller)
2471- let fj = jx(c, eI, ez, lx)
2472- $Tuple2(((((fj._1 ++ kf(c, fraction(U, eI, cE))._1) :+ StringEntry(fj._2, makeString(fj._3, ":"))) :+ StringEntry(fj._4, makeString(fj._5, ":"))) ++ ll), fj._5[aZ])
2473- }
2474- }
2475-
2476-
2477-
2478-@Callable(gK)
2479-func flight (iQ,iR) = {
2480- let ll = li(gK)
2481- if ((size(gK.payments) != 0))
2472+ let d = toString(gL.originCaller)
2473+ let fk = jy(d, eJ, eA, ly)
2474+ $Tuple2(((((fk._1 ++ kg(d, fraction(V, eJ, cF))._1) :+ StringEntry(fk._2, makeString(fk._3, ":"))) :+ StringEntry(fk._4, makeString(fk._5, ":"))) ++ lm), fk._5[ba])
2475+ }
2476+ }
2477+
2478+
2479+
2480+@Callable(gL)
2481+func flight (iR,iS) = {
2482+ let lm = lj(gL)
2483+ if ((size(gL.payments) != 0))
24822484 then throw("No payments required")
24832485 else {
2484- let bL = toString(gK.caller)
2485- let hp = iP(bL, iQ, iR)
2486- let iV = hp._1
2487- let A = hp._2
2488- let lf = bJ(A)
2489- let jq = valueOrElse(getString(lf), aJ)
2490- let iX = hp._4
2491- if ((iX == jq))
2486+ let bM = toString(gL.caller)
2487+ let hq = iQ(bM, iR, iS)
2488+ let iW = hq._1
2489+ let B = hq._2
2490+ let lg = bK(B)
2491+ let jr = valueOrElse(getString(lg), aK)
2492+ let iY = hq._4
2493+ if ((iY == jr))
24922494 then throw("You can't fly to the same location")
24932495 else {
2494- let cr = split(iX, "_")
2495- let ly = (cr[bm] == "T")
2496- let lz = (cr[bm] == "D")
2497- let gx = F(A)
2498- let lA = valueOrElse(getString(gx), ",;,_,;,_,;,_,;,_,;,_,;,")
2499- let lB = fk(lA, hp._5)
2500- let lC = lB._1
2501- let lD = lB._2
2502- let lE = if (!(cm(df, jq)))
2503- then if (!(ck(iX)))
2504- then cp(jq, iX, 5)
2505- else if ((iV > 0))
2506- then $Tuple2(iX, iV)
2507- else $Tuple2(jq, 0)
2508- else if (cc(df, jq))
2509- then if (!(cc(df, iX)))
2496+ let cs = split(iY, "_")
2497+ let lz = (cs[bn] == "T")
2498+ let lA = (cs[bn] == "D")
2499+ let gy = G(B)
2500+ let lB = valueOrElse(getString(gy), ",;,_,;,_,;,_,;,_,;,_,;,")
2501+ let lC = fl(lB, hq._5)
2502+ let lD = lC._1
2503+ let lE = lC._2
2504+ let lF = if (!(cn(dg, jr)))
2505+ then if (!(cl(iY)))
2506+ then cq(jr, iY, 5)
2507+ else if ((iW > 0))
2508+ then $Tuple2(iY, iW)
2509+ else $Tuple2(jr, 0)
2510+ else if (cd(dg, jr))
2511+ then if (!(cd(dg, iY)))
25102512 then throw("Your duck is taking part in the tournament")
25112513 else {
2512- let lF = parseIntValue(cr[bn])
2513- let lG = split(jq, "_")
2514- let ce = valueOrElse(getInteger(df, bP), 0)
2515- if ((lF != (parseIntValue(lG[bn]) + 1)))
2516- then cp(jq, iX, 7)
2517- else if ((iV > 0))
2514+ let lG = parseIntValue(cs[bo])
2515+ let lH = split(jr, "_")
2516+ let cf = valueOrElse(getInteger(dg, bQ), 0)
2517+ if ((lG != (parseIntValue(lH[bo]) + 1)))
2518+ then cq(jr, iY, 7)
2519+ else if ((iW > 0))
25182520 then {
2519- let lH = valueOrElse(getInteger(df, bT(ce, A)), 0)
2520- let lI = if ((lF > lH))
2521- then invoke(df, "saveDuckResult", [A, lF], nil)
2521+ let lI = valueOrElse(getInteger(dg, bU(cf, B)), 0)
2522+ let lJ = if ((lG > lI))
2523+ then invoke(dg, "saveDuckResult", [B, lG], nil)
25222524 else unit
2523- if ((lI == lI))
2524- then $Tuple2(iX, iV)
2525+ if ((lJ == lJ))
2526+ then $Tuple2(iY, iW)
25252527 else throw("Strict value is not equal to itself.")
25262528 }
2527- else $Tuple2(jq, 0)
2529+ else $Tuple2(jr, 0)
25282530 }
2529- else if (!(ch(jq)))
2531+ else if (!(ci(jr)))
25302532 then {
2531- let lJ = dE(invoke(this, "autoExitDelivery", [A, iV], nil))
2532- if ((lJ == lJ))
2533- then if (lz)
2534- then lJ
2535- else if ((iV > 0))
2536- then $Tuple2(iX, iV)
2537- else $Tuple2(lJ._1, 0)
2533+ let lK = dF(invoke(this, "autoExitDelivery", [B, iW], nil))
2534+ if ((lK == lK))
2535+ then if (lA)
2536+ then lK
2537+ else if ((iW > 0))
2538+ then $Tuple2(iY, iW)
2539+ else $Tuple2(lK._1, 0)
25382540 else throw("Strict value is not equal to itself.")
25392541 }
2540- else if (!(lz))
2542+ else if (!(lA))
25412543 then throw("Your duck is taking part in delivery")
2542- else if (!(ch(iX)))
2543- then cp(jq, iX, 13)
2544+ else if (!(ci(iY)))
2545+ then cq(jr, iY, 13)
25442546 else {
2545- let lF = parseIntValue(cr[bn])
2546- let lG = split(jq, "_")
2547- if ((lF != (parseIntValue(lG[bn]) + 1)))
2548- then cp(jq, iX, 14)
2549- else if (if ((iV > 0))
2550- then (3 > lF)
2547+ let lG = parseIntValue(cs[bo])
2548+ let lH = split(jr, "_")
2549+ if ((lG != (parseIntValue(lH[bo]) + 1)))
2550+ then cq(jr, iY, 14)
2551+ else if (if ((iW > 0))
2552+ then (3 > lG)
25512553 else false)
2552- then $Tuple2(iX, iV)
2554+ then $Tuple2(iY, iW)
25532555 else {
2554- let lJ = dE(invoke(this, "autoExitDelivery", [A, iV], nil))
2555- if ((lJ == lJ))
2556- then lJ
2556+ let lK = dF(invoke(this, "autoExitDelivery", [B, iW], nil))
2557+ if ((lK == lK))
2558+ then lK
25572559 else throw("Strict value is not equal to itself.")
25582560 }
25592561 }
2560- let lK = lE._1
2561- let lL = lE._2
2562- $Tuple2(((([StringEntry(lf, lK), StringEntry(gx, lC), IntegerEntry(z(A), iV)] ++ ll) ++ (if (lD)
2563- then [StringEntry(L(A), "0_0_0_0_0")]
2564- else nil)) ++ jZ(A, if ((iV > 0))
2565- then V
2566- else W)._1), hp._3)
2562+ let lL = lF._1
2563+ let lM = lF._2
2564+ $Tuple2(((([StringEntry(lg, lL), StringEntry(gy, lD), IntegerEntry(A(B), iW)] ++ lm) ++ (if (lE)
2565+ then [StringEntry(M(B), "0_0_0_0_0")]
2566+ else nil)) ++ ka(B, if ((iW > 0))
2567+ then W
2568+ else X)._1), hq._3)
25672569 }
25682570 }
25692571 }
25702572
25712573
25722574
2573-@Callable(gK)
2574-func heal (lM,lN,lO) = {
2575- let ll = lh(gK)
2576- if (if (if ((0 > lM))
2577- then true
2578- else (0 > lN))
2575+@Callable(gL)
2576+func heal (lN,lO,lP) = {
2577+ let lm = li(gL)
2578+ if (if (if ((0 > lN))
25792579 then true
25802580 else (0 > lO))
2581+ then true
2582+ else (0 > lP))
25812583 then throw("Quantity cannot be negative")
25822584 else {
2583- let A = valueOrErrorMessage(getString(bH(toString(gK.caller))), "You don't have a duck staked")
2584- if (kp(A))
2585+ let B = valueOrErrorMessage(getString(bI(toString(gL.caller))), "You don't have a duck staked")
2586+ if (kq(B))
25852587 then throw("heal_checkTournament")
2586- else if (kq(A))
2588+ else if (kr(B))
25872589 then throw("heal_checkDelivery")
25882590 else {
2589- let lP = [lM, lN, lO]
2590- let jb = z(A)
2591- let jc = ag(valueOrElse(getInteger(D(A)), 0))
2592- let lQ = valueOrElse(getInteger(jb), jc)
2593- if ((lQ >= jc))
2594- then throw((("HP should be < " + toString(jc)) + " to heal"))
2591+ let lQ = [lN, lO, lP]
2592+ let jc = A(B)
2593+ let jd = ah(valueOrElse(getInteger(E(B)), 0))
2594+ let lR = valueOrElse(getInteger(jc), jd)
2595+ if ((lR >= jd))
2596+ then throw((("HP should be < " + toString(jd)) + " to heal"))
25952597 else {
2596- let hL = bI(A)
2597- let io = hK(hL)
2598- let lR = if ((io[bk] == ""))
2598+ let hM = bJ(B)
2599+ let ip = hL(hM)
2600+ let lS = if ((ip[bl] == ""))
25992601 then nil
2600- else split_4C(io[bk], "_")
2601- func lS (eR,co) = {
2602- let dA = eR._2
2603- let hg = if ((size(lR) > dA))
2604- then parseIntValue(lR[dA])
2602+ else split_4C(ip[bl], "_")
2603+ func lT (eS,cp) = {
2604+ let dB = eS._2
2605+ let hh = if ((size(lS) > dB))
2606+ then parseIntValue(lS[dB])
26052607 else 0
2606- if ((3 > dA))
2608+ if ((3 > dB))
26072609 then {
2608- let lT = lP[dA]
2609- if ((lT > hg))
2610- then throw(((("You have only " + toString(hg)) + " of ") + aO[dA]))
2611- else $Tuple3((eR._1 :+ toString((hg - lT))), (dA + 1), (eR._3 + (parseIntValue(split(co, "_")[aU]) * lT)))
2610+ let lU = lQ[dB]
2611+ if ((lU > hh))
2612+ then throw(((("You have only " + toString(hh)) + " of ") + aP[dB]))
2613+ else $Tuple3((eS._1 :+ toString((hh - lU))), (dB + 1), (eS._3 + (parseIntValue(split(cp, "_")[aV]) * lU)))
26122614 }
2613- else $Tuple3((eR._1 :+ toString(hg)), (dA + 1), eR._3)
2615+ else $Tuple3((eS._1 :+ toString(hh)), (dB + 1), eS._3)
26142616 }
26152617
2616- let fj = {
2617- let eT = aS
2618- let eU = size(eT)
2619- let eV = $Tuple3(nil, 0, 0)
2620- func eW (eX,eY) = if ((eY >= eU))
2621- then eX
2622- else lS(eX, eT[eY])
2623-
2624- func eZ (eX,eY) = if ((eY >= eU))
2625- then eX
2618+ let fk = {
2619+ let eU = aT
2620+ let eV = size(eU)
2621+ let eW = $Tuple3(nil, 0, 0)
2622+ func eX (eY,eZ) = if ((eZ >= eV))
2623+ then eY
2624+ else lT(eY, eU[eZ])
2625+
2626+ func fa (eY,eZ) = if ((eZ >= eV))
2627+ then eY
26262628 else throw("List size exceeds 50")
26272629
2628- eZ(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eV, 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)
2630+ fa(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eW, 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)
26292631 }
2630- let lU = min([jc, (lQ + fj._3)])
2631- $Tuple2((([IntegerEntry(jb, lU), StringEntry(hL, makeString_2C([io[bh], io[bi], io[bj], makeString(fj._1, "_")], ":"))] ++ ll) ++ jZ(A, (ad * ((lM + lN) + lO)))._1), lU)
2632+ let lV = min([jd, (lR + fk._3)])
2633+ $Tuple2((([IntegerEntry(jc, lV), StringEntry(hM, makeString_2C([ip[bi], ip[bj], ip[bk], makeString(fk._1, "_")], ":"))] ++ lm) ++ ka(B, (ae * ((lN + lO) + lP)))._1), lV)
26322634 }
26332635 }
26342636 }
26352637 }
26362638
26372639
26382640
2639-@Callable(gK)
2641+@Callable(gL)
26402642 func healES () = {
2641- let ll = lh(gK)
2642- if ((size(gK.payments) != 1))
2643+ let lm = li(gL)
2644+ if ((size(gL.payments) != 1))
26432645 then throw("Exactly one payment required")
26442646 else {
2645- let lm = value(gK.payments[0])
2646- if ((lm.assetId != cx))
2647+ let ln = value(gL.payments[0])
2648+ if ((ln.assetId != cy))
26472649 then throw("Allowed USDT payment only!")
26482650 else {
2649- let A = valueOrErrorMessage(getString(bH(toString(gK.caller))), "You don't have a duck staked")
2650- if (kp(A))
2651+ let B = valueOrErrorMessage(getString(bI(toString(gL.caller))), "You don't have a duck staked")
2652+ if (kq(B))
26512653 then throw("healES_checkTournament")
2652- else if (kq(A))
2654+ else if (kr(B))
26532655 then throw("healES_checkDelivery")
26542656 else {
2655- let jb = z(A)
2656- let jc = ag(valueOrElse(getInteger(D(A)), 0))
2657- let lQ = valueOrElse(getInteger(jb), jc)
2658- if ((lQ > 0))
2657+ let jc = A(B)
2658+ let jd = ah(valueOrElse(getInteger(E(B)), 0))
2659+ let lR = valueOrElse(getInteger(jc), jd)
2660+ if ((lR > 0))
26592661 then throw("HP should be 0 to call Emergency Service")
26602662 else {
2661- let hL = bI(A)
2662- let io = hK(hL)
2663- let lR = if ((io[bk] == ""))
2663+ let hM = bJ(B)
2664+ let ip = hL(hM)
2665+ let lS = if ((ip[bl] == ""))
26642666 then nil
2665- else split_4C(io[bk], "_")
2666- let lV = if ((size(lR) > 0))
2667- then parseIntValue(lR[0])
2667+ else split_4C(ip[bl], "_")
2668+ let lW = if ((size(lS) > 0))
2669+ then parseIntValue(lS[0])
26682670 else 0
2669- let lW = if ((size(lR) > 1))
2670- then parseIntValue(lR[1])
2671+ let lX = if ((size(lS) > 1))
2672+ then parseIntValue(lS[1])
26712673 else 0
2672- let lX = if ((size(lR) > 2))
2673- then parseIntValue(lR[2])
2674+ let lY = if ((size(lS) > 2))
2675+ then parseIntValue(lS[2])
26742676 else 0
2675- if (if (if ((lV > 0))
2676- then true
2677- else (lW > 0))
2677+ if (if (if ((lW > 0))
26782678 then true
26792679 else (lX > 0))
2680+ then true
2681+ else (lY > 0))
26802682 then throw("You have to use own Medical Kit")
26812683 else {
2682- let lY = getString(dc, bM())
2683- let lZ = if (isDefined(lY))
2684- then split_4C(value(lY), "_")
2684+ let lZ = getString(dd, bN())
2685+ let ma = if (isDefined(lZ))
2686+ then split_4C(value(lZ), "_")
26852687 else nil
2686- let ma = if ((size(lZ) > 0))
2687- then parseIntValue(lZ[0])
2688+ let mb = if ((size(ma) > 0))
2689+ then parseIntValue(ma[0])
26882690 else 0
2689- if ((0 >= ma))
2691+ if ((0 >= mb))
26902692 then throw("There are no Medical Kits L1 at Emergency Service storage")
26912693 else {
2692- let lU = (lQ + parseIntValue(split(aS[0], "_")[aU]))
2693- let mb = makeString([toString((ma - 1)), removeByIndex(lZ, 0)], "_")
2694- let co = split(aS[0], "_")
2695- let mc = cn(co)
2696- let md = fraction((mc * aL), aK, (cE * aX))
2697- if ((lm.amount != md))
2698- then throw(("Payment attached should be " + toString(md)))
2694+ let lV = (lR + parseIntValue(split(aT[0], "_")[aV]))
2695+ let mc = makeString([toString((mb - 1)), removeByIndex(ma, 0)], "_")
2696+ let cp = split(aT[0], "_")
2697+ let md = co(cp)
2698+ let me = fraction((md * aM), aL, (cF * aY))
2699+ if ((ln.amount != me))
2700+ then throw(("Payment attached should be " + toString(me)))
26992701 else {
2700- let fj = dw(invoke(dc, "updateEsStorage", [mb], [AttachedPayment(cx, md)]))
2701- $Tuple2(((ll :+ IntegerEntry(jb, lU)) ++ jZ(A, X)._1), fj)
2702+ let fk = dx(invoke(dd, "updateEsStorage", [mc], [AttachedPayment(cy, me)]))
2703+ $Tuple2(((lm :+ IntegerEntry(jc, lV)) ++ ka(B, Y)._1), fk)
27022704 }
27032705 }
27042706 }
27052707 }
27062708 }
27072709 }
27082710 }
27092711 }
27102712
27112713
27122714
2713-@Callable(gK)
2714-func updateBackpack (A,me) = if ((gK.caller != dc))
2715+@Callable(gL)
2716+func updateBackpack (B,mf) = if ((gL.caller != dd))
27152717 then throw("permission denied")
2716- else $Tuple2([StringEntry(bI(A), me)], me)
2717-
2718-
2719-
2720-@Callable(gK)
2718+ else $Tuple2([StringEntry(bJ(B), mf)], mf)
2719+
2720+
2721+
2722+@Callable(gL)
27212723 func commitForRandom () = {
2722- let ll = lh(gK)
2723- let mf = (height + dp)
2724- let c = toString(gK.caller)
2725- $Tuple2(([IntegerEntry(dq(c), mf)] ++ ll), mf)
2726- }
2727-
2728-
2729-
2730-@Callable(gK)
2724+ let lm = li(gL)
2725+ let mg = (height + dq)
2726+ let d = toString(gL.caller)
2727+ $Tuple2(([IntegerEntry(dr(d), mg)] ++ lm), mg)
2728+ }
2729+
2730+
2731+
2732+@Callable(gL)
27312733 func buySLand () = {
2732- let ll = lh(gK)
2733- if ((size(gK.payments) != 1))
2734+ let lm = li(gL)
2735+ if ((size(gL.payments) != 1))
27342736 then throw("Exactly one payment required")
27352737 else {
2736- let lm = value(gK.payments[0])
2737- if ((lm.assetId != cx))
2738+ let ln = value(gL.payments[0])
2739+ if ((ln.assetId != cy))
27382740 then throw("Allowed USDT payment only!")
2739- else if ((lm.amount != eg))
2740- then throw(("Payment attached should be " + toString(eg)))
2741+ else if ((ln.amount != eh))
2742+ then throw(("Payment attached should be " + toString(eh)))
27412743 else {
2742- let fj = iI(gK.caller, gK.transactionId)
2743- let mg = dz(invoke(dg, "burnAcres", [eh], nil))
2744- $Tuple2((((fj._1 :+ ScriptTransfer(dc, lm.amount, cx)) ++ kf(toString(gK.caller), Z)._1) ++ ll), $Tuple2(fj._2._1, mg))
2744+ let fk = iJ(gL.caller, gL.transactionId)
2745+ let mh = dA(invoke(dh, "burnAcres", [ei], nil))
2746+ $Tuple2((((fk._1 :+ ScriptTransfer(dd, ln.amount, cy)) ++ kg(toString(gL.caller), aa)._1) ++ lm), $Tuple2(fk._2._1, mh))
27452747 }
27462748 }
27472749 }
27482750
27492751
27502752
2751-@Callable(gK)
2752-func expedition (iQ,iR) = {
2753- let ll = lh(gK)
2754- if ((size(gK.payments) != 0))
2753+@Callable(gL)
2754+func expedition (iR,iS) = {
2755+ let lm = li(gL)
2756+ if ((size(gL.payments) != 0))
27552757 then throw("No payments required")
27562758 else {
2757- let bL = toString(gK.caller)
2758- let hp = iP(bL, iQ, iR)
2759- let A = hp._2
2760- let jb = z(A)
2761- let hL = bI(A)
2762- let io = hK(hL)
2763- let jQ = split(io[bj], "_")
2764- let jS = makeString(fd(true, jQ, ef), "_")
2765- let gx = F(A)
2766- let lA = valueOrElse(getString(gx), ",;,_,;,_,;,_,;,_,;,_,;,")
2767- let mh = fk(lA, hp._5)
2768- let lC = mh._1
2769- let lD = mh._2
2770- let mi = iI(gK.caller, gK.transactionId)
2771- let iO = mi._2._1
2772- let fj = if ((0 >= hp._1))
2773- then $Tuple3([IntegerEntry(jb, 0), StringEntry(gx, lC)], "", 0)
2774- else $Tuple3((mi._1 ++ (if (lD)
2775- then [StringEntry(L(A), "0_0_0_0_0")]
2776- else ((((nil :+ StringEntry(bJ(A), makeString([mi._2._2, "L", iO], "_"))) :+ IntegerEntry(jb, hp._1)) :+ StringEntry(gx, lC)) :+ StringEntry(hL, makeString([io[bh], io[bi], jS, io[bk]], ":"))))), iO, hp._3)
2777- if (kp(A))
2759+ let bM = toString(gL.caller)
2760+ let hq = iQ(bM, iR, iS)
2761+ let B = hq._2
2762+ let jc = A(B)
2763+ let hM = bJ(B)
2764+ let ip = hL(hM)
2765+ let jR = split(ip[bk], "_")
2766+ let jT = makeString(fe(true, jR, eg), "_")
2767+ let gy = G(B)
2768+ let lB = valueOrElse(getString(gy), ",;,_,;,_,;,_,;,_,;,_,;,")
2769+ let mi = fl(lB, hq._5)
2770+ let lD = mi._1
2771+ let lE = mi._2
2772+ let mj = iJ(gL.caller, gL.transactionId)
2773+ let iP = mj._2._1
2774+ let fk = if ((0 >= hq._1))
2775+ then $Tuple3([IntegerEntry(jc, 0), StringEntry(gy, lD)], "", 0)
2776+ else $Tuple3((mj._1 ++ (if (lE)
2777+ then [StringEntry(M(B), "0_0_0_0_0")]
2778+ else ((((nil :+ StringEntry(bK(B), makeString([mj._2._2, "L", iP], "_"))) :+ IntegerEntry(jc, hq._1)) :+ StringEntry(gy, lD)) :+ StringEntry(hM, makeString([ip[bi], ip[bj], jT, ip[bl]], ":"))))), iP, hq._3)
2779+ if (kq(B))
27782780 then throw("expedition_checkTournament")
2779- else if (kq(A))
2781+ else if (kr(B))
27802782 then throw("expedition_checkDelivery")
27812783 else {
2782- let mg = dz(invoke(dg, "burnAcres", [eh], nil))
2783- $Tuple2(((fj._1 ++ jZ(A, Z)._1) ++ ll), $Tuple3(fj._2, fj._3, mg))
2784+ let mh = dA(invoke(dh, "burnAcres", [ei], nil))
2785+ $Tuple2(((fk._1 ++ ka(B, aa)._1) ++ lm), $Tuple3(fk._2, fk._3, mh))
27842786 }
27852787 }
27862788 }
27872789
27882790
27892791
2790-@Callable(gK)
2792+@Callable(gL)
27912793 func buySLandForAcres () = {
2792- let ll = lh(gK)
2793- if ((size(gK.payments) != 1))
2794+ let lm = li(gL)
2795+ if ((size(gL.payments) != 1))
27942796 then throw("exactly 1 payment must be attached")
27952797 else {
2796- let lm = gK.payments[0]
2797- let fq = lm.amount
2798- if (if (!(isDefined(lm.assetId)))
2798+ let ln = gL.payments[0]
2799+ let fr = ln.amount
2800+ if (if (!(isDefined(ln.assetId)))
27992801 then true
2800- else (value(lm.assetId) != do))
2802+ else (value(ln.assetId) != dp))
28012803 then throw("ACRES payments only!")
2802- else if ((fq != eh))
2803- then throw(("Payment attached should be " + toString(eh)))
2804+ else if ((fr != ei))
2805+ then throw(("Payment attached should be " + toString(ei)))
28042806 else {
2805- let fj = iI(gK.caller, gK.transactionId)
2806- let mg = dz(invoke(dg, "burnAcres", [eh], [AttachedPayment(do, fq)]))
2807- $Tuple2(((fj._1 ++ kf(toString(gK.caller), Z)._1) ++ ll), $Tuple2(fj._2._1, mg))
2807+ let fk = iJ(gL.caller, gL.transactionId)
2808+ let mh = dA(invoke(dh, "burnAcres", [ei], [AttachedPayment(dp, fr)]))
2809+ $Tuple2(((fk._1 ++ kg(toString(gL.caller), aa)._1) ++ lm), $Tuple2(fk._2._1, mh))
28082810 }
28092811 }
28102812 }
28112813
28122814
28132815
2814-@Callable(gK)
2815-func upgradeInfra (P) = {
2816- let ll = lh(gK)
2817- if ((size(gK.payments) != 0))
2816+@Callable(gL)
2817+func upgradeInfra (Q) = {
2818+ let lm = li(gL)
2819+ if ((size(gL.payments) != 0))
28182820 then throw("No payments required")
28192821 else {
2820- let fj = jK(true, gK.caller, 0, P)
2821- let A = valueOrErrorMessage(getString(bH(toString(gK.caller))), "You don't have a duck staked")
2822- $Tuple2(((fj._1 ++ ll) ++ jZ(A, fraction(aa, fj._3, cE))._1), fj._2)
2823- }
2824- }
2825-
2826-
2827-
2828-@Callable(gK)
2829-func activateArtifact (mj,mk) = {
2830- let ll = lh(gK)
2831- if ((size(gK.payments) != 0))
2822+ let fk = jL(true, gL.caller, 0, Q)
2823+ let B = valueOrErrorMessage(getString(bI(toString(gL.caller))), "You don't have a duck staked")
2824+ $Tuple2(((fk._1 ++ lm) ++ ka(B, fraction(ab, fk._3, cF))._1), fk._2)
2825+ }
2826+ }
2827+
2828+
2829+
2830+@Callable(gL)
2831+func activateArtifact (mk,ml) = {
2832+ let lm = li(gL)
2833+ if ((size(gL.payments) != 0))
28322834 then throw("No payments required")
28332835 else {
2834- let c = toString(gK.caller)
2835- let fj = {
2836- let cy = mj
2837- if (("PRESALE" == cy))
2838- then kn(c, mk)
2839- else if (("ONBOARD" == cy))
2840- then kg(c)
2836+ let d = toString(gL.caller)
2837+ let fk = {
2838+ let cz = mk
2839+ if (("PRESALE" == cz))
2840+ then ko(d, ml)
2841+ else if (("ONBOARD" == cz))
2842+ then kh(d)
28412843 else throw("Unknown artifact")
28422844 }
2843- (fj ++ ll)
2844- }
2845- }
2846-
2847-
2848-
2849-@Callable(gK)
2850-func mergeLands (kE) = {
2851- let ll = lh(gK)
2852- if ((size(gK.payments) != 0))
2845+ (fk ++ lm)
2846+ }
2847+ }
2848+
2849+
2850+
2851+@Callable(gL)
2852+func mergeLands (kF) = {
2853+ let lm = li(gL)
2854+ if ((size(gL.payments) != 0))
28532855 then throw("No payments required")
28542856 else {
2855- let fj = lc(toString(gK.caller), kE)
2856- $Tuple2(((fj._1 ++ ll) ++ kf(toString(gK.caller), ab)._1), fj._2)
2857- }
2858- }
2859-
2860-
2861-
2862-@Callable(gK)
2863-func cargoExchange (ml,P) = {
2864- let ll = lh(gK)
2865- if ((size(gK.payments) != 0))
2857+ let fk = ld(toString(gL.caller), kF)
2858+ $Tuple2(((fk._1 ++ lm) ++ kg(toString(gL.caller), ac)._1), fk._2)
2859+ }
2860+ }
2861+
2862+
2863+
2864+@Callable(gL)
2865+func cargoExchange (mm,Q) = {
2866+ let lm = li(gL)
2867+ if ((size(gL.payments) != 0))
28662868 then throw("No payments required")
28672869 else {
2868- let in = split_4C(ml, ":")
2869- let c = toString(gK.originCaller)
2870- let js = value(assetInfo(fromBase58String(P)))
2871- let jt = br(P)
2872- if (!(isDefined(getInteger(jt))))
2873- then throw((js.name + " is not staked"))
2870+ let io = split_4C(mm, ":")
2871+ let d = toString(gL.originCaller)
2872+ let jt = value(assetInfo(fromBase58String(Q)))
2873+ let ju = bs(Q)
2874+ if (!(isDefined(getInteger(ju))))
2875+ then throw((jt.name + " is not staked"))
28742876 else {
2875- let jv = valueOrErrorMessage(getString(bo(P)), (("NFT " + js.name) + " is orphaned"))
2876- if ((jv != c))
2877- then throw((aC + " is not yours"))
2877+ let jw = valueOrErrorMessage(getString(bp(Q)), (("NFT " + jt.name) + " is orphaned"))
2878+ if ((jw != d))
2879+ then throw((aD + " is not yours"))
28782880 else {
2879- let hZ = (dH(split(js.description, "_")[di]) / cF)
2880- let ia = valueOrElse(getInteger(by(P)), 0)
2881- let A = valueOrErrorMessage(getString(bH(c)), "You don't have a duck staked")
2882- let jq = valueOrElse(getString(bJ(A)), aJ)
2883- let cf = split(value(jq), "_")
2884- if ((cf[bm] != "L"))
2885- then throw((("Duck location type is " + cf[bm]) + ", but should be L"))
2886- else if ((cf[bn] != P))
2887- then throw(("Duck should be on the land " + P))
2881+ let ia = (dI(split(jt.description, "_")[dj]) / cG)
2882+ let ib = valueOrElse(getInteger(bz(Q)), 0)
2883+ let B = valueOrErrorMessage(getString(bI(d)), "You don't have a duck staked")
2884+ let jr = valueOrElse(getString(bK(B)), aK)
2885+ let cg = split(value(jr), "_")
2886+ if ((cg[bn] != "L"))
2887+ then throw((("Duck location type is " + cg[bn]) + ", but should be L"))
2888+ else if ((cg[bo] != Q))
2889+ then throw(("Duck should be on the land " + Q))
28882890 else {
2889- let hY = bx(P)
2890- let hP = hX(hY, hZ, ia)
2891- let hL = bI(A)
2892- let io = hK(hL)
2893- let fj = im(in, hP, io)
2894- let ig = split(hP[bc], "_")
2895- let jH = (parseIntValue(ig[be]) + fj._7)
2896- let jI = (parseIntValue(ig[bf]) - fj._7)
2897- ([StringEntry(hL, makeString_2C([io[bh], fj._4, fj._5, fj._6], ":")), StringEntry(hY, makeString_2C([hP[aY], fj._1, fj._2, fj._3, makeString([ig[bd], toString(jH), toString(jI), ig[bg]], "_")], ":"))] ++ ll)
2891+ let hZ = by(Q)
2892+ let hQ = hY(hZ, ia, ib)
2893+ let hM = bJ(B)
2894+ let ip = hL(hM)
2895+ let fk = in(io, hQ, ip)
2896+ let ih = split(hQ[bd], "_")
2897+ let jI = (parseIntValue(ih[bf]) + fk._7)
2898+ let jJ = (parseIntValue(ih[bg]) - fk._7)
2899+ ([StringEntry(hM, makeString_2C([ip[bi], fk._4, fk._5, fk._6], ":")), StringEntry(hZ, makeString_2C([hQ[aZ], fk._1, fk._2, fk._3, makeString([ih[be], toString(jI), toString(jJ), ih[bh]], "_")], ":"))] ++ lm)
28982900 }
28992901 }
29002902 }
29012903 }
29022904 }
29032905
29042906
29052907
2906-@Callable(gK)
2907-func saveWarehouse (ic,P) = if ((gK.caller != dc))
2908+@Callable(gL)
2909+func saveWarehouse (id,Q) = if ((gL.caller != dd))
29082910 then throw("Access denied")
29092911 else {
2910- let hY = bx(P)
2911- let id = split_4C(ic, ":")
2912- if ((size(id) != 5))
2912+ let hZ = by(Q)
2913+ let ie = split_4C(id, ":")
2914+ if ((size(ie) != 5))
29132915 then throw("warehouse string should contain 4 ':' separators")
29142916 else {
2915- let mm = split(id[bc], "_")[bd]
2916- let jH = hO(id)
2917- let mn = hM(id[aY])
2918- let jI = ((mn - parseIntValue(mm)) - jH)
2919- let mo = makeString_2C([id[aY], id[aZ], id[ba], id[bb], makeString([mm, toString(jH), toString(jI), toString(mn)], "_")], ":")
2920- $Tuple2([StringEntry(hY, mo)], mo)
2917+ let mn = split(ie[bd], "_")[be]
2918+ let jI = hP(ie)
2919+ let mo = hN(ie[aZ])
2920+ let jJ = ((mo - parseIntValue(mn)) - jI)
2921+ let mp = makeString_2C([ie[aZ], ie[ba], ie[bb], ie[bc], makeString([mn, toString(jI), toString(jJ), toString(mo)], "_")], ":")
2922+ $Tuple2([StringEntry(hZ, mp)], mp)
29212923 }
29222924 }
29232925
29242926
29252927
2926-@Callable(gK)
2927-func fixWarehouseFormat (P) = if ((gK.caller != db))
2928+@Callable(gL)
2929+func fixWarehouseFormat (Q) = if ((gL.caller != dc))
29282930 then throw("Access denied")
29292931 else {
2930- let hY = bx(P)
2931- let js = value(assetInfo(fromBase58String(P)))
2932- let hZ = (dH(split(js.description, "_")[di]) / cF)
2933- let ia = valueOrElse(getInteger(by(P)), 0)
2934- let id = hX(hY, hZ, ia)
2935- let mm = dz(invoke(dc, "recalcLockedVolumeREADONLY", [P, id], nil))
2936- let jH = hO(id)
2937- let mn = hM(id[aY])
2938- let jI = ((mn - mm) - jH)
2939- let mo = makeString_2C([id[aY], id[aZ], id[ba], id[bb], makeString([toString(mm), toString(jH), toString(jI), toString(mn)], "_")], ":")
2940- $Tuple2([StringEntry(hY, mo)], mo)
2932+ let hZ = by(Q)
2933+ let jt = value(assetInfo(fromBase58String(Q)))
2934+ let ia = (dI(split(jt.description, "_")[dj]) / cG)
2935+ let ib = valueOrElse(getInteger(bz(Q)), 0)
2936+ let ie = hY(hZ, ia, ib)
2937+ let mn = dA(invoke(dd, "recalcLockedVolumeREADONLY", [Q, ie], nil))
2938+ let jI = hP(ie)
2939+ let mo = hN(ie[aZ])
2940+ let jJ = ((mo - mn) - jI)
2941+ let mp = makeString_2C([ie[aZ], ie[ba], ie[bb], ie[bc], makeString([toString(mn), toString(jI), toString(jJ), toString(mo)], "_")], ":")
2942+ $Tuple2([StringEntry(hZ, mp)], mp)
29412943 }
29422944
29432945
29442946
2945-@Callable(gK)
2946-func fixContinentProportions (kE) = if ((gK.caller != db))
2947+@Callable(gL)
2948+func fixContinentProportions (kF) = if ((gL.caller != dc))
29472949 then throw("Access denied")
29482950 else {
2949- func mp (eR,mq) = (eR :+ valueOrElse(getString(ds(mq)), "0_0_0_0_0_0"))
2950-
2951- let gu = {
2952- let eT = aP
2953- let eU = size(eT)
2954- let eV = nil
2955- func eW (eX,eY) = if ((eY >= eU))
2956- then eX
2957- else mp(eX, eT[eY])
2958-
2959- func eZ (eX,eY) = if ((eY >= eU))
2960- then eX
2951+ func mq (eS,mr) = (eS :+ valueOrElse(getString(dt(mr)), "0_0_0_0_0_0"))
2952+
2953+ let gv = {
2954+ let eU = aQ
2955+ let eV = size(eU)
2956+ let eW = nil
2957+ func eX (eY,eZ) = if ((eZ >= eV))
2958+ then eY
2959+ else mq(eY, eU[eZ])
2960+
2961+ func fa (eY,eZ) = if ((eZ >= eV))
2962+ then eY
29612963 else throw("List size exceeds 5")
29622964
2963- eZ(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5)
2964- }
2965- func mr (eR,P) = {
2966- let js = value(assetInfo(fromBase58String(P)))
2967- let jw = split(js.description, "_")
2968- let hZ = (dH(jw[di]) / cF)
2969- let mq = jw[dk]
2970- let gG = gM(jw[dj])
2971- let ho = value(indexOf(aP, mq))
2972- let kT = split(eR[ho], "_")
2973- let ms = makeString(gE(kT, gG, hZ, 1), "_")
2974- let cy = mq
2975- if (("Americas" == cy))
2976- then [ms, eR[1], eR[2], eR[3], eR[4]]
2977- else if (("Europe" == cy))
2978- then [eR[0], ms, eR[2], eR[3], eR[4]]
2979- else if (("Asia" == cy))
2980- then [eR[0], eR[1], ms, eR[3], eR[4]]
2981- else if (("Africa" == cy))
2982- then [eR[0], eR[1], eR[2], ms, eR[4]]
2983- else if (("Oceania" == cy))
2984- then [eR[0], eR[1], eR[2], eR[3], ms]
2965+ fa(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5)
2966+ }
2967+ func ms (eS,Q) = {
2968+ let jt = value(assetInfo(fromBase58String(Q)))
2969+ let jx = split(jt.description, "_")
2970+ let ia = (dI(jx[dj]) / cG)
2971+ let mr = jx[dl]
2972+ let gH = gN(jx[dk])
2973+ let hp = value(indexOf(aQ, mr))
2974+ let kU = split(eS[hp], "_")
2975+ let mt = makeString(gF(kU, gH, ia, 1), "_")
2976+ let cz = mr
2977+ if (("Americas" == cz))
2978+ then [mt, eS[1], eS[2], eS[3], eS[4]]
2979+ else if (("Europe" == cz))
2980+ then [eS[0], mt, eS[2], eS[3], eS[4]]
2981+ else if (("Asia" == cz))
2982+ then [eS[0], eS[1], mt, eS[3], eS[4]]
2983+ else if (("Africa" == cz))
2984+ then [eS[0], eS[1], eS[2], mt, eS[4]]
2985+ else if (("Oceania" == cz))
2986+ then [eS[0], eS[1], eS[2], eS[3], mt]
29852987 else throw("wrong continent")
29862988 }
29872989
2988- let fc = {
2989- let eT = kE
2990- let eU = size(eT)
2991- let eV = gu
2992- func hF (eX,eY) = if ((eY >= eU))
2993- then eX
2994- else mr(eX, eT[eY])
2995-
2996- func hG (eX,eY) = if ((eY >= eU))
2997- then eX
2990+ let fd = {
2991+ let eU = kF
2992+ let eV = size(eU)
2993+ let eW = gv
2994+ func hG (eY,eZ) = if ((eZ >= eV))
2995+ then eY
2996+ else ms(eY, eU[eZ])
2997+
2998+ func hH (eY,eZ) = if ((eZ >= eV))
2999+ then eY
29983000 else throw("List size exceeds 100")
29993001
3000- 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(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(eV, 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)
3001- }
3002- $Tuple2([StringEntry(ds("Americas"), fc[0]), StringEntry(ds("Europe"), fc[1]), StringEntry(ds("Asia"), fc[2]), StringEntry(ds("Africa"), fc[3]), StringEntry(ds("Oceania"), fc[4])], 0)
3002+ hH(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(eW, 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)
3003+ }
3004+ $Tuple2([StringEntry(dt("Americas"), fd[0]), StringEntry(dt("Europe"), fd[1]), StringEntry(dt("Asia"), fd[2]), StringEntry(dt("Africa"), fd[3]), StringEntry(dt("Oceania"), fd[4])], 0)
30033005 }
30043006
30053007
30063008
3007-@Callable(gK)
3008-func fixStakedPieces (cM) = if ((gK.caller != db))
3009+@Callable(gL)
3010+func fixStakedPieces (cN) = if ((gL.caller != dc))
30093011 then throw("Access denied")
30103012 else {
3011- let kX = if ((cM == ""))
3013+ let kY = if ((cN == ""))
30123014 then 0
30133015 else {
3014- let kQ = getString(an, du(cM))
3015- let kM = if (isDefined(kQ))
3016- then split_51C(value(kQ), "_")
3016+ let kR = getString(ao, dv(cN))
3017+ let kN = if (isDefined(kR))
3018+ then split_51C(value(kR), "_")
30173019 else nil
3018- func mt (eR,P) = {
3019- let js = value(assetInfo(fromBase58String(P)))
3020- let dI = split(js.description, "_")[di]
3021- (eR + dH(dI))
3020+ func mu (eS,Q) = {
3021+ let jt = value(assetInfo(fromBase58String(Q)))
3022+ let dJ = split(jt.description, "_")[dj]
3023+ (eS + dI(dJ))
30223024 }
30233025
3024- let eT = kM
3025- let eU = size(eT)
3026- let eV = 0
3027- func eW (eX,eY) = if ((eY >= eU))
3028- then eX
3029- else mt(eX, eT[eY])
3030-
3031- func eZ (eX,eY) = if ((eY >= eU))
3032- then eX
3026+ let eU = kN
3027+ let eV = size(eU)
3028+ let eW = 0
3029+ func eX (eY,eZ) = if ((eZ >= eV))
3030+ then eY
3031+ else mu(eY, eU[eZ])
3032+
3033+ func fa (eY,eZ) = if ((eZ >= eV))
3034+ then eY
30333035 else throw("List size exceeds 100")
30343036
3035- eZ(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eV, 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)
3037+ fa(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eW, 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)
30363038 }
3037- $Tuple2([IntegerEntry(dv(cM), kX)], kX)
3039+ $Tuple2([IntegerEntry(dw(cN), kY)], kY)
30383040 }
30393041
30403042
30413043
3042-@Callable(gK)
3043-func setCustomName (bp,kO,bt) = {
3044- let ll = lh(gK)
3045- if ((size(gK.payments) != 1))
3044+@Callable(gL)
3045+func setCustomName (bq,kP,bu) = {
3046+ let lm = li(gL)
3047+ if ((size(gL.payments) != 1))
30463048 then throw("Exactly one payment required")
30473049 else {
3048- let lm = value(gK.payments[0])
3049- if ((lm.assetId != cx))
3050+ let ln = value(gL.payments[0])
3051+ if ((ln.assetId != cy))
30503052 then throw("Allowed USDT payment only!")
3051- else if ((lm.amount != ec))
3052- then throw(("Payment should be " + toString(ec)))
3053- else if (contains(kO, "__"))
3054- then throw(("Name should not contain '__': " + kO))
3055- else if ((size(kO) > ed))
3056- then throw(("Name too long, maxLength=" + toString(ed)))
3053+ else if ((ln.amount != ed))
3054+ then throw(("Payment should be " + toString(ed)))
3055+ else if (contains(kP, "__"))
3056+ then throw(("Name should not contain '__': " + kP))
3057+ else if ((size(kP) > ee))
3058+ then throw(("Name too long, maxLength=" + toString(ee)))
30573059 else {
3058- let c = toString(gK.originCaller)
3059- let mu = {
3060- let cy = bt
3061- if (("ACCOUNT" == cy))
3060+ let d = toString(gL.originCaller)
3061+ let mv = {
3062+ let cz = bu
3063+ if (("ACCOUNT" == cz))
30623064 then {
3063- let mv = ex(kO)
3064- let mw = getString(mv)
3065- if (isDefined(mw))
3066- then throw(("Name already registered: " + kO))
3065+ let mw = ey(kP)
3066+ let mx = getString(mw)
3067+ if (isDefined(mx))
3068+ then throw(("Name already registered: " + kP))
30673069 else {
3068- let mx = bB(c)
3069- let my = getString(mx)
3070- let mz = if (isDefined(my))
3071- then [DeleteEntry(ex(value(my)))]
3070+ let my = bC(d)
3071+ let mz = getString(my)
3072+ let mA = if (isDefined(mz))
3073+ then [DeleteEntry(ey(value(mz)))]
30723074 else nil
3073- (((mz :+ StringEntry(mx, kO)) :+ StringEntry(mv, c)) ++ kf(c, Y)._1)
3075+ (((mA :+ StringEntry(my, kP)) :+ StringEntry(mw, d)) ++ kg(d, Z)._1)
30743076 }
30753077 }
3076- else if (("LAND" == cy))
3078+ else if (("LAND" == cz))
30773079 then {
3078- let js = value(assetInfo(fromBase58String(bp)))
3079- let jt = br(bp)
3080- if (!(isDefined(getInteger(jt))))
3081- then throw((js.name + " is not staked"))
3080+ let jt = value(assetInfo(fromBase58String(bq)))
3081+ let ju = bs(bq)
3082+ if (!(isDefined(getInteger(ju))))
3083+ then throw((jt.name + " is not staked"))
30823084 else {
3083- let jv = valueOrErrorMessage(getString(bo(bp)), (("NFT " + js.name) + " is orphaned"))
3084- if ((jv != c))
3085- then throw((aC + " is not yours"))
3085+ let jw = valueOrErrorMessage(getString(bp(bq)), (("NFT " + jt.name) + " is orphaned"))
3086+ if ((jw != d))
3087+ then throw((aD + " is not yours"))
30863088 else {
3087- let mv = eq(kO)
3088- let mw = getString(mv)
3089- if (isDefined(mw))
3090- then throw(("Name already registered: " + kO))
3089+ let mw = er(kP)
3090+ let mx = getString(mw)
3091+ if (isDefined(mx))
3092+ then throw(("Name already registered: " + kP))
30913093 else {
3092- let mA = bq(bp)
3093- let my = getString(mA)
3094- let mz = if (isDefined(my))
3095- then [DeleteEntry(eq(value(my)))]
3094+ let mB = br(bq)
3095+ let mz = getString(mB)
3096+ let mA = if (isDefined(mz))
3097+ then [DeleteEntry(er(value(mz)))]
30963098 else nil
3097- (((mz :+ StringEntry(mA, kO)) :+ StringEntry(mv, bp)) ++ kf(c, Y)._1)
3099+ (((mA :+ StringEntry(mB, kP)) :+ StringEntry(mw, bq)) ++ kg(d, Z)._1)
30983100 }
30993101 }
31003102 }
31013103 }
3102- else if (("DUCK" == cy))
3104+ else if (("DUCK" == cz))
31033105 then {
3104- let js = value(assetInfo(fromBase58String(bp)))
3105- let jt = br(bp)
3106- if (if (!(isDefined(getInteger(jt))))
3106+ let jt = value(assetInfo(fromBase58String(bq)))
3107+ let ju = bs(bq)
3108+ if (if (!(isDefined(getInteger(ju))))
31073109 then true
3108- else !(isDefined(getString(bH(c)))))
3109- then throw((js.name + " is not staked"))
3110+ else !(isDefined(getString(bI(d)))))
3111+ then throw((jt.name + " is not staked"))
31103112 else {
3111- let jv = valueOrErrorMessage(getString(bG(bp)), (("NFT " + js.name) + " is orphaned"))
3112- if ((jv != c))
3113- then throw((aD + " is not yours"))
3113+ let jw = valueOrErrorMessage(getString(bH(bq)), (("NFT " + jt.name) + " is orphaned"))
3114+ if ((jw != d))
3115+ then throw((aE + " is not yours"))
31143116 else {
3115- let mv = ew(kO)
3116- let mw = getString(mv)
3117- if (isDefined(mw))
3118- then throw(("Name already registered: " + kO))
3117+ let mw = ex(kP)
3118+ let mx = getString(mw)
3119+ if (isDefined(mx))
3120+ then throw(("Name already registered: " + kP))
31193121 else {
3120- let mA = bA(bp)
3121- let my = getString(mA)
3122- let mz = if (isDefined(my))
3123- then [DeleteEntry(ew(value(my)))]
3122+ let mB = bB(bq)
3123+ let mz = getString(mB)
3124+ let mA = if (isDefined(mz))
3125+ then [DeleteEntry(ex(value(mz)))]
31243126 else nil
3125- (((mz :+ StringEntry(mA, kO)) :+ StringEntry(mv, bp)) ++ jZ(bp, Y)._1)
3127+ (((mA :+ StringEntry(mB, kP)) :+ StringEntry(mw, bq)) ++ ka(bq, Z)._1)
31263128 }
31273129 }
31283130 }
31293131 }
31303132 else throw("Unknown entity type")
31313133 }
3132- $Tuple2(((mu :+ ScriptTransfer(dc, lm.amount, cx)) ++ ll), 0)
3134+ $Tuple2(((mv :+ ScriptTransfer(dd, ln.amount, cy)) ++ lm), 0)
31333135 }
31343136 }
31353137 }
31363138
31373139
31383140
3139-@Callable(gK)
3140-func setReferrals (mB,mC) = if ((gK.callerPublicKey != dZ))
3141+@Callable(gL)
3142+func setReferrals (mC,mD) = if ((gL.callerPublicKey != ea))
31413143 then throw("Permission denied")
31423144 else {
3143- let ll = lh(gK)
3144- if ((size(gK.payments) != 0))
3145+ let lm = li(gL)
3146+ if ((size(gL.payments) != 0))
31453147 then throw("No payments required")
3146- else if (!(isDefined(addressFromString(mB))))
3147- then throw(("Invalid address: " + mB))
3148- else if (!(isDefined(addressFromString(mC))))
3149- then throw(("Invalid address: " + mC))
3148+ else if (!(isDefined(addressFromString(mC))))
3149+ then throw(("Invalid address: " + mC))
3150+ else if (!(isDefined(addressFromString(mD))))
3151+ then throw(("Invalid address: " + mD))
31503152 else {
3151- let mD = ey()
3152- let mE = getString(mD)
3153- let mF = if (isDefined(mE))
3154- then split_4C(value(mE), "_")
3153+ let mE = ez()
3154+ let mF = getString(mE)
3155+ let mG = if (isDefined(mF))
3156+ then split_4C(value(mF), "_")
31553157 else nil
3156- if (containsElement(mF, mC))
3157- then throw((mC + " is not newbie (already has referrals)"))
3158+ if (containsElement(mG, mD))
3159+ then throw((mD + " is not newbie (already has referrals)"))
31583160 else {
3159- let kh = bC(mC)
3160- let ki = getString(kh)
3161- if (if (isDefined(ki))
3162- then isDefined(addressFromString(value(ki)))
3161+ let ki = bD(mD)
3162+ let kj = getString(ki)
3163+ if (if (isDefined(kj))
3164+ then isDefined(addressFromString(value(kj)))
31633165 else false)
3164- then throw(((mC + " already has refBy: ") + value(ki)))
3166+ then throw(((mD + " already has refBy: ") + value(kj)))
31653167 else {
3166- let mG = bF(mB)
3167- let mH = getString(mG)
3168- let mI = if (isDefined(mH))
3169- then split_4C(value(mH), "_")
3168+ let mH = bG(mC)
3169+ let mI = getString(mH)
3170+ let mJ = if (isDefined(mI))
3171+ then split_4C(value(mI), "_")
31703172 else nil
3171- if (containsElement(mI, mC))
3172- then throw((((mB + " already contains ") + mC) + " within referrals"))
3173+ if (containsElement(mJ, mD))
3174+ then throw((((mC + " already contains ") + mD) + " within referrals"))
31733175 else {
3174- let mJ = makeString_2C((mI :+ mC), "_")
3175- let mK = if (containsElement(mF, mB))
3176- then value(mE)
3177- else makeString_2C((mF :+ mB), "_")
3178- $Tuple2(([StringEntry(kh, mB), StringEntry(mG, mJ), StringEntry(mD, mK)] ++ ll), 0)
3176+ let mK = makeString_2C((mJ :+ mD), "_")
3177+ let mL = if (containsElement(mG, mC))
3178+ then value(mF)
3179+ else makeString_2C((mG :+ mC), "_")
3180+ $Tuple2(([StringEntry(ki, mC), StringEntry(mH, mK), StringEntry(mE, mL)] ++ lm), 0)
31793181 }
31803182 }
31813183 }
31823184 }
31833185 }
31843186
31853187
31863188
3187-@Callable(gK)
3188-func distributePoints (mL,mM,mN,mO,mP) = {
3189- let ll = lh(gK)
3190- if ((size(gK.payments) != 0))
3189+@Callable(gL)
3190+func distributePoints (mM,mN,mO,mP,mQ) = {
3191+ let lm = li(gL)
3192+ if ((size(gL.payments) != 0))
31913193 then throw("No payments required")
31923194 else {
3193- let c = toString(gK.originCaller)
3194- let mQ = dB(invoke(de, "checkWlgXpREADONLY", [c], nil))
3195- let mR = dz(mQ[1])
3196- let mS = if ((0 >= mR))
3195+ let d = toString(gL.originCaller)
3196+ let mR = dC(invoke(df, "checkWlgXpREADONLY", [d], nil))
3197+ let mS = dA(mR[1])
3198+ let mT = if ((0 >= mS))
31973199 then $Tuple2(0, nil)
31983200 else {
3199- let ka = dz(invoke(de, "takeWlgXp", [c], nil))
3200- if ((ka == ka))
3201- then $Tuple2(mR, [IntegerEntry(H(c), dz(mQ[0])), IntegerEntry(G(c), dz(mQ[2]))])
3201+ let kb = dA(invoke(df, "takeWlgXp", [d], nil))
3202+ if ((kb == kb))
3203+ then $Tuple2(mS, [IntegerEntry(I(d), dA(mR[0])), IntegerEntry(H(d), dA(mR[2]))])
32023204 else throw("Strict value is not equal to itself.")
32033205 }
3204- let mT = mS._1
3205- let mU = mS._2
3206- let A = valueOrErrorMessage(getString(bH(c)), "You don't have a duck staked")
3207- let mV = I(c)
3208- let mW = (valueOrElse(getInteger(mV), 0) + mT)
3209- let mX = E(A)
3210- let mY = valueOrElse(getInteger(mX), 0)
3211- let mZ = (mW + mY)
3212- let na = ((((mL + mM) + mN) + mO) + mP)
3213- if ((na > mZ))
3214- then throw((("There are only " + toString(mZ)) + " free points to distribute"))
3206+ let mU = mT._1
3207+ let mV = mT._2
3208+ let B = valueOrErrorMessage(getString(bI(d)), "You don't have a duck staked")
3209+ let mW = J(d)
3210+ let mX = (valueOrElse(getInteger(mW), 0) + mU)
3211+ let mY = F(B)
3212+ let mZ = valueOrElse(getInteger(mY), 0)
3213+ let na = (mX + mZ)
3214+ let nb = ((((mM + mN) + mO) + mP) + mQ)
3215+ if ((nb > na))
3216+ then throw((("There are only " + toString(na)) + " free points to distribute"))
32153217 else {
3216- let nb = B(A)
3217- let aq = split(valueOrElse(getString(nb), "0_0_0_0_0"), "_")
3218- let nc = (mW - na)
3219- $Tuple2((([IntegerEntry(mV, if ((0 > nc))
3218+ let nc = C(B)
3219+ let ar = split(valueOrElse(getString(nc), "0_0_0_0_0"), "_")
3220+ let nd = (mX - nb)
3221+ $Tuple2((([IntegerEntry(mW, if ((0 > nd))
32203222 then 0
3221- else nc), IntegerEntry(mX, if ((0 > nc))
3222- then (mY + nc)
3223- else mY), StringEntry(nb, makeString([toString((parseIntValue(aq[k]) + mL)), toString((parseIntValue(aq[l]) + mM)), toString((parseIntValue(aq[m]) + mN)), toString((parseIntValue(aq[n]) + mO)), toString((parseIntValue(aq[o]) + mP))], "_"))] ++ ll) ++ mU), 0)
3223+ else nd), IntegerEntry(mY, if ((0 > nd))
3224+ then (mZ + nd)
3225+ else mZ), StringEntry(nc, makeString([toString((parseIntValue(ar[l]) + mM)), toString((parseIntValue(ar[m]) + mN)), toString((parseIntValue(ar[n]) + mO)), toString((parseIntValue(ar[o]) + mP)), toString((parseIntValue(ar[p]) + mQ))], "_"))] ++ lm) ++ mV), 0)
32243226 }
32253227 }
32263228 }
32273229
32283230
32293231
3230-@Callable(gK)
3231-func splitByGlobalWeightsREADONLY (eI) = $Tuple2(nil, fa(eI))
3232-
3233-
3234-
3235-@Callable(gK)
3236-func splitByGlobalAndLocalWeightsREADONLY (nd,ne,gN) = {
3237- let gG = gM(gN)
3238- $Tuple2(nil, $Tuple2(fa(nd), eL(ne, gG)))
3239- }
3240-
3241-
3242-
3243-@Callable(gK)
3244-func getBackpackREADONLY (A) = $Tuple2(nil, makeString(hK(bI(A)), ":"))
3245-
3246-
3247-
3248-@Callable(gK)
3249-func getWarehouseREADONLY (P) = {
3250- let js = value(assetInfo(fromBase58String(P)))
3251- let hZ = (dH(split(js.description, "_")[di]) / cF)
3252- let ia = valueOrElse(getInteger(by(P)), 0)
3253- $Tuple2(nil, makeString_2C(hX(bx(P), hZ, ia), ":"))
3254- }
3255-
3256-
3257-
3258-@Callable(gK)
3259-func saveLastTx () = if (!(containsElement([de, dc, df, dg], gK.caller)))
3232+@Callable(gL)
3233+func splitByGlobalWeightsREADONLY (eJ) = $Tuple2(nil, fb(eJ))
3234+
3235+
3236+
3237+@Callable(gL)
3238+func splitByGlobalAndLocalWeightsREADONLY (ne,nf,gO) = {
3239+ let gH = gN(gO)
3240+ $Tuple2(nil, $Tuple2(fb(ne), eM(nf, gH)))
3241+ }
3242+
3243+
3244+
3245+@Callable(gL)
3246+func getBackpackREADONLY (B) = $Tuple2(nil, makeString(hL(bJ(B)), ":"))
3247+
3248+
3249+
3250+@Callable(gL)
3251+func getWarehouseREADONLY (Q) = {
3252+ let jt = value(assetInfo(fromBase58String(Q)))
3253+ let ia = (dI(split(jt.description, "_")[dj]) / cG)
3254+ let ib = valueOrElse(getInteger(bz(Q)), 0)
3255+ $Tuple2(nil, makeString_2C(hY(by(Q), ia, ib), ":"))
3256+ }
3257+
3258+
3259+
3260+@Callable(gL)
3261+func saveLastTx () = if (!(containsElement([df, dd, dg, dh], gL.caller)))
32603262 then throw("Access denied")
3261- else $Tuple2(lh(gK), 42)
3262-
3263-
3264-
3265-@Callable(gK)
3266-func updateDuckStats (A,ka) = if ((gK.caller != dc))
3263+ else $Tuple2(li(gL), 42)
3264+
3265+
3266+
3267+@Callable(gL)
3268+func updateDuckStats (B,kb) = if ((gL.caller != dd))
32673269 then throw("Access denied")
3268- else jZ(A, ka)
3269-
3270-
3271-
3272-@Callable(gK)
3273-func updateAccStats (c,ka) = if (!(containsElement([de, dc, dg], gK.caller)))
3270+ else ka(B, kb)
3271+
3272+
3273+
3274+@Callable(gL)
3275+func updateAccStats (d,kb) = if (!(containsElement([df, dd, dh], gL.caller)))
32743276 then throw("Access denied")
3275- else kf(c, ka)
3276-
3277-
3278-
3279-@Callable(gK)
3280-func equipDuck (nf) = {
3281- let ll = lh(gK)
3282- if ((size(gK.payments) != 0))
3277+ else kg(d, kb)
3278+
3279+
3280+
3281+@Callable(gL)
3282+func equipDuck (ng) = {
3283+ let lm = li(gL)
3284+ if ((size(gL.payments) != 0))
32833285 then throw("No payments required")
32843286 else {
3285- let c = toString(gK.originCaller)
3286- let A = valueOrErrorMessage(getString(bH(c)), "You don't have a duck staked")
3287- if (kp(A))
3287+ let d = toString(gL.originCaller)
3288+ let B = valueOrErrorMessage(getString(bI(d)), "You don't have a duck staked")
3289+ if (kq(B))
32883290 then throw("equipDuck_checkTournament")
3289- else if (kq(A))
3291+ else if (kr(B))
32903292 then throw("equipDuck_checkDelivery")
32913293 else {
3292- let gx = F(A)
3293- let ng = split(valueOrElse(getString(gx), ",;,_,;,_,;,_,;,_,;,_,;,"), "_")
3294- let hL = bI(A)
3295- let io = hK(hL)
3296- let lC = split(nf, "_")
3297- if ((size(lC) != q))
3294+ let gy = G(B)
3295+ let nh = split(valueOrElse(getString(gy), ",;,_,;,_,;,_,;,_,;,_,;,"), "_")
3296+ let hM = bJ(B)
3297+ let ip = hL(hM)
3298+ let lD = split(ng, "_")
3299+ if ((size(lD) != r))
32983300 then throw("Wrong equipment string")
32993301 else {
3300- let gz = gm(ng, fx(io[bk]), true, nil)
3301- let gA = split(lC[p], ";")[1]
3302- let ao = if ((gA == ""))
3302+ let gA = gn(nh, fy(ip[bl]), true, nil)
3303+ let gB = split(lD[q], ";")[1]
3304+ let ap = if ((gB == ""))
33033305 then 0
33043306 else {
3305- let gB = split(gA, ",")[0]
3306- if ((gB == ""))
3307+ let gC = split(gB, ",")[0]
3308+ if ((gC == ""))
33073309 then 0
33083310 else {
3309- let fM = split(gB, ":")
3310- let da = fM[0]
3311- let gC = fM[1]
3312- if (if (if (if (if ((da == "06"))
3311+ let fN = split(gC, ":")
3312+ let db = fN[0]
3313+ let gD = fN[1]
3314+ if (if (if (if (if ((db == "06"))
33133315 then true
3314- else (da == "07"))
3316+ else (db == "07"))
33153317 then true
3316- else (da == "08"))
3317- then (gC != "")
3318+ else (db == "08"))
3319+ then (gD != "")
33183320 else false)
3319- then (parseIntValue(gC) > 0)
3321+ then (parseIntValue(gD) > 0)
33203322 else false)
3321- then parseIntValue(split(aS[parseIntValue(da)], "_")[aU])
3323+ then parseIntValue(split(aT[parseIntValue(db)], "_")[aV])
33223324 else 0
33233325 }
33243326 }
3325- let gh = am(this, A, ao, true)
3326- let gD = gm(lC, gz, false, gh)
3327- let nh = fC(gD)
3328- $Tuple2(([StringEntry(gx, nf), StringEntry(hL, makeString_2C([io[bh], io[bi], io[bj], nh], ":")), StringEntry(L(A), makeString([toString(gh[7]), toString(gh[8]), toString(gh[9]), toString(gh[10]), toString(gh[11])], "_"))] ++ ll), 0)
3327+ let gi = an(this, B, ap, true)
3328+ let gE = gn(lD, gA, false, gi)
3329+ let ni = fD(gE)
3330+ $Tuple2(([StringEntry(gy, ng), StringEntry(hM, makeString_2C([ip[bi], ip[bj], ip[bk], ni], ":")), StringEntry(M(B), makeString([toString(gi[7]), toString(gi[8]), toString(gi[9]), toString(gi[10]), toString(gi[11])], "_"))] ++ lm), 0)
33293331 }
33303332 }
33313333 }
33323334 }
33333335
33343336
33353337
3336-@Callable(gK)
3337-func fortificateLand (P,ni) = {
3338- let ll = lh(gK)
3339- if ((size(gK.payments) != 0))
3338+@Callable(gL)
3339+func fortificateLand (Q,nj) = {
3340+ let lm = li(gL)
3341+ if ((size(gL.payments) != 0))
33403342 then throw("No payments required")
33413343 else {
3342- let c = toString(gK.originCaller)
3343- let A = valueOrElse(getString(bH(c)), "")
3344- let fH = am(this, A, 0, false)
3345- let nj = bz(P)
3346- let nk = split(valueOrElse(getString(nj), ":0_15:0_18:0"), "_")
3347- let js = value(assetInfo(fromBase58String(P)))
3348- let hZ = (dH(split(js.description, "_")[di]) / cF)
3349- let ia = valueOrElse(getInteger(by(P)), 0)
3350- let hY = bx(P)
3351- let id = hX(hY, hZ, ia)
3352- let nl = split(id[bc], "_")
3353- let nm = parseIntValue(nl[be])
3354- let nn = parseIntValue(nl[bf])
3355- let no = split(ni, "_")
3356- let np = gt(nk, fx(id[bb]), nm, nn, true, nil)
3357- let gz = np._1
3358- let nq = np._2
3359- let nr = np._3
3360- let ns = gt(no, gz, nq, nr, false, fH)
3361- let gD = ns._1
3362- let nt = ns._2
3363- let nu = ns._3
3364- let nh = fC(gD)
3365- let jY = makeString([nl[bd], toString(nt), toString(nu), nl[bg]], "_")
3366- $Tuple2(([StringEntry(nj, ni), StringEntry(hY, makeString_2C([id[aY], id[aZ], id[ba], nh, jY], ":"))] ++ ll), 0)
3367- }
3368- }
3369-
3370-
3371-
3372-@Callable(gK)
3373-func initDuckTourAttempt (A) = if ((gK.caller != df))
3344+ let d = toString(gL.originCaller)
3345+ let B = valueOrElse(getString(bI(d)), "")
3346+ let fI = an(this, B, 0, false)
3347+ let nk = bA(Q)
3348+ let nl = split(valueOrElse(getString(nk), ":0_15:0_18:0"), "_")
3349+ let jt = value(assetInfo(fromBase58String(Q)))
3350+ let ia = (dI(split(jt.description, "_")[dj]) / cG)
3351+ let ib = valueOrElse(getInteger(bz(Q)), 0)
3352+ let hZ = by(Q)
3353+ let ie = hY(hZ, ia, ib)
3354+ let nm = split(ie[bd], "_")
3355+ let nn = parseIntValue(nm[bf])
3356+ let no = parseIntValue(nm[bg])
3357+ let np = split(nj, "_")
3358+ let nq = gu(nl, fy(ie[bc]), nn, no, true, nil)
3359+ let gA = nq._1
3360+ let nr = nq._2
3361+ let ns = nq._3
3362+ let nt = gu(np, gA, nr, ns, false, fI)
3363+ let gE = nt._1
3364+ let nu = nt._2
3365+ let nv = nt._3
3366+ let ni = fD(gE)
3367+ let jZ = makeString([nm[be], toString(nu), toString(nv), nm[bh]], "_")
3368+ $Tuple2(([StringEntry(nk, nj), StringEntry(hZ, makeString_2C([ie[aZ], ie[ba], ie[bb], ni, jZ], ":"))] ++ lm), 0)
3369+ }
3370+ }
3371+
3372+
3373+
3374+@Callable(gL)
3375+func initDuckTourAttempt (B) = if ((gL.caller != dg))
33743376 then throw("Access denied")
33753377 else {
3376- let jb = z(A)
3377- let jc = ag(valueOrElse(getInteger(D(A)), 0))
3378- let ku = valueOrElse(getInteger(jb), jc)
3379- let nv = bJ(A)
3380- let jq = valueOrElse(getString(nv), aJ)
3381- let ce = valueOrElse(getInteger(df, bP), 0)
3382- let nw = (toString(ce) + "_T_0")
3383- $Tuple2([IntegerEntry(J(A), ku), IntegerEntry(jb, jc), StringEntry(K(A), jq), StringEntry(nv, nw)], nw)
3378+ let jc = A(B)
3379+ let jd = ah(valueOrElse(getInteger(E(B)), 0))
3380+ let kv = valueOrElse(getInteger(jc), jd)
3381+ let nw = bK(B)
3382+ let jr = valueOrElse(getString(nw), aK)
3383+ let cf = valueOrElse(getInteger(dg, bQ), 0)
3384+ let nx = (toString(cf) + "_T_0")
3385+ $Tuple2([IntegerEntry(K(B), kv), IntegerEntry(jc, jd), StringEntry(L(B), jr), StringEntry(nw, nx)], nx)
33843386 }
33853387
33863388
33873389
3388-@Callable(gK)
3390+@Callable(gL)
33893391 func breakAttempt () = {
3390- let ll = lh(gK)
3391- let A = valueOrErrorMessage(getString(bH(toString(gK.caller))), "You don't have a duck staked")
3392- let nv = bJ(A)
3393- let jq = valueOrElse(getString(nv), aJ)
3394- if ((split(jq, "_")[bm] != "T"))
3392+ let lm = li(gL)
3393+ let B = valueOrErrorMessage(getString(bI(toString(gL.caller))), "You don't have a duck staked")
3394+ let nw = bK(B)
3395+ let jr = valueOrElse(getString(nw), aK)
3396+ if ((split(jr, "_")[bn] != "T"))
33953397 then throw("Your duck is not in the tournament")
33963398 else {
3397- let kz = getIntegerValue(J(A))
3398- let kA = getStringValue(K(A))
3399- $Tuple2(((ll :+ IntegerEntry(z(A), kz)) :+ StringEntry(nv, kA)), jq)
3400- }
3401- }
3402-
3403-
3404-
3405-@Callable(gK)
3406-func exitTournamentInternal (A) = if ((gK.caller != this))
3399+ let kA = getIntegerValue(K(B))
3400+ let kB = getStringValue(L(B))
3401+ $Tuple2(((lm :+ IntegerEntry(A(B), kA)) :+ StringEntry(nw, kB)), jr)
3402+ }
3403+ }
3404+
3405+
3406+
3407+@Callable(gL)
3408+func exitTournamentInternal (B) = if ((gL.caller != this))
34073409 then throw("Access denied")
34083410 else {
3409- let kz = getIntegerValue(J(A))
3410- let kA = getStringValue(K(A))
3411- $Tuple2([IntegerEntry(z(A), kz), StringEntry(bJ(A), kA)], false)
3411+ let kA = getIntegerValue(K(B))
3412+ let kB = getStringValue(L(B))
3413+ $Tuple2([IntegerEntry(A(B), kA), StringEntry(bK(B), kB)], false)
34123414 }
34133415
34143416
34153417
3416-@Callable(gK)
3417-func exitDeliveryInternal (A) = if ((gK.caller != this))
3418+@Callable(gL)
3419+func exitDeliveryInternal (B) = if ((gL.caller != this))
34183420 then throw("Access denied")
34193421 else {
3420- let mi = kr(A, false, 0)
3421- $Tuple2((mi._1 ++ mi._2), false)
3422+ let mj = ks(B, false, 0)
3423+ $Tuple2((mj._1 ++ mj._2), false)
34223424 }
34233425
34243426
34253427
3426-@Callable(gK)
3427-func autoExitDelivery (A,iV) = if ((gK.caller != this))
3428+@Callable(gL)
3429+func autoExitDelivery (B,iW) = if ((gL.caller != this))
34283430 then throw("Access denied")
34293431 else {
3430- let mi = kr(A, true, iV)
3431- $Tuple2(mi._1, $Tuple2(mi._3, mi._4))
3432+ let mj = ks(B, true, iW)
3433+ $Tuple2(mj._1, $Tuple2(mj._3, mj._4))
34323434 }
34333435
34343436
34353437
3436-@Callable(gK)
3437-func prepareRobbery (iQ,iR) = {
3438- let ll = lh(gK)
3439- if (!(sigVerify_8Kb(iQ, iR, dZ)))
3438+@Callable(gL)
3439+func prepareRobbery (iR,iS) = {
3440+ let lm = li(gL)
3441+ if (!(sigVerify_8Kb(iR, iS, ea)))
34403442 then throw("signature does not match")
3441- else if ((size(gK.payments) != 1))
3443+ else if ((size(gL.payments) != 1))
34423444 then throw("exactly 1 payment must be attached")
34433445 else {
3444- let lm = gK.payments[0]
3445- let nx = lm.amount
3446- if (if (!(isDefined(lm.assetId)))
3446+ let ln = gL.payments[0]
3447+ let ny = ln.amount
3448+ if (if (!(isDefined(ln.assetId)))
34473449 then true
3448- else (value(lm.assetId) != dm))
3450+ else (value(ln.assetId) != dn))
34493451 then throw("WLGOLD payments only!")
34503452 else {
3451- let fp = split(toUtf8String(iQ), "|")
3452- if ((size(fp) != 2))
3453+ let fq = split(toUtf8String(iR), "|")
3454+ if ((size(fq) != 2))
34533455 then throw("Wrong message format")
34543456 else {
3455- let A = fp[0]
3456- if (kp(A))
3457+ let B = fq[0]
3458+ if (kq(B))
34573459 then throw("prepareRobbery_checkTournament")
3458- else if (kq(A))
3460+ else if (kr(B))
34593461 then throw("prepareRobbery_checkDelivery")
34603462 else {
3461- let ay = au(this, A)._1
3462- if ((ay > nx))
3463- then throw(((("Payment " + toString(nx)) + " < required ") + toString(ay)))
3463+ let az = av(this, B)._1
3464+ if ((az > ny))
3465+ then throw(((("Payment " + toString(ny)) + " < required ") + toString(az)))
34643466 else {
3465- let ny = split(fp[1], "_")
3466- let ax = lastBlock.timestamp
3467- let az = valueOrElse(getInteger(R(A)), 0)
3468- let aA = valueOrElse(getString(S(A)), "")
3469- let aB = valueOrElse(getInteger(Q(aA)), 0)
3470- if (if ((az != x))
3471- then (aB > ax)
3467+ let nz = split(fq[1], "_")
3468+ let ay = lastBlock.timestamp
3469+ let aA = valueOrElse(getInteger(S(B)), 0)
3470+ let aB = valueOrElse(getString(T(B)), "")
3471+ let aC = valueOrElse(getInteger(R(aB)), 0)
3472+ if (if ((aA != y))
3473+ then (aC > ay)
34723474 else false)
3473- then throw(("You already started robbing, wait till " + toString(aB)))
3475+ then throw(("You already started robbing, wait till " + toString(aC)))
34743476 else {
3475- func nz (eR,P) = {
3476- let nA = valueOrElse(getInteger(O(P)), 0)
3477- let nB = valueOrElse(getInteger(Q(P)), 0)
3478- if ((nA > size(u)))
3477+ func nA (eS,Q) = {
3478+ let nB = valueOrElse(getInteger(P(Q)), 0)
3479+ let nC = valueOrElse(getInteger(R(Q)), 0)
3480+ if ((nB > size(v)))
34793481 then throw("Invalid state")
3480- else if ((ax > nB))
3482+ else if ((ay > nC))
34813483 then {
3482- let nC = valueOrElse(getInteger(br(P)), 0)
3483- if ((0 >= nC))
3484- then eR
3484+ let nD = valueOrElse(getInteger(bs(Q)), 0)
3485+ if ((0 >= nD))
3486+ then eS
34853487 else {
3486- let gr = value(assetInfo(fromBase58String(P)))
3487- let jw = split(gr.description, "_")
3488- let ji = dH(jw[di])
3489- let nD = jh(P, ji)
3490- let gQ = (ax - nC)
3491- let jz = fraction(gQ, (nD * ji), a)
3492- if ((v > jz))
3493- then eR
3494- else (eR :+ P)
3488+ let gs = value(assetInfo(fromBase58String(Q)))
3489+ let jx = split(gs.description, "_")
3490+ let jj = dI(jx[dj])
3491+ let nE = ji(Q, jj)
3492+ let gR = (ay - nD)
3493+ let jA = fraction(gR, (nE * jj), a)
3494+ if ((w > jA))
3495+ then eS
3496+ else (eS :+ Q)
34953497 }
34963498 }
3497- else eR
3499+ else eS
34983500 }
34993501
3500- let nE = {
3501- let eT = ny
3502- let eU = size(eT)
3503- let eV = nil
3504- func eW (eX,eY) = if ((eY >= eU))
3505- then eX
3506- else nz(eX, eT[eY])
3507-
3508- func eZ (eX,eY) = if ((eY >= eU))
3509- then eX
3502+ let nF = {
3503+ let eU = nz
3504+ let eV = size(eU)
3505+ let eW = nil
3506+ func eX (eY,eZ) = if ((eZ >= eV))
3507+ then eY
3508+ else nA(eY, eU[eZ])
3509+
3510+ func fa (eY,eZ) = if ((eZ >= eV))
3511+ then eY
35103512 else throw("List size exceeds 10")
35113513
3512- eZ(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
3514+ fa(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
35133515 }
3514- if ((size(nE) == 0))
3516+ if ((size(nF) == 0))
35153517 then throw("No candidates for robbery")
35163518 else {
3517- let nF = dR(size(nE), height, (iR + gK.transactionId))
3518- let P = nE[nF]
3519- $Tuple2(([IntegerEntry(O(P), w), IntegerEntry(Q(P), (ax + u[w])), IntegerEntry(R(A), y), StringEntry(S(A), P)] ++ ll), P)
3519+ let nG = dS(size(nF), height, (iS + gL.transactionId))
3520+ let Q = nF[nG]
3521+ $Tuple2(([IntegerEntry(P(Q), x), IntegerEntry(R(Q), (ay + v[x])), IntegerEntry(S(B), z), StringEntry(T(B), Q)] ++ lm), Q)
35203522 }
35213523 }
35223524 }
35233525 }
35243526 }
35253527 }
35263528 }
35273529 }
35283530
35293531
35303532
3531-@Callable(gK)
3532-func robLand (iQ,iR) = {
3533- let ll = lh(gK)
3534- if (!(sigVerify_8Kb(iQ, iR, dZ)))
3533+@Callable(gL)
3534+func robLand (iR,iS) = {
3535+ let lm = li(gL)
3536+ if (!(sigVerify_8Kb(iR, iS, ea)))
35353537 then throw("signature does not match")
35363538 else {
3537- let bL = toString(gK.caller)
3538- let A = valueOrErrorMessage(getString(bH(bL)), "You don't have a duck staked")
3539- let ax = lastBlock.timestamp
3540- $Tuple2((ll :+ IntegerEntry(M(A), ax)), 0)
3541- }
3542- }
3543-
3544-
3545-
3546-@Callable(gK)
3547-func acceptDelivery () = if (!(cv))
3539+ let bM = toString(gL.caller)
3540+ let B = valueOrErrorMessage(getString(bI(bM)), "You don't have a duck staked")
3541+ let ay = lastBlock.timestamp
3542+ $Tuple2((lm :+ IntegerEntry(N(B), ay)), 0)
3543+ }
3544+ }
3545+
3546+
3547+
3548+@Callable(gL)
3549+func acceptDelivery () = if (!(cw))
35483550 then throw("Delivery feature is turned off!")
35493551 else {
3550- let ll = lh(gK)
3551- let bL = toString(gK.caller)
3552- let A = valueOrErrorMessage(getString(bH(bL)), "You don't have a duck staked")
3553- let nG = valueOrElse(getInteger(dc, bN), 0)
3554- let kx = valueOrElse(getInteger(dc, bO), 0)
3555- if ((aM > (nG - kx)))
3556- then throw(((("Delivery is not available, fund=" + dM(nG, 6)) + ", locked=") + dM(kx, 6)))
3552+ let lm = li(gL)
3553+ let bM = toString(gL.caller)
3554+ let B = valueOrErrorMessage(getString(bI(bM)), "You don't have a duck staked")
3555+ let nH = valueOrElse(getInteger(dd, bO), 0)
3556+ let ky = valueOrElse(getInteger(dd, bP), 0)
3557+ if ((aN > (nH - ky)))
3558+ then throw(((("Delivery is not available, fund=" + dN(nH, 6)) + ", locked=") + dN(ky, 6)))
35573559 else {
3558- let ax = lastBlock.timestamp
3559- let nH = valueOrElse(getInteger(T(A)), 0)
3560- if ((nH > ax))
3561- then throw(("Delivery is forbidden for your duck until " + toString(nH)))
3562- else if (kp(A))
3560+ let ay = lastBlock.timestamp
3561+ let nI = valueOrElse(getInteger(U(B)), 0)
3562+ if ((nI > ay))
3563+ then throw(("Delivery is forbidden for your duck until " + toString(nI)))
3564+ else if (kq(B))
35633565 then throw("acceptDelivery_checkTournament")
3564- else if (kq(A))
3566+ else if (kr(B))
35653567 then throw("acceptDelivery_checkDelivery")
35663568 else {
3567- let nI = dz(invoke(dc, "updateDeliveryLocked", [(kx + aM)], nil))
3568- let jb = z(A)
3569- let jc = ag(valueOrElse(getInteger(D(A)), 0))
3570- let ku = valueOrElse(getInteger(jb), jc)
3571- let nv = bJ(A)
3572- let jq = valueOrElse(getString(nv), aJ)
3573- let nJ = (toString(ax) + "_D_0")
3574- $Tuple2(([IntegerEntry(J(A), ku), IntegerEntry(jb, jc), StringEntry(K(A), jq), StringEntry(nv, nJ)] ++ ll), $Tuple2(nJ, nI))
3569+ let nJ = dA(invoke(dd, "updateDeliveryLocked", [(ky + aN)], nil))
3570+ let jc = A(B)
3571+ let jd = ah(valueOrElse(getInteger(E(B)), 0))
3572+ let kv = valueOrElse(getInteger(jc), jd)
3573+ let nw = bK(B)
3574+ let jr = valueOrElse(getString(nw), aK)
3575+ let nK = (toString(ay) + "_D_0")
3576+ $Tuple2(([IntegerEntry(K(B), kv), IntegerEntry(jc, jd), StringEntry(L(B), jr), StringEntry(nw, nK)] ++ lm), $Tuple2(nK, nJ))
35753577 }
35763578 }
35773579 }
35783580
35793581

github/deemru/w8io/c3f4982 
1706.78 ms