tx · AT9B6QnaHUvuwepSMjJJo8WP8dL6hKSNDEWqeZ5Gzh2A

3NDCyBG5q85JuaRiigUeEtainyjCQT3XpZm:  -0.10800000 Waves

2023.10.10 19:50 [2792789] smart account 3NDCyBG5q85JuaRiigUeEtainyjCQT3XpZm > SELF 0.00000000 Waves

{ "type": 13, "id": "AT9B6QnaHUvuwepSMjJJo8WP8dL6hKSNDEWqeZ5Gzh2A", "fee": 10800000, "feeAssetId": null, "timestamp": 1696956631209, "version": 2, "chainId": 84, "sender": "3NDCyBG5q85JuaRiigUeEtainyjCQT3XpZm", "senderPublicKey": "EVooykMNV691Venwp1dHUTBd7KWequzUcda57Wd3LQEX", "proofs": [ "2ivL7JDaPDEky7XnYzVpc63ZkKv5Yv5JuZrpXoP56Vyx8EFPGJzF5aQAA1eJV89fv2qZY7Dh7Z5VvaRZrUiabWCt" ], "script": "base64:BgLkAQgCEgMKAQgSBAoCCAESAwoBBBIAEgMKAQgSABIDCgEIEgQKAgEIEgQKAgEIEgQKAgICEgUKAwEBARIAEgQKAggIEgASABIECgICAhIAEgMKAQgSBAoCCAgSAwoBGBIECgIICBIECgIICBIDCgEIEgMKARgSAwoBCBIFCgMICAgSBAoCCAgSBwoFAQEBAQESAwoBARIFCgMBAQgSAwoBCBIDCgEIEgASBAoCCAESBAoCCAESAwoBCBIECgIICBIDCgEIEgASAwoBCBIDCgEIEgYKBAgBCAESBAoCAgISBAoCAgISAKICAAlEQVlNSUxMSVMAgLiZKQATREVMSVZFUllfUFVOSVNITUVOVADg1AMBFGtleUxhc3RBcmJUaW1lQnlVc2VyAQRhZGRyCQCsAgICEGxhc3RBcmJUaW1lVXNlcl8FBGFkZHIBGmtleUFjcmVzU3Rha2VkQW1vdW50QnlVc2VyAQRhZGRyCQCsAgICGGFjcmVzU3Rha2VkQW1vdW50QnlVc2VyXwUEYWRkcgAGU0NBTEU4AIDC1y8ADHhwTGV2ZWxTY2FsZQCAGQAPeHBMZXZlbFJlY2lwUG93AKAfABJudW1Qb2ludHNPbkxldmVsVXAAAwAOcm9iYmVyeUNvc3RNaW4AgMLXLwAUcm9iYmVyeUNvb2xkb3duQ29lZmYAkAMADHJlcXVpcmVtZW50cwkAzAgCAghTdHJlbmd0aAkAzAgCAghBY2N1cmFjeQkAzAgCAglJbnRlbGxlY3QJAMwIAgIJRW5kdXJhbmNlCQDMCAICCURleHRlcml0eQkAzAgCAgVMZXZlbAkAzAgCAgZIZWFsdGgFA25pbAAMY2hhclN0cmVuZ3RoAAAADGNoYXJBY2N1cmFjeQABAA1jaGFySW50ZWxsZWN0AAIADWNoYXJFbmR1cmFuY2UAAwANY2hhckRleHRlcml0eQAEAAtzZWdCYWNrcGFjawAAAAtOVU1TRUdNRU5UUwAGAApOVU1NQUlOQVVYAAIACE1BWFNMT1RTAAIADU1BWFBST0RJTlNMT1QAHgAQbGFuZFJvYkNvb2xkb3ducwkAzAgCAAAJAMwIAgDAzyQJAMwIAgCg9zYJAMwIAgCA3MwUCQDMCAIAgK6mCgUDbmlsAA5NSU5fUkVTX1RPX1JPQgCA2sQJAAxyb2JJZHhMb2NrZWQAAQALZHVja0lkeEZyZWUAAAAQZHVja0lkeFByZXBhcmluZwABAQ1rZXlEdWNrSGVhbHRoAQtkdWNrQXNzZXRJZAkArAICAgtkdWNrSGVhbHRoXwULZHVja0Fzc2V0SWQBDGtleUR1Y2tDaGFycwELZHVja0Fzc2V0SWQJAKwCAgIKZHVja0NoYXJzXwULZHVja0Fzc2V0SWQBCWtleUR1Y2tYUAELZHVja0Fzc2V0SWQJAKwCAgIHZHVja1hQXwULZHVja0Fzc2V0SWQBDGtleUR1Y2tMZXZlbAELZHVja0Fzc2V0SWQJAKwCAgIKZHVja0xldmVsXwULZHVja0Fzc2V0SWQBEWtleUR1Y2tGcmVlUG9pbnRzAQtkdWNrQXNzZXRJZAkArAICAg9kdWNrRnJlZVBvaW50c18FC2R1Y2tBc3NldElkARBrZXlEdWNrRXF1aXBtZW50AQtkdWNrQXNzZXRJZAkArAICAg5kdWNrRXF1aXBtZW50XwULZHVja0Fzc2V0SWQBCWtleVVzZXJYUAEEYWRkcgkArAICAgd1c2VyWFBfBQRhZGRyAQxrZXlVc2VyTGV2ZWwBBGFkZHIJAKwCAgIKdXNlckxldmVsXwUEYWRkcgERa2V5VXNlckZyZWVQb2ludHMBBGFkZHIJAKwCAgIPdXNlckZyZWVQb2ludHNfBQRhZGRyAQ5rZXlTYXZlZEhlYWx0aAELZHVja0Fzc2V0SWQJAKwCAgIMc2F2ZWRIZWFsdGhfBQtkdWNrQXNzZXRJZAEQa2V5U2F2ZWRMb2NhdGlvbgELZHVja0Fzc2V0SWQJAKwCAgIOc2F2ZWRMb2NhdGlvbl8FC2R1Y2tBc3NldElkAQxrZXlEdWNrQnVmZnMBC2R1Y2tBc3NldElkCQCsAgICCmR1Y2tCdWZmc18FC2R1Y2tBc3NldElkARhrZXlMYXN0Um9iYmVyeVRpbWVCeUR1Y2sBC2R1Y2tBc3NldElkCQCsAgICEGxhc3RSb2JiZXJ5VGltZV8FC2R1Y2tBc3NldElkARhrZXlMYXN0Um9iYmVyeUNvc3RCeUR1Y2sBC2R1Y2tBc3NldElkCQCsAgICEGxhc3RSb2JiZXJ5Q29zdF8FC2R1Y2tBc3NldElkARNrZXlMYW5kUm9iYmVyeVN0YXRlAQtsYW5kQXNzZXRJZAkArAICAhFsYW5kUm9iYmVyeVN0YXRlXwULbGFuZEFzc2V0SWQBEmtleUxhbmRDb29sZG93bkVUQQELbGFuZEFzc2V0SWQJAKwCAgIQbGFuZENvb2xkb3duRVRBXwULbGFuZEFzc2V0SWQBE2tleUR1Y2tSb2JiZXJ5U3RhdGUBC2R1Y2tBc3NldElkCQCsAgICEWR1Y2tSb2JiZXJ5U3RhdGVfBQtkdWNrQXNzZXRJZAETa2V5TG9ja2VkTGFuZEJ5RHVjawELZHVja0Fzc2V0SWQJAKwCAgIRbG9ja2VkTGFuZEJ5RHVja18FC2R1Y2tBc3NldElkARZrZXlEZWxpdmVyeURlbGF5QnlEdWNrAQtkdWNrQXNzZXRJZAkArAICAhRkZWxpdmVyeURlbGF5QnlEdWNrXwULZHVja0Fzc2V0SWQBFGtleVVzZXJEZWxpdmVyeUNvdW50AQRhZGRyCQCsAgICEnVzZXJEZWxpdmVyeWNvdW50XwUEYWRkcgEWa2V5VXNlckxhc3REZWxpdmVyeURheQEEYWRkcgkArAICAhR1c2VyTGFzdERlbGl2ZXJ5RGF5XwUEYWRkcgAHeHBDbGFpbQCQTgAPeHBTdWNjZXNzRmxpZ2h0AJBOAAx4cEZhaWxGbGlnaHQA0A8ACHhwQ2FsbEVTAKCNBgAMeHBDdXN0b21OYW1lAMCEPQAKeHBOZXdTTGFuZADAlrECAA54cFVwZ3JhZGVJbmZyYQCQTgAHeHBNZXJnZQDAhD0ACXhwT25ib2FyZADAhD0ABnhwSGVhbACQTgEJbGV2ZWxCeVhQAQJ4cAkAawMFDHhwTGV2ZWxTY2FsZQkAbAYFAnhwAAQFD3hwTGV2ZWxSZWNpcFBvdwAEAAQFBERPV04FBlNDQUxFOAEJbWF4SGVhbHRoAQVsZXZlbAkAZAIAZAUFbGV2ZWwBB2xldmVsVXACCWN1cnJMZXZlbAVuZXdYUAQIbmV3TGV2ZWwJAQlsZXZlbEJ5WFABBQVuZXdYUAkAzAgCBQhuZXdMZXZlbAkAzAgCCQBoAgUSbnVtUG9pbnRzT25MZXZlbFVwCQBlAgUIbmV3TGV2ZWwFCWN1cnJMZXZlbAUDbmlsAQxnZXREdWNrU3RhdHMED3N0YWtpbmdDb250cmFjdAtkdWNrQXNzZXRJZApidWZmRWZmZWN0CmZvcmNlQnVmZnMEBWNoYXJzCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUPc3Rha2luZ0NvbnRyYWN0CQEMa2V5RHVja0NoYXJzAQULZHVja0Fzc2V0SWQCCTBfMF8wXzBfMAIBXwQDbHZsCQELdmFsdWVPckVsc2UCCQCaCAIFD3N0YWtpbmdDb250cmFjdAkBDGtleUR1Y2tMZXZlbAEFC2R1Y2tBc3NldElkAAAEBmhlYWx0aAkBC3ZhbHVlT3JFbHNlAgkAmggCBQ9zdGFraW5nQ29udHJhY3QJAQ1rZXlEdWNrSGVhbHRoAQULZHVja0Fzc2V0SWQJAQltYXhIZWFsdGgBBQNsdmwECnN0YXRlQnVmZnMJALUJAgkBC3ZhbHVlT3JFbHNlAgkAnQgCBQ9zdGFraW5nQ29udHJhY3QJAQxrZXlEdWNrQnVmZnMBBQtkdWNrQXNzZXRJZAIJMF8wXzBfMF8wAgFfCQDOCAIJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBWNoYXJzBQxjaGFyU3RyZW5ndGgJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBWNoYXJzBQxjaGFyQWNjdXJhY3kJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBWNoYXJzBQ1jaGFySW50ZWxsZWN0CQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVjaGFycwUNY2hhckVuZHVyYW5jZQkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFY2hhcnMFDWNoYXJEZXh0ZXJpdHkJAMwIAgUDbHZsCQDMCAIFBmhlYWx0aAUDbmlsAwUKZm9yY2VCdWZmcwkAzAgCBQpidWZmRWZmZWN0CQDMCAIFCmJ1ZmZFZmZlY3QJAMwIAgUKYnVmZkVmZmVjdAkAzAgCBQpidWZmRWZmZWN0CQDMCAIFCmJ1ZmZFZmZlY3QFA25pbAkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUKc3RhdGVCdWZmcwUMY2hhclN0cmVuZ3RoCQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQpzdGF0ZUJ1ZmZzBQxjaGFyQWNjdXJhY3kJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCnN0YXRlQnVmZnMFDWNoYXJJbnRlbGxlY3QJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCnN0YXRlQnVmZnMFDWNoYXJFbmR1cmFuY2UJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCnN0YXRlQnVmZnMFDWNoYXJEZXh0ZXJpdHkFA25pbAEOZ2V0Um9iYmVyeURhdGECD3N0YWtpbmdDb250cmFjdAtkdWNrQXNzZXRJZAQLbGFzdFJvYkNvc3QJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPc3Rha2luZ0NvbnRyYWN0CQEYa2V5TGFzdFJvYmJlcnlDb3N0QnlEdWNrAQULZHVja0Fzc2V0SWQAAAQLbGFzdFJvYlRpbWUJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPc3Rha2luZ0NvbnRyYWN0CQEYa2V5TGFzdFJvYmJlcnlUaW1lQnlEdWNrAQULZHVja0Fzc2V0SWQAAAQDbm93CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQHcm9iQ29zdAkAlgMBCQDMCAIFDnJvYmJlcnlDb3N0TWluCQDMCAIJAGUCBQtsYXN0Um9iQ29zdAkAaAIFFHJvYmJlcnlDb29sZG93bkNvZWZmCQBlAgUDbm93BQtsYXN0Um9iVGltZQUDbmlsBAlkdWNrU3RhdGUJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPc3Rha2luZ0NvbnRyYWN0CQETa2V5RHVja1JvYmJlcnlTdGF0ZQEFC2R1Y2tBc3NldElkAAAECmxvY2tlZExhbmQJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUPc3Rha2luZ0NvbnRyYWN0CQETa2V5TG9ja2VkTGFuZEJ5RHVjawEFC2R1Y2tBc3NldElkAgAEB2xhbmRFVEEJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPc3Rha2luZ0NvbnRyYWN0CQESa2V5TGFuZENvb2xkb3duRVRBAQUKbG9ja2VkTGFuZAAACQCXCgUFB3JvYkNvc3QFC2xhc3RSb2JUaW1lBQlkdWNrU3RhdGUFCmxvY2tlZExhbmQFB2xhbmRFVEEACkxBTkRQUkVGSVgCBExBTkQACkRVQ0tQUkVGSVgCBERVQ0sACkFSVFBSRVNBTEUCB1BSRVNBTEUABk5VTVJFUwAGABhNQVhfTEFORFNfU1RBS0VEX0JZX1VTRVIAGQAPREFJTFlSRVNCWVBJRUNFAID40gEADFdITVVMVElQTElFUgCAyK+gJQAPREVGQVVMVExPQ0FUSU9OAg9BZnJpY2FfRl9BZnJpY2EAEFJFU09VUkNFUFJJQ0VNSU4A1bUCAApFU1NFTExDT0VGAAoAFU1JTl9VU0RUX0ZFRV9ERUxJVkVSWQDQhgMAElRFTl9NSU5VVEVTX01JTExJUwDAzyQAF0FMTE9XRURfRlJFRV9ERUxJVkVSSUVTAAMAGkFDUkVTX0ZPUl9ERUxJVkVSWV9BVFRFTVBUAIDaxAkACXByb2RUeXBlcwkAzAgCAhBGaXJzdCBBaWQgS2l0IEwxCQDMCAICEEZpcnN0IEFpZCBLaXQgTDIJAMwIAgIQRmlyc3QgQWlkIEtpdCBMMwkAzAgCAgtCYWNrcGFjayBMMQkAzAgCAgtCYWNrcGFjayBMMgkAzAgCAgtCYWNrcGFjayBMMwkAzAgCAg5Gb29kIFJhdGlvbiBMMQkAzAgCAg5Gb29kIFJhdGlvbiBMMgkAzAgCAg5Gb29kIFJhdGlvbiBMMwkAzAgCAgtKZXQgUGFjayBMMQkAzAgCAgtKZXQgUGFjayBMMgkAzAgCAgtKZXQgUGFjayBMMwkAzAgCAglTaGllbGQgTDEJAMwIAgIJU2hpZWxkIEwyCQDMCAICCVNoaWVsZCBMMwkAzAgCAgdNaW5lIEwxCQDMCAICB01pbmUgTDIJAMwIAgIHTWluZSBMMwkAzAgCAgdUcmFwIEwxCQDMCAICB1RyYXAgTDIJAMwIAgIHVHJhcCBMMwUDbmlsAApjb250aW5lbnRzCQDMCAICCEFtZXJpY2FzCQDMCAICBkV1cm9wZQkAzAgCAgRBc2lhCQDMCAICBkFmcmljYQkAzAgCAgdPY2VhbmlhBQNuaWwACUNPRUZGMk1BVACAreIEABBmb3J0QWxsb3dlZFByb2RzCQDMCAIADwkAzAgCABAJAMwIAgARCQDMCAIAEgkAzAgCABMJAMwIAgAUBQNuaWwAEHByb2R1Y3Rpb25NYXRyaXgJAMwIAgIlOF84XzhfMTdfMTdfNDJfMTJfMF8zMF8wLDAsMCwwLDAsMCwwXwkAzAgCAiU4XzhfOF8xN18xN180Ml8yNF8wXzYwXzAsMCw1LDIsMCwwLDBfCQDMCAICJzhfOF84XzE3XzE3XzQyXzM2XzBfMTIwXzAsMCwxMCw0LDAsMCwwXwkAzAgCAik4XzE5XzE5XzhfMjdfMTlfMjZfMV8yMF8wLDAsMCwwLDAsMCwwXzAwMQkAzAgCAik4XzE5XzE5XzhfMjdfMTlfNTJfMV80MF8wLDAsMCwwLDAsMCwwXzAwMQkAzAgCAik4XzE5XzE5XzhfMjdfMTlfNzhfMV84MF8wLDAsMCwwLDAsMCwwXzAwMQkAzAgCAiU4XzhfOF84XzhfNjBfMTNfMl8yXzAsMCwwLDAsMCwwLDBfMDExCQDMCAICJThfOF84XzhfOF82MF8yNl8yXzRfMCwwLDAsMCwwLDAsMF8wMTEJAMwIAgIlOF84XzhfOF84XzYwXzM5XzJfOF8wLDAsMCwwLDAsMCwwXzAxMQkAzAgCAikzMF8zMF8zXzE3XzE3XzNfMzBfM18zMF8wLDAsMCwwLDAsMCwwXzExMQkAzAgCAikzMF8zMF8zXzE3XzE3XzNfNjBfM181MF8wLDAsMCwwLDAsMCwwXzExMQkAzAgCAikzMF8zMF8zXzE3XzE3XzNfOTBfM183MF8wLDAsMCwwLDAsMCwwXzExMQkAzAgCAisxOF8xOF8xMF8xOF8xOF8xOF8xMV80XzEwXzAsMCwwLDAsMCwwLDBfMjAxCQDMCAICKzE4XzE4XzEwXzE4XzE4XzE4XzIyXzRfMjBfMCwwLDAsMCwwLDAsMF8yMDEJAMwIAgIrMThfMThfMTBfMThfMThfMThfMzNfNF8zMF8wLDAsMCwwLDAsMCwwXzIwMQkAzAgCAio0XzEzXzIyXzRfMzVfMjJfMjNfMF81MCwxLDBfMCwwLDAsMCwwLDAsMF8JAMwIAgIqNF8xM18yMl80XzM1XzIyXzQ2XzBfNTAsMSwxXzAsMiw1LDAsMCwwLDBfCQDMCAICKzRfMTNfMjJfNF8zNV8yMl82OV8wXzUwLDIsMV8wLDUsMTAsMCwwLDAsMF8JAMwIAgIqNV8yNV80MF81XzEwXzE1XzIwXzFfMzAsMSwxXzAsMCwwLDAsMCwwLDBfCQDMCAICKjVfMjVfNDBfNV8xMF8xNV80MF8xXzMwLDEsMl8yLDEsMywwLDAsMCwwXwkAzAgCAio1XzI1XzQwXzVfMTBfMTVfNjBfMV8zMCwxLDNfNSwyLDgsMCwwLDAsMF8FA25pbAAJcklkeENvZWZmAAYACnJJZHhFZmZlY3QACAAQcklkeFJlcXVpcmVtZW50cwAJAAlySWR4U2xvdHMACgAOUFJPRFVDVFBLR1NJWkUACgALd2hJZHhMZXZlbHMAAAAId2hJZHhSZXMAAQAId2hJZHhNYXQAAgAJd2hJZHhQcm9kAAMACXdoSWR4TE9GVAAEAAl2b2xMb2NrZWQAAAALdm9sT2NjdXBpZWQAAQAHdm9sRnJlZQACAAh2b2xUb3RhbAADAApicElkeExldmVsAAAACGJwSWR4UmVzAAEACGJwSWR4TWF0AAIACWJwSWR4UHJvZAADAA9sb2NJZHhDb250aW5lbnQAAAAKbG9jSWR4VHlwZQABAAhsb2NJZHhJZAACARVrZXlMYW5kQXNzZXRJZFRvT3duZXIBB2Fzc2V0SWQJAKwCAgIDbm9fBQdhc3NldElkARprZXlMYW5kQXNzZXRJZFRvQ3VzdG9tTmFtZQEHYXNzZXRJZAkArAICAgVsY25hXwUHYXNzZXRJZAEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEHYXNzZXRJZAkArAICAgNzdF8FB2Fzc2V0SWQBIGtleUxhbmRBcnRTdGF0dXNCeVR5cGVBbmRBc3NldElkAgR0eXBlB2Fzc2V0SWQJALkJAgkAzAgCAgNsYXMJAMwIAgUEdHlwZQkAzAgCBQdhc3NldElkBQNuaWwCAV8BImtleVN0YWtlZFRpbWVCeVR5cGVBc3NldElkQW5kT3duZXIDB25mdFR5cGUHYXNzZXRJZAlvd25lckFkZHIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAgZzdHRhb18FB25mdFR5cGUCAV8FB2Fzc2V0SWQCAV8FCW93bmVyQWRkcgESa2V5V2FyZWhvdXNlQnlMYW5kAQtsYW5kQXNzZXRJZAkArAICAgN3aF8FC2xhbmRBc3NldElkARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQdhc3NldElkCQCsAgICC2luZnJhTGV2ZWxfBQdhc3NldElkARdrZXlGb3J0aWZpY2F0aW9uc0J5TGFuZAELbGFuZEFzc2V0SWQJAKwCAgIPZm9ydGlmaWNhdGlvbnNfBQtsYW5kQXNzZXRJZAEaa2V5RHVja0Fzc2V0SWRUb0N1c3RvbU5hbWUBB2Fzc2V0SWQJAKwCAgIYZHVja0N1c3RvbU5hbWVCeUFzc2V0SWRfBQdhc3NldElkARZrZXlBZGRyZXNzVG9DdXN0b21OYW1lAQRhZGRyCQCsAgICGGFjY291bnRDdXN0b21OYW1lQnlBZGRyXwUEYWRkcgEPa2V5QWRkcmVzc1JlZkJ5AQRhZGRyCQCsAgICCWFjY1JlZkJ5XwUEYWRkcgEca2V5T25ib2FyZEFydEFjdGl2YXRlZE9uRHVjawELZHVja0Fzc2V0SWQJAKwCAgIab25ib2FyZEFydEFjdGl2YXRlZE9uRHVja18FC2R1Y2tBc3NldElkARxrZXlPbmJvYXJkQXJ0RHVja0FjdGl2YXRlZEJ5AQRhZGRyCQCsAgICGm9uYm9hcmRBcnRBY3RpdmF0ZWREdWNrQnlfBQRhZGRyARNrZXlBZGRyZXNzUmVmZXJyYWxzAQRhZGRyCQCsAgICDWFjY1JlZmVycmFsc18FBGFkZHIBEGtleUR1Y2tJZFRvT3duZXIBB2Fzc2V0SWQJAKwCAgIKZHVja093bmVyXwUHYXNzZXRJZAEUa2V5U3Rha2VkRHVja0J5T3duZXIBCW93bmVyQWRkcgkArAICAhJzdGFrZWREdWNrQnlPd25lcl8FCW93bmVyQWRkcgERa2V5QmFja3BhY2tCeUR1Y2sBC2R1Y2tBc3NldElkCQCsAgICCWJhY2tQYWNrXwULZHVja0Fzc2V0SWQBD2tleUR1Y2tMb2NhdGlvbgELZHVja0Fzc2V0SWQJAKwCAgINZHVja0xvY2F0aW9uXwULZHVja0Fzc2V0SWQBFWtleVVzZXJHd2xSZWxlYXNlVGltZQEIdXNlckFkZHIJAKwCAgIaJXMlc19fdXNlckd3bFJlbGVhc2VUaW1lX18FCHVzZXJBZGRyAQ5rZXlFc1dhcmVob3VzZQACGmVtZXJnZW5jeVdhcmVob3VzZVByb2R1Y3RzAA9kZWxpdmVyeUZ1bmRLZXkCDGRlbGl2ZXJ5RnVuZAARZGVsaXZlcnlMb2NrZWRLZXkCDmRlbGl2ZXJ5TG9ja2VkAA1sYXN0VG91cklkS2V5Ag4lc19fbGFzdFRvdXJJZAEVa2V5VG91clN0YXRpY0RhdGFCeUlkAQN0SWQJAKwCAgIWJXMlZF9fdG91clN0YXRpY0RhdGFfXwkApAMBBQN0SWQBFmtleVRvdXJEeW5hbWljRGF0YUJ5SWQBA3RJZAkArAICAhclcyVkX190b3VyRHluYW1pY0RhdGFfXwkApAMBBQN0SWQBGmtleUJlc3RSZXN1bHRCeVRvdXJBbmREdWNrAgN0SWQLZHVja0Fzc2V0SWQJALkJAgkAzAgCAh8lcyVkJXNfX2Jlc3RSZXN1bHRCeVRvdXJBbmREdWNrCQDMCAIJAKQDAQUDdElkCQDMCAIFC2R1Y2tBc3NldElkBQNuaWwCAl9fAAlpZHhTdGF0aWMAAAAKaWR4RHluYW1pYwABAAp0U3RhdGljRW5kAAYADnREeW5hbWljU3RhdHVzAAEBC2dldFRvdXJEYXRhAgx0b3VyQ29udHJhY3QDdElkBAZzdGF0aWMJALUJAgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFDHRvdXJDb250cmFjdAkBFWtleVRvdXJTdGF0aWNEYXRhQnlJZAEFA3RJZAkArAICCQCsAgICGUVycm9yIHJlYWRpbmcgdG91cm5hbWVudCAJAKQDAQUDdElkAgUgZGF0YQICX18EB2R5bmFtaWMJALwJAgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFDHRvdXJDb250cmFjdAkBFmtleVRvdXJEeW5hbWljRGF0YUJ5SWQBBQN0SWQJAKwCAgkArAICAhlFcnJvciByZWFkaW5nIHRvdXJuYW1lbnQgCQCkAwEFA3RJZAIFIGRhdGECAl9fCQDMCAIFBnN0YXRpYwkAzAgCBQdkeW5hbWljBQNuaWwBDmlzSW5Ub3VybmFtZW50Agx0b3VyQ29udHJhY3QIbG9jYXRpb24EBmxhc3RJZAkBC3ZhbHVlT3JFbHNlAgkAmggCBQx0b3VyQ29udHJhY3QFDWxhc3RUb3VySWRLZXkAAAQDbG9jCQC1CQIFCGxvY2F0aW9uAgFfBANub3cIBQlsYXN0QmxvY2sJdGltZXN0YW1wBAV0RGF0YQkBC2dldFRvdXJEYXRhAgUMdG91ckNvbnRyYWN0BQZsYXN0SWQEBnN0YXRpYwkAkQMCBQV0RGF0YQUJaWR4U3RhdGljBAdkeW5hbWljCQCRAwIFBXREYXRhBQppZHhEeW5hbWljAwMDCQAAAgkAkQMCBQNsb2MFCmxvY0lkeFR5cGUCAVQJAAACCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDbG9jBQ9sb2NJZHhDb250aW5lbnQFBmxhc3RJZAcJAAACCQCRAwIFB2R5bmFtaWMFDnREeW5hbWljU3RhdHVzAgpJTlBST0dSRVNTBwkAZgIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQZzdGF0aWMFCnRTdGF0aWNFbmQFA25vdwcBDGlzSW5EZWxpdmVyeQEIbG9jYXRpb24EA2xvYwkAtQkCBQhsb2NhdGlvbgIBXwQDbm93CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQJc3RhcnRUaW1lCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDbG9jBQ9sb2NJZHhDb250aW5lbnQECGRpc3RhbmNlCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDbG9jBQhsb2NJZHhJZAMDCQAAAgkAkQMCBQNsb2MFCmxvY0lkeFR5cGUCAUQJAGYCCQBkAgUJc3RhcnRUaW1lBRJURU5fTUlOVVRFU19NSUxMSVMFA25vdwcJAGcCAAMFCGRpc3RhbmNlBwEPaXNVc3VhbExvY2F0aW9uAQhsb2NhdGlvbgQHbG9jVHlwZQkAkQMCCQC1CQIFCGxvY2F0aW9uAgFfBQpsb2NJZHhUeXBlAwkBAiE9AgUHbG9jVHlwZQIBVAkBAiE9AgUHbG9jVHlwZQIBRAcBCW9uTWlzc2lvbgIMdG91ckNvbnRyYWN0CGxvY2F0aW9uBAZsYXN0SWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUMdG91ckNvbnRyYWN0BQ1sYXN0VG91cklkS2V5AAAEA2xvYwkAtQkCBQhsb2NhdGlvbgIBXwQDbm93CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQFdERhdGEJAQtnZXRUb3VyRGF0YQIFDHRvdXJDb250cmFjdAUGbGFzdElkBAZzdGF0aWMJAJEDAgUFdERhdGEFCWlkeFN0YXRpYwQHZHluYW1pYwkAkQMCBQV0RGF0YQUKaWR4RHluYW1pYwQHbG9jVHlwZQkAkQMCBQNsb2MFCmxvY0lkeFR5cGUDCQAAAgUHbG9jVHlwZQIBRAYDAwMJAAACCQCRAwIFA2xvYwUKbG9jSWR4VHlwZQIBVAkAAAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNsb2MFD2xvY0lkeENvbnRpbmVudAUGbGFzdElkBwkAAAIJAJEDAgUHZHluYW1pYwUOdER5bmFtaWNTdGF0dXMCCklOUFJPR1JFU1MHCQBmAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBnN0YXRpYwUKdFN0YXRpY0VuZAUDbm93BwESZ2V0UmVjaXBlTWF0ZXJpYWxzAQZyZWNpcGUJAGgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUGcmVjaXBlBQlySWR4Q29lZmYFCUNPRUZGMk1BVAEMY2hlYXRBdHRlbXB0AwZvbGRMb2MGbmV3TG9jCWNoZWF0Q2FzZQkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAhZDaGVhdCBhdHRlbXB0OiBvbGRMb2M9BQZvbGRMb2MCCSwgbmV3TG9jPQUGbmV3TG9jAgcsIGNhc2U9CQCkAwEFCWNoZWF0Q2FzZQAWS1NfU0VQQVJBVEVfUFVCTElDX0tFWQcAGEtTX0FMTE9XX0JJR19JTkZSQV9NRVJHRQcAEUtTX0FMTE9XX0RFTElWRVJZBgAFY2hhaW4JAMkBAgkAygECCAUEdGhpcwVieXRlcwABAAEAC3VzZHRBc3NldElkBAckbWF0Y2gwBQVjaGFpbgMJAAACAQFXBQckbWF0Y2gwASCE2nqyCAM/TtG7yo7ui5O8yYLdC136B5ao1CP5qA//uQMJAAACAQFUBQckbWF0Y2gwASBVsdifcoeC7+XjW42sBatl3ppDoS8WuwXzGreHpfHFGAkAAgECDVVua25vd24gY2hhaW4AFWRlZmF1bHRSZXN0QWRkcmVzc1N0cgQHJG1hdGNoMAUFY2hhaW4DCQAAAgEBVwUHJG1hdGNoMAIjM1BRQ3V2RmJ2aDRMa1BVbnJuVTF6M2puYkExcDltM1dOaHYDCQAAAgEBVAUHJG1hdGNoMAIjM011bWtHR3p0Q0tBWHBXRHF4a2Rkb2ZxWFNVYnFRa3ZTSnkJAAIBAg1Vbmtub3duIGNoYWluABFJbmZyYVVwZ3JhZGVDb3N0UwQHJG1hdGNoMAUFY2hhaW4DCQAAAgEBVwUHJG1hdGNoMACAyK+gJQMJAAACAQFUBQckbWF0Y2gwAIDC1y8JAAIBAg1Vbmtub3duIGNoYWluAA5hcmJpdHJhZ2VEZWxheQQHJG1hdGNoMAUFY2hhaW4DCQAAAgEBVwUHJG1hdGNoMACAuJkpAwkAAAIBAVQFByRtYXRjaDAA4NQDCQACAQINVW5rbm93biBjaGFpbgADU0VQAgJfXwAFTVVMVDYAwIQ9AAVNVUxUOACAwtcvAAVTU0laRQAZAAVNU0laRQBkAAVMU0laRQDhAQAGWExTSVpFAJADAAdYWExTSVpFAPEEAAVJVEVSNgkAzAgCAAAJAMwIAgABCQDMCAIAAgkAzAgCAAMJAMwIAgAECQDMCAIABQUDbmlsAQ9nZXRTdHJpbmdPckZhaWwCB2FkZHJlc3MDa2V5CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUHYWRkcmVzcwUDa2V5CQC5CQIJAMwIAgIKbWFuZGF0b3J5IAkAzAgCCQClCAEFB2FkZHJlc3MJAMwIAgIBLgkAzAgCBQNrZXkJAMwIAgIPIGlzIG5vdCBkZWZpbmVkBQNuaWwCAAARSWR4Q2ZnU3Rha2luZ0RhcHAAAQARSWR4Q2ZnRWNvbm9teURhcHAAAgAUSWR4Q2ZnR292ZXJuYW5jZURhcHAAAwANSWR4Q2ZnV2xnRGFwcAAEABRJZHhDZmdUb3VybmFtZW50RGFwcAAHAA9JZHhDZmdBY3Jlc0RhcHAACAEKa2V5UmVzdENmZwACDiVzX19yZXN0Q29uZmlnAQ5rZXlSZXN0QWRkcmVzcwACDCVzX19yZXN0QWRkcgERcmVhZFJlc3RDZmdPckZhaWwBBHJlc3QJALwJAgkBD2dldFN0cmluZ09yRmFpbAIFBHJlc3QJAQprZXlSZXN0Q2ZnAAUDU0VQARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCB3Jlc3RDZmcDaWR4CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQdyZXN0Q2ZnBQNpZHgJAKwCAgIqUmVzdCBjZmcgZG9lc24ndCBjb250YWluIGFkZHJlc3MgYXQgaW5kZXggCQCkAwEFA2lkeAAMcmVzdENvbnRyYWN0CQERQGV4dHJOYXRpdmUoMTA2MikBCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMJAQ5rZXlSZXN0QWRkcmVzcwAFFWRlZmF1bHRSZXN0QWRkcmVzc1N0cgAHcmVzdENmZwkBEXJlYWRSZXN0Q2ZnT3JGYWlsAQUMcmVzdENvbnRyYWN0AA9zdGFraW5nQ29udHJhY3QJARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCBQdyZXN0Q2ZnBRFJZHhDZmdTdGFraW5nRGFwcAAPZWNvbm9teUNvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUHcmVzdENmZwURSWR4Q2ZnRWNvbm9teURhcHAAC2dvdkNvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUHcmVzdENmZwUUSWR4Q2ZnR292ZXJuYW5jZURhcHAAC3dsZ0NvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUHcmVzdENmZwUNSWR4Q2ZnV2xnRGFwcAASdG91cm5hbWVudENvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUHcmVzdENmZwUUSWR4Q2ZnVG91cm5hbWVudERhcHAADWFjcmVzQ29udHJhY3QJARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCBQdyZXN0Q2ZnBQ9JZHhDZmdBY3Jlc0RhcHAACnJlY0xhbmROdW0AAAALcmVjTGFuZFNpemUAAQALcmVjVGVycmFpbnMAAgAMcmVjQ29udGluZW50AAMADXdsZ0Fzc2V0SWRLZXkCC3dsZ19hc3NldElkAAp3bGdBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJwIAgULd2xnQ29udHJhY3QFDXdsZ0Fzc2V0SWRLZXkCGFdMR09MRCBpcyBub3QgaXNzdWVkIHlldAAPYWNyZXNBc3NldElkS2V5AgxhY3Jlc0Fzc2V0SWQADGFjcmVzQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCcCAIFDWFjcmVzQ29udHJhY3QFD2FjcmVzQXNzZXRJZEtleQIXQUNSRVMgaXMgbm90IGlzc3VlZCB5ZXQAC3JhbmRvbURlbGF5AAIBCWtleUNvbW1pdAEHYWRkcmVzcwkArAICAhNmaW5pc2hCbG9ja0ZvckFkZHJfBQdhZGRyZXNzARFrZXlSZXNQcm9wb3J0aW9ucwACE3Jlc1R5cGVzUHJvcG9ydGlvbnMBFmtleVJlc1R5cGVzQnlDb250aW5lbnQBCWNvbnRpbmVudAkArAICAhRyZXNUeXBlc0J5Q29udGluZW50XwUJY29udGluZW50ARVrZXlTdGFrZWRMYW5kc0J5T3duZXIBCW93bmVyQWRkcgkArAICAhNzdGFrZWRMYW5kc0J5T3duZXJfBQlvd25lckFkZHIBFmtleVN0YWtlZFBpZWNlc0J5T3duZXIBCW93bmVyQWRkcgkArAICAhRzdGFrZWRQaWVjZXNCeU93bmVyXwUJb3duZXJBZGRyAQhhc1N0cmluZwEBdgQHJG1hdGNoMAUBdgMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXMFByRtYXRjaDAFAXMJAAIBAhhmYWlsIHRvIGNhc3QgaW50byBTdHJpbmcBBWFzSW50AQF2BAckbWF0Y2gwBQF2AwkAAQIFByRtYXRjaDACA0ludAQBbgUHJG1hdGNoMAUBbgkAAgECFWZhaWwgdG8gY2FzdCBpbnRvIEludAEJYXNBbnlMaXN0AQF2BAckbWF0Y2gwBQF2AwkAAQIFByRtYXRjaDACCUxpc3RbQW55XQQBbAUHJG1hdGNoMAUBbAkAAgECG2ZhaWwgdG8gY2FzdCBpbnRvIExpc3RbQW55XQEJYXNCb29sZWFuAQF2BAckbWF0Y2gwBQF2AwkAAQIFByRtYXRjaDACB0Jvb2xlYW4EAXMFByRtYXRjaDAFAXMJAAIBAhlmYWlsIHRvIGNhc3QgaW50byBCb29sZWFuARBhc1N0cmluZ0ludFR1cGxlAQN2YWwEByRtYXRjaDAFA3ZhbAMJAAECBQckbWF0Y2gwAg0oU3RyaW5nLCBJbnQpBAJ0MgUHJG1hdGNoMAUCdDIJAAIBAh9mYWlsIHRvIGNhc3QgaW50byAoU3RyaW5nLCBJbnQpAQ9udW1QaWVjZXNCeVNpemUBCGxhbmRTaXplBAckbWF0Y2gwBQhsYW5kU2l6ZQMJAAACAgFTBQckbWF0Y2gwBQVTU0laRQMJAAACAgFNBQckbWF0Y2gwBQVNU0laRQMJAAACAgFMBQckbWF0Y2gwBQVMU0laRQMJAAACAgJYTAUHJG1hdGNoMAUGWExTSVpFAwkAAAICA1hYTAUHJG1hdGNoMAUHWFhMU0laRQkAAgECEVVua25vd24gbGFuZCBzaXplAQdpc0RpZ2l0AQFzCQEJaXNEZWZpbmVkAQkAtgkBBQFzAQprZXlCbG9ja2VkAAIQY29udHJhY3RzQmxvY2tlZAERa2V5TGFzdFR4SWRCeVVzZXIBBGFkZHIJAKwCAgIPbGFzdFR4SWRCeVVzZXJfBQRhZGRyAQpmaXhlZFBvaW50AgN2YWwIZGVjaW1hbHMEBnRlblBvdwkAbAYACgAABQhkZWNpbWFscwAAAAAFBERPV04EB2xvd1BhcnQJAKQDAQkAagIFA3ZhbAUGdGVuUG93BAZ6ZXJvZXMJALACAgkApAMBBQZ0ZW5Qb3cJAGQCAAEJALECAQUHbG93UGFydAkArAICCQCsAgIJAKwCAgkApAMBCQBpAgUDdmFsBQZ0ZW5Qb3cCAS4FBnplcm9lcwUHbG93UGFydAEPZ2V0UmFuZG9tTnVtYmVyAwhtYXhWYWx1ZQxmaW5pc2hIZWlnaHQKYXV4RW50cm9weQQPcmFuZG9tU2VlZEJsb2NrCQEFdmFsdWUBCQDtBwEFDGZpbmlzaEhlaWdodAQKcmFuZG9tSGFzaAkA9wMBCQDLAQIJAQV2YWx1ZQEIBQ9yYW5kb21TZWVkQmxvY2sDdnJmBQphdXhFbnRyb3B5CQBqAgkAsQkBBQpyYW5kb21IYXNoBQhtYXhWYWx1ZQANaW5jdWJhdG9yQWRkcgQHJG1hdGNoMAUFY2hhaW4DCQAAAgEBVwUHJG1hdGNoMAkBEUBleHRyTmF0aXZlKDEwNjIpAQIjM1BFa3RWdXgyUmhjaFNONjNEc0RvNGI0bXo0UXF6S1NlRHYDCQAAAgEBVAUHJG1hdGNoMAUEdGhpcwkAAgECDVVua25vd24gY2hhaW4AC2JyZWVkZXJBZGRyBAckbWF0Y2gwBQVjaGFpbgMJAAACAQFXBQckbWF0Y2gwCQERQGV4dHJOYXRpdmUoMTA2MikBAiMzUERWdVU0NUg3RWg1ZG10TmJuUk5SU3RHd1VMQTdOWTZIYgMJAAACAQFUBQckbWF0Y2gwBQR0aGlzCQACAQINVW5rbm93biBjaGFpbgADcHViBAckbWF0Y2gwBQVjaGFpbgMJAAACAQFXBQckbWF0Y2gwAwUWS1NfU0VQQVJBVEVfUFVCTElDX0tFWQEgqxdXjxVn41lUQbDWcutmm8Sj02Ze1ZmGUN+YNx+yCQgBIE9T4ho/VKjWnVJOEx1GJ1W9s1PzLHvJVFSw/0PBtBQoAwkAAAIBAVQFByRtYXRjaDABIE9T4ho/VKjWnVJOEx1GJ1W9s1PzLHvJVFSw/0PBtBQoCQACAQINVW5rbm93biBjaGFpbgAMRU1QVFlfUFJPRDUwAZADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARRklWRU1JTlVURVNNSUxMSVMA4KcSAAxSRU5BTUlOR0NPU1QAwJaxAgAKTUFYTkFNRUxFTgAyABVJbmZyYVVwZ3JhZGVDb3N0U1VzZHQAgK3iBAAMRVhQTUFURVJJQUxTBAckbWF0Y2gwBQVjaGFpbgMJAAACAQFXBQckbWF0Y2gwAKbdgu2rBwMJAAACAQFUBQckbWF0Y2gwAKqngbMJCQACAQINVW5rbm93biBjaGFpbgAHRVhQVVNEVAQHJG1hdGNoMAUFY2hhaW4DCQAAAgEBVwUHJG1hdGNoMACA5Zp3AwkAAAIBAVQFByRtYXRjaDAAgOWadwkAAgECDVVua25vd24gY2hhaW4ADFNfQ09TVF9BQ1JFUwCA8ouoCQAFRklWRVgJALYCAQAFAAdUV0VOVFlYCQC2AgEAFAAIVFdFTlRZMlgJALYCAQkAaAIAFAAUAAhUV0VOVFkzWAkAtgIBCQBoAgkAaAIAFAAUABQACFRXRU5UWTRYCQC2AgEJAGgCCQBoAgkAaAIAFAAUABQAFAAIVFdFTlRZNVgJALYCAQkAaAIJAGgCCQBoAgkAaAIAFAAUABQAFAAUAA9QUkVTQUxFTlVNTEFORFMA9AMBEmtleU5leHRGcmVlTGFuZE51bQACC25leHRMYW5kTnVtARprZXlMYW5kQ3VzdG9tTmFtZVRvQXNzZXRJZAEEbmFtZQkArAICAgRsY25fBQRuYW1lARBrZXlMYW5kVG9Bc3NldElkAQdsYW5kTnVtCQCsAgICA2xhXwUHbGFuZE51bQEea2V5SW5mcmFMZXZlbEJ5QXNzZXRJZEFuZE93bmVyAgdhc3NldElkCW93bmVyQWRkcgkArAICCQCsAgIJAKwCAgIFaWxhb18FB2Fzc2V0SWQCAV8FCW93bmVyQWRkcgERa2V5TGFuZE51bVRvT3duZXIBB2xhbmROdW0JAKwCAgIDbG9fBQdsYW5kTnVtARprZXlEdWNrQ3VzdG9tTmFtZVRvQXNzZXRJZAEEbmFtZQkArAICAhFkdWNrQnlDdXN0b21OYW1lXwUEbmFtZQEWa2V5Q3VzdG9tTmFtZVRvQWRkcmVzcwEEbmFtZQkArAICAhRhY2NvdW50QnlDdXN0b21OYW1lXwUEbmFtZQEJa2V5T2xkaWVzAAIKb2xkaWVzTGlzdAALY2xhaW1Nb2RlV2gAAAANY2xhaW1Nb2RlRHVjawABABNjbGFpbU1vZGVXaFRoZW5EdWNrAAIACGZsSGVhbHRoAAAAC2ZsVGltZXN0YW1wAAUAB2ZsQm9udXMABgALZmxQcm9kc1VzZWQABwEHbmZ0TmFtZQIHbGFuZE51bQhsYW5kU2l6ZQkArAICCQCsAgIFCkxBTkRQUkVGSVgFB2xhbmROdW0FCGxhbmRTaXplAQh0b1ZvbHVtZQIGYW1vdW50B3BrZ1NpemUEBHBrZ3MDCQBnAgUGYW1vdW50AAAJAGkCCQBlAgkAZAIFBmFtb3VudAUHcGtnU2l6ZQABBQdwa2dTaXplCQEBLQEJAGkCCQBlAgkAZAIJAQEtAQUGYW1vdW50BQdwa2dTaXplAAEFB3BrZ1NpemUJAGgCBQRwa2dzBQVNVUxUOAETZGlzdHJpYnV0ZUJ5V2VpZ2h0cwIFdG90YWwHd2VpZ2h0cwQDc3VtCQBkAgkAZAIJAGQCCQBkAgkAZAIJAJEDAgUHd2VpZ2h0cwAACQCRAwIFB3dlaWdodHMAAQkAkQMCBQd3ZWlnaHRzAAIJAJEDAgUHd2VpZ2h0cwADCQCRAwIFB3dlaWdodHMABAkAkQMCBQd3ZWlnaHRzAAUDCQBnAgAABQNzdW0JAAIBAhBaZXJvIHdlaWdodHMgc3VtBAVub3JtNgkAawMFBXRvdGFsBQVNVUxUNgUDc3VtCgEKbm9ybWFsaXplcgIDYWNjBGVsZW0JAM0IAgUDYWNjCQBrAwUEZWxlbQUFbm9ybTYFBU1VTFQ2CgACJGwFB3dlaWdodHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBCm5vcm1hbGl6ZXICBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDYJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYBEmdldE5lZWRlZE1hdGVyaWFscwEFdG90YWwEBXByb3BzCQC1CQIJAQV2YWx1ZQEJAKIIAQkBEWtleVJlc1Byb3BvcnRpb25zAAIBXwMJAQIhPQIJAJADAQUFcHJvcHMFBk5VTVJFUwkAAgECFldyb25nIHByb3BvcnRpb25zIGRhdGEEAXIJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXByb3BzAAAJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXByb3BzAAEJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXByb3BzAAIJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXByb3BzAAMJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXByb3BzAAQJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXByb3BzAAUFA25pbAkBE2Rpc3RyaWJ1dGVCeVdlaWdodHMCBQV0b3RhbAUBcgERc3VidHJhY3RNYXRlcmlhbHMDDHNob3VsZFVzZU1hdANoYXMJdG90YWxOZWVkBARuZWVkCQESZ2V0TmVlZGVkTWF0ZXJpYWxzAQUJdG90YWxOZWVkCgEKc3VidHJhY3RvcgIDYWNjA2lkeAQGcmVzdWx0CQBlAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFA2hhcwUDaWR4CQCRAwIFBG5lZWQFA2lkeAMJAGYCAAAFBnJlc3VsdAkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAhhOb3QgZW5vdWdoIG1hdGVyaWFsIGlkeD0JAKQDAQUDaWR4AgssIHlvdSBoYXZlIAkAkQMCBQNoYXMFA2lkeAILLCBidXQgbmVlZCAJAKQDAQkAkQMCBQRuZWVkBQNpZHgJAM0IAgUDYWNjCQCkAwEFBnJlc3VsdAMFDHNob3VsZFVzZU1hdAoAAiRsBQVJVEVSNgoAAiRzCQCQAwEFAiRsCgAFJGFjYzAFA25pbAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEKc3VidHJhY3RvcgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNgkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgUDaGFzARFzdWJ0cmFjdEVxdWlwbWVudAIFb2xkRXEFcFVzZWQDCQAAAgUFcFVzZWQCAAkAlAoCBQVvbGRFcQcKAQdzdWJVc2VkAgNhY2MGaWR4QW10BAVwYXJ0cwkAtQkCBQZpZHhBbXQCASwDCQECIT0CCQCQAwEFBXBhcnRzAAIJAAIBAihJbmNvcnJlY3QgZm9ybWF0LCBzaG91bGQgYmUgaW5kZXgsYW1vdW50BANpZHgJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwYXJ0cwAAAwMJAGYCAAAFA2lkeAYJAGcCBQNpZHgJAJADAQUQcHJvZHVjdGlvbk1hdHJpeAkAAgECE1Vua25vd24gcHJvZHVjdCBpZHgEA2FtdAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXBhcnRzAAEEB2VxUGFydHMJALUJAggFA2FjYwJfMQkArAICCQCRAwIFBXBhcnRzAAACAToDCQECIT0CCQCQAwEFB2VxUGFydHMAAgkAAgEJAKwCAgkArAICAg9Zb3UgZG9uJ3QgaGF2ZSAJAJEDAgUJcHJvZFR5cGVzBQNpZHgCCSBlcXVpcHBlZAQDdG1wCQCRAwIFB2VxUGFydHMAAQQGbnVtTGVuAwkBB2lzRGlnaXQBCQCvAgIJALACAgUDdG1wAAEAAQACAAEEBGN1cnIJAQ1wYXJzZUludFZhbHVlAQkArwICBQN0bXAFBm51bUxlbgQEdGFpbAkAsAICBQN0bXAFBm51bUxlbgQGbmV3QW10AwkAZwIFBGN1cnIFA2FtdAkAZQIFBGN1cnIFA2FtdAkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAg1Zb3UgZXF1aXBwZWQgCQCkAwEFBGN1cnICBCBvZiAJAJEDAgUJcHJvZFR5cGVzBQNpZHgCEywgYnV0IHRyaWVkIHRvIHVzZSAJAKQDAQUDYW10CQCUCgIJAKwCAgkArAICCQCsAgIJAKwCAgkAkQMCBQdlcVBhcnRzAAAJAJEDAgUFcGFydHMAAAIBOgkApAMBBQZuZXdBbXQFBHRhaWwDCAUDYWNjAl8yBgMDCQBnAgUDaWR4AAYJAGcCAAgFA2lkeAcJAAACBQZuZXdBbXQAAAcKAAIkbAkAtQkCBQVwVXNlZAIBXwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJQKAgUFb2xkRXEHCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQdzdWJVc2VkAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAQ5wcm9kU3RyVG9CeXRlcwEHcHJvZFN0cgQFcExpc3QDCQAAAgUHcHJvZFN0cgIABQNuaWwJALwJAgUHcHJvZFN0cgIBXwoBBHRvQlYCA2FjYwZyZWNpcGUEAWoJAGkCCQDIAQEFA2FjYwAIBARjdXJyAwkAZgIJAJADAQUFcExpc3QFAWoJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwTGlzdAUBagAACQDLAQIFA2FjYwkAmgMBBQRjdXJyCgACJGwFEHByb2R1Y3Rpb25NYXRyaXgKAAIkcwkAkAMBBQIkbAoABSRhY2MwAQAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBBHRvQlYCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDUwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAhACIAIwAkACUAJgAnACgAKQAqACsALAAtAC4ALwAwADEAMgEOYnl0ZXNUb1Byb2RTdHIBAmJ2CgEGZnJvbUJWAgNhY2MGcmVjaXBlBAFqCQCQAwEFA2FjYwQBYgkAyQECCQDKAQIFAmJ2CQBoAgAIBQFqAAgJAM0IAgUDYWNjCQCkAwEJALEJAQUBYgkAugkCCgACJGwFEHByb2R1Y3Rpb25NYXRyaXgKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBBmZyb21CVgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgNTAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyAgFfARVjaGVja1N0YXRSZXF1aXJlbWVudHMCCWR1Y2tTdGF0cwRyZXFzCgEFY2hlY2sCA2FjYwFqBARidWZmAwkAZgIJAJADAQUJZHVja1N0YXRzCQBkAgAHBQFqCQCRAwIFCWR1Y2tTdGF0cwkAZAIABwUBagAAAwkAZgIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRyZXFzBQFqCQBkAgkAkQMCBQlkdWNrU3RhdHMFAWoFBGJ1ZmYJAAIBCQCsAgICG1JlcXVpcmVtZW50IG5vdCBzYXRpc2ZpZWQ6IAkAkQMCBQxyZXF1aXJlbWVudHMFAWoGCgACJGwJAMwIAgAACQDMCAIAAQkAzAgCAAIJAMwIAgADCQDMCAIABAkAzAgCAAUJAMwIAgAGBQNuaWwKAAIkcwkAkAMBBQIkbAoABSRhY2MwBwoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEFY2hlY2sCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDcJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwEKcGxhY2VQcm9kQgYGaWR4Q250BXBMaXN0CmlzUG9zaXRpdmUJZHVja1N0YXRzCG9jY3VwaWVkBGZyZWUEBXBhcnRzCQC1CQIFBmlkeENudAIBOgMJAQIhPQIJAJADAQUFcGFydHMAAgkAAgECKEluY29ycmVjdCBmb3JtYXQsIHNob3VsZCBiZSBpbmRleDphbW91bnQDAwkBASEBBQppc1Bvc2l0aXZlCQECIT0CCQCxAgEJAJEDAgUFcGFydHMAAAACBwkAAgECK1Byb2R1Y3QgaWR4IHNob3VsZCBiZSAyIGRpZ2l0cywgemVybyBwYWRkZWQECnByb2R1Y3RJZHgJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwYXJ0cwAABAVjb3VudAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXBhcnRzAAEDCQEBIQEJAQ9jb250YWluc0VsZW1lbnQCBRBmb3J0QWxsb3dlZFByb2RzBQpwcm9kdWN0SWR4CQACAQkArAICCQCsAgICCVByb2R1Y3QgJwkAkQMCBQlwcm9kVHlwZXMFCnByb2R1Y3RJZHgCIScgY2Fubm90IGJlIHVzZWQgZm9yIGxhbmQgZGVmZW5zZQMJAGYCAAAFBWNvdW50CQACAQIXQ291bnQgY2FuJ3QgYmUgbmVnYXRpdmUDCQBmAgUFY291bnQFDU1BWFBST0RJTlNMT1QJAAIBCQCsAgIJAKwCAgkArAICAhRDYW4ndCBwdXQgbW9yZSB0aGFuIAkApAMBBQ1NQVhQUk9ESU5TTE9UAgQgb2YgCQCRAwIFCXByb2RUeXBlcwUKcHJvZHVjdElkeAMJAAACBQVjb3VudAAACQCVCgMFBXBMaXN0BQhvY2N1cGllZAUEZnJlZQQEaGVhZAkAyQECBQVwTGlzdAkAaAIACAUKcHJvZHVjdElkeAQEY3VycgkAsQkBCQDJAQIJAMoBAgUFcExpc3QJAGgCAAgFCnByb2R1Y3RJZHgACAQEdGFpbAkAygECBQVwTGlzdAkAaAIACAkAZAIFCnByb2R1Y3RJZHgAAQQGcmVjaXBlCQC1CQIJAJEDAgUQcHJvZHVjdGlvbk1hdHJpeAUKcHJvZHVjdElkeAIBXwMDCQEBIQEFCmlzUG9zaXRpdmUJAGYCBQVjb3VudAUEY3VycgcJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIJWW91IGhhdmUgCQCkAwEFBGN1cnICBCBvZiAJAJEDAgUJcHJvZFR5cGVzBQpwcm9kdWN0SWR4AhMsIGJ1dCB0cmllZCB0byB1c2UgCQCkAwEFBWNvdW50BAZuZXdBbXQDAwkBASEBBQppc1Bvc2l0aXZlCQEVY2hlY2tTdGF0UmVxdWlyZW1lbnRzAgUJZHVja1N0YXRzCQC1CQIJAJEDAgUGcmVjaXBlBRBySWR4UmVxdWlyZW1lbnRzAgEsBwkAZQIFBGN1cnIFBWNvdW50CQBkAgUEY3VycgUFY291bnQECGRlbHRhVm9sCQBlAgkBCHRvVm9sdW1lAgUGbmV3QW10BQ5QUk9EVUNUUEtHU0laRQkBCHRvVm9sdW1lAgUEY3VycgUOUFJPRFVDVFBLR1NJWkUJAJUKAwkAywECCQDLAQIFBGhlYWQJAJoDAQUGbmV3QW10BQR0YWlsCQBkAgUIb2NjdXBpZWQFCGRlbHRhVm9sCQBlAgUEZnJlZQUIZGVsdGFWb2wBCGFkZFByb2RCBwZpZHhDbnQFcExpc3QKaXNQb3NpdGl2ZQdzZWdtZW50B21haW5BdXgEc2xvdAlkdWNrU3RhdHMEBXBhcnRzCQC1CQIFBmlkeENudAIBOgMJAQIhPQIJAJADAQUFcGFydHMAAgkAAgECKEluY29ycmVjdCBmb3JtYXQsIHNob3VsZCBiZSBpbmRleDphbW91bnQDAwkBASEBBQppc1Bvc2l0aXZlCQECIT0CCQCxAgEJAJEDAgUFcGFydHMAAAACBwkAAgECK1Byb2R1Y3QgaWR4IHNob3VsZCBiZSAyIGRpZ2l0cywgemVybyBwYWRkZWQECnByb2R1Y3RJZHgJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwYXJ0cwAABAVjb3VudAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXBhcnRzAAEDAwkAZgIAAAUKcHJvZHVjdElkeAYJAGcCBQpwcm9kdWN0SWR4CQCQAwEFEHByb2R1Y3Rpb25NYXRyaXgJAAIBAhNVbmtub3duIHByb2R1Y3QgaWR4AwkAZgIAAAUFY291bnQJAAIBAhdDb3VudCBjYW4ndCBiZSBuZWdhdGl2ZQMJAGYCBQVjb3VudAUNTUFYUFJPRElOU0xPVAkAAgEJAKwCAgkArAICCQCsAgICFENhbid0IHB1dCBtb3JlIHRoYW4gCQCkAwEFDU1BWFBST0RJTlNMT1QCBCBvZiAJAJEDAgUJcHJvZFR5cGVzBQpwcm9kdWN0SWR4AwkAAAIFBWNvdW50AAAJAJQKAgUFcExpc3QHBARoZWFkCQDJAQIFBXBMaXN0CQBoAgAIBQpwcm9kdWN0SWR4BARjdXJyCQCxCQEJAMkBAgkAygECBQVwTGlzdAkAaAIACAUKcHJvZHVjdElkeAAIBAR0YWlsCQDKAQIFBXBMaXN0CQBoAgAICQBkAgUKcHJvZHVjdElkeAABBAZyZWNpcGUJALUJAgkAkQMCBRBwcm9kdWN0aW9uTWF0cml4BQpwcm9kdWN0SWR4AgFfAwMJAQEhAQUKaXNQb3NpdGl2ZQkAZgIFBWNvdW50BQRjdXJyBwkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAglZb3UgaGF2ZSAJAKQDAQUEY3VycgIEIG9mIAkAkQMCBQlwcm9kVHlwZXMFCnByb2R1Y3RJZHgCEywgYnV0IHRyaWVkIHRvIHVzZSAJAKQDAQUFY291bnQECWlzQmlnSXRlbQMDCQEBIQEFCmlzUG9zaXRpdmUJARVjaGVja1N0YXRSZXF1aXJlbWVudHMCBQlkdWNrU3RhdHMJALUJAgkAkQMCBQZyZWNpcGUFEHJJZHhSZXF1aXJlbWVudHMCASwHBAZjb21wYXQJAJEDAgUGcmVjaXBlBQlySWR4U2xvdHMDCQAAAgUGY29tcGF0AgAJAAIBAhdJdGVtIGNhbm5vdCBiZSBlcXVpcHBlZAQBYwkBDXBhcnNlSW50VmFsdWUBBQZjb21wYXQEBGNTZWcJAGkCBQFjAGQDCQECIT0CBQdzZWdtZW50BQRjU2VnCQACAQIUU2VnbWVudCBpbmNvbXBhdGlibGUECGNNYWluQXV4CQBpAgkAagIFAWMAZAAKAwkBAiE9AgUHbWFpbkF1eAUIY01haW5BdXgJAAIBAhFTbG90IGluY29tcGF0aWJsZQQJY051bVNsb3RzCQBqAgUBYwAKAwMJAQIhPQIFBHNsb3QAAAkAZgIFCWNOdW1TbG90cwABBwkAAgECHkJpZyBpdGVtcyBzaG91bGQgb2NjdXB5IHNsb3QgMAkAZgIFCWNOdW1TbG90cwABBwkAlAoCCQDLAQIJAMsBAgUEaGVhZAkAmgMBCQBkAgUEY3VycgMFCmlzUG9zaXRpdmUFBWNvdW50CQEBLQEFBWNvdW50BQR0YWlsBQlpc0JpZ0l0ZW0BC3Nsb3RzR3JvdXBCBgFnBGJwSW4KaXNQb3NpdGl2ZQdzZWdtZW50B21haW5BdXgFc3RhdHMDCQECIT0CBQFnAgAEBXNsb3RzCQC1CQIFAWcCASwDCQBmAgkAkAMBBQVzbG90cwUITUFYU0xPVFMJAAIBAhJXcm9uZyBzbG90cyBmb3JtYXQEAnMwCQCRAwIFBXNsb3RzAAAEAnMxAwkAZgIJAJADAQUFc2xvdHMAAQkAkQMCBQVzbG90cwABAgADAwkAAAIFAnMwAgAJAAACBQJzMQIABwUEYnBJbgQFdG1wUzADCQECIT0CBQJzMAIACQEIYWRkUHJvZEIHBQJzMAUEYnBJbgUKaXNQb3NpdGl2ZQUHc2VnbWVudAUHbWFpbkF1eAAABQVzdGF0cwkAlAoCBQRicEluBwMJAQIhPQIFAnMxAgADCAUFdG1wUzACXzIJAAIBAh5CaWcgaXRlbSBhbHJlYWR5IG9jY3VwaWVzIHNsb3QICQEIYWRkUHJvZEIHBQJzMQgFBXRtcFMwAl8xBQppc1Bvc2l0aXZlBQdzZWdtZW50BQdtYWluQXV4AAEFBXN0YXRzAl8xCAUFdG1wUzACXzEFBGJwSW4BBmRyZXNzQgQHc2VnTGlzdAZwQnl0ZXMKaXNQb3NpdGl2ZQVzdGF0cwoBB3NlZ21lbnQCA2FjYwNzZWcEAWoIBQNhY2MCXzEEB21haW5BdXgJALUJAgUDc2VnAgE7AwkBAiE9AgkAkAMBBQdtYWluQXV4BQpOVU1NQUlOQVVYCQACAQIUV3Jvbmcgc2VnbWVudCBmb3JtYXQEAW0JAJEDAgUHbWFpbkF1eAAABAFhCQCRAwIFB21haW5BdXgAAQMDCQAAAgUBbQIACQAAAgUBYQIABwkAlAoCCQBkAgUBagABCAUDYWNjAl8yBAR0bXBNCQELc2xvdHNHcm91cEIGBQFtCAUDYWNjAl8yBQppc1Bvc2l0aXZlBQFqAAAFBXN0YXRzCQCUCgIJAGQCBQFqAAEJAQtzbG90c0dyb3VwQgYFAWEFBHRtcE0FCmlzUG9zaXRpdmUFAWoAAQUFc3RhdHMICgACJGwFB3NlZ0xpc3QKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCUCgIAAAUGcEJ5dGVzCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQdzZWdtZW50AgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA2CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAl8yAQVmb3J0QgYHc2VnTGlzdAZwQnl0ZXMIb2NjdXBpZWQEZnJlZQppc1Bvc2l0aXZlCWR1Y2tTdGF0cwMJAGYCAAMJAJADAQUHc2VnTGlzdAkAAgECMUF0IGxlYXN0IGR1Y2ssIG1pbmVzIGFuZCB0cmFwcyBwYXJ0cyBhcmUgcmVxdWlyZWQKAQdzZWdtZW50AgNhY2MDc2VnBAFqCAUDYWNjAl8xAwkAAAIFAWoAAAkAlgoECQBkAgUBagABCAUDYWNjAl8yCAUDYWNjAl8zCAUDYWNjAl80BAFwCQEKcGxhY2VQcm9kQgYFA3NlZwgFA2FjYwJfMgUKaXNQb3NpdGl2ZQUJZHVja1N0YXRzCAUDYWNjAl8zCAUDYWNjAl80CQCWCgQJAGQCBQFqAAEIBQFwAl8xCAUBcAJfMggFAXACXzMEAXQKAAIkbAUHc2VnTGlzdAoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJYKBAAABQZwQnl0ZXMFCG9jY3VwaWVkBQRmcmVlCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQdzZWdtZW50AgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKCQCVCgMIBQF0Al8yCAUBdAJfMwgFAXQCXzQBF2NhbldlYXJDdXJyZW50RXF1aXBtZW50AQtkdWNrQXNzZXRJZAQFZXFLZXkJARBrZXlEdWNrRXF1aXBtZW50AQULZHVja0Fzc2V0SWQEBmN1cnJFcQkAtQkCCQELdmFsdWVPckVsc2UCCQCiCAEFBWVxS2V5AhcsOyxfLDssXyw7LF8sOyxfLDssXyw7LAIBXwQJdGVtcFByb2RCCQEGZHJlc3NCBAUGY3VyckVxBQxFTVBUWV9QUk9ENTAGBQNuaWwECHNlZ0JwQXV4CQCRAwIJALUJAgkAkQMCBQZjdXJyRXEFC3NlZ0JhY2twYWNrAgE7AAEECmJ1ZmZFZmZlY3QDCQAAAgUIc2VnQnBBdXgCAAAABARhdXgwCQCRAwIJALUJAgUIc2VnQnBBdXgCASwAAAMJAAACBQRhdXgwAgAAAAQGaWR4Q250CQC1CQIFBGF1eDACAToEA2lkeAkAkQMCBQZpZHhDbnQAAAQDY250CQCRAwIFBmlkeENudAABAwMDAwMJAAACBQNpZHgCAjA2BgkAAAIFA2lkeAICMDcGCQAAAgUDaWR4AgIwOAkBAiE9AgUDY250AgAHCQBmAgkBDXBhcnNlSW50VmFsdWUBBQNjbnQAAAcJAQ1wYXJzZUludFZhbHVlAQkAkQMCCQC1CQIJAJEDAgUQcHJvZHVjdGlvbk1hdHJpeAkBDXBhcnNlSW50VmFsdWUBBQNpZHgCAV8FCnJJZHhFZmZlY3QAAAQFc3RhdHMJAQxnZXREdWNrU3RhdHMEBQR0aGlzBQtkdWNrQXNzZXRJZAUKYnVmZkVmZmVjdAYECG5ld1Byb2RCCQEGZHJlc3NCBAUGY3VyckVxBQl0ZW1wUHJvZEIHBQVzdGF0cwkAAAIFCG5ld1Byb2RCBQhuZXdQcm9kQgEZdXBkYXRlUHJvcG9ydGlvbnNJbnRlcm5hbAQIcHJvcExpc3QNdGVycmFpbkNvdW50cw1sYW5kU2l6ZUluZGV4BHNpZ24DCQECIT0CCQCQAwEFCHByb3BMaXN0BQZOVU1SRVMJAAIBAhZXcm9uZyBwcm9wb3J0aW9ucyBkYXRhCgEHdXBkYXRlcgIDYWNjAWkEBnJlc3VsdAkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQhwcm9wTGlzdAUBaQkAaAIJAGgCBQRzaWduCQCRAwIFDXRlcnJhaW5Db3VudHMFAWkFDWxhbmRTaXplSW5kZXgDCQBmAgAABQZyZXN1bHQJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICFlBhbmljISBQaWVjZXMgb2YgdHlwZT0JAKQDAQUBaQIHLCBzaWduPQkApAMBBQRzaWduAhMsIHRlcnJhaW5Db3VudHNbaV09CQCkAwEJAJEDAgUNdGVycmFpbkNvdW50cwUBaQIQLCBsYW5kU2l6ZUluZGV4PQkApAMBBQ1sYW5kU2l6ZUluZGV4CQDNCAIFA2FjYwkApAMBBQZyZXN1bHQKAAIkbAUFSVRFUjYKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBB3VwZGF0ZXICBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDYJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYBEXVwZGF0ZVByb3BvcnRpb25zAw10ZXJyYWluQ291bnRzDWxhbmRTaXplSW5kZXgEc2lnbgQIcHJvcExpc3QJALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBCQERa2V5UmVzUHJvcG9ydGlvbnMAAgswXzBfMF8wXzBfMAIBXwkAuQkCCQEZdXBkYXRlUHJvcG9ydGlvbnNJbnRlcm5hbAQFCHByb3BMaXN0BQ10ZXJyYWluQ291bnRzBQ1sYW5kU2l6ZUluZGV4BQRzaWduAgFfAQ1jb3VudFRlcnJhaW5zAQh0ZXJyYWlucwkAzAgCCQBlAgkAkAMBCQC1CQIFCHRlcnJhaW5zAgFBAAEJAMwIAgkAZQIJAJADAQkAtQkCBQh0ZXJyYWlucwIBQgABCQDMCAIJAGUCCQCQAwEJALUJAgUIdGVycmFpbnMCAUMAAQkAzAgCCQBlAgkAkAMBCQC1CQIFCHRlcnJhaW5zAgFEAAEJAMwIAgkAZQIJAJADAQkAtQkCBQh0ZXJyYWlucwIBRQABCQDMCAIJAGUCCQCQAwEJALUJAgUIdGVycmFpbnMCAUYAAQUDbmlsAQZhZGRSZXMFCmN1cnJlbnRSZXMNdGVycmFpbkNvdW50cwlkZWx0YVRpbWUNbGFuZFNpemVJbmRleBdkYWlseUJ5UGllY2VXaXRoQm9udXNlcwoBBWFkZGVyAgNhY2MBaQQJcmVzT2ZUeXBlCQBoAgkAaAIJAGsDBQlkZWx0YVRpbWUFF2RhaWx5QnlQaWVjZVdpdGhCb251c2VzBQlEQVlNSUxMSVMJAJEDAgUNdGVycmFpbkNvdW50cwUBaQUNbGFuZFNpemVJbmRleAkAzQgCBQNhY2MJAKQDAQkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQpjdXJyZW50UmVzBQFpBQlyZXNPZlR5cGUEAXIKAAIkbAUFSVRFUjYKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBBWFkZGVyAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA2CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGCQC5CQIFAXICAV8BCXZpcnRDbGFpbQQNdGVycmFpbkNvdW50cwlkZWx0YVRpbWUNbGFuZFNpemVJbmRleBdkYWlseUJ5UGllY2VXaXRoQm9udXNlcwoBBWFkZGVyAgNhY2MBaQQJcmVzT2ZUeXBlCQBoAgkAaAIJAGsDBQlkZWx0YVRpbWUFF2RhaWx5QnlQaWVjZVdpdGhCb251c2VzBQlEQVlNSUxMSVMJAJEDAgUNdGVycmFpbkNvdW50cwUBaQUNbGFuZFNpemVJbmRleAkAlAoCCQDNCAIIBQNhY2MCXzEFCXJlc09mVHlwZQkAZAIIBQNhY2MCXzIFCXJlc09mVHlwZQoAAiRsBQVJVEVSNgoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJQKAgUDbmlsAAAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBBWFkZGVyAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA2CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAQ1kaXN0cmlidXRlUmVzBAxjdXJyZW50V2hSZXMOY3VycmVudFBhY2tSZXMKcmVzVG9DbGFpbQt3aFNwYWNlTGVmdAQOcmVzTGlzdFRvQ2xhaW0IBQpyZXNUb0NsYWltAl8xBAxyZXNBbVRvQ2xhaW0IBQpyZXNUb0NsYWltAl8yAwkAAAIFDHJlc0FtVG9DbGFpbQAACQCUCgIJALkJAgUMY3VycmVudFdoUmVzAgFfCQC5CQIFDmN1cnJlbnRQYWNrUmVzAgFfAwkAZwIFC3doU3BhY2VMZWZ0BQxyZXNBbVRvQ2xhaW0KAQhhZGRMaXN0cwIDYWNjAWkJAM0IAgUDYWNjCQCkAwEJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUMY3VycmVudFdoUmVzBQFpCQCRAwIFDnJlc0xpc3RUb0NsYWltBQFpBAFyCgACJGwFBUlURVI2CgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQhhZGRMaXN0cwIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNgkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgkAlAoCCQC5CQIFAXICAV8JALkJAgUOY3VycmVudFBhY2tSZXMCAV8KAQxhZGRQYXJ0TGlzdHMCA2FjYwFpBAZ3aFBhcnQJAGsDCQCRAwIFDnJlc0xpc3RUb0NsYWltBQFpBQt3aFNwYWNlTGVmdAUMcmVzQW1Ub0NsYWltCQCUCgIJAM0IAggFA2FjYwJfMQkApAMBCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFDGN1cnJlbnRXaFJlcwUBaQUGd2hQYXJ0CQDNCAIIBQNhY2MCXzIJAKQDAQkAZQIJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUOY3VycmVudFBhY2tSZXMFAWkJAJEDAgUOcmVzTGlzdFRvQ2xhaW0FAWkFBndoUGFydAQBcgoAAiRsBQVJVEVSNgoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJQKAgUDbmlsBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBDGFkZFBhcnRMaXN0cwIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNgkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgkAlAoCCQC5CQIIBQFyAl8xAgFfCQC5CQIIBQFyAl8yAgFfAQNhYnMBAXgDCQDAAgIFAXgJALYCAQAABQF4CQC+AgEFAXgABGZyZXEJAMwIAgkAzAgCAAYJAMwIAgAJCQDMCAIADgkAzAgCAA8JAMwIAgAQBQNuaWwJAMwIAgkAzAgCAAUJAMwIAgAICQDMCAIADQkAzAgCAA4JAMwIAgAPBQNuaWwJAMwIAgkAzAgCAAEJAMwIAgAECQDMCAIACQkAzAgCAAoJAMwIAgAPBQNuaWwJAMwIAgkAzAgCAAEJAMwIAgAGCQDMCAIABwkAzAgCAA8JAMwIAgATBQNuaWwJAMwIAgkAzAgCAAQJAMwIAgAHCQDMCAIACAkAzAgCAA0JAMwIAgASBQNuaWwFA25pbAEHZ2VuQ2hhcgIBbgVmcmVxcwQDcmVtCQCgAwEJALsCAgUBbgUHVFdFTlRZWAQGbGV0dGVyAwkAZgIJAJEDAgUFZnJlcXMAAAUDcmVtAgFBAwkAZgIJAJEDAgUFZnJlcXMAAQUDcmVtAgFCAwkAZgIJAJEDAgUFZnJlcXMAAgUDcmVtAgFDAwkAZgIJAJEDAgUFZnJlcXMAAwUDcmVtAgFEAwkAZgIJAJEDAgUFZnJlcXMABAUDcmVtAgFFAgFGBQZsZXR0ZXIBC2dlblRlcnJhaW5zAgRzZWVkDGNvbnRpbmVudElkeAQBZgkAkQMCBQRmcmVxBQxjb250aW5lbnRJZHgKARB0ZXJyYWluR2VuZXJhdG9yAgNhY2MEZWxlbQkAlAoCCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAggFA2FjYwJfMQkBB2dlbkNoYXICCAUDYWNjAl8yBQFmCQEHZ2VuQ2hhcgIJALoCAggFA2FjYwJfMgUHVFdFTlRZWAUBZgkBB2dlbkNoYXICCQC6AgIIBQNhY2MCXzIFCFRXRU5UWTJYBQFmCQEHZ2VuQ2hhcgIJALoCAggFA2FjYwJfMgUIVFdFTlRZM1gFAWYJAQdnZW5DaGFyAgkAugICCAUDYWNjAl8yBQhUV0VOVFk0WAUBZgkAugICCAUDYWNjAl8yBQhUV0VOVFk1WAQBdAoAAiRsCQDMCAIAAQkAzAgCAAIJAMwIAgADCQDMCAIABAkAzAgCAAUFA25pbAoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJQKAgIACQC6AgIFBHNlZWQFBUZJVkVYCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJARB0ZXJyYWluR2VuZXJhdG9yAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA1CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQgFAXQCXzEABlBFUk0yNQkAzAgCAAcJAMwIAgACCQDMCAIADwkAzAgCABMJAMwIAgAICQDMCAIAGAkAzAgCAAEJAMwIAgAVCQDMCAIAEAkAzAgCAAUJAMwIAgAACQDMCAIAFgkAzAgCABQJAMwIAgAXCQDMCAIACwkAzAgCAAQJAMwIAgASCQDMCAIADAkAzAgCAAYJAMwIAgAKCQDMCAIAAwkAzAgCABEJAMwIAgANCQDMCAIACQkAzAgCAA4FA25pbAAGVENIQVJTCQDMCAICAUEJAMwIAgIBQgkAzAgCAgFDCQDMCAICAUQJAMwIAgIBRQkAzAgCAgFGBQNuaWwBE2dlblRlcnJhaW5zRm9yTWVyZ2UCC3N1bVRlcnJhaW5zDWxhbmRTaXplSW5kZXgKAQVzdGVwMQIDYWNjAXMEAWoIBQNhY2MCXzIEAmVsCQENcGFyc2VJbnRWYWx1ZQEFAXMEAXgDCQAAAgUCZWwAAAAAAwkAZwIFAmVsCQBoAgAEBQ1sYW5kU2l6ZUluZGV4CQBpAgUCZWwFDWxhbmRTaXplSW5kZXgDCQBmAgUCZWwJAGgCAAMFDWxhbmRTaXplSW5kZXgAAwkAZAIJAGkCCQBlAgUCZWwAAQUNbGFuZFNpemVJbmRleAABCQCVCgMJAM0IAggFA2FjYwJfMQUBeAkAZAIIBQNhY2MCXzIAAQkAZAIIBQNhY2MCXzMFAXgEAXQKAAIkbAULc3VtVGVycmFpbnMKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCVCgMFA25pbAAAAAAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBBXN0ZXAxAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA2CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGBANhcnIIBQF0Al8xBAZtYXhJZHgJAQV2YWx1ZQEJAM8IAgUDYXJyCQCWAwEFA2FycgQFZGVsdGEJAGUCCAUBdAJfMwAZCgEGc3ViYmVyAgNhY2MDaWR4BAN2YWwDCQAAAgUDaWR4BQZtYXhJZHgJAGUCCQCRAwIFA2FycgUDaWR4BQVkZWx0YQkAkQMCBQNhcnIFA2lkeAQGemVyb2VzAwkAAAIFA3ZhbAAABQNuaWwJALUJAgkAsAICCQCkAwEJAGwGAAoAAAUDdmFsAAAAAAUERE9XTgABAgAEAWMJAJEDAgUGVENIQVJTBQNpZHgKAQdsaXN0R2VuAgJhYwdpZ25vcmVkCQDNCAIFAmFjBQFjBAF6CgACJGwFBnplcm9lcwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAFA25pbAoBBSRmMV8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEHbGlzdEdlbgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMV8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMjUJAQUkZjFfMgIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQkAzggCBQNhY2MFAXoEAXIKAAIkbAUFSVRFUjYKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjFfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBBnN1YmJlcgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMV8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNgkBBSRmMV8yAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgoBBnBlcm11dAIDYWNjAWoJAKwCAgUDYWNjCQCRAwIFAXIFAWoKAAIkbAUGUEVSTTI1CgACJHMJAJADAQUCJGwKAAUkYWNjMAIACgEFJGYyXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQZwZXJtdXQCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjJfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDI1CQEFJGYyXzICCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQASABMAFAAVABYAFwAYABkBC2dldEJhY2twYWNrAQVicEtleQQBcAkAtQkCCQELdmFsdWVPckVsc2UCCQCiCAEFBWJwS2V5AhowOjBfMF8wXzBfMF8wOjBfMF8wXzBfMF8wOgIBOgkAzAgCCQCkAwEJAQt2YWx1ZU9yRWxzZQIJALYJAQkAkQMCBQFwBQpicElkeExldmVsAAAJAMwIAgMJAAACCQCQAwEJALUJAgkAkQMCBQFwBQhicElkeFJlcwIBXwUGTlVNUkVTCQCRAwIFAXAFCGJwSWR4UmVzAgswXzBfMF8wXzBfMAkAzAgCAwkAAAIJAJADAQkAtQkCCQCRAwIFAXAFCGJwSWR4TWF0AgFfBQZOVU1SRVMJAJEDAgUBcAUIYnBJZHhNYXQCCzBfMF8wXzBfMF8wCQDMCAIJAJEDAgUBcAUJYnBJZHhQcm9kBQNuaWwBF2dldFdhcmVob3VzZVRvdGFsVm9sdW1lAQl2b2xQcmVmaXgEBXBhcnRzCQC1CQIFCXZvbFByZWZpeAIBXwkAaAIJAGgCBQxXSE1VTFRJUExJRVIJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFcGFydHMAAQABCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFcGFydHMAAAEXZ2V0V2FyZWhvdXNlT2NjdXBpZWRWb2wBCWN1cnJlbnRXaAQFZ29vZHMJAJEDAgUJY3VycmVudFdoBQl3aElkeFByb2QKAQlzdW1SZXNNYXQCA2FjYwRpdGVtCQBkAgUDYWNjCQENcGFyc2VJbnRWYWx1ZQEFBGl0ZW0KAQdzdW1Qcm9kAgNhY2MEaXRlbQQDaWR4CAUDYWNjAl8xBARwa2dzCQBpAgkAZQIJAGQCCQENcGFyc2VJbnRWYWx1ZQEFBGl0ZW0FDlBST0RVQ1RQS0dTSVpFAAEFDlBST0RVQ1RQS0dTSVpFCQCUCgIJAGQCBQNpZHgAAQkAZAIIBQNhY2MCXzIJAGgCBQRwa2dzBQVNVUxUOAQId2hSZXNWb2wKAAIkbAkAtQkCCQCRAwIFCWN1cnJlbnRXaAUId2hJZHhSZXMCAV8KAAIkcwkAkAMBBQIkbAoABSRhY2MwAAAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBCXN1bVJlc01hdAIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNgkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgQId2hNYXRWb2wKAAIkbAkAtQkCCQCRAwIFCWN1cnJlbnRXaAUId2hJZHhNYXQCAV8KAAIkcwkAkAMBBQIkbAoABSRhY2MwAAAKAQUkZjFfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBCXN1bVJlc01hdAIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMV8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNgkBBSRmMV8yAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgQKd2hHb29kc1ZvbAMJAAACBQVnb29kcwIAAAAICgACJGwJALwJAgUFZ29vZHMCAV8KAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCUCgIAAAAACgEFJGYyXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQdzdW1Qcm9kAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYyXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyA1MAkBBSRmMl8yAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiACMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADICXzIJAGQCCQBkAgUId2hSZXNWb2wFCHdoTWF0Vm9sBQp3aEdvb2RzVm9sAQxnZXRXYXJlaG91c2UDBXdoS2V5CWxhbmRJbmRleAppbmZyYUxldmVsBAl2b2xQcmVmaXgJAKwCAgkArAICCQCkAwEFCWxhbmRJbmRleAIBXwkApAMBBQppbmZyYUxldmVsBAd3aFRvdGFsCQEXZ2V0V2FyZWhvdXNlVG90YWxWb2x1bWUBBQl2b2xQcmVmaXgEBXdoU3RyCQELdmFsdWVPckVsc2UCCQCiCAEFBXdoS2V5CQCsAgIFCXZvbFByZWZpeAIbOjBfMF8wXzBfMF8wOjBfMF8wXzBfMF8wOjowBAJ3aAkAvAkCBQV3aFN0cgIBOgQKd2hPY2N1cGllZAkBF2dldFdhcmVob3VzZU9jY3VwaWVkVm9sAQUCd2gEBndoTG9mdAMJAGYCAAUJAJADAQUCd2gJALkJAgkAzAgCAgEwCQDMCAIJAKQDAQUKd2hPY2N1cGllZAkAzAgCCQCkAwEJAGUCBQd3aFRvdGFsBQp3aE9jY3VwaWVkCQDMCAIJAKQDAQUHd2hUb3RhbAUDbmlsAgFfBARsb2Z0CQC1CQIJAJEDAgUCd2gFCXdoSWR4TE9GVAIBXwQId2hMb2NrZWQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQl2b2xMb2NrZWQEA29jYwMJAGYCCQCQAwEFBGxvZnQAAQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFC3ZvbE9jY3VwaWVkBQp3aE9jY3VwaWVkCQC5CQIJAMwIAgkApAMBBQh3aExvY2tlZAkAzAgCCQCkAwEFA29jYwkAzAgCCQCkAwEJAGUCCQBlAgUHd2hUb3RhbAUId2hMb2NrZWQFA29jYwkAzAgCCQCkAwEFB3doVG90YWwFA25pbAIBXwkAzAgCCQCRAwIFAndoBQt3aElkeExldmVscwkAzAgCAwkAAAIJAJADAQkAtQkCCQCRAwIFAndoBQh3aElkeFJlcwIBXwUGTlVNUkVTCQCRAwIFAndoBQh3aElkeFJlcwILMF8wXzBfMF8wXzAJAMwIAgMJAAACCQCQAwEJALUJAgkAkQMCBQJ3aAUId2hJZHhNYXQCAV8FBk5VTVJFUwkAkQMCBQJ3aAUId2hJZHhNYXQCCzBfMF8wXzBfMF8wCQDMCAIJAJEDAgUCd2gFCXdoSWR4UHJvZAkAzAgCBQZ3aExvZnQFA25pbAEVZ2V0V2FyZWhvdXNlU3BhY2VMZWZ0AQljdXJyZW50V2gEC29jY3VwaWVkVm9sCQEXZ2V0V2FyZWhvdXNlT2NjdXBpZWRWb2wBBQljdXJyZW50V2gED2N1cnJXaExvY2tlZFZvbAkBDXBhcnNlSW50VmFsdWUBCQCRAwIJALUJAgkAkQMCBQljdXJyZW50V2gFCXdoSWR4TE9GVAIBXwUJdm9sTG9ja2VkCQBlAgkAZQIJARdnZXRXYXJlaG91c2VUb3RhbFZvbHVtZQEJAJEDAgUJY3VycmVudFdoBQt3aElkeExldmVscwULb2NjdXBpZWRWb2wFD2N1cnJXaExvY2tlZFZvbAEJbW92ZVN0dWZmAwpjYXJnb1BhcnRzCWN1cnJlbnRXaAtjdXJyZW50UGFjawMJAQIhPQIJAJADAQUKY2FyZ29QYXJ0cwADCQACAQI0Y2FyZ29MaXN0U3RyIHNob3VsZCBjb250YWluIGV4YWN0bHkgMiAnOicgc2VwYXJhdG9ycwQIcmVzUGFydHMJALUJAgkAkQMCBQpjYXJnb1BhcnRzAAACAV8ECG1hdFBhcnRzCQC1CQIJAJEDAgUKY2FyZ29QYXJ0cwABAgFfBAlwcm9kUGFydHMDCQAAAgkAkQMCBQpjYXJnb1BhcnRzAAICAAUDbmlsCQC8CQIJAJEDAgUKY2FyZ29QYXJ0cwACAgFfAwkBAiE9AgkAkAMBBQhyZXNQYXJ0cwUGTlVNUkVTCQACAQIgQWxsIDYgcmVzb3VyY2VzIHNob3VsZCBiZSBwYXNzZWQDCQECIT0CCQCQAwEFCG1hdFBhcnRzBQZOVU1SRVMJAAIBAiBBbGwgNiBtYXRlcmlhbHMgc2hvdWxkIGJlIHBhc3NlZAQLd2hTcGFjZUxlZnQJARVnZXRXYXJlaG91c2VTcGFjZUxlZnQBBQljdXJyZW50V2gECWN1cnJXaFJlcwkAtQkCCQCRAwIFCWN1cnJlbnRXaAUId2hJZHhSZXMCAV8ECWN1cnJXaE1hdAkAtQkCCQCRAwIFCWN1cnJlbnRXaAUId2hJZHhNYXQCAV8ECmN1cnJXaFByb2QDCQAAAgkAkQMCBQljdXJyZW50V2gFCXdoSWR4UHJvZAIABQNuaWwJALwJAgkAkQMCBQljdXJyZW50V2gFCXdoSWR4UHJvZAIBXwQOY3VycmVudFBhY2tSZXMJALUJAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhSZXMCAV8EDmN1cnJlbnRQYWNrTWF0CQC1CQIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4TWF0AgFfBA9jdXJyZW50UGFja1Byb2QDCQAAAgkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kAgAFA25pbAkAvAkCCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QCAV8KAQNtdlICA2FjYwRpdGVtBAFpCAUDYWNjAl8xBAJhbQkBDXBhcnNlSW50VmFsdWUBBQRpdGVtBAN3aHIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQljdXJyV2hSZXMFAWkEA2JwcgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFDmN1cnJlbnRQYWNrUmVzBQFpAwkAAAIFAmFtAAAJAJYKBAkAZAIFAWkAAQkAzQgCCAUDYWNjAl8yCQCRAwIFCWN1cnJXaFJlcwUBaQkAzQgCCAUDYWNjAl8zCQCRAwIFDmN1cnJlbnRQYWNrUmVzBQFpCAUDYWNjAl80AwkAZgIFAmFtAAADCQBmAgUCYW0FA2JwcgkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgIQQXR0ZW1wdCB0byB0YWtlIAUEaXRlbQIZIGZyb20gYmFja3BhY2ssIGJ1dCBvbmx5IAkApAMBBQNicHICCiBhdmFpbGFibGUJAJYKBAkAZAIFAWkAAQkAzQgCCAUDYWNjAl8yCQCkAwEJAGQCBQN3aHIFAmFtCQDNCAIIBQNhY2MCXzMJAKQDAQkAZQIFA2JwcgUCYW0JAGQCCAUDYWNjAl80BQJhbQMJAGYCCQEBLQEFAmFtBQN3aHIJAAIBCQCsAgIJAKwCAgkArAICCQCsAgICEEF0dGVtcHQgdG8gdGFrZSAJAKQDAQkBAS0BBQJhbQIaIGZyb20gd2FyZWhvdXNlLCBidXQgb25seSAJAKQDAQUDd2hyAgogYXZhaWxhYmxlCQCWCgQJAGQCBQFpAAEJAM0IAggFA2FjYwJfMgkApAMBCQBkAgUDd2hyBQJhbQkAzQgCCAUDYWNjAl8zCQCkAwEJAGUCBQNicHIFAmFtCQBkAggFA2FjYwJfNAUCYW0EAXIKAAIkbAUIcmVzUGFydHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCWCgQAAAUDbmlsBQNuaWwAAAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEDbXZSAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA2CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGCgEDbXZNAgNhY2MEaXRlbQQBaQgFA2FjYwJfMQQCYW0JAQ1wYXJzZUludFZhbHVlAQUEaXRlbQQDd2htCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUJY3VycldoTWF0BQFpBANicG0JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQ5jdXJyZW50UGFja01hdAUBaQMJAAACBQJhbQAACQCWCgQJAGQCBQFpAAEJAM0IAggFA2FjYwJfMgkAkQMCBQljdXJyV2hNYXQFAWkJAM0IAggFA2FjYwJfMwkAkQMCBQ5jdXJyZW50UGFja01hdAUBaQgFA2FjYwJfNAMJAGYCBQJhbQAAAwkAZgIFAmFtBQNicG0JAAIBCQCsAgIJAKwCAgkArAICCQCsAgICEEF0dGVtcHQgdG8gdGFrZSAFBGl0ZW0CGSBmcm9tIGJhY2twYWNrLCBidXQgb25seSAJAKQDAQUDYnBtAgogYXZhaWxhYmxlCQCWCgQJAGQCBQFpAAEJAM0IAggFA2FjYwJfMgkApAMBCQBkAgUDd2htBQJhbQkAzQgCCAUDYWNjAl8zCQCkAwEJAGUCBQNicG0FAmFtCQBkAggFA2FjYwJfNAUCYW0DCQBmAgkBAS0BBQJhbQUDd2htCQACAQkArAICCQCsAgIJAKwCAgkArAICAhBBdHRlbXB0IHRvIHRha2UgCQCkAwEJAQEtAQUCYW0CGiBmcm9tIHdhcmVob3VzZSwgYnV0IG9ubHkgCQCkAwEFA3dobQIKIGF2YWlsYWJsZQkAlgoECQBkAgUBaQABCQDNCAIIBQNhY2MCXzIJAKQDAQkAZAIFA3dobQUCYW0JAM0IAggFA2FjYwJfMwkApAMBCQBlAgUDYnBtBQJhbQkAZAIIBQNhY2MCXzQFAmFtBAFtCgACJGwFCG1hdFBhcnRzCgACJHMJAJADAQUCJGwKAAUkYWNjMAkAlgoEAAAFA25pbAUDbmlsCAUBcgJfNAoBBSRmMV8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEDbXZNAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYxXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA2CQEFJGYxXzICCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECBQUkYWNjMAAAAAEAAgADAAQABQAGCgEDbXZQAgNhY2MEaXRlbQQBaQgFA2FjYwJfMQQCYW0JAQ1wYXJzZUludFZhbHVlAQUEaXRlbQQDd2hwAwkAZgIJAJADAQUKY3VycldoUHJvZAUBaQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCmN1cnJXaFByb2QFAWkAAAQDYnBwAwkAZgIJAJADAQUPY3VycmVudFBhY2tQcm9kBQFpCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUPY3VycmVudFBhY2tQcm9kBQFpAAADCQAAAgUCYW0AAAkAlgoECQBkAgUBaQABCQDNCAIIBQNhY2MCXzIJAKQDAQUDd2hwCQDNCAIIBQNhY2MCXzMJAKQDAQUDYnBwCAUDYWNjAl80AwkAZgIFAmFtAAADCQBmAgUCYW0FA2JwcAkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgIQQXR0ZW1wdCB0byB0YWtlIAUEaXRlbQIZIGZyb20gYmFja3BhY2ssIGJ1dCBvbmx5IAkApAMBBQNicHACCiBhdmFpbGFibGUECGRlbHRhVm9sCQBlAgkBCHRvVm9sdW1lAgkAZAIFA3docAUCYW0FDlBST0RVQ1RQS0dTSVpFCQEIdG9Wb2x1bWUCBQN3aHAFDlBST0RVQ1RQS0dTSVpFCQCWCgQJAGQCBQFpAAEJAM0IAggFA2FjYwJfMgkApAMBCQBkAgUDd2hwBQJhbQkAzQgCCAUDYWNjAl8zCQCkAwEJAGUCBQNicHAFAmFtCQBkAggFA2FjYwJfNAUIZGVsdGFWb2wDCQBmAgkBAS0BBQJhbQUDd2hwCQACAQkArAICCQCsAgIJAKwCAgkArAICAhBBdHRlbXB0IHRvIHRha2UgCQCkAwEJAQEtAQUCYW0CGiBmcm9tIHdhcmVob3VzZSwgYnV0IG9ubHkgCQCkAwEFA3docAIKIGF2YWlsYWJsZQQIZGVsdGFWb2wJAGUCCQEIdG9Wb2x1bWUCCQBkAgUDd2hwBQJhbQUOUFJPRFVDVFBLR1NJWkUJAQh0b1ZvbHVtZQIFA3docAUOUFJPRFVDVFBLR1NJWkUJAJYKBAkAZAIFAWkAAQkAzQgCCAUDYWNjAl8yCQCkAwEJAGQCBQN3aHAFAmFtCQDNCAIIBQNhY2MCXzMJAKQDAQkAZQIFA2JwcAUCYW0JAGQCCAUDYWNjAl80BQhkZWx0YVZvbAQBcAMJAQIhPQIJAJADAQUJcHJvZFBhcnRzAAAKAAIkbAUJcHJvZFBhcnRzCgACJHMJAJADAQUCJGwKAAUkYWNjMAkAlgoEAAAFA25pbAUDbmlsCAUBbQJfNAoBBSRmMl8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEDbXZQAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYyXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyA1MAkBBSRmMl8yAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiACMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIJAJYKBAAABQpjdXJyV2hQcm9kBQ9jdXJyZW50UGFja1Byb2QIBQFtAl80BAh2b2xTYWxkbwgFAXACXzQDCQBmAgUIdm9sU2FsZG8FC3doU3BhY2VMZWZ0CQACAQkArAICCQCsAgIJAKwCAgkArAICAhVBdHRlbXB0IHRvIHB1dCB0b3RhbCAJAKQDAQUIdm9sU2FsZG8CESBzdHVmZiwgYnV0IG9ubHkgCQCkAwEFC3doU3BhY2VMZWZ0AhUgd2FyZWhvdXNlIHNwYWNlIGxlZnQJAJkKBwkAuQkCCAUBcgJfMgIBXwkAuQkCCAUBbQJfMgIBXwkAugkCCAUBcAJfMgIBXwkAuQkCCAUBcgJfMwIBXwkAuQkCCAUBbQJfMwIBXwkAugkCCAUBcAJfMwIBXwUIdm9sU2FsZG8BEmV4cGVkaXRpb25JbnRlcm5hbAIGY2FsbGVyBHR4SWQECHVzZXJBZGRyCQClCAEFBmNhbGxlcgQGYmlnTnVtCQEDYWJzAQkAngMBBQR0eElkBAdmcmVlTnVtCQELdmFsdWVPckVsc2UCCQCfCAEJARJrZXlOZXh0RnJlZUxhbmROdW0ACQBkAgUPUFJFU0FMRU5VTUxBTkRTAAEEB2xhbmROdW0JAKQDAQUHZnJlZU51bQQMY29udGluZW50SWR4CQCgAwEJALsCAgUGYmlnTnVtBQVGSVZFWAQIdGVycmFpbnMJAQtnZW5UZXJyYWlucwIFBmJpZ051bQUMY29udGluZW50SWR4BAljb250aW5lbnQJAJEDAgUKY29udGluZW50cwUMY29udGluZW50SWR4BAVpc3N1ZQkAwggFCQEHbmZ0TmFtZQIFB2xhbmROdW0CAVMJALkJAgkAzAgCBQdsYW5kTnVtCQDMCAICAVMJAMwIAgUIdGVycmFpbnMJAMwIAgUJY29udGluZW50BQNuaWwCAV8AAQAABwQHYXNzZXRJZAkAuAgBBQVpc3N1ZQQCaWQJANgEAQUHYXNzZXRJZAkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQESa2V5TmV4dEZyZWVMYW5kTnVtAAkAZAIFB2ZyZWVOdW0AAQkAzAgCBQVpc3N1ZQkAzAgCCQELU3RyaW5nRW50cnkCCQEQa2V5TGFuZFRvQXNzZXRJZAEFB2xhbmROdW0FAmlkCQDMCAIJAQtTdHJpbmdFbnRyeQIJARVrZXlMYW5kQXNzZXRJZFRvT3duZXIBBQJpZAUIdXNlckFkZHIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBEWtleUxhbmROdW1Ub093bmVyAQUHbGFuZE51bQUIdXNlckFkZHIJAMwIAgkBDEludGVnZXJFbnRyeQIJARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQUCaWQAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBHmtleUluZnJhTGV2ZWxCeUFzc2V0SWRBbmRPd25lcgIFAmlkBQh1c2VyQWRkcgAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFBmNhbGxlcgABBQdhc3NldElkBQNuaWwJAJQKAgUCaWQFCWNvbnRpbmVudAEMZmxpZ2h0Q29tbW9uAwh1c2VyQWRkcgdtZXNzYWdlA3NpZwMJAQEhAQkAxBMDBQdtZXNzYWdlBQNzaWcFA3B1YgkAAgECGHNpZ25hdHVyZSBkb2VzIG5vdCBtYXRjaAQFcGFydHMJALwJAgkAsAkBBQdtZXNzYWdlAgE7BAlmbGlnaHRMb2cJALwJAgkAkQMCBQVwYXJ0cwAAAgF8BAJocAkAtQkCCQCRAwIFCWZsaWdodExvZwUIZmxIZWFsdGgCAV8EBWN1ckhQCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCaHAAAAQFbmV3SFAJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJocAABBAtuZXdMb2NUeFZlcgkAtQkCCQCRAwIFBXBhcnRzAAECAToEC25ld0xvY2F0aW9uCQCRAwIFC25ld0xvY1R4VmVyAAAEBHRpbWUJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQlmbGlnaHRMb2cFC2ZsVGltZXN0YW1wAwMJAGYCBQR0aW1lCQBkAggFCWxhc3RCbG9jawl0aW1lc3RhbXAFEUZJVkVNSU5VVEVTTUlMTElTBgkAZgIJAGUCCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAURRklWRU1JTlVURVNNSUxMSVMFBHRpbWUJAAIBCQCsAgIJAKwCAgkArAICAhxzaWduYXR1cmUgb3V0ZGF0ZWQ6IGxvZ1RpbWU9CQCkAwEFBHRpbWUCCSwgYmNUaW1lPQkApAMBCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQJdHhGcm9tTXNnCQCRAwIFC25ld0xvY1R4VmVyAAEEBmxhc3RUeAkBC3ZhbHVlT3JFbHNlAgkAoggBCQERa2V5TGFzdFR4SWRCeVVzZXIBBQh1c2VyQWRkcgIAAwkBAiE9AgUGbGFzdFR4BQl0eEZyb21Nc2cJAAIBCQCsAgIJAKwCAgkArAICAh5UeCBpZHMgZG9uJ3QgbWF0Y2ghIEluIHN0YXRlOiAFBmxhc3RUeAIKLCBpbiBtc2c6IAUJdHhGcm9tTXNnBAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFCHVzZXJBZGRyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkBAlrZXlIZWFsdGgJAQ1rZXlEdWNrSGVhbHRoAQULZHVja0Fzc2V0SWQEBW1heEhQCQEJbWF4SGVhbHRoAQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEMa2V5RHVja0xldmVsAQULZHVja0Fzc2V0SWQAAAQMb2xkRnJvbVN0YXRlCQELdmFsdWVPckVsc2UCCQCfCAEFCWtleUhlYWx0aAUFbWF4SFADCQECIT0CBQxvbGRGcm9tU3RhdGUFBWN1ckhQCQACAQkArAICCQCsAgIJAKwCAgIKb2xkSGVhbHRoPQkApAMBBQxvbGRGcm9tU3RhdGUCLyBmcm9tIHN0YXRlIGRvZXMgbm90IG1hdGNoIG9uZSBmcm9tIGZsaWdodCBsb2c9CQCkAwEFBWN1ckhQAwkAZwIAAAUFY3VySFAJAAIBAh5Zb3UgY2FuJ3QgZmx5IHdpdGggemVybyBoZWFsdGgDCQEBIQEJARdjYW5XZWFyQ3VycmVudEVxdWlwbWVudAEFC2R1Y2tBc3NldElkCQACAQIWRXF1aXBtZW50IGluY29tcGF0aWJsZQQFYm9udXMDCQBmAgkAkAMBBQlmbGlnaHRMb2cFB2ZsQm9udXMJAJEDAgUJZmxpZ2h0TG9nBQdmbEJvbnVzAgAECHByb2RVc2VkAwkAZgIJAJADAQUJZmxpZ2h0TG9nBQtmbFByb2RzVXNlZAkAkQMCBQlmbGlnaHRMb2cFC2ZsUHJvZHNVc2VkAgAECnNlbnRBbW91bnQDAwkAZgIFBW5ld0hQAAAJAAACBQVib251cwIBJAcJAQVhc0ludAEJAPwHBAUMcmVzdENvbnRyYWN0Ag1zZW5kVXNkdFByaXplCQDMCAIFCHVzZXJBZGRyBQNuaWwFA25pbAAACQCXCgUFBW5ld0hQBQtkdWNrQXNzZXRJZAUKc2VudEFtb3VudAULbmV3TG9jYXRpb24FCHByb2RVc2VkAQxhcHBseUJvbnVzZXMCC2xhbmRBc3NldElkBnBpZWNlcwQKaW5mcmFMZXZlbAkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEWa2V5SW5mcmFMZXZlbEJ5QXNzZXRJZAEFC2xhbmRBc3NldElkAAAECWFydFBpZWNlcwkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEga2V5TGFuZEFydFN0YXR1c0J5VHlwZUFuZEFzc2V0SWQCBQpBUlRQUkVTQUxFBQtsYW5kQXNzZXRJZAAABARhZGQ2CQBpAgUKaW5mcmFMZXZlbAAGBARhZGQ3CQBpAgUKaW5mcmFMZXZlbAAHCQBkAgkAZAIFD0RBSUxZUkVTQllQSUVDRQkAawMFD0RBSUxZUkVTQllQSUVDRQkAZAIJAGQCBQppbmZyYUxldmVsBQRhZGQ2CQBoAgACBQRhZGQ3AAUJAGsDBQ9EQUlMWVJFU0JZUElFQ0UFCWFydFBpZWNlcwkAaAIFBnBpZWNlcwAFARRjaGVja0NsYWltQ29uZGl0aW9ucwMEYWRkcgljbGFpbU1vZGUNbGFuZEFzc2V0SWRJbgQNJHQwMzM3MzgzNDI3NwMJAAACBQljbGFpbU1vZGUFC2NsYWltTW9kZVdoCQCUCgIFDWxhbmRBc3NldElkSW4JAQt2YWx1ZU9yRWxzZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUEYWRkcgIABAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFBGFkZHICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQEC2N1ckxvY2F0aW9uCQELdmFsdWVPckVsc2UCCQCiCAEJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAUPREVGQVVMVExPQ0FUSU9OBANsb2MJALUJAgkBBXZhbHVlAQULY3VyTG9jYXRpb24CAV8DCQECIT0CCQCRAwIFA2xvYwUKbG9jSWR4VHlwZQIBTAkAAgEJAKwCAgkArAICAhZEdWNrIGxvY2F0aW9uIHR5cGUgaXMgCQCRAwIFA2xvYwUKbG9jSWR4VHlwZQIRLCBidXQgc2hvdWxkIGJlIEwJAJQKAgkAkQMCBQNsb2MFCGxvY0lkeElkBQtkdWNrQXNzZXRJZAQLbGFuZEFzc2V0SWQIBQ0kdDAzMzczODM0Mjc3Al8xBAZkdWNrSWQIBQ0kdDAzMzczODM0Mjc3Al8yBAVhc3NldAkBBXZhbHVlAQkA7AcBCQDZBAEFC2xhbmRBc3NldElkBAd0aW1lS2V5CQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFC2xhbmRBc3NldElkBAlzYXZlZFRpbWUJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnwgBBQd0aW1lS2V5CQCsAgIJAKwCAgIFTGFuZCAIBQVhc3NldARuYW1lAg4gaXMgbm90IHN0YWtlZAQFb3duZXIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEVa2V5TGFuZEFzc2V0SWRUb093bmVyAQULbGFuZEFzc2V0SWQJAKwCAgkArAICAgRORlQgCAUFYXNzZXQEbmFtZQIMIGlzIG9ycGhhbmVkAwkBAiE9AgUFb3duZXIFBGFkZHIJAAIBCQCsAgIFCkxBTkRQUkVGSVgCDSBpcyBub3QgeW91cnMEAWQJALUJAggFBWFzc2V0C2Rlc2NyaXB0aW9uAgFfCQCWCgQFBmR1Y2tJZAULbGFuZEFzc2V0SWQFAWQFCXNhdmVkVGltZQEQY2xhaW1SZXNJbnRlcm5hbAQEYWRkcgZhbW91bnQJY2xhaW1Nb2RlDWxhbmRBc3NldElkSW4DCQBmAgAABQZhbW91bnQJAAIBAg9OZWdhdGl2ZSBhbW91bnQEAWMJARRjaGVja0NsYWltQ29uZGl0aW9ucwMFBGFkZHIFCWNsYWltTW9kZQUNbGFuZEFzc2V0SWRJbgQIbGFuZFNpemUJAJEDAggFAWMCXzMFC3JlY0xhbmRTaXplBA10ZXJyYWluQ291bnRzCQENY291bnRUZXJyYWlucwEJAJEDAggFAWMCXzMFC3JlY1RlcnJhaW5zBAlkZWx0YVRpbWUJAGUCCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAgFAWMCXzQDCQBmAgAABQlkZWx0YVRpbWUJAAIBCQCsAgIJAKwCAgkArAICAiZTYXZlZCB0aW1lc3RhbXAgaXMgaW4gZnV0dXJlLCBzYXZlZCA9IAkApAMBCAUBYwJfNAIMLCBjdXJyZW50ID0gCQCkAwEIBQlsYXN0QmxvY2sJdGltZXN0YW1wBAZwaWVjZXMJAQ9udW1QaWVjZXNCeVNpemUBBQhsYW5kU2l6ZQQWZGFpbHlQcm9kdWN0aW9uQnlQaWVjZQkBDGFwcGx5Qm9udXNlcwIIBQFjAl8yBQZwaWVjZXMECGF2YWlsUmVzCQBrAwUJZGVsdGFUaW1lCQBoAgUWZGFpbHlQcm9kdWN0aW9uQnlQaWVjZQUGcGllY2VzBQlEQVlNSUxMSVMDCQBmAgUGYW1vdW50BQhhdmFpbFJlcwkAAgEJAKwCAgkArAICCQCsAgICIk5vdCBlbm91Z2ggcmVzb3VyY2VzLCBhdmFpbGFibGUgPSAJAKQDAQUIYXZhaWxSZXMCDiwgcmVxdWVzdGVkID0gCQCkAwEFBmFtb3VudAQMbmV3RGVsdGFUaW1lCQBrAwkAZQIFCGF2YWlsUmVzBQZhbW91bnQFCURBWU1JTExJUwkAaAIFFmRhaWx5UHJvZHVjdGlvbkJ5UGllY2UFBnBpZWNlcwQMbmV3VGltZXN0YW1wCQBlAggFCWxhc3RCbG9jawl0aW1lc3RhbXAFDG5ld0RlbHRhVGltZQQJbGFuZEluZGV4CQBpAgUGcGllY2VzBQVTU0laRQQKcmVzVG9DbGFpbQkBCXZpcnRDbGFpbQQFDXRlcnJhaW5Db3VudHMJAGUCBQlkZWx0YVRpbWUFDG5ld0RlbHRhVGltZQUJbGFuZEluZGV4BRZkYWlseVByb2R1Y3Rpb25CeVBpZWNlBAV3aEtleQkBEmtleVdhcmVob3VzZUJ5TGFuZAEIBQFjAl8yBAppbmZyYUxldmVsCQELdmFsdWVPckVsc2UCCQCfCAEJARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQgFAWMCXzIAAAQJY3VycmVudFdoCQEMZ2V0V2FyZWhvdXNlAwUFd2hLZXkFCWxhbmRJbmRleAUKaW5mcmFMZXZlbAQEbG9mdAkAtQkCCQCRAwIFCWN1cnJlbnRXaAUJd2hJZHhMT0ZUAgFfBAt3aFNwYWNlTGVmdAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFB3ZvbEZyZWUDAwkAAAIFCWNsYWltTW9kZQULY2xhaW1Nb2RlV2gJAGYCBQZhbW91bnQFC3doU3BhY2VMZWZ0BwkAAgEJAKwCAgkArAICAgVPbmx5IAkApAMBBQt3aFNwYWNlTGVmdAIYIHNwYWNlIGxlZnQgaW4gd2FyZWhvdXNlBAVicEtleQkBEWtleUJhY2twYWNrQnlEdWNrAQgFAWMCXzEEC2N1cnJlbnRQYWNrCQELZ2V0QmFja3BhY2sBBQVicEtleQQOY3VycmVudFBhY2tSZXMJALUJAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhSZXMCAV8EDGN1cnJlbnRXaFJlcwkAtQkCCQCRAwIFCWN1cnJlbnRXaAUId2hJZHhSZXMCAV8EDSR0MDM2NjUxMzc1MjIDCQAAAgUJY2xhaW1Nb2RlBQtjbGFpbU1vZGVXaAkAlgoECQEGYWRkUmVzBQUMY3VycmVudFdoUmVzBQ10ZXJyYWluQ291bnRzCQBlAgUJZGVsdGFUaW1lBQxuZXdEZWx0YVRpbWUFCWxhbmRJbmRleAUWZGFpbHlQcm9kdWN0aW9uQnlQaWVjZQkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhSZXMJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEbG9mdAULdm9sT2NjdXBpZWQIBQpyZXNUb0NsYWltAl8yCQBlAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFB3ZvbEZyZWUIBQpyZXNUb0NsYWltAl8yAwkAAAIFCWNsYWltTW9kZQUNY2xhaW1Nb2RlRHVjawkAlgoECQCRAwIFCWN1cnJlbnRXaAUId2hJZHhSZXMJAQZhZGRSZXMFBQ5jdXJyZW50UGFja1JlcwUNdGVycmFpbkNvdW50cwkAZQIFCWRlbHRhVGltZQUMbmV3RGVsdGFUaW1lBQlsYW5kSW5kZXgFFmRhaWx5UHJvZHVjdGlvbkJ5UGllY2UJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQt2b2xPY2N1cGllZAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFB3ZvbEZyZWUEBWRpc3RyCQENZGlzdHJpYnV0ZVJlcwQFDGN1cnJlbnRXaFJlcwUOY3VycmVudFBhY2tSZXMFCnJlc1RvQ2xhaW0FC3doU3BhY2VMZWZ0BAR3aEFtCQCXAwEJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFB3ZvbEZyZWUJAMwIAggFCnJlc1RvQ2xhaW0CXzIFA25pbAkAlgoECAUFZGlzdHICXzEIBQVkaXN0cgJfMgkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQt2b2xPY2N1cGllZAUEd2hBbQkAZQIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQd2b2xGcmVlBQR3aEFtBAV3aFJlcwgFDSR0MDM2NjUxMzc1MjICXzEEBWJwUmVzCAUNJHQwMzY2NTEzNzUyMgJfMgQFbG9mdE8IBQ0kdDAzNjY1MTM3NTIyAl8zBAVsb2Z0RggFDSR0MDM2NjUxMzc1MjICXzQJAJcKBQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBCAUBYwJfMgUMbmV3VGltZXN0YW1wCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEia2V5U3Rha2VkVGltZUJ5VHlwZUFzc2V0SWRBbmRPd25lcgMFCkxBTkRQUkVGSVgIBQFjAl8yBQRhZGRyBQxuZXdUaW1lc3RhbXAFA25pbAUFYnBLZXkJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUKYnBJZHhMZXZlbAkAzAgCBQVicFJlcwkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeE1hdAkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QFA25pbAUFd2hLZXkJAMwIAgkAkQMCBQljdXJyZW50V2gFC3doSWR4TGV2ZWxzCQDMCAIFBXdoUmVzCQDMCAIJAJEDAgUJY3VycmVudFdoBQh3aElkeE1hdAkAzAgCCQCRAwIFCWN1cnJlbnRXaAUJd2hJZHhQcm9kCQDMCAIJALkJAgkAzAgCCQCRAwIFBGxvZnQFCXZvbExvY2tlZAkAzAgCCQCkAwEFBWxvZnRPCQDMCAIJAKQDAQUFbG9mdEYJAMwIAgkAkQMCBQRsb2Z0BQh2b2xUb3RhbAUDbmlsAgFfBQNuaWwBCGNsYWltQWxsBARhZGRyC2xhbmRBc3NldElkBnBpZWNlcwljbGFpbU1vZGUEB3RpbWVLZXkJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQULbGFuZEFzc2V0SWQECXNhdmVkVGltZQkBBXZhbHVlAQkAnwgBBQd0aW1lS2V5BAhhdmFpbFJlcwkAaAIJAGsDCQBlAggFCWxhc3RCbG9jawl0aW1lc3RhbXAFCXNhdmVkVGltZQkBDGFwcGx5Qm9udXNlcwIFC2xhbmRBc3NldElkBQZwaWVjZXMFCURBWU1JTExJUwUGcGllY2VzCQEQY2xhaW1SZXNJbnRlcm5hbAQFBGFkZHIFCGF2YWlsUmVzBQljbGFpbU1vZGUFC2xhbmRBc3NldElkAQ11cEluZnJhQ29tbW9uBAxzaG91bGRVc2VNYXQGY2FsbGVyDXBheW1lbnRBbW91bnQLbGFuZEFzc2V0SWQEBGFkZHIJAKUIAQUGY2FsbGVyBAFjCQEUY2hlY2tDbGFpbUNvbmRpdGlvbnMDBQRhZGRyBRNjbGFpbU1vZGVXaFRoZW5EdWNrBQtsYW5kQXNzZXRJZAQGcGllY2VzCQEPbnVtUGllY2VzQnlTaXplAQkAkQMCCAUBYwJfMwULcmVjTGFuZFNpemUECGluZnJhS2V5CQEWa2V5SW5mcmFMZXZlbEJ5QXNzZXRJZAEIBQFjAl8yBAhjdXJMZXZlbAkBC3ZhbHVlT3JFbHNlAgkAnwgBBQhpbmZyYUtleQAAAwMJAQEhAQUYS1NfQUxMT1dfQklHX0lORlJBX01FUkdFCQBnAgUIY3VyTGV2ZWwAAwcJAAIBAiZDdXJyZW50bHkgbWF4IGluZnJhc3RydWN0dXJlIGxldmVsID0gMwQIbWF4SW5mcmEJAGQCCQBpAgkBBHNxcnQEBQZwaWVjZXMAAAAABQRET1dOAAUAAgQIbmV3TGV2ZWwJAGQCBQhjdXJMZXZlbAABAwMFGEtTX0FMTE9XX0JJR19JTkZSQV9NRVJHRQkAZgIFCG5ld0xldmVsBQhtYXhJbmZyYQcJAAIBCQCsAgICJUN1cnJlbnRseSBtYXggaW5mcmFzdHJ1Y3R1cmUgbGV2ZWwgPSAJAKQDAQUIbWF4SW5mcmEEBGNvc3QJAGsDBRVJbmZyYVVwZ3JhZGVDb3N0U1VzZHQJAGgCBQZwaWVjZXMFCG5ld0xldmVsBQVTU0laRQMDCQEBIQEFDHNob3VsZFVzZU1hdAkBAiE9AgUNcGF5bWVudEFtb3VudAUEY29zdAcJAAIBCQCsAgICG1BheW1lbnQgYXR0YWNoZWQgc2hvdWxkIGJlIAkApAMBBQRjb3N0BAVicEtleQkBEWtleUJhY2twYWNrQnlEdWNrAQgFAWMCXzEEC2N1cnJlbnRQYWNrCQELZ2V0QmFja3BhY2sBBQVicEtleQQFbUxpc3QJALUJAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhNYXQCAV8EB21hdFVzZWQJAGsDBRFJbmZyYVVwZ3JhZGVDb3N0UwkAaAIFBnBpZWNlcwUIbmV3TGV2ZWwFBVNTSVpFBAZuZXdNYXQJALkJAgkBEXN1YnRyYWN0TWF0ZXJpYWxzAwUMc2hvdWxkVXNlTWF0BQVtTGlzdAUHbWF0VXNlZAIBXwQLY2xhaW1SZXN1bHQJAQhjbGFpbUFsbAQFBGFkZHIIBQFjAl8yBQZwaWVjZXMFE2NsYWltTW9kZVdoVGhlbkR1Y2sEBndoRGF0YQgFC2NsYWltUmVzdWx0Al81BAZvbGRWb2wJARdnZXRXYXJlaG91c2VUb3RhbFZvbHVtZQEJAJEDAgUGd2hEYXRhBQt3aElkeExldmVscwQKbmV3Vm9sRGF0YQkAuQkCCQDMCAIJAJEDAgkAtQkCCQCRAwIFBndoRGF0YQULd2hJZHhMZXZlbHMCAV8AAAkAzAgCCQCkAwEFCG5ld0xldmVsBQNuaWwCAV8EBm5ld1ZvbAkBF2dldFdhcmVob3VzZVRvdGFsVm9sdW1lAQUKbmV3Vm9sRGF0YQQEbG9mdAkAtQkCCQCRAwIFBndoRGF0YQUJd2hJZHhMT0ZUAgFfBApuZXdMb2Z0U3RyCQC5CQIJAMwIAgkAkQMCBQRsb2Z0BQl2b2xMb2NrZWQJAMwIAgkAkQMCBQRsb2Z0BQt2b2xPY2N1cGllZAkAzAgCCQCkAwEJAGUCCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFB3ZvbEZyZWUFBm5ld1ZvbAUGb2xkVm9sCQDMCAIJAKQDAQUGbmV3Vm9sBQNuaWwCAV8JAJUKAwkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQhpbmZyYUtleQUIbmV3TGV2ZWwJAMwIAgkBDEludGVnZXJFbnRyeQIJAR5rZXlJbmZyYUxldmVsQnlBc3NldElkQW5kT3duZXICCAUBYwJfMgUEYWRkcgUIbmV3TGV2ZWwJAMwIAgkBC1N0cmluZ0VudHJ5AgUFYnBLZXkJALkJAgkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQpicElkeExldmVsCQDMCAIJAJEDAggFC2NsYWltUmVzdWx0Al8zBQhicElkeFJlcwkAzAgCBQZuZXdNYXQJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kBQNuaWwCAToJAMwIAgkBC1N0cmluZ0VudHJ5AggFC2NsYWltUmVzdWx0Al80CQC5CQIJAMwIAgUKbmV3Vm9sRGF0YQkAzAgCCQCRAwIFBndoRGF0YQUId2hJZHhSZXMJAMwIAgkAkQMCBQZ3aERhdGEFCHdoSWR4TWF0CQDMCAIJAJEDAgUGd2hEYXRhBQl3aElkeFByb2QJAMwIAgUKbmV3TG9mdFN0cgUDbmlsAgE6BQNuaWwIBQtjbGFpbVJlc3VsdAJfMQUIbmV3TGV2ZWwFB21hdFVzZWQBF3VwZGF0ZUR1Y2tTdGF0c0ludGVybmFsAgtkdWNrQXNzZXRJZAdkZWx0YVhQBAZsdmxLZXkJAQxrZXlEdWNrTGV2ZWwBBQtkdWNrQXNzZXRJZAQFeHBLZXkJAQlrZXlEdWNrWFABBQtkdWNrQXNzZXRJZAQCeHAJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUFeHBLZXkAAAQFbmV3WFAJAGQCBQJ4cAUHZGVsdGFYUAQJbHZsUG9pbnRzCQEHbGV2ZWxVcAIJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUGbHZsS2V5AAAFBW5ld1hQBAlrZXlQb2ludHMJARFrZXlEdWNrRnJlZVBvaW50cwEFC2R1Y2tBc3NldElkCQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIFBmx2bEtleQkAkQMCBQlsdmxQb2ludHMAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgUFeHBLZXkFBW5ld1hQCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQlrZXlQb2ludHMJAGQCCQELdmFsdWVPckVsc2UCCQCfCAEFCWtleVBvaW50cwAACQCRAwIFCWx2bFBvaW50cwABBQNuaWwFBW5ld1hQARZ1cGRhdGVBY2NTdGF0c0ludGVybmFsAgRhZGRyB2RlbHRhWFAEBmx2bEtleQkBDGtleVVzZXJMZXZlbAEFBGFkZHIEBXhwS2V5CQEJa2V5VXNlclhQAQUEYWRkcgQCeHAJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUFeHBLZXkAAAQFbmV3WFAJAGQCBQJ4cAUHZGVsdGFYUAQJbHZsUG9pbnRzCQEHbGV2ZWxVcAIJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUGbHZsS2V5AAAFBW5ld1hQBAlrZXlQb2ludHMJARFrZXlVc2VyRnJlZVBvaW50cwEFBGFkZHIJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUGbHZsS2V5CQCRAwIFCWx2bFBvaW50cwAACQDMCAIJAQxJbnRlZ2VyRW50cnkCBQV4cEtleQUFbmV3WFAJAMwIAgkBDEludGVnZXJFbnRyeQIFCWtleVBvaW50cwkAZAIJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJa2V5UG9pbnRzAAAJAJEDAgUJbHZsUG9pbnRzAAEFA25pbAUFbmV3WFABEmFjdGl2YXRlT25ib2FyZEFydAEEYWRkcgQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQRhZGRyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkBAhyZWZCeUtleQkBD2tleUFkZHJlc3NSZWZCeQEFBGFkZHIEBXJlZkJ5CQCiCAEFCHJlZkJ5S2V5AwkBASEBCQEJaXNEZWZpbmVkAQUFcmVmQnkJAAIBAilZb3UgYXJlIG5vdCBlbGlnaWJsZSBmb3IgT05CT0FSRCBhcnRpZmFjdAQGYXJ0S2V5CQEca2V5T25ib2FyZEFydER1Y2tBY3RpdmF0ZWRCeQEFBGFkZHIEB2FydER1Y2sJAKIIAQUGYXJ0S2V5AwkBCWlzRGVmaW5lZAEFB2FydER1Y2sJAAIBCQCsAgICL1lvdSBhbHJlYWR5IHVzZWQgeW91ciBPTkJPQVJEIGFydGlmYWN0IG9uIGR1Y2sgCQEFdmFsdWUBBQdhcnREdWNrBBBkdWNrQWN0aXZhdG9yS2V5CQEca2V5T25ib2FyZEFydEFjdGl2YXRlZE9uRHVjawEFC2R1Y2tBc3NldElkBA1kdWNrQWN0aXZhdG9yCQCiCAEFEGR1Y2tBY3RpdmF0b3JLZXkDCQEJaXNEZWZpbmVkAQUNZHVja0FjdGl2YXRvcgkAAgEJAKwCAgkArAICCQCsAgICCVRoZSBkdWNrIAULZHVja0Fzc2V0SWQCNCBhbHJlYWR5IGdvdCBwb2ludHMgZnJvbSBPTkJPQVJEIGFydGlmYWN0IGZyb20gdXNlciAJAQV2YWx1ZQEFDWR1Y2tBY3RpdmF0b3IJAM4IAgkAzAgCCQELU3RyaW5nRW50cnkCBQZhcnRLZXkFC2R1Y2tBc3NldElkCQDMCAIJAQtTdHJpbmdFbnRyeQIFEGR1Y2tBY3RpdmF0b3JLZXkFBGFkZHIFA25pbAgJARd1cGRhdGVEdWNrU3RhdHNJbnRlcm5hbAIFC2R1Y2tBc3NldElkBQl4cE9uYm9hcmQCXzEBEmFjdGl2YXRlUHJlc2FsZUFydAIEYWRkcg1sYW5kQXNzZXRJZEluBAFjCQEUY2hlY2tDbGFpbUNvbmRpdGlvbnMDBQRhZGRyBRNjbGFpbU1vZGVXaFRoZW5EdWNrBQ1sYW5kQXNzZXRJZEluBAtsYW5kQXNzZXRJZAgFAWMCXzIEBnBpZWNlcwkBD251bVBpZWNlc0J5U2l6ZQEJAJEDAggFAWMCXzMFC3JlY0xhbmRTaXplBA1hY3RpdmF0aW9uS2V5CQEga2V5TGFuZEFydFN0YXR1c0J5VHlwZUFuZEFzc2V0SWQCBQpBUlRQUkVTQUxFBQtsYW5kQXNzZXRJZAMJAGYCCQELdmFsdWVPckVsc2UCCQCfCAEFDWFjdGl2YXRpb25LZXkAAAAACQACAQIlUHJlc2FsZSBhcnRpZmFjdCBpcyBhbHJlYWR5IGFjdGl2YXRlZAMJAGYCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAggFAWMCXzMFCnJlY0xhbmROdW0FD1BSRVNBTEVOVU1MQU5EUwkAAgEJAKwCAgkArAICCQCsAgIFCkxBTkRQUkVGSVgCASAFC2xhbmRBc3NldElkAiUgaXMgbm90IGVsaWdpYmxlIGZvciBwcmVzYWxlIGFydGlmYWN0BAtjbGFpbVJlc3VsdAkBCGNsYWltQWxsBAUEYWRkcgULbGFuZEFzc2V0SWQFBnBpZWNlcwUTY2xhaW1Nb2RlV2hUaGVuRHVjawkAzQgCCQDNCAIJAM0IAggFC2NsYWltUmVzdWx0Al8xCQEMSW50ZWdlckVudHJ5AgUNYWN0aXZhdGlvbktleQUGcGllY2VzCQELU3RyaW5nRW50cnkCCAULY2xhaW1SZXN1bHQCXzIJALkJAggFC2NsYWltUmVzdWx0Al8zAgE6CQELU3RyaW5nRW50cnkCCAULY2xhaW1SZXN1bHQCXzQJALkJAggFC2NsYWltUmVzdWx0Al81AgE6AQ9jaGVja1RvdXJuYW1lbnQBC2R1Y2tBc3NldElkBAZsYXN0SWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUSdG91cm5hbWVudENvbnRyYWN0BQ1sYXN0VG91cklkS2V5AAAEC2N1ckxvY2F0aW9uCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAKIIAQkBD2tleUR1Y2tMb2NhdGlvbgEFC2R1Y2tBc3NldElkBQ9ERUZBVUxUTE9DQVRJT04CAV8EA25vdwgFCWxhc3RCbG9jawl0aW1lc3RhbXAEBXREYXRhCQELZ2V0VG91ckRhdGECBRJ0b3VybmFtZW50Q29udHJhY3QFBmxhc3RJZAQGc3RhdGljCQCRAwIFBXREYXRhBQlpZHhTdGF0aWMEB2R5bmFtaWMJAJEDAgUFdERhdGEFCmlkeER5bmFtaWMDCQECIT0CCQCRAwIFC2N1ckxvY2F0aW9uBQpsb2NJZHhUeXBlAgFUBwMDAwkAAAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQtjdXJMb2NhdGlvbgUPbG9jSWR4Q29udGluZW50BQZsYXN0SWQJAAACCQCRAwIFB2R5bmFtaWMFDnREeW5hbWljU3RhdHVzAgpJTlBST0dSRVNTBwkAZgIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQZzdGF0aWMFCnRTdGF0aWNFbmQFA25vdwcJAAIBAipZb3VyIGR1Y2sgaXMgdGFraW5nIHBhcnQgaW4gdGhlIHRvdXJuYW1lbnQJAQlhc0Jvb2xlYW4BCQD8BwQFBHRoaXMCFmV4aXRUb3VybmFtZW50SW50ZXJuYWwJAMwIAgULZHVja0Fzc2V0SWQFA25pbAUDbmlsAQ1jaGVja0RlbGl2ZXJ5AQtkdWNrQXNzZXRJZAMJAQEhAQURS1NfQUxMT1dfREVMSVZFUlkHBAtjdXJMb2NhdGlvbgkAtQkCCQELdmFsdWVPckVsc2UCCQCiCAEJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAUPREVGQVVMVExPQ0FUSU9OAgFfBANub3cIBQlsYXN0QmxvY2sJdGltZXN0YW1wAwkBAiE9AgkAkQMCBQtjdXJMb2NhdGlvbgUKbG9jSWR4VHlwZQIBRAcECXN0YXJ0VGltZQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFC2N1ckxvY2F0aW9uBQ9sb2NJZHhDb250aW5lbnQECGRpc3RhbmNlCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgULY3VyTG9jYXRpb24FCGxvY0lkeElkAwMJAGYCBQNub3cJAGQCBQlzdGFydFRpbWUFElRFTl9NSU5VVEVTX01JTExJUwkAZgIAAwUIZGlzdGFuY2UHCQACAQIgWW91ciBkdWNrIGlzIG9uIGRlbGl2ZXJ5IG1pc3Npb24JAQlhc0Jvb2xlYW4BCQD8BwQFBHRoaXMCFGV4aXREZWxpdmVyeUludGVybmFsCQDMCAIFC2R1Y2tBc3NldElkBQNuaWwFA25pbAESZXhpdERlbGl2ZXJ5Q29tbW9uBAtkdWNrQXNzZXRJZAVjaGVjawVuZXdIUAVzY29yZQQLY3VyTG9jYXRpb24JALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBCQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQFD0RFRkFVTFRMT0NBVElPTgIBXwQDbm93CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQJc3RhcnRUaW1lCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgULY3VyTG9jYXRpb24FD2xvY0lkeENvbnRpbmVudAQIZGlzdGFuY2UJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQtjdXJMb2NhdGlvbgUIbG9jSWR4SWQEBW93bmVyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBEGtleUR1Y2tJZFRvT3duZXIBBQtkdWNrQXNzZXRJZAIUTkZUIGR1Y2sgaXMgb3JwaGFuZWQECWhlYWx0aEtleQkBDWtleUR1Y2tIZWFsdGgBBQtkdWNrQXNzZXRJZAQJY3VySGVhbHRoCQERQGV4dHJOYXRpdmUoMTA1NSkBBQloZWFsdGhLZXkEDm91dGNvbWVBY3Rpb25zAwMJAGcCBQhkaXN0YW5jZQADBgMDBQVjaGVjawkAZwIFBXNjb3JlAAMHCQBmAgUFbmV3SFAAAAcEBnJld2FyZAkA/AcEBQ9lY29ub215Q29udHJhY3QCEnNlbmREZWxpdmVyeVJld2FyZAkAzAgCBQVvd25lcgUDbmlsBQNuaWwDCQAAAgUGcmV3YXJkBQZyZXdhcmQECGNvdW50S2V5CQEUa2V5VXNlckRlbGl2ZXJ5Q291bnQBBQVvd25lcgkAzAgCCQEMSW50ZWdlckVudHJ5AgUIY291bnRLZXkJAGQCCQELdmFsdWVPckVsc2UCCQCfCAEFCGNvdW50S2V5AAAAAQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBFmtleVVzZXJMYXN0RGVsaXZlcnlEYXkBBQVvd25lcgkAaQIFCXN0YXJ0VGltZQUJREFZTUlMTElTBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4DAwMFBWNoZWNrCQBmAgUFbmV3SFAAAAcJAGYCCQBkAgUJc3RhcnRUaW1lBRJURU5fTUlOVVRFU19NSUxMSVMFA25vdwcJAAIBAiZZb3VyIGR1Y2sgaXMgc3RpbGwgb24gZGVsaXZlcnkgbWlzc2lvbgQLbG9ja2VkVG90YWwJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPZWNvbm9teUNvbnRyYWN0BRFkZWxpdmVyeUxvY2tlZEtleQAABAZ1bmxvY2sJAPwHBAUPZWNvbm9teUNvbnRyYWN0AhR1cGRhdGVEZWxpdmVyeUxvY2tlZAkAzAgCCQBlAgULbG9ja2VkVG90YWwFFU1JTl9VU0RUX0ZFRV9ERUxJVkVSWQUDbmlsBQNuaWwDCQAAAgUGdW5sb2NrBQZ1bmxvY2sDAwMFBWNoZWNrCQBnAgAABQVuZXdIUAcGCQBnAgAABQljdXJIZWFsdGgFA25pbAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBFmtleURlbGl2ZXJ5RGVsYXlCeUR1Y2sBBQtkdWNrQXNzZXRJZAkAZAIFCXN0YXJ0VGltZQUTREVMSVZFUllfUFVOSVNITUVOVAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBAtzYXZlZEhlYWx0aAkBEUBleHRyTmF0aXZlKDEwNTUpAQkBDmtleVNhdmVkSGVhbHRoAQULZHVja0Fzc2V0SWQEDXNhdmVkTG9jYXRpb24JARFAZXh0ck5hdGl2ZSgxMDU4KQEJARBrZXlTYXZlZExvY2F0aW9uAQULZHVja0Fzc2V0SWQJAJYKBAUOb3V0Y29tZUFjdGlvbnMJAMwIAgkBDEludGVnZXJFbnRyeQIFCWhlYWx0aEtleQULc2F2ZWRIZWFsdGgJAMwIAgkBC1N0cmluZ0VudHJ5AgkBD2tleUR1Y2tMb2NhdGlvbgEFC2R1Y2tBc3NldElkBQ1zYXZlZExvY2F0aW9uBQNuaWwFDXNhdmVkTG9jYXRpb24FC3NhdmVkSGVhbHRoAQ1tZXJnZUludGVybmFsBgtuZXdMYW5kU2l6ZQhuZXdMZXZlbAdmb3JtdWxhBGFkZHIMbGFuZEFzc2V0SWRzB25lZWRNYXQEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUEYWRkcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAMJAQ9jaGVja1RvdXJuYW1lbnQBBQtkdWNrQXNzZXRJZAkAAgECHW1lcmdlSW50ZXJuYWxfY2hlY2tUb3VybmFtZW50AwkBDWNoZWNrRGVsaXZlcnkBBQtkdWNrQXNzZXRJZAkAAgECG21lcmdlSW50ZXJuYWxfY2hlY2tEZWxpdmVyeQoBCmNoZWNrTWVyZ2UCA2FjYwtsYW5kQXNzZXRJZAQFYXNzZXQJAQV2YWx1ZQEJAOwHAQkA2QQBBQtsYW5kQXNzZXRJZAQHdGltZUtleQkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAQJc2F2ZWRUaW1lCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ8IAQUHdGltZUtleQkArAICCQCsAgICBE5GVCAIBQVhc3NldARuYW1lAg4gaXMgbm90IHN0YWtlZAQFb3duZXIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEVa2V5TGFuZEFzc2V0SWRUb093bmVyAQULbGFuZEFzc2V0SWQJAKwCAgkArAICAgRORlQgCAUFYXNzZXQEbmFtZQIMIGlzIG9ycGhhbmVkAwkBAiE9AgUFb3duZXIFBGFkZHIJAAIBCQCsAgIFCkxBTkRQUkVGSVgCDSBpcyBub3QgeW91cnMEAWQJALUJAggFBWFzc2V0C2Rlc2NyaXB0aW9uAgFfBAljb250aW5lbnQJAJEDAgUBZAUMcmVjQ29udGluZW50AwMJAQIhPQIIBQNhY2MCXzMCAAkBAiE9AggFA2FjYwJfMwUJY29udGluZW50BwkAAgECLkxhbmRzIHNob3VsZCBiZSBvbiB0aGUgc2FtZSBjb250aW5lbnQgdG8gbWVyZ2UECGxhbmRTaXplCQCRAwIFAWQFC3JlY0xhbmRTaXplBAdzaXplc0luCAUDYWNjAl8xBAFpCQETdmFsdWVPckVycm9yTWVzc2FnZQIJALMJAgUHc2l6ZXNJbgUIbGFuZFNpemUCJ1lvdSBoYXZlbid0IHBhc3NlZCBhbGwgdGhlIGxhbmRzIG5lZWRlZAQIc2l6ZXNPdXQJAKwCAgkArwICBQdzaXplc0luBQFpCQCwAgIFB3NpemVzSW4JAGQCBQFpAAEEBnBpZWNlcwkBD251bVBpZWNlc0J5U2l6ZQEFCGxhbmRTaXplBARhcnRzCQBkAggFA2FjYwJfMgkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEga2V5TGFuZEFydFN0YXR1c0J5VHlwZUFuZEFzc2V0SWQCBQpBUlRQUkVTQUxFBQtsYW5kQXNzZXRJZAAABAppbmZyYUxldmVsCQELdmFsdWVPckVsc2UCCQCfCAEJARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQULbGFuZEFzc2V0SWQAAAQIcmVxTGV2ZWwEByRtYXRjaDAFCGxhbmRTaXplAwkAAAICAVMFByRtYXRjaDAAAwMJAAACAgFNBQckbWF0Y2gwAAQDCQAAAgIBTAUHJG1hdGNoMAAFAwkAAAICAlhMBQckbWF0Y2gwAAYJAAIBAhpPbmx5IFMsIE0sIEwsIFhMIGNhbiBtZXJnZQMJAQIhPQIFCmluZnJhTGV2ZWwFCHJlcUxldmVsCQACAQIiQWxsIGxhbmRzIHNob3VsZCBiZSBtYXhlZCB0byBtZXJnZQQHbGFuZE51bQkAkQMCBQFkBQpyZWNMYW5kTnVtBA10ZXJyYWluQ291bnRzCQENY291bnRUZXJyYWlucwEJAJEDAgUBZAULcmVjVGVycmFpbnMECWRlbHRhVGltZQkAZQIIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQlzYXZlZFRpbWUDCQBmAgAABQlkZWx0YVRpbWUJAAIBCQCsAgIJAKwCAgkArAICAiZTYXZlZCB0aW1lc3RhbXAgaXMgaW4gZnV0dXJlLCBzYXZlZCA9IAkApAMBBQlzYXZlZFRpbWUCDCwgY3VycmVudCA9IAkApAMBCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQWZGFpbHlQcm9kdWN0aW9uQnlQaWVjZQkBDGFwcGx5Qm9udXNlcwIFC2xhbmRBc3NldElkBQZwaWVjZXMECWxhbmRJbmRleAkAaQIFBnBpZWNlcwUFU1NJWkUEBWJwUmVzCQEGYWRkUmVzBQkAtQkCCAUDYWNjAl80AgFfBQ10ZXJyYWluQ291bnRzBQlkZWx0YVRpbWUFCWxhbmRJbmRleAUWZGFpbHlQcm9kdWN0aW9uQnlQaWVjZQQFcHJvcHMJARl1cGRhdGVQcm9wb3J0aW9uc0ludGVybmFsBAgFA2FjYwJfNgUNdGVycmFpbkNvdW50cwUJbGFuZEluZGV4AP///////////wEEBmNQcm9wcwkBGXVwZGF0ZVByb3BvcnRpb25zSW50ZXJuYWwECAUDYWNjA18xMAUNdGVycmFpbkNvdW50cwUJbGFuZEluZGV4AP///////////wEEC3N1bVRlcnJhaW5zCQEZdXBkYXRlUHJvcG9ydGlvbnNJbnRlcm5hbAQIBQNhY2MCXzkFDXRlcnJhaW5Db3VudHMFCWxhbmRJbmRleAABBAVsYW5kcwgFA2FjYwJfNwQDaWR4CQDPCAIFBWxhbmRzBQtsYW5kQXNzZXRJZAMJAQEhAQkBCWlzRGVmaW5lZAEFA2lkeAkAAgEJAKwCAgIgWW91ciBzdGFrZWQgbGFuZHMgZG9uJ3QgY29udGFpbiAFC2xhbmRBc3NldElkBAljdXN0b21LZXkJARprZXlMYW5kQXNzZXRJZFRvQ3VzdG9tTmFtZQEFC2xhbmRBc3NldElkBApjdXN0b21OYW1lCQELdmFsdWVPckVsc2UCCQCiCAEFCWN1c3RvbUtleQIACQCcCgoFCHNpemVzT3V0BQRhcnRzBQljb250aW5lbnQFBWJwUmVzCQDOCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCAUDYWNjAl81CQELRGVsZXRlRW50cnkBCQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFC2xhbmRBc3NldElkCQELRGVsZXRlRW50cnkBCQEia2V5U3Rha2VkVGltZUJ5VHlwZUFzc2V0SWRBbmRPd25lcgMFCkxBTkRQUkVGSVgFC2xhbmRBc3NldElkBQRhZGRyCQELRGVsZXRlRW50cnkBCQEQa2V5TGFuZFRvQXNzZXRJZAEFB2xhbmROdW0JAQtEZWxldGVFbnRyeQEJARVrZXlMYW5kQXNzZXRJZFRvT3duZXIBBQtsYW5kQXNzZXRJZAkBC0RlbGV0ZUVudHJ5AQkBFmtleUluZnJhTGV2ZWxCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAkBC0RlbGV0ZUVudHJ5AQkBHmtleUluZnJhTGV2ZWxCeUFzc2V0SWRBbmRPd25lcgIFC2xhbmRBc3NldElkBQRhZGRyCQELRGVsZXRlRW50cnkBCQEga2V5TGFuZEFydFN0YXR1c0J5VHlwZUFuZEFzc2V0SWQCBQpBUlRQUkVTQUxFBQtsYW5kQXNzZXRJZAkBC0RlbGV0ZUVudHJ5AQkBEWtleUxhbmROdW1Ub093bmVyAQUHbGFuZE51bQkBC0RlbGV0ZUVudHJ5AQkBEmtleVdhcmVob3VzZUJ5TGFuZAEFC2xhbmRBc3NldElkCQELRGVsZXRlRW50cnkBBQljdXN0b21LZXkJAQRCdXJuAgkA2QQBBQtsYW5kQXNzZXRJZAABAwkBAiE9AgUKY3VzdG9tTmFtZQIACQDMCAIJAQtEZWxldGVFbnRyeQEJARprZXlMYW5kQ3VzdG9tTmFtZVRvQXNzZXRJZAEFCmN1c3RvbU5hbWUFA25pbAUDbmlsBQVwcm9wcwkA0QgCBQVsYW5kcwkBBXZhbHVlAQUDaWR4CQBkAggFA2FjYwJfOAUGcGllY2VzBQtzdW1UZXJyYWlucwUGY1Byb3BzBAVicEtleQkBEWtleUJhY2twYWNrQnlEdWNrAQULZHVja0Fzc2V0SWQEC2N1cnJlbnRQYWNrCQELZ2V0QmFja3BhY2sBBQVicEtleQQIcHJvcExpc3QJALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBCQERa2V5UmVzUHJvcG9ydGlvbnMAAgswXzBfMF8wXzBfMAIBXwQIbGFuZHNLZXkJARVrZXlTdGFrZWRMYW5kc0J5T3duZXIBBQRhZGRyBAhsYW5kc1N0cgkAoggBBQhsYW5kc0tleQQHbGFuZHNJbgMJAQlpc0RlZmluZWQBBQhsYW5kc1N0cgkAvQkCCQEFdmFsdWUBBQhsYW5kc1N0cgIBXwUDbmlsBAVjb250MAkAkQMCCQC1CQIICQEFdmFsdWUBCQDsBwEJANkEAQkAkQMCBQxsYW5kQXNzZXRJZHMAAAtkZXNjcmlwdGlvbgIBXwUMcmVjQ29udGluZW50BAljb250UHJvcHMJALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBCQEWa2V5UmVzVHlwZXNCeUNvbnRpbmVudAEFBWNvbnQwAgswXzBfMF8wXzBfMAIBXwQBcgoAAiRsBQxsYW5kQXNzZXRJZHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCcCgoFB2Zvcm11bGEAAAIACQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeFJlcwUDbmlsBQhwcm9wTGlzdAUHbGFuZHNJbgAACQC1CQICCzBfMF8wXzBfMF8wAgFfBQljb250UHJvcHMKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBCmNoZWNrTWVyZ2UCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDUJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFBAljb250aW5lbnQIBQFyAl8zBAxjb250aW5lbnRJZHgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAzwgCBQpjb250aW5lbnRzBQljb250aW5lbnQJAKwCAgITVW5rbm93biBjb250aW5lbnQ6IAUJY29udGluZW50BAh0ZXJyYWlucwkBE2dlblRlcnJhaW5zRm9yTWVyZ2UCCAUBcgJfOQkAaQIJAQ9udW1QaWVjZXNCeVNpemUBBQtuZXdMYW5kU2l6ZQUFU1NJWkUEB2ZyZWVOdW0JAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBEmtleU5leHRGcmVlTGFuZE51bQAJAGQCBQ9QUkVTQUxFTlVNTEFORFMAAQQKbmV3TGFuZE51bQkApAMBBQdmcmVlTnVtBAVpc3N1ZQkAwggFCQEHbmZ0TmFtZQIFCm5ld0xhbmROdW0FC25ld0xhbmRTaXplCQC5CQIJAMwIAgUKbmV3TGFuZE51bQkAzAgCBQtuZXdMYW5kU2l6ZQkAzAgCBQh0ZXJyYWlucwkAzAgCBQljb250aW5lbnQFA25pbAIBXwABAAAHBAdhc3NldElkCQC4CAEFBWlzc3VlBA5uZXdMYW5kQXNzZXRJZAkA2AQBBQdhc3NldElkBAZuZXdNYXQJALkJAgkBEXN1YnRyYWN0TWF0ZXJpYWxzAwkAZgIFB25lZWRNYXQAAAkAtQkCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeE1hdAIBXwUHbmVlZE1hdAIBXwQJcGllY2VzS2V5CQEWa2V5U3Rha2VkUGllY2VzQnlPd25lcgEFBGFkZHIEDHN0YWtlZFBpZWNlcwkBC3ZhbHVlT3JFbHNlAgkAnwgBBQlwaWVjZXNLZXkAAAkAlAoCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCAUBcgJfNQMJAGYCCQCQAwEIBQFyAl83AAAJAQtTdHJpbmdFbnRyeQIFCGxhbmRzS2V5CQC7CQIIBQFyAl83AgFfCQELRGVsZXRlRW50cnkBBQhsYW5kc0tleQkBDEludGVnZXJFbnRyeQIFCXBpZWNlc0tleQMJAGYCCAUBcgJfOAUMc3Rha2VkUGllY2VzAAAJAGUCBQxzdGFrZWRQaWVjZXMIBQFyAl84CQEMSW50ZWdlckVudHJ5AgkBEmtleU5leHRGcmVlTGFuZE51bQAJAGQCBQdmcmVlTnVtAAEFBWlzc3VlCQELU3RyaW5nRW50cnkCCQEQa2V5TGFuZFRvQXNzZXRJZAEFCm5ld0xhbmROdW0FDm5ld0xhbmRBc3NldElkCQELU3RyaW5nRW50cnkCCQEVa2V5TGFuZEFzc2V0SWRUb093bmVyAQUObmV3TGFuZEFzc2V0SWQFBGFkZHIJAQtTdHJpbmdFbnRyeQIJARFrZXlMYW5kTnVtVG9Pd25lcgEFCm5ld0xhbmROdW0FBGFkZHIJAQxJbnRlZ2VyRW50cnkCCQEga2V5TGFuZEFydFN0YXR1c0J5VHlwZUFuZEFzc2V0SWQCBQpBUlRQUkVTQUxFBQ5uZXdMYW5kQXNzZXRJZAgFAXICXzIJAQxJbnRlZ2VyRW50cnkCCQEWa2V5SW5mcmFMZXZlbEJ5QXNzZXRJZAEFDm5ld0xhbmRBc3NldElkBQhuZXdMZXZlbAkBDEludGVnZXJFbnRyeQIJAR5rZXlJbmZyYUxldmVsQnlBc3NldElkQW5kT3duZXICBQ5uZXdMYW5kQXNzZXRJZAUEYWRkcgUIbmV3TGV2ZWwJAQtTdHJpbmdFbnRyeQIFBWJwS2V5CQC5CQIJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUKYnBJZHhMZXZlbAkAzAgCCAUBcgJfNAkAzAgCBQZuZXdNYXQJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kBQNuaWwCAToJAQtTdHJpbmdFbnRyeQIJARFrZXlSZXNQcm9wb3J0aW9ucwAJALkJAggFAXICXzYCAV8JAQtTdHJpbmdFbnRyeQIJARZrZXlSZXNUeXBlc0J5Q29udGluZW50AQUJY29udGluZW50CQC5CQIIBQFyA18xMAIBXwkBC1N0cmluZ0VudHJ5AgkBD2tleUR1Y2tMb2NhdGlvbgEFC2R1Y2tBc3NldElkCQC5CQIJAMwIAgUJY29udGluZW50CQDMCAICAUwJAMwIAgUObmV3TGFuZEFzc2V0SWQFA25pbAIBXwkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQUEYWRkcgABBQdhc3NldElkBQ5uZXdMYW5kQXNzZXRJZAEDczJtAgRhZGRyDGxhbmRBc3NldElkcwkBDW1lcmdlSW50ZXJuYWwGAgFNAAMCBFNTU1MFBGFkZHIFDGxhbmRBc3NldElkcwAAAQNtMmwCBGFkZHIMbGFuZEFzc2V0SWRzCQENbWVyZ2VJbnRlcm5hbAYCAUwABAIDU01NBQRhZGRyBQxsYW5kQXNzZXRJZHMJAGgCBRFJbmZyYVVwZ3JhZGVDb3N0UwAEAQRsMnhsAgRhZGRyDGxhbmRBc3NldElkcwkBDW1lcmdlSW50ZXJuYWwGAgJYTAAFAgVTU1NNTAUEYWRkcgUMbGFuZEFzc2V0SWRzCQBoAgURSW5mcmFVcGdyYWRlQ29zdFMALwEGeGwyeHhsAgRhZGRyDGxhbmRBc3NldElkcwkBDW1lcmdlSW50ZXJuYWwGAgNYWEwABgIDTFhMBQRhZGRyBQxsYW5kQXNzZXRJZHMJAGgCBRFJbmZyYVVwZ3JhZGVDb3N0UwA2AQttZXJnZUNvbW1vbgIEYWRkcgxsYW5kQXNzZXRJZHMEByRtYXRjaDAJAJADAQUMbGFuZEFzc2V0SWRzAwkAAAIABAUHJG1hdGNoMAkBA3MybQIFBGFkZHIFDGxhbmRBc3NldElkcwMJAAACAAMFByRtYXRjaDAJAQNtMmwCBQRhZGRyBQxsYW5kQXNzZXRJZHMDCQAAAgAFBQckbWF0Y2gwCQEEbDJ4bAIFBGFkZHIFDGxhbmRBc3NldElkcwMJAAACAAIFByRtYXRjaDAJAQZ4bDJ4eGwCBQRhZGRyBQxsYW5kQXNzZXRJZHMJAAIBAg1Vbmtub3duIG1lcmdlARVjaGVja091dGRhdGVkRGVsaXZlcnkBCHVzZXJBZGRyBARkdWNrCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFCHVzZXJBZGRyAwMFEUtTX0FMTE9XX0RFTElWRVJZCQEJaXNEZWZpbmVkAQUEZHVjawcEC2R1Y2tBc3NldElkCQEFdmFsdWUBBQRkdWNrBAZsb2NLZXkJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAQDbG9jCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAKIIAQUGbG9jS2V5BQ9ERUZBVUxUTE9DQVRJT04CAV8ECXN0YXJ0VGltZQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFA2xvYwUPbG9jSWR4Q29udGluZW50AwMJAQIhPQIJAJEDAgUDbG9jBQpsb2NJZHhUeXBlAgFEBgkAZgIIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQBkAgUJc3RhcnRUaW1lBRJURU5fTUlOVVRFU19NSUxMSVMFA25pbAQJaGVhbHRoS2V5CQENa2V5RHVja0hlYWx0aAEFC2R1Y2tBc3NldElkAwkAZwIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNsb2MFCGxvY0lkeElkAAMEBnJld2FyZAkA/AcEBQ9lY29ub215Q29udHJhY3QCEnNlbmREZWxpdmVyeVJld2FyZAkAzAgCBQh1c2VyQWRkcgUDbmlsBQNuaWwDCQAAAgUGcmV3YXJkBQZyZXdhcmQFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAzQgCCQDNCAIEC2xvY2tlZFRvdGFsCQELdmFsdWVPckVsc2UCCQCaCAIFD2Vjb25vbXlDb250cmFjdAURZGVsaXZlcnlMb2NrZWRLZXkAAAQGdW5sb2NrCQD8BwQFD2Vjb25vbXlDb250cmFjdAIUdXBkYXRlRGVsaXZlcnlMb2NrZWQJAMwIAgkAZQIFC2xvY2tlZFRvdGFsBRVNSU5fVVNEVF9GRUVfREVMSVZFUlkFA25pbAUDbmlsAwkAAAIFBnVubG9jawUGdW5sb2NrAwkAZwIAAAkBEUBleHRyTmF0aXZlKDEwNTUpAQUJaGVhbHRoS2V5BQNuaWwECnB1bmlzaG1lbnQJAPwHBAUEdGhpcwILc2F2ZUludGVnZXIJAMwIAgkBFmtleURlbGl2ZXJ5RGVsYXlCeUR1Y2sBBQtkdWNrQXNzZXRJZAkAzAgCCQBkAgUJc3RhcnRUaW1lBRNERUxJVkVSWV9QVU5JU0hNRU5UBQNuaWwFA25pbAMJAAACBQpwdW5pc2htZW50BQpwdW5pc2htZW50BQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAQxJbnRlZ2VyRW50cnkCBQloZWFsdGhLZXkJARFAZXh0ck5hdGl2ZSgxMDU1KQEJAQ5rZXlTYXZlZEhlYWx0aAEFC2R1Y2tBc3NldElkCQELU3RyaW5nRW50cnkCBQZsb2NLZXkJARFAZXh0ck5hdGl2ZSgxMDU4KQEJARBrZXlTYXZlZExvY2F0aW9uAQULZHVja0Fzc2V0SWQFA25pbAEGcHJvbG9nAQFpAwMJAQIhPQIIBQFpDG9yaWdpbkNhbGxlcgUMcmVzdENvbnRyYWN0CQELdmFsdWVPckVsc2UCCQCgCAEJAQprZXlCbG9ja2VkAAcHCQACAQIfQ29udHJhY3RzIGFyZSB1bmRlciBtYWludGVuYW5jZQQIdXNlckFkZHIJAKUIAQgFAWkMb3JpZ2luQ2FsbGVyCQDNCAIJARVjaGVja091dGRhdGVkRGVsaXZlcnkBBQh1c2VyQWRkcgkBC1N0cmluZ0VudHJ5AgkBEWtleUxhc3RUeElkQnlVc2VyAQUIdXNlckFkZHIJANgEAQgFAWkNdHJhbnNhY3Rpb25JZAEMcHJvbG9nRmxpZ2h0AQFpAwMJAQIhPQIIBQFpDG9yaWdpbkNhbGxlcgUMcmVzdENvbnRyYWN0CQELdmFsdWVPckVsc2UCCQCgCAEJAQprZXlCbG9ja2VkAAcHCQACAQIfQ29udHJhY3RzIGFyZSB1bmRlciBtYWludGVuYW5jZQkAzAgCCQELU3RyaW5nRW50cnkCCQERa2V5TGFzdFR4SWRCeVVzZXIBCQClCAEIBQFpDG9yaWdpbkNhbGxlcgkA2AQBCAUBaQ10cmFuc2FjdGlvbklkBQNuaWwtAWkBDWNvbnN0cnVjdG9yVjEBCHJlc3RBZGRyAwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQIRUGVybWlzc2lvbiBkZW5pZWQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDmtleVJlc3RBZGRyZXNzAAUIcmVzdEFkZHIFA25pbAFpAQtzYXZlSW50ZWdlcgIDa2V5BmFtb3VudAMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECIHNhdmVJbnRlZ2VyIGlzIG5vdCBwdWJsaWMgbWV0aG9kCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQNrZXkFBmFtb3VudAUDbmlsAWkBCnNldEJsb2NrZWQBCWlzQmxvY2tlZAMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECEXBlcm1pc3Npb24gZGVuaWVkCQDMCAIJAQxCb29sZWFuRW50cnkCCQEKa2V5QmxvY2tlZAAFCWlzQmxvY2tlZAUDbmlsAWkBCXN0YWtlTGFuZAAEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQIcRXhhY3RseSBvbmUgcGF5bWVudCByZXF1aXJlZAQDcG10CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAEB2Fzc2V0SWQJAQV2YWx1ZQEIBQNwbXQHYXNzZXRJZAQHYWRkcmVzcwkApQgBCAUBaQZjYWxsZXIDCQECIT0CCAUDcG10BmFtb3VudAABCQACAQkArAICCQCsAgICBE5GVCAFCkxBTkRQUkVGSVgCJCB0b2tlbiBzaG91bGQgYmUgYXR0YWNoZWQgYXMgcGF5bWVudAQFYXNzZXQJAQV2YWx1ZQEJAOwHAQUHYXNzZXRJZAMJAQIhPQIIBQVhc3NldAZpc3N1ZXIFBHRoaXMJAAIBAhdVbmtub3duIGlzc3VlciBvZiB0b2tlbgMJAQEhAQkBCGNvbnRhaW5zAggFBWFzc2V0BG5hbWUFCkxBTkRQUkVGSVgJAAIBCQCsAgIJAKwCAgIJT25seSBORlQgBQpMQU5EUFJFRklYAhQgdG9rZW5zIGFyZSBhY2NlcHRlZAQLbGFuZE51bVNpemUJALACAggFBWFzc2V0BG5hbWUABAQHbGFuZE51bQMJAQhjb250YWlucwIFC2xhbmROdW1TaXplAgNYWEwJALMCAgULbGFuZE51bVNpemUAAwMJAQhjb250YWlucwIFC2xhbmROdW1TaXplAgJYTAkAswICBQtsYW5kTnVtU2l6ZQACCQCzAgIFC2xhbmROdW1TaXplAAEDCQEBIQEJAQlpc0RlZmluZWQBCQC2CQEFB2xhbmROdW0JAAIBCQCsAgICHkNhbm5vdCBwYXJzZSBsYW5kIG51bWJlciBmcm9tIAgFBWFzc2V0BG5hbWUEC2xhbmRBc3NldElkCQDYBAEFB2Fzc2V0SWQEB3RpbWVLZXkJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQULbGFuZEFzc2V0SWQDCQEJaXNEZWZpbmVkAQkAnwgBBQd0aW1lS2V5CQACAQkArAICCQCsAgICBE5GVCAIBQVhc3NldARuYW1lAhIgaXMgYWxyZWFkeSBzdGFrZWQEAWQJALUJAggFBWFzc2V0C2Rlc2NyaXB0aW9uAgFfBA10ZXJyYWluQ291bnRzCQENY291bnRUZXJyYWlucwEJAJEDAgUBZAULcmVjVGVycmFpbnMEBnBpZWNlcwkBD251bVBpZWNlc0J5U2l6ZQEJAJEDAgUBZAULcmVjTGFuZFNpemUECWxhbmRJbmRleAkAaQIFBnBpZWNlcwUFU1NJWkUEBXByb3BzCQERdXBkYXRlUHJvcG9ydGlvbnMDBQ10ZXJyYWluQ291bnRzBQlsYW5kSW5kZXgAAQQMcmVzQnlDb250S2V5CQEWa2V5UmVzVHlwZXNCeUNvbnRpbmVudAEJAJEDAgUBZAUMcmVjQ29udGluZW50BAljb250UHJvcHMJALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBBQxyZXNCeUNvbnRLZXkCCzBfMF8wXzBfMF8wAgFfBBB1cGRhdGVkQ29udFByb3BzCQC5CQIJARl1cGRhdGVQcm9wb3J0aW9uc0ludGVybmFsBAUJY29udFByb3BzBQ10ZXJyYWluQ291bnRzBQlsYW5kSW5kZXgAAQIBXwQIbGFuZHNLZXkJARVrZXlTdGFrZWRMYW5kc0J5T3duZXIBBQdhZGRyZXNzBAhsYW5kc1N0cgkAoggBBQhsYW5kc0tleQQFbGFuZHMDCQEJaXNEZWZpbmVkAQUIbGFuZHNTdHIJAL0JAgkBBXZhbHVlAQUIbGFuZHNTdHICAV8FA25pbAMJAQ9jb250YWluc0VsZW1lbnQCBQVsYW5kcwULbGFuZEFzc2V0SWQJAAIBCQCsAgICIllvdXIgc3Rha2VkIGxhbmRzIGFscmVhZHkgY29udGFpbiAFC2xhbmRBc3NldElkAwkAZwIJAJADAQUFbGFuZHMFGE1BWF9MQU5EU19TVEFLRURfQllfVVNFUgkAAgEJAKwCAgkArAICAhlZb3VyIGFscmVhZHkgc3Rha2VkIG1heCAoCQCkAwEFGE1BWF9MQU5EU19TVEFLRURfQllfVVNFUgIHKSBsYW5kcwQKaW5mcmFMZXZlbAkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEWa2V5SW5mcmFMZXZlbEJ5QXNzZXRJZAEFC2xhbmRBc3NldElkAAAECXBpZWNlc0tleQkBFmtleVN0YWtlZFBpZWNlc0J5T3duZXIBBQdhZGRyZXNzBAlvbGRQaWVjZXMJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJcGllY2VzS2V5AAAECXdsZ1Jlc3VsdAkA/AcEBQt3bGdDb250cmFjdAISb25TdGFrZVVuc3Rha2VMYW5kCQDMCAIFB2FkZHJlc3MFA25pbAUDbmlsCQCUCgIJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUHdGltZUtleQgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJASJrZXlTdGFrZWRUaW1lQnlUeXBlQXNzZXRJZEFuZE93bmVyAwUKTEFORFBSRUZJWAULbGFuZEFzc2V0SWQFB2FkZHJlc3MIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQtTdHJpbmdFbnRyeQIFCGxhbmRzS2V5CQC7CQIJAM0IAgUFbGFuZHMFC2xhbmRBc3NldElkAgFfCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQlwaWVjZXNLZXkJAGQCBQlvbGRQaWVjZXMFBnBpZWNlcwkAzAgCCQELU3RyaW5nRW50cnkCCQEVa2V5TGFuZEFzc2V0SWRUb093bmVyAQULbGFuZEFzc2V0SWQFB2FkZHJlc3MJAMwIAgkBC1N0cmluZ0VudHJ5AgkBEWtleUxhbmROdW1Ub093bmVyAQUHbGFuZE51bQUHYWRkcmVzcwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBHmtleUluZnJhTGV2ZWxCeUFzc2V0SWRBbmRPd25lcgIFC2xhbmRBc3NldElkBQdhZGRyZXNzBQppbmZyYUxldmVsCQDMCAIJAQtTdHJpbmdFbnRyeQIJARFrZXlSZXNQcm9wb3J0aW9ucwAFBXByb3BzCQDMCAIJAQtTdHJpbmdFbnRyeQIFDHJlc0J5Q29udEtleQUQdXBkYXRlZENvbnRQcm9wcwUDbmlsBQ1wcm9sb2dBY3Rpb25zBQl3bGdSZXN1bHQBaQELdW5zdGFrZUxhbmQBDWxhbmRBc3NldElkSW4EDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQEBGFkZHIJAKUIAQgFAWkGY2FsbGVyBAFjCQEUY2hlY2tDbGFpbUNvbmRpdGlvbnMDBQRhZGRyBQ1jbGFpbU1vZGVEdWNrBQ1sYW5kQXNzZXRJZEluBAtsYW5kQXNzZXRJZAgFAWMCXzIEAWQIBQFjAl8zBAhsYW5kc0tleQkBFWtleVN0YWtlZExhbmRzQnlPd25lcgEFBGFkZHIEDXRlcnJhaW5Db3VudHMJAQ1jb3VudFRlcnJhaW5zAQkAkQMCBQFkBQtyZWNUZXJyYWlucwQGcGllY2VzCQEPbnVtUGllY2VzQnlTaXplAQkAkQMCBQFkBQtyZWNMYW5kU2l6ZQQJbGFuZEluZGV4CQBpAgUGcGllY2VzBQVTU0laRQQFcHJvcHMJARF1cGRhdGVQcm9wb3J0aW9ucwMFDXRlcnJhaW5Db3VudHMFCWxhbmRJbmRleAD///////////8BBAxyZXNCeUNvbnRLZXkJARZrZXlSZXNUeXBlc0J5Q29udGluZW50AQkAkQMCBQFkBQxyZWNDb250aW5lbnQECWNvbnRQcm9wcwkAtQkCCQELdmFsdWVPckVsc2UCCQCiCAEFDHJlc0J5Q29udEtleQILMF8wXzBfMF8wXzACAV8EEHVwZGF0ZWRDb250UHJvcHMJALkJAgkBGXVwZGF0ZVByb3BvcnRpb25zSW50ZXJuYWwEBQljb250UHJvcHMFDXRlcnJhaW5Db3VudHMFCWxhbmRJbmRleAD///////////8BAgFfBAtjbGFpbVJlc3VsdAkBCGNsYWltQWxsBAUEYWRkcgULbGFuZEFzc2V0SWQFBnBpZWNlcwUNY2xhaW1Nb2RlRHVjawQFbGFuZHMJAL0JAgkBC3ZhbHVlT3JFbHNlAgkAoggBBQhsYW5kc0tleQIAAgFfBANpZHgJAM8IAgUFbGFuZHMFC2xhbmRBc3NldElkAwkBASEBCQEJaXNEZWZpbmVkAQUDaWR4CQACAQkArAICAiBZb3VyIHN0YWtlZCBsYW5kcyBkb24ndCBjb250YWluIAULbGFuZEFzc2V0SWQEA25vdwgFCWxhc3RCbG9jawl0aW1lc3RhbXAEDmdvdlJlbGVhc2VUaW1lCQELdmFsdWVPckVsc2UCCQCaCAIFC2dvdkNvbnRyYWN0CQEVa2V5VXNlckd3bFJlbGVhc2VUaW1lAQUEYWRkcgAAAwkAZwIFDmdvdlJlbGVhc2VUaW1lBQNub3cJAAIBCQCsAgICOVlvdXIgZ1dMIGFyZSB0YWtpbmcgcGFydCBpbiB2b3RpbmcsIGNhbm5vdCB1bnN0YWtlIHVudGlsIAkApAMBBQ5nb3ZSZWxlYXNlVGltZQQOYXJiUmVsZWFzZVRpbWUJAGQCCQELdmFsdWVPckVsc2UCCQCaCAIFC3dsZ0NvbnRyYWN0CQEUa2V5TGFzdEFyYlRpbWVCeVVzZXIBBQRhZGRyAAAFDmFyYml0cmFnZURlbGF5AwkAZgIFDmFyYlJlbGVhc2VUaW1lBQNub3cJAAIBCQCsAgICP1lvdXIgc3Rha2VkIGxhbmRzIHRvb2sgcGFydCBpbiBhcmJpdHJhZ2UsIGNhbm5vdCB1bnN0YWtlIHVudGlsIAkApAMBBQ5hcmJSZWxlYXNlVGltZQQJcGllY2VzS2V5CQEWa2V5U3Rha2VkUGllY2VzQnlPd25lcgEFBGFkZHIEDHN0YWtlZFBpZWNlcwkBC3ZhbHVlT3JFbHNlAgkAnwgBBQlwaWVjZXNLZXkAAAQJbmV3UGllY2VzAwkAZgIFBnBpZWNlcwUMc3Rha2VkUGllY2VzAAAJAGUCBQxzdGFrZWRQaWVjZXMFBnBpZWNlcwQJd2xnUmVzdWx0CQD8BwQFC3dsZ0NvbnRyYWN0AhJvblN0YWtlVW5zdGFrZUxhbmQJAMwIAgUEYWRkcgUDbmlsBQNuaWwJAJQKAgkAzggCCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgABCQDZBAEFC2xhbmRBc3NldElkCQDMCAIJAQtEZWxldGVFbnRyeQEJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQULbGFuZEFzc2V0SWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBImtleVN0YWtlZFRpbWVCeVR5cGVBc3NldElkQW5kT3duZXIDBQpMQU5EUFJFRklYBQtsYW5kQXNzZXRJZAUEYWRkcgkAzAgCCQELU3RyaW5nRW50cnkCCQERa2V5UmVzUHJvcG9ydGlvbnMABQVwcm9wcwkAzAgCCQELU3RyaW5nRW50cnkCBQxyZXNCeUNvbnRLZXkFEHVwZGF0ZWRDb250UHJvcHMJAMwIAgkBC1N0cmluZ0VudHJ5AggFC2NsYWltUmVzdWx0Al8yCQC5CQIIBQtjbGFpbVJlc3VsdAJfMwIBOgkAzAgCAwkAZgIJAJADAQUFbGFuZHMAAQkBC1N0cmluZ0VudHJ5AgUIbGFuZHNLZXkJALsJAgkA0QgCBQVsYW5kcwkBBXZhbHVlAQUDaWR4AgFfCQELRGVsZXRlRW50cnkBBQhsYW5kc0tleQkAzAgCCQEMSW50ZWdlckVudHJ5AgUJcGllY2VzS2V5BQluZXdQaWVjZXMFA25pbAUNcHJvbG9nQWN0aW9ucwUJd2xnUmVzdWx0AWkBCXN0YWtlRHVjawAEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQIcRXhhY3RseSBvbmUgcGF5bWVudCByZXF1aXJlZAQDcG10CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAEB2Fzc2V0SWQJAQV2YWx1ZQEIBQNwbXQHYXNzZXRJZAQHYWRkcmVzcwkApQgBCAUBaQZjYWxsZXIDCQECIT0CCAUDcG10BmFtb3VudAABCQACAQkArAICCQCsAgICBE5GVCAFCkRVQ0tQUkVGSVgCJCB0b2tlbiBzaG91bGQgYmUgYXR0YWNoZWQgYXMgcGF5bWVudAQFYXNzZXQJAQV2YWx1ZQEJAOwHAQUHYXNzZXRJZAMDCQECIT0CCAUFYXNzZXQGaXNzdWVyBQ1pbmN1YmF0b3JBZGRyCQECIT0CCAUFYXNzZXQGaXNzdWVyBQticmVlZGVyQWRkcgcJAAIBCQCsAgIJAKwCAgISVW5rbm93biBpc3N1ZXIgb2YgBQpEVUNLUFJFRklYAgYgdG9rZW4DCQEBIQEJAQhjb250YWlucwIIBQVhc3NldARuYW1lBQpEVUNLUFJFRklYCQACAQkArAICCQCsAgICCU9ubHkgTkZUIAUKRFVDS1BSRUZJWAIUIHRva2VucyBhcmUgYWNjZXB0ZWQECmFzc2V0SWRTdHIJANgEAQUHYXNzZXRJZAQHdGltZUtleQkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQphc3NldElkU3RyAwkBCWlzRGVmaW5lZAEJAJ8IAQUHdGltZUtleQkAAgEJAKwCAgkArAICAgRORlQgCAUFYXNzZXQEbmFtZQISIGlzIGFscmVhZHkgc3Rha2VkAwkBCWlzRGVmaW5lZAEJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUHYWRkcmVzcwkAAgEJAKwCAgIdWW91IGFscmVhZHkgc3Rha2VkIG9uZSBkdWNrOiAIBQVhc3NldARuYW1lBAZsb2NLZXkJAQ9rZXlEdWNrTG9jYXRpb24BBQphc3NldElkU3RyBAhsb2NhdGlvbgkAoggBBQZsb2NLZXkEBWJwS2V5CQERa2V5QmFja3BhY2tCeUR1Y2sBBQphc3NldElkU3RyBAhiYWNrcGFjawkAoggBBQVicEtleQQJa2V5SGVhbHRoCQENa2V5RHVja0hlYWx0aAEFCmFzc2V0SWRTdHIEBW1heEhQCQEJbWF4SGVhbHRoAQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEMa2V5RHVja0xldmVsAQUKYXNzZXRJZFN0cgAABAljdXJIZWFsdGgJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJa2V5SGVhbHRoBQVtYXhIUAkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQd0aW1lS2V5CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBImtleVN0YWtlZFRpbWVCeVR5cGVBc3NldElkQW5kT3duZXIDBQpEVUNLUFJFRklYCQDYBAEFB2Fzc2V0SWQFB2FkZHJlc3MIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQtTdHJpbmdFbnRyeQIJARBrZXlEdWNrSWRUb093bmVyAQUKYXNzZXRJZFN0cgUHYWRkcmVzcwkAzAgCCQELU3RyaW5nRW50cnkCCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQdhZGRyZXNzBQphc3NldElkU3RyBQNuaWwDCQEJaXNEZWZpbmVkAQUIbG9jYXRpb24FA25pbAkAzggCCQDMCAIJAQtTdHJpbmdFbnRyeQIFBmxvY0tleQUPREVGQVVMVExPQ0FUSU9OBQNuaWwDCQEJaXNEZWZpbmVkAQUIYmFja3BhY2sFA25pbAkAzggCCQDNCAIJAMwIAgkBC1N0cmluZ0VudHJ5AgUFYnBLZXkCGjA6MF8wXzBfMF8wXzA6MF8wXzBfMF8wXzA6BQNuaWwJAQxJbnRlZ2VyRW50cnkCBQlrZXlIZWFsdGgFCWN1ckhlYWx0aAUNcHJvbG9nQWN0aW9ucwFpAQt1bnN0YWtlRHVjawEKYXNzZXRJZFN0cgQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQHYXNzZXRJZAkA2QQBBQphc3NldElkU3RyBAdhZGRyZXNzCQClCAEIBQFpBmNhbGxlcgQFYXNzZXQJAQV2YWx1ZQEJAOwHAQUHYXNzZXRJZAQHdGltZUtleQkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQphc3NldElkU3RyAwkBASEBCQEJaXNEZWZpbmVkAQkAnwgBBQd0aW1lS2V5CQACAQkArAICCQCsAgICBE5GVCAIBQVhc3NldARuYW1lAg4gaXMgbm90IHN0YWtlZAMJAQEhAQkBCWlzRGVmaW5lZAEJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUHYWRkcmVzcwkAAgEJAKwCAgkArAICAglUaGUgZHVjayAIBQVhc3NldARuYW1lAg4gaXMgbm90IHN0YWtlZAQFb3duZXIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEQa2V5RHVja0lkVG9Pd25lcgEFCmFzc2V0SWRTdHIJAKwCAgkArAICAgRORlQgCAUFYXNzZXQEbmFtZQIMIGlzIG9ycGhhbmVkAwkBAiE9AgUFb3duZXIFB2FkZHJlc3MJAAIBAhdTdGFrZWQgTkZUIGlzIG5vdCB5b3VycwMJAQ9jaGVja1RvdXJuYW1lbnQBBQphc3NldElkU3RyCQACAQIbdW5zdGFrZUR1Y2tfY2hlY2tUb3VybmFtZW50AwkBDWNoZWNrRGVsaXZlcnkBBQphc3NldElkU3RyCQACAQIZdW5zdGFrZUR1Y2tfY2hlY2tEZWxpdmVyeQQJa2V5SGVhbHRoCQENa2V5RHVja0hlYWx0aAEFCmFzc2V0SWRTdHIEBW1heEhQCQEJbWF4SGVhbHRoAQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEMa2V5RHVja0xldmVsAQUKYXNzZXRJZFN0cgAABAZoZWFsdGgJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJa2V5SGVhbHRoBQVtYXhIUAMJAGYCBQVtYXhIUAUGaGVhbHRoCQACAQkArAICCQCsAgICGVBsZWFzZSBoZWFsIHlvdXIgZHVjayB0byAJAKQDAQUFbWF4SFACE2hwIGJlZm9yZSB1bnN0YWtpbmcJAM4IAgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIAAQUHYXNzZXRJZAkAzAgCCQELRGVsZXRlRW50cnkBBQd0aW1lS2V5CQDMCAIJAQtEZWxldGVFbnRyeQEFCWtleUhlYWx0aAkAzAgCCQELRGVsZXRlRW50cnkBCQEPa2V5RHVja0xvY2F0aW9uAQUKYXNzZXRJZFN0cgkAzAgCCQELRGVsZXRlRW50cnkBCQEQa2V5RHVja0lkVG9Pd25lcgEFCmFzc2V0SWRTdHIJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBImtleVN0YWtlZFRpbWVCeVR5cGVBc3NldElkQW5kT3duZXIDBQpEVUNLUFJFRklYBQphc3NldElkU3RyBQdhZGRyZXNzCQDMCAIJAQtEZWxldGVFbnRyeQEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFB2FkZHJlc3MFA25pbAUNcHJvbG9nQWN0aW9ucwFpAQhjbGFpbVJlcwIGYW1vdW50DmxhbmRBc3NldElkU3RyBA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBARhZGRyCQClCAEIBQFpDG9yaWdpbkNhbGxlcgQGcmVzdWx0CQEQY2xhaW1SZXNJbnRlcm5hbAQFBGFkZHIFBmFtb3VudAUNY2xhaW1Nb2RlRHVjawUObGFuZEFzc2V0SWRTdHIEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUEYWRkcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAkAlAoCCQDOCAIJAM0IAgkAzQgCCQDOCAIIBQZyZXN1bHQCXzEICQEXdXBkYXRlRHVja1N0YXRzSW50ZXJuYWwCBQtkdWNrQXNzZXRJZAkAawMFB3hwQ2xhaW0FBmFtb3VudAUFTVVMVDgCXzEJAQtTdHJpbmdFbnRyeQIIBQZyZXN1bHQCXzIJALkJAggFBnJlc3VsdAJfMwIBOgkBC1N0cmluZ0VudHJ5AggFBnJlc3VsdAJfNAkAuQkCCAUGcmVzdWx0Al81AgE6BQ1wcm9sb2dBY3Rpb25zCQCRAwIIBQZyZXN1bHQCXzMFCGJwSWR4UmVzAWkBDGNsYWltUmVzVG9XSAIGYW1vdW50DmxhbmRBc3NldElkU3RyBA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBARhZGRyCQClCAEIBQFpDG9yaWdpbkNhbGxlcgQGcmVzdWx0CQEQY2xhaW1SZXNJbnRlcm5hbAQFBGFkZHIFBmFtb3VudAULY2xhaW1Nb2RlV2gFDmxhbmRBc3NldElkU3RyCQCUCgIJAM4IAgkAzQgCCQDNCAIJAM4IAggFBnJlc3VsdAJfMQgJARZ1cGRhdGVBY2NTdGF0c0ludGVybmFsAgUEYWRkcgkAawMFB3hwQ2xhaW0FBmFtb3VudAUFTVVMVDgCXzEJAQtTdHJpbmdFbnRyeQIIBQZyZXN1bHQCXzIJALkJAggFBnJlc3VsdAJfMwIBOgkBC1N0cmluZ0VudHJ5AggFBnJlc3VsdAJfNAkAuQkCCAUGcmVzdWx0Al81AgE6BQ1wcm9sb2dBY3Rpb25zCQCRAwIIBQZyZXN1bHQCXzUFCHdoSWR4UmVzAWkBBmZsaWdodAIHbWVzc2FnZQNzaWcEDXByb2xvZ0FjdGlvbnMJAQxwcm9sb2dGbGlnaHQBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQECHVzZXJBZGRyCQClCAEIBQFpBmNhbGxlcgQBZgkBDGZsaWdodENvbW1vbgMFCHVzZXJBZGRyBQdtZXNzYWdlBQNzaWcEBW5ld0hQCAUBZgJfMQQLZHVja0Fzc2V0SWQIBQFmAl8yBAZsb2NLZXkJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAQLY3VyTG9jYXRpb24JAQt2YWx1ZU9yRWxzZQIJAKIIAQUGbG9jS2V5BQ9ERUZBVUxUTE9DQVRJT04EC25ld0xvY2F0aW9uCAUBZgJfNAMJAAACBQtuZXdMb2NhdGlvbgULY3VyTG9jYXRpb24JAAIBAiJZb3UgY2FuJ3QgZmx5IHRvIHRoZSBzYW1lIGxvY2F0aW9uBAZuZXdMb2MJALUJAgULbmV3TG9jYXRpb24CAV8EBmlzVG91cgkAAAIJAJEDAgUGbmV3TG9jBQpsb2NJZHhUeXBlAgFUBAdpc0RlbGl2CQAAAgkAkQMCBQZuZXdMb2MFCmxvY0lkeFR5cGUCAUQEBWVxS2V5CQEQa2V5RHVja0VxdWlwbWVudAEFC2R1Y2tBc3NldElkBAljdXJyZW50RXEJAQt2YWx1ZU9yRWxzZQIJAKIIAQUFZXFLZXkCFyw7LF8sOyxfLDssXyw7LF8sOyxfLDssBA0kdDA3MDYxMTcwNzA4CQERc3VidHJhY3RFcXVpcG1lbnQCBQljdXJyZW50RXEIBQFmAl81BAVuZXdFcQgFDSR0MDcwNjExNzA3MDgCXzEED3Nob3VsZFplcm9CdWZmcwgFDSR0MDcwNjExNzA3MDgCXzIEDSR0MDcwNzExNzM4MjkDCQEBIQEJAQlvbk1pc3Npb24CBRJ0b3VybmFtZW50Q29udHJhY3QFC2N1ckxvY2F0aW9uAwkBASEBCQEPaXNVc3VhbExvY2F0aW9uAQULbmV3TG9jYXRpb24JAQxjaGVhdEF0dGVtcHQDBQtjdXJMb2NhdGlvbgULbmV3TG9jYXRpb24ABQMJAGYCBQVuZXdIUAAACQCUCgIFC25ld0xvY2F0aW9uBQVuZXdIUAkAlAoCBQtjdXJMb2NhdGlvbgAAAwkBDmlzSW5Ub3VybmFtZW50AgUSdG91cm5hbWVudENvbnRyYWN0BQtjdXJMb2NhdGlvbgMJAQEhAQkBDmlzSW5Ub3VybmFtZW50AgUSdG91cm5hbWVudENvbnRyYWN0BQtuZXdMb2NhdGlvbgkAAgECKllvdXIgZHVjayBpcyB0YWtpbmcgcGFydCBpbiB0aGUgdG91cm5hbWVudAQFc2NvcmUJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQZuZXdMb2MFCGxvY0lkeElkBAZjdXJMb2MJALUJAgULY3VyTG9jYXRpb24CAV8EBmxhc3RJZAkBC3ZhbHVlT3JFbHNlAgkAmggCBRJ0b3VybmFtZW50Q29udHJhY3QFDWxhc3RUb3VySWRLZXkAAAMJAQIhPQIFBXNjb3JlCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBmN1ckxvYwUIbG9jSWR4SWQAAQkBDGNoZWF0QXR0ZW1wdAMFC2N1ckxvY2F0aW9uBQtuZXdMb2NhdGlvbgAHAwkAZgIFBW5ld0hQAAAECWxvY2FsQmVzdAkBC3ZhbHVlT3JFbHNlAgkAmggCBRJ0b3VybmFtZW50Q29udHJhY3QJARprZXlCZXN0UmVzdWx0QnlUb3VyQW5kRHVjawIFBmxhc3RJZAULZHVja0Fzc2V0SWQAAAQIdXBkTG9jYWwDCQBmAgUFc2NvcmUFCWxvY2FsQmVzdAkA/AcEBRJ0b3VybmFtZW50Q29udHJhY3QCDnNhdmVEdWNrUmVzdWx0CQDMCAIFC2R1Y2tBc3NldElkCQDMCAIFBXNjb3JlBQNuaWwFA25pbAUEdW5pdAMJAAACBQh1cGRMb2NhbAUIdXBkTG9jYWwJAJQKAgULbmV3TG9jYXRpb24FBW5ld0hQCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQCUCgIFC2N1ckxvY2F0aW9uAAADCQEBIQEJAQxpc0luRGVsaXZlcnkBBQtjdXJMb2NhdGlvbgQJbG9jSGVhbHRoCQEQYXNTdHJpbmdJbnRUdXBsZQEJAPwHBAUEdGhpcwIQYXV0b0V4aXREZWxpdmVyeQkAzAgCBQtkdWNrQXNzZXRJZAkAzAgCBQVuZXdIUAkAzAgCAwUHaXNEZWxpdgICMTACAjExCQDMCAIAAAUDbmlsBQNuaWwDCQAAAgUJbG9jSGVhbHRoBQlsb2NIZWFsdGgDBQdpc0RlbGl2BQlsb2NIZWFsdGgDCQBmAgUFbmV3SFAAAAkAlAoCBQtuZXdMb2NhdGlvbgUFbmV3SFAJAJQKAggFCWxvY0hlYWx0aAJfMQAACQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAwkBASEBBQdpc0RlbGl2CQACAQIkWW91ciBkdWNrIGlzIHRha2luZyBwYXJ0IGluIGRlbGl2ZXJ5AwkBASEBCQEMaXNJbkRlbGl2ZXJ5AQULbmV3TG9jYXRpb24JAQxjaGVhdEF0dGVtcHQDBQtjdXJMb2NhdGlvbgULbmV3TG9jYXRpb24ADQQFc2NvcmUJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQZuZXdMb2MFCGxvY0lkeElkBAZjdXJMb2MJALUJAgULY3VyTG9jYXRpb24CAV8DCQECIT0CBQVzY29yZQkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQZjdXJMb2MFCGxvY0lkeElkAAEJAQxjaGVhdEF0dGVtcHQDBQtjdXJMb2NhdGlvbgULbmV3TG9jYXRpb24ADgMDCQBmAgUFbmV3SFAAAAkAZgIAAwUFc2NvcmUHCQCUCgIFC25ld0xvY2F0aW9uBQVuZXdIUAQJbG9jSGVhbHRoCQEQYXNTdHJpbmdJbnRUdXBsZQEJAPwHBAUEdGhpcwIQYXV0b0V4aXREZWxpdmVyeQkAzAgCBQtkdWNrQXNzZXRJZAkAzAgCBQVuZXdIUAkAzAgCAgUxNS0xNwkAzAgCBQVzY29yZQUDbmlsBQNuaWwDCQAAAgUJbG9jSGVhbHRoBQlsb2NIZWFsdGgFCWxvY0hlYWx0aAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgQJbG9jVG9TYXZlCAUNJHQwNzA3MTE3MzgyOQJfMQQIaHBUb1NhdmUIBQ0kdDA3MDcxMTczODI5Al8yCQCUCgIJAM4IAgkAzggCCQDOCAIJAMwIAgkBC1N0cmluZ0VudHJ5AgUGbG9jS2V5BQlsb2NUb1NhdmUJAMwIAgkBC1N0cmluZ0VudHJ5AgUFZXFLZXkFBW5ld0VxCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQENa2V5RHVja0hlYWx0aAEFC2R1Y2tBc3NldElkBQhocFRvU2F2ZQUDbmlsBQ1wcm9sb2dBY3Rpb25zAwUPc2hvdWxkWmVyb0J1ZmZzCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQxrZXlEdWNrQnVmZnMBBQtkdWNrQXNzZXRJZAIJMF8wXzBfMF8wBQNuaWwFA25pbAgJARd1cGRhdGVEdWNrU3RhdHNJbnRlcm5hbAIFC2R1Y2tBc3NldElkAwkAZgIFBW5ld0hQAAAFD3hwU3VjY2Vzc0ZsaWdodAUMeHBGYWlsRmxpZ2h0Al8xCAUBZgJfMwFpAQRoZWFsAwpxdWFudGl0eUwxCnF1YW50aXR5TDIKcXVhbnRpdHlMMwQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDAwMJAGYCAAAFCnF1YW50aXR5TDEGCQBmAgAABQpxdWFudGl0eUwyBgkAZgIAAAUKcXVhbnRpdHlMMwkAAgECG1F1YW50aXR5IGNhbm5vdCBiZSBuZWdhdGl2ZQQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBCQClCAEIBQFpBmNhbGxlcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAMJAQ9jaGVja1RvdXJuYW1lbnQBBQtkdWNrQXNzZXRJZAkAAgECFGhlYWxfY2hlY2tUb3VybmFtZW50AwkBDWNoZWNrRGVsaXZlcnkBBQtkdWNrQXNzZXRJZAkAAgECEmhlYWxfY2hlY2tEZWxpdmVyeQQDcXRzCQDMCAIFCnF1YW50aXR5TDEJAMwIAgUKcXVhbnRpdHlMMgkAzAgCBQpxdWFudGl0eUwzBQNuaWwECWtleUhlYWx0aAkBDWtleUR1Y2tIZWFsdGgBBQtkdWNrQXNzZXRJZAQFbWF4SFAJAQltYXhIZWFsdGgBCQELdmFsdWVPckVsc2UCCQCfCAEJAQxrZXlEdWNrTGV2ZWwBBQtkdWNrQXNzZXRJZAAABAlvbGRIZWFsdGgJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJa2V5SGVhbHRoBQVtYXhIUAMJAGcCBQlvbGRIZWFsdGgFBW1heEhQCQACAQkArAICCQCsAgICD0hQIHNob3VsZCBiZSA8IAkApAMBBQVtYXhIUAIIIHRvIGhlYWwEBWJwS2V5CQERa2V5QmFja3BhY2tCeUR1Y2sBBQtkdWNrQXNzZXRJZAQLY3VycmVudFBhY2sJAQtnZXRCYWNrcGFjawEFBWJwS2V5BAhwcm9kTGlzdAMJAAACCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QCAAUDbmlsCQC8CQIJAJEDAgULY3VycmVudFBhY2sFCWJwSWR4UHJvZAIBXwoBC2l0ZXJhdGVQcm9kAgNhY2MGcmVjaXBlBAFuCAUDYWNjAl8yBAF4AwkAZgIJAJADAQUIcHJvZExpc3QFAW4JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQhwcm9kTGlzdAUBbgAAAwkAZgIAAwUBbgQBcQkAkQMCBQNxdHMFAW4DCQBmAgUBcQUBeAkAAgEJAKwCAgkArAICCQCsAgICDllvdSBoYXZlIG9ubHkgCQCkAwEFAXgCBCBvZiAJAJEDAgUJcHJvZFR5cGVzBQFuCQCVCgMJAM0IAggFA2FjYwJfMQkApAMBCQBlAgUBeAUBcQkAZAIFAW4AAQkAZAIIBQNhY2MCXzMJAGgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgkAtQkCBQZyZWNpcGUCAV8FCnJJZHhFZmZlY3QFAXEJAJUKAwkAzQgCCAUDYWNjAl8xCQCkAwEFAXgJAGQCBQFuAAEIBQNhY2MCXzMEBnJlc3VsdAoAAiRsBRBwcm9kdWN0aW9uTWF0cml4CgACJHMJAJADAQUCJGwKAAUkYWNjMAkAlQoDBQNuaWwAAAAACgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQtpdGVyYXRlUHJvZAIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgNTAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyBAluZXdIZWFsdGgJAJcDAQkAzAgCBQVtYXhIUAkAzAgCCQBkAgUJb2xkSGVhbHRoCAUGcmVzdWx0Al8zBQNuaWwJAJQKAgkAzggCCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIFCWtleUhlYWx0aAUJbmV3SGVhbHRoCQDMCAIJAQtTdHJpbmdFbnRyeQIFBWJwS2V5CQC6CQIJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUKYnBJZHhMZXZlbAkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeFJlcwkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeE1hdAkAzAgCCQC5CQIIBQZyZXN1bHQCXzECAV8FA25pbAIBOgUDbmlsBQ1wcm9sb2dBY3Rpb25zCAkBF3VwZGF0ZUR1Y2tTdGF0c0ludGVybmFsAgULZHVja0Fzc2V0SWQJAGgCBQZ4cEhlYWwJAGQCCQBkAgUKcXVhbnRpdHlMMQUKcXVhbnRpdHlMMgUKcXVhbnRpdHlMMwJfMQUJbmV3SGVhbHRoAWkBBmhlYWxFUwAEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQIcRXhhY3RseSBvbmUgcGF5bWVudCByZXF1aXJlZAQDcG10CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAADCQECIT0CCAUDcG10B2Fzc2V0SWQFC3VzZHRBc3NldElkCQACAQIaQWxsb3dlZCBVU0RUIHBheW1lbnQgb25seSEEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQkApQgBCAUBaQZjYWxsZXICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQDCQEPY2hlY2tUb3VybmFtZW50AQULZHVja0Fzc2V0SWQJAAIBAhZoZWFsRVNfY2hlY2tUb3VybmFtZW50AwkBDWNoZWNrRGVsaXZlcnkBBQtkdWNrQXNzZXRJZAkAAgECFGhlYWxFU19jaGVja0RlbGl2ZXJ5BAlrZXlIZWFsdGgJAQ1rZXlEdWNrSGVhbHRoAQULZHVja0Fzc2V0SWQEBW1heEhQCQEJbWF4SGVhbHRoAQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEMa2V5RHVja0xldmVsAQULZHVja0Fzc2V0SWQAAAQJb2xkSGVhbHRoCQELdmFsdWVPckVsc2UCCQCfCAEFCWtleUhlYWx0aAUFbWF4SFADCQBmAgUJb2xkSGVhbHRoAAAJAAIBAihIUCBzaG91bGQgYmUgMCB0byBjYWxsIEVtZXJnZW5jeSBTZXJ2aWNlBAVicEtleQkBEWtleUJhY2twYWNrQnlEdWNrAQULZHVja0Fzc2V0SWQEC2N1cnJlbnRQYWNrCQELZ2V0QmFja3BhY2sBBQVicEtleQQIcHJvZExpc3QDCQAAAgkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kAgAFA25pbAkAvAkCCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QCAV8EDW1lZEtpdEFtb3VudDEDCQBmAgkAkAMBBQhwcm9kTGlzdAAACQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUIcHJvZExpc3QAAAAABA1tZWRLaXRBbW91bnQyAwkAZgIJAJADAQUIcHJvZExpc3QAAQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCHByb2RMaXN0AAEAAAQNbWVkS2l0QW1vdW50MwMJAGYCCQCQAwEFCHByb2RMaXN0AAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQhwcm9kTGlzdAACAAADAwMJAGYCBQ1tZWRLaXRBbW91bnQxAAAGCQBmAgUNbWVkS2l0QW1vdW50MgAABgkAZgIFDW1lZEtpdEFtb3VudDMAAAkAAgECH1lvdSBoYXZlIHRvIHVzZSBvd24gTWVkaWNhbCBLaXQECGV4aXN0U3RyCQCdCAIFD2Vjb25vbXlDb250cmFjdAkBDmtleUVzV2FyZWhvdXNlAAQMZXhpc3RBbW91bnRzAwkBCWlzRGVmaW5lZAEFCGV4aXN0U3RyCQC8CQIJAQV2YWx1ZQEFCGV4aXN0U3RyAgFfBQNuaWwEC2V4aXN0QW1vdW50AwkAZgIJAJADAQUMZXhpc3RBbW91bnRzAAAJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQxleGlzdEFtb3VudHMAAAAAAwkAZwIAAAULZXhpc3RBbW91bnQJAAIBAjlUaGVyZSBhcmUgbm8gTWVkaWNhbCBLaXRzIEwxIGF0IEVtZXJnZW5jeSBTZXJ2aWNlIHN0b3JhZ2UECW5ld0hlYWx0aAkAZAIFCW9sZEhlYWx0aAkBDXBhcnNlSW50VmFsdWUBCQCRAwIJALUJAgkAkQMCBRBwcm9kdWN0aW9uTWF0cml4AAACAV8FCnJJZHhFZmZlY3QEBW5ld0VTCQC5CQIJAMwIAgkApAMBCQBlAgULZXhpc3RBbW91bnQAAQkA0QgCBQxleGlzdEFtb3VudHMAAAIBXwQGcmVjaXBlCQC1CQIJAJEDAgUQcHJvZHVjdGlvbk1hdHJpeAAAAgFfBAh0b3RhbE1hdAkBEmdldFJlY2lwZU1hdGVyaWFscwEFBnJlY2lwZQQJc2VsbFByaWNlCQBrAwkAaAIFCHRvdGFsTWF0BQpFU1NFTExDT0VGBRBSRVNPVVJDRVBSSUNFTUlOCQBoAgUFTVVMVDgFDlBST0RVQ1RQS0dTSVpFAwkBAiE9AggFA3BtdAZhbW91bnQFCXNlbGxQcmljZQkAAgEJAKwCAgIbUGF5bWVudCBhdHRhY2hlZCBzaG91bGQgYmUgCQCkAwEFCXNlbGxQcmljZQQGcmVzdWx0CQEIYXNTdHJpbmcBCQD8BwQFD2Vjb25vbXlDb250cmFjdAIPdXBkYXRlRXNTdG9yYWdlCQDMCAIFBW5ld0VTBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFC3VzZHRBc3NldElkBQlzZWxsUHJpY2UFA25pbAkAlAoCCQDOCAIJAM0IAgUNcHJvbG9nQWN0aW9ucwkBDEludGVnZXJFbnRyeQIFCWtleUhlYWx0aAUJbmV3SGVhbHRoCAkBF3VwZGF0ZUR1Y2tTdGF0c0ludGVybmFsAgULZHVja0Fzc2V0SWQFCHhwQ2FsbEVTAl8xBQZyZXN1bHQBaQEOdXBkYXRlQmFja3BhY2sCC2R1Y2tBc3NldElkB25ld1BhY2sDCQECIT0CCAUBaQZjYWxsZXIFD2Vjb25vbXlDb250cmFjdAkAAgECEXBlcm1pc3Npb24gZGVuaWVkCQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBEWtleUJhY2twYWNrQnlEdWNrAQULZHVja0Fzc2V0SWQFB25ld1BhY2sFA25pbAUHbmV3UGFjawFpAQ9jb21taXRGb3JSYW5kb20ABA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQQLZmluaXNoQmxvY2sJAGQCBQZoZWlnaHQFC3JhbmRvbURlbGF5BARhZGRyCQClCAEIBQFpBmNhbGxlcgkAlAoCCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIJAQlrZXlDb21taXQBBQRhZGRyBQtmaW5pc2hCbG9jawUDbmlsBQ1wcm9sb2dBY3Rpb25zBQtmaW5pc2hCbG9jawFpAQhidXlTTGFuZAAEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQIcRXhhY3RseSBvbmUgcGF5bWVudCByZXF1aXJlZAQDcG10CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAADCQECIT0CCAUDcG10B2Fzc2V0SWQFC3VzZHRBc3NldElkCQACAQIaQWxsb3dlZCBVU0RUIHBheW1lbnQgb25seSEDCQECIT0CCAUDcG10BmFtb3VudAUHRVhQVVNEVAkAAgEJAKwCAgIbUGF5bWVudCBhdHRhY2hlZCBzaG91bGQgYmUgCQCkAwEFB0VYUFVTRFQEBnJlc3VsdAkBEmV4cGVkaXRpb25JbnRlcm5hbAIIBQFpBmNhbGxlcggFAWkNdHJhbnNhY3Rpb25JZAQLYWNyZXNSZXN1bHQJAQVhc0ludAEJAPwHBAUNYWNyZXNDb250cmFjdAIJYnVybkFjcmVzCQDMCAIFDFNfQ09TVF9BQ1JFUwUDbmlsBQNuaWwJAJQKAgkAzggCCQDOCAIJAM0IAggFBnJlc3VsdAJfMQkBDlNjcmlwdFRyYW5zZmVyAwUPZWNvbm9teUNvbnRyYWN0CAUDcG10BmFtb3VudAULdXNkdEFzc2V0SWQICQEWdXBkYXRlQWNjU3RhdHNJbnRlcm5hbAIJAKUIAQgFAWkGY2FsbGVyBQp4cE5ld1NMYW5kAl8xBQ1wcm9sb2dBY3Rpb25zCQCUCgIICAUGcmVzdWx0Al8yAl8xBQthY3Jlc1Jlc3VsdAFpAQpleHBlZGl0aW9uAgdtZXNzYWdlA3NpZwQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQIdXNlckFkZHIJAKUIAQgFAWkGY2FsbGVyBAFmCQEMZmxpZ2h0Q29tbW9uAwUIdXNlckFkZHIFB21lc3NhZ2UFA3NpZwQLZHVja0Fzc2V0SWQIBQFmAl8yBAlrZXlIZWFsdGgJAQ1rZXlEdWNrSGVhbHRoAQULZHVja0Fzc2V0SWQEBWJwS2V5CQERa2V5QmFja3BhY2tCeUR1Y2sBBQtkdWNrQXNzZXRJZAQLY3VycmVudFBhY2sJAQtnZXRCYWNrcGFjawEFBWJwS2V5BAVtTGlzdAkAtQkCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeE1hdAIBXwQGbmV3TWF0CQC5CQIJARFzdWJ0cmFjdE1hdGVyaWFscwMGBQVtTGlzdAUMRVhQTUFURVJJQUxTAgFfBAVlcUtleQkBEGtleUR1Y2tFcXVpcG1lbnQBBQtkdWNrQXNzZXRJZAQJY3VycmVudEVxCQELdmFsdWVPckVsc2UCCQCiCAEFBWVxS2V5AhcsOyxfLDssXyw7LF8sOyxfLDssXyw7LAQNJHQwODEyNjk4MTM2NgkBEXN1YnRyYWN0RXF1aXBtZW50AgUJY3VycmVudEVxCAUBZgJfNQQFbmV3RXEIBQ0kdDA4MTI2OTgxMzY2Al8xBA9zaG91bGRaZXJvQnVmZnMIBQ0kdDA4MTI2OTgxMzY2Al8yBAFlCQESZXhwZWRpdGlvbkludGVybmFsAggFAWkGY2FsbGVyCAUBaQ10cmFuc2FjdGlvbklkBAJpZAgIBQFlAl8yAl8xBAZyZXN1bHQDCQBnAgAACAUBZgJfMQkAlQoDCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQlrZXlIZWFsdGgAAAkAzAgCCQELU3RyaW5nRW50cnkCBQVlcUtleQUFbmV3RXEFA25pbAIAAAAJAJUKAwkAzggCCAUBZQJfMQMFD3Nob3VsZFplcm9CdWZmcwkAzAgCCQELU3RyaW5nRW50cnkCCQEMa2V5RHVja0J1ZmZzAQULZHVja0Fzc2V0SWQCCTBfMF8wXzBfMAUDbmlsCQDNCAIJAM0IAgkAzQgCCQDNCAIFA25pbAkBC1N0cmluZ0VudHJ5AgkBD2tleUR1Y2tMb2NhdGlvbgEFC2R1Y2tBc3NldElkCQC5CQIJAMwIAggIBQFlAl8yAl8yCQDMCAICAUwJAMwIAgUCaWQFA25pbAIBXwkBDEludGVnZXJFbnRyeQIFCWtleUhlYWx0aAgFAWYCXzEJAQtTdHJpbmdFbnRyeQIFBWVxS2V5BQVuZXdFcQkBC1N0cmluZ0VudHJ5AgUFYnBLZXkJALkJAgkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQpicElkeExldmVsCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4UmVzCQDMCAIFBm5ld01hdAkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QFA25pbAIBOgUCaWQIBQFmAl8zAwkBD2NoZWNrVG91cm5hbWVudAEFC2R1Y2tBc3NldElkCQACAQIaZXhwZWRpdGlvbl9jaGVja1RvdXJuYW1lbnQDCQENY2hlY2tEZWxpdmVyeQEFC2R1Y2tBc3NldElkCQACAQIYZXhwZWRpdGlvbl9jaGVja0RlbGl2ZXJ5BAthY3Jlc1Jlc3VsdAkBBWFzSW50AQkA/AcEBQ1hY3Jlc0NvbnRyYWN0AglidXJuQWNyZXMJAMwIAgUMU19DT1NUX0FDUkVTBQNuaWwFA25pbAkAlAoCCQDOCAIJAM4IAggFBnJlc3VsdAJfMQgJARd1cGRhdGVEdWNrU3RhdHNJbnRlcm5hbAIFC2R1Y2tBc3NldElkBQp4cE5ld1NMYW5kAl8xBQ1wcm9sb2dBY3Rpb25zCQCVCgMIBQZyZXN1bHQCXzIIBQZyZXN1bHQCXzMFC2FjcmVzUmVzdWx0AWkBEGJ1eVNMYW5kRm9yQWNyZXMABA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECImV4YWN0bHkgMSBwYXltZW50IG11c3QgYmUgYXR0YWNoZWQEA3BtdAkAkQMCCAUBaQhwYXltZW50cwAABANhbXQIBQNwbXQGYW1vdW50AwMJAQEhAQkBCWlzRGVmaW5lZAEIBQNwbXQHYXNzZXRJZAYJAQIhPQIJAQV2YWx1ZQEIBQNwbXQHYXNzZXRJZAUMYWNyZXNBc3NldElkCQACAQIUQUNSRVMgcGF5bWVudHMgb25seSEDCQECIT0CBQNhbXQFDFNfQ09TVF9BQ1JFUwkAAgEJAKwCAgIbUGF5bWVudCBhdHRhY2hlZCBzaG91bGQgYmUgCQCkAwEFDFNfQ09TVF9BQ1JFUwQGcmVzdWx0CQESZXhwZWRpdGlvbkludGVybmFsAggFAWkGY2FsbGVyCAUBaQ10cmFuc2FjdGlvbklkBAthY3Jlc1Jlc3VsdAkBBWFzSW50AQkA/AcEBQ1hY3Jlc0NvbnRyYWN0AglidXJuQWNyZXMJAMwIAgUMU19DT1NUX0FDUkVTBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFDGFjcmVzQXNzZXRJZAUDYW10BQNuaWwJAJQKAgkAzggCCQDOCAIIBQZyZXN1bHQCXzEICQEWdXBkYXRlQWNjU3RhdHNJbnRlcm5hbAIJAKUIAQgFAWkGY2FsbGVyBQp4cE5ld1NMYW5kAl8xBQ1wcm9sb2dBY3Rpb25zCQCUCgIICAUGcmVzdWx0Al8yAl8xBQthY3Jlc1Jlc3VsdAFpAQx1cGdyYWRlSW5mcmEBC2xhbmRBc3NldElkBA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBAZyZXN1bHQJAQ11cEluZnJhQ29tbW9uBAYIBQFpBmNhbGxlcgAABQtsYW5kQXNzZXRJZAQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBCQClCAEIBQFpBmNhbGxlcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAkAlAoCCQDOCAIJAM4IAggFBnJlc3VsdAJfMQUNcHJvbG9nQWN0aW9ucwgJARd1cGRhdGVEdWNrU3RhdHNJbnRlcm5hbAIFC2R1Y2tBc3NldElkCQBrAwUOeHBVcGdyYWRlSW5mcmEIBQZyZXN1bHQCXzMFBU1VTFQ4Al8xCAUGcmVzdWx0Al8yAWkBEGFjdGl2YXRlQXJ0aWZhY3QCB2FydE5hbWUObGFuZEFzc2V0SWRPcHQEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQEBGFkZHIJAKUIAQgFAWkGY2FsbGVyBAZyZXN1bHQEByRtYXRjaDAFB2FydE5hbWUDCQAAAgIHUFJFU0FMRQUHJG1hdGNoMAkBEmFjdGl2YXRlUHJlc2FsZUFydAIFBGFkZHIFDmxhbmRBc3NldElkT3B0AwkAAAICB09OQk9BUkQFByRtYXRjaDAJARJhY3RpdmF0ZU9uYm9hcmRBcnQBBQRhZGRyCQACAQIQVW5rbm93biBhcnRpZmFjdAkAzggCBQZyZXN1bHQFDXByb2xvZ0FjdGlvbnMBaQEKbWVyZ2VMYW5kcwEMbGFuZEFzc2V0SWRzBA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBAZyZXN1bHQJAQttZXJnZUNvbW1vbgIJAKUIAQgFAWkGY2FsbGVyBQxsYW5kQXNzZXRJZHMJAJQKAgkAzggCCQDOCAIIBQZyZXN1bHQCXzEFDXByb2xvZ0FjdGlvbnMICQEWdXBkYXRlQWNjU3RhdHNJbnRlcm5hbAIJAKUIAQgFAWkGY2FsbGVyBQd4cE1lcmdlAl8xCAUGcmVzdWx0Al8yAWkBDWNhcmdvRXhjaGFuZ2UCDGNhcmdvTGlzdFN0cgtsYW5kQXNzZXRJZAQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQKY2FyZ29QYXJ0cwkAvAkCBQxjYXJnb0xpc3RTdHICAToEBGFkZHIJAKUIAQgFAWkMb3JpZ2luQ2FsbGVyBAVhc3NldAkBBXZhbHVlAQkA7AcBCQDZBAEFC2xhbmRBc3NldElkBAd0aW1lS2V5CQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFC2xhbmRBc3NldElkAwkBASEBCQEJaXNEZWZpbmVkAQkAnwgBBQd0aW1lS2V5CQACAQkArAICCAUFYXNzZXQEbmFtZQIOIGlzIG5vdCBzdGFrZWQEBW93bmVyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFWtleUxhbmRBc3NldElkVG9Pd25lcgEFC2xhbmRBc3NldElkCQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCDCBpcyBvcnBoYW5lZAMJAQIhPQIFBW93bmVyBQRhZGRyCQACAQkArAICBQpMQU5EUFJFRklYAg0gaXMgbm90IHlvdXJzBAlsYW5kSW5kZXgJAGkCCQEPbnVtUGllY2VzQnlTaXplAQkAkQMCCQC1CQIIBQVhc3NldAtkZXNjcmlwdGlvbgIBXwULcmVjTGFuZFNpemUFBVNTSVpFBAppbmZyYUxldmVsCQELdmFsdWVPckVsc2UCCQCfCAEJARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQULbGFuZEFzc2V0SWQAAAQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQRhZGRyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkBAtjdXJMb2NhdGlvbgkBC3ZhbHVlT3JFbHNlAgkAoggBCQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQFD0RFRkFVTFRMT0NBVElPTgQDbG9jCQC1CQIJAQV2YWx1ZQEFC2N1ckxvY2F0aW9uAgFfAwkBAiE9AgkAkQMCBQNsb2MFCmxvY0lkeFR5cGUCAUwJAAIBCQCsAgIJAKwCAgIWRHVjayBsb2NhdGlvbiB0eXBlIGlzIAkAkQMCBQNsb2MFCmxvY0lkeFR5cGUCESwgYnV0IHNob3VsZCBiZSBMAwkBAiE9AgkAkQMCBQNsb2MFCGxvY0lkeElkBQtsYW5kQXNzZXRJZAkAAgEJAKwCAgIbRHVjayBzaG91bGQgYmUgb24gdGhlIGxhbmQgBQtsYW5kQXNzZXRJZAQFd2hLZXkJARJrZXlXYXJlaG91c2VCeUxhbmQBBQtsYW5kQXNzZXRJZAQJY3VycmVudFdoCQEMZ2V0V2FyZWhvdXNlAwUFd2hLZXkFCWxhbmRJbmRleAUKaW5mcmFMZXZlbAQFYnBLZXkJARFrZXlCYWNrcGFja0J5RHVjawEFC2R1Y2tBc3NldElkBAtjdXJyZW50UGFjawkBC2dldEJhY2twYWNrAQUFYnBLZXkEBnJlc3VsdAkBCW1vdmVTdHVmZgMFCmNhcmdvUGFydHMFCWN1cnJlbnRXaAULY3VycmVudFBhY2sEBGxvZnQJALUJAgkAkQMCBQljdXJyZW50V2gFCXdoSWR4TE9GVAIBXwQFbG9mdE8JAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEbG9mdAULdm9sT2NjdXBpZWQIBQZyZXN1bHQCXzcEBWxvZnRGCQBlAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFB3ZvbEZyZWUIBQZyZXN1bHQCXzcJAM4IAgkAzAgCCQELU3RyaW5nRW50cnkCBQVicEtleQkAugkCCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCmJwSWR4TGV2ZWwJAMwIAggFBnJlc3VsdAJfNAkAzAgCCAUGcmVzdWx0Al81CQDMCAIIBQZyZXN1bHQCXzYFA25pbAIBOgkAzAgCCQELU3RyaW5nRW50cnkCBQV3aEtleQkAugkCCQDMCAIJAJEDAgUJY3VycmVudFdoBQt3aElkeExldmVscwkAzAgCCAUGcmVzdWx0Al8xCQDMCAIIBQZyZXN1bHQCXzIJAMwIAggFBnJlc3VsdAJfMwkAzAgCCQC5CQIJAMwIAgkAkQMCBQRsb2Z0BQl2b2xMb2NrZWQJAMwIAgkApAMBBQVsb2Z0TwkAzAgCCQCkAwEFBWxvZnRGCQDMCAIJAJEDAgUEbG9mdAUIdm9sVG90YWwFA25pbAIBXwUDbmlsAgE6BQNuaWwFDXByb2xvZ0FjdGlvbnMBaQENc2F2ZVdhcmVob3VzZQIFd2hTdHILbGFuZEFzc2V0SWQDCQECIT0CCAUBaQZjYWxsZXIFD2Vjb25vbXlDb250cmFjdAkAAgECDUFjY2VzcyBkZW5pZWQEBXdoS2V5CQESa2V5V2FyZWhvdXNlQnlMYW5kAQULbGFuZEFzc2V0SWQEAndoCQC8CQIFBXdoU3RyAgE6AwkBAiE9AgkAkAMBBQJ3aAAFCQACAQIwd2FyZWhvdXNlIHN0cmluZyBzaG91bGQgY29udGFpbiA0ICc6JyBzZXBhcmF0b3JzBAVsb2Z0TAkAkQMCCQC1CQIJAJEDAgUCd2gFCXdoSWR4TE9GVAIBXwUJdm9sTG9ja2VkBAVsb2Z0TwkBF2dldFdhcmVob3VzZU9jY3VwaWVkVm9sAQUCd2gEBWxvZnRUCQEXZ2V0V2FyZWhvdXNlVG90YWxWb2x1bWUBCQCRAwIFAndoBQt3aElkeExldmVscwQFbG9mdEYJAGUCCQBlAgUFbG9mdFQJAQ1wYXJzZUludFZhbHVlAQUFbG9mdEwFBWxvZnRPBAhuZXdXaFN0cgkAugkCCQDMCAIJAJEDAgUCd2gFC3doSWR4TGV2ZWxzCQDMCAIJAJEDAgUCd2gFCHdoSWR4UmVzCQDMCAIJAJEDAgUCd2gFCHdoSWR4TWF0CQDMCAIJAJEDAgUCd2gFCXdoSWR4UHJvZAkAzAgCCQC5CQIJAMwIAgUFbG9mdEwJAMwIAgkApAMBBQVsb2Z0TwkAzAgCCQCkAwEFBWxvZnRGCQDMCAIJAKQDAQUFbG9mdFQFA25pbAIBXwUDbmlsAgE6CQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgUFd2hLZXkFCG5ld1doU3RyBQNuaWwFCG5ld1doU3RyAWkBEmZpeFdhcmVob3VzZUZvcm1hdAELbGFuZEFzc2V0SWQDCQECIT0CCAUBaQZjYWxsZXIFDHJlc3RDb250cmFjdAkAAgECDUFjY2VzcyBkZW5pZWQEBXdoS2V5CQESa2V5V2FyZWhvdXNlQnlMYW5kAQULbGFuZEFzc2V0SWQEBWFzc2V0CQEFdmFsdWUBCQDsBwEJANkEAQULbGFuZEFzc2V0SWQECWxhbmRJbmRleAkAaQIJAQ9udW1QaWVjZXNCeVNpemUBCQCRAwIJALUJAggFBWFzc2V0C2Rlc2NyaXB0aW9uAgFfBQtyZWNMYW5kU2l6ZQUFU1NJWkUECmluZnJhTGV2ZWwJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBFmtleUluZnJhTGV2ZWxCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAAABAJ3aAkBDGdldFdhcmVob3VzZQMFBXdoS2V5BQlsYW5kSW5kZXgFCmluZnJhTGV2ZWwEBWxvZnRMCQEFYXNJbnQBCQD8BwQFD2Vjb25vbXlDb250cmFjdAIacmVjYWxjTG9ja2VkVm9sdW1lUkVBRE9OTFkJAMwIAgULbGFuZEFzc2V0SWQJAMwIAgUCd2gFA25pbAUDbmlsBAVsb2Z0TwkBF2dldFdhcmVob3VzZU9jY3VwaWVkVm9sAQUCd2gEBWxvZnRUCQEXZ2V0V2FyZWhvdXNlVG90YWxWb2x1bWUBCQCRAwIFAndoBQt3aElkeExldmVscwQFbG9mdEYJAGUCCQBlAgUFbG9mdFQFBWxvZnRMBQVsb2Z0TwQIbmV3V2hTdHIJALoJAgkAzAgCCQCRAwIFAndoBQt3aElkeExldmVscwkAzAgCCQCRAwIFAndoBQh3aElkeFJlcwkAzAgCCQCRAwIFAndoBQh3aElkeE1hdAkAzAgCCQCRAwIFAndoBQl3aElkeFByb2QJAMwIAgkAuQkCCQDMCAIJAKQDAQUFbG9mdEwJAMwIAgkApAMBBQVsb2Z0TwkAzAgCCQCkAwEFBWxvZnRGCQDMCAIJAKQDAQUFbG9mdFQFA25pbAIBXwUDbmlsAgE6CQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgUFd2hLZXkFCG5ld1doU3RyBQNuaWwFCG5ld1doU3RyAWkBF2ZpeENvbnRpbmVudFByb3BvcnRpb25zAQxsYW5kQXNzZXRJZHMDCQECIT0CCAUBaQZjYWxsZXIFDHJlc3RDb250cmFjdAkAAgECDUFjY2VzcyBkZW5pZWQKAQhnZXRQcm9wcwIDYWNjBGNvbnQJAM0IAgUDYWNjCQELdmFsdWVPckVsc2UCCQCiCAEJARZrZXlSZXNUeXBlc0J5Q29udGluZW50AQUEY29udAILMF8wXzBfMF8wXzAEAXAKAAIkbAUKY29udGluZW50cwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAFA25pbAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEIZ2V0UHJvcHMCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDUJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFCgEJcHJvY2Vzc29yAgNhY2MLbGFuZEFzc2V0SWQEBWFzc2V0CQEFdmFsdWUBCQDsBwEJANkEAQULbGFuZEFzc2V0SWQEAWQJALUJAggFBWFzc2V0C2Rlc2NyaXB0aW9uAgFfBAlsYW5kSW5kZXgJAGkCCQEPbnVtUGllY2VzQnlTaXplAQkAkQMCBQFkBQtyZWNMYW5kU2l6ZQUFU1NJWkUEBGNvbnQJAJEDAgUBZAUMcmVjQ29udGluZW50BA10ZXJyYWluQ291bnRzCQENY291bnRUZXJyYWlucwEJAJEDAgUBZAULcmVjVGVycmFpbnMEDGNvbnRpbmVudElkeAkBBXZhbHVlAQkAzwgCBQpjb250aW5lbnRzBQRjb250BAljb250UHJvcHMJALUJAgkAkQMCBQNhY2MFDGNvbnRpbmVudElkeAIBXwQHdXBkYXRlZAkAuQkCCQEZdXBkYXRlUHJvcG9ydGlvbnNJbnRlcm5hbAQFCWNvbnRQcm9wcwUNdGVycmFpbkNvdW50cwUJbGFuZEluZGV4AAECAV8EByRtYXRjaDAFBGNvbnQDCQAAAgIIQW1lcmljYXMFByRtYXRjaDAJAMwIAgUHdXBkYXRlZAkAzAgCCQCRAwIFA2FjYwABCQDMCAIJAJEDAgUDYWNjAAIJAMwIAgkAkQMCBQNhY2MAAwkAzAgCCQCRAwIFA2FjYwAEBQNuaWwDCQAAAgIGRXVyb3BlBQckbWF0Y2gwCQDMCAIJAJEDAgUDYWNjAAAJAMwIAgUHdXBkYXRlZAkAzAgCCQCRAwIFA2FjYwACCQDMCAIJAJEDAgUDYWNjAAMJAMwIAgkAkQMCBQNhY2MABAUDbmlsAwkAAAICBEFzaWEFByRtYXRjaDAJAMwIAgkAkQMCBQNhY2MAAAkAzAgCCQCRAwIFA2FjYwABCQDMCAIFB3VwZGF0ZWQJAMwIAgkAkQMCBQNhY2MAAwkAzAgCCQCRAwIFA2FjYwAEBQNuaWwDCQAAAgIGQWZyaWNhBQckbWF0Y2gwCQDMCAIJAJEDAgUDYWNjAAAJAMwIAgkAkQMCBQNhY2MAAQkAzAgCCQCRAwIFA2FjYwACCQDMCAIFB3VwZGF0ZWQJAMwIAgkAkQMCBQNhY2MABAUDbmlsAwkAAAICB09jZWFuaWEFByRtYXRjaDAJAMwIAgkAkQMCBQNhY2MAAAkAzAgCCQCRAwIFA2FjYwABCQDMCAIJAJEDAgUDYWNjAAIJAMwIAgkAkQMCBQNhY2MAAwkAzAgCBQd1cGRhdGVkBQNuaWwJAAIBAg93cm9uZyBjb250aW5lbnQEAXIKAAIkbAUMbGFuZEFzc2V0SWRzCgACJHMJAJADAQUCJGwKAAUkYWNjMAUBcAoBBSRmMV8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEJcHJvY2Vzc29yAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYxXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhVMaXN0IHNpemUgZXhjZWVkcyAxMDAJAQUkZjFfMgIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyADMANAA1ADYANwA4ADkAOgA7ADwAPQA+AD8AQABBAEIAQwBEAEUARgBHAEgASQBKAEsATABNAE4ATwBQAFEAUgBTAFQAVQBWAFcAWABZAFoAWwBcAF0AXgBfAGAAYQBiAGMAZAkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQIJARZrZXlSZXNUeXBlc0J5Q29udGluZW50AQIIQW1lcmljYXMJAJEDAgUBcgAACQDMCAIJAQtTdHJpbmdFbnRyeQIJARZrZXlSZXNUeXBlc0J5Q29udGluZW50AQIGRXVyb3BlCQCRAwIFAXIAAQkAzAgCCQELU3RyaW5nRW50cnkCCQEWa2V5UmVzVHlwZXNCeUNvbnRpbmVudAECBEFzaWEJAJEDAgUBcgACCQDMCAIJAQtTdHJpbmdFbnRyeQIJARZrZXlSZXNUeXBlc0J5Q29udGluZW50AQIGQWZyaWNhCQCRAwIFAXIAAwkAzAgCCQELU3RyaW5nRW50cnkCCQEWa2V5UmVzVHlwZXNCeUNvbnRpbmVudAECB09jZWFuaWEJAJEDAgUBcgAEBQNuaWwAAAFpAQ9maXhTdGFrZWRQaWVjZXMBB2FkZHJlc3MDCQECIT0CCAUBaQZjYWxsZXIFDHJlc3RDb250cmFjdAkAAgECDUFjY2VzcyBkZW5pZWQEDHN0YWtlZFBpZWNlcwMJAAACBQdhZGRyZXNzAgAAAAQIbGFuZHNTdHIJAJ0IAgUPc3Rha2luZ0NvbnRyYWN0CQEVa2V5U3Rha2VkTGFuZHNCeU93bmVyAQUHYWRkcmVzcwQFbGFuZHMDCQEJaXNEZWZpbmVkAQUIbGFuZHNTdHIJAL0JAgkBBXZhbHVlAQUIbGFuZHNTdHICAV8FA25pbAoBB29uZUxhbmQCA2FjYwtsYW5kQXNzZXRJZAQFYXNzZXQJAQV2YWx1ZQEJAOwHAQkA2QQBBQtsYW5kQXNzZXRJZAQIbGFuZFNpemUJAJEDAgkAtQkCCAUFYXNzZXQLZGVzY3JpcHRpb24CAV8FC3JlY0xhbmRTaXplCQBkAgUDYWNjCQEPbnVtUGllY2VzQnlTaXplAQUIbGFuZFNpemUKAAIkbAUFbGFuZHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwAAAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBB29uZUxhbmQCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFUxpc3Qgc2l6ZSBleGNlZWRzIDEwMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiACMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQA6ADsAPAA9AD4APwBAAEEAQgBDAEQARQBGAEcASABJAEoASwBMAE0ATgBPAFAAUQBSAFMAVABVAFYAVwBYAFkAWgBbAFwAXQBeAF8AYABhAGIAYwBkCQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIJARZrZXlTdGFrZWRQaWVjZXNCeU93bmVyAQUHYWRkcmVzcwUMc3Rha2VkUGllY2VzBQNuaWwFDHN0YWtlZFBpZWNlcwFpAQ1zZXRDdXN0b21OYW1lAwdhc3NldElkCmN1c3RvbU5hbWUEdHlwZQQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAhxFeGFjdGx5IG9uZSBwYXltZW50IHJlcXVpcmVkBANwbXQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAMJAQIhPQIIBQNwbXQHYXNzZXRJZAULdXNkdEFzc2V0SWQJAAIBAhpBbGxvd2VkIFVTRFQgcGF5bWVudCBvbmx5IQMJAQIhPQIIBQNwbXQGYW1vdW50BQxSRU5BTUlOR0NPU1QJAAIBCQCsAgICElBheW1lbnQgc2hvdWxkIGJlIAkApAMBBQxSRU5BTUlOR0NPU1QDCQEIY29udGFpbnMCBQpjdXN0b21OYW1lAgJfXwkAAgEJAKwCAgIeTmFtZSBzaG91bGQgbm90IGNvbnRhaW4gJ19fJzogBQpjdXN0b21OYW1lAwkAZgIJALECAQUKY3VzdG9tTmFtZQUKTUFYTkFNRUxFTgkAAgEJAKwCAgIZTmFtZSB0b28gbG9uZywgbWF4TGVuZ3RoPQkApAMBBQpNQVhOQU1FTEVOBARhZGRyCQClCAEIBQFpDG9yaWdpbkNhbGxlcgQHYWN0aW9ucwQHJG1hdGNoMAUEdHlwZQMJAAACAgdBQ0NPVU5UBQckbWF0Y2gwBApyZXZlcnNlS2V5CQEWa2V5Q3VzdG9tTmFtZVRvQWRkcmVzcwEFCmN1c3RvbU5hbWUECW5hbWVPd25lcgkAoggBBQpyZXZlcnNlS2V5AwkBCWlzRGVmaW5lZAEFCW5hbWVPd25lcgkAAgEJAKwCAgIZTmFtZSBhbHJlYWR5IHJlZ2lzdGVyZWQ6IAUKY3VzdG9tTmFtZQQNYWRkclRvTmFtZUtleQkBFmtleUFkZHJlc3NUb0N1c3RvbU5hbWUBBQRhZGRyBAdvbGROYW1lCQCiCAEFDWFkZHJUb05hbWVLZXkEB2ZyZWVPbGQDCQEJaXNEZWZpbmVkAQUHb2xkTmFtZQkAzAgCCQELRGVsZXRlRW50cnkBCQEWa2V5Q3VzdG9tTmFtZVRvQWRkcmVzcwEJAQV2YWx1ZQEFB29sZE5hbWUFA25pbAUDbmlsCQDOCAIJAM0IAgkAzQgCBQdmcmVlT2xkCQELU3RyaW5nRW50cnkCBQ1hZGRyVG9OYW1lS2V5BQpjdXN0b21OYW1lCQELU3RyaW5nRW50cnkCBQpyZXZlcnNlS2V5BQRhZGRyCAkBFnVwZGF0ZUFjY1N0YXRzSW50ZXJuYWwCBQRhZGRyBQx4cEN1c3RvbU5hbWUCXzEDCQAAAgIETEFORAUHJG1hdGNoMAQFYXNzZXQJAQV2YWx1ZQEJAOwHAQkA2QQBBQdhc3NldElkBAd0aW1lS2V5CQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFB2Fzc2V0SWQDCQEBIQEJAQlpc0RlZmluZWQBCQCfCAEFB3RpbWVLZXkJAAIBCQCsAgIIBQVhc3NldARuYW1lAg4gaXMgbm90IHN0YWtlZAQFb3duZXIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEVa2V5TGFuZEFzc2V0SWRUb093bmVyAQUHYXNzZXRJZAkArAICCQCsAgICBE5GVCAIBQVhc3NldARuYW1lAgwgaXMgb3JwaGFuZWQDCQECIT0CBQVvd25lcgUEYWRkcgkAAgEJAKwCAgUKTEFORFBSRUZJWAINIGlzIG5vdCB5b3VycwQKcmV2ZXJzZUtleQkBGmtleUxhbmRDdXN0b21OYW1lVG9Bc3NldElkAQUKY3VzdG9tTmFtZQQJbmFtZU93bmVyCQCiCAEFCnJldmVyc2VLZXkDCQEJaXNEZWZpbmVkAQUJbmFtZU93bmVyCQACAQkArAICAhlOYW1lIGFscmVhZHkgcmVnaXN0ZXJlZDogBQpjdXN0b21OYW1lBA5hc3NldFRvTmFtZUtleQkBGmtleUxhbmRBc3NldElkVG9DdXN0b21OYW1lAQUHYXNzZXRJZAQHb2xkTmFtZQkAoggBBQ5hc3NldFRvTmFtZUtleQQHZnJlZU9sZAMJAQlpc0RlZmluZWQBBQdvbGROYW1lCQDMCAIJAQtEZWxldGVFbnRyeQEJARprZXlMYW5kQ3VzdG9tTmFtZVRvQXNzZXRJZAEJAQV2YWx1ZQEFB29sZE5hbWUFA25pbAUDbmlsCQDOCAIJAM0IAgkAzQgCBQdmcmVlT2xkCQELU3RyaW5nRW50cnkCBQ5hc3NldFRvTmFtZUtleQUKY3VzdG9tTmFtZQkBC1N0cmluZ0VudHJ5AgUKcmV2ZXJzZUtleQUHYXNzZXRJZAgJARZ1cGRhdGVBY2NTdGF0c0ludGVybmFsAgUEYWRkcgUMeHBDdXN0b21OYW1lAl8xAwkAAAICBERVQ0sFByRtYXRjaDAEBWFzc2V0CQEFdmFsdWUBCQDsBwEJANkEAQUHYXNzZXRJZAQHdGltZUtleQkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQdhc3NldElkAwMJAQEhAQkBCWlzRGVmaW5lZAEJAJ8IAQUHdGltZUtleQYJAQEhAQkBCWlzRGVmaW5lZAEJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUEYWRkcgkAAgEJAKwCAggFBWFzc2V0BG5hbWUCDiBpcyBub3Qgc3Rha2VkBAVvd25lcgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARBrZXlEdWNrSWRUb093bmVyAQUHYXNzZXRJZAkArAICCQCsAgICBE5GVCAIBQVhc3NldARuYW1lAgwgaXMgb3JwaGFuZWQDCQECIT0CBQVvd25lcgUEYWRkcgkAAgEJAKwCAgUKRFVDS1BSRUZJWAINIGlzIG5vdCB5b3VycwQKcmV2ZXJzZUtleQkBGmtleUR1Y2tDdXN0b21OYW1lVG9Bc3NldElkAQUKY3VzdG9tTmFtZQQJbmFtZU93bmVyCQCiCAEFCnJldmVyc2VLZXkDCQEJaXNEZWZpbmVkAQUJbmFtZU93bmVyCQACAQkArAICAhlOYW1lIGFscmVhZHkgcmVnaXN0ZXJlZDogBQpjdXN0b21OYW1lBA5hc3NldFRvTmFtZUtleQkBGmtleUR1Y2tBc3NldElkVG9DdXN0b21OYW1lAQUHYXNzZXRJZAQHb2xkTmFtZQkAoggBBQ5hc3NldFRvTmFtZUtleQQHZnJlZU9sZAMJAQlpc0RlZmluZWQBBQdvbGROYW1lCQDMCAIJAQtEZWxldGVFbnRyeQEJARprZXlEdWNrQ3VzdG9tTmFtZVRvQXNzZXRJZAEJAQV2YWx1ZQEFB29sZE5hbWUFA25pbAUDbmlsCQDOCAIJAM0IAgkAzQgCBQdmcmVlT2xkCQELU3RyaW5nRW50cnkCBQ5hc3NldFRvTmFtZUtleQUKY3VzdG9tTmFtZQkBC1N0cmluZ0VudHJ5AgUKcmV2ZXJzZUtleQUHYXNzZXRJZAgJARd1cGRhdGVEdWNrU3RhdHNJbnRlcm5hbAIFB2Fzc2V0SWQFDHhwQ3VzdG9tTmFtZQJfMQkAAgECE1Vua25vd24gZW50aXR5IHR5cGUJAJQKAgkAzggCCQDNCAIFB2FjdGlvbnMJAQ5TY3JpcHRUcmFuc2ZlcgMFD2Vjb25vbXlDb250cmFjdAgFA3BtdAZhbW91bnQFC3VzZHRBc3NldElkBQ1wcm9sb2dBY3Rpb25zAAABaQEMc2V0UmVmZXJyYWxzAglvbGRQbGF5ZXIJbmV3UGxheWVyAwkBAiE9AggFAWkPY2FsbGVyUHVibGljS2V5BQNwdWIJAAIBAhFQZXJtaXNzaW9uIGRlbmllZAQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAMJAQEhAQkBCWlzRGVmaW5lZAEJAKYIAQUJb2xkUGxheWVyCQACAQkArAICAhFJbnZhbGlkIGFkZHJlc3M6IAUJb2xkUGxheWVyAwkBASEBCQEJaXNEZWZpbmVkAQkApggBBQluZXdQbGF5ZXIJAAIBCQCsAgICEUludmFsaWQgYWRkcmVzczogBQluZXdQbGF5ZXIEB29sZHNLZXkJAQlrZXlPbGRpZXMABARvbGRzCQCiCAEFB29sZHNLZXkEBm9sZGllcwMJAQlpc0RlZmluZWQBBQRvbGRzCQC8CQIJAQV2YWx1ZQEFBG9sZHMCAV8FA25pbAMJAQ9jb250YWluc0VsZW1lbnQCBQZvbGRpZXMFCW5ld1BsYXllcgkAAgEJAKwCAgUJbmV3UGxheWVyAiYgaXMgbm90IG5ld2JpZSAoYWxyZWFkeSBoYXMgcmVmZXJyYWxzKQQIcmVmQnlLZXkJAQ9rZXlBZGRyZXNzUmVmQnkBBQluZXdQbGF5ZXIEBXJlZkJ5CQCiCAEFCHJlZkJ5S2V5AwMJAQlpc0RlZmluZWQBBQVyZWZCeQkBCWlzRGVmaW5lZAEJAKYIAQkBBXZhbHVlAQUFcmVmQnkHCQACAQkArAICCQCsAgIFCW5ld1BsYXllcgIUIGFscmVhZHkgaGFzIHJlZkJ5OiAJAQV2YWx1ZQEFBXJlZkJ5BAdyZWZzS2V5CQETa2V5QWRkcmVzc1JlZmVycmFscwEFCW9sZFBsYXllcgQEcmVmcwkAoggBBQdyZWZzS2V5BAlyZWZzQXJyYXkDCQEJaXNEZWZpbmVkAQUEcmVmcwkAvAkCCQEFdmFsdWUBBQRyZWZzAgFfBQNuaWwDCQEPY29udGFpbnNFbGVtZW50AgUJcmVmc0FycmF5BQluZXdQbGF5ZXIJAAIBCQCsAgIJAKwCAgkArAICBQlvbGRQbGF5ZXICEiBhbHJlYWR5IGNvbnRhaW5zIAUJbmV3UGxheWVyAhEgd2l0aGluIHJlZmVycmFscwQHbmV3UmVmcwkAugkCCQDNCAIFCXJlZnNBcnJheQUJbmV3UGxheWVyAgFfBAduZXdPbGRzAwkBD2NvbnRhaW5zRWxlbWVudAIFBm9sZGllcwUJb2xkUGxheWVyCQEFdmFsdWUBBQRvbGRzCQC6CQIJAM0IAgUGb2xkaWVzBQlvbGRQbGF5ZXICAV8JAJQKAgkAzggCCQDMCAIJAQtTdHJpbmdFbnRyeQIFCHJlZkJ5S2V5BQlvbGRQbGF5ZXIJAMwIAgkBC1N0cmluZ0VudHJ5AgUHcmVmc0tleQUHbmV3UmVmcwkAzAgCCQELU3RyaW5nRW50cnkCBQdvbGRzS2V5BQduZXdPbGRzBQNuaWwFDXByb2xvZ0FjdGlvbnMAAAFpARBkaXN0cmlidXRlUG9pbnRzBQhzdHJlbmd0aAhhY2N1cmFjeQlpbnRlbGxlY3QJZW5kdXJhbmNlCWRleHRlcml0eQQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQEYWRkcgkApQgBCAUBaQxvcmlnaW5DYWxsZXIEC3ZpcnRXbGdEYXRhCQEJYXNBbnlMaXN0AQkA/AcEBQt3bGdDb250cmFjdAISY2hlY2tXbGdYcFJFQURPTkxZCQDMCAIFBGFkZHIFA25pbAUDbmlsBA12aXJ0V2xnUG9pbnRzCQEFYXNJbnQBCQCRAwIFC3ZpcnRXbGdEYXRhAAEEDSR0MDk2NzUxOTcxNDEDCQBnAgAABQ12aXJ0V2xnUG9pbnRzCQCUCgIAAAUDbmlsBAdkZWx0YVhQCQEFYXNJbnQBCQD8BwQFC3dsZ0NvbnRyYWN0Agl0YWtlV2xnWHAJAMwIAgUEYWRkcgUDbmlsBQNuaWwDCQAAAgUHZGVsdGFYUAUHZGVsdGFYUAkAlAoCBQ12aXJ0V2xnUG9pbnRzCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEMa2V5VXNlckxldmVsAQUEYWRkcgkBBWFzSW50AQkAkQMCBQt2aXJ0V2xnRGF0YQAACQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEJa2V5VXNlclhQAQUEYWRkcgkBBWFzSW50AQkAkQMCBQt2aXJ0V2xnRGF0YQACBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4ECXdsZ1BvaW50cwgFDSR0MDk2NzUxOTcxNDECXzEECndsZ0FjdGlvbnMIBQ0kdDA5Njc1MTk3MTQxAl8yBAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFBGFkZHICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQECmZyZWVLZXlBY2MJARFrZXlVc2VyRnJlZVBvaW50cwEFBGFkZHIEDWZyZWVQb2ludHNBY2MJAGQCCQELdmFsdWVPckVsc2UCCQCfCAEFCmZyZWVLZXlBY2MAAAUJd2xnUG9pbnRzBAtmcmVlS2V5RHVjawkBEWtleUR1Y2tGcmVlUG9pbnRzAQULZHVja0Fzc2V0SWQEDmZyZWVQb2ludHNEdWNrCQELdmFsdWVPckVsc2UCCQCfCAEFC2ZyZWVLZXlEdWNrAAAEB3N1bUZyZWUJAGQCBQ1mcmVlUG9pbnRzQWNjBQ5mcmVlUG9pbnRzRHVjawQPc3VtVG9EaXN0cmlidXRlCQBkAgkAZAIJAGQCCQBkAgUIc3RyZW5ndGgFCGFjY3VyYWN5BQlpbnRlbGxlY3QFCWVuZHVyYW5jZQUJZGV4dGVyaXR5AwkAZgIFD3N1bVRvRGlzdHJpYnV0ZQUHc3VtRnJlZQkAAgEJAKwCAgkArAICAg9UaGVyZSBhcmUgb25seSAJAKQDAQUHc3VtRnJlZQIaIGZyZWUgcG9pbnRzIHRvIGRpc3RyaWJ1dGUECGNoYXJzS2V5CQEMa2V5RHVja0NoYXJzAQULZHVja0Fzc2V0SWQEBWNoYXJzCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAKIIAQUIY2hhcnNLZXkCCTBfMF8wXzBfMAIBXwQGbmV3QWNjCQBlAgUNZnJlZVBvaW50c0FjYwUPc3VtVG9EaXN0cmlidXRlCQCUCgIJAM4IAgkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQpmcmVlS2V5QWNjAwkAZgIAAAUGbmV3QWNjAAAFBm5ld0FjYwkAzAgCCQEMSW50ZWdlckVudHJ5AgULZnJlZUtleUR1Y2sDCQBmAgAABQZuZXdBY2MJAGQCBQ5mcmVlUG9pbnRzRHVjawUGbmV3QWNjBQ5mcmVlUG9pbnRzRHVjawkAzAgCCQELU3RyaW5nRW50cnkCBQhjaGFyc0tleQkAuQkCCQDMCAIJAKQDAQkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVjaGFycwUMY2hhclN0cmVuZ3RoBQhzdHJlbmd0aAkAzAgCCQCkAwEJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFY2hhcnMFDGNoYXJBY2N1cmFjeQUIYWNjdXJhY3kJAMwIAgkApAMBCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBWNoYXJzBQ1jaGFySW50ZWxsZWN0BQlpbnRlbGxlY3QJAMwIAgkApAMBCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBWNoYXJzBQ1jaGFyRW5kdXJhbmNlBQllbmR1cmFuY2UJAMwIAgkApAMBCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBWNoYXJzBQ1jaGFyRGV4dGVyaXR5BQlkZXh0ZXJpdHkFA25pbAIBXwUDbmlsBQ1wcm9sb2dBY3Rpb25zBQp3bGdBY3Rpb25zAAABaQEcc3BsaXRCeUdsb2JhbFdlaWdodHNSRUFET05MWQEGYW1vdW50CQCUCgIFA25pbAkBEmdldE5lZWRlZE1hdGVyaWFscwEFBmFtb3VudAFpASRzcGxpdEJ5R2xvYmFsQW5kTG9jYWxXZWlnaHRzUkVBRE9OTFkDCW1hdEFtb3VudAlyZXNBbW91bnQIdGVycmFpbnMEDXRlcnJhaW5Db3VudHMJAQ1jb3VudFRlcnJhaW5zAQUIdGVycmFpbnMJAJQKAgUDbmlsCQCUCgIJARJnZXROZWVkZWRNYXRlcmlhbHMBBQltYXRBbW91bnQJARNkaXN0cmlidXRlQnlXZWlnaHRzAgUJcmVzQW1vdW50BQ10ZXJyYWluQ291bnRzAWkBE2dldEJhY2twYWNrUkVBRE9OTFkBC2R1Y2tBc3NldElkCQCUCgIFA25pbAkAuQkCCQELZ2V0QmFja3BhY2sBCQERa2V5QmFja3BhY2tCeUR1Y2sBBQtkdWNrQXNzZXRJZAIBOgFpARRnZXRXYXJlaG91c2VSRUFET05MWQELbGFuZEFzc2V0SWQEBWFzc2V0CQEFdmFsdWUBCQDsBwEJANkEAQULbGFuZEFzc2V0SWQECWxhbmRJbmRleAkAaQIJAQ9udW1QaWVjZXNCeVNpemUBCQCRAwIJALUJAggFBWFzc2V0C2Rlc2NyaXB0aW9uAgFfBQtyZWNMYW5kU2l6ZQUFU1NJWkUECmluZnJhTGV2ZWwJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBFmtleUluZnJhTGV2ZWxCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAAACQCUCgIFA25pbAkAugkCCQEMZ2V0V2FyZWhvdXNlAwkBEmtleVdhcmVob3VzZUJ5TGFuZAEFC2xhbmRBc3NldElkBQlsYW5kSW5kZXgFCmluZnJhTGV2ZWwCAToBaQEKc2F2ZUxhc3RUeAADCQEBIQEJAQ9jb250YWluc0VsZW1lbnQCCQDMCAIFC3dsZ0NvbnRyYWN0CQDMCAIFD2Vjb25vbXlDb250cmFjdAkAzAgCBRJ0b3VybmFtZW50Q29udHJhY3QJAMwIAgUNYWNyZXNDb250cmFjdAUDbmlsCAUBaQZjYWxsZXIJAAIBAg1BY2Nlc3MgZGVuaWVkCQCUCgIJAQZwcm9sb2cBBQFpACoBaQEPdXBkYXRlRHVja1N0YXRzAgtkdWNrQXNzZXRJZAdkZWx0YVhQAwkBAiE9AggFAWkGY2FsbGVyBQ9lY29ub215Q29udHJhY3QJAAIBAg1BY2Nlc3MgZGVuaWVkCQEXdXBkYXRlRHVja1N0YXRzSW50ZXJuYWwCBQtkdWNrQXNzZXRJZAUHZGVsdGFYUAFpAQ51cGRhdGVBY2NTdGF0cwIEYWRkcgdkZWx0YVhQAwkBASEBCQEPY29udGFpbnNFbGVtZW50AgkAzAgCBQt3bGdDb250cmFjdAkAzAgCBQ9lY29ub215Q29udHJhY3QJAMwIAgUNYWNyZXNDb250cmFjdAUDbmlsCAUBaQZjYWxsZXIJAAIBAg1BY2Nlc3MgZGVuaWVkCQEWdXBkYXRlQWNjU3RhdHNJbnRlcm5hbAIFBGFkZHIFB2RlbHRhWFABaQEJZXF1aXBEdWNrAQllcXVpcG1lbnQEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQEBGFkZHIJAKUIAQgFAWkMb3JpZ2luQ2FsbGVyBAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFBGFkZHICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQDCQEPY2hlY2tUb3VybmFtZW50AQULZHVja0Fzc2V0SWQJAAIBAhllcXVpcER1Y2tfY2hlY2tUb3VybmFtZW50AwkBDWNoZWNrRGVsaXZlcnkBBQtkdWNrQXNzZXRJZAkAAgECF2VxdWlwRHVja19jaGVja0RlbGl2ZXJ5BAVlcUtleQkBEGtleUR1Y2tFcXVpcG1lbnQBBQtkdWNrQXNzZXRJZAQLY3VycmVudFNlZ3MJALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBBQVlcUtleQIXLDssXyw7LF8sOyxfLDssXyw7LF8sOywCAV8EBWJwS2V5CQERa2V5QmFja3BhY2tCeUR1Y2sBBQtkdWNrQXNzZXRJZAQLY3VycmVudFBhY2sJAQtnZXRCYWNrcGFjawEFBWJwS2V5BAVuZXdFcQkAtQkCBQllcXVpcG1lbnQCAV8DCQECIT0CCQCQAwEFBW5ld0VxBQtOVU1TRUdNRU5UUwkAAgECFldyb25nIGVxdWlwbWVudCBzdHJpbmcECXRlbXBQcm9kQgkBBmRyZXNzQgQFC2N1cnJlbnRTZWdzCQEOcHJvZFN0clRvQnl0ZXMBCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QGBQNuaWwECHNlZ0JwQXV4CQCRAwIJALUJAgkAkQMCBQVuZXdFcQULc2VnQmFja3BhY2sCATsAAQQKYnVmZkVmZmVjdAMJAAACBQhzZWdCcEF1eAIAAAAEBGF1eDAJAJEDAgkAtQkCBQhzZWdCcEF1eAIBLAAAAwkAAAIFBGF1eDACAAAABAZpZHhDbnQJALUJAgUEYXV4MAIBOgQDaWR4CQCRAwIFBmlkeENudAAABANjbnQJAJEDAgUGaWR4Q250AAEDAwMDAwkAAAIFA2lkeAICMDYGCQAAAgUDaWR4AgIwNwYJAAACBQNpZHgCAjA4CQECIT0CBQNjbnQCAAcJAGYCCQENcGFyc2VJbnRWYWx1ZQEFA2NudAAABwkBDXBhcnNlSW50VmFsdWUBCQCRAwIJALUJAgkAkQMCBRBwcm9kdWN0aW9uTWF0cml4CQENcGFyc2VJbnRWYWx1ZQEFA2lkeAIBXwUKcklkeEVmZmVjdAAABAVzdGF0cwkBDGdldER1Y2tTdGF0cwQFBHRoaXMFC2R1Y2tBc3NldElkBQpidWZmRWZmZWN0BgQIbmV3UHJvZEIJAQZkcmVzc0IEBQVuZXdFcQUJdGVtcFByb2RCBwUFc3RhdHMECm5ld1Byb2RTdHIJAQ5ieXRlc1RvUHJvZFN0cgEFCG5ld1Byb2RCCQCUCgIJAM4IAgkAzAgCCQELU3RyaW5nRW50cnkCBQVlcUtleQUJZXF1aXBtZW50CQDMCAIJAQtTdHJpbmdFbnRyeQIFBWJwS2V5CQC6CQIJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUKYnBJZHhMZXZlbAkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeFJlcwkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeE1hdAkAzAgCBQpuZXdQcm9kU3RyBQNuaWwCAToJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDGtleUR1Y2tCdWZmcwEFC2R1Y2tBc3NldElkCQC5CQIJAMwIAgkApAMBCQCRAwIFBXN0YXRzAAcJAMwIAgkApAMBCQCRAwIFBXN0YXRzAAgJAMwIAgkApAMBCQCRAwIFBXN0YXRzAAkJAMwIAgkApAMBCQCRAwIFBXN0YXRzAAoJAMwIAgkApAMBCQCRAwIFBXN0YXRzAAsFA25pbAIBXwUDbmlsBQ1wcm9sb2dBY3Rpb25zAAABaQEPZm9ydGlmaWNhdGVMYW5kAgtsYW5kQXNzZXRJZARwbGFuBA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBARhZGRyCQClCAEIBQFpDG9yaWdpbkNhbGxlcgQLZHVja0Fzc2V0SWQJAQt2YWx1ZU9yRWxzZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUEYWRkcgIABAlkdWNrU3RhdHMJAQxnZXREdWNrU3RhdHMEBQR0aGlzBQtkdWNrQXNzZXRJZAAABwQHZm9ydEtleQkBF2tleUZvcnRpZmljYXRpb25zQnlMYW5kAQULbGFuZEFzc2V0SWQEDGN1cnJlbnRGb3J0cwkAtQkCCQELdmFsdWVPckVsc2UCCQCiCAEFB2ZvcnRLZXkCDDowXzE1OjBfMTg6MAIBXwQFYXNzZXQJAQV2YWx1ZQEJAOwHAQkA2QQBBQtsYW5kQXNzZXRJZAQJbGFuZEluZGV4CQBpAgkBD251bVBpZWNlc0J5U2l6ZQEJAJEDAgkAtQkCCAUFYXNzZXQLZGVzY3JpcHRpb24CAV8FC3JlY0xhbmRTaXplBQVTU0laRQQKaW5mcmFMZXZlbAkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEWa2V5SW5mcmFMZXZlbEJ5QXNzZXRJZAEFC2xhbmRBc3NldElkAAAEBXdoS2V5CQESa2V5V2FyZWhvdXNlQnlMYW5kAQULbGFuZEFzc2V0SWQEAndoCQEMZ2V0V2FyZWhvdXNlAwUFd2hLZXkFCWxhbmRJbmRleAUKaW5mcmFMZXZlbAQHY3VyTG9mdAkAtQkCCQCRAwIFAndoBQl3aElkeExPRlQCAV8EBGN1ck8JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQdjdXJMb2Z0BQt2b2xPY2N1cGllZAQEY3VyRgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFB2N1ckxvZnQFB3ZvbEZyZWUECG5ld0ZvcnRzCQC1CQIFBHBsYW4CAV8EDyR0MDEwMzk3OTEwNDA5NAkBBWZvcnRCBgUMY3VycmVudEZvcnRzCQEOcHJvZFN0clRvQnl0ZXMBCQCRAwIFAndoBQl3aElkeFByb2QFBGN1ck8FBGN1ckYGBQNuaWwECXRlbXBQcm9kQggFDyR0MDEwMzk3OTEwNDA5NAJfMQQFdGVtcE8IBQ8kdDAxMDM5NzkxMDQwOTQCXzIEBXRlbXBGCAUPJHQwMTAzOTc5MTA0MDk0Al8zBA8kdDAxMDQwOTcxMDQxOTMJAQVmb3J0QgYFCG5ld0ZvcnRzBQl0ZW1wUHJvZEIFBXRlbXBPBQV0ZW1wRgcFCWR1Y2tTdGF0cwQIbmV3UHJvZEIIBQ8kdDAxMDQwOTcxMDQxOTMCXzEEBG5ld08IBQ8kdDAxMDQwOTcxMDQxOTMCXzIEBG5ld0YIBQ8kdDAxMDQwOTcxMDQxOTMCXzMECm5ld1Byb2RTdHIJAQ5ieXRlc1RvUHJvZFN0cgEFCG5ld1Byb2RCBApuZXdMb2Z0U3RyCQC5CQIJAMwIAgkAkQMCBQdjdXJMb2Z0BQl2b2xMb2NrZWQJAMwIAgkApAMBBQRuZXdPCQDMCAIJAKQDAQUEbmV3RgkAzAgCCQCRAwIFB2N1ckxvZnQFCHZvbFRvdGFsBQNuaWwCAV8JAJQKAgkAzggCCQDMCAIJAQtTdHJpbmdFbnRyeQIFB2ZvcnRLZXkFBHBsYW4JAMwIAgkBC1N0cmluZ0VudHJ5AgUFd2hLZXkJALoJAgkAzAgCCQCRAwIFAndoBQt3aElkeExldmVscwkAzAgCCQCRAwIFAndoBQh3aElkeFJlcwkAzAgCCQCRAwIFAndoBQh3aElkeE1hdAkAzAgCBQpuZXdQcm9kU3RyCQDMCAIFCm5ld0xvZnRTdHIFA25pbAIBOgUDbmlsBQ1wcm9sb2dBY3Rpb25zAAABaQETaW5pdER1Y2tUb3VyQXR0ZW1wdAELZHVja0Fzc2V0SWQDCQECIT0CCAUBaQZjYWxsZXIFEnRvdXJuYW1lbnRDb250cmFjdAkAAgECDUFjY2VzcyBkZW5pZWQECWtleUhlYWx0aAkBDWtleUR1Y2tIZWFsdGgBBQtkdWNrQXNzZXRJZAQFbWF4SFAJAQltYXhIZWFsdGgBCQELdmFsdWVPckVsc2UCCQCfCAEJAQxrZXlEdWNrTGV2ZWwBBQtkdWNrQXNzZXRJZAAABAljdXJIZWFsdGgJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJa2V5SGVhbHRoBQVtYXhIUAQJY3VyTG9jS2V5CQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQEC2N1ckxvY2F0aW9uCQELdmFsdWVPckVsc2UCCQCiCAEFCWN1ckxvY0tleQUPREVGQVVMVExPQ0FUSU9OBAZsYXN0SWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUSdG91cm5hbWVudENvbnRyYWN0BQ1sYXN0VG91cklkS2V5AAAEDHRvdXJMb2NhdGlvbgkArAICCQCkAwEFBmxhc3RJZAIEX1RfMAkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEOa2V5U2F2ZWRIZWFsdGgBBQtkdWNrQXNzZXRJZAUJY3VySGVhbHRoCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQlrZXlIZWFsdGgFBW1heEhQCQDMCAIJAQtTdHJpbmdFbnRyeQIJARBrZXlTYXZlZExvY2F0aW9uAQULZHVja0Fzc2V0SWQFC2N1ckxvY2F0aW9uCQDMCAIJAQtTdHJpbmdFbnRyeQIFCWN1ckxvY0tleQUMdG91ckxvY2F0aW9uBQNuaWwFDHRvdXJMb2NhdGlvbgFpAQxicmVha0F0dGVtcHQABA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBCQClCAEIBQFpBmNhbGxlcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAQJY3VyTG9jS2V5CQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQEC2N1ckxvY2F0aW9uCQELdmFsdWVPckVsc2UCCQCiCAEFCWN1ckxvY0tleQUPREVGQVVMVExPQ0FUSU9OAwkBAiE9AgkAkQMCCQC1CQIFC2N1ckxvY2F0aW9uAgFfBQpsb2NJZHhUeXBlAgFUCQACAQIiWW91ciBkdWNrIGlzIG5vdCBpbiB0aGUgdG91cm5hbWVudAQLc2F2ZWRIZWFsdGgJARFAZXh0ck5hdGl2ZSgxMDU1KQEJAQ5rZXlTYXZlZEhlYWx0aAEFC2R1Y2tBc3NldElkBA1zYXZlZExvY2F0aW9uCQERQGV4dHJOYXRpdmUoMTA1OCkBCQEQa2V5U2F2ZWRMb2NhdGlvbgEFC2R1Y2tBc3NldElkCQCUCgIJAM0IAgkAzQgCBQ1wcm9sb2dBY3Rpb25zCQEMSW50ZWdlckVudHJ5AgkBDWtleUR1Y2tIZWFsdGgBBQtkdWNrQXNzZXRJZAULc2F2ZWRIZWFsdGgJAQtTdHJpbmdFbnRyeQIFCWN1ckxvY0tleQUNc2F2ZWRMb2NhdGlvbgULY3VyTG9jYXRpb24BaQEWZXhpdFRvdXJuYW1lbnRJbnRlcm5hbAELZHVja0Fzc2V0SWQDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAg1BY2Nlc3MgZGVuaWVkBAtzYXZlZEhlYWx0aAkBEUBleHRyTmF0aXZlKDEwNTUpAQkBDmtleVNhdmVkSGVhbHRoAQULZHVja0Fzc2V0SWQEDXNhdmVkTG9jYXRpb24JARFAZXh0ck5hdGl2ZSgxMDU4KQEJARBrZXlTYXZlZExvY2F0aW9uAQULZHVja0Fzc2V0SWQJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBDWtleUR1Y2tIZWFsdGgBBQtkdWNrQXNzZXRJZAULc2F2ZWRIZWFsdGgJAMwIAgkBC1N0cmluZ0VudHJ5AgkBD2tleUR1Y2tMb2NhdGlvbgEFC2R1Y2tBc3NldElkBQ1zYXZlZExvY2F0aW9uBQNuaWwHAWkBFGV4aXREZWxpdmVyeUludGVybmFsAQtkdWNrQXNzZXRJZAMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECDUFjY2VzcyBkZW5pZWQEAWUJARJleGl0RGVsaXZlcnlDb21tb24EBQtkdWNrQXNzZXRJZAcAAAAACQCUCgIJAM4IAggFAWUCXzEIBQFlAl8yBwFpARBhdXRvRXhpdERlbGl2ZXJ5BAtkdWNrQXNzZXRJZAVuZXdIUAZyZWFzb24Fc2NvcmUDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAg1BY2Nlc3MgZGVuaWVkBAFlCQESZXhpdERlbGl2ZXJ5Q29tbW9uBAULZHVja0Fzc2V0SWQGBQVuZXdIUAUFc2NvcmUJAJQKAggFAWUCXzEJAJQKAggFAWUCXzMIBQFlAl80AWkBDnByZXBhcmVSb2JiZXJ5AgdtZXNzYWdlA3NpZwQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQEBIQEJAMQTAwUHbWVzc2FnZQUDc2lnBQNwdWIJAAIBAhhzaWduYXR1cmUgZG9lcyBub3QgbWF0Y2gDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAiJleGFjdGx5IDEgcGF5bWVudCBtdXN0IGJlIGF0dGFjaGVkBANwbXQJAJEDAggFAWkIcGF5bWVudHMAAAQGd2xnQW10CAUDcG10BmFtb3VudAMDCQEBIQEJAQlpc0RlZmluZWQBCAUDcG10B2Fzc2V0SWQGCQECIT0CCQEFdmFsdWUBCAUDcG10B2Fzc2V0SWQFCndsZ0Fzc2V0SWQJAAIBAhVXTEdPTEQgcGF5bWVudHMgb25seSEEBXBhcnRzCQC1CQIJALAJAQUHbWVzc2FnZQIBfAMJAQIhPQIJAJADAQUFcGFydHMAAgkAAgECFFdyb25nIG1lc3NhZ2UgZm9ybWF0BAtkdWNrQXNzZXRJZAkAkQMCBQVwYXJ0cwAAAwkBD2NoZWNrVG91cm5hbWVudAEFC2R1Y2tBc3NldElkCQACAQIecHJlcGFyZVJvYmJlcnlfY2hlY2tUb3VybmFtZW50AwkBDWNoZWNrRGVsaXZlcnkBBQtkdWNrQXNzZXRJZAkAAgECHHByZXBhcmVSb2JiZXJ5X2NoZWNrRGVsaXZlcnkEB3JvYkNvc3QICQEOZ2V0Um9iYmVyeURhdGECBQR0aGlzBQtkdWNrQXNzZXRJZAJfMQMJAGYCBQdyb2JDb3N0BQZ3bGdBbXQJAAIBCQCsAgIJAKwCAgkArAICAghQYXltZW50IAkApAMBBQZ3bGdBbXQCDCA8IHJlcXVpcmVkIAkApAMBBQdyb2JDb3N0BApjYW5kaWRhdGVzCQC1CQIJAJEDAgUFcGFydHMAAQIBXwQDbm93CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQJZHVja1N0YXRlCQELdmFsdWVPckVsc2UCCQCfCAEJARNrZXlEdWNrUm9iYmVyeVN0YXRlAQULZHVja0Fzc2V0SWQAAAQKbG9ja2VkTGFuZAkBC3ZhbHVlT3JFbHNlAgkAoggBCQETa2V5TG9ja2VkTGFuZEJ5RHVjawEFC2R1Y2tBc3NldElkAgAEB2xhbmRFVEEJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBEmtleUxhbmRDb29sZG93bkVUQQEFCmxvY2tlZExhbmQAAAMDCQECIT0CBQlkdWNrU3RhdGUFC2R1Y2tJZHhGcmVlCQBmAgUHbGFuZEVUQQUDbm93BwkAAgEJAKwCAgInWW91IGFscmVhZHkgc3RhcnRlZCByb2JiaW5nLCB3YWl0IHRpbGwgCQCkAwEFB2xhbmRFVEEKAQdjaGVja2VyAgNhY2MLbGFuZEFzc2V0SWQEBXN0YXRlCQELdmFsdWVPckVsc2UCCQCfCAEJARNrZXlMYW5kUm9iYmVyeVN0YXRlAQULbGFuZEFzc2V0SWQAAAQLY29vbGRvd25FVEEJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBEmtleUxhbmRDb29sZG93bkVUQQEFC2xhbmRBc3NldElkAAADCQBmAgUFc3RhdGUJAJADAQUQbGFuZFJvYkNvb2xkb3ducwkAAgECDUludmFsaWQgc3RhdGUDCQBmAgUDbm93BQtjb29sZG93bkVUQQQKc3Rha2VkVGltZQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFC2xhbmRBc3NldElkAAADCQBnAgAABQpzdGFrZWRUaW1lBQNhY2MEAWEJAQV2YWx1ZQEJAOwHAQkA2QQBBQtsYW5kQXNzZXRJZAQBZAkAtQkCCAUBYQtkZXNjcmlwdGlvbgIBXwQGcGllY2VzCQEPbnVtUGllY2VzQnlTaXplAQkAkQMCBQFkBQtyZWNMYW5kU2l6ZQQMcHJvZHVjdGl2aXR5CQEMYXBwbHlCb251c2VzAgULbGFuZEFzc2V0SWQFBnBpZWNlcwQJZGVsdGFUaW1lCQBlAgUDbm93BQpzdGFrZWRUaW1lBAhhdmFpbFJlcwkAawMFCWRlbHRhVGltZQkAaAIFDHByb2R1Y3Rpdml0eQUGcGllY2VzBQlEQVlNSUxMSVMDCQBmAgUOTUlOX1JFU19UT19ST0IFCGF2YWlsUmVzBQNhY2MJAM0IAgUDYWNjBQtsYW5kQXNzZXRJZAUDYWNjBAhmaWx0ZXJlZAoAAiRsBQpjYW5kaWRhdGVzCgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQdjaGVja2VyAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAwkAAAIJAJADAQUIZmlsdGVyZWQAAAkAAgECGU5vIGNhbmRpZGF0ZXMgZm9yIHJvYmJlcnkEBnJuZElkeAkBD2dldFJhbmRvbU51bWJlcgMJAJADAQUIZmlsdGVyZWQFBmhlaWdodAkAywECBQNzaWcIBQFpDXRyYW5zYWN0aW9uSWQEC2xhbmRBc3NldElkCQCRAwIFCGZpbHRlcmVkBQZybmRJZHgJAJQKAgkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQETa2V5TGFuZFJvYmJlcnlTdGF0ZQEFC2xhbmRBc3NldElkBQxyb2JJZHhMb2NrZWQJAMwIAgkBDEludGVnZXJFbnRyeQIJARJrZXlMYW5kQ29vbGRvd25FVEEBBQtsYW5kQXNzZXRJZAkAZAIFA25vdwkAkQMCBRBsYW5kUm9iQ29vbGRvd25zBQxyb2JJZHhMb2NrZWQJAMwIAgkBDEludGVnZXJFbnRyeQIJARNrZXlEdWNrUm9iYmVyeVN0YXRlAQULZHVja0Fzc2V0SWQFEGR1Y2tJZHhQcmVwYXJpbmcJAMwIAgkBC1N0cmluZ0VudHJ5AgkBE2tleUxvY2tlZExhbmRCeUR1Y2sBBQtkdWNrQXNzZXRJZAULbGFuZEFzc2V0SWQFA25pbAUNcHJvbG9nQWN0aW9ucwULbGFuZEFzc2V0SWQBaQEHcm9iTGFuZAIHbWVzc2FnZQNzaWcEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBASEBCQDEEwMFB21lc3NhZ2UFA3NpZwUDcHViCQACAQIYc2lnbmF0dXJlIGRvZXMgbm90IG1hdGNoBAh1c2VyQWRkcgkApQgBCAUBaQZjYWxsZXIEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUIdXNlckFkZHICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQEA25vdwgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAJQKAgkAzQgCBQ1wcm9sb2dBY3Rpb25zCQEMSW50ZWdlckVudHJ5AgkBGGtleUxhc3RSb2JiZXJ5VGltZUJ5RHVjawEFC2R1Y2tBc3NldElkBQNub3cAAAFpAQ5hY2NlcHREZWxpdmVyeQADCQEBIQEFEUtTX0FMTE9XX0RFTElWRVJZCQACAQIfRGVsaXZlcnkgZmVhdHVyZSBpcyB0dXJuZWQgb2ZmIQQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkECHVzZXJBZGRyCQClCAEIBQFpBmNhbGxlcgQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQh1c2VyQWRkcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAQJZnVuZFRvdGFsCQELdmFsdWVPckVsc2UCCQCaCAIFD2Vjb25vbXlDb250cmFjdAUPZGVsaXZlcnlGdW5kS2V5AAAEC2xvY2tlZFRvdGFsCQELdmFsdWVPckVsc2UCCQCaCAIFD2Vjb25vbXlDb250cmFjdAURZGVsaXZlcnlMb2NrZWRLZXkAAAMJAGYCBRVNSU5fVVNEVF9GRUVfREVMSVZFUlkJAGUCBQlmdW5kVG90YWwFC2xvY2tlZFRvdGFsCQACAQkArAICCQCsAgIJAKwCAgIgRGVsaXZlcnkgaXMgbm90IGF2YWlsYWJsZSwgZnVuZD0JAQpmaXhlZFBvaW50AgUJZnVuZFRvdGFsAAYCCSwgbG9ja2VkPQkBCmZpeGVkUG9pbnQCBQtsb2NrZWRUb3RhbAAGBANub3cIBQlsYXN0QmxvY2sJdGltZXN0YW1wBAhkZWxheUVUQQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEWa2V5RGVsaXZlcnlEZWxheUJ5RHVjawEFC2R1Y2tBc3NldElkAAADCQBmAgUIZGVsYXlFVEEFA25vdwkAAgEJAKwCAgIqRGVsaXZlcnkgaXMgZm9yYmlkZGVuIGZvciB5b3VyIGR1Y2sgdW50aWwgCQCkAwEFCGRlbGF5RVRBBAVjb3VudAkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEUa2V5VXNlckRlbGl2ZXJ5Q291bnQBBQh1c2VyQWRkcgAABAdsYXN0RGF5CQELdmFsdWVPckVsc2UCCQCfCAEJARZrZXlVc2VyTGFzdERlbGl2ZXJ5RGF5AQUIdXNlckFkZHIAAAQFdG9kYXkJAGkCBQNub3cFCURBWU1JTExJUwQFYWNyZXMJAQt2YWx1ZU9yRWxzZQIJAJoIAgUNYWNyZXNDb250cmFjdAkBGmtleUFjcmVzU3Rha2VkQW1vdW50QnlVc2VyAQUIdXNlckFkZHIAAAQRYWxsb3dlZERlbGl2ZXJpZXMJAGQCBRdBTExPV0VEX0ZSRUVfREVMSVZFUklFUwkAaQIFBWFjcmVzBRpBQ1JFU19GT1JfREVMSVZFUllfQVRURU1QVAMDCQBnAgUFY291bnQFEWFsbG93ZWREZWxpdmVyaWVzCQBnAgUHbGFzdERheQUFdG9kYXkHCQACAQkArAICCQCsAgICEVlvdSBhbHJlYWR5IHVzZWQgCQCkAwEFEWFsbG93ZWREZWxpdmVyaWVzAhwgZGVsaXZlcnkgYXR0ZW1wdHMgZm9yIHRvZGF5AwkBD2NoZWNrVG91cm5hbWVudAEFC2R1Y2tBc3NldElkCQACAQIeYWNjZXB0RGVsaXZlcnlfY2hlY2tUb3VybmFtZW50AwkBDWNoZWNrRGVsaXZlcnkBBQtkdWNrQXNzZXRJZAkAAgECHGFjY2VwdERlbGl2ZXJ5X2NoZWNrRGVsaXZlcnkEDm5ld0xvY2tlZFRvdGFsCQEFYXNJbnQBCQD8BwQFD2Vjb25vbXlDb250cmFjdAIUdXBkYXRlRGVsaXZlcnlMb2NrZWQJAMwIAgkAZAIFC2xvY2tlZFRvdGFsBRVNSU5fVVNEVF9GRUVfREVMSVZFUlkFA25pbAUDbmlsBAlrZXlIZWFsdGgJAQ1rZXlEdWNrSGVhbHRoAQULZHVja0Fzc2V0SWQEBW1heEhQCQEJbWF4SGVhbHRoAQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEMa2V5RHVja0xldmVsAQULZHVja0Fzc2V0SWQAAAQJY3VySGVhbHRoCQELdmFsdWVPckVsc2UCCQCfCAEFCWtleUhlYWx0aAUFbWF4SFAECWN1ckxvY0tleQkBD2tleUR1Y2tMb2NhdGlvbgEFC2R1Y2tBc3NldElkBAtjdXJMb2NhdGlvbgkBC3ZhbHVlT3JFbHNlAgkAoggBBQljdXJMb2NLZXkFD0RFRkFVTFRMT0NBVElPTgQQZGVsaXZlcnlMb2NhdGlvbgkArAICCQCkAwEFA25vdwIEX0RfMAkAlAoCCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIJAQ5rZXlTYXZlZEhlYWx0aAEFC2R1Y2tBc3NldElkBQljdXJIZWFsdGgJAMwIAgkBDEludGVnZXJFbnRyeQIFCWtleUhlYWx0aAUFbWF4SFAJAMwIAgkBC1N0cmluZ0VudHJ5AgkBEGtleVNhdmVkTG9jYXRpb24BBQtkdWNrQXNzZXRJZAULY3VyTG9jYXRpb24JAMwIAgkBC1N0cmluZ0VudHJ5AgUJY3VyTG9jS2V5BRBkZWxpdmVyeUxvY2F0aW9uBQNuaWwFDXByb2xvZ0FjdGlvbnMJAJQKAgUQZGVsaXZlcnlMb2NhdGlvbgUObmV3TG9ja2VkVG90YWwAwRIrtg==", "height": 2792789, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 9d2rSLYLDGdMMVmSniKuxYJJNP7L3wHvfzBsKHwcZkuz Next: AJWsqJF692chTzKrxu1vnN55pnoLTwjr66f4oDFWwuUw Diff:
OldNewDifferences
88 func c (d) = ("lastArbTimeUser_" + d)
99
1010
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
38-
39-let s = 2
11+func e (d) = ("acresStakedAmountByUser_" + d)
12+
13+
14+let f = 100000000
15+
16+let g = 3200
17+
18+let h = 4000
19+
20+let i = 3
21+
22+let j = 100000000
23+
24+let k = 400
25+
26+let l = ["Strength", "Accuracy", "Intellect", "Endurance", "Dexterity", "Level", "Health"]
27+
28+let m = 0
29+
30+let n = 1
31+
32+let o = 2
33+
34+let p = 3
35+
36+let q = 4
37+
38+let r = 0
39+
40+let s = 6
4041
4142 let t = 2
4243
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-
111-
112-let V = 10000
113-
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
44+let u = 2
45+
46+let v = 30
47+
48+let w = [0, 600000, 900000, 43200000, 21600000]
49+
50+let x = 20000000
51+
52+let y = 1
53+
54+let z = 0
55+
56+let A = 1
57+
58+func B (C) = ("duckHealth_" + C)
59+
60+
61+func D (C) = ("duckChars_" + C)
62+
63+
64+func E (C) = ("duckXP_" + C)
65+
66+
67+func F (C) = ("duckLevel_" + C)
68+
69+
70+func G (C) = ("duckFreePoints_" + C)
71+
72+
73+func H (C) = ("duckEquipment_" + C)
74+
75+
76+func I (d) = ("userXP_" + d)
77+
78+
79+func J (d) = ("userLevel_" + d)
80+
81+
82+func K (d) = ("userFreePoints_" + d)
83+
84+
85+func L (C) = ("savedHealth_" + C)
86+
87+
88+func M (C) = ("savedLocation_" + C)
89+
90+
91+func N (C) = ("duckBuffs_" + C)
92+
93+
94+func O (C) = ("lastRobberyTime_" + C)
95+
96+
97+func P (C) = ("lastRobberyCost_" + C)
98+
99+
100+func Q (R) = ("landRobberyState_" + R)
101+
102+
103+func S (R) = ("landCooldownETA_" + R)
104+
105+
106+func T (C) = ("duckRobberyState_" + C)
107+
108+
109+func U (C) = ("lockedLandByDuck_" + C)
110+
111+
112+func V (C) = ("deliveryDelayByDuck_" + C)
113+
114+
115+func W (d) = ("userDeliverycount_" + d)
116+
117+
118+func X (d) = ("userLastDeliveryDay_" + d)
119+
120+
121+let Y = 10000
122+
123+let Z = 10000
124+
125+let aa = 2000
126+
127+let ab = 100000
125128
126129 let ac = 1000000
127130
128-let ad = 1000000
131+let ad = 5000000
129132
130133 let ae = 10000
131134
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
206-
207-let aX = 10
208-
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
135+let af = 1000000
136+
137+let ag = 1000000
138+
139+let ah = 10000
140+
141+func ai (aj) = fraction(g, pow(aj, 4, h, 4, 4, DOWN), f)
142+
143+
144+func ak (al) = (100 + al)
145+
146+
147+func am (an,ao) = {
148+ let ap = ai(ao)
149+[ap, (i * (ap - an))]
150+ }
151+
152+
153+func aq (ar,C,as,at) = {
154+ let au = split(valueOrElse(getString(ar, D(C)), "0_0_0_0_0"), "_")
155+ let av = valueOrElse(getInteger(ar, F(C)), 0)
156+ let aw = valueOrElse(getInteger(ar, B(C)), ak(av))
157+ let ax = split(valueOrElse(getString(ar, N(C)), "0_0_0_0_0"), "_")
158+ ([parseIntValue(au[m]), parseIntValue(au[n]), parseIntValue(au[o]), parseIntValue(au[p]), parseIntValue(au[q]), av, aw] ++ (if (at)
159+ then [as, as, as, as, as]
160+ else [parseIntValue(ax[m]), parseIntValue(ax[n]), parseIntValue(ax[o]), parseIntValue(ax[p]), parseIntValue(ax[q])]))
161+ }
162+
163+
164+func ay (ar,C) = {
165+ let az = valueOrElse(getInteger(ar, P(C)), 0)
166+ let aA = valueOrElse(getInteger(ar, O(C)), 0)
167+ let aB = lastBlock.timestamp
168+ let aC = max([j, (az - (k * (aB - aA)))])
169+ let aD = valueOrElse(getInteger(ar, T(C)), 0)
170+ let aE = valueOrElse(getString(ar, U(C)), "")
171+ let aF = valueOrElse(getInteger(ar, S(aE)), 0)
172+ $Tuple5(aC, aA, aD, aE, aF)
173+ }
174+
175+
176+let aG = "LAND"
177+
178+let aH = "DUCK"
179+
180+let aI = "PRESALE"
181+
182+let aJ = 6
183+
184+let aK = 25
185+
186+let aL = 3456000
187+
188+let aM = 10000000000
189+
190+let aN = "Africa_F_Africa"
191+
192+let aO = 39637
193+
194+let aP = 10
195+
196+let aQ = 50000
197+
198+let aR = 600000
199+
200+let aS = 3
201+
202+let aT = 20000000
203+
204+let aU = ["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"]
205+
206+let aV = ["Americas", "Europe", "Asia", "Africa", "Oceania"]
207+
208+let aW = 10000000
209+
210+let aX = [15, 16, 17, 18, 19, 20]
211+
212+let aY = ["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_"]
213+
214+let aZ = 6
215+
216+let ba = 8
217+
218+let bb = 9
219+
220+let bc = 10
221+
222+let bd = 10
220223
221224 let be = 0
222225
226229
227230 let bh = 3
228231
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)
232+let bi = 4
233+
234+let bj = 0
235+
236+let bk = 1
237+
238+let bl = 2
239+
240+let bm = 3
241+
242+let bn = 0
243+
244+let bo = 1
245+
246+let bp = 2
247+
248+let bq = 3
249+
250+let br = 0
251+
252+let bs = 1
253+
254+let bt = 2
255+
256+func bu (bv) = ("no_" + bv)
257+
258+
259+func bw (bv) = ("lcna_" + bv)
260+
261+
262+func bx (bv) = ("st_" + bv)
263+
264+
265+func by (bz,bv) = makeString(["las", bz, bv], "_")
266+
267+
268+func bA (bB,bv,bC) = ((((("sttao_" + bB) + "_") + bv) + "_") + bC)
269+
270+
271+func bD (R) = ("wh_" + R)
272+
273+
274+func bE (bv) = ("infraLevel_" + bv)
275+
276+
277+func bF (R) = ("fortifications_" + R)
278+
279+
280+func bG (bv) = ("duckCustomNameByAssetId_" + bv)
281+
282+
283+func bH (d) = ("accountCustomNameByAddr_" + d)
284+
285+
286+func bI (d) = ("accRefBy_" + d)
287+
288+
289+func bJ (C) = ("onboardArtActivatedOnDuck_" + C)
290+
291+
292+func bK (d) = ("onboardArtActivatedDuckBy_" + d)
293+
294+
295+func bL (d) = ("accReferrals_" + d)
296+
297+
298+func bM (bv) = ("duckOwner_" + bv)
299+
300+
301+func bN (bC) = ("stakedDuckByOwner_" + bC)
302+
303+
304+func bO (C) = ("backPack_" + C)
305+
306+
307+func bP (C) = ("duckLocation_" + C)
308+
309+
310+func bQ (bR) = ("%s%s__userGwlReleaseTime__" + bR)
311+
312+
313+func bS () = "emergencyWarehouseProducts"
314+
315+
316+let bT = "deliveryFund"
317+
318+let bU = "deliveryLocked"
319+
320+let bV = "%s__lastTourId"
321+
322+func bW (bX) = ("%s%d__tourStaticData__" + toString(bX))
323+
324+
325+func bY (bX) = ("%s%d__tourDynamicData__" + toString(bX))
326+
327+
328+func bZ (bX,C) = makeString(["%s%d%s__bestResultByTourAndDuck", toString(bX), C], "__")
329+
330+
331+let ca = 0
332+
333+let cb = 1
334+
335+let cc = 6
336+
337+let cd = 1
338+
339+func ce (cf,bX) = {
340+ let cg = split(valueOrErrorMessage(getString(cf, bW(bX)), (("Error reading tournament " + toString(bX)) + " data")), "__")
341+ let ch = split_4C(valueOrErrorMessage(getString(cf, bY(bX)), (("Error reading tournament " + toString(bX)) + " data")), "__")
342+[cg, ch]
343+ }
344+
345+
346+func ci (cf,cj) = {
347+ let ck = valueOrElse(getInteger(cf, bV), 0)
348+ let cl = split(cj, "_")
349+ let aB = lastBlock.timestamp
350+ let cm = ce(cf, ck)
351+ let cg = cm[ca]
352+ let ch = cm[cb]
353+ if (if (if ((cl[bs] == "T"))
354+ then (parseIntValue(cl[br]) == ck)
342355 else false)
343- then (cc[bY] == "INPROGRESS")
356+ then (ch[cd] == "INPROGRESS")
344357 else false)
345- then (parseIntValue(cb[bX]) > ay)
358+ then (parseIntValue(cg[cc]) > aB)
346359 else false
347360 }
348361
349362
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 ((cj + aO) > ay)
363+func cn (cj) = {
364+ let cl = split(cj, "_")
365+ let aB = lastBlock.timestamp
366+ let co = parseIntValue(cl[br])
367+ let cp = parseIntValue(cl[bt])
368+ if (if ((cl[bs] == "D"))
369+ then ((co + aR) > aB)
357370 else false)
358- then (3 >= ck)
371+ then (3 >= cp)
359372 else false
360373 }
361374
362375
363-func cl (ce) = {
364- let cm = split(ce, "_")[bn]
365- if ((cm != "T"))
366- then (cm != "D")
376+func cq (cj) = {
377+ let cr = split(cj, "_")[bs]
378+ if ((cr != "T"))
379+ then (cr != "D")
367380 else false
368381 }
369382
370383
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"))
384+func cs (cf,cj) = {
385+ let ck = valueOrElse(getInteger(cf, bV), 0)
386+ let cl = split(cj, "_")
387+ let aB = lastBlock.timestamp
388+ let cm = ce(cf, ck)
389+ let cg = cm[ca]
390+ let ch = cm[cb]
391+ let cr = cl[bs]
392+ if ((cr == "D"))
380393 then true
381- else if (if (if ((cg[bn] == "T"))
382- then (parseIntValue(cg[bm]) == cf)
394+ else if (if (if ((cl[bs] == "T"))
395+ then (parseIntValue(cl[br]) == ck)
383396 else false)
384- then (cc[bY] == "INPROGRESS")
397+ then (ch[cd] == "INPROGRESS")
385398 else false)
386- then (parseIntValue(cb[bX]) > ay)
399+ then (parseIntValue(cg[cc]) > aB)
387400 else false
388401 }
389402
390403
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-
396-
397-let cu = false
398-
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))
404+func ct (cu) = (parseIntValue(cu[aZ]) * aW)
405+
406+
407+func cv (cw,cx,cy) = throw(((((("Cheat attempt: oldLoc=" + cw) + ", newLoc=") + cx) + ", case=") + toString(cy)))
408+
409+
410+let cz = false
411+
412+let cA = false
413+
414+let cB = true
415+
416+let cC = take(drop(this.bytes, 1), 1)
417+
418+let cD = {
419+ let cE = cC
420+ if ((base58'2W' == cE))
408421 then base58'9wc3LXNA4TEBsXyKtoLE9mrbDD7WMHXvXrCjZvabLAsi'
409- else if ((base58'2T' == cz))
422+ else if ((base58'2T' == cE))
410423 then base58'6mWwf9mZBjVgkC54idpyaZLQfAosD914wT8fGf2iiY63'
411424 else throw("Unknown chain")
412425 }
413426
414-let cA = {
415- let cz = cx
416- if ((base58'2W' == cz))
427+let cF = {
428+ let cE = cC
429+ if ((base58'2W' == cE))
417430 then "3PQCuvFbvh4LkPUnrnU1z3jnbA1p9m3WNhv"
418- else if ((base58'2T' == cz))
431+ else if ((base58'2T' == cE))
419432 then "3MumkGGztCKAXpWDqxkddofqXSUbqQkvSJy"
420433 else throw("Unknown chain")
421434 }
422435
423-let cB = {
424- let cz = cx
425- if ((base58'2W' == cz))
436+let cG = {
437+ let cE = cC
438+ if ((base58'2W' == cE))
426439 then 10000000000
427- else if ((base58'2T' == cz))
440+ else if ((base58'2T' == cE))
428441 then 100000000
429442 else throw("Unknown chain")
430443 }
431444
432-let cC = {
433- let cz = cx
434- if ((base58'2W' == cz))
445+let cH = {
446+ let cE = cC
447+ if ((base58'2W' == cE))
435448 then 86400000
436- else if ((base58'2T' == cz))
449+ else if ((base58'2T' == cE))
437450 then 60000
438451 else throw("Unknown chain")
439452 }
440453
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"))
454+let cI = "__"
455+
456+let cJ = 1000000
457+
458+let cK = 100000000
459+
460+let cL = 25
461+
462+let cM = 100
463+
464+let cN = 225
465+
466+let cO = 400
467+
468+let cP = 625
469+
470+let cQ = [0, 1, 2, 3, 4, 5]
471+
472+func cR (cS,cT) = valueOrErrorMessage(getString(cS, cT), makeString(["mandatory ", toString(cS), ".", cT, " is not defined"], ""))
473+
474+
475+let cU = 1
476+
477+let cV = 2
478+
479+let cW = 3
480+
481+let cX = 4
482+
483+let cY = 7
484+
485+let cZ = 8
486+
487+func da () = "%s__restConfig"
488+
489+
490+func db () = "%s__restAddr"
491+
492+
493+func dc (dd) = split_4C(cR(dd, da()), cI)
494+
495+
496+func de (df,dg) = valueOrErrorMessage(addressFromString(df[dg]), ("Rest cfg doesn't contain address at index " + toString(dg)))
497+
498+
499+let dh = addressFromStringValue(valueOrElse(getString(this, db()), cF))
500+
501+let df = dc(dh)
502+
503+let ar = de(df, cU)
504+
505+let di = de(df, cV)
506+
507+let dj = de(df, cW)
508+
509+let dk = de(df, cX)
510+
511+let dl = de(df, cY)
512+
513+let dm = de(df, cZ)
514+
515+let dn = 0
516+
517+let do = 1
518+
519+let dp = 2
520+
521+let dq = 3
522+
523+let dr = "wlg_assetId"
524+
525+let ds = valueOrErrorMessage(getBinary(dk, dr), "WLGOLD is not issued yet")
526+
527+let dt = "acresAssetId"
528+
529+let du = valueOrErrorMessage(getBinary(dm, dt), "ACRES is not issued yet")
530+
531+let dv = 2
532+
533+func dw (cS) = ("finishBlockForAddr_" + cS)
534+
535+
536+func dx () = "resTypesProportions"
537+
538+
539+func dy (dz) = ("resTypesByContinent_" + dz)
540+
541+
542+func dA (bC) = ("stakedLandsByOwner_" + bC)
543+
544+
545+func dB (bC) = ("stakedPiecesByOwner_" + bC)
546+
547+
548+func dC (dD) = {
549+ let cE = dD
550+ if ($isInstanceOf(cE, "String"))
538551 then {
539- let dz = cz
540- dz
552+ let dE = cE
553+ dE
541554 }
542555 else throw("fail to cast into String")
543556 }
544557
545558
546-func dA (dy) = {
547- let cz = dy
548- if ($isInstanceOf(cz, "Int"))
559+func dF (dD) = {
560+ let cE = dD
561+ if ($isInstanceOf(cE, "Int"))
549562 then {
550- let dB = cz
551- dB
563+ let dG = cE
564+ dG
552565 }
553566 else throw("fail to cast into Int")
554567 }
555568
556569
557-func dC (dy) = {
558- let cz = dy
559- if ($isInstanceOf(cz, "List[Any]"))
570+func dH (dD) = {
571+ let cE = dD
572+ if ($isInstanceOf(cE, "List[Any]"))
560573 then {
561- let dD = cz
562- dD
574+ let dI = cE
575+ dI
563576 }
564577 else throw("fail to cast into List[Any]")
565578 }
566579
567580
568-func dE (dy) = {
569- let cz = dy
570- if ($isInstanceOf(cz, "Boolean"))
581+func dJ (dD) = {
582+ let cE = dD
583+ if ($isInstanceOf(cE, "Boolean"))
571584 then {
572- let dz = cz
573- dz
585+ let dE = cE
586+ dE
574587 }
575588 else throw("fail to cast into Boolean")
576589 }
577590
578591
579-func dF (dG) = {
580- let cz = dG
581- if ($isInstanceOf(cz, "(String, Int)"))
592+func dK (dL) = {
593+ let cE = dL
594+ if ($isInstanceOf(cE, "(String, Int)"))
582595 then {
583- let dH = cz
584- dH
596+ let dM = cE
597+ dM
585598 }
586599 else throw("fail to cast into (String, Int)")
587600 }
588601
589602
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
603+func dN (dO) = {
604+ let cE = dO
605+ if (("S" == cE))
606+ then cL
607+ else if (("M" == cE))
608+ then cM
609+ else if (("L" == cE))
610+ then cN
611+ else if (("XL" == cE))
612+ then cO
613+ else if (("XXL" == cE))
614+ then cP
602615 else throw("Unknown land size")
603616 }
604617
605618
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))
619+func dP (dE) = isDefined(parseInt(dE))
620+
621+
622+func dQ () = "contractsBlocked"
623+
624+
625+func dR (d) = ("lastTxIdByUser_" + d)
626+
627+
628+func dS (dL,dT) = {
629+ let dU = pow(10, 0, dT, 0, 0, DOWN)
630+ let dV = toString((dL % dU))
631+ let dW = drop(toString(dU), (1 + size(dV)))
632+ (((toString((dL / dU)) + ".") + dW) + dV)
633+ }
634+
635+
636+func dX (dY,dZ,ea) = {
637+ let eb = value(blockInfoByHeight(dZ))
638+ let ec = sha256((value(eb.vrf) + ea))
639+ (toInt(ec) % dY)
640+ }
641+
642+
643+let ed = {
644+ let cE = cC
645+ if ((base58'2W' == cE))
633646 then addressFromStringValue("3PEktVux2RhchSN63DsDo4b4mz4QqzKSeDv")
634- else if ((base58'2T' == cz))
647+ else if ((base58'2T' == cE))
635648 then this
636649 else throw("Unknown chain")
637650 }
638651
639-let dZ = {
640- let cz = cx
641- if ((base58'2W' == cz))
652+let ee = {
653+ let cE = cC
654+ if ((base58'2W' == cE))
642655 then addressFromStringValue("3PDVuU45H7Eh5dmtNbnRNRStGwULA7NY6Hb")
643- else if ((base58'2T' == cz))
656+ else if ((base58'2T' == cE))
644657 then this
645658 else throw("Unknown chain")
646659 }
647660
648-let ea = {
649- let cz = cx
650- if ((base58'2W' == cz))
651- then if (cu)
661+let ef = {
662+ let cE = cC
663+ if ((base58'2W' == cE))
664+ then if (cz)
652665 then base58'CWsMtTZC5BjjoL4Q1ayW4Wwb1ehGACQB6DrKyPgotKfm'
653666 else base58'6LfPuKJjLgekmncBhMg2LZyMTNVzZBccXR28ySXm9uXD'
654- else if ((base58'2T' == cz))
667+ else if ((base58'2T' == cE))
655668 then base58'6LfPuKJjLgekmncBhMg2LZyMTNVzZBccXR28ySXm9uXD'
656669 else throw("Unknown chain")
657670 }
658671
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))
672+let eg = base64'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=='
673+
674+let eh = 300000
675+
676+let ei = 5000000
677+
678+let ej = 50
679+
680+let ek = 10000000
681+
682+let el = {
683+ let cE = cC
684+ if ((base58'2W' == cE))
672685 then 252289527462
673- else if ((base58'2T' == cz))
686+ else if ((base58'2T' == cE))
674687 then 2522895274
675688 else throw("Unknown chain")
676689 }
677690
678-let eh = {
679- let cz = cx
680- if ((base58'2W' == cz))
691+let em = {
692+ let cE = cC
693+ if ((base58'2W' == cE))
681694 then 250000000
682- else if ((base58'2T' == cz))
695+ else if ((base58'2T' == cE))
683696 then 250000000
684697 else throw("Unknown chain")
685698 }
686699
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))
700+let en = 2500000000
701+
702+let eo = toBigInt(5)
703+
704+let ep = toBigInt(20)
705+
706+let eq = toBigInt((20 * 20))
707+
708+let er = toBigInt(((20 * 20) * 20))
709+
710+let es = toBigInt((((20 * 20) * 20) * 20))
711+
712+let et = toBigInt(((((20 * 20) * 20) * 20) * 20))
713+
714+let eu = 500
715+
716+func ev () = "nextLandNum"
717+
718+
719+func ew (ex) = ("lcn_" + ex)
720+
721+
722+func ey (ez) = ("la_" + ez)
723+
724+
725+func eA (bv,bC) = ((("ilao_" + bv) + "_") + bC)
726+
727+
728+func eB (ez) = ("lo_" + ez)
729+
730+
731+func eC (ex) = ("duckByCustomName_" + ex)
732+
733+
734+func eD (ex) = ("accountByCustomName_" + ex)
735+
736+
737+func eE () = "oldiesList"
738+
739+
740+let eF = 0
741+
742+let eG = 1
743+
744+let eH = 2
745+
746+let eI = 0
747+
748+let eJ = 5
749+
750+let eK = 6
751+
752+let eL = 7
753+
754+func eM (ez,dO) = ((aG + ez) + dO)
755+
756+
757+func eN (eO,eP) = {
758+ let eQ = if ((eO >= 0))
759+ then (((eO + eP) - 1) / eP)
760+ else -((((-(eO) + eP) - 1) / eP))
761+ (eQ * cK)
762+ }
763+
764+
765+func eR (eS,eT) = {
766+ let eU = (((((eT[0] + eT[1]) + eT[2]) + eT[3]) + eT[4]) + eT[5])
767+ if ((0 >= eU))
755768 then throw("Zero weights sum")
756769 else {
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
770+ let eV = fraction(eS, cJ, eU)
771+ func eW (eX,eY) = (eX :+ fraction(eY, eV, cJ))
772+
773+ let eZ = eT
774+ let fa = size(eZ)
775+ let fb = nil
776+ func fc (fd,fe) = if ((fe >= fa))
777+ then fd
778+ else eW(fd, eZ[fe])
779+
780+ func ff (fd,fe) = if ((fe >= fa))
781+ then fd
769782 else throw("List size exceeds 6")
770783
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))
784+ ff(fc(fc(fc(fc(fc(fc(fb, 0), 1), 2), 3), 4), 5), 6)
785+ }
786+ }
787+
788+
789+func fg (eS) = {
790+ let fh = split(value(getString(dx())), "_")
791+ if ((size(fh) != aJ))
779792 then throw("Wrong proportions data")
780793 else {
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))
794+ let fi = [parseIntValue(fh[0]), parseIntValue(fh[1]), parseIntValue(fh[2]), parseIntValue(fh[3]), parseIntValue(fh[4]), parseIntValue(fh[5])]
795+ eR(eS, fi)
796+ }
797+ }
798+
799+
800+func fj (fk,fl,fm) = {
801+ let fn = fg(fm)
802+ func fo (eX,dg) = {
803+ let fp = (parseIntValue(fl[dg]) - fn[dg])
804+ if ((0 > fp))
805+ then throw(((((("Not enough material idx=" + toString(dg)) + ", you have ") + fl[dg]) + ", but need ") + toString(fn[dg])))
806+ else (eX :+ toString(fp))
794807 }
795808
796- if (ff)
809+ if (fk)
797810 then {
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
811+ let eZ = cQ
812+ let fa = size(eZ)
813+ let fb = nil
814+ func fc (fd,fe) = if ((fe >= fa))
815+ then fd
816+ else fo(fd, eZ[fe])
817+
818+ func ff (fd,fe) = if ((fe >= fa))
819+ then fd
807820 else throw("List size exceeds 6")
808821
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)
822+ ff(fc(fc(fc(fc(fc(fc(fb, 0), 1), 2), 3), 4), 5), 6)
823+ }
824+ else fl
825+ }
826+
827+
828+func fq (fr,fs) = if ((fs == ""))
829+ then $Tuple2(fr, false)
817830 else {
818- func fo (eS,fp) = {
819- let fq = split(fp, ",")
820- if ((size(fq) != 2))
831+ func ft (eX,fu) = {
832+ let fv = split(fu, ",")
833+ if ((size(fv) != 2))
821834 then throw("Incorrect format, should be index,amount")
822835 else {
823- let db = parseIntValue(fq[0])
824- if (if ((0 > db))
836+ let dg = parseIntValue(fv[0])
837+ if (if ((0 > dg))
825838 then true
826- else (db >= size(aT)))
839+ else (dg >= size(aY)))
827840 then throw("Unknown product idx")
828841 else {
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"))
842+ let fw = parseIntValue(fv[1])
843+ let fx = split(eX._1, (fv[0] + ":"))
844+ if ((size(fx) != 2))
845+ then throw((("You don't have " + aU[dg]) + " equipped"))
833846 else {
834- let ft = fs[1]
835- let fu = if (dK(take(drop(ft, 1), 1)))
847+ let fy = fx[1]
848+ let fz = if (dP(take(drop(fy, 1), 1)))
836849 then 2
837850 else 1
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)
851+ let fA = parseIntValue(take(fy, fz))
852+ let fB = drop(fy, fz)
853+ let fC = if ((fA >= fw))
854+ then (fA - fw)
855+ else throw(((((("You equipped " + toString(fA)) + " of ") + aU[dg]) + ", but tried to use ") + toString(fw)))
856+ $Tuple2(((((fx[0] + fv[0]) + ":") + toString(fC)) + fB), if (eX._2)
844857 then true
845- else if (if ((db >= 6))
846- then (8 >= db)
858+ else if (if ((dg >= 6))
859+ then (8 >= dg)
847860 else false)
848- then (fx == 0)
861+ then (fC == 0)
849862 else false)
850863 }
851864 }
852865 }
853866 }
854867
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
868+ let eZ = split(fs, "_")
869+ let fa = size(eZ)
870+ let fb = $Tuple2(fr, false)
871+ func fc (fd,fe) = if ((fe >= fa))
872+ then fd
873+ else ft(fd, eZ[fe])
874+
875+ func ff (fd,fe) = if ((fe >= fa))
876+ then fd
864877 else throw("List size exceeds 10")
865878
866- fa(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
879+ ff(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fb, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
867880 }
868881
869882
870-func fy (fz) = {
871- let fA = if ((fz == ""))
883+func fD (fE) = {
884+ let fF = if ((fE == ""))
872885 then nil
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])
886+ else split_4C(fE, "_")
887+ func fG (eX,cu) = {
888+ let fH = (size(eX) / 8)
889+ let fA = if ((size(fF) > fH))
890+ then parseIntValue(fF[fH])
878891 else 0
879- (eS + toBytes(fv))
892+ (eX + toBytes(fA))
880893 }
881894
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
895+ let eZ = aY
896+ let fa = size(eZ)
897+ let fb = base58''
898+ func fc (fd,fe) = if ((fe >= fa))
899+ then fd
900+ else fG(fd, eZ[fe])
901+
902+ func ff (fd,fe) = if ((fe >= fa))
903+ then fd
891904 else throw("List size exceeds 50")
892905
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)))
906+ ff(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fb, 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)
907+ }
908+
909+
910+func fI (fJ) = {
911+ func fK (eX,cu) = {
912+ let fH = size(eX)
913+ let fL = take(drop(fJ, (8 * fH)), 8)
914+ (eX :+ toString(toInt(fL)))
902915 }
903916
904917 makeString_2C({
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
918+ let eZ = aY
919+ let fa = size(eZ)
920+ let fb = nil
921+ func fc (fd,fe) = if ((fe >= fa))
922+ then fd
923+ else fK(fd, eZ[fe])
924+
925+ func ff (fd,fe) = if ((fe >= fa))
926+ then fd
914927 else throw("List size exceeds 50")
915928
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)
929+ ff(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fb, 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)
917930 }, "_")
918931 }
919932
920933
921-func fH (fI,fJ) = {
922- func fK (eS,fC) = {
923- let fL = if ((size(fI) > (7 + fC)))
924- then fI[(7 + fC)]
934+func fM (fN,fO) = {
935+ func fP (eX,fH) = {
936+ let fQ = if ((size(fN) > (7 + fH)))
937+ then fN[(7 + fH)]
925938 else 0
926- if ((parseIntValue(fJ[fC]) > (fI[fC] + fL)))
927- then throw(("Requirement not satisfied: " + k[fC]))
939+ if ((parseIntValue(fO[fH]) > (fN[fH] + fQ)))
940+ then throw(("Requirement not satisfied: " + l[fH]))
928941 else true
929942 }
930943
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
944+ let eZ = [0, 1, 2, 3, 4, 5, 6]
945+ let fa = size(eZ)
946+ let fb = false
947+ func fc (fd,fe) = if ((fe >= fa))
948+ then fd
949+ else fP(fd, eZ[fe])
950+
951+ func ff (fd,fe) = if ((fe >= fa))
952+ then fd
940953 else throw("List size exceeds 7")
941954
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))
955+ ff(fc(fc(fc(fc(fc(fc(fc(fb, 0), 1), 2), 3), 4), 5), 6), 7)
956+ }
957+
958+
959+func fR (fS,fF,fT,fN,fU,fV) = {
960+ let fv = split(fS, ":")
961+ if ((size(fv) != 2))
949962 then throw("Incorrect format, should be index:amount")
950- else if (if (!(fO))
951- then (size(fq[0]) != 2)
963+ else if (if (!(fT))
964+ then (size(fv[0]) != 2)
952965 else false)
953966 then throw("Product idx should be 2 digits, zero padded")
954967 else {
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))
968+ let fW = parseIntValue(fv[0])
969+ let fX = parseIntValue(fv[1])
970+ if (!(containsElement(aX, fW)))
971+ then throw((("Product '" + aU[fW]) + "' cannot be used for land defense"))
972+ else if ((0 > fX))
960973 then throw("Count can't be negative")
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)
974+ else if ((fX > v))
975+ then throw(((("Can't put more than " + toString(v)) + " of ") + aU[fW]))
976+ else if ((fX == 0))
977+ then $Tuple3(fF, fU, fV)
965978 else {
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)
979+ let fY = take(fF, (8 * fW))
980+ let fA = toInt(take(drop(fF, (8 * fW)), 8))
981+ let fB = drop(fF, (8 * (fW + 1)))
982+ let cu = split(aY[fW], "_")
983+ if (if (!(fT))
984+ then (fX > fA)
972985 else false)
973- then throw(((((("You have " + toString(fv)) + " of ") + aP[fR]) + ", but tried to use ") + toString(fS)))
986+ then throw(((((("You have " + toString(fA)) + " of ") + aU[fW]) + ", but tried to use ") + toString(fX)))
974987 else {
975- let fx = if (if (!(fO))
976- then fH(fI, split(cp[aW], ","))
988+ let fC = if (if (!(fT))
989+ then fM(fN, split(cu[bb], ","))
977990 else false)
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))
991+ then (fA - fX)
992+ else (fA + fX)
993+ let fZ = (eN(fC, bd) - eN(fA, bd))
994+ $Tuple3(((fY + toBytes(fC)) + fB), (fU + fZ), (fV - fZ))
982995 }
983996 }
984997 }
985998 }
986999
9871000
988-func fV (fN,fA,fO,fW,fX,fY,fI) = {
989- let fq = split(fN, ":")
990- if ((size(fq) != 2))
1001+func ga (fS,fF,fT,gb,gc,gd,fN) = {
1002+ let fv = split(fS, ":")
1003+ if ((size(fv) != 2))
9911004 then throw("Incorrect format, should be index:amount")
992- else if (if (!(fO))
993- then (size(fq[0]) != 2)
1005+ else if (if (!(fT))
1006+ then (size(fv[0]) != 2)
9941007 else false)
9951008 then throw("Product idx should be 2 digits, zero padded")
9961009 else {
997- let fR = parseIntValue(fq[0])
998- let fS = parseIntValue(fq[1])
999- if (if ((0 > fR))
1010+ let fW = parseIntValue(fv[0])
1011+ let fX = parseIntValue(fv[1])
1012+ if (if ((0 > fW))
10001013 then true
1001- else (fR >= size(aT)))
1014+ else (fW >= size(aY)))
10021015 then throw("Unknown product idx")
1003- else if ((0 > fS))
1016+ else if ((0 > fX))
10041017 then throw("Count can't be negative")
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)
1018+ else if ((fX > v))
1019+ then throw(((("Can't put more than " + toString(v)) + " of ") + aU[fW]))
1020+ else if ((fX == 0))
1021+ then $Tuple2(fF, false)
10091022 else {
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)
1023+ let fY = take(fF, (8 * fW))
1024+ let fA = toInt(take(drop(fF, (8 * fW)), 8))
1025+ let fB = drop(fF, (8 * (fW + 1)))
1026+ let cu = split(aY[fW], "_")
1027+ if (if (!(fT))
1028+ then (fX > fA)
10161029 else false)
1017- then throw(((((("You have " + toString(fv)) + " of ") + aP[fR]) + ", but tried to use ") + toString(fS)))
1030+ then throw(((((("You have " + toString(fA)) + " of ") + aU[fW]) + ", but tried to use ") + toString(fX)))
10181031 else {
1019- let fZ = if (if (!(fO))
1020- then fH(fI, split(cp[aW], ","))
1032+ let ge = if (if (!(fT))
1033+ then fM(fN, split(cu[bb], ","))
10211034 else false)
10221035 then {
1023- let ga = cp[aX]
1024- if ((ga == ""))
1036+ let gf = cu[bc]
1037+ if ((gf == ""))
10251038 then throw("Item cannot be equipped")
10261039 else {
1027- let gb = parseIntValue(ga)
1028- let gc = (gb / 100)
1029- if ((fW != gc))
1040+ let gg = parseIntValue(gf)
1041+ let gh = (gg / 100)
1042+ if ((gb != gh))
10301043 then throw("Segment incompatible")
10311044 else {
1032- let gd = ((gb % 100) / 10)
1033- if ((fX != gd))
1045+ let gi = ((gg % 100) / 10)
1046+ if ((gc != gi))
10341047 then throw("Slot incompatible")
10351048 else {
1036- let ge = (gb % 10)
1037- if (if ((fY != 0))
1038- then (ge > 1)
1049+ let gj = (gg % 10)
1050+ if (if ((gd != 0))
1051+ then (gj > 1)
10391052 else false)
10401053 then throw("Big items should occupy slot 0")
1041- else (ge > 1)
1054+ else (gj > 1)
10421055 }
10431056 }
10441057 }
10451058 }
10461059 else false
1047- $Tuple2(((fT + toBytes((fv + (if (fO)
1048- then fS
1049- else -(fS))))) + fw), fZ)
1060+ $Tuple2(((fY + toBytes((fA + (if (fT)
1061+ then fX
1062+ else -(fX))))) + fB), ge)
10501063 }
10511064 }
10521065 }
10531066 }
10541067
10551068
1056-func gf (gg,gh,fO,fW,fX,gi) = if ((gg != ""))
1069+func gk (gl,gm,fT,gb,gc,gn) = if ((gl != ""))
10571070 then {
1058- let gj = split(gg, ",")
1059- if ((size(gj) > t))
1071+ let go = split(gl, ",")
1072+ if ((size(go) > u))
10601073 then throw("Wrong slots format")
10611074 else {
1062- let gk = gj[0]
1063- let gl = if ((size(gj) > 1))
1064- then gj[1]
1075+ let gp = go[0]
1076+ let gq = if ((size(go) > 1))
1077+ then go[1]
10651078 else ""
1066- if (if ((gk == ""))
1067- then (gl == "")
1079+ if (if ((gp == ""))
1080+ then (gq == "")
10681081 else false)
1069- then gh
1082+ then gm
10701083 else {
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)
1084+ let gr = if ((gp != ""))
1085+ then ga(gp, gm, fT, gb, gc, 0, gn)
1086+ else $Tuple2(gm, false)
1087+ if ((gq != ""))
1088+ then if (gr._2)
10761089 then throw("Big item already occupies slot")
1077- else fV(gl, gm._1, fO, fW, fX, 1, gi)._1
1078- else gm._1
1090+ else ga(gq, gr._1, fT, gb, gc, 1, gn)._1
1091+ else gr._1
10791092 }
10801093 }
10811094 }
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))
1095+ else gm
1096+
1097+
1098+func gs (gt,gu,fT,gn) = {
1099+ func gb (eX,gv) = {
1100+ let fH = eX._1
1101+ let gc = split(gv, ";")
1102+ if ((size(gc) != t))
10901103 then throw("Wrong segment format")
10911104 else {
1092- let gr = fX[0]
1093- let gs = fX[1]
1094- if (if ((gr == ""))
1095- then (gs == "")
1105+ let gw = gc[0]
1106+ let gx = gc[1]
1107+ if (if ((gw == ""))
1108+ then (gx == "")
10961109 else false)
1097- then $Tuple2((fC + 1), eS._2)
1110+ then $Tuple2((fH + 1), eX._2)
10981111 else {
1099- let gt = gf(gr, eS._2, fO, fC, 0, gi)
1100- $Tuple2((fC + 1), gf(gs, gt, fO, fC, 1, gi))
1112+ let gy = gk(gw, eX._2, fT, fH, 0, gn)
1113+ $Tuple2((fH + 1), gk(gx, gy, fT, fH, 1, gn))
11011114 }
11021115 }
11031116 }
11041117
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
1118+( let eZ = gt
1119+ let fa = size(eZ)
1120+ let fb = $Tuple2(0, gu)
1121+ func fc (fd,fe) = if ((fe >= fa))
1122+ then fd
1123+ else gb(fd, eZ[fe])
1124+
1125+ func ff (fd,fe) = if ((fe >= fa))
1126+ then fd
11141127 else throw("List size exceeds 6")
11151128
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)))
1129+ ff(fc(fc(fc(fc(fc(fc(fb, 0), 1), 2), 3), 4), 5), 6))._2
1130+ }
1131+
1132+
1133+func gz (gt,gu,fU,fV,fT,fN) = if ((3 > size(gt)))
11211134 then throw("At least duck, mines and traps parts are required")
11221135 else {
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)
1136+ func gb (eX,gv) = {
1137+ let fH = eX._1
1138+ if ((fH == 0))
1139+ then $Tuple4((fH + 1), eX._2, eX._3, eX._4)
11271140 else {
1128- let gv = fM(gq, eS._2, fO, fI, eS._3, eS._4)
1129- $Tuple4((fC + 1), gv._1, gv._2, gv._3)
1141+ let gA = fR(gv, eX._2, fT, fN, eX._3, eX._4)
1142+ $Tuple4((fH + 1), gA._1, gA._2, gA._3)
11301143 }
11311144 }
11321145
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
1146+ let gB = {
1147+ let eZ = gt
1148+ let fa = size(eZ)
1149+ let fb = $Tuple4(0, gu, fU, fV)
1150+ func fc (fd,fe) = if ((fe >= fa))
1151+ then fd
1152+ else gb(fd, eZ[fe])
1153+
1154+ func ff (fd,fe) = if ((fe >= fa))
1155+ then fd
11431156 else throw("List size exceeds 10")
11441157
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)
1158+ ff(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fb, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
1159+ }
1160+ $Tuple3(gB._2, gB._3, gB._4)
11481161 }
11491162
11501163
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 == ""))
1164+func gC (C) = {
1165+ let gD = H(C)
1166+ let gE = split(valueOrElse(getString(gD), ",;,_,;,_,;,_,;,_,;,_,;,"), "_")
1167+ let gF = gs(gE, eg, true, nil)
1168+ let gG = split(gE[r], ";")[1]
1169+ let as = if ((gG == ""))
11571170 then 0
11581171 else {
1159- let gC = split(gB, ",")[0]
1160- if ((gC == ""))
1172+ let gH = split(gG, ",")[0]
1173+ if ((gH == ""))
11611174 then 0
11621175 else {
1163- let fN = split(gC, ":")
1164- let db = fN[0]
1165- let gD = fN[1]
1166- if (if (if (if (if ((db == "06"))
1176+ let fS = split(gH, ":")
1177+ let dg = fS[0]
1178+ let gI = fS[1]
1179+ if (if (if (if (if ((dg == "06"))
11671180 then true
1168- else (db == "07"))
1181+ else (dg == "07"))
11691182 then true
1170- else (db == "08"))
1171- then (gD != "")
1183+ else (dg == "08"))
1184+ then (gI != "")
11721185 else false)
1173- then (parseIntValue(gD) > 0)
1186+ then (parseIntValue(gI) > 0)
11741187 else false)
1175- then parseIntValue(split(aT[parseIntValue(db)], "_")[aV])
1188+ then parseIntValue(split(aY[parseIntValue(dg)], "_")[ba])
11761189 else 0
11771190 }
11781191 }
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))
1192+ let gn = aq(this, C, as, true)
1193+ let gJ = gs(gE, gF, false, gn)
1194+ (gJ == gJ)
1195+ }
1196+
1197+
1198+func gK (gL,gM,gN,gO) = if ((size(gL) != aJ))
11861199 then throw("Wrong proportions data")
11871200 else {
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
1201+ func gP (eX,gQ) = {
1202+ let fp = (parseIntValue(gL[gQ]) + ((gO * gM[gQ]) * gN))
1203+ if ((0 > fp))
1204+ then throw(((((((("Panic! Pieces of type=" + toString(gQ)) + ", sign=") + toString(gO)) + ", terrainCounts[i]=") + toString(gM[gQ])) + ", landSizeIndex=") + toString(gN)))
1205+ else (eX :+ toString(fp))
1206+ }
1207+
1208+ let eZ = cQ
1209+ let fa = size(eZ)
1210+ let fb = nil
1211+ func fc (fd,fe) = if ((fe >= fa))
1212+ then fd
1213+ else gP(fd, eZ[fe])
1214+
1215+ func ff (fd,fe) = if ((fe >= fa))
1216+ then fd
12041217 else throw("List size exceeds 6")
12051218
1206- fa(eX(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5), 6)
1219+ ff(fc(fc(fc(fc(fc(fc(fb, 0), 1), 2), 3), 4), 5), 6)
12071220 }
12081221
12091222
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)))
1223+func gR (gM,gN,gO) = {
1224+ let gL = split(valueOrElse(getString(dx()), "0_0_0_0_0_0"), "_")
1225+ makeString(gK(gL, gM, gN, gO), "_")
1226+ }
1227+
1228+
1229+func gS (gT) = [(size(split(gT, "A")) - 1), (size(split(gT, "B")) - 1), (size(split(gT, "C")) - 1), (size(split(gT, "D")) - 1), (size(split(gT, "E")) - 1), (size(split(gT, "F")) - 1)]
1230+
1231+
1232+func gU (gV,gM,gW,gN,gX) = {
1233+ func gY (eX,gQ) = {
1234+ let gZ = ((fraction(gW, gX, a) * gM[gQ]) * gN)
1235+ (eX :+ toString((parseIntValue(gV[gQ]) + gZ)))
12231236 }
12241237
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
1238+ let fi = {
1239+ let eZ = cQ
1240+ let fa = size(eZ)
1241+ let fb = nil
1242+ func fc (fd,fe) = if ((fe >= fa))
1243+ then fd
1244+ else gY(fd, eZ[fe])
1245+
1246+ func ff (fd,fe) = if ((fe >= fa))
1247+ then fd
12351248 else throw("List size exceeds 6")
12361249
1237- fa(eX(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5), 6)
1250+ ff(fc(fc(fc(fc(fc(fc(fb, 0), 1), 2), 3), 4), 5), 6)
12381251 }
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))
1252+ makeString(fi, "_")
1253+ }
1254+
1255+
1256+func ha (gM,gW,gN,gX) = {
1257+ func gY (eX,gQ) = {
1258+ let gZ = ((fraction(gW, gX, a) * gM[gQ]) * gN)
1259+ $Tuple2((eX._1 :+ gZ), (eX._2 + gZ))
12471260 }
12481261
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
1262+ let eZ = cQ
1263+ let fa = size(eZ)
1264+ let fb = $Tuple2(nil, 0)
1265+ func fc (fd,fe) = if ((fe >= fa))
1266+ then fd
1267+ else gY(fd, eZ[fe])
1268+
1269+ func ff (fd,fe) = if ((fe >= fa))
1270+ then fd
12581271 else throw("List size exceeds 6")
12591272
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))
1273+ ff(fc(fc(fc(fc(fc(fc(fb, 0), 1), 2), 3), 4), 5), 6)
1274+ }
1275+
1276+
1277+func hb (hc,hd,he,hf) = {
1278+ let hg = he._1
1279+ let hh = he._2
1280+ if ((hh == 0))
1281+ then $Tuple2(makeString(hc, "_"), makeString(hd, "_"))
1282+ else if ((hf >= hh))
12701283 then {
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
1284+ func hi (eX,gQ) = (eX :+ toString((parseIntValue(hc[gQ]) + hg[gQ])))
1285+
1286+ let fi = {
1287+ let eZ = cQ
1288+ let fa = size(eZ)
1289+ let fb = nil
1290+ func fc (fd,fe) = if ((fe >= fa))
1291+ then fd
1292+ else hi(fd, eZ[fe])
1293+
1294+ func ff (fd,fe) = if ((fe >= fa))
1295+ then fd
12831296 else throw("List size exceeds 6")
12841297
1285- fa(eX(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5), 6)
1298+ ff(fc(fc(fc(fc(fc(fc(fb, 0), 1), 2), 3), 4), 5), 6)
12861299 }
1287- $Tuple2(makeString(fd, "_"), makeString(gY, "_"))
1300+ $Tuple2(makeString(fi, "_"), makeString(hd, "_"))
12881301 }
12891302 else {
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))))
1303+ func hj (eX,gQ) = {
1304+ let hk = fraction(hg[gQ], hf, hh)
1305+ $Tuple2((eX._1 :+ toString((parseIntValue(hc[gQ]) + hk))), (eX._2 :+ toString(((parseIntValue(hd[gQ]) + hg[gQ]) - hk))))
12931306 }
12941307
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
1308+ let fi = {
1309+ let eZ = cQ
1310+ let fa = size(eZ)
1311+ let fb = $Tuple2(nil, nil)
1312+ func fc (fd,fe) = if ((fe >= fa))
1313+ then fd
1314+ else hj(fd, eZ[fe])
1315+
1316+ func ff (fd,fe) = if ((fe >= fa))
1317+ then fd
13051318 else throw("List size exceeds 6")
13061319
1307- fa(eX(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5), 6)
1320+ ff(fc(fc(fc(fc(fc(fc(fb, 0), 1), 2), 3), 4), 5), 6)
13081321 }
1309- $Tuple2(makeString(fd._1, "_"), makeString(fd._2, "_"))
1322+ $Tuple2(makeString(fi._1, "_"), makeString(fi._2, "_"))
13101323 }
13111324 }
13121325
13131326
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))
1327+func hl (hm) = if ((hm >= toBigInt(0)))
1328+ then hm
1329+ else -(hm)
1330+
1331+
1332+let hn = [[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]]
1333+
1334+func ho (dG,hp) = {
1335+ let hq = toInt((dG % ep))
1336+ let hr = if ((hp[0] > hq))
13241337 then "A"
1325- else if ((hk[1] > hl))
1338+ else if ((hp[1] > hq))
13261339 then "B"
1327- else if ((hk[2] > hl))
1340+ else if ((hp[2] > hq))
13281341 then "C"
1329- else if ((hk[3] > hl))
1342+ else if ((hp[3] > hq))
13301343 then "D"
1331- else if ((hk[4] > hl))
1344+ else if ((hp[4] > hq))
13321345 then "E"
13331346 else "F"
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
1347+ hr
1348+ }
1349+
1350+
1351+func hs (ht,hu) = {
1352+ let hv = hn[hu]
1353+ func hw (eX,eY) = $Tuple2((((((eX._1 + ho(eX._2, hv)) + ho((eX._2 / ep), hv)) + ho((eX._2 / eq), hv)) + ho((eX._2 / er), hv)) + ho((eX._2 / es), hv)), (eX._2 / et))
1354+
1355+ let gB = {
1356+ let eZ = [1, 2, 3, 4, 5]
1357+ let fa = size(eZ)
1358+ let fb = $Tuple2("", (ht / eo))
1359+ func fc (fd,fe) = if ((fe >= fa))
1360+ then fd
1361+ else hw(fd, eZ[fe])
1362+
1363+ func ff (fd,fe) = if ((fe >= fa))
1364+ then fd
13521365 else throw("List size exceeds 5")
13531366
1354- fa(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5)
1367+ ff(fc(fc(fc(fc(fc(fb, 0), 1), 2), 3), 4), 5)
13551368 }
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))
1369+ gB._1
1370+ }
1371+
1372+
1373+let hx = [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]
1374+
1375+let hy = ["A", "B", "C", "D", "E", "F"]
1376+
1377+func hz (hA,gN) = {
1378+ func hB (eX,dE) = {
1379+ let fH = eX._2
1380+ let hC = parseIntValue(dE)
1381+ let hm = if ((hC == 0))
13691382 then 0
1370- else if ((hx >= (4 * gI)))
1371- then (hx / gI)
1372- else if ((hx > (3 * gI)))
1383+ else if ((hC >= (4 * gN)))
1384+ then (hC / gN)
1385+ else if ((hC > (3 * gN)))
13731386 then 3
1374- else (((hx - 1) / gI) + 1)
1375- $Tuple3((eS._1 :+ hh), (eS._2 + 1), (eS._3 + hh))
1387+ else (((hC - 1) / gN) + 1)
1388+ $Tuple3((eX._1 :+ hm), (eX._2 + 1), (eX._3 + hm))
13761389 }
13771390
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
1391+ let gB = {
1392+ let eZ = hA
1393+ let fa = size(eZ)
1394+ let fb = $Tuple3(nil, 0, 0)
1395+ func fc (fd,fe) = if ((fe >= fa))
1396+ then fd
1397+ else hB(fd, eZ[fe])
1398+
1399+ func ff (fd,fe) = if ((fe >= fa))
1400+ then fd
13881401 else throw("List size exceeds 6")
13891402
1390- fa(eX(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5), 6)
1403+ ff(fc(fc(fc(fc(fc(fc(fb, 0), 1), 2), 3), 4), 5), 6)
13911404 }
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))
1405+ let hD = gB._1
1406+ let hE = value(indexOf(hD, max(hD)))
1407+ let hF = (gB._3 - 25)
1408+ func hG (eX,dg) = {
1409+ let dL = if ((dg == hE))
1410+ then (hD[dg] - hF)
1411+ else hD[dg]
1412+ let dW = if ((dL == 0))
14001413 then nil
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
1414+ else split(drop(toString(pow(10, 0, dL, 0, 0, DOWN)), 1), "")
1415+ let gg = hy[dg]
1416+ func hH (hI,hJ) = (hI :+ gg)
1417+
1418+ let hK = {
1419+ let eZ = dW
1420+ let fa = size(eZ)
1421+ let fb = nil
1422+ func hL (fd,fe) = if ((fe >= fa))
1423+ then fd
1424+ else hH(fd, eZ[fe])
1425+
1426+ func hM (fd,fe) = if ((fe >= fa))
1427+ then fd
14151428 else throw("List size exceeds 25")
14161429
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)
1430+ hM(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(fb, 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)
1431+ }
1432+ (eX ++ hK)
14201433 }
14211434
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
1435+ let fi = {
1436+ let eZ = cQ
1437+ let fa = size(eZ)
1438+ let fb = nil
1439+ func hL (fd,fe) = if ((fe >= fa))
1440+ then fd
1441+ else hG(fd, eZ[fe])
1442+
1443+ func hM (fd,fe) = if ((fe >= fa))
1444+ then fd
14321445 else throw("List size exceeds 6")
14331446
1434- hH(hG(hG(hG(hG(hG(hG(eW, 0), 1), 2), 3), 4), 5), 6)
1447+ hM(hL(hL(hL(hL(hL(hL(fb, 0), 1), 2), 3), 4), 5), 6)
14351448 }
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
1449+ func hN (eX,fH) = (eX + fi[fH])
1450+
1451+ let eZ = hx
1452+ let fa = size(eZ)
1453+ let fb = ""
1454+ func hO (fd,fe) = if ((fe >= fa))
1455+ then fd
1456+ else hN(fd, eZ[fe])
1457+
1458+ func hP (fd,fe) = if ((fe >= fa))
1459+ then fd
14471460 else throw("List size exceeds 25")
14481461
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)))
1462+ hP(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(fb, 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)
1463+ }
1464+
1465+
1466+func hQ (hR) = {
1467+ let gA = split(valueOrElse(getString(hR), "0:0_0_0_0_0_0:0_0_0_0_0_0:"), ":")
1468+[toString(valueOrElse(parseInt(gA[bn]), 0)), if ((size(split(gA[bo], "_")) == aJ))
1469+ then gA[bo]
1470+ else "0_0_0_0_0_0", if ((size(split(gA[bp], "_")) == aJ))
1471+ then gA[bp]
1472+ else "0_0_0_0_0_0", gA[bq]]
1473+ }
1474+
1475+
1476+func hS (hT) = {
1477+ let fv = split(hT, "_")
1478+ ((aM * (parseIntValue(fv[1]) + 1)) * parseIntValue(fv[0]))
1479+ }
1480+
1481+
1482+func hU (hV) = {
1483+ let hW = hV[bh]
1484+ func hX (eX,hY) = (eX + parseIntValue(hY))
1485+
1486+ func hZ (eX,hY) = {
1487+ let dg = eX._1
1488+ let eQ = (((parseIntValue(hY) + bd) - 1) / bd)
1489+ $Tuple2((dg + 1), (eX._2 + (eQ * cK)))
14771490 }
14781491
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
1492+ let ia = {
1493+ let eZ = split(hV[bf], "_")
1494+ let fa = size(eZ)
1495+ let fb = 0
1496+ func fc (fd,fe) = if ((fe >= fa))
1497+ then fd
1498+ else hX(fd, eZ[fe])
1499+
1500+ func ff (fd,fe) = if ((fe >= fa))
1501+ then fd
14891502 else throw("List size exceeds 6")
14901503
1491- fa(eX(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5), 6)
1504+ ff(fc(fc(fc(fc(fc(fc(fb, 0), 1), 2), 3), 4), 5), 6)
14921505 }
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
1506+ let ib = {
1507+ let eZ = split(hV[bg], "_")
1508+ let fa = size(eZ)
1509+ let fb = 0
1510+ func hL (fd,fe) = if ((fe >= fa))
1511+ then fd
1512+ else hX(fd, eZ[fe])
1513+
1514+ func hM (fd,fe) = if ((fe >= fa))
1515+ then fd
15031516 else throw("List size exceeds 6")
15041517
1505- hH(hG(hG(hG(hG(hG(hG(eW, 0), 1), 2), 3), 4), 5), 6)
1518+ hM(hL(hL(hL(hL(hL(hL(fb, 0), 1), 2), 3), 4), 5), 6)
15061519 }
1507- let hX = if ((hR == ""))
1520+ let ic = if ((hW == ""))
15081521 then 0
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
1522+ else ( let eZ = split_4C(hW, "_")
1523+ let fa = size(eZ)
1524+ let fb = $Tuple2(0, 0)
1525+ func hO (fd,fe) = if ((fe >= fa))
1526+ then fd
1527+ else hZ(fd, eZ[fe])
1528+
1529+ func hP (fd,fe) = if ((fe >= fa))
1530+ then fd
15181531 else throw("List size exceeds 50")
15191532
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)], "_")
1533+ hP(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(fb, 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
1534+ ((ia + ib) + ic)
1535+ }
1536+
1537+
1538+func id (ie,if,ig) = {
1539+ let hT = ((toString(if) + "_") + toString(ig))
1540+ let ih = hS(hT)
1541+ let ii = valueOrElse(getString(ie), (hT + ":0_0_0_0_0_0:0_0_0_0_0_0::0"))
1542+ let ij = split_4C(ii, ":")
1543+ let ik = hU(ij)
1544+ let il = if ((5 > size(ij)))
1545+ then makeString(["0", toString(ik), toString((ih - ik)), toString(ih)], "_")
15331546 else {
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))
1547+ let im = split(ij[bi], "_")
1548+ let in = parseIntValue(im[bj])
1549+ let io = if ((size(im) > 1))
1550+ then parseIntValue(im[bk])
1551+ else ik
1552+ makeString([toString(in), toString(io), toString(((ih - in) - io)), toString(ih)], "_")
1553+ }
1554+[ij[be], if ((size(split(ij[bf], "_")) == aJ))
1555+ then ij[bf]
1556+ else "0_0_0_0_0_0", if ((size(split(ij[bg], "_")) == aJ))
1557+ then ij[bg]
1558+ else "0_0_0_0_0_0", ij[bh], il]
1559+ }
1560+
1561+
1562+func ip (hV) = {
1563+ let iq = hU(hV)
1564+ let ir = parseIntValue(split(hV[bi], "_")[bj])
1565+ ((hS(hV[be]) - iq) - ir)
1566+ }
1567+
1568+
1569+func is (it,hV,iu) = if ((size(it) != 3))
15571570 then throw("cargoListStr should contain exactly 2 ':' separators")
15581571 else {
1559- let iq = split(io[0], "_")
1560- let ir = split(io[1], "_")
1561- let is = if ((io[2] == ""))
1572+ let iv = split(it[0], "_")
1573+ let iw = split(it[1], "_")
1574+ let ix = if ((it[2] == ""))
15621575 then nil
1563- else split_4C(io[2], "_")
1564- if ((size(iq) != aG))
1576+ else split_4C(it[2], "_")
1577+ if ((size(iv) != aJ))
15651578 then throw("All 6 resources should be passed")
1566- else if ((size(ir) != aG))
1579+ else if ((size(iw) != aJ))
15671580 then throw("All 6 materials should be passed")
15681581 else {
1569- let ha = ik(hQ)
1570- let it = split(hQ[ba], "_")
1571- let iu = split(hQ[bb], "_")
1572- let iv = if ((hQ[bc] == ""))
1582+ let hf = ip(hV)
1583+ let iy = split(hV[bf], "_")
1584+ let iz = split(hV[bg], "_")
1585+ let iA = if ((hV[bh] == ""))
15731586 then nil
1574- else split_4C(hQ[bc], "_")
1575- let gY = split(ip[bj], "_")
1576- let iw = split(ip[bk], "_")
1577- let ix = if ((ip[bl] == ""))
1587+ else split_4C(hV[bh], "_")
1588+ let hd = split(iu[bo], "_")
1589+ let iB = split(iu[bp], "_")
1590+ let iC = if ((iu[bq] == ""))
15781591 then nil
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))
1592+ else split_4C(iu[bq], "_")
1593+ func iD (eX,hY) = {
1594+ let gQ = eX._1
1595+ let iE = parseIntValue(hY)
1596+ let iF = parseIntValue(iy[gQ])
1597+ let iG = parseIntValue(hd[gQ])
1598+ if ((iE == 0))
1599+ then $Tuple4((gQ + 1), (eX._2 :+ iy[gQ]), (eX._3 :+ hd[gQ]), eX._4)
1600+ else if ((iE > 0))
1601+ then if ((iE > iG))
1602+ then throw((((("Attempt to take " + hY) + " from backpack, but only ") + toString(iG)) + " available"))
1603+ else $Tuple4((gQ + 1), (eX._2 :+ toString((iF + iE))), (eX._3 :+ toString((iG - iE))), (eX._4 + iE))
1604+ else if ((-(iE) > iF))
1605+ then throw((((("Attempt to take " + toString(-(iE))) + " from warehouse, but only ") + toString(iF)) + " available"))
1606+ else $Tuple4((gQ + 1), (eX._2 :+ toString((iF + iE))), (eX._3 :+ toString((iG - iE))), (eX._4 + iE))
15941607 }
15951608
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
1609+ let fi = {
1610+ let eZ = iv
1611+ let fa = size(eZ)
1612+ let fb = $Tuple4(0, nil, nil, 0)
1613+ func fc (fd,fe) = if ((fe >= fa))
1614+ then fd
1615+ else iD(fd, eZ[fe])
1616+
1617+ func ff (fd,fe) = if ((fe >= fa))
1618+ then fd
16061619 else throw("List size exceeds 6")
16071620
1608- fa(eX(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5), 6)
1621+ ff(fc(fc(fc(fc(fc(fc(fb, 0), 1), 2), 3), 4), 5), 6)
16091622 }
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))
1623+ func iH (eX,hY) = {
1624+ let gQ = eX._1
1625+ let iE = parseIntValue(hY)
1626+ let iI = parseIntValue(iz[gQ])
1627+ let iJ = parseIntValue(iB[gQ])
1628+ if ((iE == 0))
1629+ then $Tuple4((gQ + 1), (eX._2 :+ iz[gQ]), (eX._3 :+ iB[gQ]), eX._4)
1630+ else if ((iE > 0))
1631+ then if ((iE > iJ))
1632+ then throw((((("Attempt to take " + hY) + " from backpack, but only ") + toString(iJ)) + " available"))
1633+ else $Tuple4((gQ + 1), (eX._2 :+ toString((iI + iE))), (eX._3 :+ toString((iJ - iE))), (eX._4 + iE))
1634+ else if ((-(iE) > iI))
1635+ then throw((((("Attempt to take " + toString(-(iE))) + " from warehouse, but only ") + toString(iI)) + " available"))
1636+ else $Tuple4((gQ + 1), (eX._2 :+ toString((iI + iE))), (eX._3 :+ toString((iJ - iE))), (eX._4 + iE))
16241637 }
16251638
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
1639+ let gw = {
1640+ let eZ = iw
1641+ let fa = size(eZ)
1642+ let fb = $Tuple4(0, nil, nil, fi._4)
1643+ func hL (fd,fe) = if ((fe >= fa))
1644+ then fd
1645+ else iH(fd, eZ[fe])
1646+
1647+ func hM (fd,fe) = if ((fe >= fa))
1648+ then fd
16361649 else throw("List size exceeds 6")
16371650
1638- hH(hG(hG(hG(hG(hG(hG(eW, 0), 1), 2), 3), 4), 5), 6)
1651+ hM(hL(hL(hL(hL(hL(hL(fb, 0), 1), 2), 3), 4), 5), 6)
16391652 }
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])
1653+ func iK (eX,hY) = {
1654+ let gQ = eX._1
1655+ let iE = parseIntValue(hY)
1656+ let iL = if ((size(iA) > gQ))
1657+ then parseIntValue(iA[gQ])
16451658 else 0
1646- let iH = if ((size(ix) > gL))
1647- then parseIntValue(ix[gL])
1659+ let iM = if ((size(iC) > gQ))
1660+ then parseIntValue(iC[gQ])
16481661 else 0
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"))
1662+ if ((iE == 0))
1663+ then $Tuple4((gQ + 1), (eX._2 :+ toString(iL)), (eX._3 :+ toString(iM)), eX._4)
1664+ else if ((iE > 0))
1665+ then if ((iE > iM))
1666+ then throw((((("Attempt to take " + hY) + " from backpack, but only ") + toString(iM)) + " available"))
16541667 else {
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))
1668+ let fZ = (eN((iL + iE), bd) - eN(iL, bd))
1669+ $Tuple4((gQ + 1), (eX._2 :+ toString((iL + iE))), (eX._3 :+ toString((iM - iE))), (eX._4 + fZ))
16571670 }
1658- else if ((-(iz) > iG))
1659- then throw((((("Attempt to take " + toString(-(iz))) + " from warehouse, but only ") + toString(iG)) + " available"))
1671+ else if ((-(iE) > iL))
1672+ then throw((((("Attempt to take " + toString(-(iE))) + " from warehouse, but only ") + toString(iL)) + " available"))
16601673 else {
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))
1674+ let fZ = (eN((iL + iE), bd) - eN(iL, bd))
1675+ $Tuple4((gQ + 1), (eX._2 :+ toString((iL + iE))), (eX._3 :+ toString((iM - iE))), (eX._4 + fZ))
16631676 }
16641677 }
16651678
1666- let gv = if ((size(is) != 0))
1679+ let gA = if ((size(ix) != 0))
16671680 then {
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
1681+ let eZ = ix
1682+ let fa = size(eZ)
1683+ let fb = $Tuple4(0, nil, nil, gw._4)
1684+ func hO (fd,fe) = if ((fe >= fa))
1685+ then fd
1686+ else iK(fd, eZ[fe])
1687+
1688+ func hP (fd,fe) = if ((fe >= fa))
1689+ then fd
16771690 else throw("List size exceeds 50")
16781691
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)
1692+ hP(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(fb, 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)
16801693 }
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)
1694+ else $Tuple4(0, iA, iC, gw._4)
1695+ let iN = gA._4
1696+ if ((iN > hf))
1697+ then throw((((("Attempt to put total " + toString(iN)) + " stuff, but only ") + toString(hf)) + " warehouse space left"))
1698+ else $Tuple7(makeString(fi._2, "_"), makeString(gw._2, "_"), makeString_2C(gA._2, "_"), makeString(fi._3, "_"), makeString(gw._3, "_"), makeString_2C(gA._3, "_"), iN)
16861699 }
16871700 }
16881701
16891702
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)))
1703+func iO (iP,iQ) = {
1704+ let bR = toString(iP)
1705+ let iR = hl(toBigInt(iQ))
1706+ let iS = valueOrElse(getInteger(ev()), (eu + 1))
1707+ let ez = toString(iS)
1708+ let hu = toInt((iR % eo))
1709+ let gT = hs(iR, hu)
1710+ let dz = aV[hu]
1711+ let iT = Issue(eM(ez, "S"), makeString([ez, "S", gT, dz], "_"), 1, 0, false)
1712+ let bv = calculateAssetId(iT)
1713+ let iU = toBase58String(bv)
1714+ $Tuple2([IntegerEntry(ev(), (iS + 1)), iT, StringEntry(ey(ez), iU), StringEntry(bu(iU), bR), StringEntry(eB(ez), bR), IntegerEntry(bE(iU), 0), IntegerEntry(eA(iU, bR), 0), ScriptTransfer(iP, 1, bv)], $Tuple2(iU, dz))
1715+ }
1716+
1717+
1718+func iV (bR,iW,iX) = if (!(sigVerify_8Kb(iW, iX, ef)))
17061719 then throw("signature does not match")
17071720 else {
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)))
1721+ let fv = split_4C(toUtf8String(iW), ";")
1722+ let iY = split_4C(fv[0], "|")
1723+ let iZ = split(iY[eI], "_")
1724+ let ja = parseIntValue(iZ[0])
1725+ let jb = parseIntValue(iZ[1])
1726+ let jc = split(fv[1], ":")
1727+ let jd = jc[0]
1728+ let je = parseIntValue(iY[eJ])
1729+ if (if ((je > (lastBlock.timestamp + eh)))
17171730 then true
1718- else ((lastBlock.timestamp - ec) > iZ))
1719- then throw(((("signature outdated: logTime=" + toString(iZ)) + ", bcTime=") + toString(lastBlock.timestamp)))
1731+ else ((lastBlock.timestamp - eh) > je))
1732+ then throw(((("signature outdated: logTime=" + toString(je)) + ", bcTime=") + toString(lastBlock.timestamp)))
17201733 else {
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))
1734+ let jf = jc[1]
1735+ let jg = valueOrElse(getString(dR(bR)), "")
1736+ if ((jg != jf))
1737+ then throw(((("Tx ids don't match! In state: " + jg) + ", in msg: ") + jf))
17251738 else {
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))
1739+ let C = valueOrErrorMessage(getString(bN(bR)), "You don't have a duck staked")
1740+ let jh = B(C)
1741+ let ji = ak(valueOrElse(getInteger(F(C)), 0))
1742+ let jj = valueOrElse(getInteger(jh), ji)
1743+ if ((jj != ja))
1744+ then throw(((("oldHealth=" + toString(jj)) + " from state does not match one from flight log=") + toString(ja)))
1745+ else if ((0 >= ja))
17331746 then throw("You can't fly with zero health")
1734- else if (!(gx(B)))
1747+ else if (!(gC(C)))
17351748 then throw("Equipment incompatible")
17361749 else {
1737- let jf = if ((size(iT) > eF))
1738- then iT[eF]
1750+ let jk = if ((size(iY) > eK))
1751+ then iY[eK]
17391752 else ""
1740- let jg = if ((size(iT) > eG))
1741- then iT[eG]
1753+ let jl = if ((size(iY) > eL))
1754+ then iY[eL]
17421755 else ""
1743- let jh = if (if ((iW > 0))
1744- then (jf == "$")
1756+ let jm = if (if ((jb > 0))
1757+ then (jk == "$")
17451758 else false)
1746- then dA(invoke(dc, "sendUsdtPrize", [bM], nil))
1759+ then dF(invoke(dh, "sendUsdtPrize", [bR], nil))
17471760 else 0
1748- $Tuple5(iW, B, jh, iY, jg)
1761+ $Tuple5(jb, C, jm, jd, jl)
17491762 }
17501763 }
17511764 }
17521765 }
17531766
17541767
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)), ""))
1768+func jn (R,jo) = {
1769+ let ig = valueOrElse(getInteger(bE(R)), 0)
1770+ let jp = valueOrElse(getInteger(by(aI, R)), 0)
1771+ let jq = (ig / 6)
1772+ let jr = (ig / 7)
1773+ ((aL + fraction(aL, ((ig + jq) + (2 * jr)), 5)) + fraction(aL, jp, (jo * 5)))
1774+ }
1775+
1776+
1777+func js (d,jt,ju) = {
1778+ let jv = if ((jt == eF))
1779+ then $Tuple2(ju, valueOrElse(getString(bN(d)), ""))
17671780 else {
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"))
1781+ let C = valueOrErrorMessage(getString(bN(d)), "You don't have a duck staked")
1782+ let jw = valueOrElse(getString(bP(C)), aN)
1783+ let cl = split(value(jw), "_")
1784+ if ((cl[bs] != "L"))
1785+ then throw((("Duck location type is " + cl[bs]) + ", but should be L"))
1786+ else $Tuple2(cl[bt], C)
1787+ }
1788+ let R = jv._1
1789+ let jx = jv._2
1790+ let jy = value(assetInfo(fromBase58String(R)))
1791+ let jz = bx(R)
1792+ let jA = valueOrErrorMessage(getInteger(jz), (("Land " + jy.name) + " is not staked"))
1793+ let jB = valueOrErrorMessage(getString(bu(R)), (("NFT " + jy.name) + " is orphaned"))
1794+ if ((jB != d))
1795+ then throw((aG + " is not yours"))
17831796 else {
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))
1797+ let jC = split(jy.description, "_")
1798+ $Tuple4(jx, R, jC, jA)
1799+ }
1800+ }
1801+
1802+
1803+func jD (d,eO,jt,ju) = if ((0 > eO))
17911804 then throw("Negative amount")
17921805 else {
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)))
1806+ let gg = js(d, jt, ju)
1807+ let dO = gg._3[do]
1808+ let gM = gS(gg._3[dp])
1809+ let gW = (lastBlock.timestamp - gg._4)
1810+ if ((0 > gW))
1811+ then throw(((("Saved timestamp is in future, saved = " + toString(gg._4)) + ", current = ") + toString(lastBlock.timestamp)))
17991812 else {
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)))
1813+ let jo = dN(dO)
1814+ let jE = jn(gg._2, jo)
1815+ let jF = fraction(gW, (jE * jo), a)
1816+ if ((eO > jF))
1817+ then throw(((("Not enough resources, available = " + toString(jF)) + ", requested = ") + toString(eO)))
18051818 else {
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)
1819+ let jG = fraction((jF - eO), a, (jE * jo))
1820+ let jH = (lastBlock.timestamp - jG)
1821+ let if = (jo / cL)
1822+ let he = ha(gM, (gW - jG), if, jE)
1823+ let ie = bD(gg._2)
1824+ let ig = valueOrElse(getInteger(bE(gg._2)), 0)
1825+ let hV = id(ie, if, ig)
1826+ let im = split(hV[bi], "_")
1827+ let hf = parseIntValue(im[bl])
1828+ if (if ((jt == eF))
1829+ then (eO > hf)
18171830 else false)
1818- then throw((("Only " + toString(ha)) + " space left in warehouse"))
1831+ then throw((("Only " + toString(hf)) + " space left in warehouse"))
18191832 else {
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]))
1833+ let hR = bO(gg._1)
1834+ let iu = hQ(hR)
1835+ let hd = split(iu[bo], "_")
1836+ let hc = split(hV[bf], "_")
1837+ let jI = if ((jt == eF))
1838+ then $Tuple4(gU(hc, gM, (gW - jG), if, jE), iu[bo], (parseIntValue(im[bk]) + he._2), (parseIntValue(im[bl]) - he._2))
1839+ else if ((jt == eG))
1840+ then $Tuple4(hV[bf], gU(hd, gM, (gW - jG), if, jE), parseIntValue(im[bk]), parseIntValue(im[bl]))
18281841 else {
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))
1842+ let jJ = hb(hc, hd, he, hf)
1843+ let jK = min([parseIntValue(im[bl]), he._2])
1844+ $Tuple4(jJ._1, jJ._2, (parseIntValue(im[bk]) + jK), (parseIntValue(im[bl]) - jK))
18321845 }
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]], "_")])
1846+ let jL = jI._1
1847+ let jM = jI._2
1848+ let jN = jI._3
1849+ let jO = jI._4
1850+ $Tuple5([IntegerEntry(bx(gg._2), jH), IntegerEntry(bA(aG, gg._2, d), jH)], hR, [iu[bn], jM, iu[bp], iu[bq]], ie, [hV[be], jL, hV[bg], hV[bh], makeString([im[bj], toString(jN), toString(jO), im[bm]], "_")])
18381851 }
18391852 }
18401853 }
18411854 }
18421855
18431856
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)
1857+func jP (d,R,jo,jt) = {
1858+ let jz = bx(R)
1859+ let jA = value(getInteger(jz))
1860+ let jF = (fraction((lastBlock.timestamp - jA), jn(R, jo), a) * jo)
1861+ jD(d, jF, jt, R)
1862+ }
1863+
1864+
1865+func jQ (fk,iP,jR,R) = {
1866+ let d = toString(iP)
1867+ let gg = js(d, eH, R)
1868+ let jo = dN(gg._3[do])
1869+ let jS = bE(gg._2)
1870+ let jT = valueOrElse(getInteger(jS), 0)
1871+ if (if (!(cA))
1872+ then (jT >= 3)
18601873 else false)
18611874 then throw("Currently max infrastructure level = 3")
18621875 else {
1863- let jP = ((sqrt(jj, 0, 0, DOWN) / 5) + 2)
1864- let am = (jO + 1)
1865- if (if (cv)
1866- then (am > jP)
1876+ let jU = ((sqrt(jo, 0, 0, DOWN) / 5) + 2)
1877+ let ap = (jT + 1)
1878+ if (if (cA)
1879+ then (ap > jU)
18671880 else false)
1868- then throw(("Currently max infrastructure level = " + toString(jP)))
1881+ then throw(("Currently max infrastructure level = " + toString(jU)))
18691882 else {
1870- let jQ = fraction(ef, (jj * am), cG)
1871- if (if (!(ff))
1872- then (jM != jQ)
1883+ let jV = fraction(ek, (jo * ap), cL)
1884+ if (if (!(fk))
1885+ then (jR != jV)
18731886 else false)
1874- then throw(("Payment attached should be " + toString(jQ)))
1887+ then throw(("Payment attached should be " + toString(jV)))
18751888 else {
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)
1889+ let hR = bO(gg._1)
1890+ let iu = hQ(hR)
1891+ let jW = split(iu[bp], "_")
1892+ let jX = fraction(cG, (jo * ap), cL)
1893+ let jY = makeString(fj(fk, jW, jX), "_")
1894+ let jZ = jP(d, gg._2, jo, eH)
1895+ let ka = jZ._5
1896+ let kb = hS(ka[be])
1897+ let kc = makeString([split(ka[be], "_")[0], toString(ap)], "_")
1898+ let kd = hS(kc)
1899+ let im = split(ka[bi], "_")
1900+ let ke = makeString([im[bj], im[bk], toString(((parseIntValue(im[bl]) + kd) - kb)), toString(kd)], "_")
1901+ $Tuple3(([IntegerEntry(jS, ap), IntegerEntry(eA(gg._2, d), ap), StringEntry(hR, makeString([iu[bn], jZ._3[bo], jY, iu[bq]], ":")), StringEntry(jZ._4, makeString([kc, ka[bf], ka[bg], ka[bh], ke], ":"))] ++ jZ._1), ap, jX)
18891902 }
18901903 }
18911904 }
18921905 }
18931906
18941907
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)))
1908+func kf (C,kg) = {
1909+ let kh = F(C)
1910+ let ki = E(C)
1911+ let aj = valueOrElse(getInteger(ki), 0)
1912+ let ao = (aj + kg)
1913+ let kj = am(valueOrElse(getInteger(kh), 0), ao)
1914+ let kk = G(C)
1915+ $Tuple2([IntegerEntry(kh, kj[0]), IntegerEntry(ki, ao), IntegerEntry(kk, (valueOrElse(getInteger(kk), 0) + kj[1]))], ao)
1916+ }
1917+
1918+
1919+func kl (d,kg) = {
1920+ let kh = J(d)
1921+ let ki = I(d)
1922+ let aj = valueOrElse(getInteger(ki), 0)
1923+ let ao = (aj + kg)
1924+ let kj = am(valueOrElse(getInteger(kh), 0), ao)
1925+ let kk = K(d)
1926+ $Tuple2([IntegerEntry(kh, kj[0]), IntegerEntry(ki, ao), IntegerEntry(kk, (valueOrElse(getInteger(kk), 0) + kj[1]))], ao)
1927+ }
1928+
1929+
1930+func km (d) = {
1931+ let C = valueOrErrorMessage(getString(bN(d)), "You don't have a duck staked")
1932+ let kn = bI(d)
1933+ let ko = getString(kn)
1934+ if (!(isDefined(ko)))
19221935 then throw("You are not eligible for ONBOARD artifact")
19231936 else {
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)))
1937+ let kp = bK(d)
1938+ let kq = getString(kp)
1939+ if (isDefined(kq))
1940+ then throw(("You already used your ONBOARD artifact on duck " + value(kq)))
19281941 else {
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)
1942+ let kr = bJ(C)
1943+ let ks = getString(kr)
1944+ if (isDefined(ks))
1945+ then throw(((("The duck " + C) + " already got points from ONBOARD artifact from user ") + value(ks)))
1946+ else ([StringEntry(kp, C), StringEntry(kr, d)] ++ kf(C, ag)._1)
19341947 }
19351948 }
19361949 }
19371950
19381951
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))
1952+func kt (d,ju) = {
1953+ let gg = js(d, eH, ju)
1954+ let R = gg._2
1955+ let jo = dN(gg._3[do])
1956+ let ku = by(aI, R)
1957+ if ((valueOrElse(getInteger(ku), 0) > 0))
19451958 then throw("Presale artifact is already activated")
1946- else if ((parseIntValue(gb._3[di]) > ep))
1947- then throw((((aD + " ") + Q) + " is not eligible for presale artifact"))
1959+ else if ((parseIntValue(gg._3[dn]) > eu))
1960+ then throw((((aG + " ") + R) + " is not eligible for presale artifact"))
19481961 else {
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, ":")))
1962+ let jZ = jP(d, R, jo, eH)
1963+ (((jZ._1 :+ IntegerEntry(ku, jo)) :+ StringEntry(jZ._2, makeString(jZ._3, ":"))) :+ StringEntry(jZ._4, makeString(jZ._5, ":")))
19511964 }
19521965 }
19531966
19541967
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"))
1968+func kv (C) = {
1969+ let ck = valueOrElse(getInteger(dl, bV), 0)
1970+ let jw = split(valueOrElse(getString(bP(C)), aN), "_")
1971+ let aB = lastBlock.timestamp
1972+ let cm = ce(dl, ck)
1973+ let cg = cm[ca]
1974+ let ch = cm[cb]
1975+ if ((jw[bs] != "T"))
19631976 then false
1964- else if (if (if ((parseIntValue(jr[bm]) == cf))
1965- then (cc[bY] == "INPROGRESS")
1977+ else if (if (if ((parseIntValue(jw[br]) == ck))
1978+ then (ch[cd] == "INPROGRESS")
19661979 else false)
1967- then (parseIntValue(cb[bX]) > ay)
1980+ then (parseIntValue(cg[cc]) > aB)
19681981 else false)
19691982 then throw("Your duck is taking part in the tournament")
1970- else dE(invoke(this, "exitTournamentInternal", [B], nil))
1971- }
1972-
1973-
1974-func kr (B) = if (!(cw))
1983+ else dJ(invoke(this, "exitTournamentInternal", [C], nil))
1984+ }
1985+
1986+
1987+func kw (C) = if (!(cB))
19751988 then false
19761989 else {
1977- let jr = split(valueOrElse(getString(bK(B)), aK), "_")
1978- let ay = lastBlock.timestamp
1979- if ((jr[bn] != "D"))
1990+ let jw = split(valueOrElse(getString(bP(C)), aN), "_")
1991+ let aB = lastBlock.timestamp
1992+ if ((jw[bs] != "D"))
19801993 then false
19811994 else {
1982- let cj = parseIntValue(jr[bm])
1983- let ck = parseIntValue(jr[bo])
1984- if (if ((ay > (cj + aO)))
1985- then (3 > ck)
1995+ let co = parseIntValue(jw[br])
1996+ let cp = parseIntValue(jw[bt])
1997+ if (if ((aB > (co + aR)))
1998+ then (3 > cp)
19861999 else false)
19872000 then throw("Your duck is on delivery mission")
1988- else dE(invoke(this, "exitDeliveryInternal", [B], nil))
2001+ else dJ(invoke(this, "exitDeliveryInternal", [C], nil))
19892002 }
19902003 }
19912004
19922005
1993-func ks (B,fK,iW,kt) = {
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 (if ((ck >= 3))
2006+func kx (C,fP,jb,ky) = {
2007+ let jw = split(valueOrElse(getString(bP(C)), aN), "_")
2008+ let aB = lastBlock.timestamp
2009+ let co = parseIntValue(jw[br])
2010+ let cp = parseIntValue(jw[bt])
2011+ let jB = valueOrErrorMessage(getString(bM(C)), "NFT duck is orphaned")
2012+ let kz = B(C)
2013+ let kA = getIntegerValue(kz)
2014+ let kB = if (if ((cp >= 3))
20022015 then true
2003- else if (if (fK)
2004- then (kt >= 3)
2016+ else if (if (fP)
2017+ then (ky >= 3)
20052018 else false)
2006- then (iW > 0)
2019+ then (jb > 0)
20072020 else false)
20082021 then {
2009- let kx = invoke(dd, "sendDeliveryReward", [jw], nil)
2010- if ((kx == kx))
2011- then nil
2022+ let kC = invoke(di, "sendDeliveryReward", [jB], nil)
2023+ if ((kC == kC))
2024+ then {
2025+ let kD = W(jB)
2026+[IntegerEntry(kD, (valueOrElse(getInteger(kD), 0) + 1)), IntegerEntry(X(jB), (co / a))]
2027+ }
20122028 else throw("Strict value is not equal to itself.")
20132029 }
2014- else if (if (if (fK)
2015- then (iW > 0)
2030+ else if (if (if (fP)
2031+ then (jb > 0)
20162032 else false)
2017- then ((cj + aO) > ay)
2033+ then ((co + aR) > aB)
20182034 else false)
20192035 then throw("Your duck is still on delivery mission")
20202036 else {
2021- let ky = valueOrElse(getInteger(dd, bP), 0)
2022- let kz = invoke(dd, "updateDeliveryLocked", [(ky - aN)], nil)
2023- if ((kz == kz))
2024- then if (if (if (fK)
2025- then (0 >= iW)
2037+ let kE = valueOrElse(getInteger(di, bU), 0)
2038+ let kF = invoke(di, "updateDeliveryLocked", [(kE - aQ)], nil)
2039+ if ((kF == kF))
2040+ then if (if (if (fP)
2041+ then (0 >= jb)
20262042 else false)
20272043 then true
2028- else (0 >= kv))
2044+ else (0 >= kA))
20292045 then nil
2030- else [IntegerEntry(U(B), (cj + b))]
2046+ else [IntegerEntry(V(C), (co + b))]
20312047 else throw("Strict value is not equal to itself.")
20322048 }
2033- let kA = getIntegerValue(K(B))
2034- let kB = getStringValue(L(B))
2035- $Tuple4(kw, [IntegerEntry(ku, kA), StringEntry(bK(B), kB)], kB, kA)
2036- }
2037-
2038-
2039-func kC (kD,am,kE,d,kF,kG) = {
2040- let B = valueOrErrorMessage(getString(bI(d)), "You don't have a duck staked")
2041- if (kq(B))
2049+ let kG = getIntegerValue(L(C))
2050+ let kH = getStringValue(M(C))
2051+ $Tuple4(kB, [IntegerEntry(kz, kG), StringEntry(bP(C), kH)], kH, kG)
2052+ }
2053+
2054+
2055+func kI (kJ,ap,kK,d,kL,kM) = {
2056+ let C = valueOrErrorMessage(getString(bN(d)), "You don't have a duck staked")
2057+ if (kv(C))
20422058 then throw("mergeInternal_checkTournament")
2043- else if (kr(B))
2059+ else if (kw(C))
20442060 then throw("mergeInternal_checkDelivery")
20452061 else {
2046- func kH (eS,Q) = {
2047- let jt = value(assetInfo(fromBase58String(Q)))
2048- let ju = bs(Q)
2049- let jv = valueOrErrorMessage(getInteger(ju), (("NFT " + jt.name) + " is not staked"))
2050- let jw = valueOrErrorMessage(getString(bp(Q)), (("NFT " + jt.name) + " is orphaned"))
2051- if ((jw != d))
2052- then throw((aD + " is not yours"))
2062+ func kN (eX,R) = {
2063+ let jy = value(assetInfo(fromBase58String(R)))
2064+ let jz = bx(R)
2065+ let jA = valueOrErrorMessage(getInteger(jz), (("NFT " + jy.name) + " is not staked"))
2066+ let jB = valueOrErrorMessage(getString(bu(R)), (("NFT " + jy.name) + " is orphaned"))
2067+ if ((jB != d))
2068+ then throw((aG + " is not yours"))
20532069 else {
2054- let jx = split(jt.description, "_")
2055- let du = jx[dl]
2056- if (if ((eS._3 != ""))
2057- then (eS._3 != du)
2070+ let jC = split(jy.description, "_")
2071+ let dz = jC[dq]
2072+ if (if ((eX._3 != ""))
2073+ then (eX._3 != dz)
20582074 else false)
20592075 then throw("Lands should be on the same continent to merge")
20602076 else {
2061- let dJ = jx[dj]
2062- let kI = eS._1
2063- let gL = valueOrErrorMessage(indexOf(kI, dJ), "You haven't passed all the lands needed")
2064- let kJ = (take(kI, gL) + drop(kI, (gL + 1)))
2065- let jj = dI(dJ)
2066- let kK = (eS._2 + valueOrElse(getInteger(bt(aF, Q)), 0))
2067- let ib = valueOrElse(getInteger(bz(Q)), 0)
2068- let kL = {
2069- let cz = dJ
2070- if (("S" == cz))
2077+ let dO = jC[do]
2078+ let kO = eX._1
2079+ let gQ = valueOrErrorMessage(indexOf(kO, dO), "You haven't passed all the lands needed")
2080+ let kP = (take(kO, gQ) + drop(kO, (gQ + 1)))
2081+ let jo = dN(dO)
2082+ let kQ = (eX._2 + valueOrElse(getInteger(by(aI, R)), 0))
2083+ let ig = valueOrElse(getInteger(bE(R)), 0)
2084+ let kR = {
2085+ let cE = dO
2086+ if (("S" == cE))
20712087 then 3
2072- else if (("M" == cz))
2088+ else if (("M" == cE))
20732089 then 4
2074- else if (("L" == cz))
2090+ else if (("L" == cE))
20752091 then 5
2076- else if (("XL" == cz))
2092+ else if (("XL" == cE))
20772093 then 6
20782094 else throw("Only S, M, L, XL can merge")
20792095 }
2080- if ((ib != kL))
2096+ if ((ig != kR))
20812097 then throw("All lands should be maxed to merge")
20822098 else {
2083- let eu = jx[di]
2084- let gH = gN(jx[dk])
2085- let gR = (lastBlock.timestamp - jv)
2086- if ((0 > gR))
2087- then throw(((("Saved timestamp is in future, saved = " + toString(jv)) + ", current = ") + toString(lastBlock.timestamp)))
2099+ let ez = jC[dn]
2100+ let gM = gS(jC[dp])
2101+ let gW = (lastBlock.timestamp - jA)
2102+ if ((0 > gW))
2103+ then throw(((("Saved timestamp is in future, saved = " + toString(jA)) + ", current = ") + toString(lastBlock.timestamp)))
20882104 else {
2089- let jz = ji(Q, jj)
2090- let ia = (jj / cG)
2091- let jH = gP(split(eS._4, "_"), gH, gR, ia, jz)
2092- let fc = gF(eS._6, gH, ia, -1)
2093- let kM = gF(eS._10, gH, ia, -1)
2094- let hv = gF(eS._9, gH, ia, 1)
2095- let kN = eS._7
2096- let db = indexOf(kN, Q)
2097- if (!(isDefined(db)))
2098- then throw(("Your staked lands don't contain " + Q))
2105+ let jE = jn(R, jo)
2106+ let if = (jo / cL)
2107+ let jM = gU(split(eX._4, "_"), gM, gW, if, jE)
2108+ let fh = gK(eX._6, gM, if, -1)
2109+ let kS = gK(eX._10, gM, if, -1)
2110+ let hA = gK(eX._9, gM, if, 1)
2111+ let kT = eX._7
2112+ let dg = indexOf(kT, R)
2113+ if (!(isDefined(dg)))
2114+ then throw(("Your staked lands don't contain " + R))
20992115 else {
2100- let kO = br(Q)
2101- let kP = valueOrElse(getString(kO), "")
2102- $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 != ""))
2103- then [DeleteEntry(er(kP))]
2104- else nil)), fc, removeByIndex(kN, value(db)), (eS._8 + jj), hv, kM)
2116+ let kU = bw(R)
2117+ let kV = valueOrElse(getString(kU), "")
2118+ $Tuple10(kP, kQ, dz, jM, ((((((((((((eX._5 :+ DeleteEntry(bx(R))) :+ DeleteEntry(bA(aG, R, d))) :+ DeleteEntry(ey(ez))) :+ DeleteEntry(bu(R))) :+ DeleteEntry(bE(R))) :+ DeleteEntry(eA(R, d))) :+ DeleteEntry(by(aI, R))) :+ DeleteEntry(eB(ez))) :+ DeleteEntry(bD(R))) :+ DeleteEntry(kU)) :+ Burn(fromBase58String(R), 1)) ++ (if ((kV != ""))
2119+ then [DeleteEntry(ew(kV))]
2120+ else nil)), fh, removeByIndex(kT, value(dg)), (eX._8 + jo), hA, kS)
21052121 }
21062122 }
21072123 }
21092125 }
21102126 }
21112127
2112- let hM = bJ(B)
2113- let ip = hL(hM)
2114- let gG = split(valueOrElse(getString(ds()), "0_0_0_0_0_0"), "_")
2115- let kQ = dv(d)
2116- let kR = getString(kQ)
2117- let kS = if (isDefined(kR))
2118- then split_51C(value(kR), "_")
2128+ let hR = bO(C)
2129+ let iu = hQ(hR)
2130+ let gL = split(valueOrElse(getString(dx()), "0_0_0_0_0_0"), "_")
2131+ let kW = dA(d)
2132+ let kX = getString(kW)
2133+ let kY = if (isDefined(kX))
2134+ then split_51C(value(kX), "_")
21192135 else nil
2120- let kT = split(value(assetInfo(fromBase58String(kF[0]))).description, "_")[dl]
2121- let kU = split(valueOrElse(getString(dt(kT)), "0_0_0_0_0_0"), "_")
2122- let fd = {
2123- let eU = kF
2124- let eV = size(eU)
2125- let eW = $Tuple10(kE, 0, "", ip[bj], nil, gG, kS, 0, split("0_0_0_0_0_0", "_"), kU)
2126- func eX (eY,eZ) = if ((eZ >= eV))
2127- then eY
2128- else kH(eY, eU[eZ])
2129-
2130- func fa (eY,eZ) = if ((eZ >= eV))
2131- then eY
2136+ let kZ = split(value(assetInfo(fromBase58String(kL[0]))).description, "_")[dq]
2137+ let la = split(valueOrElse(getString(dy(kZ)), "0_0_0_0_0_0"), "_")
2138+ let fi = {
2139+ let eZ = kL
2140+ let fa = size(eZ)
2141+ let fb = $Tuple10(kK, 0, "", iu[bo], nil, gL, kY, 0, split("0_0_0_0_0_0", "_"), la)
2142+ func fc (fd,fe) = if ((fe >= fa))
2143+ then fd
2144+ else kN(fd, eZ[fe])
2145+
2146+ func ff (fd,fe) = if ((fe >= fa))
2147+ then fd
21322148 else throw("List size exceeds 5")
21332149
2134- fa(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5)
2150+ ff(fc(fc(fc(fc(fc(fb, 0), 1), 2), 3), 4), 5)
21352151 }
2136- let du = fd._3
2137- let hp = valueOrErrorMessage(indexOf(aQ, du), ("Unknown continent: " + du))
2138- let gO = hu(fd._9, (dI(kD) / cG))
2139- let iN = valueOrElse(getInteger(eq()), (ep + 1))
2140- let kV = toString(iN)
2141- let iO = Issue(eH(kV, kD), makeString([kV, kD, gO, du], "_"), 1, 0, false)
2142- let bq = calculateAssetId(iO)
2143- let kW = toBase58String(bq)
2144- let jT = makeString(fe((kG > 0), split(ip[bk], "_"), kG), "_")
2145- let kX = dw(d)
2146- let kY = valueOrElse(getInteger(kX), 0)
2147- $Tuple2((((((((((((((((fd._5 :+ (if ((size(fd._7) > 0))
2148- then StringEntry(kQ, makeString_11C(fd._7, "_"))
2149- else DeleteEntry(kQ))) :+ IntegerEntry(kX, if ((fd._8 > kY))
2152+ let dz = fi._3
2153+ let hu = valueOrErrorMessage(indexOf(aV, dz), ("Unknown continent: " + dz))
2154+ let gT = hz(fi._9, (dN(kJ) / cL))
2155+ let iS = valueOrElse(getInteger(ev()), (eu + 1))
2156+ let lb = toString(iS)
2157+ let iT = Issue(eM(lb, kJ), makeString([lb, kJ, gT, dz], "_"), 1, 0, false)
2158+ let bv = calculateAssetId(iT)
2159+ let lc = toBase58String(bv)
2160+ let jY = makeString(fj((kM > 0), split(iu[bp], "_"), kM), "_")
2161+ let ld = dB(d)
2162+ let le = valueOrElse(getInteger(ld), 0)
2163+ $Tuple2((((((((((((((((fi._5 :+ (if ((size(fi._7) > 0))
2164+ then StringEntry(kW, makeString_11C(fi._7, "_"))
2165+ else DeleteEntry(kW))) :+ IntegerEntry(ld, if ((fi._8 > le))
21502166 then 0
2151- 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)
2167+ else (le - fi._8))) :+ IntegerEntry(ev(), (iS + 1))) :+ iT) :+ StringEntry(ey(lb), lc)) :+ StringEntry(bu(lc), d)) :+ StringEntry(eB(lb), d)) :+ IntegerEntry(by(aI, lc), fi._2)) :+ IntegerEntry(bE(lc), ap)) :+ IntegerEntry(eA(lc, d), ap)) :+ StringEntry(hR, makeString([iu[bn], fi._4, jY, iu[bq]], ":"))) :+ StringEntry(dx(), makeString(fi._6, "_"))) :+ StringEntry(dy(dz), makeString(fi._10, "_"))) :+ StringEntry(bP(C), makeString([dz, "L", lc], "_"))) :+ ScriptTransfer(addressFromStringValue(d), 1, bv)), lc)
21522168 }
21532169 }
21542170
21552171
2156-func kZ (d,kF) = kC("M", 3, "SSSS", d, kF, 0)
2157-
2158-
2159-func la (d,kF) = kC("L", 4, "SMM", d, kF, (cB * 4))
2160-
2161-
2162-func lb (d,kF) = kC("XL", 5, "SSSML", d, kF, (cB * 47))
2163-
2164-
2165-func lc (d,kF) = kC("XXL", 6, "LXL", d, kF, (cB * 54))
2166-
2167-
2168-func ld (d,kF) = {
2169- let cz = size(kF)
2170- if ((4 == cz))
2171- then kZ(d, kF)
2172- else if ((3 == cz))
2173- then la(d, kF)
2174- else if ((5 == cz))
2175- then lb(d, kF)
2176- else if ((2 == cz))
2177- then lc(d, kF)
2172+func lf (d,kL) = kI("M", 3, "SSSS", d, kL, 0)
2173+
2174+
2175+func lg (d,kL) = kI("L", 4, "SMM", d, kL, (cG * 4))
2176+
2177+
2178+func lh (d,kL) = kI("XL", 5, "SSSML", d, kL, (cG * 47))
2179+
2180+
2181+func li (d,kL) = kI("XXL", 6, "LXL", d, kL, (cG * 54))
2182+
2183+
2184+func lj (d,kL) = {
2185+ let cE = size(kL)
2186+ if ((4 == cE))
2187+ then lf(d, kL)
2188+ else if ((3 == cE))
2189+ then lg(d, kL)
2190+ else if ((5 == cE))
2191+ then lh(d, kL)
2192+ else if ((2 == cE))
2193+ then li(d, kL)
21782194 else throw("Unknown merge")
21792195 }
21802196
21812197
2182-func le (bM) = {
2183- let lf = getString(bI(bM))
2184- if (if (cw)
2185- then isDefined(lf)
2198+func lk (bR) = {
2199+ let ll = getString(bN(bR))
2200+ if (if (cB)
2201+ then isDefined(ll)
21862202 else false)
21872203 then {
2188- let B = value(lf)
2189- let lg = bK(B)
2190- let cg = split(valueOrElse(getString(lg), aK), "_")
2191- let cj = parseIntValue(cg[bm])
2192- if (if ((cg[bn] != "D"))
2204+ let C = value(ll)
2205+ let lm = bP(C)
2206+ let cl = split(valueOrElse(getString(lm), aN), "_")
2207+ let co = parseIntValue(cl[br])
2208+ if (if ((cl[bs] != "D"))
21932209 then true
2194- else (lastBlock.timestamp > (cj + aO)))
2210+ else (lastBlock.timestamp > (co + aR)))
21952211 then nil
21962212 else {
2197- let ku = A(B)
2198- if ((parseIntValue(cg[bo]) >= 3))
2213+ let kz = B(C)
2214+ if ((parseIntValue(cl[bt]) >= 3))
21992215 then {
2200- let kx = invoke(dd, "sendDeliveryReward", [bM], nil)
2201- if ((kx == kx))
2216+ let kC = invoke(di, "sendDeliveryReward", [bR], nil)
2217+ if ((kC == kC))
22022218 then nil
22032219 else throw("Strict value is not equal to itself.")
22042220 }
22052221 else (({
2206- let ky = valueOrElse(getInteger(dd, bP), 0)
2207- let kz = invoke(dd, "updateDeliveryLocked", [(ky - aN)], nil)
2208- if ((kz == kz))
2209- then if ((0 >= getIntegerValue(ku)))
2222+ let kE = valueOrElse(getInteger(di, bU), 0)
2223+ let kF = invoke(di, "updateDeliveryLocked", [(kE - aQ)], nil)
2224+ if ((kF == kF))
2225+ then if ((0 >= getIntegerValue(kz)))
22102226 then nil
22112227 else {
2212- let lh = invoke(this, "saveInteger", [U(B), (cj + b)], nil)
2213- if ((lh == lh))
2228+ let ln = invoke(this, "saveInteger", [V(C), (co + b)], nil)
2229+ if ((ln == ln))
22142230 then nil
22152231 else throw("Strict value is not equal to itself.")
22162232 }
22172233 else throw("Strict value is not equal to itself.")
2218- } :+ IntegerEntry(ku, getIntegerValue(K(B)))) :+ StringEntry(lg, getStringValue(L(B))))
2234+ } :+ IntegerEntry(kz, getIntegerValue(L(C)))) :+ StringEntry(lm, getStringValue(M(C))))
22192235 }
22202236 }
22212237 else nil
22222238 }
22232239
22242240
2225-func li (gL) = if (if ((gL.originCaller != dc))
2226- then valueOrElse(getBoolean(dL()), false)
2241+func lo (gQ) = if (if ((gQ.originCaller != dh))
2242+ then valueOrElse(getBoolean(dQ()), false)
22272243 else false)
22282244 then throw("Contracts are under maintenance")
22292245 else {
2230- let bM = toString(gL.originCaller)
2231- (le(bM) :+ StringEntry(dM(bM), toBase58String(gL.transactionId)))
2246+ let bR = toString(gQ.originCaller)
2247+ (lk(bR) :+ StringEntry(dR(bR), toBase58String(gQ.transactionId)))
22322248 }
22332249
22342250
2235-func lj (gL) = if (if ((gL.originCaller != dc))
2236- then valueOrElse(getBoolean(dL()), false)
2251+func lp (gQ) = if (if ((gQ.originCaller != dh))
2252+ then valueOrElse(getBoolean(dQ()), false)
22372253 else false)
22382254 then throw("Contracts are under maintenance")
2239- else [StringEntry(dM(toString(gL.originCaller)), toBase58String(gL.transactionId))]
2240-
2241-
2242-@Callable(gL)
2243-func constructorV1 (lk) = if ((gL.caller != this))
2255+ else [StringEntry(dR(toString(gQ.originCaller)), toBase58String(gQ.transactionId))]
2256+
2257+
2258+@Callable(gQ)
2259+func constructorV1 (lq) = if ((gQ.caller != this))
22442260 then throw("Permission denied")
2245- else [StringEntry(cW(), lk)]
2246-
2247-
2248-
2249-@Callable(gL)
2250-func saveInteger (cO,eJ) = if ((gL.caller != this))
2261+ else [StringEntry(db(), lq)]
2262+
2263+
2264+
2265+@Callable(gQ)
2266+func saveInteger (cT,eO) = if ((gQ.caller != this))
22512267 then throw("saveInteger is not public method")
2252- else [IntegerEntry(cO, eJ)]
2253-
2254-
2255-
2256-@Callable(gL)
2257-func setBlocked (ll) = if ((gL.caller != this))
2268+ else [IntegerEntry(cT, eO)]
2269+
2270+
2271+
2272+@Callable(gQ)
2273+func setBlocked (lr) = if ((gQ.caller != this))
22582274 then throw("permission denied")
2259- else [BooleanEntry(dL(), ll)]
2260-
2261-
2262-
2263-@Callable(gL)
2275+ else [BooleanEntry(dQ(), lr)]
2276+
2277+
2278+
2279+@Callable(gQ)
22642280 func stakeLand () = {
2265- let lm = li(gL)
2266- if ((size(gL.payments) != 1))
2281+ let ls = lo(gQ)
2282+ if ((size(gQ.payments) != 1))
22672283 then throw("Exactly one payment required")
22682284 else {
2269- let ln = value(gL.payments[0])
2270- let bq = value(ln.assetId)
2271- let cN = toString(gL.caller)
2272- if ((ln.amount != 1))
2273- then throw((("NFT " + aD) + " token should be attached as payment"))
2285+ let lt = value(gQ.payments[0])
2286+ let bv = value(lt.assetId)
2287+ let cS = toString(gQ.caller)
2288+ if ((lt.amount != 1))
2289+ then throw((("NFT " + aG) + " token should be attached as payment"))
22742290 else {
2275- let jt = value(assetInfo(bq))
2276- if ((jt.issuer != this))
2291+ let jy = value(assetInfo(bv))
2292+ if ((jy.issuer != this))
22772293 then throw("Unknown issuer of token")
2278- else if (!(contains(jt.name, aD)))
2279- then throw((("Only NFT " + aD) + " tokens are accepted"))
2294+ else if (!(contains(jy.name, aG)))
2295+ then throw((("Only NFT " + aG) + " tokens are accepted"))
22802296 else {
2281- let lo = drop(jt.name, 4)
2282- let eu = if (contains(lo, "XXL"))
2283- then dropRight(lo, 3)
2284- else if (contains(lo, "XL"))
2285- then dropRight(lo, 2)
2286- else dropRight(lo, 1)
2287- if (!(isDefined(parseInt(eu))))
2288- then throw(("Cannot parse land number from " + jt.name))
2297+ let lu = drop(jy.name, 4)
2298+ let ez = if (contains(lu, "XXL"))
2299+ then dropRight(lu, 3)
2300+ else if (contains(lu, "XL"))
2301+ then dropRight(lu, 2)
2302+ else dropRight(lu, 1)
2303+ if (!(isDefined(parseInt(ez))))
2304+ then throw(("Cannot parse land number from " + jy.name))
22892305 else {
2290- let Q = toBase58String(bq)
2291- let ju = bs(Q)
2292- if (isDefined(getInteger(ju)))
2293- then throw((("NFT " + jt.name) + " is already staked"))
2306+ let R = toBase58String(bv)
2307+ let jz = bx(R)
2308+ if (isDefined(getInteger(jz)))
2309+ then throw((("NFT " + jy.name) + " is already staked"))
22942310 else {
2295- let jx = split(jt.description, "_")
2296- let gH = gN(jx[dk])
2297- let jj = dI(jx[dj])
2298- let ia = (jj / cG)
2299- let fc = gM(gH, ia, 1)
2300- let lp = dt(jx[dl])
2301- let kU = split(valueOrElse(getString(lp), "0_0_0_0_0_0"), "_")
2302- let lq = makeString(gF(kU, gH, ia, 1), "_")
2303- let kQ = dv(cN)
2304- let kR = getString(kQ)
2305- let kN = if (isDefined(kR))
2306- then split_51C(value(kR), "_")
2311+ let jC = split(jy.description, "_")
2312+ let gM = gS(jC[dp])
2313+ let jo = dN(jC[do])
2314+ let if = (jo / cL)
2315+ let fh = gR(gM, if, 1)
2316+ let lv = dy(jC[dq])
2317+ let la = split(valueOrElse(getString(lv), "0_0_0_0_0_0"), "_")
2318+ let lw = makeString(gK(la, gM, if, 1), "_")
2319+ let kW = dA(cS)
2320+ let kX = getString(kW)
2321+ let kT = if (isDefined(kX))
2322+ then split_51C(value(kX), "_")
23072323 else nil
2308- if (containsElement(kN, Q))
2309- then throw(("Your staked lands already contain " + Q))
2310- else if ((size(kN) >= aH))
2311- then throw((("Your already staked max (" + toString(aH)) + ") lands"))
2324+ if (containsElement(kT, R))
2325+ then throw(("Your staked lands already contain " + R))
2326+ else if ((size(kT) >= aK))
2327+ then throw((("Your already staked max (" + toString(aK)) + ") lands"))
23122328 else {
2313- let ib = valueOrElse(getInteger(bz(Q)), 0)
2314- let kX = dw(cN)
2315- let lr = valueOrElse(getInteger(kX), 0)
2316- let ls = invoke(df, "onStakeUnstakeLand", [cN], nil)
2317- $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)
2329+ let ig = valueOrElse(getInteger(bE(R)), 0)
2330+ let ld = dB(cS)
2331+ let lx = valueOrElse(getInteger(ld), 0)
2332+ let ly = invoke(dk, "onStakeUnstakeLand", [cS], nil)
2333+ $Tuple2(([IntegerEntry(jz, lastBlock.timestamp), IntegerEntry(bA(aG, R, cS), lastBlock.timestamp), StringEntry(kW, makeString_11C((kT :+ R), "_")), IntegerEntry(ld, (lx + jo)), StringEntry(bu(R), cS), StringEntry(eB(ez), cS), IntegerEntry(eA(R, cS), ig), StringEntry(dx(), fh), StringEntry(lv, lw)] ++ ls), ly)
23182334 }
23192335 }
23202336 }
23252341
23262342
23272343
2328-@Callable(gL)
2329-func unstakeLand (jp) = {
2330- let lm = li(gL)
2331- if ((size(gL.payments) != 0))
2344+@Callable(gQ)
2345+func unstakeLand (ju) = {
2346+ let ls = lo(gQ)
2347+ if ((size(gQ.payments) != 0))
23322348 then throw("No payments required")
23332349 else {
2334- let d = toString(gL.caller)
2335- let gb = jn(d, eB, jp)
2336- let Q = gb._2
2337- let jx = gb._3
2338- let kQ = dv(d)
2339- let gH = gN(jx[dk])
2340- let jj = dI(jx[dj])
2341- let ia = (jj / cG)
2342- let fc = gM(gH, ia, -1)
2343- let lp = dt(jx[dl])
2344- let kU = split(valueOrElse(getString(lp), "0_0_0_0_0_0"), "_")
2345- let lq = makeString(gF(kU, gH, ia, -1), "_")
2346- let jU = jK(d, Q, jj, eB)
2347- let kN = split_51C(valueOrElse(getString(kQ), ""), "_")
2348- let db = indexOf(kN, Q)
2349- if (!(isDefined(db)))
2350- then throw(("Your staked lands don't contain " + Q))
2350+ let d = toString(gQ.caller)
2351+ let gg = js(d, eG, ju)
2352+ let R = gg._2
2353+ let jC = gg._3
2354+ let kW = dA(d)
2355+ let gM = gS(jC[dp])
2356+ let jo = dN(jC[do])
2357+ let if = (jo / cL)
2358+ let fh = gR(gM, if, -1)
2359+ let lv = dy(jC[dq])
2360+ let la = split(valueOrElse(getString(lv), "0_0_0_0_0_0"), "_")
2361+ let lw = makeString(gK(la, gM, if, -1), "_")
2362+ let jZ = jP(d, R, jo, eG)
2363+ let kT = split_51C(valueOrElse(getString(kW), ""), "_")
2364+ let dg = indexOf(kT, R)
2365+ if (!(isDefined(dg)))
2366+ then throw(("Your staked lands don't contain " + R))
23512367 else {
2352- let ay = lastBlock.timestamp
2353- let lt = valueOrElse(getInteger(de, bL(d)), 0)
2354- if ((lt >= ay))
2355- then throw(("Your gWL are taking part in voting, cannot unstake until " + toString(lt)))
2368+ let aB = lastBlock.timestamp
2369+ let lz = valueOrElse(getInteger(dj, bQ(d)), 0)
2370+ if ((lz >= aB))
2371+ then throw(("Your gWL are taking part in voting, cannot unstake until " + toString(lz)))
23562372 else {
2357- let lu = (valueOrElse(getInteger(df, c(d)), 0) + cC)
2358- if ((lu > ay))
2359- then throw(("Your staked lands took part in arbitrage, cannot unstake until " + toString(lu)))
2373+ let lA = (valueOrElse(getInteger(dk, c(d)), 0) + cH)
2374+ if ((lA > aB))
2375+ then throw(("Your staked lands took part in arbitrage, cannot unstake until " + toString(lA)))
23602376 else {
2361- let kX = dw(d)
2362- let kY = valueOrElse(getInteger(kX), 0)
2363- let lv = if ((jj > kY))
2377+ let ld = dB(d)
2378+ let le = valueOrElse(getInteger(ld), 0)
2379+ let lB = if ((jo > le))
23642380 then 0
2365- else (kY - jj)
2366- let ls = invoke(df, "onStakeUnstakeLand", [d], nil)
2367- $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))
2368- then StringEntry(kQ, makeString_11C(removeByIndex(kN, value(db)), "_"))
2369- else DeleteEntry(kQ), IntegerEntry(kX, lv)] ++ lm), ls)
2381+ else (le - jo)
2382+ let ly = invoke(dk, "onStakeUnstakeLand", [d], nil)
2383+ $Tuple2(([ScriptTransfer(gQ.caller, 1, fromBase58String(R)), DeleteEntry(bx(R)), DeleteEntry(bA(aG, R, d)), StringEntry(dx(), fh), StringEntry(lv, lw), StringEntry(jZ._2, makeString(jZ._3, ":")), if ((size(kT) > 1))
2384+ then StringEntry(kW, makeString_11C(removeByIndex(kT, value(dg)), "_"))
2385+ else DeleteEntry(kW), IntegerEntry(ld, lB)] ++ ls), ly)
23702386 }
23712387 }
23722388 }
23752391
23762392
23772393
2378-@Callable(gL)
2394+@Callable(gQ)
23792395 func stakeDuck () = {
2380- let lm = li(gL)
2381- if ((size(gL.payments) != 1))
2396+ let ls = lo(gQ)
2397+ if ((size(gQ.payments) != 1))
23822398 then throw("Exactly one payment required")
23832399 else {
2384- let ln = value(gL.payments[0])
2385- let bq = value(ln.assetId)
2386- let cN = toString(gL.caller)
2387- if ((ln.amount != 1))
2388- then throw((("NFT " + aE) + " token should be attached as payment"))
2400+ let lt = value(gQ.payments[0])
2401+ let bv = value(lt.assetId)
2402+ let cS = toString(gQ.caller)
2403+ if ((lt.amount != 1))
2404+ then throw((("NFT " + aH) + " token should be attached as payment"))
23892405 else {
2390- let jt = value(assetInfo(bq))
2391- if (if ((jt.issuer != dY))
2392- then (jt.issuer != dZ)
2406+ let jy = value(assetInfo(bv))
2407+ if (if ((jy.issuer != ed))
2408+ then (jy.issuer != ee)
23932409 else false)
2394- then throw((("Unknown issuer of " + aE) + " token"))
2395- else if (!(contains(jt.name, aE)))
2396- then throw((("Only NFT " + aE) + " tokens are accepted"))
2410+ then throw((("Unknown issuer of " + aH) + " token"))
2411+ else if (!(contains(jy.name, aH)))
2412+ then throw((("Only NFT " + aH) + " tokens are accepted"))
23972413 else {
2398- let lw = toBase58String(bq)
2399- let ju = bs(lw)
2400- if (isDefined(getInteger(ju)))
2401- then throw((("NFT " + jt.name) + " is already staked"))
2402- else if (isDefined(getString(bI(cN))))
2403- then throw(("You already staked one duck: " + jt.name))
2414+ let lC = toBase58String(bv)
2415+ let jz = bx(lC)
2416+ if (isDefined(getInteger(jz)))
2417+ then throw((("NFT " + jy.name) + " is already staked"))
2418+ else if (isDefined(getString(bN(cS))))
2419+ then throw(("You already staked one duck: " + jy.name))
24042420 else {
2405- let lg = bK(lw)
2406- let ce = getString(lg)
2407- let hM = bJ(lw)
2408- let lx = getString(hM)
2409- let jc = A(lw)
2410- let jd = ah(valueOrElse(getInteger(E(lw)), 0))
2411- let kv = valueOrElse(getInteger(jc), jd)
2412- ([IntegerEntry(ju, lastBlock.timestamp), IntegerEntry(bv(aE, toBase58String(bq), cN), lastBlock.timestamp), StringEntry(bH(lw), cN), StringEntry(bI(cN), lw)] ++ (if (isDefined(ce))
2421+ let lm = bP(lC)
2422+ let cj = getString(lm)
2423+ let hR = bO(lC)
2424+ let lD = getString(hR)
2425+ let jh = B(lC)
2426+ let ji = ak(valueOrElse(getInteger(F(lC)), 0))
2427+ let kA = valueOrElse(getInteger(jh), ji)
2428+ ([IntegerEntry(jz, lastBlock.timestamp), IntegerEntry(bA(aH, toBase58String(bv), cS), lastBlock.timestamp), StringEntry(bM(lC), cS), StringEntry(bN(cS), lC)] ++ (if (isDefined(cj))
24132429 then nil
2414- else ([StringEntry(lg, aK)] ++ (if (isDefined(lx))
2430+ else ([StringEntry(lm, aN)] ++ (if (isDefined(lD))
24152431 then nil
2416- else (([StringEntry(hM, "0:0_0_0_0_0_0:0_0_0_0_0_0:")] :+ IntegerEntry(jc, kv)) ++ lm)))))
2432+ else (([StringEntry(hR, "0:0_0_0_0_0_0:0_0_0_0_0_0:")] :+ IntegerEntry(jh, kA)) ++ ls)))))
24172433 }
24182434 }
24192435 }
24222438
24232439
24242440
2425-@Callable(gL)
2426-func unstakeDuck (lw) = {
2427- let lm = li(gL)
2428- if ((size(gL.payments) != 0))
2441+@Callable(gQ)
2442+func unstakeDuck (lC) = {
2443+ let ls = lo(gQ)
2444+ if ((size(gQ.payments) != 0))
24292445 then throw("No payments required")
24302446 else {
2431- let bq = fromBase58String(lw)
2432- let cN = toString(gL.caller)
2433- let jt = value(assetInfo(bq))
2434- let ju = bs(lw)
2435- if (!(isDefined(getInteger(ju))))
2436- then throw((("NFT " + jt.name) + " is not staked"))
2437- else if (!(isDefined(getString(bI(cN)))))
2438- then throw((("The duck " + jt.name) + " is not staked"))
2447+ let bv = fromBase58String(lC)
2448+ let cS = toString(gQ.caller)
2449+ let jy = value(assetInfo(bv))
2450+ let jz = bx(lC)
2451+ if (!(isDefined(getInteger(jz))))
2452+ then throw((("NFT " + jy.name) + " is not staked"))
2453+ else if (!(isDefined(getString(bN(cS)))))
2454+ then throw((("The duck " + jy.name) + " is not staked"))
24392455 else {
2440- let jw = valueOrErrorMessage(getString(bH(lw)), (("NFT " + jt.name) + " is orphaned"))
2441- if ((jw != cN))
2456+ let jB = valueOrErrorMessage(getString(bM(lC)), (("NFT " + jy.name) + " is orphaned"))
2457+ if ((jB != cS))
24422458 then throw("Staked NFT is not yours")
2443- else if (kq(lw))
2459+ else if (kv(lC))
24442460 then throw("unstakeDuck_checkTournament")
2445- else if (kr(lw))
2461+ else if (kw(lC))
24462462 then throw("unstakeDuck_checkDelivery")
24472463 else {
2448- let jc = A(lw)
2449- let jd = ah(valueOrElse(getInteger(E(lw)), 0))
2450- let at = valueOrElse(getInteger(jc), jd)
2451- if ((jd > at))
2452- then throw((("Please heal your duck to " + toString(jd)) + "hp before unstaking"))
2453- 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)
2464+ let jh = B(lC)
2465+ let ji = ak(valueOrElse(getInteger(F(lC)), 0))
2466+ let aw = valueOrElse(getInteger(jh), ji)
2467+ if ((ji > aw))
2468+ then throw((("Please heal your duck to " + toString(ji)) + "hp before unstaking"))
2469+ else ([ScriptTransfer(gQ.caller, 1, bv), DeleteEntry(jz), DeleteEntry(jh), DeleteEntry(bP(lC)), DeleteEntry(bM(lC)), DeleteEntry(bA(aH, lC, cS)), DeleteEntry(bN(cS))] ++ ls)
24542470 }
24552471 }
24562472 }
24582474
24592475
24602476
2461-@Callable(gL)
2462-func claimRes (eJ,ly) = {
2463- let lm = li(gL)
2464- if ((size(gL.payments) != 0))
2477+@Callable(gQ)
2478+func claimRes (eO,lE) = {
2479+ let ls = lo(gQ)
2480+ if ((size(gQ.payments) != 0))
24652481 then throw("No payments required")
24662482 else {
2467- let d = toString(gL.originCaller)
2468- let fk = jy(d, eJ, eB, ly)
2469- let B = valueOrErrorMessage(getString(bI(d)), "You don't have a duck staked")
2470- $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])
2471- }
2472- }
2473-
2474-
2475-
2476-@Callable(gL)
2477-func claimResToWH (eJ,ly) = {
2478- let lm = li(gL)
2479- if ((size(gL.payments) != 0))
2483+ let d = toString(gQ.originCaller)
2484+ let fp = jD(d, eO, eG, lE)
2485+ let C = valueOrErrorMessage(getString(bN(d)), "You don't have a duck staked")
2486+ $Tuple2(((((fp._1 ++ kf(C, fraction(Y, eO, cK))._1) :+ StringEntry(fp._2, makeString(fp._3, ":"))) :+ StringEntry(fp._4, makeString(fp._5, ":"))) ++ ls), fp._3[bo])
2487+ }
2488+ }
2489+
2490+
2491+
2492+@Callable(gQ)
2493+func claimResToWH (eO,lE) = {
2494+ let ls = lo(gQ)
2495+ if ((size(gQ.payments) != 0))
24802496 then throw("No payments required")
24812497 else {
2482- let d = toString(gL.originCaller)
2483- let fk = jy(d, eJ, eA, ly)
2484- $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])
2485- }
2486- }
2487-
2488-
2489-
2490-@Callable(gL)
2491-func flight (iR,iS) = {
2492- let lm = lj(gL)
2493- if ((size(gL.payments) != 0))
2498+ let d = toString(gQ.originCaller)
2499+ let fp = jD(d, eO, eF, lE)
2500+ $Tuple2(((((fp._1 ++ kl(d, fraction(Y, eO, cK))._1) :+ StringEntry(fp._2, makeString(fp._3, ":"))) :+ StringEntry(fp._4, makeString(fp._5, ":"))) ++ ls), fp._5[bf])
2501+ }
2502+ }
2503+
2504+
2505+
2506+@Callable(gQ)
2507+func flight (iW,iX) = {
2508+ let ls = lp(gQ)
2509+ if ((size(gQ.payments) != 0))
24942510 then throw("No payments required")
24952511 else {
2496- let bM = toString(gL.caller)
2497- let hq = iQ(bM, iR, iS)
2498- let iW = hq._1
2499- let B = hq._2
2500- let lg = bK(B)
2501- let jr = valueOrElse(getString(lg), aK)
2502- let iY = hq._4
2503- if ((iY == jr))
2512+ let bR = toString(gQ.caller)
2513+ let hv = iV(bR, iW, iX)
2514+ let jb = hv._1
2515+ let C = hv._2
2516+ let lm = bP(C)
2517+ let jw = valueOrElse(getString(lm), aN)
2518+ let jd = hv._4
2519+ if ((jd == jw))
25042520 then throw("You can't fly to the same location")
25052521 else {
2506- let cs = split(iY, "_")
2507- let lz = (cs[bn] == "T")
2508- let lA = (cs[bn] == "D")
2509- let gy = G(B)
2510- let lB = valueOrElse(getString(gy), ",;,_,;,_,;,_,;,_,;,_,;,")
2511- let lC = fl(lB, hq._5)
2512- let lD = lC._1
2513- let lE = lC._2
2514- let lF = if (!(cn(dg, jr)))
2515- then if (!(cl(iY)))
2516- then cq(jr, iY, 5)
2517- else if ((iW > 0))
2518- then $Tuple2(iY, iW)
2519- else $Tuple2(jr, 0)
2520- else if (cd(dg, jr))
2521- then if (!(cd(dg, iY)))
2522+ let cx = split(jd, "_")
2523+ let lF = (cx[bs] == "T")
2524+ let lG = (cx[bs] == "D")
2525+ let gD = H(C)
2526+ let lH = valueOrElse(getString(gD), ",;,_,;,_,;,_,;,_,;,_,;,")
2527+ let lI = fq(lH, hv._5)
2528+ let lJ = lI._1
2529+ let lK = lI._2
2530+ let lL = if (!(cs(dl, jw)))
2531+ then if (!(cq(jd)))
2532+ then cv(jw, jd, 5)
2533+ else if ((jb > 0))
2534+ then $Tuple2(jd, jb)
2535+ else $Tuple2(jw, 0)
2536+ else if (ci(dl, jw))
2537+ then if (!(ci(dl, jd)))
25222538 then throw("Your duck is taking part in the tournament")
25232539 else {
2524- let kt = parseIntValue(cs[bo])
2525- let lG = split(jr, "_")
2526- let cf = valueOrElse(getInteger(dg, bQ), 0)
2527- if ((kt != (parseIntValue(lG[bo]) + 1)))
2528- then cq(jr, iY, 7)
2529- else if ((iW > 0))
2540+ let ky = parseIntValue(cx[bt])
2541+ let lM = split(jw, "_")
2542+ let ck = valueOrElse(getInteger(dl, bV), 0)
2543+ if ((ky != (parseIntValue(lM[bt]) + 1)))
2544+ then cv(jw, jd, 7)
2545+ else if ((jb > 0))
25302546 then {
2531- let lH = valueOrElse(getInteger(dg, bU(cf, B)), 0)
2532- let lI = if ((kt > lH))
2533- then invoke(dg, "saveDuckResult", [B, kt], nil)
2547+ let lN = valueOrElse(getInteger(dl, bZ(ck, C)), 0)
2548+ let lO = if ((ky > lN))
2549+ then invoke(dl, "saveDuckResult", [C, ky], nil)
25342550 else unit
2535- if ((lI == lI))
2536- then $Tuple2(iY, iW)
2551+ if ((lO == lO))
2552+ then $Tuple2(jd, jb)
25372553 else throw("Strict value is not equal to itself.")
25382554 }
2539- else $Tuple2(jr, 0)
2555+ else $Tuple2(jw, 0)
25402556 }
2541- else if (!(ci(jr)))
2557+ else if (!(cn(jw)))
25422558 then {
2543- let lJ = dF(invoke(this, "autoExitDelivery", [B, iW, if (lA)
2559+ let lP = dK(invoke(this, "autoExitDelivery", [C, jb, if (lG)
25442560 then "10"
25452561 else "11", 0], nil))
2546- if ((lJ == lJ))
2547- then if (lA)
2548- then lJ
2549- else if ((iW > 0))
2550- then $Tuple2(iY, iW)
2551- else $Tuple2(lJ._1, 0)
2562+ if ((lP == lP))
2563+ then if (lG)
2564+ then lP
2565+ else if ((jb > 0))
2566+ then $Tuple2(jd, jb)
2567+ else $Tuple2(lP._1, 0)
25522568 else throw("Strict value is not equal to itself.")
25532569 }
2554- else if (!(lA))
2570+ else if (!(lG))
25552571 then throw("Your duck is taking part in delivery")
2556- else if (!(ci(iY)))
2557- then cq(jr, iY, 13)
2572+ else if (!(cn(jd)))
2573+ then cv(jw, jd, 13)
25582574 else {
2559- let kt = parseIntValue(cs[bo])
2560- let lG = split(jr, "_")
2561- if ((kt != (parseIntValue(lG[bo]) + 1)))
2562- then cq(jr, iY, 14)
2563- else if (if ((iW > 0))
2564- then (3 > kt)
2575+ let ky = parseIntValue(cx[bt])
2576+ let lM = split(jw, "_")
2577+ if ((ky != (parseIntValue(lM[bt]) + 1)))
2578+ then cv(jw, jd, 14)
2579+ else if (if ((jb > 0))
2580+ then (3 > ky)
25652581 else false)
2566- then $Tuple2(iY, iW)
2582+ then $Tuple2(jd, jb)
25672583 else {
2568- let lJ = dF(invoke(this, "autoExitDelivery", [B, iW, "15-17", kt], nil))
2569- if ((lJ == lJ))
2570- then lJ
2584+ let lP = dK(invoke(this, "autoExitDelivery", [C, jb, "15-17", ky], nil))
2585+ if ((lP == lP))
2586+ then lP
25712587 else throw("Strict value is not equal to itself.")
25722588 }
25732589 }
2574- let lK = lF._1
2575- let lL = lF._2
2576- $Tuple2(((([StringEntry(lg, lK), StringEntry(gy, lD), IntegerEntry(A(B), lL)] ++ lm) ++ (if (lE)
2577- then [StringEntry(M(B), "0_0_0_0_0")]
2578- else nil)) ++ ka(B, if ((iW > 0))
2579- then W
2580- else X)._1), hq._3)
2590+ let lQ = lL._1
2591+ let lR = lL._2
2592+ $Tuple2(((([StringEntry(lm, lQ), StringEntry(gD, lJ), IntegerEntry(B(C), lR)] ++ ls) ++ (if (lK)
2593+ then [StringEntry(N(C), "0_0_0_0_0")]
2594+ else nil)) ++ kf(C, if ((jb > 0))
2595+ then Z
2596+ else aa)._1), hv._3)
25812597 }
25822598 }
25832599 }
25842600
25852601
25862602
2587-@Callable(gL)
2588-func heal (lM,lN,lO) = {
2589- let lm = li(gL)
2590- if (if (if ((0 > lM))
2603+@Callable(gQ)
2604+func heal (lS,lT,lU) = {
2605+ let ls = lo(gQ)
2606+ if (if (if ((0 > lS))
25912607 then true
2592- else (0 > lN))
2608+ else (0 > lT))
25932609 then true
2594- else (0 > lO))
2610+ else (0 > lU))
25952611 then throw("Quantity cannot be negative")
25962612 else {
2597- let B = valueOrErrorMessage(getString(bI(toString(gL.caller))), "You don't have a duck staked")
2598- if (kq(B))
2613+ let C = valueOrErrorMessage(getString(bN(toString(gQ.caller))), "You don't have a duck staked")
2614+ if (kv(C))
25992615 then throw("heal_checkTournament")
2600- else if (kr(B))
2616+ else if (kw(C))
26012617 then throw("heal_checkDelivery")
26022618 else {
2603- let lP = [lM, lN, lO]
2604- let jc = A(B)
2605- let jd = ah(valueOrElse(getInteger(E(B)), 0))
2606- let lQ = valueOrElse(getInteger(jc), jd)
2607- if ((lQ >= jd))
2608- then throw((("HP should be < " + toString(jd)) + " to heal"))
2619+ let lV = [lS, lT, lU]
2620+ let jh = B(C)
2621+ let ji = ak(valueOrElse(getInteger(F(C)), 0))
2622+ let lW = valueOrElse(getInteger(jh), ji)
2623+ if ((lW >= ji))
2624+ then throw((("HP should be < " + toString(ji)) + " to heal"))
26092625 else {
2610- let hM = bJ(B)
2611- let ip = hL(hM)
2612- let lR = if ((ip[bl] == ""))
2626+ let hR = bO(C)
2627+ let iu = hQ(hR)
2628+ let lX = if ((iu[bq] == ""))
26132629 then nil
2614- else split_4C(ip[bl], "_")
2615- func lS (eS,cp) = {
2616- let dB = eS._2
2617- let hh = if ((size(lR) > dB))
2618- then parseIntValue(lR[dB])
2630+ else split_4C(iu[bq], "_")
2631+ func lY (eX,cu) = {
2632+ let dG = eX._2
2633+ let hm = if ((size(lX) > dG))
2634+ then parseIntValue(lX[dG])
26192635 else 0
2620- if ((3 > dB))
2636+ if ((3 > dG))
26212637 then {
2622- let lT = lP[dB]
2623- if ((lT > hh))
2624- then throw(((("You have only " + toString(hh)) + " of ") + aP[dB]))
2625- else $Tuple3((eS._1 :+ toString((hh - lT))), (dB + 1), (eS._3 + (parseIntValue(split(cp, "_")[aV]) * lT)))
2638+ let lZ = lV[dG]
2639+ if ((lZ > hm))
2640+ then throw(((("You have only " + toString(hm)) + " of ") + aU[dG]))
2641+ else $Tuple3((eX._1 :+ toString((hm - lZ))), (dG + 1), (eX._3 + (parseIntValue(split(cu, "_")[ba]) * lZ)))
26262642 }
2627- else $Tuple3((eS._1 :+ toString(hh)), (dB + 1), eS._3)
2643+ else $Tuple3((eX._1 :+ toString(hm)), (dG + 1), eX._3)
26282644 }
26292645
2630- let fk = {
2631- let eU = aT
2632- let eV = size(eU)
2633- let eW = $Tuple3(nil, 0, 0)
2634- func eX (eY,eZ) = if ((eZ >= eV))
2635- then eY
2636- else lS(eY, eU[eZ])
2637-
2638- func fa (eY,eZ) = if ((eZ >= eV))
2639- then eY
2646+ let fp = {
2647+ let eZ = aY
2648+ let fa = size(eZ)
2649+ let fb = $Tuple3(nil, 0, 0)
2650+ func fc (fd,fe) = if ((fe >= fa))
2651+ then fd
2652+ else lY(fd, eZ[fe])
2653+
2654+ func ff (fd,fe) = if ((fe >= fa))
2655+ then fd
26402656 else throw("List size exceeds 50")
26412657
2642- 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)
2658+ ff(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fb, 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)
26432659 }
2644- let lU = min([jd, (lQ + fk._3)])
2645- $Tuple2((([IntegerEntry(jc, lU), StringEntry(hM, makeString_2C([ip[bi], ip[bj], ip[bk], makeString(fk._1, "_")], ":"))] ++ lm) ++ ka(B, (ae * ((lM + lN) + lO)))._1), lU)
2660+ let ma = min([ji, (lW + fp._3)])
2661+ $Tuple2((([IntegerEntry(jh, ma), StringEntry(hR, makeString_2C([iu[bn], iu[bo], iu[bp], makeString(fp._1, "_")], ":"))] ++ ls) ++ kf(C, (ah * ((lS + lT) + lU)))._1), ma)
26462662 }
26472663 }
26482664 }
26502666
26512667
26522668
2653-@Callable(gL)
2669+@Callable(gQ)
26542670 func healES () = {
2655- let lm = li(gL)
2656- if ((size(gL.payments) != 1))
2671+ let ls = lo(gQ)
2672+ if ((size(gQ.payments) != 1))
26572673 then throw("Exactly one payment required")
26582674 else {
2659- let ln = value(gL.payments[0])
2660- if ((ln.assetId != cy))
2675+ let lt = value(gQ.payments[0])
2676+ if ((lt.assetId != cD))
26612677 then throw("Allowed USDT payment only!")
26622678 else {
2663- let B = valueOrErrorMessage(getString(bI(toString(gL.caller))), "You don't have a duck staked")
2664- if (kq(B))
2679+ let C = valueOrErrorMessage(getString(bN(toString(gQ.caller))), "You don't have a duck staked")
2680+ if (kv(C))
26652681 then throw("healES_checkTournament")
2666- else if (kr(B))
2682+ else if (kw(C))
26672683 then throw("healES_checkDelivery")
26682684 else {
2669- let jc = A(B)
2670- let jd = ah(valueOrElse(getInteger(E(B)), 0))
2671- let lQ = valueOrElse(getInteger(jc), jd)
2672- if ((lQ > 0))
2685+ let jh = B(C)
2686+ let ji = ak(valueOrElse(getInteger(F(C)), 0))
2687+ let lW = valueOrElse(getInteger(jh), ji)
2688+ if ((lW > 0))
26732689 then throw("HP should be 0 to call Emergency Service")
26742690 else {
2675- let hM = bJ(B)
2676- let ip = hL(hM)
2677- let lR = if ((ip[bl] == ""))
2691+ let hR = bO(C)
2692+ let iu = hQ(hR)
2693+ let lX = if ((iu[bq] == ""))
26782694 then nil
2679- else split_4C(ip[bl], "_")
2680- let lV = if ((size(lR) > 0))
2681- then parseIntValue(lR[0])
2695+ else split_4C(iu[bq], "_")
2696+ let mb = if ((size(lX) > 0))
2697+ then parseIntValue(lX[0])
26822698 else 0
2683- let lW = if ((size(lR) > 1))
2684- then parseIntValue(lR[1])
2699+ let mc = if ((size(lX) > 1))
2700+ then parseIntValue(lX[1])
26852701 else 0
2686- let lX = if ((size(lR) > 2))
2687- then parseIntValue(lR[2])
2702+ let md = if ((size(lX) > 2))
2703+ then parseIntValue(lX[2])
26882704 else 0
2689- if (if (if ((lV > 0))
2705+ if (if (if ((mb > 0))
26902706 then true
2691- else (lW > 0))
2707+ else (mc > 0))
26922708 then true
2693- else (lX > 0))
2709+ else (md > 0))
26942710 then throw("You have to use own Medical Kit")
26952711 else {
2696- let lY = getString(dd, bN())
2697- let lZ = if (isDefined(lY))
2698- then split_4C(value(lY), "_")
2712+ let me = getString(di, bS())
2713+ let mf = if (isDefined(me))
2714+ then split_4C(value(me), "_")
26992715 else nil
2700- let ma = if ((size(lZ) > 0))
2701- then parseIntValue(lZ[0])
2716+ let mg = if ((size(mf) > 0))
2717+ then parseIntValue(mf[0])
27022718 else 0
2703- if ((0 >= ma))
2719+ if ((0 >= mg))
27042720 then throw("There are no Medical Kits L1 at Emergency Service storage")
27052721 else {
2706- let lU = (lQ + parseIntValue(split(aT[0], "_")[aV]))
2707- let mb = makeString([toString((ma - 1)), removeByIndex(lZ, 0)], "_")
2708- let cp = split(aT[0], "_")
2709- let mc = co(cp)
2710- let md = fraction((mc * aM), aL, (cF * aY))
2711- if ((ln.amount != md))
2712- then throw(("Payment attached should be " + toString(md)))
2722+ let ma = (lW + parseIntValue(split(aY[0], "_")[ba]))
2723+ let mh = makeString([toString((mg - 1)), removeByIndex(mf, 0)], "_")
2724+ let cu = split(aY[0], "_")
2725+ let mi = ct(cu)
2726+ let mj = fraction((mi * aP), aO, (cK * bd))
2727+ if ((lt.amount != mj))
2728+ then throw(("Payment attached should be " + toString(mj)))
27132729 else {
2714- let fk = dx(invoke(dd, "updateEsStorage", [mb], [AttachedPayment(cy, md)]))
2715- $Tuple2(((lm :+ IntegerEntry(jc, lU)) ++ ka(B, Y)._1), fk)
2730+ let fp = dC(invoke(di, "updateEsStorage", [mh], [AttachedPayment(cD, mj)]))
2731+ $Tuple2(((ls :+ IntegerEntry(jh, ma)) ++ kf(C, ab)._1), fp)
27162732 }
27172733 }
27182734 }
27242740
27252741
27262742
2727-@Callable(gL)
2728-func updateBackpack (B,me) = if ((gL.caller != dd))
2743+@Callable(gQ)
2744+func updateBackpack (C,mk) = if ((gQ.caller != di))
27292745 then throw("permission denied")
2730- else $Tuple2([StringEntry(bJ(B), me)], me)
2731-
2732-
2733-
2734-@Callable(gL)
2746+ else $Tuple2([StringEntry(bO(C), mk)], mk)
2747+
2748+
2749+
2750+@Callable(gQ)
27352751 func commitForRandom () = {
2736- let lm = li(gL)
2737- let mf = (height + dq)
2738- let d = toString(gL.caller)
2739- $Tuple2(([IntegerEntry(dr(d), mf)] ++ lm), mf)
2740- }
2741-
2742-
2743-
2744-@Callable(gL)
2752+ let ls = lo(gQ)
2753+ let ml = (height + dv)
2754+ let d = toString(gQ.caller)
2755+ $Tuple2(([IntegerEntry(dw(d), ml)] ++ ls), ml)
2756+ }
2757+
2758+
2759+
2760+@Callable(gQ)
27452761 func buySLand () = {
2746- let lm = li(gL)
2747- if ((size(gL.payments) != 1))
2762+ let ls = lo(gQ)
2763+ if ((size(gQ.payments) != 1))
27482764 then throw("Exactly one payment required")
27492765 else {
2750- let ln = value(gL.payments[0])
2751- if ((ln.assetId != cy))
2766+ let lt = value(gQ.payments[0])
2767+ if ((lt.assetId != cD))
27522768 then throw("Allowed USDT payment only!")
2753- else if ((ln.amount != eh))
2754- then throw(("Payment attached should be " + toString(eh)))
2769+ else if ((lt.amount != em))
2770+ then throw(("Payment attached should be " + toString(em)))
27552771 else {
2756- let fk = iJ(gL.caller, gL.transactionId)
2757- let mg = dA(invoke(dh, "burnAcres", [ei], nil))
2758- $Tuple2((((fk._1 :+ ScriptTransfer(dd, ln.amount, cy)) ++ kg(toString(gL.caller), aa)._1) ++ lm), $Tuple2(fk._2._1, mg))
2772+ let fp = iO(gQ.caller, gQ.transactionId)
2773+ let mm = dF(invoke(dm, "burnAcres", [en], nil))
2774+ $Tuple2((((fp._1 :+ ScriptTransfer(di, lt.amount, cD)) ++ kl(toString(gQ.caller), ad)._1) ++ ls), $Tuple2(fp._2._1, mm))
27592775 }
27602776 }
27612777 }
27622778
27632779
27642780
2765-@Callable(gL)
2766-func expedition (iR,iS) = {
2767- let lm = li(gL)
2768- if ((size(gL.payments) != 0))
2781+@Callable(gQ)
2782+func expedition (iW,iX) = {
2783+ let ls = lo(gQ)
2784+ if ((size(gQ.payments) != 0))
27692785 then throw("No payments required")
27702786 else {
2771- let bM = toString(gL.caller)
2772- let hq = iQ(bM, iR, iS)
2773- let B = hq._2
2774- let jc = A(B)
2775- let hM = bJ(B)
2776- let ip = hL(hM)
2777- let jR = split(ip[bk], "_")
2778- let jT = makeString(fe(true, jR, eg), "_")
2779- let gy = G(B)
2780- let lB = valueOrElse(getString(gy), ",;,_,;,_,;,_,;,_,;,_,;,")
2781- let mh = fl(lB, hq._5)
2782- let lD = mh._1
2783- let lE = mh._2
2784- let mi = iJ(gL.caller, gL.transactionId)
2785- let iP = mi._2._1
2786- let fk = if ((0 >= hq._1))
2787- then $Tuple3([IntegerEntry(jc, 0), StringEntry(gy, lD)], "", 0)
2788- else $Tuple3((mi._1 ++ (if (lE)
2789- then [StringEntry(M(B), "0_0_0_0_0")]
2790- else ((((nil :+ StringEntry(bK(B), makeString([mi._2._2, "L", iP], "_"))) :+ IntegerEntry(jc, hq._1)) :+ StringEntry(gy, lD)) :+ StringEntry(hM, makeString([ip[bi], ip[bj], jT, ip[bl]], ":"))))), iP, hq._3)
2791- if (kq(B))
2787+ let bR = toString(gQ.caller)
2788+ let hv = iV(bR, iW, iX)
2789+ let C = hv._2
2790+ let jh = B(C)
2791+ let hR = bO(C)
2792+ let iu = hQ(hR)
2793+ let jW = split(iu[bp], "_")
2794+ let jY = makeString(fj(true, jW, el), "_")
2795+ let gD = H(C)
2796+ let lH = valueOrElse(getString(gD), ",;,_,;,_,;,_,;,_,;,_,;,")
2797+ let mn = fq(lH, hv._5)
2798+ let lJ = mn._1
2799+ let lK = mn._2
2800+ let mo = iO(gQ.caller, gQ.transactionId)
2801+ let iU = mo._2._1
2802+ let fp = if ((0 >= hv._1))
2803+ then $Tuple3([IntegerEntry(jh, 0), StringEntry(gD, lJ)], "", 0)
2804+ else $Tuple3((mo._1 ++ (if (lK)
2805+ then [StringEntry(N(C), "0_0_0_0_0")]
2806+ else ((((nil :+ StringEntry(bP(C), makeString([mo._2._2, "L", iU], "_"))) :+ IntegerEntry(jh, hv._1)) :+ StringEntry(gD, lJ)) :+ StringEntry(hR, makeString([iu[bn], iu[bo], jY, iu[bq]], ":"))))), iU, hv._3)
2807+ if (kv(C))
27922808 then throw("expedition_checkTournament")
2793- else if (kr(B))
2809+ else if (kw(C))
27942810 then throw("expedition_checkDelivery")
27952811 else {
2796- let mg = dA(invoke(dh, "burnAcres", [ei], nil))
2797- $Tuple2(((fk._1 ++ ka(B, aa)._1) ++ lm), $Tuple3(fk._2, fk._3, mg))
2812+ let mm = dF(invoke(dm, "burnAcres", [en], nil))
2813+ $Tuple2(((fp._1 ++ kf(C, ad)._1) ++ ls), $Tuple3(fp._2, fp._3, mm))
27982814 }
27992815 }
28002816 }
28012817
28022818
28032819
2804-@Callable(gL)
2820+@Callable(gQ)
28052821 func buySLandForAcres () = {
2806- let lm = li(gL)
2807- if ((size(gL.payments) != 1))
2822+ let ls = lo(gQ)
2823+ if ((size(gQ.payments) != 1))
28082824 then throw("exactly 1 payment must be attached")
28092825 else {
2810- let ln = gL.payments[0]
2811- let fr = ln.amount
2812- if (if (!(isDefined(ln.assetId)))
2826+ let lt = gQ.payments[0]
2827+ let fw = lt.amount
2828+ if (if (!(isDefined(lt.assetId)))
28132829 then true
2814- else (value(ln.assetId) != dp))
2830+ else (value(lt.assetId) != du))
28152831 then throw("ACRES payments only!")
2816- else if ((fr != ei))
2817- then throw(("Payment attached should be " + toString(ei)))
2832+ else if ((fw != en))
2833+ then throw(("Payment attached should be " + toString(en)))
28182834 else {
2819- let fk = iJ(gL.caller, gL.transactionId)
2820- let mg = dA(invoke(dh, "burnAcres", [ei], [AttachedPayment(dp, fr)]))
2821- $Tuple2(((fk._1 ++ kg(toString(gL.caller), aa)._1) ++ lm), $Tuple2(fk._2._1, mg))
2835+ let fp = iO(gQ.caller, gQ.transactionId)
2836+ let mm = dF(invoke(dm, "burnAcres", [en], [AttachedPayment(du, fw)]))
2837+ $Tuple2(((fp._1 ++ kl(toString(gQ.caller), ad)._1) ++ ls), $Tuple2(fp._2._1, mm))
28222838 }
28232839 }
28242840 }
28252841
28262842
28272843
2828-@Callable(gL)
2829-func upgradeInfra (Q) = {
2830- let lm = li(gL)
2831- if ((size(gL.payments) != 0))
2844+@Callable(gQ)
2845+func upgradeInfra (R) = {
2846+ let ls = lo(gQ)
2847+ if ((size(gQ.payments) != 0))
28322848 then throw("No payments required")
28332849 else {
2834- let fk = jL(true, gL.caller, 0, Q)
2835- let B = valueOrErrorMessage(getString(bI(toString(gL.caller))), "You don't have a duck staked")
2836- $Tuple2(((fk._1 ++ lm) ++ ka(B, fraction(ab, fk._3, cF))._1), fk._2)
2837- }
2838- }
2839-
2840-
2841-
2842-@Callable(gL)
2843-func activateArtifact (mj,mk) = {
2844- let lm = li(gL)
2845- if ((size(gL.payments) != 0))
2850+ let fp = jQ(true, gQ.caller, 0, R)
2851+ let C = valueOrErrorMessage(getString(bN(toString(gQ.caller))), "You don't have a duck staked")
2852+ $Tuple2(((fp._1 ++ ls) ++ kf(C, fraction(ae, fp._3, cK))._1), fp._2)
2853+ }
2854+ }
2855+
2856+
2857+
2858+@Callable(gQ)
2859+func activateArtifact (mp,mq) = {
2860+ let ls = lo(gQ)
2861+ if ((size(gQ.payments) != 0))
28462862 then throw("No payments required")
28472863 else {
2848- let d = toString(gL.caller)
2849- let fk = {
2850- let cz = mj
2851- if (("PRESALE" == cz))
2852- then ko(d, mk)
2853- else if (("ONBOARD" == cz))
2854- then kh(d)
2864+ let d = toString(gQ.caller)
2865+ let fp = {
2866+ let cE = mp
2867+ if (("PRESALE" == cE))
2868+ then kt(d, mq)
2869+ else if (("ONBOARD" == cE))
2870+ then km(d)
28552871 else throw("Unknown artifact")
28562872 }
2857- (fk ++ lm)
2858- }
2859- }
2860-
2861-
2862-
2863-@Callable(gL)
2864-func mergeLands (kF) = {
2865- let lm = li(gL)
2866- if ((size(gL.payments) != 0))
2873+ (fp ++ ls)
2874+ }
2875+ }
2876+
2877+
2878+
2879+@Callable(gQ)
2880+func mergeLands (kL) = {
2881+ let ls = lo(gQ)
2882+ if ((size(gQ.payments) != 0))
28672883 then throw("No payments required")
28682884 else {
2869- let fk = ld(toString(gL.caller), kF)
2870- $Tuple2(((fk._1 ++ lm) ++ kg(toString(gL.caller), ac)._1), fk._2)
2871- }
2872- }
2873-
2874-
2875-
2876-@Callable(gL)
2877-func cargoExchange (ml,Q) = {
2878- let lm = li(gL)
2879- if ((size(gL.payments) != 0))
2885+ let fp = lj(toString(gQ.caller), kL)
2886+ $Tuple2(((fp._1 ++ ls) ++ kl(toString(gQ.caller), af)._1), fp._2)
2887+ }
2888+ }
2889+
2890+
2891+
2892+@Callable(gQ)
2893+func cargoExchange (mr,R) = {
2894+ let ls = lo(gQ)
2895+ if ((size(gQ.payments) != 0))
28802896 then throw("No payments required")
28812897 else {
2882- let io = split_4C(ml, ":")
2883- let d = toString(gL.originCaller)
2884- let jt = value(assetInfo(fromBase58String(Q)))
2885- let ju = bs(Q)
2886- if (!(isDefined(getInteger(ju))))
2887- then throw((jt.name + " is not staked"))
2898+ let it = split_4C(mr, ":")
2899+ let d = toString(gQ.originCaller)
2900+ let jy = value(assetInfo(fromBase58String(R)))
2901+ let jz = bx(R)
2902+ if (!(isDefined(getInteger(jz))))
2903+ then throw((jy.name + " is not staked"))
28882904 else {
2889- let jw = valueOrErrorMessage(getString(bp(Q)), (("NFT " + jt.name) + " is orphaned"))
2890- if ((jw != d))
2891- then throw((aD + " is not yours"))
2905+ let jB = valueOrErrorMessage(getString(bu(R)), (("NFT " + jy.name) + " is orphaned"))
2906+ if ((jB != d))
2907+ then throw((aG + " is not yours"))
28922908 else {
2893- let ia = (dI(split(jt.description, "_")[dj]) / cG)
2894- let ib = valueOrElse(getInteger(bz(Q)), 0)
2895- let B = valueOrErrorMessage(getString(bI(d)), "You don't have a duck staked")
2896- let jr = valueOrElse(getString(bK(B)), aK)
2897- let cg = split(value(jr), "_")
2898- if ((cg[bn] != "L"))
2899- then throw((("Duck location type is " + cg[bn]) + ", but should be L"))
2900- else if ((cg[bo] != Q))
2901- then throw(("Duck should be on the land " + Q))
2909+ let if = (dN(split(jy.description, "_")[do]) / cL)
2910+ let ig = valueOrElse(getInteger(bE(R)), 0)
2911+ let C = valueOrErrorMessage(getString(bN(d)), "You don't have a duck staked")
2912+ let jw = valueOrElse(getString(bP(C)), aN)
2913+ let cl = split(value(jw), "_")
2914+ if ((cl[bs] != "L"))
2915+ then throw((("Duck location type is " + cl[bs]) + ", but should be L"))
2916+ else if ((cl[bt] != R))
2917+ then throw(("Duck should be on the land " + R))
29022918 else {
2903- let hZ = by(Q)
2904- let hQ = hY(hZ, ia, ib)
2905- let hM = bJ(B)
2906- let ip = hL(hM)
2907- let fk = in(io, hQ, ip)
2908- let ih = split(hQ[bd], "_")
2909- let jI = (parseIntValue(ih[bf]) + fk._7)
2910- let jJ = (parseIntValue(ih[bg]) - fk._7)
2911- ([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)
2919+ let ie = bD(R)
2920+ let hV = id(ie, if, ig)
2921+ let hR = bO(C)
2922+ let iu = hQ(hR)
2923+ let fp = is(it, hV, iu)
2924+ let im = split(hV[bi], "_")
2925+ let jN = (parseIntValue(im[bk]) + fp._7)
2926+ let jO = (parseIntValue(im[bl]) - fp._7)
2927+ ([StringEntry(hR, makeString_2C([iu[bn], fp._4, fp._5, fp._6], ":")), StringEntry(ie, makeString_2C([hV[be], fp._1, fp._2, fp._3, makeString([im[bj], toString(jN), toString(jO), im[bm]], "_")], ":"))] ++ ls)
29122928 }
29132929 }
29142930 }
29172933
29182934
29192935
2920-@Callable(gL)
2921-func saveWarehouse (id,Q) = if ((gL.caller != dd))
2936+@Callable(gQ)
2937+func saveWarehouse (ii,R) = if ((gQ.caller != di))
29222938 then throw("Access denied")
29232939 else {
2924- let hZ = by(Q)
2925- let ie = split_4C(id, ":")
2926- if ((size(ie) != 5))
2940+ let ie = bD(R)
2941+ let ij = split_4C(ii, ":")
2942+ if ((size(ij) != 5))
29272943 then throw("warehouse string should contain 4 ':' separators")
29282944 else {
2929- let mm = split(ie[bd], "_")[be]
2930- let jI = hP(ie)
2931- let mn = hN(ie[aZ])
2932- let jJ = ((mn - parseIntValue(mm)) - jI)
2933- let mo = makeString_2C([ie[aZ], ie[ba], ie[bb], ie[bc], makeString([mm, toString(jI), toString(jJ), toString(mn)], "_")], ":")
2934- $Tuple2([StringEntry(hZ, mo)], mo)
2945+ let ms = split(ij[bi], "_")[bj]
2946+ let jN = hU(ij)
2947+ let mt = hS(ij[be])
2948+ let jO = ((mt - parseIntValue(ms)) - jN)
2949+ let mu = makeString_2C([ij[be], ij[bf], ij[bg], ij[bh], makeString([ms, toString(jN), toString(jO), toString(mt)], "_")], ":")
2950+ $Tuple2([StringEntry(ie, mu)], mu)
29352951 }
29362952 }
29372953
29382954
29392955
2940-@Callable(gL)
2941-func fixWarehouseFormat (Q) = if ((gL.caller != dc))
2956+@Callable(gQ)
2957+func fixWarehouseFormat (R) = if ((gQ.caller != dh))
29422958 then throw("Access denied")
29432959 else {
2944- let hZ = by(Q)
2945- let jt = value(assetInfo(fromBase58String(Q)))
2946- let ia = (dI(split(jt.description, "_")[dj]) / cG)
2947- let ib = valueOrElse(getInteger(bz(Q)), 0)
2948- let ie = hY(hZ, ia, ib)
2949- let mm = dA(invoke(dd, "recalcLockedVolumeREADONLY", [Q, ie], nil))
2950- let jI = hP(ie)
2951- let mn = hN(ie[aZ])
2952- let jJ = ((mn - mm) - jI)
2953- let mo = makeString_2C([ie[aZ], ie[ba], ie[bb], ie[bc], makeString([toString(mm), toString(jI), toString(jJ), toString(mn)], "_")], ":")
2954- $Tuple2([StringEntry(hZ, mo)], mo)
2960+ let ie = bD(R)
2961+ let jy = value(assetInfo(fromBase58String(R)))
2962+ let if = (dN(split(jy.description, "_")[do]) / cL)
2963+ let ig = valueOrElse(getInteger(bE(R)), 0)
2964+ let ij = id(ie, if, ig)
2965+ let ms = dF(invoke(di, "recalcLockedVolumeREADONLY", [R, ij], nil))
2966+ let jN = hU(ij)
2967+ let mt = hS(ij[be])
2968+ let jO = ((mt - ms) - jN)
2969+ let mu = makeString_2C([ij[be], ij[bf], ij[bg], ij[bh], makeString([toString(ms), toString(jN), toString(jO), toString(mt)], "_")], ":")
2970+ $Tuple2([StringEntry(ie, mu)], mu)
29552971 }
29562972
29572973
29582974
2959-@Callable(gL)
2960-func fixContinentProportions (kF) = if ((gL.caller != dc))
2975+@Callable(gQ)
2976+func fixContinentProportions (kL) = if ((gQ.caller != dh))
29612977 then throw("Access denied")
29622978 else {
2963- func mp (eS,mq) = (eS :+ valueOrElse(getString(dt(mq)), "0_0_0_0_0_0"))
2964-
2965- let gv = {
2966- let eU = aQ
2967- let eV = size(eU)
2968- let eW = nil
2969- func eX (eY,eZ) = if ((eZ >= eV))
2970- then eY
2971- else mp(eY, eU[eZ])
2972-
2973- func fa (eY,eZ) = if ((eZ >= eV))
2974- then eY
2979+ func mv (eX,mw) = (eX :+ valueOrElse(getString(dy(mw)), "0_0_0_0_0_0"))
2980+
2981+ let gA = {
2982+ let eZ = aV
2983+ let fa = size(eZ)
2984+ let fb = nil
2985+ func fc (fd,fe) = if ((fe >= fa))
2986+ then fd
2987+ else mv(fd, eZ[fe])
2988+
2989+ func ff (fd,fe) = if ((fe >= fa))
2990+ then fd
29752991 else throw("List size exceeds 5")
29762992
2977- fa(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5)
2978- }
2979- func mr (eS,Q) = {
2980- let jt = value(assetInfo(fromBase58String(Q)))
2981- let jx = split(jt.description, "_")
2982- let ia = (dI(jx[dj]) / cG)
2983- let mq = jx[dl]
2984- let gH = gN(jx[dk])
2985- let hp = value(indexOf(aQ, mq))
2986- let kU = split(eS[hp], "_")
2987- let ms = makeString(gF(kU, gH, ia, 1), "_")
2988- let cz = mq
2989- if (("Americas" == cz))
2990- then [ms, eS[1], eS[2], eS[3], eS[4]]
2991- else if (("Europe" == cz))
2992- then [eS[0], ms, eS[2], eS[3], eS[4]]
2993- else if (("Asia" == cz))
2994- then [eS[0], eS[1], ms, eS[3], eS[4]]
2995- else if (("Africa" == cz))
2996- then [eS[0], eS[1], eS[2], ms, eS[4]]
2997- else if (("Oceania" == cz))
2998- then [eS[0], eS[1], eS[2], eS[3], ms]
2993+ ff(fc(fc(fc(fc(fc(fb, 0), 1), 2), 3), 4), 5)
2994+ }
2995+ func mx (eX,R) = {
2996+ let jy = value(assetInfo(fromBase58String(R)))
2997+ let jC = split(jy.description, "_")
2998+ let if = (dN(jC[do]) / cL)
2999+ let mw = jC[dq]
3000+ let gM = gS(jC[dp])
3001+ let hu = value(indexOf(aV, mw))
3002+ let la = split(eX[hu], "_")
3003+ let my = makeString(gK(la, gM, if, 1), "_")
3004+ let cE = mw
3005+ if (("Americas" == cE))
3006+ then [my, eX[1], eX[2], eX[3], eX[4]]
3007+ else if (("Europe" == cE))
3008+ then [eX[0], my, eX[2], eX[3], eX[4]]
3009+ else if (("Asia" == cE))
3010+ then [eX[0], eX[1], my, eX[3], eX[4]]
3011+ else if (("Africa" == cE))
3012+ then [eX[0], eX[1], eX[2], my, eX[4]]
3013+ else if (("Oceania" == cE))
3014+ then [eX[0], eX[1], eX[2], eX[3], my]
29993015 else throw("wrong continent")
30003016 }
30013017
3002- let fd = {
3003- let eU = kF
3004- let eV = size(eU)
3005- let eW = gv
3006- func hG (eY,eZ) = if ((eZ >= eV))
3007- then eY
3008- else mr(eY, eU[eZ])
3009-
3010- func hH (eY,eZ) = if ((eZ >= eV))
3011- then eY
3018+ let fi = {
3019+ let eZ = kL
3020+ let fa = size(eZ)
3021+ let fb = gA
3022+ func hL (fd,fe) = if ((fe >= fa))
3023+ then fd
3024+ else mx(fd, eZ[fe])
3025+
3026+ func hM (fd,fe) = if ((fe >= fa))
3027+ then fd
30123028 else throw("List size exceeds 100")
30133029
3014- 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)
3015- }
3016- $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)
3030+ hM(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(fb, 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)
3031+ }
3032+ $Tuple2([StringEntry(dy("Americas"), fi[0]), StringEntry(dy("Europe"), fi[1]), StringEntry(dy("Asia"), fi[2]), StringEntry(dy("Africa"), fi[3]), StringEntry(dy("Oceania"), fi[4])], 0)
30173033 }
30183034
30193035
30203036
3021-@Callable(gL)
3022-func fixStakedPieces (cN) = if ((gL.caller != dc))
3037+@Callable(gQ)
3038+func fixStakedPieces (cS) = if ((gQ.caller != dh))
30233039 then throw("Access denied")
30243040 else {
3025- let kY = if ((cN == ""))
3041+ let le = if ((cS == ""))
30263042 then 0
30273043 else {
3028- let kR = getString(ao, dv(cN))
3029- let kN = if (isDefined(kR))
3030- then split_51C(value(kR), "_")
3044+ let kX = getString(ar, dA(cS))
3045+ let kT = if (isDefined(kX))
3046+ then split_51C(value(kX), "_")
30313047 else nil
3032- func mt (eS,Q) = {
3033- let jt = value(assetInfo(fromBase58String(Q)))
3034- let dJ = split(jt.description, "_")[dj]
3035- (eS + dI(dJ))
3048+ func mz (eX,R) = {
3049+ let jy = value(assetInfo(fromBase58String(R)))
3050+ let dO = split(jy.description, "_")[do]
3051+ (eX + dN(dO))
30363052 }
30373053
3038- let eU = kN
3039- let eV = size(eU)
3040- let eW = 0
3041- func eX (eY,eZ) = if ((eZ >= eV))
3042- then eY
3043- else mt(eY, eU[eZ])
3044-
3045- func fa (eY,eZ) = if ((eZ >= eV))
3046- then eY
3054+ let eZ = kT
3055+ let fa = size(eZ)
3056+ let fb = 0
3057+ func fc (fd,fe) = if ((fe >= fa))
3058+ then fd
3059+ else mz(fd, eZ[fe])
3060+
3061+ func ff (fd,fe) = if ((fe >= fa))
3062+ then fd
30473063 else throw("List size exceeds 100")
30483064
3049- 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)
3065+ ff(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fb, 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)
30503066 }
3051- $Tuple2([IntegerEntry(dw(cN), kY)], kY)
3067+ $Tuple2([IntegerEntry(dB(cS), le)], le)
30523068 }
30533069
30543070
30553071
3056-@Callable(gL)
3057-func setCustomName (bq,kP,bu) = {
3058- let lm = li(gL)
3059- if ((size(gL.payments) != 1))
3072+@Callable(gQ)
3073+func setCustomName (bv,kV,bz) = {
3074+ let ls = lo(gQ)
3075+ if ((size(gQ.payments) != 1))
30603076 then throw("Exactly one payment required")
30613077 else {
3062- let ln = value(gL.payments[0])
3063- if ((ln.assetId != cy))
3078+ let lt = value(gQ.payments[0])
3079+ if ((lt.assetId != cD))
30643080 then throw("Allowed USDT payment only!")
3065- else if ((ln.amount != ed))
3066- then throw(("Payment should be " + toString(ed)))
3067- else if (contains(kP, "__"))
3068- then throw(("Name should not contain '__': " + kP))
3069- else if ((size(kP) > ee))
3070- then throw(("Name too long, maxLength=" + toString(ee)))
3081+ else if ((lt.amount != ei))
3082+ then throw(("Payment should be " + toString(ei)))
3083+ else if (contains(kV, "__"))
3084+ then throw(("Name should not contain '__': " + kV))
3085+ else if ((size(kV) > ej))
3086+ then throw(("Name too long, maxLength=" + toString(ej)))
30713087 else {
3072- let d = toString(gL.originCaller)
3073- let mu = {
3074- let cz = bu
3075- if (("ACCOUNT" == cz))
3088+ let d = toString(gQ.originCaller)
3089+ let mA = {
3090+ let cE = bz
3091+ if (("ACCOUNT" == cE))
30763092 then {
3077- let mv = ey(kP)
3078- let mw = getString(mv)
3079- if (isDefined(mw))
3080- then throw(("Name already registered: " + kP))
3093+ let mB = eD(kV)
3094+ let mC = getString(mB)
3095+ if (isDefined(mC))
3096+ then throw(("Name already registered: " + kV))
30813097 else {
3082- let mx = bC(d)
3083- let my = getString(mx)
3084- let mz = if (isDefined(my))
3085- then [DeleteEntry(ey(value(my)))]
3098+ let mD = bH(d)
3099+ let mE = getString(mD)
3100+ let mF = if (isDefined(mE))
3101+ then [DeleteEntry(eD(value(mE)))]
30863102 else nil
3087- (((mz :+ StringEntry(mx, kP)) :+ StringEntry(mv, d)) ++ kg(d, Z)._1)
3103+ (((mF :+ StringEntry(mD, kV)) :+ StringEntry(mB, d)) ++ kl(d, ac)._1)
30883104 }
30893105 }
3090- else if (("LAND" == cz))
3106+ else if (("LAND" == cE))
30913107 then {
3092- let jt = value(assetInfo(fromBase58String(bq)))
3093- let ju = bs(bq)
3094- if (!(isDefined(getInteger(ju))))
3095- then throw((jt.name + " is not staked"))
3108+ let jy = value(assetInfo(fromBase58String(bv)))
3109+ let jz = bx(bv)
3110+ if (!(isDefined(getInteger(jz))))
3111+ then throw((jy.name + " is not staked"))
30963112 else {
3097- let jw = valueOrErrorMessage(getString(bp(bq)), (("NFT " + jt.name) + " is orphaned"))
3098- if ((jw != d))
3099- then throw((aD + " is not yours"))
3113+ let jB = valueOrErrorMessage(getString(bu(bv)), (("NFT " + jy.name) + " is orphaned"))
3114+ if ((jB != d))
3115+ then throw((aG + " is not yours"))
31003116 else {
3101- let mv = er(kP)
3102- let mw = getString(mv)
3103- if (isDefined(mw))
3104- then throw(("Name already registered: " + kP))
3117+ let mB = ew(kV)
3118+ let mC = getString(mB)
3119+ if (isDefined(mC))
3120+ then throw(("Name already registered: " + kV))
31053121 else {
3106- let mA = br(bq)
3107- let my = getString(mA)
3108- let mz = if (isDefined(my))
3109- then [DeleteEntry(er(value(my)))]
3122+ let mG = bw(bv)
3123+ let mE = getString(mG)
3124+ let mF = if (isDefined(mE))
3125+ then [DeleteEntry(ew(value(mE)))]
31103126 else nil
3111- (((mz :+ StringEntry(mA, kP)) :+ StringEntry(mv, bq)) ++ kg(d, Z)._1)
3127+ (((mF :+ StringEntry(mG, kV)) :+ StringEntry(mB, bv)) ++ kl(d, ac)._1)
31123128 }
31133129 }
31143130 }
31153131 }
3116- else if (("DUCK" == cz))
3132+ else if (("DUCK" == cE))
31173133 then {
3118- let jt = value(assetInfo(fromBase58String(bq)))
3119- let ju = bs(bq)
3120- if (if (!(isDefined(getInteger(ju))))
3134+ let jy = value(assetInfo(fromBase58String(bv)))
3135+ let jz = bx(bv)
3136+ if (if (!(isDefined(getInteger(jz))))
31213137 then true
3122- else !(isDefined(getString(bI(d)))))
3123- then throw((jt.name + " is not staked"))
3138+ else !(isDefined(getString(bN(d)))))
3139+ then throw((jy.name + " is not staked"))
31243140 else {
3125- let jw = valueOrErrorMessage(getString(bH(bq)), (("NFT " + jt.name) + " is orphaned"))
3126- if ((jw != d))
3127- then throw((aE + " is not yours"))
3141+ let jB = valueOrErrorMessage(getString(bM(bv)), (("NFT " + jy.name) + " is orphaned"))
3142+ if ((jB != d))
3143+ then throw((aH + " is not yours"))
31283144 else {
3129- let mv = ex(kP)
3130- let mw = getString(mv)
3131- if (isDefined(mw))
3132- then throw(("Name already registered: " + kP))
3145+ let mB = eC(kV)
3146+ let mC = getString(mB)
3147+ if (isDefined(mC))
3148+ then throw(("Name already registered: " + kV))
31333149 else {
3134- let mA = bB(bq)
3135- let my = getString(mA)
3136- let mz = if (isDefined(my))
3137- then [DeleteEntry(ex(value(my)))]
3150+ let mG = bG(bv)
3151+ let mE = getString(mG)
3152+ let mF = if (isDefined(mE))
3153+ then [DeleteEntry(eC(value(mE)))]
31383154 else nil
3139- (((mz :+ StringEntry(mA, kP)) :+ StringEntry(mv, bq)) ++ ka(bq, Z)._1)
3155+ (((mF :+ StringEntry(mG, kV)) :+ StringEntry(mB, bv)) ++ kf(bv, ac)._1)
31403156 }
31413157 }
31423158 }
31433159 }
31443160 else throw("Unknown entity type")
31453161 }
3146- $Tuple2(((mu :+ ScriptTransfer(dd, ln.amount, cy)) ++ lm), 0)
3162+ $Tuple2(((mA :+ ScriptTransfer(di, lt.amount, cD)) ++ ls), 0)
31473163 }
31483164 }
31493165 }
31503166
31513167
31523168
3153-@Callable(gL)
3154-func setReferrals (mB,mC) = if ((gL.callerPublicKey != ea))
3169+@Callable(gQ)
3170+func setReferrals (mH,mI) = if ((gQ.callerPublicKey != ef))
31553171 then throw("Permission denied")
31563172 else {
3157- let lm = li(gL)
3158- if ((size(gL.payments) != 0))
3173+ let ls = lo(gQ)
3174+ if ((size(gQ.payments) != 0))
31593175 then throw("No payments required")
3160- else if (!(isDefined(addressFromString(mB))))
3161- then throw(("Invalid address: " + mB))
3162- else if (!(isDefined(addressFromString(mC))))
3163- then throw(("Invalid address: " + mC))
3176+ else if (!(isDefined(addressFromString(mH))))
3177+ then throw(("Invalid address: " + mH))
3178+ else if (!(isDefined(addressFromString(mI))))
3179+ then throw(("Invalid address: " + mI))
31643180 else {
3165- let mD = ez()
3166- let mE = getString(mD)
3167- let mF = if (isDefined(mE))
3168- then split_4C(value(mE), "_")
3181+ let mJ = eE()
3182+ let mK = getString(mJ)
3183+ let mL = if (isDefined(mK))
3184+ then split_4C(value(mK), "_")
31693185 else nil
3170- if (containsElement(mF, mC))
3171- then throw((mC + " is not newbie (already has referrals)"))
3186+ if (containsElement(mL, mI))
3187+ then throw((mI + " is not newbie (already has referrals)"))
31723188 else {
3173- let ki = bD(mC)
3174- let kj = getString(ki)
3175- if (if (isDefined(kj))
3176- then isDefined(addressFromString(value(kj)))
3189+ let kn = bI(mI)
3190+ let ko = getString(kn)
3191+ if (if (isDefined(ko))
3192+ then isDefined(addressFromString(value(ko)))
31773193 else false)
3178- then throw(((mC + " already has refBy: ") + value(kj)))
3194+ then throw(((mI + " already has refBy: ") + value(ko)))
31793195 else {
3180- let mG = bG(mB)
3181- let mH = getString(mG)
3182- let mI = if (isDefined(mH))
3183- then split_4C(value(mH), "_")
3196+ let mM = bL(mH)
3197+ let mN = getString(mM)
3198+ let mO = if (isDefined(mN))
3199+ then split_4C(value(mN), "_")
31843200 else nil
3185- if (containsElement(mI, mC))
3186- then throw((((mB + " already contains ") + mC) + " within referrals"))
3201+ if (containsElement(mO, mI))
3202+ then throw((((mH + " already contains ") + mI) + " within referrals"))
31873203 else {
3188- let mJ = makeString_2C((mI :+ mC), "_")
3189- let mK = if (containsElement(mF, mB))
3190- then value(mE)
3191- else makeString_2C((mF :+ mB), "_")
3192- $Tuple2(([StringEntry(ki, mB), StringEntry(mG, mJ), StringEntry(mD, mK)] ++ lm), 0)
3204+ let mP = makeString_2C((mO :+ mI), "_")
3205+ let mQ = if (containsElement(mL, mH))
3206+ then value(mK)
3207+ else makeString_2C((mL :+ mH), "_")
3208+ $Tuple2(([StringEntry(kn, mH), StringEntry(mM, mP), StringEntry(mJ, mQ)] ++ ls), 0)
31933209 }
31943210 }
31953211 }
31983214
31993215
32003216
3201-@Callable(gL)
3202-func distributePoints (mL,mM,mN,mO,mP) = {
3203- let lm = li(gL)
3204- if ((size(gL.payments) != 0))
3217+@Callable(gQ)
3218+func distributePoints (mR,mS,mT,mU,mV) = {
3219+ let ls = lo(gQ)
3220+ if ((size(gQ.payments) != 0))
32053221 then throw("No payments required")
32063222 else {
3207- let d = toString(gL.originCaller)
3208- let mQ = dC(invoke(df, "checkWlgXpREADONLY", [d], nil))
3209- let mR = dA(mQ[1])
3210- let mS = if ((0 >= mR))
3223+ let d = toString(gQ.originCaller)
3224+ let mW = dH(invoke(dk, "checkWlgXpREADONLY", [d], nil))
3225+ let mX = dF(mW[1])
3226+ let mY = if ((0 >= mX))
32113227 then $Tuple2(0, nil)
32123228 else {
3213- let kb = dA(invoke(df, "takeWlgXp", [d], nil))
3214- if ((kb == kb))
3215- then $Tuple2(mR, [IntegerEntry(I(d), dA(mQ[0])), IntegerEntry(H(d), dA(mQ[2]))])
3229+ let kg = dF(invoke(dk, "takeWlgXp", [d], nil))
3230+ if ((kg == kg))
3231+ then $Tuple2(mX, [IntegerEntry(J(d), dF(mW[0])), IntegerEntry(I(d), dF(mW[2]))])
32163232 else throw("Strict value is not equal to itself.")
32173233 }
3218- let mT = mS._1
3219- let mU = mS._2
3220- let B = valueOrErrorMessage(getString(bI(d)), "You don't have a duck staked")
3221- let mV = J(d)
3222- let mW = (valueOrElse(getInteger(mV), 0) + mT)
3223- let mX = F(B)
3224- let mY = valueOrElse(getInteger(mX), 0)
3225- let mZ = (mW + mY)
3226- let na = ((((mL + mM) + mN) + mO) + mP)
3227- if ((na > mZ))
3228- then throw((("There are only " + toString(mZ)) + " free points to distribute"))
3234+ let mZ = mY._1
3235+ let na = mY._2
3236+ let C = valueOrErrorMessage(getString(bN(d)), "You don't have a duck staked")
3237+ let nb = K(d)
3238+ let nc = (valueOrElse(getInteger(nb), 0) + mZ)
3239+ let nd = G(C)
3240+ let ne = valueOrElse(getInteger(nd), 0)
3241+ let nf = (nc + ne)
3242+ let ng = ((((mR + mS) + mT) + mU) + mV)
3243+ if ((ng > nf))
3244+ then throw((("There are only " + toString(nf)) + " free points to distribute"))
32293245 else {
3230- let nb = C(B)
3231- let ar = split(valueOrElse(getString(nb), "0_0_0_0_0"), "_")
3232- let nc = (mW - na)
3233- $Tuple2((([IntegerEntry(mV, if ((0 > nc))
3246+ let nh = D(C)
3247+ let au = split(valueOrElse(getString(nh), "0_0_0_0_0"), "_")
3248+ let ni = (nc - ng)
3249+ $Tuple2((([IntegerEntry(nb, if ((0 > ni))
32343250 then 0
3235- else nc), IntegerEntry(mX, if ((0 > nc))
3236- then (mY + nc)
3237- else mY), StringEntry(nb, makeString([toString((parseIntValue(ar[l]) + mL)), toString((parseIntValue(ar[m]) + mM)), toString((parseIntValue(ar[n]) + mN)), toString((parseIntValue(ar[o]) + mO)), toString((parseIntValue(ar[p]) + mP))], "_"))] ++ lm) ++ mU), 0)
3251+ else ni), IntegerEntry(nd, if ((0 > ni))
3252+ then (ne + ni)
3253+ else ne), StringEntry(nh, makeString([toString((parseIntValue(au[m]) + mR)), toString((parseIntValue(au[n]) + mS)), toString((parseIntValue(au[o]) + mT)), toString((parseIntValue(au[p]) + mU)), toString((parseIntValue(au[q]) + mV))], "_"))] ++ ls) ++ na), 0)
32383254 }
32393255 }
32403256 }
32413257
32423258
32433259
3244-@Callable(gL)
3245-func splitByGlobalWeightsREADONLY (eJ) = $Tuple2(nil, fb(eJ))
3246-
3247-
3248-
3249-@Callable(gL)
3250-func splitByGlobalAndLocalWeightsREADONLY (nd,ne,gO) = {
3251- let gH = gN(gO)
3252- $Tuple2(nil, $Tuple2(fb(nd), eM(ne, gH)))
3253- }
3254-
3255-
3256-
3257-@Callable(gL)
3258-func getBackpackREADONLY (B) = $Tuple2(nil, makeString(hL(bJ(B)), ":"))
3259-
3260-
3261-
3262-@Callable(gL)
3263-func getWarehouseREADONLY (Q) = {
3264- let jt = value(assetInfo(fromBase58String(Q)))
3265- let ia = (dI(split(jt.description, "_")[dj]) / cG)
3266- let ib = valueOrElse(getInteger(bz(Q)), 0)
3267- $Tuple2(nil, makeString_2C(hY(by(Q), ia, ib), ":"))
3268- }
3269-
3270-
3271-
3272-@Callable(gL)
3273-func saveLastTx () = if (!(containsElement([df, dd, dg, dh], gL.caller)))
3260+@Callable(gQ)
3261+func splitByGlobalWeightsREADONLY (eO) = $Tuple2(nil, fg(eO))
3262+
3263+
3264+
3265+@Callable(gQ)
3266+func splitByGlobalAndLocalWeightsREADONLY (nj,nk,gT) = {
3267+ let gM = gS(gT)
3268+ $Tuple2(nil, $Tuple2(fg(nj), eR(nk, gM)))
3269+ }
3270+
3271+
3272+
3273+@Callable(gQ)
3274+func getBackpackREADONLY (C) = $Tuple2(nil, makeString(hQ(bO(C)), ":"))
3275+
3276+
3277+
3278+@Callable(gQ)
3279+func getWarehouseREADONLY (R) = {
3280+ let jy = value(assetInfo(fromBase58String(R)))
3281+ let if = (dN(split(jy.description, "_")[do]) / cL)
3282+ let ig = valueOrElse(getInteger(bE(R)), 0)
3283+ $Tuple2(nil, makeString_2C(id(bD(R), if, ig), ":"))
3284+ }
3285+
3286+
3287+
3288+@Callable(gQ)
3289+func saveLastTx () = if (!(containsElement([dk, di, dl, dm], gQ.caller)))
32743290 then throw("Access denied")
3275- else $Tuple2(li(gL), 42)
3276-
3277-
3278-
3279-@Callable(gL)
3280-func updateDuckStats (B,kb) = if ((gL.caller != dd))
3291+ else $Tuple2(lo(gQ), 42)
3292+
3293+
3294+
3295+@Callable(gQ)
3296+func updateDuckStats (C,kg) = if ((gQ.caller != di))
32813297 then throw("Access denied")
3282- else ka(B, kb)
3283-
3284-
3285-
3286-@Callable(gL)
3287-func updateAccStats (d,kb) = if (!(containsElement([df, dd, dh], gL.caller)))
3298+ else kf(C, kg)
3299+
3300+
3301+
3302+@Callable(gQ)
3303+func updateAccStats (d,kg) = if (!(containsElement([dk, di, dm], gQ.caller)))
32883304 then throw("Access denied")
3289- else kg(d, kb)
3290-
3291-
3292-
3293-@Callable(gL)
3294-func equipDuck (nf) = {
3295- let lm = li(gL)
3296- if ((size(gL.payments) != 0))
3305+ else kl(d, kg)
3306+
3307+
3308+
3309+@Callable(gQ)
3310+func equipDuck (nl) = {
3311+ let ls = lo(gQ)
3312+ if ((size(gQ.payments) != 0))
32973313 then throw("No payments required")
32983314 else {
3299- let d = toString(gL.originCaller)
3300- let B = valueOrErrorMessage(getString(bI(d)), "You don't have a duck staked")
3301- if (kq(B))
3315+ let d = toString(gQ.originCaller)
3316+ let C = valueOrErrorMessage(getString(bN(d)), "You don't have a duck staked")
3317+ if (kv(C))
33023318 then throw("equipDuck_checkTournament")
3303- else if (kr(B))
3319+ else if (kw(C))
33043320 then throw("equipDuck_checkDelivery")
33053321 else {
3306- let gy = G(B)
3307- let ng = split(valueOrElse(getString(gy), ",;,_,;,_,;,_,;,_,;,_,;,"), "_")
3308- let hM = bJ(B)
3309- let ip = hL(hM)
3310- let lD = split(nf, "_")
3311- if ((size(lD) != r))
3322+ let gD = H(C)
3323+ let nm = split(valueOrElse(getString(gD), ",;,_,;,_,;,_,;,_,;,_,;,"), "_")
3324+ let hR = bO(C)
3325+ let iu = hQ(hR)
3326+ let lJ = split(nl, "_")
3327+ if ((size(lJ) != s))
33123328 then throw("Wrong equipment string")
33133329 else {
3314- let gA = gn(ng, fy(ip[bl]), true, nil)
3315- let gB = split(lD[q], ";")[1]
3316- let ap = if ((gB == ""))
3330+ let gF = gs(nm, fD(iu[bq]), true, nil)
3331+ let gG = split(lJ[r], ";")[1]
3332+ let as = if ((gG == ""))
33173333 then 0
33183334 else {
3319- let gC = split(gB, ",")[0]
3320- if ((gC == ""))
3335+ let gH = split(gG, ",")[0]
3336+ if ((gH == ""))
33213337 then 0
33223338 else {
3323- let fN = split(gC, ":")
3324- let db = fN[0]
3325- let gD = fN[1]
3326- if (if (if (if (if ((db == "06"))
3339+ let fS = split(gH, ":")
3340+ let dg = fS[0]
3341+ let gI = fS[1]
3342+ if (if (if (if (if ((dg == "06"))
33273343 then true
3328- else (db == "07"))
3344+ else (dg == "07"))
33293345 then true
3330- else (db == "08"))
3331- then (gD != "")
3346+ else (dg == "08"))
3347+ then (gI != "")
33323348 else false)
3333- then (parseIntValue(gD) > 0)
3349+ then (parseIntValue(gI) > 0)
33343350 else false)
3335- then parseIntValue(split(aT[parseIntValue(db)], "_")[aV])
3351+ then parseIntValue(split(aY[parseIntValue(dg)], "_")[ba])
33363352 else 0
33373353 }
33383354 }
3339- let gi = an(this, B, ap, true)
3340- let gE = gn(lD, gA, false, gi)
3341- let nh = fD(gE)
3342- $Tuple2(([StringEntry(gy, nf), StringEntry(hM, makeString_2C([ip[bi], ip[bj], ip[bk], nh], ":")), StringEntry(M(B), makeString([toString(gi[7]), toString(gi[8]), toString(gi[9]), toString(gi[10]), toString(gi[11])], "_"))] ++ lm), 0)
3355+ let gn = aq(this, C, as, true)
3356+ let gJ = gs(lJ, gF, false, gn)
3357+ let nn = fI(gJ)
3358+ $Tuple2(([StringEntry(gD, nl), StringEntry(hR, makeString_2C([iu[bn], iu[bo], iu[bp], nn], ":")), StringEntry(N(C), makeString([toString(gn[7]), toString(gn[8]), toString(gn[9]), toString(gn[10]), toString(gn[11])], "_"))] ++ ls), 0)
33433359 }
33443360 }
33453361 }
33473363
33483364
33493365
3350-@Callable(gL)
3351-func fortificateLand (Q,ni) = {
3352- let lm = li(gL)
3353- if ((size(gL.payments) != 0))
3366+@Callable(gQ)
3367+func fortificateLand (R,no) = {
3368+ let ls = lo(gQ)
3369+ if ((size(gQ.payments) != 0))
33543370 then throw("No payments required")
33553371 else {
3356- let d = toString(gL.originCaller)
3357- let B = valueOrElse(getString(bI(d)), "")
3358- let fI = an(this, B, 0, false)
3359- let nj = bA(Q)
3360- let nk = split(valueOrElse(getString(nj), ":0_15:0_18:0"), "_")
3361- let jt = value(assetInfo(fromBase58String(Q)))
3362- let ia = (dI(split(jt.description, "_")[dj]) / cG)
3363- let ib = valueOrElse(getInteger(bz(Q)), 0)
3364- let hZ = by(Q)
3365- let ie = hY(hZ, ia, ib)
3366- let nl = split(ie[bd], "_")
3367- let nm = parseIntValue(nl[bf])
3368- let nn = parseIntValue(nl[bg])
3369- let no = split(ni, "_")
3370- let np = gu(nk, fy(ie[bc]), nm, nn, true, nil)
3371- let gA = np._1
3372- let nq = np._2
3373- let nr = np._3
3374- let ns = gu(no, gA, nq, nr, false, fI)
3375- let gE = ns._1
3376- let nt = ns._2
3377- let nu = ns._3
3378- let nh = fD(gE)
3379- let jZ = makeString([nl[be], toString(nt), toString(nu), nl[bh]], "_")
3380- $Tuple2(([StringEntry(nj, ni), StringEntry(hZ, makeString_2C([ie[aZ], ie[ba], ie[bb], nh, jZ], ":"))] ++ lm), 0)
3381- }
3382- }
3383-
3384-
3385-
3386-@Callable(gL)
3387-func initDuckTourAttempt (B) = if ((gL.caller != dg))
3372+ let d = toString(gQ.originCaller)
3373+ let C = valueOrElse(getString(bN(d)), "")
3374+ let fN = aq(this, C, 0, false)
3375+ let np = bF(R)
3376+ let nq = split(valueOrElse(getString(np), ":0_15:0_18:0"), "_")
3377+ let jy = value(assetInfo(fromBase58String(R)))
3378+ let if = (dN(split(jy.description, "_")[do]) / cL)
3379+ let ig = valueOrElse(getInteger(bE(R)), 0)
3380+ let ie = bD(R)
3381+ let ij = id(ie, if, ig)
3382+ let nr = split(ij[bi], "_")
3383+ let ns = parseIntValue(nr[bk])
3384+ let nt = parseIntValue(nr[bl])
3385+ let nu = split(no, "_")
3386+ let nv = gz(nq, fD(ij[bh]), ns, nt, true, nil)
3387+ let gF = nv._1
3388+ let nw = nv._2
3389+ let nx = nv._3
3390+ let ny = gz(nu, gF, nw, nx, false, fN)
3391+ let gJ = ny._1
3392+ let nz = ny._2
3393+ let nA = ny._3
3394+ let nn = fI(gJ)
3395+ let ke = makeString([nr[bj], toString(nz), toString(nA), nr[bm]], "_")
3396+ $Tuple2(([StringEntry(np, no), StringEntry(ie, makeString_2C([ij[be], ij[bf], ij[bg], nn, ke], ":"))] ++ ls), 0)
3397+ }
3398+ }
3399+
3400+
3401+
3402+@Callable(gQ)
3403+func initDuckTourAttempt (C) = if ((gQ.caller != dl))
33883404 then throw("Access denied")
33893405 else {
3390- let jc = A(B)
3391- let jd = ah(valueOrElse(getInteger(E(B)), 0))
3392- let kv = valueOrElse(getInteger(jc), jd)
3393- let nv = bK(B)
3394- let jr = valueOrElse(getString(nv), aK)
3395- let cf = valueOrElse(getInteger(dg, bQ), 0)
3396- let nw = (toString(cf) + "_T_0")
3397- $Tuple2([IntegerEntry(K(B), kv), IntegerEntry(jc, jd), StringEntry(L(B), jr), StringEntry(nv, nw)], nw)
3406+ let jh = B(C)
3407+ let ji = ak(valueOrElse(getInteger(F(C)), 0))
3408+ let kA = valueOrElse(getInteger(jh), ji)
3409+ let nB = bP(C)
3410+ let jw = valueOrElse(getString(nB), aN)
3411+ let ck = valueOrElse(getInteger(dl, bV), 0)
3412+ let nC = (toString(ck) + "_T_0")
3413+ $Tuple2([IntegerEntry(L(C), kA), IntegerEntry(jh, ji), StringEntry(M(C), jw), StringEntry(nB, nC)], nC)
33983414 }
33993415
34003416
34013417
3402-@Callable(gL)
3418+@Callable(gQ)
34033419 func breakAttempt () = {
3404- let lm = li(gL)
3405- let B = valueOrErrorMessage(getString(bI(toString(gL.caller))), "You don't have a duck staked")
3406- let nv = bK(B)
3407- let jr = valueOrElse(getString(nv), aK)
3408- if ((split(jr, "_")[bn] != "T"))
3420+ let ls = lo(gQ)
3421+ let C = valueOrErrorMessage(getString(bN(toString(gQ.caller))), "You don't have a duck staked")
3422+ let nB = bP(C)
3423+ let jw = valueOrElse(getString(nB), aN)
3424+ if ((split(jw, "_")[bs] != "T"))
34093425 then throw("Your duck is not in the tournament")
34103426 else {
3411- let kA = getIntegerValue(K(B))
3412- let kB = getStringValue(L(B))
3413- $Tuple2(((lm :+ IntegerEntry(A(B), kA)) :+ StringEntry(nv, kB)), jr)
3414- }
3415- }
3416-
3417-
3418-
3419-@Callable(gL)
3420-func exitTournamentInternal (B) = if ((gL.caller != this))
3427+ let kG = getIntegerValue(L(C))
3428+ let kH = getStringValue(M(C))
3429+ $Tuple2(((ls :+ IntegerEntry(B(C), kG)) :+ StringEntry(nB, kH)), jw)
3430+ }
3431+ }
3432+
3433+
3434+
3435+@Callable(gQ)
3436+func exitTournamentInternal (C) = if ((gQ.caller != this))
34213437 then throw("Access denied")
34223438 else {
3423- let kA = getIntegerValue(K(B))
3424- let kB = getStringValue(L(B))
3425- $Tuple2([IntegerEntry(A(B), kA), StringEntry(bK(B), kB)], false)
3439+ let kG = getIntegerValue(L(C))
3440+ let kH = getStringValue(M(C))
3441+ $Tuple2([IntegerEntry(B(C), kG), StringEntry(bP(C), kH)], false)
34263442 }
34273443
34283444
34293445
3430-@Callable(gL)
3431-func exitDeliveryInternal (B) = if ((gL.caller != this))
3446+@Callable(gQ)
3447+func exitDeliveryInternal (C) = if ((gQ.caller != this))
34323448 then throw("Access denied")
34333449 else {
3434- let mi = ks(B, false, 0, 0)
3435- $Tuple2((mi._1 ++ mi._2), false)
3450+ let mo = kx(C, false, 0, 0)
3451+ $Tuple2((mo._1 ++ mo._2), false)
34363452 }
34373453
34383454
34393455
3440-@Callable(gL)
3441-func autoExitDelivery (B,iW,nx,kt) = if ((gL.caller != this))
3456+@Callable(gQ)
3457+func autoExitDelivery (C,jb,nD,ky) = if ((gQ.caller != this))
34423458 then throw("Access denied")
34433459 else {
3444- let mi = ks(B, true, iW, kt)
3445- $Tuple2(mi._1, $Tuple2(mi._3, mi._4))
3460+ let mo = kx(C, true, jb, ky)
3461+ $Tuple2(mo._1, $Tuple2(mo._3, mo._4))
34463462 }
34473463
34483464
34493465
3450-@Callable(gL)
3451-func prepareRobbery (iR,iS) = {
3452- let lm = li(gL)
3453- if (!(sigVerify_8Kb(iR, iS, ea)))
3466+@Callable(gQ)
3467+func prepareRobbery (iW,iX) = {
3468+ let ls = lo(gQ)
3469+ if (!(sigVerify_8Kb(iW, iX, ef)))
34543470 then throw("signature does not match")
3455- else if ((size(gL.payments) != 1))
3471+ else if ((size(gQ.payments) != 1))
34563472 then throw("exactly 1 payment must be attached")
34573473 else {
3458- let ln = gL.payments[0]
3459- let ny = ln.amount
3460- if (if (!(isDefined(ln.assetId)))
3474+ let lt = gQ.payments[0]
3475+ let nE = lt.amount
3476+ if (if (!(isDefined(lt.assetId)))
34613477 then true
3462- else (value(ln.assetId) != dn))
3478+ else (value(lt.assetId) != ds))
34633479 then throw("WLGOLD payments only!")
34643480 else {
3465- let fq = split(toUtf8String(iR), "|")
3466- if ((size(fq) != 2))
3481+ let fv = split(toUtf8String(iW), "|")
3482+ if ((size(fv) != 2))
34673483 then throw("Wrong message format")
34683484 else {
3469- let B = fq[0]
3470- if (kq(B))
3485+ let C = fv[0]
3486+ if (kv(C))
34713487 then throw("prepareRobbery_checkTournament")
3472- else if (kr(B))
3488+ else if (kw(C))
34733489 then throw("prepareRobbery_checkDelivery")
34743490 else {
3475- let az = av(this, B)._1
3476- if ((az > ny))
3477- then throw(((("Payment " + toString(ny)) + " < required ") + toString(az)))
3491+ let aC = ay(this, C)._1
3492+ if ((aC > nE))
3493+ then throw(((("Payment " + toString(nE)) + " < required ") + toString(aC)))
34783494 else {
3479- let nz = split(fq[1], "_")
3480- let ay = lastBlock.timestamp
3481- let aA = valueOrElse(getInteger(S(B)), 0)
3482- let aB = valueOrElse(getString(T(B)), "")
3483- let aC = valueOrElse(getInteger(R(aB)), 0)
3484- if (if ((aA != y))
3485- then (aC > ay)
3495+ let nF = split(fv[1], "_")
3496+ let aB = lastBlock.timestamp
3497+ let aD = valueOrElse(getInteger(T(C)), 0)
3498+ let aE = valueOrElse(getString(U(C)), "")
3499+ let aF = valueOrElse(getInteger(S(aE)), 0)
3500+ if (if ((aD != z))
3501+ then (aF > aB)
34863502 else false)
3487- then throw(("You already started robbing, wait till " + toString(aC)))
3503+ then throw(("You already started robbing, wait till " + toString(aF)))
34883504 else {
3489- func nA (eS,Q) = {
3490- let nB = valueOrElse(getInteger(P(Q)), 0)
3491- let nC = valueOrElse(getInteger(R(Q)), 0)
3492- if ((nB > size(v)))
3505+ func nG (eX,R) = {
3506+ let nH = valueOrElse(getInteger(Q(R)), 0)
3507+ let nI = valueOrElse(getInteger(S(R)), 0)
3508+ if ((nH > size(w)))
34933509 then throw("Invalid state")
3494- else if ((ay > nC))
3510+ else if ((aB > nI))
34953511 then {
3496- let nD = valueOrElse(getInteger(bs(Q)), 0)
3497- if ((0 >= nD))
3498- then eS
3512+ let nJ = valueOrElse(getInteger(bx(R)), 0)
3513+ if ((0 >= nJ))
3514+ then eX
34993515 else {
3500- let gs = value(assetInfo(fromBase58String(Q)))
3501- let jx = split(gs.description, "_")
3502- let jj = dI(jx[dj])
3503- let nE = ji(Q, jj)
3504- let gR = (ay - nD)
3505- let jA = fraction(gR, (nE * jj), a)
3506- if ((w > jA))
3507- then eS
3508- else (eS :+ Q)
3516+ let gx = value(assetInfo(fromBase58String(R)))
3517+ let jC = split(gx.description, "_")
3518+ let jo = dN(jC[do])
3519+ let nK = jn(R, jo)
3520+ let gW = (aB - nJ)
3521+ let jF = fraction(gW, (nK * jo), a)
3522+ if ((x > jF))
3523+ then eX
3524+ else (eX :+ R)
35093525 }
35103526 }
3511- else eS
3527+ else eX
35123528 }
35133529
3514- let nF = {
3515- let eU = nz
3516- let eV = size(eU)
3517- let eW = nil
3518- func eX (eY,eZ) = if ((eZ >= eV))
3519- then eY
3520- else nA(eY, eU[eZ])
3521-
3522- func fa (eY,eZ) = if ((eZ >= eV))
3523- then eY
3530+ let nL = {
3531+ let eZ = nF
3532+ let fa = size(eZ)
3533+ let fb = nil
3534+ func fc (fd,fe) = if ((fe >= fa))
3535+ then fd
3536+ else nG(fd, eZ[fe])
3537+
3538+ func ff (fd,fe) = if ((fe >= fa))
3539+ then fd
35243540 else throw("List size exceeds 10")
35253541
3526- fa(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
3542+ ff(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fb, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
35273543 }
3528- if ((size(nF) == 0))
3544+ if ((size(nL) == 0))
35293545 then throw("No candidates for robbery")
35303546 else {
3531- let nG = dS(size(nF), height, (iS + gL.transactionId))
3532- let Q = nF[nG]
3533- $Tuple2(([IntegerEntry(P(Q), x), IntegerEntry(R(Q), (ay + v[x])), IntegerEntry(S(B), z), StringEntry(T(B), Q)] ++ lm), Q)
3547+ let nM = dX(size(nL), height, (iX + gQ.transactionId))
3548+ let R = nL[nM]
3549+ $Tuple2(([IntegerEntry(Q(R), y), IntegerEntry(S(R), (aB + w[y])), IntegerEntry(T(C), A), StringEntry(U(C), R)] ++ ls), R)
35343550 }
35353551 }
35363552 }
35423558
35433559
35443560
3545-@Callable(gL)
3546-func robLand (iR,iS) = {
3547- let lm = li(gL)
3548- if (!(sigVerify_8Kb(iR, iS, ea)))
3561+@Callable(gQ)
3562+func robLand (iW,iX) = {
3563+ let ls = lo(gQ)
3564+ if (!(sigVerify_8Kb(iW, iX, ef)))
35493565 then throw("signature does not match")
35503566 else {
3551- let bM = toString(gL.caller)
3552- let B = valueOrErrorMessage(getString(bI(bM)), "You don't have a duck staked")
3553- let ay = lastBlock.timestamp
3554- $Tuple2((lm :+ IntegerEntry(N(B), ay)), 0)
3555- }
3556- }
3557-
3558-
3559-
3560-@Callable(gL)
3561-func acceptDelivery () = if (!(cw))
3567+ let bR = toString(gQ.caller)
3568+ let C = valueOrErrorMessage(getString(bN(bR)), "You don't have a duck staked")
3569+ let aB = lastBlock.timestamp
3570+ $Tuple2((ls :+ IntegerEntry(O(C), aB)), 0)
3571+ }
3572+ }
3573+
3574+
3575+
3576+@Callable(gQ)
3577+func acceptDelivery () = if (!(cB))
35623578 then throw("Delivery feature is turned off!")
35633579 else {
3564- let lm = li(gL)
3565- let bM = toString(gL.caller)
3566- let B = valueOrErrorMessage(getString(bI(bM)), "You don't have a duck staked")
3567- let nH = valueOrElse(getInteger(dd, bO), 0)
3568- let ky = valueOrElse(getInteger(dd, bP), 0)
3569- if ((aN > (nH - ky)))
3570- then throw(((("Delivery is not available, fund=" + dN(nH, 6)) + ", locked=") + dN(ky, 6)))
3580+ let ls = lo(gQ)
3581+ let bR = toString(gQ.caller)
3582+ let C = valueOrErrorMessage(getString(bN(bR)), "You don't have a duck staked")
3583+ let nN = valueOrElse(getInteger(di, bT), 0)
3584+ let kE = valueOrElse(getInteger(di, bU), 0)
3585+ if ((aQ > (nN - kE)))
3586+ then throw(((("Delivery is not available, fund=" + dS(nN, 6)) + ", locked=") + dS(kE, 6)))
35713587 else {
3572- let ay = lastBlock.timestamp
3573- let nI = valueOrElse(getInteger(U(B)), 0)
3574- if ((nI > ay))
3575- then throw(("Delivery is forbidden for your duck until " + toString(nI)))
3576- else if (kq(B))
3577- then throw("acceptDelivery_checkTournament")
3578- else if (kr(B))
3579- then throw("acceptDelivery_checkDelivery")
3580- else {
3581- let nJ = dA(invoke(dd, "updateDeliveryLocked", [(ky + aN)], nil))
3582- let jc = A(B)
3583- let jd = ah(valueOrElse(getInteger(E(B)), 0))
3584- let kv = valueOrElse(getInteger(jc), jd)
3585- let nv = bK(B)
3586- let jr = valueOrElse(getString(nv), aK)
3587- let nK = (toString(ay) + "_D_0")
3588- $Tuple2(([IntegerEntry(K(B), kv), IntegerEntry(jc, jd), StringEntry(L(B), jr), StringEntry(nv, nK)] ++ lm), $Tuple2(nK, nJ))
3589- }
3588+ let aB = lastBlock.timestamp
3589+ let nO = valueOrElse(getInteger(V(C)), 0)
3590+ if ((nO > aB))
3591+ then throw(("Delivery is forbidden for your duck until " + toString(nO)))
3592+ else {
3593+ let fX = valueOrElse(getInteger(W(bR)), 0)
3594+ let nP = valueOrElse(getInteger(X(bR)), 0)
3595+ let nQ = (aB / a)
3596+ let nR = valueOrElse(getInteger(dm, e(bR)), 0)
3597+ let nS = (aS + (nR / aT))
3598+ if (if ((fX >= nS))
3599+ then (nP >= nQ)
3600+ else false)
3601+ then throw((("You already used " + toString(nS)) + " delivery attempts for today"))
3602+ else if (kv(C))
3603+ then throw("acceptDelivery_checkTournament")
3604+ else if (kw(C))
3605+ then throw("acceptDelivery_checkDelivery")
3606+ else {
3607+ let nT = dF(invoke(di, "updateDeliveryLocked", [(kE + aQ)], nil))
3608+ let jh = B(C)
3609+ let ji = ak(valueOrElse(getInteger(F(C)), 0))
3610+ let kA = valueOrElse(getInteger(jh), ji)
3611+ let nB = bP(C)
3612+ let jw = valueOrElse(getString(nB), aN)
3613+ let nU = (toString(aB) + "_D_0")
3614+ $Tuple2(([IntegerEntry(L(C), kA), IntegerEntry(jh, ji), StringEntry(M(C), jw), StringEntry(nB, nU)] ++ ls), $Tuple2(nU, nT))
3615+ }
3616+ }
35903617 }
35913618 }
35923619
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 86400000
55
66 let b = 60000
77
88 func c (d) = ("lastArbTimeUser_" + d)
99
1010
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
38-
39-let s = 2
11+func e (d) = ("acresStakedAmountByUser_" + d)
12+
13+
14+let f = 100000000
15+
16+let g = 3200
17+
18+let h = 4000
19+
20+let i = 3
21+
22+let j = 100000000
23+
24+let k = 400
25+
26+let l = ["Strength", "Accuracy", "Intellect", "Endurance", "Dexterity", "Level", "Health"]
27+
28+let m = 0
29+
30+let n = 1
31+
32+let o = 2
33+
34+let p = 3
35+
36+let q = 4
37+
38+let r = 0
39+
40+let s = 6
4041
4142 let t = 2
4243
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-
111-
112-let V = 10000
113-
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
44+let u = 2
45+
46+let v = 30
47+
48+let w = [0, 600000, 900000, 43200000, 21600000]
49+
50+let x = 20000000
51+
52+let y = 1
53+
54+let z = 0
55+
56+let A = 1
57+
58+func B (C) = ("duckHealth_" + C)
59+
60+
61+func D (C) = ("duckChars_" + C)
62+
63+
64+func E (C) = ("duckXP_" + C)
65+
66+
67+func F (C) = ("duckLevel_" + C)
68+
69+
70+func G (C) = ("duckFreePoints_" + C)
71+
72+
73+func H (C) = ("duckEquipment_" + C)
74+
75+
76+func I (d) = ("userXP_" + d)
77+
78+
79+func J (d) = ("userLevel_" + d)
80+
81+
82+func K (d) = ("userFreePoints_" + d)
83+
84+
85+func L (C) = ("savedHealth_" + C)
86+
87+
88+func M (C) = ("savedLocation_" + C)
89+
90+
91+func N (C) = ("duckBuffs_" + C)
92+
93+
94+func O (C) = ("lastRobberyTime_" + C)
95+
96+
97+func P (C) = ("lastRobberyCost_" + C)
98+
99+
100+func Q (R) = ("landRobberyState_" + R)
101+
102+
103+func S (R) = ("landCooldownETA_" + R)
104+
105+
106+func T (C) = ("duckRobberyState_" + C)
107+
108+
109+func U (C) = ("lockedLandByDuck_" + C)
110+
111+
112+func V (C) = ("deliveryDelayByDuck_" + C)
113+
114+
115+func W (d) = ("userDeliverycount_" + d)
116+
117+
118+func X (d) = ("userLastDeliveryDay_" + d)
119+
120+
121+let Y = 10000
122+
123+let Z = 10000
124+
125+let aa = 2000
126+
127+let ab = 100000
125128
126129 let ac = 1000000
127130
128-let ad = 1000000
131+let ad = 5000000
129132
130133 let ae = 10000
131134
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
206-
207-let aX = 10
208-
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
135+let af = 1000000
136+
137+let ag = 1000000
138+
139+let ah = 10000
140+
141+func ai (aj) = fraction(g, pow(aj, 4, h, 4, 4, DOWN), f)
142+
143+
144+func ak (al) = (100 + al)
145+
146+
147+func am (an,ao) = {
148+ let ap = ai(ao)
149+[ap, (i * (ap - an))]
150+ }
151+
152+
153+func aq (ar,C,as,at) = {
154+ let au = split(valueOrElse(getString(ar, D(C)), "0_0_0_0_0"), "_")
155+ let av = valueOrElse(getInteger(ar, F(C)), 0)
156+ let aw = valueOrElse(getInteger(ar, B(C)), ak(av))
157+ let ax = split(valueOrElse(getString(ar, N(C)), "0_0_0_0_0"), "_")
158+ ([parseIntValue(au[m]), parseIntValue(au[n]), parseIntValue(au[o]), parseIntValue(au[p]), parseIntValue(au[q]), av, aw] ++ (if (at)
159+ then [as, as, as, as, as]
160+ else [parseIntValue(ax[m]), parseIntValue(ax[n]), parseIntValue(ax[o]), parseIntValue(ax[p]), parseIntValue(ax[q])]))
161+ }
162+
163+
164+func ay (ar,C) = {
165+ let az = valueOrElse(getInteger(ar, P(C)), 0)
166+ let aA = valueOrElse(getInteger(ar, O(C)), 0)
167+ let aB = lastBlock.timestamp
168+ let aC = max([j, (az - (k * (aB - aA)))])
169+ let aD = valueOrElse(getInteger(ar, T(C)), 0)
170+ let aE = valueOrElse(getString(ar, U(C)), "")
171+ let aF = valueOrElse(getInteger(ar, S(aE)), 0)
172+ $Tuple5(aC, aA, aD, aE, aF)
173+ }
174+
175+
176+let aG = "LAND"
177+
178+let aH = "DUCK"
179+
180+let aI = "PRESALE"
181+
182+let aJ = 6
183+
184+let aK = 25
185+
186+let aL = 3456000
187+
188+let aM = 10000000000
189+
190+let aN = "Africa_F_Africa"
191+
192+let aO = 39637
193+
194+let aP = 10
195+
196+let aQ = 50000
197+
198+let aR = 600000
199+
200+let aS = 3
201+
202+let aT = 20000000
203+
204+let aU = ["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"]
205+
206+let aV = ["Americas", "Europe", "Asia", "Africa", "Oceania"]
207+
208+let aW = 10000000
209+
210+let aX = [15, 16, 17, 18, 19, 20]
211+
212+let aY = ["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_"]
213+
214+let aZ = 6
215+
216+let ba = 8
217+
218+let bb = 9
219+
220+let bc = 10
221+
222+let bd = 10
220223
221224 let be = 0
222225
223226 let bf = 1
224227
225228 let bg = 2
226229
227230 let bh = 3
228231
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)
232+let bi = 4
233+
234+let bj = 0
235+
236+let bk = 1
237+
238+let bl = 2
239+
240+let bm = 3
241+
242+let bn = 0
243+
244+let bo = 1
245+
246+let bp = 2
247+
248+let bq = 3
249+
250+let br = 0
251+
252+let bs = 1
253+
254+let bt = 2
255+
256+func bu (bv) = ("no_" + bv)
257+
258+
259+func bw (bv) = ("lcna_" + bv)
260+
261+
262+func bx (bv) = ("st_" + bv)
263+
264+
265+func by (bz,bv) = makeString(["las", bz, bv], "_")
266+
267+
268+func bA (bB,bv,bC) = ((((("sttao_" + bB) + "_") + bv) + "_") + bC)
269+
270+
271+func bD (R) = ("wh_" + R)
272+
273+
274+func bE (bv) = ("infraLevel_" + bv)
275+
276+
277+func bF (R) = ("fortifications_" + R)
278+
279+
280+func bG (bv) = ("duckCustomNameByAssetId_" + bv)
281+
282+
283+func bH (d) = ("accountCustomNameByAddr_" + d)
284+
285+
286+func bI (d) = ("accRefBy_" + d)
287+
288+
289+func bJ (C) = ("onboardArtActivatedOnDuck_" + C)
290+
291+
292+func bK (d) = ("onboardArtActivatedDuckBy_" + d)
293+
294+
295+func bL (d) = ("accReferrals_" + d)
296+
297+
298+func bM (bv) = ("duckOwner_" + bv)
299+
300+
301+func bN (bC) = ("stakedDuckByOwner_" + bC)
302+
303+
304+func bO (C) = ("backPack_" + C)
305+
306+
307+func bP (C) = ("duckLocation_" + C)
308+
309+
310+func bQ (bR) = ("%s%s__userGwlReleaseTime__" + bR)
311+
312+
313+func bS () = "emergencyWarehouseProducts"
314+
315+
316+let bT = "deliveryFund"
317+
318+let bU = "deliveryLocked"
319+
320+let bV = "%s__lastTourId"
321+
322+func bW (bX) = ("%s%d__tourStaticData__" + toString(bX))
323+
324+
325+func bY (bX) = ("%s%d__tourDynamicData__" + toString(bX))
326+
327+
328+func bZ (bX,C) = makeString(["%s%d%s__bestResultByTourAndDuck", toString(bX), C], "__")
329+
330+
331+let ca = 0
332+
333+let cb = 1
334+
335+let cc = 6
336+
337+let cd = 1
338+
339+func ce (cf,bX) = {
340+ let cg = split(valueOrErrorMessage(getString(cf, bW(bX)), (("Error reading tournament " + toString(bX)) + " data")), "__")
341+ let ch = split_4C(valueOrErrorMessage(getString(cf, bY(bX)), (("Error reading tournament " + toString(bX)) + " data")), "__")
342+[cg, ch]
343+ }
344+
345+
346+func ci (cf,cj) = {
347+ let ck = valueOrElse(getInteger(cf, bV), 0)
348+ let cl = split(cj, "_")
349+ let aB = lastBlock.timestamp
350+ let cm = ce(cf, ck)
351+ let cg = cm[ca]
352+ let ch = cm[cb]
353+ if (if (if ((cl[bs] == "T"))
354+ then (parseIntValue(cl[br]) == ck)
342355 else false)
343- then (cc[bY] == "INPROGRESS")
356+ then (ch[cd] == "INPROGRESS")
344357 else false)
345- then (parseIntValue(cb[bX]) > ay)
358+ then (parseIntValue(cg[cc]) > aB)
346359 else false
347360 }
348361
349362
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 ((cj + aO) > ay)
363+func cn (cj) = {
364+ let cl = split(cj, "_")
365+ let aB = lastBlock.timestamp
366+ let co = parseIntValue(cl[br])
367+ let cp = parseIntValue(cl[bt])
368+ if (if ((cl[bs] == "D"))
369+ then ((co + aR) > aB)
357370 else false)
358- then (3 >= ck)
371+ then (3 >= cp)
359372 else false
360373 }
361374
362375
363-func cl (ce) = {
364- let cm = split(ce, "_")[bn]
365- if ((cm != "T"))
366- then (cm != "D")
376+func cq (cj) = {
377+ let cr = split(cj, "_")[bs]
378+ if ((cr != "T"))
379+ then (cr != "D")
367380 else false
368381 }
369382
370383
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"))
384+func cs (cf,cj) = {
385+ let ck = valueOrElse(getInteger(cf, bV), 0)
386+ let cl = split(cj, "_")
387+ let aB = lastBlock.timestamp
388+ let cm = ce(cf, ck)
389+ let cg = cm[ca]
390+ let ch = cm[cb]
391+ let cr = cl[bs]
392+ if ((cr == "D"))
380393 then true
381- else if (if (if ((cg[bn] == "T"))
382- then (parseIntValue(cg[bm]) == cf)
394+ else if (if (if ((cl[bs] == "T"))
395+ then (parseIntValue(cl[br]) == ck)
383396 else false)
384- then (cc[bY] == "INPROGRESS")
397+ then (ch[cd] == "INPROGRESS")
385398 else false)
386- then (parseIntValue(cb[bX]) > ay)
399+ then (parseIntValue(cg[cc]) > aB)
387400 else false
388401 }
389402
390403
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-
396-
397-let cu = false
398-
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))
404+func ct (cu) = (parseIntValue(cu[aZ]) * aW)
405+
406+
407+func cv (cw,cx,cy) = throw(((((("Cheat attempt: oldLoc=" + cw) + ", newLoc=") + cx) + ", case=") + toString(cy)))
408+
409+
410+let cz = false
411+
412+let cA = false
413+
414+let cB = true
415+
416+let cC = take(drop(this.bytes, 1), 1)
417+
418+let cD = {
419+ let cE = cC
420+ if ((base58'2W' == cE))
408421 then base58'9wc3LXNA4TEBsXyKtoLE9mrbDD7WMHXvXrCjZvabLAsi'
409- else if ((base58'2T' == cz))
422+ else if ((base58'2T' == cE))
410423 then base58'6mWwf9mZBjVgkC54idpyaZLQfAosD914wT8fGf2iiY63'
411424 else throw("Unknown chain")
412425 }
413426
414-let cA = {
415- let cz = cx
416- if ((base58'2W' == cz))
427+let cF = {
428+ let cE = cC
429+ if ((base58'2W' == cE))
417430 then "3PQCuvFbvh4LkPUnrnU1z3jnbA1p9m3WNhv"
418- else if ((base58'2T' == cz))
431+ else if ((base58'2T' == cE))
419432 then "3MumkGGztCKAXpWDqxkddofqXSUbqQkvSJy"
420433 else throw("Unknown chain")
421434 }
422435
423-let cB = {
424- let cz = cx
425- if ((base58'2W' == cz))
436+let cG = {
437+ let cE = cC
438+ if ((base58'2W' == cE))
426439 then 10000000000
427- else if ((base58'2T' == cz))
440+ else if ((base58'2T' == cE))
428441 then 100000000
429442 else throw("Unknown chain")
430443 }
431444
432-let cC = {
433- let cz = cx
434- if ((base58'2W' == cz))
445+let cH = {
446+ let cE = cC
447+ if ((base58'2W' == cE))
435448 then 86400000
436- else if ((base58'2T' == cz))
449+ else if ((base58'2T' == cE))
437450 then 60000
438451 else throw("Unknown chain")
439452 }
440453
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"))
454+let cI = "__"
455+
456+let cJ = 1000000
457+
458+let cK = 100000000
459+
460+let cL = 25
461+
462+let cM = 100
463+
464+let cN = 225
465+
466+let cO = 400
467+
468+let cP = 625
469+
470+let cQ = [0, 1, 2, 3, 4, 5]
471+
472+func cR (cS,cT) = valueOrErrorMessage(getString(cS, cT), makeString(["mandatory ", toString(cS), ".", cT, " is not defined"], ""))
473+
474+
475+let cU = 1
476+
477+let cV = 2
478+
479+let cW = 3
480+
481+let cX = 4
482+
483+let cY = 7
484+
485+let cZ = 8
486+
487+func da () = "%s__restConfig"
488+
489+
490+func db () = "%s__restAddr"
491+
492+
493+func dc (dd) = split_4C(cR(dd, da()), cI)
494+
495+
496+func de (df,dg) = valueOrErrorMessage(addressFromString(df[dg]), ("Rest cfg doesn't contain address at index " + toString(dg)))
497+
498+
499+let dh = addressFromStringValue(valueOrElse(getString(this, db()), cF))
500+
501+let df = dc(dh)
502+
503+let ar = de(df, cU)
504+
505+let di = de(df, cV)
506+
507+let dj = de(df, cW)
508+
509+let dk = de(df, cX)
510+
511+let dl = de(df, cY)
512+
513+let dm = de(df, cZ)
514+
515+let dn = 0
516+
517+let do = 1
518+
519+let dp = 2
520+
521+let dq = 3
522+
523+let dr = "wlg_assetId"
524+
525+let ds = valueOrErrorMessage(getBinary(dk, dr), "WLGOLD is not issued yet")
526+
527+let dt = "acresAssetId"
528+
529+let du = valueOrErrorMessage(getBinary(dm, dt), "ACRES is not issued yet")
530+
531+let dv = 2
532+
533+func dw (cS) = ("finishBlockForAddr_" + cS)
534+
535+
536+func dx () = "resTypesProportions"
537+
538+
539+func dy (dz) = ("resTypesByContinent_" + dz)
540+
541+
542+func dA (bC) = ("stakedLandsByOwner_" + bC)
543+
544+
545+func dB (bC) = ("stakedPiecesByOwner_" + bC)
546+
547+
548+func dC (dD) = {
549+ let cE = dD
550+ if ($isInstanceOf(cE, "String"))
538551 then {
539- let dz = cz
540- dz
552+ let dE = cE
553+ dE
541554 }
542555 else throw("fail to cast into String")
543556 }
544557
545558
546-func dA (dy) = {
547- let cz = dy
548- if ($isInstanceOf(cz, "Int"))
559+func dF (dD) = {
560+ let cE = dD
561+ if ($isInstanceOf(cE, "Int"))
549562 then {
550- let dB = cz
551- dB
563+ let dG = cE
564+ dG
552565 }
553566 else throw("fail to cast into Int")
554567 }
555568
556569
557-func dC (dy) = {
558- let cz = dy
559- if ($isInstanceOf(cz, "List[Any]"))
570+func dH (dD) = {
571+ let cE = dD
572+ if ($isInstanceOf(cE, "List[Any]"))
560573 then {
561- let dD = cz
562- dD
574+ let dI = cE
575+ dI
563576 }
564577 else throw("fail to cast into List[Any]")
565578 }
566579
567580
568-func dE (dy) = {
569- let cz = dy
570- if ($isInstanceOf(cz, "Boolean"))
581+func dJ (dD) = {
582+ let cE = dD
583+ if ($isInstanceOf(cE, "Boolean"))
571584 then {
572- let dz = cz
573- dz
585+ let dE = cE
586+ dE
574587 }
575588 else throw("fail to cast into Boolean")
576589 }
577590
578591
579-func dF (dG) = {
580- let cz = dG
581- if ($isInstanceOf(cz, "(String, Int)"))
592+func dK (dL) = {
593+ let cE = dL
594+ if ($isInstanceOf(cE, "(String, Int)"))
582595 then {
583- let dH = cz
584- dH
596+ let dM = cE
597+ dM
585598 }
586599 else throw("fail to cast into (String, Int)")
587600 }
588601
589602
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
603+func dN (dO) = {
604+ let cE = dO
605+ if (("S" == cE))
606+ then cL
607+ else if (("M" == cE))
608+ then cM
609+ else if (("L" == cE))
610+ then cN
611+ else if (("XL" == cE))
612+ then cO
613+ else if (("XXL" == cE))
614+ then cP
602615 else throw("Unknown land size")
603616 }
604617
605618
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))
619+func dP (dE) = isDefined(parseInt(dE))
620+
621+
622+func dQ () = "contractsBlocked"
623+
624+
625+func dR (d) = ("lastTxIdByUser_" + d)
626+
627+
628+func dS (dL,dT) = {
629+ let dU = pow(10, 0, dT, 0, 0, DOWN)
630+ let dV = toString((dL % dU))
631+ let dW = drop(toString(dU), (1 + size(dV)))
632+ (((toString((dL / dU)) + ".") + dW) + dV)
633+ }
634+
635+
636+func dX (dY,dZ,ea) = {
637+ let eb = value(blockInfoByHeight(dZ))
638+ let ec = sha256((value(eb.vrf) + ea))
639+ (toInt(ec) % dY)
640+ }
641+
642+
643+let ed = {
644+ let cE = cC
645+ if ((base58'2W' == cE))
633646 then addressFromStringValue("3PEktVux2RhchSN63DsDo4b4mz4QqzKSeDv")
634- else if ((base58'2T' == cz))
647+ else if ((base58'2T' == cE))
635648 then this
636649 else throw("Unknown chain")
637650 }
638651
639-let dZ = {
640- let cz = cx
641- if ((base58'2W' == cz))
652+let ee = {
653+ let cE = cC
654+ if ((base58'2W' == cE))
642655 then addressFromStringValue("3PDVuU45H7Eh5dmtNbnRNRStGwULA7NY6Hb")
643- else if ((base58'2T' == cz))
656+ else if ((base58'2T' == cE))
644657 then this
645658 else throw("Unknown chain")
646659 }
647660
648-let ea = {
649- let cz = cx
650- if ((base58'2W' == cz))
651- then if (cu)
661+let ef = {
662+ let cE = cC
663+ if ((base58'2W' == cE))
664+ then if (cz)
652665 then base58'CWsMtTZC5BjjoL4Q1ayW4Wwb1ehGACQB6DrKyPgotKfm'
653666 else base58'6LfPuKJjLgekmncBhMg2LZyMTNVzZBccXR28ySXm9uXD'
654- else if ((base58'2T' == cz))
667+ else if ((base58'2T' == cE))
655668 then base58'6LfPuKJjLgekmncBhMg2LZyMTNVzZBccXR28ySXm9uXD'
656669 else throw("Unknown chain")
657670 }
658671
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))
672+let eg = base64'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=='
673+
674+let eh = 300000
675+
676+let ei = 5000000
677+
678+let ej = 50
679+
680+let ek = 10000000
681+
682+let el = {
683+ let cE = cC
684+ if ((base58'2W' == cE))
672685 then 252289527462
673- else if ((base58'2T' == cz))
686+ else if ((base58'2T' == cE))
674687 then 2522895274
675688 else throw("Unknown chain")
676689 }
677690
678-let eh = {
679- let cz = cx
680- if ((base58'2W' == cz))
691+let em = {
692+ let cE = cC
693+ if ((base58'2W' == cE))
681694 then 250000000
682- else if ((base58'2T' == cz))
695+ else if ((base58'2T' == cE))
683696 then 250000000
684697 else throw("Unknown chain")
685698 }
686699
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))
700+let en = 2500000000
701+
702+let eo = toBigInt(5)
703+
704+let ep = toBigInt(20)
705+
706+let eq = toBigInt((20 * 20))
707+
708+let er = toBigInt(((20 * 20) * 20))
709+
710+let es = toBigInt((((20 * 20) * 20) * 20))
711+
712+let et = toBigInt(((((20 * 20) * 20) * 20) * 20))
713+
714+let eu = 500
715+
716+func ev () = "nextLandNum"
717+
718+
719+func ew (ex) = ("lcn_" + ex)
720+
721+
722+func ey (ez) = ("la_" + ez)
723+
724+
725+func eA (bv,bC) = ((("ilao_" + bv) + "_") + bC)
726+
727+
728+func eB (ez) = ("lo_" + ez)
729+
730+
731+func eC (ex) = ("duckByCustomName_" + ex)
732+
733+
734+func eD (ex) = ("accountByCustomName_" + ex)
735+
736+
737+func eE () = "oldiesList"
738+
739+
740+let eF = 0
741+
742+let eG = 1
743+
744+let eH = 2
745+
746+let eI = 0
747+
748+let eJ = 5
749+
750+let eK = 6
751+
752+let eL = 7
753+
754+func eM (ez,dO) = ((aG + ez) + dO)
755+
756+
757+func eN (eO,eP) = {
758+ let eQ = if ((eO >= 0))
759+ then (((eO + eP) - 1) / eP)
760+ else -((((-(eO) + eP) - 1) / eP))
761+ (eQ * cK)
762+ }
763+
764+
765+func eR (eS,eT) = {
766+ let eU = (((((eT[0] + eT[1]) + eT[2]) + eT[3]) + eT[4]) + eT[5])
767+ if ((0 >= eU))
755768 then throw("Zero weights sum")
756769 else {
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
770+ let eV = fraction(eS, cJ, eU)
771+ func eW (eX,eY) = (eX :+ fraction(eY, eV, cJ))
772+
773+ let eZ = eT
774+ let fa = size(eZ)
775+ let fb = nil
776+ func fc (fd,fe) = if ((fe >= fa))
777+ then fd
778+ else eW(fd, eZ[fe])
779+
780+ func ff (fd,fe) = if ((fe >= fa))
781+ then fd
769782 else throw("List size exceeds 6")
770783
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))
784+ ff(fc(fc(fc(fc(fc(fc(fb, 0), 1), 2), 3), 4), 5), 6)
785+ }
786+ }
787+
788+
789+func fg (eS) = {
790+ let fh = split(value(getString(dx())), "_")
791+ if ((size(fh) != aJ))
779792 then throw("Wrong proportions data")
780793 else {
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))
794+ let fi = [parseIntValue(fh[0]), parseIntValue(fh[1]), parseIntValue(fh[2]), parseIntValue(fh[3]), parseIntValue(fh[4]), parseIntValue(fh[5])]
795+ eR(eS, fi)
796+ }
797+ }
798+
799+
800+func fj (fk,fl,fm) = {
801+ let fn = fg(fm)
802+ func fo (eX,dg) = {
803+ let fp = (parseIntValue(fl[dg]) - fn[dg])
804+ if ((0 > fp))
805+ then throw(((((("Not enough material idx=" + toString(dg)) + ", you have ") + fl[dg]) + ", but need ") + toString(fn[dg])))
806+ else (eX :+ toString(fp))
794807 }
795808
796- if (ff)
809+ if (fk)
797810 then {
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
811+ let eZ = cQ
812+ let fa = size(eZ)
813+ let fb = nil
814+ func fc (fd,fe) = if ((fe >= fa))
815+ then fd
816+ else fo(fd, eZ[fe])
817+
818+ func ff (fd,fe) = if ((fe >= fa))
819+ then fd
807820 else throw("List size exceeds 6")
808821
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)
822+ ff(fc(fc(fc(fc(fc(fc(fb, 0), 1), 2), 3), 4), 5), 6)
823+ }
824+ else fl
825+ }
826+
827+
828+func fq (fr,fs) = if ((fs == ""))
829+ then $Tuple2(fr, false)
817830 else {
818- func fo (eS,fp) = {
819- let fq = split(fp, ",")
820- if ((size(fq) != 2))
831+ func ft (eX,fu) = {
832+ let fv = split(fu, ",")
833+ if ((size(fv) != 2))
821834 then throw("Incorrect format, should be index,amount")
822835 else {
823- let db = parseIntValue(fq[0])
824- if (if ((0 > db))
836+ let dg = parseIntValue(fv[0])
837+ if (if ((0 > dg))
825838 then true
826- else (db >= size(aT)))
839+ else (dg >= size(aY)))
827840 then throw("Unknown product idx")
828841 else {
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"))
842+ let fw = parseIntValue(fv[1])
843+ let fx = split(eX._1, (fv[0] + ":"))
844+ if ((size(fx) != 2))
845+ then throw((("You don't have " + aU[dg]) + " equipped"))
833846 else {
834- let ft = fs[1]
835- let fu = if (dK(take(drop(ft, 1), 1)))
847+ let fy = fx[1]
848+ let fz = if (dP(take(drop(fy, 1), 1)))
836849 then 2
837850 else 1
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)
851+ let fA = parseIntValue(take(fy, fz))
852+ let fB = drop(fy, fz)
853+ let fC = if ((fA >= fw))
854+ then (fA - fw)
855+ else throw(((((("You equipped " + toString(fA)) + " of ") + aU[dg]) + ", but tried to use ") + toString(fw)))
856+ $Tuple2(((((fx[0] + fv[0]) + ":") + toString(fC)) + fB), if (eX._2)
844857 then true
845- else if (if ((db >= 6))
846- then (8 >= db)
858+ else if (if ((dg >= 6))
859+ then (8 >= dg)
847860 else false)
848- then (fx == 0)
861+ then (fC == 0)
849862 else false)
850863 }
851864 }
852865 }
853866 }
854867
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
868+ let eZ = split(fs, "_")
869+ let fa = size(eZ)
870+ let fb = $Tuple2(fr, false)
871+ func fc (fd,fe) = if ((fe >= fa))
872+ then fd
873+ else ft(fd, eZ[fe])
874+
875+ func ff (fd,fe) = if ((fe >= fa))
876+ then fd
864877 else throw("List size exceeds 10")
865878
866- fa(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
879+ ff(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fb, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
867880 }
868881
869882
870-func fy (fz) = {
871- let fA = if ((fz == ""))
883+func fD (fE) = {
884+ let fF = if ((fE == ""))
872885 then nil
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])
886+ else split_4C(fE, "_")
887+ func fG (eX,cu) = {
888+ let fH = (size(eX) / 8)
889+ let fA = if ((size(fF) > fH))
890+ then parseIntValue(fF[fH])
878891 else 0
879- (eS + toBytes(fv))
892+ (eX + toBytes(fA))
880893 }
881894
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
895+ let eZ = aY
896+ let fa = size(eZ)
897+ let fb = base58''
898+ func fc (fd,fe) = if ((fe >= fa))
899+ then fd
900+ else fG(fd, eZ[fe])
901+
902+ func ff (fd,fe) = if ((fe >= fa))
903+ then fd
891904 else throw("List size exceeds 50")
892905
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)))
906+ ff(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fb, 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)
907+ }
908+
909+
910+func fI (fJ) = {
911+ func fK (eX,cu) = {
912+ let fH = size(eX)
913+ let fL = take(drop(fJ, (8 * fH)), 8)
914+ (eX :+ toString(toInt(fL)))
902915 }
903916
904917 makeString_2C({
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
918+ let eZ = aY
919+ let fa = size(eZ)
920+ let fb = nil
921+ func fc (fd,fe) = if ((fe >= fa))
922+ then fd
923+ else fK(fd, eZ[fe])
924+
925+ func ff (fd,fe) = if ((fe >= fa))
926+ then fd
914927 else throw("List size exceeds 50")
915928
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)
929+ ff(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fb, 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)
917930 }, "_")
918931 }
919932
920933
921-func fH (fI,fJ) = {
922- func fK (eS,fC) = {
923- let fL = if ((size(fI) > (7 + fC)))
924- then fI[(7 + fC)]
934+func fM (fN,fO) = {
935+ func fP (eX,fH) = {
936+ let fQ = if ((size(fN) > (7 + fH)))
937+ then fN[(7 + fH)]
925938 else 0
926- if ((parseIntValue(fJ[fC]) > (fI[fC] + fL)))
927- then throw(("Requirement not satisfied: " + k[fC]))
939+ if ((parseIntValue(fO[fH]) > (fN[fH] + fQ)))
940+ then throw(("Requirement not satisfied: " + l[fH]))
928941 else true
929942 }
930943
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
944+ let eZ = [0, 1, 2, 3, 4, 5, 6]
945+ let fa = size(eZ)
946+ let fb = false
947+ func fc (fd,fe) = if ((fe >= fa))
948+ then fd
949+ else fP(fd, eZ[fe])
950+
951+ func ff (fd,fe) = if ((fe >= fa))
952+ then fd
940953 else throw("List size exceeds 7")
941954
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))
955+ ff(fc(fc(fc(fc(fc(fc(fc(fb, 0), 1), 2), 3), 4), 5), 6), 7)
956+ }
957+
958+
959+func fR (fS,fF,fT,fN,fU,fV) = {
960+ let fv = split(fS, ":")
961+ if ((size(fv) != 2))
949962 then throw("Incorrect format, should be index:amount")
950- else if (if (!(fO))
951- then (size(fq[0]) != 2)
963+ else if (if (!(fT))
964+ then (size(fv[0]) != 2)
952965 else false)
953966 then throw("Product idx should be 2 digits, zero padded")
954967 else {
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))
968+ let fW = parseIntValue(fv[0])
969+ let fX = parseIntValue(fv[1])
970+ if (!(containsElement(aX, fW)))
971+ then throw((("Product '" + aU[fW]) + "' cannot be used for land defense"))
972+ else if ((0 > fX))
960973 then throw("Count can't be negative")
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)
974+ else if ((fX > v))
975+ then throw(((("Can't put more than " + toString(v)) + " of ") + aU[fW]))
976+ else if ((fX == 0))
977+ then $Tuple3(fF, fU, fV)
965978 else {
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)
979+ let fY = take(fF, (8 * fW))
980+ let fA = toInt(take(drop(fF, (8 * fW)), 8))
981+ let fB = drop(fF, (8 * (fW + 1)))
982+ let cu = split(aY[fW], "_")
983+ if (if (!(fT))
984+ then (fX > fA)
972985 else false)
973- then throw(((((("You have " + toString(fv)) + " of ") + aP[fR]) + ", but tried to use ") + toString(fS)))
986+ then throw(((((("You have " + toString(fA)) + " of ") + aU[fW]) + ", but tried to use ") + toString(fX)))
974987 else {
975- let fx = if (if (!(fO))
976- then fH(fI, split(cp[aW], ","))
988+ let fC = if (if (!(fT))
989+ then fM(fN, split(cu[bb], ","))
977990 else false)
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))
991+ then (fA - fX)
992+ else (fA + fX)
993+ let fZ = (eN(fC, bd) - eN(fA, bd))
994+ $Tuple3(((fY + toBytes(fC)) + fB), (fU + fZ), (fV - fZ))
982995 }
983996 }
984997 }
985998 }
986999
9871000
988-func fV (fN,fA,fO,fW,fX,fY,fI) = {
989- let fq = split(fN, ":")
990- if ((size(fq) != 2))
1001+func ga (fS,fF,fT,gb,gc,gd,fN) = {
1002+ let fv = split(fS, ":")
1003+ if ((size(fv) != 2))
9911004 then throw("Incorrect format, should be index:amount")
992- else if (if (!(fO))
993- then (size(fq[0]) != 2)
1005+ else if (if (!(fT))
1006+ then (size(fv[0]) != 2)
9941007 else false)
9951008 then throw("Product idx should be 2 digits, zero padded")
9961009 else {
997- let fR = parseIntValue(fq[0])
998- let fS = parseIntValue(fq[1])
999- if (if ((0 > fR))
1010+ let fW = parseIntValue(fv[0])
1011+ let fX = parseIntValue(fv[1])
1012+ if (if ((0 > fW))
10001013 then true
1001- else (fR >= size(aT)))
1014+ else (fW >= size(aY)))
10021015 then throw("Unknown product idx")
1003- else if ((0 > fS))
1016+ else if ((0 > fX))
10041017 then throw("Count can't be negative")
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)
1018+ else if ((fX > v))
1019+ then throw(((("Can't put more than " + toString(v)) + " of ") + aU[fW]))
1020+ else if ((fX == 0))
1021+ then $Tuple2(fF, false)
10091022 else {
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)
1023+ let fY = take(fF, (8 * fW))
1024+ let fA = toInt(take(drop(fF, (8 * fW)), 8))
1025+ let fB = drop(fF, (8 * (fW + 1)))
1026+ let cu = split(aY[fW], "_")
1027+ if (if (!(fT))
1028+ then (fX > fA)
10161029 else false)
1017- then throw(((((("You have " + toString(fv)) + " of ") + aP[fR]) + ", but tried to use ") + toString(fS)))
1030+ then throw(((((("You have " + toString(fA)) + " of ") + aU[fW]) + ", but tried to use ") + toString(fX)))
10181031 else {
1019- let fZ = if (if (!(fO))
1020- then fH(fI, split(cp[aW], ","))
1032+ let ge = if (if (!(fT))
1033+ then fM(fN, split(cu[bb], ","))
10211034 else false)
10221035 then {
1023- let ga = cp[aX]
1024- if ((ga == ""))
1036+ let gf = cu[bc]
1037+ if ((gf == ""))
10251038 then throw("Item cannot be equipped")
10261039 else {
1027- let gb = parseIntValue(ga)
1028- let gc = (gb / 100)
1029- if ((fW != gc))
1040+ let gg = parseIntValue(gf)
1041+ let gh = (gg / 100)
1042+ if ((gb != gh))
10301043 then throw("Segment incompatible")
10311044 else {
1032- let gd = ((gb % 100) / 10)
1033- if ((fX != gd))
1045+ let gi = ((gg % 100) / 10)
1046+ if ((gc != gi))
10341047 then throw("Slot incompatible")
10351048 else {
1036- let ge = (gb % 10)
1037- if (if ((fY != 0))
1038- then (ge > 1)
1049+ let gj = (gg % 10)
1050+ if (if ((gd != 0))
1051+ then (gj > 1)
10391052 else false)
10401053 then throw("Big items should occupy slot 0")
1041- else (ge > 1)
1054+ else (gj > 1)
10421055 }
10431056 }
10441057 }
10451058 }
10461059 else false
1047- $Tuple2(((fT + toBytes((fv + (if (fO)
1048- then fS
1049- else -(fS))))) + fw), fZ)
1060+ $Tuple2(((fY + toBytes((fA + (if (fT)
1061+ then fX
1062+ else -(fX))))) + fB), ge)
10501063 }
10511064 }
10521065 }
10531066 }
10541067
10551068
1056-func gf (gg,gh,fO,fW,fX,gi) = if ((gg != ""))
1069+func gk (gl,gm,fT,gb,gc,gn) = if ((gl != ""))
10571070 then {
1058- let gj = split(gg, ",")
1059- if ((size(gj) > t))
1071+ let go = split(gl, ",")
1072+ if ((size(go) > u))
10601073 then throw("Wrong slots format")
10611074 else {
1062- let gk = gj[0]
1063- let gl = if ((size(gj) > 1))
1064- then gj[1]
1075+ let gp = go[0]
1076+ let gq = if ((size(go) > 1))
1077+ then go[1]
10651078 else ""
1066- if (if ((gk == ""))
1067- then (gl == "")
1079+ if (if ((gp == ""))
1080+ then (gq == "")
10681081 else false)
1069- then gh
1082+ then gm
10701083 else {
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)
1084+ let gr = if ((gp != ""))
1085+ then ga(gp, gm, fT, gb, gc, 0, gn)
1086+ else $Tuple2(gm, false)
1087+ if ((gq != ""))
1088+ then if (gr._2)
10761089 then throw("Big item already occupies slot")
1077- else fV(gl, gm._1, fO, fW, fX, 1, gi)._1
1078- else gm._1
1090+ else ga(gq, gr._1, fT, gb, gc, 1, gn)._1
1091+ else gr._1
10791092 }
10801093 }
10811094 }
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))
1095+ else gm
1096+
1097+
1098+func gs (gt,gu,fT,gn) = {
1099+ func gb (eX,gv) = {
1100+ let fH = eX._1
1101+ let gc = split(gv, ";")
1102+ if ((size(gc) != t))
10901103 then throw("Wrong segment format")
10911104 else {
1092- let gr = fX[0]
1093- let gs = fX[1]
1094- if (if ((gr == ""))
1095- then (gs == "")
1105+ let gw = gc[0]
1106+ let gx = gc[1]
1107+ if (if ((gw == ""))
1108+ then (gx == "")
10961109 else false)
1097- then $Tuple2((fC + 1), eS._2)
1110+ then $Tuple2((fH + 1), eX._2)
10981111 else {
1099- let gt = gf(gr, eS._2, fO, fC, 0, gi)
1100- $Tuple2((fC + 1), gf(gs, gt, fO, fC, 1, gi))
1112+ let gy = gk(gw, eX._2, fT, fH, 0, gn)
1113+ $Tuple2((fH + 1), gk(gx, gy, fT, fH, 1, gn))
11011114 }
11021115 }
11031116 }
11041117
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
1118+( let eZ = gt
1119+ let fa = size(eZ)
1120+ let fb = $Tuple2(0, gu)
1121+ func fc (fd,fe) = if ((fe >= fa))
1122+ then fd
1123+ else gb(fd, eZ[fe])
1124+
1125+ func ff (fd,fe) = if ((fe >= fa))
1126+ then fd
11141127 else throw("List size exceeds 6")
11151128
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)))
1129+ ff(fc(fc(fc(fc(fc(fc(fb, 0), 1), 2), 3), 4), 5), 6))._2
1130+ }
1131+
1132+
1133+func gz (gt,gu,fU,fV,fT,fN) = if ((3 > size(gt)))
11211134 then throw("At least duck, mines and traps parts are required")
11221135 else {
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)
1136+ func gb (eX,gv) = {
1137+ let fH = eX._1
1138+ if ((fH == 0))
1139+ then $Tuple4((fH + 1), eX._2, eX._3, eX._4)
11271140 else {
1128- let gv = fM(gq, eS._2, fO, fI, eS._3, eS._4)
1129- $Tuple4((fC + 1), gv._1, gv._2, gv._3)
1141+ let gA = fR(gv, eX._2, fT, fN, eX._3, eX._4)
1142+ $Tuple4((fH + 1), gA._1, gA._2, gA._3)
11301143 }
11311144 }
11321145
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
1146+ let gB = {
1147+ let eZ = gt
1148+ let fa = size(eZ)
1149+ let fb = $Tuple4(0, gu, fU, fV)
1150+ func fc (fd,fe) = if ((fe >= fa))
1151+ then fd
1152+ else gb(fd, eZ[fe])
1153+
1154+ func ff (fd,fe) = if ((fe >= fa))
1155+ then fd
11431156 else throw("List size exceeds 10")
11441157
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)
1158+ ff(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fb, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
1159+ }
1160+ $Tuple3(gB._2, gB._3, gB._4)
11481161 }
11491162
11501163
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 == ""))
1164+func gC (C) = {
1165+ let gD = H(C)
1166+ let gE = split(valueOrElse(getString(gD), ",;,_,;,_,;,_,;,_,;,_,;,"), "_")
1167+ let gF = gs(gE, eg, true, nil)
1168+ let gG = split(gE[r], ";")[1]
1169+ let as = if ((gG == ""))
11571170 then 0
11581171 else {
1159- let gC = split(gB, ",")[0]
1160- if ((gC == ""))
1172+ let gH = split(gG, ",")[0]
1173+ if ((gH == ""))
11611174 then 0
11621175 else {
1163- let fN = split(gC, ":")
1164- let db = fN[0]
1165- let gD = fN[1]
1166- if (if (if (if (if ((db == "06"))
1176+ let fS = split(gH, ":")
1177+ let dg = fS[0]
1178+ let gI = fS[1]
1179+ if (if (if (if (if ((dg == "06"))
11671180 then true
1168- else (db == "07"))
1181+ else (dg == "07"))
11691182 then true
1170- else (db == "08"))
1171- then (gD != "")
1183+ else (dg == "08"))
1184+ then (gI != "")
11721185 else false)
1173- then (parseIntValue(gD) > 0)
1186+ then (parseIntValue(gI) > 0)
11741187 else false)
1175- then parseIntValue(split(aT[parseIntValue(db)], "_")[aV])
1188+ then parseIntValue(split(aY[parseIntValue(dg)], "_")[ba])
11761189 else 0
11771190 }
11781191 }
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))
1192+ let gn = aq(this, C, as, true)
1193+ let gJ = gs(gE, gF, false, gn)
1194+ (gJ == gJ)
1195+ }
1196+
1197+
1198+func gK (gL,gM,gN,gO) = if ((size(gL) != aJ))
11861199 then throw("Wrong proportions data")
11871200 else {
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
1201+ func gP (eX,gQ) = {
1202+ let fp = (parseIntValue(gL[gQ]) + ((gO * gM[gQ]) * gN))
1203+ if ((0 > fp))
1204+ then throw(((((((("Panic! Pieces of type=" + toString(gQ)) + ", sign=") + toString(gO)) + ", terrainCounts[i]=") + toString(gM[gQ])) + ", landSizeIndex=") + toString(gN)))
1205+ else (eX :+ toString(fp))
1206+ }
1207+
1208+ let eZ = cQ
1209+ let fa = size(eZ)
1210+ let fb = nil
1211+ func fc (fd,fe) = if ((fe >= fa))
1212+ then fd
1213+ else gP(fd, eZ[fe])
1214+
1215+ func ff (fd,fe) = if ((fe >= fa))
1216+ then fd
12041217 else throw("List size exceeds 6")
12051218
1206- fa(eX(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5), 6)
1219+ ff(fc(fc(fc(fc(fc(fc(fb, 0), 1), 2), 3), 4), 5), 6)
12071220 }
12081221
12091222
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)))
1223+func gR (gM,gN,gO) = {
1224+ let gL = split(valueOrElse(getString(dx()), "0_0_0_0_0_0"), "_")
1225+ makeString(gK(gL, gM, gN, gO), "_")
1226+ }
1227+
1228+
1229+func gS (gT) = [(size(split(gT, "A")) - 1), (size(split(gT, "B")) - 1), (size(split(gT, "C")) - 1), (size(split(gT, "D")) - 1), (size(split(gT, "E")) - 1), (size(split(gT, "F")) - 1)]
1230+
1231+
1232+func gU (gV,gM,gW,gN,gX) = {
1233+ func gY (eX,gQ) = {
1234+ let gZ = ((fraction(gW, gX, a) * gM[gQ]) * gN)
1235+ (eX :+ toString((parseIntValue(gV[gQ]) + gZ)))
12231236 }
12241237
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
1238+ let fi = {
1239+ let eZ = cQ
1240+ let fa = size(eZ)
1241+ let fb = nil
1242+ func fc (fd,fe) = if ((fe >= fa))
1243+ then fd
1244+ else gY(fd, eZ[fe])
1245+
1246+ func ff (fd,fe) = if ((fe >= fa))
1247+ then fd
12351248 else throw("List size exceeds 6")
12361249
1237- fa(eX(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5), 6)
1250+ ff(fc(fc(fc(fc(fc(fc(fb, 0), 1), 2), 3), 4), 5), 6)
12381251 }
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))
1252+ makeString(fi, "_")
1253+ }
1254+
1255+
1256+func ha (gM,gW,gN,gX) = {
1257+ func gY (eX,gQ) = {
1258+ let gZ = ((fraction(gW, gX, a) * gM[gQ]) * gN)
1259+ $Tuple2((eX._1 :+ gZ), (eX._2 + gZ))
12471260 }
12481261
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
1262+ let eZ = cQ
1263+ let fa = size(eZ)
1264+ let fb = $Tuple2(nil, 0)
1265+ func fc (fd,fe) = if ((fe >= fa))
1266+ then fd
1267+ else gY(fd, eZ[fe])
1268+
1269+ func ff (fd,fe) = if ((fe >= fa))
1270+ then fd
12581271 else throw("List size exceeds 6")
12591272
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))
1273+ ff(fc(fc(fc(fc(fc(fc(fb, 0), 1), 2), 3), 4), 5), 6)
1274+ }
1275+
1276+
1277+func hb (hc,hd,he,hf) = {
1278+ let hg = he._1
1279+ let hh = he._2
1280+ if ((hh == 0))
1281+ then $Tuple2(makeString(hc, "_"), makeString(hd, "_"))
1282+ else if ((hf >= hh))
12701283 then {
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
1284+ func hi (eX,gQ) = (eX :+ toString((parseIntValue(hc[gQ]) + hg[gQ])))
1285+
1286+ let fi = {
1287+ let eZ = cQ
1288+ let fa = size(eZ)
1289+ let fb = nil
1290+ func fc (fd,fe) = if ((fe >= fa))
1291+ then fd
1292+ else hi(fd, eZ[fe])
1293+
1294+ func ff (fd,fe) = if ((fe >= fa))
1295+ then fd
12831296 else throw("List size exceeds 6")
12841297
1285- fa(eX(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5), 6)
1298+ ff(fc(fc(fc(fc(fc(fc(fb, 0), 1), 2), 3), 4), 5), 6)
12861299 }
1287- $Tuple2(makeString(fd, "_"), makeString(gY, "_"))
1300+ $Tuple2(makeString(fi, "_"), makeString(hd, "_"))
12881301 }
12891302 else {
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))))
1303+ func hj (eX,gQ) = {
1304+ let hk = fraction(hg[gQ], hf, hh)
1305+ $Tuple2((eX._1 :+ toString((parseIntValue(hc[gQ]) + hk))), (eX._2 :+ toString(((parseIntValue(hd[gQ]) + hg[gQ]) - hk))))
12931306 }
12941307
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
1308+ let fi = {
1309+ let eZ = cQ
1310+ let fa = size(eZ)
1311+ let fb = $Tuple2(nil, nil)
1312+ func fc (fd,fe) = if ((fe >= fa))
1313+ then fd
1314+ else hj(fd, eZ[fe])
1315+
1316+ func ff (fd,fe) = if ((fe >= fa))
1317+ then fd
13051318 else throw("List size exceeds 6")
13061319
1307- fa(eX(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5), 6)
1320+ ff(fc(fc(fc(fc(fc(fc(fb, 0), 1), 2), 3), 4), 5), 6)
13081321 }
1309- $Tuple2(makeString(fd._1, "_"), makeString(fd._2, "_"))
1322+ $Tuple2(makeString(fi._1, "_"), makeString(fi._2, "_"))
13101323 }
13111324 }
13121325
13131326
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))
1327+func hl (hm) = if ((hm >= toBigInt(0)))
1328+ then hm
1329+ else -(hm)
1330+
1331+
1332+let hn = [[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]]
1333+
1334+func ho (dG,hp) = {
1335+ let hq = toInt((dG % ep))
1336+ let hr = if ((hp[0] > hq))
13241337 then "A"
1325- else if ((hk[1] > hl))
1338+ else if ((hp[1] > hq))
13261339 then "B"
1327- else if ((hk[2] > hl))
1340+ else if ((hp[2] > hq))
13281341 then "C"
1329- else if ((hk[3] > hl))
1342+ else if ((hp[3] > hq))
13301343 then "D"
1331- else if ((hk[4] > hl))
1344+ else if ((hp[4] > hq))
13321345 then "E"
13331346 else "F"
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
1347+ hr
1348+ }
1349+
1350+
1351+func hs (ht,hu) = {
1352+ let hv = hn[hu]
1353+ func hw (eX,eY) = $Tuple2((((((eX._1 + ho(eX._2, hv)) + ho((eX._2 / ep), hv)) + ho((eX._2 / eq), hv)) + ho((eX._2 / er), hv)) + ho((eX._2 / es), hv)), (eX._2 / et))
1354+
1355+ let gB = {
1356+ let eZ = [1, 2, 3, 4, 5]
1357+ let fa = size(eZ)
1358+ let fb = $Tuple2("", (ht / eo))
1359+ func fc (fd,fe) = if ((fe >= fa))
1360+ then fd
1361+ else hw(fd, eZ[fe])
1362+
1363+ func ff (fd,fe) = if ((fe >= fa))
1364+ then fd
13521365 else throw("List size exceeds 5")
13531366
1354- fa(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5)
1367+ ff(fc(fc(fc(fc(fc(fb, 0), 1), 2), 3), 4), 5)
13551368 }
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))
1369+ gB._1
1370+ }
1371+
1372+
1373+let hx = [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]
1374+
1375+let hy = ["A", "B", "C", "D", "E", "F"]
1376+
1377+func hz (hA,gN) = {
1378+ func hB (eX,dE) = {
1379+ let fH = eX._2
1380+ let hC = parseIntValue(dE)
1381+ let hm = if ((hC == 0))
13691382 then 0
1370- else if ((hx >= (4 * gI)))
1371- then (hx / gI)
1372- else if ((hx > (3 * gI)))
1383+ else if ((hC >= (4 * gN)))
1384+ then (hC / gN)
1385+ else if ((hC > (3 * gN)))
13731386 then 3
1374- else (((hx - 1) / gI) + 1)
1375- $Tuple3((eS._1 :+ hh), (eS._2 + 1), (eS._3 + hh))
1387+ else (((hC - 1) / gN) + 1)
1388+ $Tuple3((eX._1 :+ hm), (eX._2 + 1), (eX._3 + hm))
13761389 }
13771390
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
1391+ let gB = {
1392+ let eZ = hA
1393+ let fa = size(eZ)
1394+ let fb = $Tuple3(nil, 0, 0)
1395+ func fc (fd,fe) = if ((fe >= fa))
1396+ then fd
1397+ else hB(fd, eZ[fe])
1398+
1399+ func ff (fd,fe) = if ((fe >= fa))
1400+ then fd
13881401 else throw("List size exceeds 6")
13891402
1390- fa(eX(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5), 6)
1403+ ff(fc(fc(fc(fc(fc(fc(fb, 0), 1), 2), 3), 4), 5), 6)
13911404 }
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))
1405+ let hD = gB._1
1406+ let hE = value(indexOf(hD, max(hD)))
1407+ let hF = (gB._3 - 25)
1408+ func hG (eX,dg) = {
1409+ let dL = if ((dg == hE))
1410+ then (hD[dg] - hF)
1411+ else hD[dg]
1412+ let dW = if ((dL == 0))
14001413 then nil
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
1414+ else split(drop(toString(pow(10, 0, dL, 0, 0, DOWN)), 1), "")
1415+ let gg = hy[dg]
1416+ func hH (hI,hJ) = (hI :+ gg)
1417+
1418+ let hK = {
1419+ let eZ = dW
1420+ let fa = size(eZ)
1421+ let fb = nil
1422+ func hL (fd,fe) = if ((fe >= fa))
1423+ then fd
1424+ else hH(fd, eZ[fe])
1425+
1426+ func hM (fd,fe) = if ((fe >= fa))
1427+ then fd
14151428 else throw("List size exceeds 25")
14161429
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)
1430+ hM(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(fb, 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)
1431+ }
1432+ (eX ++ hK)
14201433 }
14211434
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
1435+ let fi = {
1436+ let eZ = cQ
1437+ let fa = size(eZ)
1438+ let fb = nil
1439+ func hL (fd,fe) = if ((fe >= fa))
1440+ then fd
1441+ else hG(fd, eZ[fe])
1442+
1443+ func hM (fd,fe) = if ((fe >= fa))
1444+ then fd
14321445 else throw("List size exceeds 6")
14331446
1434- hH(hG(hG(hG(hG(hG(hG(eW, 0), 1), 2), 3), 4), 5), 6)
1447+ hM(hL(hL(hL(hL(hL(hL(fb, 0), 1), 2), 3), 4), 5), 6)
14351448 }
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
1449+ func hN (eX,fH) = (eX + fi[fH])
1450+
1451+ let eZ = hx
1452+ let fa = size(eZ)
1453+ let fb = ""
1454+ func hO (fd,fe) = if ((fe >= fa))
1455+ then fd
1456+ else hN(fd, eZ[fe])
1457+
1458+ func hP (fd,fe) = if ((fe >= fa))
1459+ then fd
14471460 else throw("List size exceeds 25")
14481461
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)))
1462+ hP(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(fb, 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)
1463+ }
1464+
1465+
1466+func hQ (hR) = {
1467+ let gA = split(valueOrElse(getString(hR), "0:0_0_0_0_0_0:0_0_0_0_0_0:"), ":")
1468+[toString(valueOrElse(parseInt(gA[bn]), 0)), if ((size(split(gA[bo], "_")) == aJ))
1469+ then gA[bo]
1470+ else "0_0_0_0_0_0", if ((size(split(gA[bp], "_")) == aJ))
1471+ then gA[bp]
1472+ else "0_0_0_0_0_0", gA[bq]]
1473+ }
1474+
1475+
1476+func hS (hT) = {
1477+ let fv = split(hT, "_")
1478+ ((aM * (parseIntValue(fv[1]) + 1)) * parseIntValue(fv[0]))
1479+ }
1480+
1481+
1482+func hU (hV) = {
1483+ let hW = hV[bh]
1484+ func hX (eX,hY) = (eX + parseIntValue(hY))
1485+
1486+ func hZ (eX,hY) = {
1487+ let dg = eX._1
1488+ let eQ = (((parseIntValue(hY) + bd) - 1) / bd)
1489+ $Tuple2((dg + 1), (eX._2 + (eQ * cK)))
14771490 }
14781491
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
1492+ let ia = {
1493+ let eZ = split(hV[bf], "_")
1494+ let fa = size(eZ)
1495+ let fb = 0
1496+ func fc (fd,fe) = if ((fe >= fa))
1497+ then fd
1498+ else hX(fd, eZ[fe])
1499+
1500+ func ff (fd,fe) = if ((fe >= fa))
1501+ then fd
14891502 else throw("List size exceeds 6")
14901503
1491- fa(eX(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5), 6)
1504+ ff(fc(fc(fc(fc(fc(fc(fb, 0), 1), 2), 3), 4), 5), 6)
14921505 }
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
1506+ let ib = {
1507+ let eZ = split(hV[bg], "_")
1508+ let fa = size(eZ)
1509+ let fb = 0
1510+ func hL (fd,fe) = if ((fe >= fa))
1511+ then fd
1512+ else hX(fd, eZ[fe])
1513+
1514+ func hM (fd,fe) = if ((fe >= fa))
1515+ then fd
15031516 else throw("List size exceeds 6")
15041517
1505- hH(hG(hG(hG(hG(hG(hG(eW, 0), 1), 2), 3), 4), 5), 6)
1518+ hM(hL(hL(hL(hL(hL(hL(fb, 0), 1), 2), 3), 4), 5), 6)
15061519 }
1507- let hX = if ((hR == ""))
1520+ let ic = if ((hW == ""))
15081521 then 0
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
1522+ else ( let eZ = split_4C(hW, "_")
1523+ let fa = size(eZ)
1524+ let fb = $Tuple2(0, 0)
1525+ func hO (fd,fe) = if ((fe >= fa))
1526+ then fd
1527+ else hZ(fd, eZ[fe])
1528+
1529+ func hP (fd,fe) = if ((fe >= fa))
1530+ then fd
15181531 else throw("List size exceeds 50")
15191532
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)], "_")
1533+ hP(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(fb, 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
1534+ ((ia + ib) + ic)
1535+ }
1536+
1537+
1538+func id (ie,if,ig) = {
1539+ let hT = ((toString(if) + "_") + toString(ig))
1540+ let ih = hS(hT)
1541+ let ii = valueOrElse(getString(ie), (hT + ":0_0_0_0_0_0:0_0_0_0_0_0::0"))
1542+ let ij = split_4C(ii, ":")
1543+ let ik = hU(ij)
1544+ let il = if ((5 > size(ij)))
1545+ then makeString(["0", toString(ik), toString((ih - ik)), toString(ih)], "_")
15331546 else {
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))
1547+ let im = split(ij[bi], "_")
1548+ let in = parseIntValue(im[bj])
1549+ let io = if ((size(im) > 1))
1550+ then parseIntValue(im[bk])
1551+ else ik
1552+ makeString([toString(in), toString(io), toString(((ih - in) - io)), toString(ih)], "_")
1553+ }
1554+[ij[be], if ((size(split(ij[bf], "_")) == aJ))
1555+ then ij[bf]
1556+ else "0_0_0_0_0_0", if ((size(split(ij[bg], "_")) == aJ))
1557+ then ij[bg]
1558+ else "0_0_0_0_0_0", ij[bh], il]
1559+ }
1560+
1561+
1562+func ip (hV) = {
1563+ let iq = hU(hV)
1564+ let ir = parseIntValue(split(hV[bi], "_")[bj])
1565+ ((hS(hV[be]) - iq) - ir)
1566+ }
1567+
1568+
1569+func is (it,hV,iu) = if ((size(it) != 3))
15571570 then throw("cargoListStr should contain exactly 2 ':' separators")
15581571 else {
1559- let iq = split(io[0], "_")
1560- let ir = split(io[1], "_")
1561- let is = if ((io[2] == ""))
1572+ let iv = split(it[0], "_")
1573+ let iw = split(it[1], "_")
1574+ let ix = if ((it[2] == ""))
15621575 then nil
1563- else split_4C(io[2], "_")
1564- if ((size(iq) != aG))
1576+ else split_4C(it[2], "_")
1577+ if ((size(iv) != aJ))
15651578 then throw("All 6 resources should be passed")
1566- else if ((size(ir) != aG))
1579+ else if ((size(iw) != aJ))
15671580 then throw("All 6 materials should be passed")
15681581 else {
1569- let ha = ik(hQ)
1570- let it = split(hQ[ba], "_")
1571- let iu = split(hQ[bb], "_")
1572- let iv = if ((hQ[bc] == ""))
1582+ let hf = ip(hV)
1583+ let iy = split(hV[bf], "_")
1584+ let iz = split(hV[bg], "_")
1585+ let iA = if ((hV[bh] == ""))
15731586 then nil
1574- else split_4C(hQ[bc], "_")
1575- let gY = split(ip[bj], "_")
1576- let iw = split(ip[bk], "_")
1577- let ix = if ((ip[bl] == ""))
1587+ else split_4C(hV[bh], "_")
1588+ let hd = split(iu[bo], "_")
1589+ let iB = split(iu[bp], "_")
1590+ let iC = if ((iu[bq] == ""))
15781591 then nil
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))
1592+ else split_4C(iu[bq], "_")
1593+ func iD (eX,hY) = {
1594+ let gQ = eX._1
1595+ let iE = parseIntValue(hY)
1596+ let iF = parseIntValue(iy[gQ])
1597+ let iG = parseIntValue(hd[gQ])
1598+ if ((iE == 0))
1599+ then $Tuple4((gQ + 1), (eX._2 :+ iy[gQ]), (eX._3 :+ hd[gQ]), eX._4)
1600+ else if ((iE > 0))
1601+ then if ((iE > iG))
1602+ then throw((((("Attempt to take " + hY) + " from backpack, but only ") + toString(iG)) + " available"))
1603+ else $Tuple4((gQ + 1), (eX._2 :+ toString((iF + iE))), (eX._3 :+ toString((iG - iE))), (eX._4 + iE))
1604+ else if ((-(iE) > iF))
1605+ then throw((((("Attempt to take " + toString(-(iE))) + " from warehouse, but only ") + toString(iF)) + " available"))
1606+ else $Tuple4((gQ + 1), (eX._2 :+ toString((iF + iE))), (eX._3 :+ toString((iG - iE))), (eX._4 + iE))
15941607 }
15951608
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
1609+ let fi = {
1610+ let eZ = iv
1611+ let fa = size(eZ)
1612+ let fb = $Tuple4(0, nil, nil, 0)
1613+ func fc (fd,fe) = if ((fe >= fa))
1614+ then fd
1615+ else iD(fd, eZ[fe])
1616+
1617+ func ff (fd,fe) = if ((fe >= fa))
1618+ then fd
16061619 else throw("List size exceeds 6")
16071620
1608- fa(eX(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5), 6)
1621+ ff(fc(fc(fc(fc(fc(fc(fb, 0), 1), 2), 3), 4), 5), 6)
16091622 }
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))
1623+ func iH (eX,hY) = {
1624+ let gQ = eX._1
1625+ let iE = parseIntValue(hY)
1626+ let iI = parseIntValue(iz[gQ])
1627+ let iJ = parseIntValue(iB[gQ])
1628+ if ((iE == 0))
1629+ then $Tuple4((gQ + 1), (eX._2 :+ iz[gQ]), (eX._3 :+ iB[gQ]), eX._4)
1630+ else if ((iE > 0))
1631+ then if ((iE > iJ))
1632+ then throw((((("Attempt to take " + hY) + " from backpack, but only ") + toString(iJ)) + " available"))
1633+ else $Tuple4((gQ + 1), (eX._2 :+ toString((iI + iE))), (eX._3 :+ toString((iJ - iE))), (eX._4 + iE))
1634+ else if ((-(iE) > iI))
1635+ then throw((((("Attempt to take " + toString(-(iE))) + " from warehouse, but only ") + toString(iI)) + " available"))
1636+ else $Tuple4((gQ + 1), (eX._2 :+ toString((iI + iE))), (eX._3 :+ toString((iJ - iE))), (eX._4 + iE))
16241637 }
16251638
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
1639+ let gw = {
1640+ let eZ = iw
1641+ let fa = size(eZ)
1642+ let fb = $Tuple4(0, nil, nil, fi._4)
1643+ func hL (fd,fe) = if ((fe >= fa))
1644+ then fd
1645+ else iH(fd, eZ[fe])
1646+
1647+ func hM (fd,fe) = if ((fe >= fa))
1648+ then fd
16361649 else throw("List size exceeds 6")
16371650
1638- hH(hG(hG(hG(hG(hG(hG(eW, 0), 1), 2), 3), 4), 5), 6)
1651+ hM(hL(hL(hL(hL(hL(hL(fb, 0), 1), 2), 3), 4), 5), 6)
16391652 }
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])
1653+ func iK (eX,hY) = {
1654+ let gQ = eX._1
1655+ let iE = parseIntValue(hY)
1656+ let iL = if ((size(iA) > gQ))
1657+ then parseIntValue(iA[gQ])
16451658 else 0
1646- let iH = if ((size(ix) > gL))
1647- then parseIntValue(ix[gL])
1659+ let iM = if ((size(iC) > gQ))
1660+ then parseIntValue(iC[gQ])
16481661 else 0
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"))
1662+ if ((iE == 0))
1663+ then $Tuple4((gQ + 1), (eX._2 :+ toString(iL)), (eX._3 :+ toString(iM)), eX._4)
1664+ else if ((iE > 0))
1665+ then if ((iE > iM))
1666+ then throw((((("Attempt to take " + hY) + " from backpack, but only ") + toString(iM)) + " available"))
16541667 else {
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))
1668+ let fZ = (eN((iL + iE), bd) - eN(iL, bd))
1669+ $Tuple4((gQ + 1), (eX._2 :+ toString((iL + iE))), (eX._3 :+ toString((iM - iE))), (eX._4 + fZ))
16571670 }
1658- else if ((-(iz) > iG))
1659- then throw((((("Attempt to take " + toString(-(iz))) + " from warehouse, but only ") + toString(iG)) + " available"))
1671+ else if ((-(iE) > iL))
1672+ then throw((((("Attempt to take " + toString(-(iE))) + " from warehouse, but only ") + toString(iL)) + " available"))
16601673 else {
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))
1674+ let fZ = (eN((iL + iE), bd) - eN(iL, bd))
1675+ $Tuple4((gQ + 1), (eX._2 :+ toString((iL + iE))), (eX._3 :+ toString((iM - iE))), (eX._4 + fZ))
16631676 }
16641677 }
16651678
1666- let gv = if ((size(is) != 0))
1679+ let gA = if ((size(ix) != 0))
16671680 then {
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
1681+ let eZ = ix
1682+ let fa = size(eZ)
1683+ let fb = $Tuple4(0, nil, nil, gw._4)
1684+ func hO (fd,fe) = if ((fe >= fa))
1685+ then fd
1686+ else iK(fd, eZ[fe])
1687+
1688+ func hP (fd,fe) = if ((fe >= fa))
1689+ then fd
16771690 else throw("List size exceeds 50")
16781691
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)
1692+ hP(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(fb, 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)
16801693 }
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)
1694+ else $Tuple4(0, iA, iC, gw._4)
1695+ let iN = gA._4
1696+ if ((iN > hf))
1697+ then throw((((("Attempt to put total " + toString(iN)) + " stuff, but only ") + toString(hf)) + " warehouse space left"))
1698+ else $Tuple7(makeString(fi._2, "_"), makeString(gw._2, "_"), makeString_2C(gA._2, "_"), makeString(fi._3, "_"), makeString(gw._3, "_"), makeString_2C(gA._3, "_"), iN)
16861699 }
16871700 }
16881701
16891702
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)))
1703+func iO (iP,iQ) = {
1704+ let bR = toString(iP)
1705+ let iR = hl(toBigInt(iQ))
1706+ let iS = valueOrElse(getInteger(ev()), (eu + 1))
1707+ let ez = toString(iS)
1708+ let hu = toInt((iR % eo))
1709+ let gT = hs(iR, hu)
1710+ let dz = aV[hu]
1711+ let iT = Issue(eM(ez, "S"), makeString([ez, "S", gT, dz], "_"), 1, 0, false)
1712+ let bv = calculateAssetId(iT)
1713+ let iU = toBase58String(bv)
1714+ $Tuple2([IntegerEntry(ev(), (iS + 1)), iT, StringEntry(ey(ez), iU), StringEntry(bu(iU), bR), StringEntry(eB(ez), bR), IntegerEntry(bE(iU), 0), IntegerEntry(eA(iU, bR), 0), ScriptTransfer(iP, 1, bv)], $Tuple2(iU, dz))
1715+ }
1716+
1717+
1718+func iV (bR,iW,iX) = if (!(sigVerify_8Kb(iW, iX, ef)))
17061719 then throw("signature does not match")
17071720 else {
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)))
1721+ let fv = split_4C(toUtf8String(iW), ";")
1722+ let iY = split_4C(fv[0], "|")
1723+ let iZ = split(iY[eI], "_")
1724+ let ja = parseIntValue(iZ[0])
1725+ let jb = parseIntValue(iZ[1])
1726+ let jc = split(fv[1], ":")
1727+ let jd = jc[0]
1728+ let je = parseIntValue(iY[eJ])
1729+ if (if ((je > (lastBlock.timestamp + eh)))
17171730 then true
1718- else ((lastBlock.timestamp - ec) > iZ))
1719- then throw(((("signature outdated: logTime=" + toString(iZ)) + ", bcTime=") + toString(lastBlock.timestamp)))
1731+ else ((lastBlock.timestamp - eh) > je))
1732+ then throw(((("signature outdated: logTime=" + toString(je)) + ", bcTime=") + toString(lastBlock.timestamp)))
17201733 else {
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))
1734+ let jf = jc[1]
1735+ let jg = valueOrElse(getString(dR(bR)), "")
1736+ if ((jg != jf))
1737+ then throw(((("Tx ids don't match! In state: " + jg) + ", in msg: ") + jf))
17251738 else {
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))
1739+ let C = valueOrErrorMessage(getString(bN(bR)), "You don't have a duck staked")
1740+ let jh = B(C)
1741+ let ji = ak(valueOrElse(getInteger(F(C)), 0))
1742+ let jj = valueOrElse(getInteger(jh), ji)
1743+ if ((jj != ja))
1744+ then throw(((("oldHealth=" + toString(jj)) + " from state does not match one from flight log=") + toString(ja)))
1745+ else if ((0 >= ja))
17331746 then throw("You can't fly with zero health")
1734- else if (!(gx(B)))
1747+ else if (!(gC(C)))
17351748 then throw("Equipment incompatible")
17361749 else {
1737- let jf = if ((size(iT) > eF))
1738- then iT[eF]
1750+ let jk = if ((size(iY) > eK))
1751+ then iY[eK]
17391752 else ""
1740- let jg = if ((size(iT) > eG))
1741- then iT[eG]
1753+ let jl = if ((size(iY) > eL))
1754+ then iY[eL]
17421755 else ""
1743- let jh = if (if ((iW > 0))
1744- then (jf == "$")
1756+ let jm = if (if ((jb > 0))
1757+ then (jk == "$")
17451758 else false)
1746- then dA(invoke(dc, "sendUsdtPrize", [bM], nil))
1759+ then dF(invoke(dh, "sendUsdtPrize", [bR], nil))
17471760 else 0
1748- $Tuple5(iW, B, jh, iY, jg)
1761+ $Tuple5(jb, C, jm, jd, jl)
17491762 }
17501763 }
17511764 }
17521765 }
17531766
17541767
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)), ""))
1768+func jn (R,jo) = {
1769+ let ig = valueOrElse(getInteger(bE(R)), 0)
1770+ let jp = valueOrElse(getInteger(by(aI, R)), 0)
1771+ let jq = (ig / 6)
1772+ let jr = (ig / 7)
1773+ ((aL + fraction(aL, ((ig + jq) + (2 * jr)), 5)) + fraction(aL, jp, (jo * 5)))
1774+ }
1775+
1776+
1777+func js (d,jt,ju) = {
1778+ let jv = if ((jt == eF))
1779+ then $Tuple2(ju, valueOrElse(getString(bN(d)), ""))
17671780 else {
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"))
1781+ let C = valueOrErrorMessage(getString(bN(d)), "You don't have a duck staked")
1782+ let jw = valueOrElse(getString(bP(C)), aN)
1783+ let cl = split(value(jw), "_")
1784+ if ((cl[bs] != "L"))
1785+ then throw((("Duck location type is " + cl[bs]) + ", but should be L"))
1786+ else $Tuple2(cl[bt], C)
1787+ }
1788+ let R = jv._1
1789+ let jx = jv._2
1790+ let jy = value(assetInfo(fromBase58String(R)))
1791+ let jz = bx(R)
1792+ let jA = valueOrErrorMessage(getInteger(jz), (("Land " + jy.name) + " is not staked"))
1793+ let jB = valueOrErrorMessage(getString(bu(R)), (("NFT " + jy.name) + " is orphaned"))
1794+ if ((jB != d))
1795+ then throw((aG + " is not yours"))
17831796 else {
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))
1797+ let jC = split(jy.description, "_")
1798+ $Tuple4(jx, R, jC, jA)
1799+ }
1800+ }
1801+
1802+
1803+func jD (d,eO,jt,ju) = if ((0 > eO))
17911804 then throw("Negative amount")
17921805 else {
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)))
1806+ let gg = js(d, jt, ju)
1807+ let dO = gg._3[do]
1808+ let gM = gS(gg._3[dp])
1809+ let gW = (lastBlock.timestamp - gg._4)
1810+ if ((0 > gW))
1811+ then throw(((("Saved timestamp is in future, saved = " + toString(gg._4)) + ", current = ") + toString(lastBlock.timestamp)))
17991812 else {
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)))
1813+ let jo = dN(dO)
1814+ let jE = jn(gg._2, jo)
1815+ let jF = fraction(gW, (jE * jo), a)
1816+ if ((eO > jF))
1817+ then throw(((("Not enough resources, available = " + toString(jF)) + ", requested = ") + toString(eO)))
18051818 else {
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)
1819+ let jG = fraction((jF - eO), a, (jE * jo))
1820+ let jH = (lastBlock.timestamp - jG)
1821+ let if = (jo / cL)
1822+ let he = ha(gM, (gW - jG), if, jE)
1823+ let ie = bD(gg._2)
1824+ let ig = valueOrElse(getInteger(bE(gg._2)), 0)
1825+ let hV = id(ie, if, ig)
1826+ let im = split(hV[bi], "_")
1827+ let hf = parseIntValue(im[bl])
1828+ if (if ((jt == eF))
1829+ then (eO > hf)
18171830 else false)
1818- then throw((("Only " + toString(ha)) + " space left in warehouse"))
1831+ then throw((("Only " + toString(hf)) + " space left in warehouse"))
18191832 else {
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]))
1833+ let hR = bO(gg._1)
1834+ let iu = hQ(hR)
1835+ let hd = split(iu[bo], "_")
1836+ let hc = split(hV[bf], "_")
1837+ let jI = if ((jt == eF))
1838+ then $Tuple4(gU(hc, gM, (gW - jG), if, jE), iu[bo], (parseIntValue(im[bk]) + he._2), (parseIntValue(im[bl]) - he._2))
1839+ else if ((jt == eG))
1840+ then $Tuple4(hV[bf], gU(hd, gM, (gW - jG), if, jE), parseIntValue(im[bk]), parseIntValue(im[bl]))
18281841 else {
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))
1842+ let jJ = hb(hc, hd, he, hf)
1843+ let jK = min([parseIntValue(im[bl]), he._2])
1844+ $Tuple4(jJ._1, jJ._2, (parseIntValue(im[bk]) + jK), (parseIntValue(im[bl]) - jK))
18321845 }
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]], "_")])
1846+ let jL = jI._1
1847+ let jM = jI._2
1848+ let jN = jI._3
1849+ let jO = jI._4
1850+ $Tuple5([IntegerEntry(bx(gg._2), jH), IntegerEntry(bA(aG, gg._2, d), jH)], hR, [iu[bn], jM, iu[bp], iu[bq]], ie, [hV[be], jL, hV[bg], hV[bh], makeString([im[bj], toString(jN), toString(jO), im[bm]], "_")])
18381851 }
18391852 }
18401853 }
18411854 }
18421855
18431856
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)
1857+func jP (d,R,jo,jt) = {
1858+ let jz = bx(R)
1859+ let jA = value(getInteger(jz))
1860+ let jF = (fraction((lastBlock.timestamp - jA), jn(R, jo), a) * jo)
1861+ jD(d, jF, jt, R)
1862+ }
1863+
1864+
1865+func jQ (fk,iP,jR,R) = {
1866+ let d = toString(iP)
1867+ let gg = js(d, eH, R)
1868+ let jo = dN(gg._3[do])
1869+ let jS = bE(gg._2)
1870+ let jT = valueOrElse(getInteger(jS), 0)
1871+ if (if (!(cA))
1872+ then (jT >= 3)
18601873 else false)
18611874 then throw("Currently max infrastructure level = 3")
18621875 else {
1863- let jP = ((sqrt(jj, 0, 0, DOWN) / 5) + 2)
1864- let am = (jO + 1)
1865- if (if (cv)
1866- then (am > jP)
1876+ let jU = ((sqrt(jo, 0, 0, DOWN) / 5) + 2)
1877+ let ap = (jT + 1)
1878+ if (if (cA)
1879+ then (ap > jU)
18671880 else false)
1868- then throw(("Currently max infrastructure level = " + toString(jP)))
1881+ then throw(("Currently max infrastructure level = " + toString(jU)))
18691882 else {
1870- let jQ = fraction(ef, (jj * am), cG)
1871- if (if (!(ff))
1872- then (jM != jQ)
1883+ let jV = fraction(ek, (jo * ap), cL)
1884+ if (if (!(fk))
1885+ then (jR != jV)
18731886 else false)
1874- then throw(("Payment attached should be " + toString(jQ)))
1887+ then throw(("Payment attached should be " + toString(jV)))
18751888 else {
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)
1889+ let hR = bO(gg._1)
1890+ let iu = hQ(hR)
1891+ let jW = split(iu[bp], "_")
1892+ let jX = fraction(cG, (jo * ap), cL)
1893+ let jY = makeString(fj(fk, jW, jX), "_")
1894+ let jZ = jP(d, gg._2, jo, eH)
1895+ let ka = jZ._5
1896+ let kb = hS(ka[be])
1897+ let kc = makeString([split(ka[be], "_")[0], toString(ap)], "_")
1898+ let kd = hS(kc)
1899+ let im = split(ka[bi], "_")
1900+ let ke = makeString([im[bj], im[bk], toString(((parseIntValue(im[bl]) + kd) - kb)), toString(kd)], "_")
1901+ $Tuple3(([IntegerEntry(jS, ap), IntegerEntry(eA(gg._2, d), ap), StringEntry(hR, makeString([iu[bn], jZ._3[bo], jY, iu[bq]], ":")), StringEntry(jZ._4, makeString([kc, ka[bf], ka[bg], ka[bh], ke], ":"))] ++ jZ._1), ap, jX)
18891902 }
18901903 }
18911904 }
18921905 }
18931906
18941907
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)))
1908+func kf (C,kg) = {
1909+ let kh = F(C)
1910+ let ki = E(C)
1911+ let aj = valueOrElse(getInteger(ki), 0)
1912+ let ao = (aj + kg)
1913+ let kj = am(valueOrElse(getInteger(kh), 0), ao)
1914+ let kk = G(C)
1915+ $Tuple2([IntegerEntry(kh, kj[0]), IntegerEntry(ki, ao), IntegerEntry(kk, (valueOrElse(getInteger(kk), 0) + kj[1]))], ao)
1916+ }
1917+
1918+
1919+func kl (d,kg) = {
1920+ let kh = J(d)
1921+ let ki = I(d)
1922+ let aj = valueOrElse(getInteger(ki), 0)
1923+ let ao = (aj + kg)
1924+ let kj = am(valueOrElse(getInteger(kh), 0), ao)
1925+ let kk = K(d)
1926+ $Tuple2([IntegerEntry(kh, kj[0]), IntegerEntry(ki, ao), IntegerEntry(kk, (valueOrElse(getInteger(kk), 0) + kj[1]))], ao)
1927+ }
1928+
1929+
1930+func km (d) = {
1931+ let C = valueOrErrorMessage(getString(bN(d)), "You don't have a duck staked")
1932+ let kn = bI(d)
1933+ let ko = getString(kn)
1934+ if (!(isDefined(ko)))
19221935 then throw("You are not eligible for ONBOARD artifact")
19231936 else {
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)))
1937+ let kp = bK(d)
1938+ let kq = getString(kp)
1939+ if (isDefined(kq))
1940+ then throw(("You already used your ONBOARD artifact on duck " + value(kq)))
19281941 else {
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)
1942+ let kr = bJ(C)
1943+ let ks = getString(kr)
1944+ if (isDefined(ks))
1945+ then throw(((("The duck " + C) + " already got points from ONBOARD artifact from user ") + value(ks)))
1946+ else ([StringEntry(kp, C), StringEntry(kr, d)] ++ kf(C, ag)._1)
19341947 }
19351948 }
19361949 }
19371950
19381951
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))
1952+func kt (d,ju) = {
1953+ let gg = js(d, eH, ju)
1954+ let R = gg._2
1955+ let jo = dN(gg._3[do])
1956+ let ku = by(aI, R)
1957+ if ((valueOrElse(getInteger(ku), 0) > 0))
19451958 then throw("Presale artifact is already activated")
1946- else if ((parseIntValue(gb._3[di]) > ep))
1947- then throw((((aD + " ") + Q) + " is not eligible for presale artifact"))
1959+ else if ((parseIntValue(gg._3[dn]) > eu))
1960+ then throw((((aG + " ") + R) + " is not eligible for presale artifact"))
19481961 else {
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, ":")))
1962+ let jZ = jP(d, R, jo, eH)
1963+ (((jZ._1 :+ IntegerEntry(ku, jo)) :+ StringEntry(jZ._2, makeString(jZ._3, ":"))) :+ StringEntry(jZ._4, makeString(jZ._5, ":")))
19511964 }
19521965 }
19531966
19541967
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"))
1968+func kv (C) = {
1969+ let ck = valueOrElse(getInteger(dl, bV), 0)
1970+ let jw = split(valueOrElse(getString(bP(C)), aN), "_")
1971+ let aB = lastBlock.timestamp
1972+ let cm = ce(dl, ck)
1973+ let cg = cm[ca]
1974+ let ch = cm[cb]
1975+ if ((jw[bs] != "T"))
19631976 then false
1964- else if (if (if ((parseIntValue(jr[bm]) == cf))
1965- then (cc[bY] == "INPROGRESS")
1977+ else if (if (if ((parseIntValue(jw[br]) == ck))
1978+ then (ch[cd] == "INPROGRESS")
19661979 else false)
1967- then (parseIntValue(cb[bX]) > ay)
1980+ then (parseIntValue(cg[cc]) > aB)
19681981 else false)
19691982 then throw("Your duck is taking part in the tournament")
1970- else dE(invoke(this, "exitTournamentInternal", [B], nil))
1971- }
1972-
1973-
1974-func kr (B) = if (!(cw))
1983+ else dJ(invoke(this, "exitTournamentInternal", [C], nil))
1984+ }
1985+
1986+
1987+func kw (C) = if (!(cB))
19751988 then false
19761989 else {
1977- let jr = split(valueOrElse(getString(bK(B)), aK), "_")
1978- let ay = lastBlock.timestamp
1979- if ((jr[bn] != "D"))
1990+ let jw = split(valueOrElse(getString(bP(C)), aN), "_")
1991+ let aB = lastBlock.timestamp
1992+ if ((jw[bs] != "D"))
19801993 then false
19811994 else {
1982- let cj = parseIntValue(jr[bm])
1983- let ck = parseIntValue(jr[bo])
1984- if (if ((ay > (cj + aO)))
1985- then (3 > ck)
1995+ let co = parseIntValue(jw[br])
1996+ let cp = parseIntValue(jw[bt])
1997+ if (if ((aB > (co + aR)))
1998+ then (3 > cp)
19861999 else false)
19872000 then throw("Your duck is on delivery mission")
1988- else dE(invoke(this, "exitDeliveryInternal", [B], nil))
2001+ else dJ(invoke(this, "exitDeliveryInternal", [C], nil))
19892002 }
19902003 }
19912004
19922005
1993-func ks (B,fK,iW,kt) = {
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 (if ((ck >= 3))
2006+func kx (C,fP,jb,ky) = {
2007+ let jw = split(valueOrElse(getString(bP(C)), aN), "_")
2008+ let aB = lastBlock.timestamp
2009+ let co = parseIntValue(jw[br])
2010+ let cp = parseIntValue(jw[bt])
2011+ let jB = valueOrErrorMessage(getString(bM(C)), "NFT duck is orphaned")
2012+ let kz = B(C)
2013+ let kA = getIntegerValue(kz)
2014+ let kB = if (if ((cp >= 3))
20022015 then true
2003- else if (if (fK)
2004- then (kt >= 3)
2016+ else if (if (fP)
2017+ then (ky >= 3)
20052018 else false)
2006- then (iW > 0)
2019+ then (jb > 0)
20072020 else false)
20082021 then {
2009- let kx = invoke(dd, "sendDeliveryReward", [jw], nil)
2010- if ((kx == kx))
2011- then nil
2022+ let kC = invoke(di, "sendDeliveryReward", [jB], nil)
2023+ if ((kC == kC))
2024+ then {
2025+ let kD = W(jB)
2026+[IntegerEntry(kD, (valueOrElse(getInteger(kD), 0) + 1)), IntegerEntry(X(jB), (co / a))]
2027+ }
20122028 else throw("Strict value is not equal to itself.")
20132029 }
2014- else if (if (if (fK)
2015- then (iW > 0)
2030+ else if (if (if (fP)
2031+ then (jb > 0)
20162032 else false)
2017- then ((cj + aO) > ay)
2033+ then ((co + aR) > aB)
20182034 else false)
20192035 then throw("Your duck is still on delivery mission")
20202036 else {
2021- let ky = valueOrElse(getInteger(dd, bP), 0)
2022- let kz = invoke(dd, "updateDeliveryLocked", [(ky - aN)], nil)
2023- if ((kz == kz))
2024- then if (if (if (fK)
2025- then (0 >= iW)
2037+ let kE = valueOrElse(getInteger(di, bU), 0)
2038+ let kF = invoke(di, "updateDeliveryLocked", [(kE - aQ)], nil)
2039+ if ((kF == kF))
2040+ then if (if (if (fP)
2041+ then (0 >= jb)
20262042 else false)
20272043 then true
2028- else (0 >= kv))
2044+ else (0 >= kA))
20292045 then nil
2030- else [IntegerEntry(U(B), (cj + b))]
2046+ else [IntegerEntry(V(C), (co + b))]
20312047 else throw("Strict value is not equal to itself.")
20322048 }
2033- let kA = getIntegerValue(K(B))
2034- let kB = getStringValue(L(B))
2035- $Tuple4(kw, [IntegerEntry(ku, kA), StringEntry(bK(B), kB)], kB, kA)
2036- }
2037-
2038-
2039-func kC (kD,am,kE,d,kF,kG) = {
2040- let B = valueOrErrorMessage(getString(bI(d)), "You don't have a duck staked")
2041- if (kq(B))
2049+ let kG = getIntegerValue(L(C))
2050+ let kH = getStringValue(M(C))
2051+ $Tuple4(kB, [IntegerEntry(kz, kG), StringEntry(bP(C), kH)], kH, kG)
2052+ }
2053+
2054+
2055+func kI (kJ,ap,kK,d,kL,kM) = {
2056+ let C = valueOrErrorMessage(getString(bN(d)), "You don't have a duck staked")
2057+ if (kv(C))
20422058 then throw("mergeInternal_checkTournament")
2043- else if (kr(B))
2059+ else if (kw(C))
20442060 then throw("mergeInternal_checkDelivery")
20452061 else {
2046- func kH (eS,Q) = {
2047- let jt = value(assetInfo(fromBase58String(Q)))
2048- let ju = bs(Q)
2049- let jv = valueOrErrorMessage(getInteger(ju), (("NFT " + jt.name) + " is not staked"))
2050- let jw = valueOrErrorMessage(getString(bp(Q)), (("NFT " + jt.name) + " is orphaned"))
2051- if ((jw != d))
2052- then throw((aD + " is not yours"))
2062+ func kN (eX,R) = {
2063+ let jy = value(assetInfo(fromBase58String(R)))
2064+ let jz = bx(R)
2065+ let jA = valueOrErrorMessage(getInteger(jz), (("NFT " + jy.name) + " is not staked"))
2066+ let jB = valueOrErrorMessage(getString(bu(R)), (("NFT " + jy.name) + " is orphaned"))
2067+ if ((jB != d))
2068+ then throw((aG + " is not yours"))
20532069 else {
2054- let jx = split(jt.description, "_")
2055- let du = jx[dl]
2056- if (if ((eS._3 != ""))
2057- then (eS._3 != du)
2070+ let jC = split(jy.description, "_")
2071+ let dz = jC[dq]
2072+ if (if ((eX._3 != ""))
2073+ then (eX._3 != dz)
20582074 else false)
20592075 then throw("Lands should be on the same continent to merge")
20602076 else {
2061- let dJ = jx[dj]
2062- let kI = eS._1
2063- let gL = valueOrErrorMessage(indexOf(kI, dJ), "You haven't passed all the lands needed")
2064- let kJ = (take(kI, gL) + drop(kI, (gL + 1)))
2065- let jj = dI(dJ)
2066- let kK = (eS._2 + valueOrElse(getInteger(bt(aF, Q)), 0))
2067- let ib = valueOrElse(getInteger(bz(Q)), 0)
2068- let kL = {
2069- let cz = dJ
2070- if (("S" == cz))
2077+ let dO = jC[do]
2078+ let kO = eX._1
2079+ let gQ = valueOrErrorMessage(indexOf(kO, dO), "You haven't passed all the lands needed")
2080+ let kP = (take(kO, gQ) + drop(kO, (gQ + 1)))
2081+ let jo = dN(dO)
2082+ let kQ = (eX._2 + valueOrElse(getInteger(by(aI, R)), 0))
2083+ let ig = valueOrElse(getInteger(bE(R)), 0)
2084+ let kR = {
2085+ let cE = dO
2086+ if (("S" == cE))
20712087 then 3
2072- else if (("M" == cz))
2088+ else if (("M" == cE))
20732089 then 4
2074- else if (("L" == cz))
2090+ else if (("L" == cE))
20752091 then 5
2076- else if (("XL" == cz))
2092+ else if (("XL" == cE))
20772093 then 6
20782094 else throw("Only S, M, L, XL can merge")
20792095 }
2080- if ((ib != kL))
2096+ if ((ig != kR))
20812097 then throw("All lands should be maxed to merge")
20822098 else {
2083- let eu = jx[di]
2084- let gH = gN(jx[dk])
2085- let gR = (lastBlock.timestamp - jv)
2086- if ((0 > gR))
2087- then throw(((("Saved timestamp is in future, saved = " + toString(jv)) + ", current = ") + toString(lastBlock.timestamp)))
2099+ let ez = jC[dn]
2100+ let gM = gS(jC[dp])
2101+ let gW = (lastBlock.timestamp - jA)
2102+ if ((0 > gW))
2103+ then throw(((("Saved timestamp is in future, saved = " + toString(jA)) + ", current = ") + toString(lastBlock.timestamp)))
20882104 else {
2089- let jz = ji(Q, jj)
2090- let ia = (jj / cG)
2091- let jH = gP(split(eS._4, "_"), gH, gR, ia, jz)
2092- let fc = gF(eS._6, gH, ia, -1)
2093- let kM = gF(eS._10, gH, ia, -1)
2094- let hv = gF(eS._9, gH, ia, 1)
2095- let kN = eS._7
2096- let db = indexOf(kN, Q)
2097- if (!(isDefined(db)))
2098- then throw(("Your staked lands don't contain " + Q))
2105+ let jE = jn(R, jo)
2106+ let if = (jo / cL)
2107+ let jM = gU(split(eX._4, "_"), gM, gW, if, jE)
2108+ let fh = gK(eX._6, gM, if, -1)
2109+ let kS = gK(eX._10, gM, if, -1)
2110+ let hA = gK(eX._9, gM, if, 1)
2111+ let kT = eX._7
2112+ let dg = indexOf(kT, R)
2113+ if (!(isDefined(dg)))
2114+ then throw(("Your staked lands don't contain " + R))
20992115 else {
2100- let kO = br(Q)
2101- let kP = valueOrElse(getString(kO), "")
2102- $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 != ""))
2103- then [DeleteEntry(er(kP))]
2104- else nil)), fc, removeByIndex(kN, value(db)), (eS._8 + jj), hv, kM)
2116+ let kU = bw(R)
2117+ let kV = valueOrElse(getString(kU), "")
2118+ $Tuple10(kP, kQ, dz, jM, ((((((((((((eX._5 :+ DeleteEntry(bx(R))) :+ DeleteEntry(bA(aG, R, d))) :+ DeleteEntry(ey(ez))) :+ DeleteEntry(bu(R))) :+ DeleteEntry(bE(R))) :+ DeleteEntry(eA(R, d))) :+ DeleteEntry(by(aI, R))) :+ DeleteEntry(eB(ez))) :+ DeleteEntry(bD(R))) :+ DeleteEntry(kU)) :+ Burn(fromBase58String(R), 1)) ++ (if ((kV != ""))
2119+ then [DeleteEntry(ew(kV))]
2120+ else nil)), fh, removeByIndex(kT, value(dg)), (eX._8 + jo), hA, kS)
21052121 }
21062122 }
21072123 }
21082124 }
21092125 }
21102126 }
21112127
2112- let hM = bJ(B)
2113- let ip = hL(hM)
2114- let gG = split(valueOrElse(getString(ds()), "0_0_0_0_0_0"), "_")
2115- let kQ = dv(d)
2116- let kR = getString(kQ)
2117- let kS = if (isDefined(kR))
2118- then split_51C(value(kR), "_")
2128+ let hR = bO(C)
2129+ let iu = hQ(hR)
2130+ let gL = split(valueOrElse(getString(dx()), "0_0_0_0_0_0"), "_")
2131+ let kW = dA(d)
2132+ let kX = getString(kW)
2133+ let kY = if (isDefined(kX))
2134+ then split_51C(value(kX), "_")
21192135 else nil
2120- let kT = split(value(assetInfo(fromBase58String(kF[0]))).description, "_")[dl]
2121- let kU = split(valueOrElse(getString(dt(kT)), "0_0_0_0_0_0"), "_")
2122- let fd = {
2123- let eU = kF
2124- let eV = size(eU)
2125- let eW = $Tuple10(kE, 0, "", ip[bj], nil, gG, kS, 0, split("0_0_0_0_0_0", "_"), kU)
2126- func eX (eY,eZ) = if ((eZ >= eV))
2127- then eY
2128- else kH(eY, eU[eZ])
2129-
2130- func fa (eY,eZ) = if ((eZ >= eV))
2131- then eY
2136+ let kZ = split(value(assetInfo(fromBase58String(kL[0]))).description, "_")[dq]
2137+ let la = split(valueOrElse(getString(dy(kZ)), "0_0_0_0_0_0"), "_")
2138+ let fi = {
2139+ let eZ = kL
2140+ let fa = size(eZ)
2141+ let fb = $Tuple10(kK, 0, "", iu[bo], nil, gL, kY, 0, split("0_0_0_0_0_0", "_"), la)
2142+ func fc (fd,fe) = if ((fe >= fa))
2143+ then fd
2144+ else kN(fd, eZ[fe])
2145+
2146+ func ff (fd,fe) = if ((fe >= fa))
2147+ then fd
21322148 else throw("List size exceeds 5")
21332149
2134- fa(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5)
2150+ ff(fc(fc(fc(fc(fc(fb, 0), 1), 2), 3), 4), 5)
21352151 }
2136- let du = fd._3
2137- let hp = valueOrErrorMessage(indexOf(aQ, du), ("Unknown continent: " + du))
2138- let gO = hu(fd._9, (dI(kD) / cG))
2139- let iN = valueOrElse(getInteger(eq()), (ep + 1))
2140- let kV = toString(iN)
2141- let iO = Issue(eH(kV, kD), makeString([kV, kD, gO, du], "_"), 1, 0, false)
2142- let bq = calculateAssetId(iO)
2143- let kW = toBase58String(bq)
2144- let jT = makeString(fe((kG > 0), split(ip[bk], "_"), kG), "_")
2145- let kX = dw(d)
2146- let kY = valueOrElse(getInteger(kX), 0)
2147- $Tuple2((((((((((((((((fd._5 :+ (if ((size(fd._7) > 0))
2148- then StringEntry(kQ, makeString_11C(fd._7, "_"))
2149- else DeleteEntry(kQ))) :+ IntegerEntry(kX, if ((fd._8 > kY))
2152+ let dz = fi._3
2153+ let hu = valueOrErrorMessage(indexOf(aV, dz), ("Unknown continent: " + dz))
2154+ let gT = hz(fi._9, (dN(kJ) / cL))
2155+ let iS = valueOrElse(getInteger(ev()), (eu + 1))
2156+ let lb = toString(iS)
2157+ let iT = Issue(eM(lb, kJ), makeString([lb, kJ, gT, dz], "_"), 1, 0, false)
2158+ let bv = calculateAssetId(iT)
2159+ let lc = toBase58String(bv)
2160+ let jY = makeString(fj((kM > 0), split(iu[bp], "_"), kM), "_")
2161+ let ld = dB(d)
2162+ let le = valueOrElse(getInteger(ld), 0)
2163+ $Tuple2((((((((((((((((fi._5 :+ (if ((size(fi._7) > 0))
2164+ then StringEntry(kW, makeString_11C(fi._7, "_"))
2165+ else DeleteEntry(kW))) :+ IntegerEntry(ld, if ((fi._8 > le))
21502166 then 0
2151- 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)
2167+ else (le - fi._8))) :+ IntegerEntry(ev(), (iS + 1))) :+ iT) :+ StringEntry(ey(lb), lc)) :+ StringEntry(bu(lc), d)) :+ StringEntry(eB(lb), d)) :+ IntegerEntry(by(aI, lc), fi._2)) :+ IntegerEntry(bE(lc), ap)) :+ IntegerEntry(eA(lc, d), ap)) :+ StringEntry(hR, makeString([iu[bn], fi._4, jY, iu[bq]], ":"))) :+ StringEntry(dx(), makeString(fi._6, "_"))) :+ StringEntry(dy(dz), makeString(fi._10, "_"))) :+ StringEntry(bP(C), makeString([dz, "L", lc], "_"))) :+ ScriptTransfer(addressFromStringValue(d), 1, bv)), lc)
21522168 }
21532169 }
21542170
21552171
2156-func kZ (d,kF) = kC("M", 3, "SSSS", d, kF, 0)
2157-
2158-
2159-func la (d,kF) = kC("L", 4, "SMM", d, kF, (cB * 4))
2160-
2161-
2162-func lb (d,kF) = kC("XL", 5, "SSSML", d, kF, (cB * 47))
2163-
2164-
2165-func lc (d,kF) = kC("XXL", 6, "LXL", d, kF, (cB * 54))
2166-
2167-
2168-func ld (d,kF) = {
2169- let cz = size(kF)
2170- if ((4 == cz))
2171- then kZ(d, kF)
2172- else if ((3 == cz))
2173- then la(d, kF)
2174- else if ((5 == cz))
2175- then lb(d, kF)
2176- else if ((2 == cz))
2177- then lc(d, kF)
2172+func lf (d,kL) = kI("M", 3, "SSSS", d, kL, 0)
2173+
2174+
2175+func lg (d,kL) = kI("L", 4, "SMM", d, kL, (cG * 4))
2176+
2177+
2178+func lh (d,kL) = kI("XL", 5, "SSSML", d, kL, (cG * 47))
2179+
2180+
2181+func li (d,kL) = kI("XXL", 6, "LXL", d, kL, (cG * 54))
2182+
2183+
2184+func lj (d,kL) = {
2185+ let cE = size(kL)
2186+ if ((4 == cE))
2187+ then lf(d, kL)
2188+ else if ((3 == cE))
2189+ then lg(d, kL)
2190+ else if ((5 == cE))
2191+ then lh(d, kL)
2192+ else if ((2 == cE))
2193+ then li(d, kL)
21782194 else throw("Unknown merge")
21792195 }
21802196
21812197
2182-func le (bM) = {
2183- let lf = getString(bI(bM))
2184- if (if (cw)
2185- then isDefined(lf)
2198+func lk (bR) = {
2199+ let ll = getString(bN(bR))
2200+ if (if (cB)
2201+ then isDefined(ll)
21862202 else false)
21872203 then {
2188- let B = value(lf)
2189- let lg = bK(B)
2190- let cg = split(valueOrElse(getString(lg), aK), "_")
2191- let cj = parseIntValue(cg[bm])
2192- if (if ((cg[bn] != "D"))
2204+ let C = value(ll)
2205+ let lm = bP(C)
2206+ let cl = split(valueOrElse(getString(lm), aN), "_")
2207+ let co = parseIntValue(cl[br])
2208+ if (if ((cl[bs] != "D"))
21932209 then true
2194- else (lastBlock.timestamp > (cj + aO)))
2210+ else (lastBlock.timestamp > (co + aR)))
21952211 then nil
21962212 else {
2197- let ku = A(B)
2198- if ((parseIntValue(cg[bo]) >= 3))
2213+ let kz = B(C)
2214+ if ((parseIntValue(cl[bt]) >= 3))
21992215 then {
2200- let kx = invoke(dd, "sendDeliveryReward", [bM], nil)
2201- if ((kx == kx))
2216+ let kC = invoke(di, "sendDeliveryReward", [bR], nil)
2217+ if ((kC == kC))
22022218 then nil
22032219 else throw("Strict value is not equal to itself.")
22042220 }
22052221 else (({
2206- let ky = valueOrElse(getInteger(dd, bP), 0)
2207- let kz = invoke(dd, "updateDeliveryLocked", [(ky - aN)], nil)
2208- if ((kz == kz))
2209- then if ((0 >= getIntegerValue(ku)))
2222+ let kE = valueOrElse(getInteger(di, bU), 0)
2223+ let kF = invoke(di, "updateDeliveryLocked", [(kE - aQ)], nil)
2224+ if ((kF == kF))
2225+ then if ((0 >= getIntegerValue(kz)))
22102226 then nil
22112227 else {
2212- let lh = invoke(this, "saveInteger", [U(B), (cj + b)], nil)
2213- if ((lh == lh))
2228+ let ln = invoke(this, "saveInteger", [V(C), (co + b)], nil)
2229+ if ((ln == ln))
22142230 then nil
22152231 else throw("Strict value is not equal to itself.")
22162232 }
22172233 else throw("Strict value is not equal to itself.")
2218- } :+ IntegerEntry(ku, getIntegerValue(K(B)))) :+ StringEntry(lg, getStringValue(L(B))))
2234+ } :+ IntegerEntry(kz, getIntegerValue(L(C)))) :+ StringEntry(lm, getStringValue(M(C))))
22192235 }
22202236 }
22212237 else nil
22222238 }
22232239
22242240
2225-func li (gL) = if (if ((gL.originCaller != dc))
2226- then valueOrElse(getBoolean(dL()), false)
2241+func lo (gQ) = if (if ((gQ.originCaller != dh))
2242+ then valueOrElse(getBoolean(dQ()), false)
22272243 else false)
22282244 then throw("Contracts are under maintenance")
22292245 else {
2230- let bM = toString(gL.originCaller)
2231- (le(bM) :+ StringEntry(dM(bM), toBase58String(gL.transactionId)))
2246+ let bR = toString(gQ.originCaller)
2247+ (lk(bR) :+ StringEntry(dR(bR), toBase58String(gQ.transactionId)))
22322248 }
22332249
22342250
2235-func lj (gL) = if (if ((gL.originCaller != dc))
2236- then valueOrElse(getBoolean(dL()), false)
2251+func lp (gQ) = if (if ((gQ.originCaller != dh))
2252+ then valueOrElse(getBoolean(dQ()), false)
22372253 else false)
22382254 then throw("Contracts are under maintenance")
2239- else [StringEntry(dM(toString(gL.originCaller)), toBase58String(gL.transactionId))]
2240-
2241-
2242-@Callable(gL)
2243-func constructorV1 (lk) = if ((gL.caller != this))
2255+ else [StringEntry(dR(toString(gQ.originCaller)), toBase58String(gQ.transactionId))]
2256+
2257+
2258+@Callable(gQ)
2259+func constructorV1 (lq) = if ((gQ.caller != this))
22442260 then throw("Permission denied")
2245- else [StringEntry(cW(), lk)]
2246-
2247-
2248-
2249-@Callable(gL)
2250-func saveInteger (cO,eJ) = if ((gL.caller != this))
2261+ else [StringEntry(db(), lq)]
2262+
2263+
2264+
2265+@Callable(gQ)
2266+func saveInteger (cT,eO) = if ((gQ.caller != this))
22512267 then throw("saveInteger is not public method")
2252- else [IntegerEntry(cO, eJ)]
2253-
2254-
2255-
2256-@Callable(gL)
2257-func setBlocked (ll) = if ((gL.caller != this))
2268+ else [IntegerEntry(cT, eO)]
2269+
2270+
2271+
2272+@Callable(gQ)
2273+func setBlocked (lr) = if ((gQ.caller != this))
22582274 then throw("permission denied")
2259- else [BooleanEntry(dL(), ll)]
2260-
2261-
2262-
2263-@Callable(gL)
2275+ else [BooleanEntry(dQ(), lr)]
2276+
2277+
2278+
2279+@Callable(gQ)
22642280 func stakeLand () = {
2265- let lm = li(gL)
2266- if ((size(gL.payments) != 1))
2281+ let ls = lo(gQ)
2282+ if ((size(gQ.payments) != 1))
22672283 then throw("Exactly one payment required")
22682284 else {
2269- let ln = value(gL.payments[0])
2270- let bq = value(ln.assetId)
2271- let cN = toString(gL.caller)
2272- if ((ln.amount != 1))
2273- then throw((("NFT " + aD) + " token should be attached as payment"))
2285+ let lt = value(gQ.payments[0])
2286+ let bv = value(lt.assetId)
2287+ let cS = toString(gQ.caller)
2288+ if ((lt.amount != 1))
2289+ then throw((("NFT " + aG) + " token should be attached as payment"))
22742290 else {
2275- let jt = value(assetInfo(bq))
2276- if ((jt.issuer != this))
2291+ let jy = value(assetInfo(bv))
2292+ if ((jy.issuer != this))
22772293 then throw("Unknown issuer of token")
2278- else if (!(contains(jt.name, aD)))
2279- then throw((("Only NFT " + aD) + " tokens are accepted"))
2294+ else if (!(contains(jy.name, aG)))
2295+ then throw((("Only NFT " + aG) + " tokens are accepted"))
22802296 else {
2281- let lo = drop(jt.name, 4)
2282- let eu = if (contains(lo, "XXL"))
2283- then dropRight(lo, 3)
2284- else if (contains(lo, "XL"))
2285- then dropRight(lo, 2)
2286- else dropRight(lo, 1)
2287- if (!(isDefined(parseInt(eu))))
2288- then throw(("Cannot parse land number from " + jt.name))
2297+ let lu = drop(jy.name, 4)
2298+ let ez = if (contains(lu, "XXL"))
2299+ then dropRight(lu, 3)
2300+ else if (contains(lu, "XL"))
2301+ then dropRight(lu, 2)
2302+ else dropRight(lu, 1)
2303+ if (!(isDefined(parseInt(ez))))
2304+ then throw(("Cannot parse land number from " + jy.name))
22892305 else {
2290- let Q = toBase58String(bq)
2291- let ju = bs(Q)
2292- if (isDefined(getInteger(ju)))
2293- then throw((("NFT " + jt.name) + " is already staked"))
2306+ let R = toBase58String(bv)
2307+ let jz = bx(R)
2308+ if (isDefined(getInteger(jz)))
2309+ then throw((("NFT " + jy.name) + " is already staked"))
22942310 else {
2295- let jx = split(jt.description, "_")
2296- let gH = gN(jx[dk])
2297- let jj = dI(jx[dj])
2298- let ia = (jj / cG)
2299- let fc = gM(gH, ia, 1)
2300- let lp = dt(jx[dl])
2301- let kU = split(valueOrElse(getString(lp), "0_0_0_0_0_0"), "_")
2302- let lq = makeString(gF(kU, gH, ia, 1), "_")
2303- let kQ = dv(cN)
2304- let kR = getString(kQ)
2305- let kN = if (isDefined(kR))
2306- then split_51C(value(kR), "_")
2311+ let jC = split(jy.description, "_")
2312+ let gM = gS(jC[dp])
2313+ let jo = dN(jC[do])
2314+ let if = (jo / cL)
2315+ let fh = gR(gM, if, 1)
2316+ let lv = dy(jC[dq])
2317+ let la = split(valueOrElse(getString(lv), "0_0_0_0_0_0"), "_")
2318+ let lw = makeString(gK(la, gM, if, 1), "_")
2319+ let kW = dA(cS)
2320+ let kX = getString(kW)
2321+ let kT = if (isDefined(kX))
2322+ then split_51C(value(kX), "_")
23072323 else nil
2308- if (containsElement(kN, Q))
2309- then throw(("Your staked lands already contain " + Q))
2310- else if ((size(kN) >= aH))
2311- then throw((("Your already staked max (" + toString(aH)) + ") lands"))
2324+ if (containsElement(kT, R))
2325+ then throw(("Your staked lands already contain " + R))
2326+ else if ((size(kT) >= aK))
2327+ then throw((("Your already staked max (" + toString(aK)) + ") lands"))
23122328 else {
2313- let ib = valueOrElse(getInteger(bz(Q)), 0)
2314- let kX = dw(cN)
2315- let lr = valueOrElse(getInteger(kX), 0)
2316- let ls = invoke(df, "onStakeUnstakeLand", [cN], nil)
2317- $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)
2329+ let ig = valueOrElse(getInteger(bE(R)), 0)
2330+ let ld = dB(cS)
2331+ let lx = valueOrElse(getInteger(ld), 0)
2332+ let ly = invoke(dk, "onStakeUnstakeLand", [cS], nil)
2333+ $Tuple2(([IntegerEntry(jz, lastBlock.timestamp), IntegerEntry(bA(aG, R, cS), lastBlock.timestamp), StringEntry(kW, makeString_11C((kT :+ R), "_")), IntegerEntry(ld, (lx + jo)), StringEntry(bu(R), cS), StringEntry(eB(ez), cS), IntegerEntry(eA(R, cS), ig), StringEntry(dx(), fh), StringEntry(lv, lw)] ++ ls), ly)
23182334 }
23192335 }
23202336 }
23212337 }
23222338 }
23232339 }
23242340 }
23252341
23262342
23272343
2328-@Callable(gL)
2329-func unstakeLand (jp) = {
2330- let lm = li(gL)
2331- if ((size(gL.payments) != 0))
2344+@Callable(gQ)
2345+func unstakeLand (ju) = {
2346+ let ls = lo(gQ)
2347+ if ((size(gQ.payments) != 0))
23322348 then throw("No payments required")
23332349 else {
2334- let d = toString(gL.caller)
2335- let gb = jn(d, eB, jp)
2336- let Q = gb._2
2337- let jx = gb._3
2338- let kQ = dv(d)
2339- let gH = gN(jx[dk])
2340- let jj = dI(jx[dj])
2341- let ia = (jj / cG)
2342- let fc = gM(gH, ia, -1)
2343- let lp = dt(jx[dl])
2344- let kU = split(valueOrElse(getString(lp), "0_0_0_0_0_0"), "_")
2345- let lq = makeString(gF(kU, gH, ia, -1), "_")
2346- let jU = jK(d, Q, jj, eB)
2347- let kN = split_51C(valueOrElse(getString(kQ), ""), "_")
2348- let db = indexOf(kN, Q)
2349- if (!(isDefined(db)))
2350- then throw(("Your staked lands don't contain " + Q))
2350+ let d = toString(gQ.caller)
2351+ let gg = js(d, eG, ju)
2352+ let R = gg._2
2353+ let jC = gg._3
2354+ let kW = dA(d)
2355+ let gM = gS(jC[dp])
2356+ let jo = dN(jC[do])
2357+ let if = (jo / cL)
2358+ let fh = gR(gM, if, -1)
2359+ let lv = dy(jC[dq])
2360+ let la = split(valueOrElse(getString(lv), "0_0_0_0_0_0"), "_")
2361+ let lw = makeString(gK(la, gM, if, -1), "_")
2362+ let jZ = jP(d, R, jo, eG)
2363+ let kT = split_51C(valueOrElse(getString(kW), ""), "_")
2364+ let dg = indexOf(kT, R)
2365+ if (!(isDefined(dg)))
2366+ then throw(("Your staked lands don't contain " + R))
23512367 else {
2352- let ay = lastBlock.timestamp
2353- let lt = valueOrElse(getInteger(de, bL(d)), 0)
2354- if ((lt >= ay))
2355- then throw(("Your gWL are taking part in voting, cannot unstake until " + toString(lt)))
2368+ let aB = lastBlock.timestamp
2369+ let lz = valueOrElse(getInteger(dj, bQ(d)), 0)
2370+ if ((lz >= aB))
2371+ then throw(("Your gWL are taking part in voting, cannot unstake until " + toString(lz)))
23562372 else {
2357- let lu = (valueOrElse(getInteger(df, c(d)), 0) + cC)
2358- if ((lu > ay))
2359- then throw(("Your staked lands took part in arbitrage, cannot unstake until " + toString(lu)))
2373+ let lA = (valueOrElse(getInteger(dk, c(d)), 0) + cH)
2374+ if ((lA > aB))
2375+ then throw(("Your staked lands took part in arbitrage, cannot unstake until " + toString(lA)))
23602376 else {
2361- let kX = dw(d)
2362- let kY = valueOrElse(getInteger(kX), 0)
2363- let lv = if ((jj > kY))
2377+ let ld = dB(d)
2378+ let le = valueOrElse(getInteger(ld), 0)
2379+ let lB = if ((jo > le))
23642380 then 0
2365- else (kY - jj)
2366- let ls = invoke(df, "onStakeUnstakeLand", [d], nil)
2367- $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))
2368- then StringEntry(kQ, makeString_11C(removeByIndex(kN, value(db)), "_"))
2369- else DeleteEntry(kQ), IntegerEntry(kX, lv)] ++ lm), ls)
2381+ else (le - jo)
2382+ let ly = invoke(dk, "onStakeUnstakeLand", [d], nil)
2383+ $Tuple2(([ScriptTransfer(gQ.caller, 1, fromBase58String(R)), DeleteEntry(bx(R)), DeleteEntry(bA(aG, R, d)), StringEntry(dx(), fh), StringEntry(lv, lw), StringEntry(jZ._2, makeString(jZ._3, ":")), if ((size(kT) > 1))
2384+ then StringEntry(kW, makeString_11C(removeByIndex(kT, value(dg)), "_"))
2385+ else DeleteEntry(kW), IntegerEntry(ld, lB)] ++ ls), ly)
23702386 }
23712387 }
23722388 }
23732389 }
23742390 }
23752391
23762392
23772393
2378-@Callable(gL)
2394+@Callable(gQ)
23792395 func stakeDuck () = {
2380- let lm = li(gL)
2381- if ((size(gL.payments) != 1))
2396+ let ls = lo(gQ)
2397+ if ((size(gQ.payments) != 1))
23822398 then throw("Exactly one payment required")
23832399 else {
2384- let ln = value(gL.payments[0])
2385- let bq = value(ln.assetId)
2386- let cN = toString(gL.caller)
2387- if ((ln.amount != 1))
2388- then throw((("NFT " + aE) + " token should be attached as payment"))
2400+ let lt = value(gQ.payments[0])
2401+ let bv = value(lt.assetId)
2402+ let cS = toString(gQ.caller)
2403+ if ((lt.amount != 1))
2404+ then throw((("NFT " + aH) + " token should be attached as payment"))
23892405 else {
2390- let jt = value(assetInfo(bq))
2391- if (if ((jt.issuer != dY))
2392- then (jt.issuer != dZ)
2406+ let jy = value(assetInfo(bv))
2407+ if (if ((jy.issuer != ed))
2408+ then (jy.issuer != ee)
23932409 else false)
2394- then throw((("Unknown issuer of " + aE) + " token"))
2395- else if (!(contains(jt.name, aE)))
2396- then throw((("Only NFT " + aE) + " tokens are accepted"))
2410+ then throw((("Unknown issuer of " + aH) + " token"))
2411+ else if (!(contains(jy.name, aH)))
2412+ then throw((("Only NFT " + aH) + " tokens are accepted"))
23972413 else {
2398- let lw = toBase58String(bq)
2399- let ju = bs(lw)
2400- if (isDefined(getInteger(ju)))
2401- then throw((("NFT " + jt.name) + " is already staked"))
2402- else if (isDefined(getString(bI(cN))))
2403- then throw(("You already staked one duck: " + jt.name))
2414+ let lC = toBase58String(bv)
2415+ let jz = bx(lC)
2416+ if (isDefined(getInteger(jz)))
2417+ then throw((("NFT " + jy.name) + " is already staked"))
2418+ else if (isDefined(getString(bN(cS))))
2419+ then throw(("You already staked one duck: " + jy.name))
24042420 else {
2405- let lg = bK(lw)
2406- let ce = getString(lg)
2407- let hM = bJ(lw)
2408- let lx = getString(hM)
2409- let jc = A(lw)
2410- let jd = ah(valueOrElse(getInteger(E(lw)), 0))
2411- let kv = valueOrElse(getInteger(jc), jd)
2412- ([IntegerEntry(ju, lastBlock.timestamp), IntegerEntry(bv(aE, toBase58String(bq), cN), lastBlock.timestamp), StringEntry(bH(lw), cN), StringEntry(bI(cN), lw)] ++ (if (isDefined(ce))
2421+ let lm = bP(lC)
2422+ let cj = getString(lm)
2423+ let hR = bO(lC)
2424+ let lD = getString(hR)
2425+ let jh = B(lC)
2426+ let ji = ak(valueOrElse(getInteger(F(lC)), 0))
2427+ let kA = valueOrElse(getInteger(jh), ji)
2428+ ([IntegerEntry(jz, lastBlock.timestamp), IntegerEntry(bA(aH, toBase58String(bv), cS), lastBlock.timestamp), StringEntry(bM(lC), cS), StringEntry(bN(cS), lC)] ++ (if (isDefined(cj))
24132429 then nil
2414- else ([StringEntry(lg, aK)] ++ (if (isDefined(lx))
2430+ else ([StringEntry(lm, aN)] ++ (if (isDefined(lD))
24152431 then nil
2416- else (([StringEntry(hM, "0:0_0_0_0_0_0:0_0_0_0_0_0:")] :+ IntegerEntry(jc, kv)) ++ lm)))))
2432+ else (([StringEntry(hR, "0:0_0_0_0_0_0:0_0_0_0_0_0:")] :+ IntegerEntry(jh, kA)) ++ ls)))))
24172433 }
24182434 }
24192435 }
24202436 }
24212437 }
24222438
24232439
24242440
2425-@Callable(gL)
2426-func unstakeDuck (lw) = {
2427- let lm = li(gL)
2428- if ((size(gL.payments) != 0))
2441+@Callable(gQ)
2442+func unstakeDuck (lC) = {
2443+ let ls = lo(gQ)
2444+ if ((size(gQ.payments) != 0))
24292445 then throw("No payments required")
24302446 else {
2431- let bq = fromBase58String(lw)
2432- let cN = toString(gL.caller)
2433- let jt = value(assetInfo(bq))
2434- let ju = bs(lw)
2435- if (!(isDefined(getInteger(ju))))
2436- then throw((("NFT " + jt.name) + " is not staked"))
2437- else if (!(isDefined(getString(bI(cN)))))
2438- then throw((("The duck " + jt.name) + " is not staked"))
2447+ let bv = fromBase58String(lC)
2448+ let cS = toString(gQ.caller)
2449+ let jy = value(assetInfo(bv))
2450+ let jz = bx(lC)
2451+ if (!(isDefined(getInteger(jz))))
2452+ then throw((("NFT " + jy.name) + " is not staked"))
2453+ else if (!(isDefined(getString(bN(cS)))))
2454+ then throw((("The duck " + jy.name) + " is not staked"))
24392455 else {
2440- let jw = valueOrErrorMessage(getString(bH(lw)), (("NFT " + jt.name) + " is orphaned"))
2441- if ((jw != cN))
2456+ let jB = valueOrErrorMessage(getString(bM(lC)), (("NFT " + jy.name) + " is orphaned"))
2457+ if ((jB != cS))
24422458 then throw("Staked NFT is not yours")
2443- else if (kq(lw))
2459+ else if (kv(lC))
24442460 then throw("unstakeDuck_checkTournament")
2445- else if (kr(lw))
2461+ else if (kw(lC))
24462462 then throw("unstakeDuck_checkDelivery")
24472463 else {
2448- let jc = A(lw)
2449- let jd = ah(valueOrElse(getInteger(E(lw)), 0))
2450- let at = valueOrElse(getInteger(jc), jd)
2451- if ((jd > at))
2452- then throw((("Please heal your duck to " + toString(jd)) + "hp before unstaking"))
2453- 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)
2464+ let jh = B(lC)
2465+ let ji = ak(valueOrElse(getInteger(F(lC)), 0))
2466+ let aw = valueOrElse(getInteger(jh), ji)
2467+ if ((ji > aw))
2468+ then throw((("Please heal your duck to " + toString(ji)) + "hp before unstaking"))
2469+ else ([ScriptTransfer(gQ.caller, 1, bv), DeleteEntry(jz), DeleteEntry(jh), DeleteEntry(bP(lC)), DeleteEntry(bM(lC)), DeleteEntry(bA(aH, lC, cS)), DeleteEntry(bN(cS))] ++ ls)
24542470 }
24552471 }
24562472 }
24572473 }
24582474
24592475
24602476
2461-@Callable(gL)
2462-func claimRes (eJ,ly) = {
2463- let lm = li(gL)
2464- if ((size(gL.payments) != 0))
2477+@Callable(gQ)
2478+func claimRes (eO,lE) = {
2479+ let ls = lo(gQ)
2480+ if ((size(gQ.payments) != 0))
24652481 then throw("No payments required")
24662482 else {
2467- let d = toString(gL.originCaller)
2468- let fk = jy(d, eJ, eB, ly)
2469- let B = valueOrErrorMessage(getString(bI(d)), "You don't have a duck staked")
2470- $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])
2471- }
2472- }
2473-
2474-
2475-
2476-@Callable(gL)
2477-func claimResToWH (eJ,ly) = {
2478- let lm = li(gL)
2479- if ((size(gL.payments) != 0))
2483+ let d = toString(gQ.originCaller)
2484+ let fp = jD(d, eO, eG, lE)
2485+ let C = valueOrErrorMessage(getString(bN(d)), "You don't have a duck staked")
2486+ $Tuple2(((((fp._1 ++ kf(C, fraction(Y, eO, cK))._1) :+ StringEntry(fp._2, makeString(fp._3, ":"))) :+ StringEntry(fp._4, makeString(fp._5, ":"))) ++ ls), fp._3[bo])
2487+ }
2488+ }
2489+
2490+
2491+
2492+@Callable(gQ)
2493+func claimResToWH (eO,lE) = {
2494+ let ls = lo(gQ)
2495+ if ((size(gQ.payments) != 0))
24802496 then throw("No payments required")
24812497 else {
2482- let d = toString(gL.originCaller)
2483- let fk = jy(d, eJ, eA, ly)
2484- $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])
2485- }
2486- }
2487-
2488-
2489-
2490-@Callable(gL)
2491-func flight (iR,iS) = {
2492- let lm = lj(gL)
2493- if ((size(gL.payments) != 0))
2498+ let d = toString(gQ.originCaller)
2499+ let fp = jD(d, eO, eF, lE)
2500+ $Tuple2(((((fp._1 ++ kl(d, fraction(Y, eO, cK))._1) :+ StringEntry(fp._2, makeString(fp._3, ":"))) :+ StringEntry(fp._4, makeString(fp._5, ":"))) ++ ls), fp._5[bf])
2501+ }
2502+ }
2503+
2504+
2505+
2506+@Callable(gQ)
2507+func flight (iW,iX) = {
2508+ let ls = lp(gQ)
2509+ if ((size(gQ.payments) != 0))
24942510 then throw("No payments required")
24952511 else {
2496- let bM = toString(gL.caller)
2497- let hq = iQ(bM, iR, iS)
2498- let iW = hq._1
2499- let B = hq._2
2500- let lg = bK(B)
2501- let jr = valueOrElse(getString(lg), aK)
2502- let iY = hq._4
2503- if ((iY == jr))
2512+ let bR = toString(gQ.caller)
2513+ let hv = iV(bR, iW, iX)
2514+ let jb = hv._1
2515+ let C = hv._2
2516+ let lm = bP(C)
2517+ let jw = valueOrElse(getString(lm), aN)
2518+ let jd = hv._4
2519+ if ((jd == jw))
25042520 then throw("You can't fly to the same location")
25052521 else {
2506- let cs = split(iY, "_")
2507- let lz = (cs[bn] == "T")
2508- let lA = (cs[bn] == "D")
2509- let gy = G(B)
2510- let lB = valueOrElse(getString(gy), ",;,_,;,_,;,_,;,_,;,_,;,")
2511- let lC = fl(lB, hq._5)
2512- let lD = lC._1
2513- let lE = lC._2
2514- let lF = if (!(cn(dg, jr)))
2515- then if (!(cl(iY)))
2516- then cq(jr, iY, 5)
2517- else if ((iW > 0))
2518- then $Tuple2(iY, iW)
2519- else $Tuple2(jr, 0)
2520- else if (cd(dg, jr))
2521- then if (!(cd(dg, iY)))
2522+ let cx = split(jd, "_")
2523+ let lF = (cx[bs] == "T")
2524+ let lG = (cx[bs] == "D")
2525+ let gD = H(C)
2526+ let lH = valueOrElse(getString(gD), ",;,_,;,_,;,_,;,_,;,_,;,")
2527+ let lI = fq(lH, hv._5)
2528+ let lJ = lI._1
2529+ let lK = lI._2
2530+ let lL = if (!(cs(dl, jw)))
2531+ then if (!(cq(jd)))
2532+ then cv(jw, jd, 5)
2533+ else if ((jb > 0))
2534+ then $Tuple2(jd, jb)
2535+ else $Tuple2(jw, 0)
2536+ else if (ci(dl, jw))
2537+ then if (!(ci(dl, jd)))
25222538 then throw("Your duck is taking part in the tournament")
25232539 else {
2524- let kt = parseIntValue(cs[bo])
2525- let lG = split(jr, "_")
2526- let cf = valueOrElse(getInteger(dg, bQ), 0)
2527- if ((kt != (parseIntValue(lG[bo]) + 1)))
2528- then cq(jr, iY, 7)
2529- else if ((iW > 0))
2540+ let ky = parseIntValue(cx[bt])
2541+ let lM = split(jw, "_")
2542+ let ck = valueOrElse(getInteger(dl, bV), 0)
2543+ if ((ky != (parseIntValue(lM[bt]) + 1)))
2544+ then cv(jw, jd, 7)
2545+ else if ((jb > 0))
25302546 then {
2531- let lH = valueOrElse(getInteger(dg, bU(cf, B)), 0)
2532- let lI = if ((kt > lH))
2533- then invoke(dg, "saveDuckResult", [B, kt], nil)
2547+ let lN = valueOrElse(getInteger(dl, bZ(ck, C)), 0)
2548+ let lO = if ((ky > lN))
2549+ then invoke(dl, "saveDuckResult", [C, ky], nil)
25342550 else unit
2535- if ((lI == lI))
2536- then $Tuple2(iY, iW)
2551+ if ((lO == lO))
2552+ then $Tuple2(jd, jb)
25372553 else throw("Strict value is not equal to itself.")
25382554 }
2539- else $Tuple2(jr, 0)
2555+ else $Tuple2(jw, 0)
25402556 }
2541- else if (!(ci(jr)))
2557+ else if (!(cn(jw)))
25422558 then {
2543- let lJ = dF(invoke(this, "autoExitDelivery", [B, iW, if (lA)
2559+ let lP = dK(invoke(this, "autoExitDelivery", [C, jb, if (lG)
25442560 then "10"
25452561 else "11", 0], nil))
2546- if ((lJ == lJ))
2547- then if (lA)
2548- then lJ
2549- else if ((iW > 0))
2550- then $Tuple2(iY, iW)
2551- else $Tuple2(lJ._1, 0)
2562+ if ((lP == lP))
2563+ then if (lG)
2564+ then lP
2565+ else if ((jb > 0))
2566+ then $Tuple2(jd, jb)
2567+ else $Tuple2(lP._1, 0)
25522568 else throw("Strict value is not equal to itself.")
25532569 }
2554- else if (!(lA))
2570+ else if (!(lG))
25552571 then throw("Your duck is taking part in delivery")
2556- else if (!(ci(iY)))
2557- then cq(jr, iY, 13)
2572+ else if (!(cn(jd)))
2573+ then cv(jw, jd, 13)
25582574 else {
2559- let kt = parseIntValue(cs[bo])
2560- let lG = split(jr, "_")
2561- if ((kt != (parseIntValue(lG[bo]) + 1)))
2562- then cq(jr, iY, 14)
2563- else if (if ((iW > 0))
2564- then (3 > kt)
2575+ let ky = parseIntValue(cx[bt])
2576+ let lM = split(jw, "_")
2577+ if ((ky != (parseIntValue(lM[bt]) + 1)))
2578+ then cv(jw, jd, 14)
2579+ else if (if ((jb > 0))
2580+ then (3 > ky)
25652581 else false)
2566- then $Tuple2(iY, iW)
2582+ then $Tuple2(jd, jb)
25672583 else {
2568- let lJ = dF(invoke(this, "autoExitDelivery", [B, iW, "15-17", kt], nil))
2569- if ((lJ == lJ))
2570- then lJ
2584+ let lP = dK(invoke(this, "autoExitDelivery", [C, jb, "15-17", ky], nil))
2585+ if ((lP == lP))
2586+ then lP
25712587 else throw("Strict value is not equal to itself.")
25722588 }
25732589 }
2574- let lK = lF._1
2575- let lL = lF._2
2576- $Tuple2(((([StringEntry(lg, lK), StringEntry(gy, lD), IntegerEntry(A(B), lL)] ++ lm) ++ (if (lE)
2577- then [StringEntry(M(B), "0_0_0_0_0")]
2578- else nil)) ++ ka(B, if ((iW > 0))
2579- then W
2580- else X)._1), hq._3)
2590+ let lQ = lL._1
2591+ let lR = lL._2
2592+ $Tuple2(((([StringEntry(lm, lQ), StringEntry(gD, lJ), IntegerEntry(B(C), lR)] ++ ls) ++ (if (lK)
2593+ then [StringEntry(N(C), "0_0_0_0_0")]
2594+ else nil)) ++ kf(C, if ((jb > 0))
2595+ then Z
2596+ else aa)._1), hv._3)
25812597 }
25822598 }
25832599 }
25842600
25852601
25862602
2587-@Callable(gL)
2588-func heal (lM,lN,lO) = {
2589- let lm = li(gL)
2590- if (if (if ((0 > lM))
2603+@Callable(gQ)
2604+func heal (lS,lT,lU) = {
2605+ let ls = lo(gQ)
2606+ if (if (if ((0 > lS))
25912607 then true
2592- else (0 > lN))
2608+ else (0 > lT))
25932609 then true
2594- else (0 > lO))
2610+ else (0 > lU))
25952611 then throw("Quantity cannot be negative")
25962612 else {
2597- let B = valueOrErrorMessage(getString(bI(toString(gL.caller))), "You don't have a duck staked")
2598- if (kq(B))
2613+ let C = valueOrErrorMessage(getString(bN(toString(gQ.caller))), "You don't have a duck staked")
2614+ if (kv(C))
25992615 then throw("heal_checkTournament")
2600- else if (kr(B))
2616+ else if (kw(C))
26012617 then throw("heal_checkDelivery")
26022618 else {
2603- let lP = [lM, lN, lO]
2604- let jc = A(B)
2605- let jd = ah(valueOrElse(getInteger(E(B)), 0))
2606- let lQ = valueOrElse(getInteger(jc), jd)
2607- if ((lQ >= jd))
2608- then throw((("HP should be < " + toString(jd)) + " to heal"))
2619+ let lV = [lS, lT, lU]
2620+ let jh = B(C)
2621+ let ji = ak(valueOrElse(getInteger(F(C)), 0))
2622+ let lW = valueOrElse(getInteger(jh), ji)
2623+ if ((lW >= ji))
2624+ then throw((("HP should be < " + toString(ji)) + " to heal"))
26092625 else {
2610- let hM = bJ(B)
2611- let ip = hL(hM)
2612- let lR = if ((ip[bl] == ""))
2626+ let hR = bO(C)
2627+ let iu = hQ(hR)
2628+ let lX = if ((iu[bq] == ""))
26132629 then nil
2614- else split_4C(ip[bl], "_")
2615- func lS (eS,cp) = {
2616- let dB = eS._2
2617- let hh = if ((size(lR) > dB))
2618- then parseIntValue(lR[dB])
2630+ else split_4C(iu[bq], "_")
2631+ func lY (eX,cu) = {
2632+ let dG = eX._2
2633+ let hm = if ((size(lX) > dG))
2634+ then parseIntValue(lX[dG])
26192635 else 0
2620- if ((3 > dB))
2636+ if ((3 > dG))
26212637 then {
2622- let lT = lP[dB]
2623- if ((lT > hh))
2624- then throw(((("You have only " + toString(hh)) + " of ") + aP[dB]))
2625- else $Tuple3((eS._1 :+ toString((hh - lT))), (dB + 1), (eS._3 + (parseIntValue(split(cp, "_")[aV]) * lT)))
2638+ let lZ = lV[dG]
2639+ if ((lZ > hm))
2640+ then throw(((("You have only " + toString(hm)) + " of ") + aU[dG]))
2641+ else $Tuple3((eX._1 :+ toString((hm - lZ))), (dG + 1), (eX._3 + (parseIntValue(split(cu, "_")[ba]) * lZ)))
26262642 }
2627- else $Tuple3((eS._1 :+ toString(hh)), (dB + 1), eS._3)
2643+ else $Tuple3((eX._1 :+ toString(hm)), (dG + 1), eX._3)
26282644 }
26292645
2630- let fk = {
2631- let eU = aT
2632- let eV = size(eU)
2633- let eW = $Tuple3(nil, 0, 0)
2634- func eX (eY,eZ) = if ((eZ >= eV))
2635- then eY
2636- else lS(eY, eU[eZ])
2637-
2638- func fa (eY,eZ) = if ((eZ >= eV))
2639- then eY
2646+ let fp = {
2647+ let eZ = aY
2648+ let fa = size(eZ)
2649+ let fb = $Tuple3(nil, 0, 0)
2650+ func fc (fd,fe) = if ((fe >= fa))
2651+ then fd
2652+ else lY(fd, eZ[fe])
2653+
2654+ func ff (fd,fe) = if ((fe >= fa))
2655+ then fd
26402656 else throw("List size exceeds 50")
26412657
2642- 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)
2658+ ff(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fb, 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)
26432659 }
2644- let lU = min([jd, (lQ + fk._3)])
2645- $Tuple2((([IntegerEntry(jc, lU), StringEntry(hM, makeString_2C([ip[bi], ip[bj], ip[bk], makeString(fk._1, "_")], ":"))] ++ lm) ++ ka(B, (ae * ((lM + lN) + lO)))._1), lU)
2660+ let ma = min([ji, (lW + fp._3)])
2661+ $Tuple2((([IntegerEntry(jh, ma), StringEntry(hR, makeString_2C([iu[bn], iu[bo], iu[bp], makeString(fp._1, "_")], ":"))] ++ ls) ++ kf(C, (ah * ((lS + lT) + lU)))._1), ma)
26462662 }
26472663 }
26482664 }
26492665 }
26502666
26512667
26522668
2653-@Callable(gL)
2669+@Callable(gQ)
26542670 func healES () = {
2655- let lm = li(gL)
2656- if ((size(gL.payments) != 1))
2671+ let ls = lo(gQ)
2672+ if ((size(gQ.payments) != 1))
26572673 then throw("Exactly one payment required")
26582674 else {
2659- let ln = value(gL.payments[0])
2660- if ((ln.assetId != cy))
2675+ let lt = value(gQ.payments[0])
2676+ if ((lt.assetId != cD))
26612677 then throw("Allowed USDT payment only!")
26622678 else {
2663- let B = valueOrErrorMessage(getString(bI(toString(gL.caller))), "You don't have a duck staked")
2664- if (kq(B))
2679+ let C = valueOrErrorMessage(getString(bN(toString(gQ.caller))), "You don't have a duck staked")
2680+ if (kv(C))
26652681 then throw("healES_checkTournament")
2666- else if (kr(B))
2682+ else if (kw(C))
26672683 then throw("healES_checkDelivery")
26682684 else {
2669- let jc = A(B)
2670- let jd = ah(valueOrElse(getInteger(E(B)), 0))
2671- let lQ = valueOrElse(getInteger(jc), jd)
2672- if ((lQ > 0))
2685+ let jh = B(C)
2686+ let ji = ak(valueOrElse(getInteger(F(C)), 0))
2687+ let lW = valueOrElse(getInteger(jh), ji)
2688+ if ((lW > 0))
26732689 then throw("HP should be 0 to call Emergency Service")
26742690 else {
2675- let hM = bJ(B)
2676- let ip = hL(hM)
2677- let lR = if ((ip[bl] == ""))
2691+ let hR = bO(C)
2692+ let iu = hQ(hR)
2693+ let lX = if ((iu[bq] == ""))
26782694 then nil
2679- else split_4C(ip[bl], "_")
2680- let lV = if ((size(lR) > 0))
2681- then parseIntValue(lR[0])
2695+ else split_4C(iu[bq], "_")
2696+ let mb = if ((size(lX) > 0))
2697+ then parseIntValue(lX[0])
26822698 else 0
2683- let lW = if ((size(lR) > 1))
2684- then parseIntValue(lR[1])
2699+ let mc = if ((size(lX) > 1))
2700+ then parseIntValue(lX[1])
26852701 else 0
2686- let lX = if ((size(lR) > 2))
2687- then parseIntValue(lR[2])
2702+ let md = if ((size(lX) > 2))
2703+ then parseIntValue(lX[2])
26882704 else 0
2689- if (if (if ((lV > 0))
2705+ if (if (if ((mb > 0))
26902706 then true
2691- else (lW > 0))
2707+ else (mc > 0))
26922708 then true
2693- else (lX > 0))
2709+ else (md > 0))
26942710 then throw("You have to use own Medical Kit")
26952711 else {
2696- let lY = getString(dd, bN())
2697- let lZ = if (isDefined(lY))
2698- then split_4C(value(lY), "_")
2712+ let me = getString(di, bS())
2713+ let mf = if (isDefined(me))
2714+ then split_4C(value(me), "_")
26992715 else nil
2700- let ma = if ((size(lZ) > 0))
2701- then parseIntValue(lZ[0])
2716+ let mg = if ((size(mf) > 0))
2717+ then parseIntValue(mf[0])
27022718 else 0
2703- if ((0 >= ma))
2719+ if ((0 >= mg))
27042720 then throw("There are no Medical Kits L1 at Emergency Service storage")
27052721 else {
2706- let lU = (lQ + parseIntValue(split(aT[0], "_")[aV]))
2707- let mb = makeString([toString((ma - 1)), removeByIndex(lZ, 0)], "_")
2708- let cp = split(aT[0], "_")
2709- let mc = co(cp)
2710- let md = fraction((mc * aM), aL, (cF * aY))
2711- if ((ln.amount != md))
2712- then throw(("Payment attached should be " + toString(md)))
2722+ let ma = (lW + parseIntValue(split(aY[0], "_")[ba]))
2723+ let mh = makeString([toString((mg - 1)), removeByIndex(mf, 0)], "_")
2724+ let cu = split(aY[0], "_")
2725+ let mi = ct(cu)
2726+ let mj = fraction((mi * aP), aO, (cK * bd))
2727+ if ((lt.amount != mj))
2728+ then throw(("Payment attached should be " + toString(mj)))
27132729 else {
2714- let fk = dx(invoke(dd, "updateEsStorage", [mb], [AttachedPayment(cy, md)]))
2715- $Tuple2(((lm :+ IntegerEntry(jc, lU)) ++ ka(B, Y)._1), fk)
2730+ let fp = dC(invoke(di, "updateEsStorage", [mh], [AttachedPayment(cD, mj)]))
2731+ $Tuple2(((ls :+ IntegerEntry(jh, ma)) ++ kf(C, ab)._1), fp)
27162732 }
27172733 }
27182734 }
27192735 }
27202736 }
27212737 }
27222738 }
27232739 }
27242740
27252741
27262742
2727-@Callable(gL)
2728-func updateBackpack (B,me) = if ((gL.caller != dd))
2743+@Callable(gQ)
2744+func updateBackpack (C,mk) = if ((gQ.caller != di))
27292745 then throw("permission denied")
2730- else $Tuple2([StringEntry(bJ(B), me)], me)
2731-
2732-
2733-
2734-@Callable(gL)
2746+ else $Tuple2([StringEntry(bO(C), mk)], mk)
2747+
2748+
2749+
2750+@Callable(gQ)
27352751 func commitForRandom () = {
2736- let lm = li(gL)
2737- let mf = (height + dq)
2738- let d = toString(gL.caller)
2739- $Tuple2(([IntegerEntry(dr(d), mf)] ++ lm), mf)
2740- }
2741-
2742-
2743-
2744-@Callable(gL)
2752+ let ls = lo(gQ)
2753+ let ml = (height + dv)
2754+ let d = toString(gQ.caller)
2755+ $Tuple2(([IntegerEntry(dw(d), ml)] ++ ls), ml)
2756+ }
2757+
2758+
2759+
2760+@Callable(gQ)
27452761 func buySLand () = {
2746- let lm = li(gL)
2747- if ((size(gL.payments) != 1))
2762+ let ls = lo(gQ)
2763+ if ((size(gQ.payments) != 1))
27482764 then throw("Exactly one payment required")
27492765 else {
2750- let ln = value(gL.payments[0])
2751- if ((ln.assetId != cy))
2766+ let lt = value(gQ.payments[0])
2767+ if ((lt.assetId != cD))
27522768 then throw("Allowed USDT payment only!")
2753- else if ((ln.amount != eh))
2754- then throw(("Payment attached should be " + toString(eh)))
2769+ else if ((lt.amount != em))
2770+ then throw(("Payment attached should be " + toString(em)))
27552771 else {
2756- let fk = iJ(gL.caller, gL.transactionId)
2757- let mg = dA(invoke(dh, "burnAcres", [ei], nil))
2758- $Tuple2((((fk._1 :+ ScriptTransfer(dd, ln.amount, cy)) ++ kg(toString(gL.caller), aa)._1) ++ lm), $Tuple2(fk._2._1, mg))
2772+ let fp = iO(gQ.caller, gQ.transactionId)
2773+ let mm = dF(invoke(dm, "burnAcres", [en], nil))
2774+ $Tuple2((((fp._1 :+ ScriptTransfer(di, lt.amount, cD)) ++ kl(toString(gQ.caller), ad)._1) ++ ls), $Tuple2(fp._2._1, mm))
27592775 }
27602776 }
27612777 }
27622778
27632779
27642780
2765-@Callable(gL)
2766-func expedition (iR,iS) = {
2767- let lm = li(gL)
2768- if ((size(gL.payments) != 0))
2781+@Callable(gQ)
2782+func expedition (iW,iX) = {
2783+ let ls = lo(gQ)
2784+ if ((size(gQ.payments) != 0))
27692785 then throw("No payments required")
27702786 else {
2771- let bM = toString(gL.caller)
2772- let hq = iQ(bM, iR, iS)
2773- let B = hq._2
2774- let jc = A(B)
2775- let hM = bJ(B)
2776- let ip = hL(hM)
2777- let jR = split(ip[bk], "_")
2778- let jT = makeString(fe(true, jR, eg), "_")
2779- let gy = G(B)
2780- let lB = valueOrElse(getString(gy), ",;,_,;,_,;,_,;,_,;,_,;,")
2781- let mh = fl(lB, hq._5)
2782- let lD = mh._1
2783- let lE = mh._2
2784- let mi = iJ(gL.caller, gL.transactionId)
2785- let iP = mi._2._1
2786- let fk = if ((0 >= hq._1))
2787- then $Tuple3([IntegerEntry(jc, 0), StringEntry(gy, lD)], "", 0)
2788- else $Tuple3((mi._1 ++ (if (lE)
2789- then [StringEntry(M(B), "0_0_0_0_0")]
2790- else ((((nil :+ StringEntry(bK(B), makeString([mi._2._2, "L", iP], "_"))) :+ IntegerEntry(jc, hq._1)) :+ StringEntry(gy, lD)) :+ StringEntry(hM, makeString([ip[bi], ip[bj], jT, ip[bl]], ":"))))), iP, hq._3)
2791- if (kq(B))
2787+ let bR = toString(gQ.caller)
2788+ let hv = iV(bR, iW, iX)
2789+ let C = hv._2
2790+ let jh = B(C)
2791+ let hR = bO(C)
2792+ let iu = hQ(hR)
2793+ let jW = split(iu[bp], "_")
2794+ let jY = makeString(fj(true, jW, el), "_")
2795+ let gD = H(C)
2796+ let lH = valueOrElse(getString(gD), ",;,_,;,_,;,_,;,_,;,_,;,")
2797+ let mn = fq(lH, hv._5)
2798+ let lJ = mn._1
2799+ let lK = mn._2
2800+ let mo = iO(gQ.caller, gQ.transactionId)
2801+ let iU = mo._2._1
2802+ let fp = if ((0 >= hv._1))
2803+ then $Tuple3([IntegerEntry(jh, 0), StringEntry(gD, lJ)], "", 0)
2804+ else $Tuple3((mo._1 ++ (if (lK)
2805+ then [StringEntry(N(C), "0_0_0_0_0")]
2806+ else ((((nil :+ StringEntry(bP(C), makeString([mo._2._2, "L", iU], "_"))) :+ IntegerEntry(jh, hv._1)) :+ StringEntry(gD, lJ)) :+ StringEntry(hR, makeString([iu[bn], iu[bo], jY, iu[bq]], ":"))))), iU, hv._3)
2807+ if (kv(C))
27922808 then throw("expedition_checkTournament")
2793- else if (kr(B))
2809+ else if (kw(C))
27942810 then throw("expedition_checkDelivery")
27952811 else {
2796- let mg = dA(invoke(dh, "burnAcres", [ei], nil))
2797- $Tuple2(((fk._1 ++ ka(B, aa)._1) ++ lm), $Tuple3(fk._2, fk._3, mg))
2812+ let mm = dF(invoke(dm, "burnAcres", [en], nil))
2813+ $Tuple2(((fp._1 ++ kf(C, ad)._1) ++ ls), $Tuple3(fp._2, fp._3, mm))
27982814 }
27992815 }
28002816 }
28012817
28022818
28032819
2804-@Callable(gL)
2820+@Callable(gQ)
28052821 func buySLandForAcres () = {
2806- let lm = li(gL)
2807- if ((size(gL.payments) != 1))
2822+ let ls = lo(gQ)
2823+ if ((size(gQ.payments) != 1))
28082824 then throw("exactly 1 payment must be attached")
28092825 else {
2810- let ln = gL.payments[0]
2811- let fr = ln.amount
2812- if (if (!(isDefined(ln.assetId)))
2826+ let lt = gQ.payments[0]
2827+ let fw = lt.amount
2828+ if (if (!(isDefined(lt.assetId)))
28132829 then true
2814- else (value(ln.assetId) != dp))
2830+ else (value(lt.assetId) != du))
28152831 then throw("ACRES payments only!")
2816- else if ((fr != ei))
2817- then throw(("Payment attached should be " + toString(ei)))
2832+ else if ((fw != en))
2833+ then throw(("Payment attached should be " + toString(en)))
28182834 else {
2819- let fk = iJ(gL.caller, gL.transactionId)
2820- let mg = dA(invoke(dh, "burnAcres", [ei], [AttachedPayment(dp, fr)]))
2821- $Tuple2(((fk._1 ++ kg(toString(gL.caller), aa)._1) ++ lm), $Tuple2(fk._2._1, mg))
2835+ let fp = iO(gQ.caller, gQ.transactionId)
2836+ let mm = dF(invoke(dm, "burnAcres", [en], [AttachedPayment(du, fw)]))
2837+ $Tuple2(((fp._1 ++ kl(toString(gQ.caller), ad)._1) ++ ls), $Tuple2(fp._2._1, mm))
28222838 }
28232839 }
28242840 }
28252841
28262842
28272843
2828-@Callable(gL)
2829-func upgradeInfra (Q) = {
2830- let lm = li(gL)
2831- if ((size(gL.payments) != 0))
2844+@Callable(gQ)
2845+func upgradeInfra (R) = {
2846+ let ls = lo(gQ)
2847+ if ((size(gQ.payments) != 0))
28322848 then throw("No payments required")
28332849 else {
2834- let fk = jL(true, gL.caller, 0, Q)
2835- let B = valueOrErrorMessage(getString(bI(toString(gL.caller))), "You don't have a duck staked")
2836- $Tuple2(((fk._1 ++ lm) ++ ka(B, fraction(ab, fk._3, cF))._1), fk._2)
2837- }
2838- }
2839-
2840-
2841-
2842-@Callable(gL)
2843-func activateArtifact (mj,mk) = {
2844- let lm = li(gL)
2845- if ((size(gL.payments) != 0))
2850+ let fp = jQ(true, gQ.caller, 0, R)
2851+ let C = valueOrErrorMessage(getString(bN(toString(gQ.caller))), "You don't have a duck staked")
2852+ $Tuple2(((fp._1 ++ ls) ++ kf(C, fraction(ae, fp._3, cK))._1), fp._2)
2853+ }
2854+ }
2855+
2856+
2857+
2858+@Callable(gQ)
2859+func activateArtifact (mp,mq) = {
2860+ let ls = lo(gQ)
2861+ if ((size(gQ.payments) != 0))
28462862 then throw("No payments required")
28472863 else {
2848- let d = toString(gL.caller)
2849- let fk = {
2850- let cz = mj
2851- if (("PRESALE" == cz))
2852- then ko(d, mk)
2853- else if (("ONBOARD" == cz))
2854- then kh(d)
2864+ let d = toString(gQ.caller)
2865+ let fp = {
2866+ let cE = mp
2867+ if (("PRESALE" == cE))
2868+ then kt(d, mq)
2869+ else if (("ONBOARD" == cE))
2870+ then km(d)
28552871 else throw("Unknown artifact")
28562872 }
2857- (fk ++ lm)
2858- }
2859- }
2860-
2861-
2862-
2863-@Callable(gL)
2864-func mergeLands (kF) = {
2865- let lm = li(gL)
2866- if ((size(gL.payments) != 0))
2873+ (fp ++ ls)
2874+ }
2875+ }
2876+
2877+
2878+
2879+@Callable(gQ)
2880+func mergeLands (kL) = {
2881+ let ls = lo(gQ)
2882+ if ((size(gQ.payments) != 0))
28672883 then throw("No payments required")
28682884 else {
2869- let fk = ld(toString(gL.caller), kF)
2870- $Tuple2(((fk._1 ++ lm) ++ kg(toString(gL.caller), ac)._1), fk._2)
2871- }
2872- }
2873-
2874-
2875-
2876-@Callable(gL)
2877-func cargoExchange (ml,Q) = {
2878- let lm = li(gL)
2879- if ((size(gL.payments) != 0))
2885+ let fp = lj(toString(gQ.caller), kL)
2886+ $Tuple2(((fp._1 ++ ls) ++ kl(toString(gQ.caller), af)._1), fp._2)
2887+ }
2888+ }
2889+
2890+
2891+
2892+@Callable(gQ)
2893+func cargoExchange (mr,R) = {
2894+ let ls = lo(gQ)
2895+ if ((size(gQ.payments) != 0))
28802896 then throw("No payments required")
28812897 else {
2882- let io = split_4C(ml, ":")
2883- let d = toString(gL.originCaller)
2884- let jt = value(assetInfo(fromBase58String(Q)))
2885- let ju = bs(Q)
2886- if (!(isDefined(getInteger(ju))))
2887- then throw((jt.name + " is not staked"))
2898+ let it = split_4C(mr, ":")
2899+ let d = toString(gQ.originCaller)
2900+ let jy = value(assetInfo(fromBase58String(R)))
2901+ let jz = bx(R)
2902+ if (!(isDefined(getInteger(jz))))
2903+ then throw((jy.name + " is not staked"))
28882904 else {
2889- let jw = valueOrErrorMessage(getString(bp(Q)), (("NFT " + jt.name) + " is orphaned"))
2890- if ((jw != d))
2891- then throw((aD + " is not yours"))
2905+ let jB = valueOrErrorMessage(getString(bu(R)), (("NFT " + jy.name) + " is orphaned"))
2906+ if ((jB != d))
2907+ then throw((aG + " is not yours"))
28922908 else {
2893- let ia = (dI(split(jt.description, "_")[dj]) / cG)
2894- let ib = valueOrElse(getInteger(bz(Q)), 0)
2895- let B = valueOrErrorMessage(getString(bI(d)), "You don't have a duck staked")
2896- let jr = valueOrElse(getString(bK(B)), aK)
2897- let cg = split(value(jr), "_")
2898- if ((cg[bn] != "L"))
2899- then throw((("Duck location type is " + cg[bn]) + ", but should be L"))
2900- else if ((cg[bo] != Q))
2901- then throw(("Duck should be on the land " + Q))
2909+ let if = (dN(split(jy.description, "_")[do]) / cL)
2910+ let ig = valueOrElse(getInteger(bE(R)), 0)
2911+ let C = valueOrErrorMessage(getString(bN(d)), "You don't have a duck staked")
2912+ let jw = valueOrElse(getString(bP(C)), aN)
2913+ let cl = split(value(jw), "_")
2914+ if ((cl[bs] != "L"))
2915+ then throw((("Duck location type is " + cl[bs]) + ", but should be L"))
2916+ else if ((cl[bt] != R))
2917+ then throw(("Duck should be on the land " + R))
29022918 else {
2903- let hZ = by(Q)
2904- let hQ = hY(hZ, ia, ib)
2905- let hM = bJ(B)
2906- let ip = hL(hM)
2907- let fk = in(io, hQ, ip)
2908- let ih = split(hQ[bd], "_")
2909- let jI = (parseIntValue(ih[bf]) + fk._7)
2910- let jJ = (parseIntValue(ih[bg]) - fk._7)
2911- ([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)
2919+ let ie = bD(R)
2920+ let hV = id(ie, if, ig)
2921+ let hR = bO(C)
2922+ let iu = hQ(hR)
2923+ let fp = is(it, hV, iu)
2924+ let im = split(hV[bi], "_")
2925+ let jN = (parseIntValue(im[bk]) + fp._7)
2926+ let jO = (parseIntValue(im[bl]) - fp._7)
2927+ ([StringEntry(hR, makeString_2C([iu[bn], fp._4, fp._5, fp._6], ":")), StringEntry(ie, makeString_2C([hV[be], fp._1, fp._2, fp._3, makeString([im[bj], toString(jN), toString(jO), im[bm]], "_")], ":"))] ++ ls)
29122928 }
29132929 }
29142930 }
29152931 }
29162932 }
29172933
29182934
29192935
2920-@Callable(gL)
2921-func saveWarehouse (id,Q) = if ((gL.caller != dd))
2936+@Callable(gQ)
2937+func saveWarehouse (ii,R) = if ((gQ.caller != di))
29222938 then throw("Access denied")
29232939 else {
2924- let hZ = by(Q)
2925- let ie = split_4C(id, ":")
2926- if ((size(ie) != 5))
2940+ let ie = bD(R)
2941+ let ij = split_4C(ii, ":")
2942+ if ((size(ij) != 5))
29272943 then throw("warehouse string should contain 4 ':' separators")
29282944 else {
2929- let mm = split(ie[bd], "_")[be]
2930- let jI = hP(ie)
2931- let mn = hN(ie[aZ])
2932- let jJ = ((mn - parseIntValue(mm)) - jI)
2933- let mo = makeString_2C([ie[aZ], ie[ba], ie[bb], ie[bc], makeString([mm, toString(jI), toString(jJ), toString(mn)], "_")], ":")
2934- $Tuple2([StringEntry(hZ, mo)], mo)
2945+ let ms = split(ij[bi], "_")[bj]
2946+ let jN = hU(ij)
2947+ let mt = hS(ij[be])
2948+ let jO = ((mt - parseIntValue(ms)) - jN)
2949+ let mu = makeString_2C([ij[be], ij[bf], ij[bg], ij[bh], makeString([ms, toString(jN), toString(jO), toString(mt)], "_")], ":")
2950+ $Tuple2([StringEntry(ie, mu)], mu)
29352951 }
29362952 }
29372953
29382954
29392955
2940-@Callable(gL)
2941-func fixWarehouseFormat (Q) = if ((gL.caller != dc))
2956+@Callable(gQ)
2957+func fixWarehouseFormat (R) = if ((gQ.caller != dh))
29422958 then throw("Access denied")
29432959 else {
2944- let hZ = by(Q)
2945- let jt = value(assetInfo(fromBase58String(Q)))
2946- let ia = (dI(split(jt.description, "_")[dj]) / cG)
2947- let ib = valueOrElse(getInteger(bz(Q)), 0)
2948- let ie = hY(hZ, ia, ib)
2949- let mm = dA(invoke(dd, "recalcLockedVolumeREADONLY", [Q, ie], nil))
2950- let jI = hP(ie)
2951- let mn = hN(ie[aZ])
2952- let jJ = ((mn - mm) - jI)
2953- let mo = makeString_2C([ie[aZ], ie[ba], ie[bb], ie[bc], makeString([toString(mm), toString(jI), toString(jJ), toString(mn)], "_")], ":")
2954- $Tuple2([StringEntry(hZ, mo)], mo)
2960+ let ie = bD(R)
2961+ let jy = value(assetInfo(fromBase58String(R)))
2962+ let if = (dN(split(jy.description, "_")[do]) / cL)
2963+ let ig = valueOrElse(getInteger(bE(R)), 0)
2964+ let ij = id(ie, if, ig)
2965+ let ms = dF(invoke(di, "recalcLockedVolumeREADONLY", [R, ij], nil))
2966+ let jN = hU(ij)
2967+ let mt = hS(ij[be])
2968+ let jO = ((mt - ms) - jN)
2969+ let mu = makeString_2C([ij[be], ij[bf], ij[bg], ij[bh], makeString([toString(ms), toString(jN), toString(jO), toString(mt)], "_")], ":")
2970+ $Tuple2([StringEntry(ie, mu)], mu)
29552971 }
29562972
29572973
29582974
2959-@Callable(gL)
2960-func fixContinentProportions (kF) = if ((gL.caller != dc))
2975+@Callable(gQ)
2976+func fixContinentProportions (kL) = if ((gQ.caller != dh))
29612977 then throw("Access denied")
29622978 else {
2963- func mp (eS,mq) = (eS :+ valueOrElse(getString(dt(mq)), "0_0_0_0_0_0"))
2964-
2965- let gv = {
2966- let eU = aQ
2967- let eV = size(eU)
2968- let eW = nil
2969- func eX (eY,eZ) = if ((eZ >= eV))
2970- then eY
2971- else mp(eY, eU[eZ])
2972-
2973- func fa (eY,eZ) = if ((eZ >= eV))
2974- then eY
2979+ func mv (eX,mw) = (eX :+ valueOrElse(getString(dy(mw)), "0_0_0_0_0_0"))
2980+
2981+ let gA = {
2982+ let eZ = aV
2983+ let fa = size(eZ)
2984+ let fb = nil
2985+ func fc (fd,fe) = if ((fe >= fa))
2986+ then fd
2987+ else mv(fd, eZ[fe])
2988+
2989+ func ff (fd,fe) = if ((fe >= fa))
2990+ then fd
29752991 else throw("List size exceeds 5")
29762992
2977- fa(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5)
2978- }
2979- func mr (eS,Q) = {
2980- let jt = value(assetInfo(fromBase58String(Q)))
2981- let jx = split(jt.description, "_")
2982- let ia = (dI(jx[dj]) / cG)
2983- let mq = jx[dl]
2984- let gH = gN(jx[dk])
2985- let hp = value(indexOf(aQ, mq))
2986- let kU = split(eS[hp], "_")
2987- let ms = makeString(gF(kU, gH, ia, 1), "_")
2988- let cz = mq
2989- if (("Americas" == cz))
2990- then [ms, eS[1], eS[2], eS[3], eS[4]]
2991- else if (("Europe" == cz))
2992- then [eS[0], ms, eS[2], eS[3], eS[4]]
2993- else if (("Asia" == cz))
2994- then [eS[0], eS[1], ms, eS[3], eS[4]]
2995- else if (("Africa" == cz))
2996- then [eS[0], eS[1], eS[2], ms, eS[4]]
2997- else if (("Oceania" == cz))
2998- then [eS[0], eS[1], eS[2], eS[3], ms]
2993+ ff(fc(fc(fc(fc(fc(fb, 0), 1), 2), 3), 4), 5)
2994+ }
2995+ func mx (eX,R) = {
2996+ let jy = value(assetInfo(fromBase58String(R)))
2997+ let jC = split(jy.description, "_")
2998+ let if = (dN(jC[do]) / cL)
2999+ let mw = jC[dq]
3000+ let gM = gS(jC[dp])
3001+ let hu = value(indexOf(aV, mw))
3002+ let la = split(eX[hu], "_")
3003+ let my = makeString(gK(la, gM, if, 1), "_")
3004+ let cE = mw
3005+ if (("Americas" == cE))
3006+ then [my, eX[1], eX[2], eX[3], eX[4]]
3007+ else if (("Europe" == cE))
3008+ then [eX[0], my, eX[2], eX[3], eX[4]]
3009+ else if (("Asia" == cE))
3010+ then [eX[0], eX[1], my, eX[3], eX[4]]
3011+ else if (("Africa" == cE))
3012+ then [eX[0], eX[1], eX[2], my, eX[4]]
3013+ else if (("Oceania" == cE))
3014+ then [eX[0], eX[1], eX[2], eX[3], my]
29993015 else throw("wrong continent")
30003016 }
30013017
3002- let fd = {
3003- let eU = kF
3004- let eV = size(eU)
3005- let eW = gv
3006- func hG (eY,eZ) = if ((eZ >= eV))
3007- then eY
3008- else mr(eY, eU[eZ])
3009-
3010- func hH (eY,eZ) = if ((eZ >= eV))
3011- then eY
3018+ let fi = {
3019+ let eZ = kL
3020+ let fa = size(eZ)
3021+ let fb = gA
3022+ func hL (fd,fe) = if ((fe >= fa))
3023+ then fd
3024+ else mx(fd, eZ[fe])
3025+
3026+ func hM (fd,fe) = if ((fe >= fa))
3027+ then fd
30123028 else throw("List size exceeds 100")
30133029
3014- 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)
3015- }
3016- $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)
3030+ hM(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(fb, 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)
3031+ }
3032+ $Tuple2([StringEntry(dy("Americas"), fi[0]), StringEntry(dy("Europe"), fi[1]), StringEntry(dy("Asia"), fi[2]), StringEntry(dy("Africa"), fi[3]), StringEntry(dy("Oceania"), fi[4])], 0)
30173033 }
30183034
30193035
30203036
3021-@Callable(gL)
3022-func fixStakedPieces (cN) = if ((gL.caller != dc))
3037+@Callable(gQ)
3038+func fixStakedPieces (cS) = if ((gQ.caller != dh))
30233039 then throw("Access denied")
30243040 else {
3025- let kY = if ((cN == ""))
3041+ let le = if ((cS == ""))
30263042 then 0
30273043 else {
3028- let kR = getString(ao, dv(cN))
3029- let kN = if (isDefined(kR))
3030- then split_51C(value(kR), "_")
3044+ let kX = getString(ar, dA(cS))
3045+ let kT = if (isDefined(kX))
3046+ then split_51C(value(kX), "_")
30313047 else nil
3032- func mt (eS,Q) = {
3033- let jt = value(assetInfo(fromBase58String(Q)))
3034- let dJ = split(jt.description, "_")[dj]
3035- (eS + dI(dJ))
3048+ func mz (eX,R) = {
3049+ let jy = value(assetInfo(fromBase58String(R)))
3050+ let dO = split(jy.description, "_")[do]
3051+ (eX + dN(dO))
30363052 }
30373053
3038- let eU = kN
3039- let eV = size(eU)
3040- let eW = 0
3041- func eX (eY,eZ) = if ((eZ >= eV))
3042- then eY
3043- else mt(eY, eU[eZ])
3044-
3045- func fa (eY,eZ) = if ((eZ >= eV))
3046- then eY
3054+ let eZ = kT
3055+ let fa = size(eZ)
3056+ let fb = 0
3057+ func fc (fd,fe) = if ((fe >= fa))
3058+ then fd
3059+ else mz(fd, eZ[fe])
3060+
3061+ func ff (fd,fe) = if ((fe >= fa))
3062+ then fd
30473063 else throw("List size exceeds 100")
30483064
3049- 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)
3065+ ff(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fb, 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)
30503066 }
3051- $Tuple2([IntegerEntry(dw(cN), kY)], kY)
3067+ $Tuple2([IntegerEntry(dB(cS), le)], le)
30523068 }
30533069
30543070
30553071
3056-@Callable(gL)
3057-func setCustomName (bq,kP,bu) = {
3058- let lm = li(gL)
3059- if ((size(gL.payments) != 1))
3072+@Callable(gQ)
3073+func setCustomName (bv,kV,bz) = {
3074+ let ls = lo(gQ)
3075+ if ((size(gQ.payments) != 1))
30603076 then throw("Exactly one payment required")
30613077 else {
3062- let ln = value(gL.payments[0])
3063- if ((ln.assetId != cy))
3078+ let lt = value(gQ.payments[0])
3079+ if ((lt.assetId != cD))
30643080 then throw("Allowed USDT payment only!")
3065- else if ((ln.amount != ed))
3066- then throw(("Payment should be " + toString(ed)))
3067- else if (contains(kP, "__"))
3068- then throw(("Name should not contain '__': " + kP))
3069- else if ((size(kP) > ee))
3070- then throw(("Name too long, maxLength=" + toString(ee)))
3081+ else if ((lt.amount != ei))
3082+ then throw(("Payment should be " + toString(ei)))
3083+ else if (contains(kV, "__"))
3084+ then throw(("Name should not contain '__': " + kV))
3085+ else if ((size(kV) > ej))
3086+ then throw(("Name too long, maxLength=" + toString(ej)))
30713087 else {
3072- let d = toString(gL.originCaller)
3073- let mu = {
3074- let cz = bu
3075- if (("ACCOUNT" == cz))
3088+ let d = toString(gQ.originCaller)
3089+ let mA = {
3090+ let cE = bz
3091+ if (("ACCOUNT" == cE))
30763092 then {
3077- let mv = ey(kP)
3078- let mw = getString(mv)
3079- if (isDefined(mw))
3080- then throw(("Name already registered: " + kP))
3093+ let mB = eD(kV)
3094+ let mC = getString(mB)
3095+ if (isDefined(mC))
3096+ then throw(("Name already registered: " + kV))
30813097 else {
3082- let mx = bC(d)
3083- let my = getString(mx)
3084- let mz = if (isDefined(my))
3085- then [DeleteEntry(ey(value(my)))]
3098+ let mD = bH(d)
3099+ let mE = getString(mD)
3100+ let mF = if (isDefined(mE))
3101+ then [DeleteEntry(eD(value(mE)))]
30863102 else nil
3087- (((mz :+ StringEntry(mx, kP)) :+ StringEntry(mv, d)) ++ kg(d, Z)._1)
3103+ (((mF :+ StringEntry(mD, kV)) :+ StringEntry(mB, d)) ++ kl(d, ac)._1)
30883104 }
30893105 }
3090- else if (("LAND" == cz))
3106+ else if (("LAND" == cE))
30913107 then {
3092- let jt = value(assetInfo(fromBase58String(bq)))
3093- let ju = bs(bq)
3094- if (!(isDefined(getInteger(ju))))
3095- then throw((jt.name + " is not staked"))
3108+ let jy = value(assetInfo(fromBase58String(bv)))
3109+ let jz = bx(bv)
3110+ if (!(isDefined(getInteger(jz))))
3111+ then throw((jy.name + " is not staked"))
30963112 else {
3097- let jw = valueOrErrorMessage(getString(bp(bq)), (("NFT " + jt.name) + " is orphaned"))
3098- if ((jw != d))
3099- then throw((aD + " is not yours"))
3113+ let jB = valueOrErrorMessage(getString(bu(bv)), (("NFT " + jy.name) + " is orphaned"))
3114+ if ((jB != d))
3115+ then throw((aG + " is not yours"))
31003116 else {
3101- let mv = er(kP)
3102- let mw = getString(mv)
3103- if (isDefined(mw))
3104- then throw(("Name already registered: " + kP))
3117+ let mB = ew(kV)
3118+ let mC = getString(mB)
3119+ if (isDefined(mC))
3120+ then throw(("Name already registered: " + kV))
31053121 else {
3106- let mA = br(bq)
3107- let my = getString(mA)
3108- let mz = if (isDefined(my))
3109- then [DeleteEntry(er(value(my)))]
3122+ let mG = bw(bv)
3123+ let mE = getString(mG)
3124+ let mF = if (isDefined(mE))
3125+ then [DeleteEntry(ew(value(mE)))]
31103126 else nil
3111- (((mz :+ StringEntry(mA, kP)) :+ StringEntry(mv, bq)) ++ kg(d, Z)._1)
3127+ (((mF :+ StringEntry(mG, kV)) :+ StringEntry(mB, bv)) ++ kl(d, ac)._1)
31123128 }
31133129 }
31143130 }
31153131 }
3116- else if (("DUCK" == cz))
3132+ else if (("DUCK" == cE))
31173133 then {
3118- let jt = value(assetInfo(fromBase58String(bq)))
3119- let ju = bs(bq)
3120- if (if (!(isDefined(getInteger(ju))))
3134+ let jy = value(assetInfo(fromBase58String(bv)))
3135+ let jz = bx(bv)
3136+ if (if (!(isDefined(getInteger(jz))))
31213137 then true
3122- else !(isDefined(getString(bI(d)))))
3123- then throw((jt.name + " is not staked"))
3138+ else !(isDefined(getString(bN(d)))))
3139+ then throw((jy.name + " is not staked"))
31243140 else {
3125- let jw = valueOrErrorMessage(getString(bH(bq)), (("NFT " + jt.name) + " is orphaned"))
3126- if ((jw != d))
3127- then throw((aE + " is not yours"))
3141+ let jB = valueOrErrorMessage(getString(bM(bv)), (("NFT " + jy.name) + " is orphaned"))
3142+ if ((jB != d))
3143+ then throw((aH + " is not yours"))
31283144 else {
3129- let mv = ex(kP)
3130- let mw = getString(mv)
3131- if (isDefined(mw))
3132- then throw(("Name already registered: " + kP))
3145+ let mB = eC(kV)
3146+ let mC = getString(mB)
3147+ if (isDefined(mC))
3148+ then throw(("Name already registered: " + kV))
31333149 else {
3134- let mA = bB(bq)
3135- let my = getString(mA)
3136- let mz = if (isDefined(my))
3137- then [DeleteEntry(ex(value(my)))]
3150+ let mG = bG(bv)
3151+ let mE = getString(mG)
3152+ let mF = if (isDefined(mE))
3153+ then [DeleteEntry(eC(value(mE)))]
31383154 else nil
3139- (((mz :+ StringEntry(mA, kP)) :+ StringEntry(mv, bq)) ++ ka(bq, Z)._1)
3155+ (((mF :+ StringEntry(mG, kV)) :+ StringEntry(mB, bv)) ++ kf(bv, ac)._1)
31403156 }
31413157 }
31423158 }
31433159 }
31443160 else throw("Unknown entity type")
31453161 }
3146- $Tuple2(((mu :+ ScriptTransfer(dd, ln.amount, cy)) ++ lm), 0)
3162+ $Tuple2(((mA :+ ScriptTransfer(di, lt.amount, cD)) ++ ls), 0)
31473163 }
31483164 }
31493165 }
31503166
31513167
31523168
3153-@Callable(gL)
3154-func setReferrals (mB,mC) = if ((gL.callerPublicKey != ea))
3169+@Callable(gQ)
3170+func setReferrals (mH,mI) = if ((gQ.callerPublicKey != ef))
31553171 then throw("Permission denied")
31563172 else {
3157- let lm = li(gL)
3158- if ((size(gL.payments) != 0))
3173+ let ls = lo(gQ)
3174+ if ((size(gQ.payments) != 0))
31593175 then throw("No payments required")
3160- else if (!(isDefined(addressFromString(mB))))
3161- then throw(("Invalid address: " + mB))
3162- else if (!(isDefined(addressFromString(mC))))
3163- then throw(("Invalid address: " + mC))
3176+ else if (!(isDefined(addressFromString(mH))))
3177+ then throw(("Invalid address: " + mH))
3178+ else if (!(isDefined(addressFromString(mI))))
3179+ then throw(("Invalid address: " + mI))
31643180 else {
3165- let mD = ez()
3166- let mE = getString(mD)
3167- let mF = if (isDefined(mE))
3168- then split_4C(value(mE), "_")
3181+ let mJ = eE()
3182+ let mK = getString(mJ)
3183+ let mL = if (isDefined(mK))
3184+ then split_4C(value(mK), "_")
31693185 else nil
3170- if (containsElement(mF, mC))
3171- then throw((mC + " is not newbie (already has referrals)"))
3186+ if (containsElement(mL, mI))
3187+ then throw((mI + " is not newbie (already has referrals)"))
31723188 else {
3173- let ki = bD(mC)
3174- let kj = getString(ki)
3175- if (if (isDefined(kj))
3176- then isDefined(addressFromString(value(kj)))
3189+ let kn = bI(mI)
3190+ let ko = getString(kn)
3191+ if (if (isDefined(ko))
3192+ then isDefined(addressFromString(value(ko)))
31773193 else false)
3178- then throw(((mC + " already has refBy: ") + value(kj)))
3194+ then throw(((mI + " already has refBy: ") + value(ko)))
31793195 else {
3180- let mG = bG(mB)
3181- let mH = getString(mG)
3182- let mI = if (isDefined(mH))
3183- then split_4C(value(mH), "_")
3196+ let mM = bL(mH)
3197+ let mN = getString(mM)
3198+ let mO = if (isDefined(mN))
3199+ then split_4C(value(mN), "_")
31843200 else nil
3185- if (containsElement(mI, mC))
3186- then throw((((mB + " already contains ") + mC) + " within referrals"))
3201+ if (containsElement(mO, mI))
3202+ then throw((((mH + " already contains ") + mI) + " within referrals"))
31873203 else {
3188- let mJ = makeString_2C((mI :+ mC), "_")
3189- let mK = if (containsElement(mF, mB))
3190- then value(mE)
3191- else makeString_2C((mF :+ mB), "_")
3192- $Tuple2(([StringEntry(ki, mB), StringEntry(mG, mJ), StringEntry(mD, mK)] ++ lm), 0)
3204+ let mP = makeString_2C((mO :+ mI), "_")
3205+ let mQ = if (containsElement(mL, mH))
3206+ then value(mK)
3207+ else makeString_2C((mL :+ mH), "_")
3208+ $Tuple2(([StringEntry(kn, mH), StringEntry(mM, mP), StringEntry(mJ, mQ)] ++ ls), 0)
31933209 }
31943210 }
31953211 }
31963212 }
31973213 }
31983214
31993215
32003216
3201-@Callable(gL)
3202-func distributePoints (mL,mM,mN,mO,mP) = {
3203- let lm = li(gL)
3204- if ((size(gL.payments) != 0))
3217+@Callable(gQ)
3218+func distributePoints (mR,mS,mT,mU,mV) = {
3219+ let ls = lo(gQ)
3220+ if ((size(gQ.payments) != 0))
32053221 then throw("No payments required")
32063222 else {
3207- let d = toString(gL.originCaller)
3208- let mQ = dC(invoke(df, "checkWlgXpREADONLY", [d], nil))
3209- let mR = dA(mQ[1])
3210- let mS = if ((0 >= mR))
3223+ let d = toString(gQ.originCaller)
3224+ let mW = dH(invoke(dk, "checkWlgXpREADONLY", [d], nil))
3225+ let mX = dF(mW[1])
3226+ let mY = if ((0 >= mX))
32113227 then $Tuple2(0, nil)
32123228 else {
3213- let kb = dA(invoke(df, "takeWlgXp", [d], nil))
3214- if ((kb == kb))
3215- then $Tuple2(mR, [IntegerEntry(I(d), dA(mQ[0])), IntegerEntry(H(d), dA(mQ[2]))])
3229+ let kg = dF(invoke(dk, "takeWlgXp", [d], nil))
3230+ if ((kg == kg))
3231+ then $Tuple2(mX, [IntegerEntry(J(d), dF(mW[0])), IntegerEntry(I(d), dF(mW[2]))])
32163232 else throw("Strict value is not equal to itself.")
32173233 }
3218- let mT = mS._1
3219- let mU = mS._2
3220- let B = valueOrErrorMessage(getString(bI(d)), "You don't have a duck staked")
3221- let mV = J(d)
3222- let mW = (valueOrElse(getInteger(mV), 0) + mT)
3223- let mX = F(B)
3224- let mY = valueOrElse(getInteger(mX), 0)
3225- let mZ = (mW + mY)
3226- let na = ((((mL + mM) + mN) + mO) + mP)
3227- if ((na > mZ))
3228- then throw((("There are only " + toString(mZ)) + " free points to distribute"))
3234+ let mZ = mY._1
3235+ let na = mY._2
3236+ let C = valueOrErrorMessage(getString(bN(d)), "You don't have a duck staked")
3237+ let nb = K(d)
3238+ let nc = (valueOrElse(getInteger(nb), 0) + mZ)
3239+ let nd = G(C)
3240+ let ne = valueOrElse(getInteger(nd), 0)
3241+ let nf = (nc + ne)
3242+ let ng = ((((mR + mS) + mT) + mU) + mV)
3243+ if ((ng > nf))
3244+ then throw((("There are only " + toString(nf)) + " free points to distribute"))
32293245 else {
3230- let nb = C(B)
3231- let ar = split(valueOrElse(getString(nb), "0_0_0_0_0"), "_")
3232- let nc = (mW - na)
3233- $Tuple2((([IntegerEntry(mV, if ((0 > nc))
3246+ let nh = D(C)
3247+ let au = split(valueOrElse(getString(nh), "0_0_0_0_0"), "_")
3248+ let ni = (nc - ng)
3249+ $Tuple2((([IntegerEntry(nb, if ((0 > ni))
32343250 then 0
3235- else nc), IntegerEntry(mX, if ((0 > nc))
3236- then (mY + nc)
3237- else mY), StringEntry(nb, makeString([toString((parseIntValue(ar[l]) + mL)), toString((parseIntValue(ar[m]) + mM)), toString((parseIntValue(ar[n]) + mN)), toString((parseIntValue(ar[o]) + mO)), toString((parseIntValue(ar[p]) + mP))], "_"))] ++ lm) ++ mU), 0)
3251+ else ni), IntegerEntry(nd, if ((0 > ni))
3252+ then (ne + ni)
3253+ else ne), StringEntry(nh, makeString([toString((parseIntValue(au[m]) + mR)), toString((parseIntValue(au[n]) + mS)), toString((parseIntValue(au[o]) + mT)), toString((parseIntValue(au[p]) + mU)), toString((parseIntValue(au[q]) + mV))], "_"))] ++ ls) ++ na), 0)
32383254 }
32393255 }
32403256 }
32413257
32423258
32433259
3244-@Callable(gL)
3245-func splitByGlobalWeightsREADONLY (eJ) = $Tuple2(nil, fb(eJ))
3246-
3247-
3248-
3249-@Callable(gL)
3250-func splitByGlobalAndLocalWeightsREADONLY (nd,ne,gO) = {
3251- let gH = gN(gO)
3252- $Tuple2(nil, $Tuple2(fb(nd), eM(ne, gH)))
3253- }
3254-
3255-
3256-
3257-@Callable(gL)
3258-func getBackpackREADONLY (B) = $Tuple2(nil, makeString(hL(bJ(B)), ":"))
3259-
3260-
3261-
3262-@Callable(gL)
3263-func getWarehouseREADONLY (Q) = {
3264- let jt = value(assetInfo(fromBase58String(Q)))
3265- let ia = (dI(split(jt.description, "_")[dj]) / cG)
3266- let ib = valueOrElse(getInteger(bz(Q)), 0)
3267- $Tuple2(nil, makeString_2C(hY(by(Q), ia, ib), ":"))
3268- }
3269-
3270-
3271-
3272-@Callable(gL)
3273-func saveLastTx () = if (!(containsElement([df, dd, dg, dh], gL.caller)))
3260+@Callable(gQ)
3261+func splitByGlobalWeightsREADONLY (eO) = $Tuple2(nil, fg(eO))
3262+
3263+
3264+
3265+@Callable(gQ)
3266+func splitByGlobalAndLocalWeightsREADONLY (nj,nk,gT) = {
3267+ let gM = gS(gT)
3268+ $Tuple2(nil, $Tuple2(fg(nj), eR(nk, gM)))
3269+ }
3270+
3271+
3272+
3273+@Callable(gQ)
3274+func getBackpackREADONLY (C) = $Tuple2(nil, makeString(hQ(bO(C)), ":"))
3275+
3276+
3277+
3278+@Callable(gQ)
3279+func getWarehouseREADONLY (R) = {
3280+ let jy = value(assetInfo(fromBase58String(R)))
3281+ let if = (dN(split(jy.description, "_")[do]) / cL)
3282+ let ig = valueOrElse(getInteger(bE(R)), 0)
3283+ $Tuple2(nil, makeString_2C(id(bD(R), if, ig), ":"))
3284+ }
3285+
3286+
3287+
3288+@Callable(gQ)
3289+func saveLastTx () = if (!(containsElement([dk, di, dl, dm], gQ.caller)))
32743290 then throw("Access denied")
3275- else $Tuple2(li(gL), 42)
3276-
3277-
3278-
3279-@Callable(gL)
3280-func updateDuckStats (B,kb) = if ((gL.caller != dd))
3291+ else $Tuple2(lo(gQ), 42)
3292+
3293+
3294+
3295+@Callable(gQ)
3296+func updateDuckStats (C,kg) = if ((gQ.caller != di))
32813297 then throw("Access denied")
3282- else ka(B, kb)
3283-
3284-
3285-
3286-@Callable(gL)
3287-func updateAccStats (d,kb) = if (!(containsElement([df, dd, dh], gL.caller)))
3298+ else kf(C, kg)
3299+
3300+
3301+
3302+@Callable(gQ)
3303+func updateAccStats (d,kg) = if (!(containsElement([dk, di, dm], gQ.caller)))
32883304 then throw("Access denied")
3289- else kg(d, kb)
3290-
3291-
3292-
3293-@Callable(gL)
3294-func equipDuck (nf) = {
3295- let lm = li(gL)
3296- if ((size(gL.payments) != 0))
3305+ else kl(d, kg)
3306+
3307+
3308+
3309+@Callable(gQ)
3310+func equipDuck (nl) = {
3311+ let ls = lo(gQ)
3312+ if ((size(gQ.payments) != 0))
32973313 then throw("No payments required")
32983314 else {
3299- let d = toString(gL.originCaller)
3300- let B = valueOrErrorMessage(getString(bI(d)), "You don't have a duck staked")
3301- if (kq(B))
3315+ let d = toString(gQ.originCaller)
3316+ let C = valueOrErrorMessage(getString(bN(d)), "You don't have a duck staked")
3317+ if (kv(C))
33023318 then throw("equipDuck_checkTournament")
3303- else if (kr(B))
3319+ else if (kw(C))
33043320 then throw("equipDuck_checkDelivery")
33053321 else {
3306- let gy = G(B)
3307- let ng = split(valueOrElse(getString(gy), ",;,_,;,_,;,_,;,_,;,_,;,"), "_")
3308- let hM = bJ(B)
3309- let ip = hL(hM)
3310- let lD = split(nf, "_")
3311- if ((size(lD) != r))
3322+ let gD = H(C)
3323+ let nm = split(valueOrElse(getString(gD), ",;,_,;,_,;,_,;,_,;,_,;,"), "_")
3324+ let hR = bO(C)
3325+ let iu = hQ(hR)
3326+ let lJ = split(nl, "_")
3327+ if ((size(lJ) != s))
33123328 then throw("Wrong equipment string")
33133329 else {
3314- let gA = gn(ng, fy(ip[bl]), true, nil)
3315- let gB = split(lD[q], ";")[1]
3316- let ap = if ((gB == ""))
3330+ let gF = gs(nm, fD(iu[bq]), true, nil)
3331+ let gG = split(lJ[r], ";")[1]
3332+ let as = if ((gG == ""))
33173333 then 0
33183334 else {
3319- let gC = split(gB, ",")[0]
3320- if ((gC == ""))
3335+ let gH = split(gG, ",")[0]
3336+ if ((gH == ""))
33213337 then 0
33223338 else {
3323- let fN = split(gC, ":")
3324- let db = fN[0]
3325- let gD = fN[1]
3326- if (if (if (if (if ((db == "06"))
3339+ let fS = split(gH, ":")
3340+ let dg = fS[0]
3341+ let gI = fS[1]
3342+ if (if (if (if (if ((dg == "06"))
33273343 then true
3328- else (db == "07"))
3344+ else (dg == "07"))
33293345 then true
3330- else (db == "08"))
3331- then (gD != "")
3346+ else (dg == "08"))
3347+ then (gI != "")
33323348 else false)
3333- then (parseIntValue(gD) > 0)
3349+ then (parseIntValue(gI) > 0)
33343350 else false)
3335- then parseIntValue(split(aT[parseIntValue(db)], "_")[aV])
3351+ then parseIntValue(split(aY[parseIntValue(dg)], "_")[ba])
33363352 else 0
33373353 }
33383354 }
3339- let gi = an(this, B, ap, true)
3340- let gE = gn(lD, gA, false, gi)
3341- let nh = fD(gE)
3342- $Tuple2(([StringEntry(gy, nf), StringEntry(hM, makeString_2C([ip[bi], ip[bj], ip[bk], nh], ":")), StringEntry(M(B), makeString([toString(gi[7]), toString(gi[8]), toString(gi[9]), toString(gi[10]), toString(gi[11])], "_"))] ++ lm), 0)
3355+ let gn = aq(this, C, as, true)
3356+ let gJ = gs(lJ, gF, false, gn)
3357+ let nn = fI(gJ)
3358+ $Tuple2(([StringEntry(gD, nl), StringEntry(hR, makeString_2C([iu[bn], iu[bo], iu[bp], nn], ":")), StringEntry(N(C), makeString([toString(gn[7]), toString(gn[8]), toString(gn[9]), toString(gn[10]), toString(gn[11])], "_"))] ++ ls), 0)
33433359 }
33443360 }
33453361 }
33463362 }
33473363
33483364
33493365
3350-@Callable(gL)
3351-func fortificateLand (Q,ni) = {
3352- let lm = li(gL)
3353- if ((size(gL.payments) != 0))
3366+@Callable(gQ)
3367+func fortificateLand (R,no) = {
3368+ let ls = lo(gQ)
3369+ if ((size(gQ.payments) != 0))
33543370 then throw("No payments required")
33553371 else {
3356- let d = toString(gL.originCaller)
3357- let B = valueOrElse(getString(bI(d)), "")
3358- let fI = an(this, B, 0, false)
3359- let nj = bA(Q)
3360- let nk = split(valueOrElse(getString(nj), ":0_15:0_18:0"), "_")
3361- let jt = value(assetInfo(fromBase58String(Q)))
3362- let ia = (dI(split(jt.description, "_")[dj]) / cG)
3363- let ib = valueOrElse(getInteger(bz(Q)), 0)
3364- let hZ = by(Q)
3365- let ie = hY(hZ, ia, ib)
3366- let nl = split(ie[bd], "_")
3367- let nm = parseIntValue(nl[bf])
3368- let nn = parseIntValue(nl[bg])
3369- let no = split(ni, "_")
3370- let np = gu(nk, fy(ie[bc]), nm, nn, true, nil)
3371- let gA = np._1
3372- let nq = np._2
3373- let nr = np._3
3374- let ns = gu(no, gA, nq, nr, false, fI)
3375- let gE = ns._1
3376- let nt = ns._2
3377- let nu = ns._3
3378- let nh = fD(gE)
3379- let jZ = makeString([nl[be], toString(nt), toString(nu), nl[bh]], "_")
3380- $Tuple2(([StringEntry(nj, ni), StringEntry(hZ, makeString_2C([ie[aZ], ie[ba], ie[bb], nh, jZ], ":"))] ++ lm), 0)
3381- }
3382- }
3383-
3384-
3385-
3386-@Callable(gL)
3387-func initDuckTourAttempt (B) = if ((gL.caller != dg))
3372+ let d = toString(gQ.originCaller)
3373+ let C = valueOrElse(getString(bN(d)), "")
3374+ let fN = aq(this, C, 0, false)
3375+ let np = bF(R)
3376+ let nq = split(valueOrElse(getString(np), ":0_15:0_18:0"), "_")
3377+ let jy = value(assetInfo(fromBase58String(R)))
3378+ let if = (dN(split(jy.description, "_")[do]) / cL)
3379+ let ig = valueOrElse(getInteger(bE(R)), 0)
3380+ let ie = bD(R)
3381+ let ij = id(ie, if, ig)
3382+ let nr = split(ij[bi], "_")
3383+ let ns = parseIntValue(nr[bk])
3384+ let nt = parseIntValue(nr[bl])
3385+ let nu = split(no, "_")
3386+ let nv = gz(nq, fD(ij[bh]), ns, nt, true, nil)
3387+ let gF = nv._1
3388+ let nw = nv._2
3389+ let nx = nv._3
3390+ let ny = gz(nu, gF, nw, nx, false, fN)
3391+ let gJ = ny._1
3392+ let nz = ny._2
3393+ let nA = ny._3
3394+ let nn = fI(gJ)
3395+ let ke = makeString([nr[bj], toString(nz), toString(nA), nr[bm]], "_")
3396+ $Tuple2(([StringEntry(np, no), StringEntry(ie, makeString_2C([ij[be], ij[bf], ij[bg], nn, ke], ":"))] ++ ls), 0)
3397+ }
3398+ }
3399+
3400+
3401+
3402+@Callable(gQ)
3403+func initDuckTourAttempt (C) = if ((gQ.caller != dl))
33883404 then throw("Access denied")
33893405 else {
3390- let jc = A(B)
3391- let jd = ah(valueOrElse(getInteger(E(B)), 0))
3392- let kv = valueOrElse(getInteger(jc), jd)
3393- let nv = bK(B)
3394- let jr = valueOrElse(getString(nv), aK)
3395- let cf = valueOrElse(getInteger(dg, bQ), 0)
3396- let nw = (toString(cf) + "_T_0")
3397- $Tuple2([IntegerEntry(K(B), kv), IntegerEntry(jc, jd), StringEntry(L(B), jr), StringEntry(nv, nw)], nw)
3406+ let jh = B(C)
3407+ let ji = ak(valueOrElse(getInteger(F(C)), 0))
3408+ let kA = valueOrElse(getInteger(jh), ji)
3409+ let nB = bP(C)
3410+ let jw = valueOrElse(getString(nB), aN)
3411+ let ck = valueOrElse(getInteger(dl, bV), 0)
3412+ let nC = (toString(ck) + "_T_0")
3413+ $Tuple2([IntegerEntry(L(C), kA), IntegerEntry(jh, ji), StringEntry(M(C), jw), StringEntry(nB, nC)], nC)
33983414 }
33993415
34003416
34013417
3402-@Callable(gL)
3418+@Callable(gQ)
34033419 func breakAttempt () = {
3404- let lm = li(gL)
3405- let B = valueOrErrorMessage(getString(bI(toString(gL.caller))), "You don't have a duck staked")
3406- let nv = bK(B)
3407- let jr = valueOrElse(getString(nv), aK)
3408- if ((split(jr, "_")[bn] != "T"))
3420+ let ls = lo(gQ)
3421+ let C = valueOrErrorMessage(getString(bN(toString(gQ.caller))), "You don't have a duck staked")
3422+ let nB = bP(C)
3423+ let jw = valueOrElse(getString(nB), aN)
3424+ if ((split(jw, "_")[bs] != "T"))
34093425 then throw("Your duck is not in the tournament")
34103426 else {
3411- let kA = getIntegerValue(K(B))
3412- let kB = getStringValue(L(B))
3413- $Tuple2(((lm :+ IntegerEntry(A(B), kA)) :+ StringEntry(nv, kB)), jr)
3414- }
3415- }
3416-
3417-
3418-
3419-@Callable(gL)
3420-func exitTournamentInternal (B) = if ((gL.caller != this))
3427+ let kG = getIntegerValue(L(C))
3428+ let kH = getStringValue(M(C))
3429+ $Tuple2(((ls :+ IntegerEntry(B(C), kG)) :+ StringEntry(nB, kH)), jw)
3430+ }
3431+ }
3432+
3433+
3434+
3435+@Callable(gQ)
3436+func exitTournamentInternal (C) = if ((gQ.caller != this))
34213437 then throw("Access denied")
34223438 else {
3423- let kA = getIntegerValue(K(B))
3424- let kB = getStringValue(L(B))
3425- $Tuple2([IntegerEntry(A(B), kA), StringEntry(bK(B), kB)], false)
3439+ let kG = getIntegerValue(L(C))
3440+ let kH = getStringValue(M(C))
3441+ $Tuple2([IntegerEntry(B(C), kG), StringEntry(bP(C), kH)], false)
34263442 }
34273443
34283444
34293445
3430-@Callable(gL)
3431-func exitDeliveryInternal (B) = if ((gL.caller != this))
3446+@Callable(gQ)
3447+func exitDeliveryInternal (C) = if ((gQ.caller != this))
34323448 then throw("Access denied")
34333449 else {
3434- let mi = ks(B, false, 0, 0)
3435- $Tuple2((mi._1 ++ mi._2), false)
3450+ let mo = kx(C, false, 0, 0)
3451+ $Tuple2((mo._1 ++ mo._2), false)
34363452 }
34373453
34383454
34393455
3440-@Callable(gL)
3441-func autoExitDelivery (B,iW,nx,kt) = if ((gL.caller != this))
3456+@Callable(gQ)
3457+func autoExitDelivery (C,jb,nD,ky) = if ((gQ.caller != this))
34423458 then throw("Access denied")
34433459 else {
3444- let mi = ks(B, true, iW, kt)
3445- $Tuple2(mi._1, $Tuple2(mi._3, mi._4))
3460+ let mo = kx(C, true, jb, ky)
3461+ $Tuple2(mo._1, $Tuple2(mo._3, mo._4))
34463462 }
34473463
34483464
34493465
3450-@Callable(gL)
3451-func prepareRobbery (iR,iS) = {
3452- let lm = li(gL)
3453- if (!(sigVerify_8Kb(iR, iS, ea)))
3466+@Callable(gQ)
3467+func prepareRobbery (iW,iX) = {
3468+ let ls = lo(gQ)
3469+ if (!(sigVerify_8Kb(iW, iX, ef)))
34543470 then throw("signature does not match")
3455- else if ((size(gL.payments) != 1))
3471+ else if ((size(gQ.payments) != 1))
34563472 then throw("exactly 1 payment must be attached")
34573473 else {
3458- let ln = gL.payments[0]
3459- let ny = ln.amount
3460- if (if (!(isDefined(ln.assetId)))
3474+ let lt = gQ.payments[0]
3475+ let nE = lt.amount
3476+ if (if (!(isDefined(lt.assetId)))
34613477 then true
3462- else (value(ln.assetId) != dn))
3478+ else (value(lt.assetId) != ds))
34633479 then throw("WLGOLD payments only!")
34643480 else {
3465- let fq = split(toUtf8String(iR), "|")
3466- if ((size(fq) != 2))
3481+ let fv = split(toUtf8String(iW), "|")
3482+ if ((size(fv) != 2))
34673483 then throw("Wrong message format")
34683484 else {
3469- let B = fq[0]
3470- if (kq(B))
3485+ let C = fv[0]
3486+ if (kv(C))
34713487 then throw("prepareRobbery_checkTournament")
3472- else if (kr(B))
3488+ else if (kw(C))
34733489 then throw("prepareRobbery_checkDelivery")
34743490 else {
3475- let az = av(this, B)._1
3476- if ((az > ny))
3477- then throw(((("Payment " + toString(ny)) + " < required ") + toString(az)))
3491+ let aC = ay(this, C)._1
3492+ if ((aC > nE))
3493+ then throw(((("Payment " + toString(nE)) + " < required ") + toString(aC)))
34783494 else {
3479- let nz = split(fq[1], "_")
3480- let ay = lastBlock.timestamp
3481- let aA = valueOrElse(getInteger(S(B)), 0)
3482- let aB = valueOrElse(getString(T(B)), "")
3483- let aC = valueOrElse(getInteger(R(aB)), 0)
3484- if (if ((aA != y))
3485- then (aC > ay)
3495+ let nF = split(fv[1], "_")
3496+ let aB = lastBlock.timestamp
3497+ let aD = valueOrElse(getInteger(T(C)), 0)
3498+ let aE = valueOrElse(getString(U(C)), "")
3499+ let aF = valueOrElse(getInteger(S(aE)), 0)
3500+ if (if ((aD != z))
3501+ then (aF > aB)
34863502 else false)
3487- then throw(("You already started robbing, wait till " + toString(aC)))
3503+ then throw(("You already started robbing, wait till " + toString(aF)))
34883504 else {
3489- func nA (eS,Q) = {
3490- let nB = valueOrElse(getInteger(P(Q)), 0)
3491- let nC = valueOrElse(getInteger(R(Q)), 0)
3492- if ((nB > size(v)))
3505+ func nG (eX,R) = {
3506+ let nH = valueOrElse(getInteger(Q(R)), 0)
3507+ let nI = valueOrElse(getInteger(S(R)), 0)
3508+ if ((nH > size(w)))
34933509 then throw("Invalid state")
3494- else if ((ay > nC))
3510+ else if ((aB > nI))
34953511 then {
3496- let nD = valueOrElse(getInteger(bs(Q)), 0)
3497- if ((0 >= nD))
3498- then eS
3512+ let nJ = valueOrElse(getInteger(bx(R)), 0)
3513+ if ((0 >= nJ))
3514+ then eX
34993515 else {
3500- let gs = value(assetInfo(fromBase58String(Q)))
3501- let jx = split(gs.description, "_")
3502- let jj = dI(jx[dj])
3503- let nE = ji(Q, jj)
3504- let gR = (ay - nD)
3505- let jA = fraction(gR, (nE * jj), a)
3506- if ((w > jA))
3507- then eS
3508- else (eS :+ Q)
3516+ let gx = value(assetInfo(fromBase58String(R)))
3517+ let jC = split(gx.description, "_")
3518+ let jo = dN(jC[do])
3519+ let nK = jn(R, jo)
3520+ let gW = (aB - nJ)
3521+ let jF = fraction(gW, (nK * jo), a)
3522+ if ((x > jF))
3523+ then eX
3524+ else (eX :+ R)
35093525 }
35103526 }
3511- else eS
3527+ else eX
35123528 }
35133529
3514- let nF = {
3515- let eU = nz
3516- let eV = size(eU)
3517- let eW = nil
3518- func eX (eY,eZ) = if ((eZ >= eV))
3519- then eY
3520- else nA(eY, eU[eZ])
3521-
3522- func fa (eY,eZ) = if ((eZ >= eV))
3523- then eY
3530+ let nL = {
3531+ let eZ = nF
3532+ let fa = size(eZ)
3533+ let fb = nil
3534+ func fc (fd,fe) = if ((fe >= fa))
3535+ then fd
3536+ else nG(fd, eZ[fe])
3537+
3538+ func ff (fd,fe) = if ((fe >= fa))
3539+ then fd
35243540 else throw("List size exceeds 10")
35253541
3526- fa(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
3542+ ff(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fb, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
35273543 }
3528- if ((size(nF) == 0))
3544+ if ((size(nL) == 0))
35293545 then throw("No candidates for robbery")
35303546 else {
3531- let nG = dS(size(nF), height, (iS + gL.transactionId))
3532- let Q = nF[nG]
3533- $Tuple2(([IntegerEntry(P(Q), x), IntegerEntry(R(Q), (ay + v[x])), IntegerEntry(S(B), z), StringEntry(T(B), Q)] ++ lm), Q)
3547+ let nM = dX(size(nL), height, (iX + gQ.transactionId))
3548+ let R = nL[nM]
3549+ $Tuple2(([IntegerEntry(Q(R), y), IntegerEntry(S(R), (aB + w[y])), IntegerEntry(T(C), A), StringEntry(U(C), R)] ++ ls), R)
35343550 }
35353551 }
35363552 }
35373553 }
35383554 }
35393555 }
35403556 }
35413557 }
35423558
35433559
35443560
3545-@Callable(gL)
3546-func robLand (iR,iS) = {
3547- let lm = li(gL)
3548- if (!(sigVerify_8Kb(iR, iS, ea)))
3561+@Callable(gQ)
3562+func robLand (iW,iX) = {
3563+ let ls = lo(gQ)
3564+ if (!(sigVerify_8Kb(iW, iX, ef)))
35493565 then throw("signature does not match")
35503566 else {
3551- let bM = toString(gL.caller)
3552- let B = valueOrErrorMessage(getString(bI(bM)), "You don't have a duck staked")
3553- let ay = lastBlock.timestamp
3554- $Tuple2((lm :+ IntegerEntry(N(B), ay)), 0)
3555- }
3556- }
3557-
3558-
3559-
3560-@Callable(gL)
3561-func acceptDelivery () = if (!(cw))
3567+ let bR = toString(gQ.caller)
3568+ let C = valueOrErrorMessage(getString(bN(bR)), "You don't have a duck staked")
3569+ let aB = lastBlock.timestamp
3570+ $Tuple2((ls :+ IntegerEntry(O(C), aB)), 0)
3571+ }
3572+ }
3573+
3574+
3575+
3576+@Callable(gQ)
3577+func acceptDelivery () = if (!(cB))
35623578 then throw("Delivery feature is turned off!")
35633579 else {
3564- let lm = li(gL)
3565- let bM = toString(gL.caller)
3566- let B = valueOrErrorMessage(getString(bI(bM)), "You don't have a duck staked")
3567- let nH = valueOrElse(getInteger(dd, bO), 0)
3568- let ky = valueOrElse(getInteger(dd, bP), 0)
3569- if ((aN > (nH - ky)))
3570- then throw(((("Delivery is not available, fund=" + dN(nH, 6)) + ", locked=") + dN(ky, 6)))
3580+ let ls = lo(gQ)
3581+ let bR = toString(gQ.caller)
3582+ let C = valueOrErrorMessage(getString(bN(bR)), "You don't have a duck staked")
3583+ let nN = valueOrElse(getInteger(di, bT), 0)
3584+ let kE = valueOrElse(getInteger(di, bU), 0)
3585+ if ((aQ > (nN - kE)))
3586+ then throw(((("Delivery is not available, fund=" + dS(nN, 6)) + ", locked=") + dS(kE, 6)))
35713587 else {
3572- let ay = lastBlock.timestamp
3573- let nI = valueOrElse(getInteger(U(B)), 0)
3574- if ((nI > ay))
3575- then throw(("Delivery is forbidden for your duck until " + toString(nI)))
3576- else if (kq(B))
3577- then throw("acceptDelivery_checkTournament")
3578- else if (kr(B))
3579- then throw("acceptDelivery_checkDelivery")
3580- else {
3581- let nJ = dA(invoke(dd, "updateDeliveryLocked", [(ky + aN)], nil))
3582- let jc = A(B)
3583- let jd = ah(valueOrElse(getInteger(E(B)), 0))
3584- let kv = valueOrElse(getInteger(jc), jd)
3585- let nv = bK(B)
3586- let jr = valueOrElse(getString(nv), aK)
3587- let nK = (toString(ay) + "_D_0")
3588- $Tuple2(([IntegerEntry(K(B), kv), IntegerEntry(jc, jd), StringEntry(L(B), jr), StringEntry(nv, nK)] ++ lm), $Tuple2(nK, nJ))
3589- }
3588+ let aB = lastBlock.timestamp
3589+ let nO = valueOrElse(getInteger(V(C)), 0)
3590+ if ((nO > aB))
3591+ then throw(("Delivery is forbidden for your duck until " + toString(nO)))
3592+ else {
3593+ let fX = valueOrElse(getInteger(W(bR)), 0)
3594+ let nP = valueOrElse(getInteger(X(bR)), 0)
3595+ let nQ = (aB / a)
3596+ let nR = valueOrElse(getInteger(dm, e(bR)), 0)
3597+ let nS = (aS + (nR / aT))
3598+ if (if ((fX >= nS))
3599+ then (nP >= nQ)
3600+ else false)
3601+ then throw((("You already used " + toString(nS)) + " delivery attempts for today"))
3602+ else if (kv(C))
3603+ then throw("acceptDelivery_checkTournament")
3604+ else if (kw(C))
3605+ then throw("acceptDelivery_checkDelivery")
3606+ else {
3607+ let nT = dF(invoke(di, "updateDeliveryLocked", [(kE + aQ)], nil))
3608+ let jh = B(C)
3609+ let ji = ak(valueOrElse(getInteger(F(C)), 0))
3610+ let kA = valueOrElse(getInteger(jh), ji)
3611+ let nB = bP(C)
3612+ let jw = valueOrElse(getString(nB), aN)
3613+ let nU = (toString(aB) + "_D_0")
3614+ $Tuple2(([IntegerEntry(L(C), kA), IntegerEntry(jh, ji), StringEntry(M(C), jw), StringEntry(nB, nU)] ++ ls), $Tuple2(nU, nT))
3615+ }
3616+ }
35903617 }
35913618 }
35923619
35933620

github/deemru/w8io/169f3d6 
1803.45 ms