tx · EHki7ShqZPBSgtwFxCThNtbfK92WztqA3zVtppJxmNKk 3NDCyBG5q85JuaRiigUeEtainyjCQT3XpZm: -0.10200000 Waves 2023.11.04 23:59 [2829111] smart account 3NDCyBG5q85JuaRiigUeEtainyjCQT3XpZm > SELF 0.00000000 Waves
{ "type": 13, "id": "EHki7ShqZPBSgtwFxCThNtbfK92WztqA3zVtppJxmNKk", "fee": 10200000, "feeAssetId": null, "timestamp": 1699131553515, "version": 2, "chainId": 84, "sender": "3NDCyBG5q85JuaRiigUeEtainyjCQT3XpZm", "senderPublicKey": "EVooykMNV691Venwp1dHUTBd7KWequzUcda57Wd3LQEX", "proofs": [ "3vSfyvV8Nq8tiqcaMCetMz3vCFdWfoTP6SqUycr7hggXAX6HHFwekF9BNJyfYiZTAuhXVK6CAUGp3agZewZYcp9m" ], "script": "base64:BgLcAQgCEgMKAQgSBAoCCAESAwoBBBIAEgMKAQgSABIDCgEIEgQKAgEIEgQKAgEIEgQKAgICEgUKAwEBARIAEgQKAggIEgASABIECgICAhIAEgMKAQgSBAoCCAgSAwoBGBIECgIICBIECgIICBIFCgMICAgSBAoCCAgSBwoFAQEBAQESAwoBARIFCgMBAQgSAwoBCBIDCgEIEgASBAoCCAESBAoCCAESAwoBCBIECgIICBIDCgEIEgASAwoBCBIDCgEIEgYKBAgBCAESABIECgICAhIECgICAhIAEgMKAQiiAgAJREFZTUlMTElTAIC4mSkBFGtleUxhc3RBcmJUaW1lQnlVc2VyAQRhZGRyCQCsAgICEGxhc3RBcmJUaW1lVXNlcl8FBGFkZHIBGmtleUFjcmVzU3Rha2VkQW1vdW50QnlVc2VyAQRhZGRyCQCsAgICGGFjcmVzU3Rha2VkQW1vdW50QnlVc2VyXwUEYWRkcgAGU0NBTEU4AIDC1y8ADHhwTGV2ZWxTY2FsZQCAGQAPeHBMZXZlbFJlY2lwUG93AKAfABJudW1Qb2ludHNPbkxldmVsVXAAAwAOcm9iYmVyeUNvc3RNaW4AgMLXLwAUcm9iYmVyeUNvb2xkb3duQ29lZmYAkAMADHJlcXVpcmVtZW50cwkAzAgCAghTdHJlbmd0aAkAzAgCAghBY2N1cmFjeQkAzAgCAglJbnRlbGxlY3QJAMwIAgIJRW5kdXJhbmNlCQDMCAICCURleHRlcml0eQkAzAgCAgVMZXZlbAkAzAgCAgZIZWFsdGgFA25pbAAMY2hhclN0cmVuZ3RoAAAADGNoYXJBY2N1cmFjeQABAA1jaGFySW50ZWxsZWN0AAIADWNoYXJFbmR1cmFuY2UAAwANY2hhckRleHRlcml0eQAEAAtzZWdCYWNrcGFjawAAAAtOVU1TRUdNRU5UUwAGAApOVU1NQUlOQVVYAAIACE1BWFNMT1RTAAIADU1BWFBST0RJTlNMT1QAHgAQbGFuZFJvYkNvb2xkb3ducwkAzAgCAAAJAMwIAgDAzyQJAMwIAgCg9zYJAMwIAgCA3MwUCQDMCAIAgK6mCgUDbmlsAA5NSU5fUkVTX1RPX1JPQgCA2sQJAAxyb2JJZHhMb2NrZWQAAQALZHVja0lkeEZyZWUAAAAQZHVja0lkeFByZXBhcmluZwABAQ1rZXlEdWNrSGVhbHRoAQtkdWNrQXNzZXRJZAkArAICAgtkdWNrSGVhbHRoXwULZHVja0Fzc2V0SWQBDGtleUR1Y2tDaGFycwELZHVja0Fzc2V0SWQJAKwCAgIKZHVja0NoYXJzXwULZHVja0Fzc2V0SWQBCWtleUR1Y2tYUAELZHVja0Fzc2V0SWQJAKwCAgIHZHVja1hQXwULZHVja0Fzc2V0SWQBDGtleUR1Y2tMZXZlbAELZHVja0Fzc2V0SWQJAKwCAgIKZHVja0xldmVsXwULZHVja0Fzc2V0SWQBEWtleUR1Y2tGcmVlUG9pbnRzAQtkdWNrQXNzZXRJZAkArAICAg9kdWNrRnJlZVBvaW50c18FC2R1Y2tBc3NldElkARBrZXlEdWNrRXF1aXBtZW50AQtkdWNrQXNzZXRJZAkArAICAg5kdWNrRXF1aXBtZW50XwULZHVja0Fzc2V0SWQBCWtleVVzZXJYUAEEYWRkcgkArAICAgd1c2VyWFBfBQRhZGRyAQxrZXlVc2VyTGV2ZWwBBGFkZHIJAKwCAgIKdXNlckxldmVsXwUEYWRkcgERa2V5VXNlckZyZWVQb2ludHMBBGFkZHIJAKwCAgIPdXNlckZyZWVQb2ludHNfBQRhZGRyAQ5rZXlTYXZlZEhlYWx0aAELZHVja0Fzc2V0SWQJAKwCAgIMc2F2ZWRIZWFsdGhfBQtkdWNrQXNzZXRJZAEQa2V5U2F2ZWRMb2NhdGlvbgELZHVja0Fzc2V0SWQJAKwCAgIOc2F2ZWRMb2NhdGlvbl8FC2R1Y2tBc3NldElkAQxrZXlEdWNrQnVmZnMBC2R1Y2tBc3NldElkCQCsAgICCmR1Y2tCdWZmc18FC2R1Y2tBc3NldElkARhrZXlMYXN0Um9iYmVyeVRpbWVCeUR1Y2sBC2R1Y2tBc3NldElkCQCsAgICEGxhc3RSb2JiZXJ5VGltZV8FC2R1Y2tBc3NldElkARhrZXlMYXN0Um9iYmVyeUNvc3RCeUR1Y2sBC2R1Y2tBc3NldElkCQCsAgICEGxhc3RSb2JiZXJ5Q29zdF8FC2R1Y2tBc3NldElkARNrZXlMYW5kUm9iYmVyeVN0YXRlAQtsYW5kQXNzZXRJZAkArAICAhFsYW5kUm9iYmVyeVN0YXRlXwULbGFuZEFzc2V0SWQBEmtleUxhbmRDb29sZG93bkVUQQELbGFuZEFzc2V0SWQJAKwCAgIQbGFuZENvb2xkb3duRVRBXwULbGFuZEFzc2V0SWQBE2tleUR1Y2tSb2JiZXJ5U3RhdGUBC2R1Y2tBc3NldElkCQCsAgICEWR1Y2tSb2JiZXJ5U3RhdGVfBQtkdWNrQXNzZXRJZAETa2V5TG9ja2VkTGFuZEJ5RHVjawELZHVja0Fzc2V0SWQJAKwCAgIRbG9ja2VkTGFuZEJ5RHVja18FC2R1Y2tBc3NldElkARZrZXlEZWxpdmVyeURlbGF5QnlEdWNrAQtkdWNrQXNzZXRJZAkArAICAhRkZWxpdmVyeURlbGF5QnlEdWNrXwULZHVja0Fzc2V0SWQBFGtleVVzZXJEZWxpdmVyeUNvdW50AQRhZGRyCQCsAgICEnVzZXJEZWxpdmVyeUNvdW50XwUEYWRkcgEWa2V5VXNlckxhc3REZWxpdmVyeURheQEEYWRkcgkArAICAhR1c2VyTGFzdERlbGl2ZXJ5RGF5XwUEYWRkcgAHeHBDbGFpbQCQTgAPeHBTdWNjZXNzRmxpZ2h0AJBOAAx4cEZhaWxGbGlnaHQA0A8ACHhwQ2FsbEVTAKCNBgAMeHBDdXN0b21OYW1lAMCEPQAKeHBOZXdTTGFuZADAlrECAA54cFVwZ3JhZGVJbmZyYQCQTgAHeHBNZXJnZQDAhD0ACXhwT25ib2FyZADAhD0ABnhwSGVhbACQTgEJbGV2ZWxCeVhQAQJ4cAkAawMFDHhwTGV2ZWxTY2FsZQkAbAYFAnhwAAQFD3hwTGV2ZWxSZWNpcFBvdwAEAAQFBERPV04FBlNDQUxFOAEJbWF4SGVhbHRoAQVsZXZlbAkAZAIAZAUFbGV2ZWwBB2xldmVsVXACCWN1cnJMZXZlbAVuZXdYUAQIbmV3TGV2ZWwJAQlsZXZlbEJ5WFABBQVuZXdYUAkAzAgCBQhuZXdMZXZlbAkAzAgCCQBoAgUSbnVtUG9pbnRzT25MZXZlbFVwCQBlAgUIbmV3TGV2ZWwFCWN1cnJMZXZlbAUDbmlsAQxnZXREdWNrU3RhdHMED3N0YWtpbmdDb250cmFjdAtkdWNrQXNzZXRJZApidWZmRWZmZWN0CmZvcmNlQnVmZnMEBWNoYXJzCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUPc3Rha2luZ0NvbnRyYWN0CQEMa2V5RHVja0NoYXJzAQULZHVja0Fzc2V0SWQCCTBfMF8wXzBfMAIBXwQDbHZsCQELdmFsdWVPckVsc2UCCQCaCAIFD3N0YWtpbmdDb250cmFjdAkBDGtleUR1Y2tMZXZlbAEFC2R1Y2tBc3NldElkAAAEBmhlYWx0aAkBC3ZhbHVlT3JFbHNlAgkAmggCBQ9zdGFraW5nQ29udHJhY3QJAQ1rZXlEdWNrSGVhbHRoAQULZHVja0Fzc2V0SWQJAQltYXhIZWFsdGgBBQNsdmwECnN0YXRlQnVmZnMJALUJAgkBC3ZhbHVlT3JFbHNlAgkAnQgCBQ9zdGFraW5nQ29udHJhY3QJAQxrZXlEdWNrQnVmZnMBBQtkdWNrQXNzZXRJZAIJMF8wXzBfMF8wAgFfCQDOCAIJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBWNoYXJzBQxjaGFyU3RyZW5ndGgJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBWNoYXJzBQxjaGFyQWNjdXJhY3kJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBWNoYXJzBQ1jaGFySW50ZWxsZWN0CQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVjaGFycwUNY2hhckVuZHVyYW5jZQkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFY2hhcnMFDWNoYXJEZXh0ZXJpdHkJAMwIAgUDbHZsCQDMCAIFBmhlYWx0aAUDbmlsAwUKZm9yY2VCdWZmcwkAzAgCBQpidWZmRWZmZWN0CQDMCAIFCmJ1ZmZFZmZlY3QJAMwIAgUKYnVmZkVmZmVjdAkAzAgCBQpidWZmRWZmZWN0CQDMCAIFCmJ1ZmZFZmZlY3QFA25pbAkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUKc3RhdGVCdWZmcwUMY2hhclN0cmVuZ3RoCQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQpzdGF0ZUJ1ZmZzBQxjaGFyQWNjdXJhY3kJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCnN0YXRlQnVmZnMFDWNoYXJJbnRlbGxlY3QJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCnN0YXRlQnVmZnMFDWNoYXJFbmR1cmFuY2UJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCnN0YXRlQnVmZnMFDWNoYXJEZXh0ZXJpdHkFA25pbAEOZ2V0Um9iYmVyeURhdGECD3N0YWtpbmdDb250cmFjdAtkdWNrQXNzZXRJZAQLbGFzdFJvYkNvc3QJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPc3Rha2luZ0NvbnRyYWN0CQEYa2V5TGFzdFJvYmJlcnlDb3N0QnlEdWNrAQULZHVja0Fzc2V0SWQAAAQLbGFzdFJvYlRpbWUJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPc3Rha2luZ0NvbnRyYWN0CQEYa2V5TGFzdFJvYmJlcnlUaW1lQnlEdWNrAQULZHVja0Fzc2V0SWQAAAQDbm93CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQHcm9iQ29zdAkAlgMBCQDMCAIFDnJvYmJlcnlDb3N0TWluCQDMCAIJAGUCBQtsYXN0Um9iQ29zdAkAaAIFFHJvYmJlcnlDb29sZG93bkNvZWZmCQBlAgUDbm93BQtsYXN0Um9iVGltZQUDbmlsBAlkdWNrU3RhdGUJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPc3Rha2luZ0NvbnRyYWN0CQETa2V5RHVja1JvYmJlcnlTdGF0ZQEFC2R1Y2tBc3NldElkAAAECmxvY2tlZExhbmQJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUPc3Rha2luZ0NvbnRyYWN0CQETa2V5TG9ja2VkTGFuZEJ5RHVjawEFC2R1Y2tBc3NldElkAgAEB2xhbmRFVEEJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPc3Rha2luZ0NvbnRyYWN0CQESa2V5TGFuZENvb2xkb3duRVRBAQUKbG9ja2VkTGFuZAAACQCXCgUFB3JvYkNvc3QFC2xhc3RSb2JUaW1lBQlkdWNrU3RhdGUFCmxvY2tlZExhbmQFB2xhbmRFVEEACkxBTkRQUkVGSVgCBExBTkQACkRVQ0tQUkVGSVgCBERVQ0sACkFSVFBSRVNBTEUCB1BSRVNBTEUABk5VTVJFUwAGABhNQVhfTEFORFNfU1RBS0VEX0JZX1VTRVIAGQAPREFJTFlSRVNCWVBJRUNFAID40gEADFdITVVMVElQTElFUgCAyK+gJQAPREVGQVVMVExPQ0FUSU9OAg9BZnJpY2FfRl9BZnJpY2EAEFJFU09VUkNFUFJJQ0VNSU4A1bUCAApFU1NFTExDT0VGAAoAFU1JTl9VU0RUX0ZFRV9ERUxJVkVSWQDQhgMAElRFTl9NSU5VVEVTX01JTExJUwDAzyQAF0FMTE9XRURfRlJFRV9ERUxJVkVSSUVTAAEAGkFDUkVTX0ZPUl9ERUxJVkVSWV9BVFRFTVBUAIDh6xcACXByb2RUeXBlcwkAzAgCAhBGaXJzdCBBaWQgS2l0IEwxCQDMCAICEEZpcnN0IEFpZCBLaXQgTDIJAMwIAgIQRmlyc3QgQWlkIEtpdCBMMwkAzAgCAgtCYWNrcGFjayBMMQkAzAgCAgtCYWNrcGFjayBMMgkAzAgCAgtCYWNrcGFjayBMMwkAzAgCAg5Gb29kIFJhdGlvbiBMMQkAzAgCAg5Gb29kIFJhdGlvbiBMMgkAzAgCAg5Gb29kIFJhdGlvbiBMMwkAzAgCAgtKZXQgUGFjayBMMQkAzAgCAgtKZXQgUGFjayBMMgkAzAgCAgtKZXQgUGFjayBMMwkAzAgCAglTaGllbGQgTDEJAMwIAgIJU2hpZWxkIEwyCQDMCAICCVNoaWVsZCBMMwkAzAgCAgdNaW5lIEwxCQDMCAICB01pbmUgTDIJAMwIAgIHTWluZSBMMwkAzAgCAgdUcmFwIEwxCQDMCAICB1RyYXAgTDIJAMwIAgIHVHJhcCBMMwUDbmlsAApjb250aW5lbnRzCQDMCAICCEFtZXJpY2FzCQDMCAICBkV1cm9wZQkAzAgCAgRBc2lhCQDMCAICBkFmcmljYQkAzAgCAgdPY2VhbmlhBQNuaWwACUNPRUZGMk1BVACAreIEABBmb3J0QWxsb3dlZFByb2RzCQDMCAIADwkAzAgCABAJAMwIAgARCQDMCAIAEgkAzAgCABMJAMwIAgAUBQNuaWwAEHByb2R1Y3Rpb25NYXRyaXgJAMwIAgIlOF84XzhfMTdfMTdfNDJfMTJfMF8zMF8wLDAsMCwwLDAsMCwwXwkAzAgCAiU4XzhfOF8xN18xN180Ml8yNF8wXzYwXzAsMCw1LDIsMCwwLDBfCQDMCAICJzhfOF84XzE3XzE3XzQyXzM2XzBfMTIwXzAsMCwxMCw0LDAsMCwwXwkAzAgCAik4XzE5XzE5XzhfMjdfMTlfMjZfMV8yMF8wLDAsMCwwLDAsMCwwXzAwMQkAzAgCAik4XzE5XzE5XzhfMjdfMTlfNTJfMV80MF8wLDAsMCwwLDAsMCwwXzAwMQkAzAgCAik4XzE5XzE5XzhfMjdfMTlfNzhfMV84MF8wLDAsMCwwLDAsMCwwXzAwMQkAzAgCAiU4XzhfOF84XzhfNjBfMTNfMl8yXzAsMCwwLDAsMCwwLDBfMDExCQDMCAICJThfOF84XzhfOF82MF8yNl8yXzRfMCwwLDAsMCwwLDAsMF8wMTEJAMwIAgIlOF84XzhfOF84XzYwXzM5XzJfOF8wLDAsMCwwLDAsMCwwXzAxMQkAzAgCAikzMF8zMF8zXzE3XzE3XzNfMzBfM18zMF8wLDAsMCwwLDAsMCwwXzExMQkAzAgCAikzMF8zMF8zXzE3XzE3XzNfNjBfM181MF8wLDAsMCwwLDAsMCwwXzExMQkAzAgCAikzMF8zMF8zXzE3XzE3XzNfOTBfM183MF8wLDAsMCwwLDAsMCwwXzExMQkAzAgCAisxOF8xOF8xMF8xOF8xOF8xOF8xMV80XzEwXzAsMCwwLDAsMCwwLDBfMjAxCQDMCAICKzE4XzE4XzEwXzE4XzE4XzE4XzIyXzRfMjBfMCwwLDAsMCwwLDAsMF8yMDEJAMwIAgIrMThfMThfMTBfMThfMThfMThfMzNfNF8zMF8wLDAsMCwwLDAsMCwwXzIwMQkAzAgCAio0XzEzXzIyXzRfMzVfMjJfMjNfMF81MCwxLDBfMCwwLDAsMCwwLDAsMF8JAMwIAgIqNF8xM18yMl80XzM1XzIyXzQ2XzBfNTAsMSwxXzAsMiw1LDAsMCwwLDBfCQDMCAICKzRfMTNfMjJfNF8zNV8yMl82OV8wXzUwLDIsMV8wLDUsMTAsMCwwLDAsMF8JAMwIAgIqNV8yNV80MF81XzEwXzE1XzIwXzFfMzAsMSwxXzAsMCwwLDAsMCwwLDBfCQDMCAICKjVfMjVfNDBfNV8xMF8xNV80MF8xXzMwLDEsMl8yLDEsMywwLDAsMCwwXwkAzAgCAio1XzI1XzQwXzVfMTBfMTVfNjBfMV8zMCwxLDNfNSwyLDgsMCwwLDAsMF8FA25pbAAJcklkeENvZWZmAAYACnJJZHhFZmZlY3QACAAQcklkeFJlcXVpcmVtZW50cwAJAAlySWR4U2xvdHMACgAOUFJPRFVDVFBLR1NJWkUACgALd2hJZHhMZXZlbHMAAAAId2hJZHhSZXMAAQAId2hJZHhNYXQAAgAJd2hJZHhQcm9kAAMACXdoSWR4TE9GVAAEAAl2b2xMb2NrZWQAAAALdm9sT2NjdXBpZWQAAQAHdm9sRnJlZQACAAh2b2xUb3RhbAADAApicElkeExldmVsAAAACGJwSWR4UmVzAAEACGJwSWR4TWF0AAIACWJwSWR4UHJvZAADAA9sb2NJZHhDb250aW5lbnQAAAAKbG9jSWR4VHlwZQABAAhsb2NJZHhJZAACARVrZXlMYW5kQXNzZXRJZFRvT3duZXIBB2Fzc2V0SWQJAKwCAgIDbm9fBQdhc3NldElkARprZXlMYW5kQXNzZXRJZFRvQ3VzdG9tTmFtZQEHYXNzZXRJZAkArAICAgVsY25hXwUHYXNzZXRJZAEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEHYXNzZXRJZAkArAICAgNzdF8FB2Fzc2V0SWQBIGtleUxhbmRBcnRTdGF0dXNCeVR5cGVBbmRBc3NldElkAgR0eXBlB2Fzc2V0SWQJALkJAgkAzAgCAgNsYXMJAMwIAgUEdHlwZQkAzAgCBQdhc3NldElkBQNuaWwCAV8BImtleVN0YWtlZFRpbWVCeVR5cGVBc3NldElkQW5kT3duZXIDB25mdFR5cGUHYXNzZXRJZAlvd25lckFkZHIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAgZzdHRhb18FB25mdFR5cGUCAV8FB2Fzc2V0SWQCAV8FCW93bmVyQWRkcgESa2V5V2FyZWhvdXNlQnlMYW5kAQtsYW5kQXNzZXRJZAkArAICAgN3aF8FC2xhbmRBc3NldElkARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQdhc3NldElkCQCsAgICC2luZnJhTGV2ZWxfBQdhc3NldElkARdrZXlGb3J0aWZpY2F0aW9uc0J5TGFuZAELbGFuZEFzc2V0SWQJAKwCAgIPZm9ydGlmaWNhdGlvbnNfBQtsYW5kQXNzZXRJZAEaa2V5RHVja0Fzc2V0SWRUb0N1c3RvbU5hbWUBB2Fzc2V0SWQJAKwCAgIYZHVja0N1c3RvbU5hbWVCeUFzc2V0SWRfBQdhc3NldElkARZrZXlBZGRyZXNzVG9DdXN0b21OYW1lAQRhZGRyCQCsAgICGGFjY291bnRDdXN0b21OYW1lQnlBZGRyXwUEYWRkcgEPa2V5QWRkcmVzc1JlZkJ5AQRhZGRyCQCsAgICCWFjY1JlZkJ5XwUEYWRkcgEca2V5T25ib2FyZEFydEFjdGl2YXRlZE9uRHVjawELZHVja0Fzc2V0SWQJAKwCAgIab25ib2FyZEFydEFjdGl2YXRlZE9uRHVja18FC2R1Y2tBc3NldElkARxrZXlPbmJvYXJkQXJ0RHVja0FjdGl2YXRlZEJ5AQRhZGRyCQCsAgICGm9uYm9hcmRBcnRBY3RpdmF0ZWREdWNrQnlfBQRhZGRyARNrZXlBZGRyZXNzUmVmZXJyYWxzAQRhZGRyCQCsAgICDWFjY1JlZmVycmFsc18FBGFkZHIBEGtleUR1Y2tJZFRvT3duZXIBB2Fzc2V0SWQJAKwCAgIKZHVja093bmVyXwUHYXNzZXRJZAEUa2V5U3Rha2VkRHVja0J5T3duZXIBCW93bmVyQWRkcgkArAICAhJzdGFrZWREdWNrQnlPd25lcl8FCW93bmVyQWRkcgERa2V5QmFja3BhY2tCeUR1Y2sBC2R1Y2tBc3NldElkCQCsAgICCWJhY2tQYWNrXwULZHVja0Fzc2V0SWQBD2tleUR1Y2tMb2NhdGlvbgELZHVja0Fzc2V0SWQJAKwCAgINZHVja0xvY2F0aW9uXwULZHVja0Fzc2V0SWQBFWtleVVzZXJHd2xSZWxlYXNlVGltZQEIdXNlckFkZHIJAKwCAgIaJXMlc19fdXNlckd3bFJlbGVhc2VUaW1lX18FCHVzZXJBZGRyAQ5rZXlFc1dhcmVob3VzZQACGmVtZXJnZW5jeVdhcmVob3VzZVByb2R1Y3RzAA9kZWxpdmVyeUZ1bmRLZXkCDGRlbGl2ZXJ5RnVuZAARZGVsaXZlcnlMb2NrZWRLZXkCDmRlbGl2ZXJ5TG9ja2VkAA1sYXN0VG91cklkS2V5Ag4lc19fbGFzdFRvdXJJZAEVa2V5VG91clN0YXRpY0RhdGFCeUlkAQN0SWQJAKwCAgIWJXMlZF9fdG91clN0YXRpY0RhdGFfXwkApAMBBQN0SWQBFmtleVRvdXJEeW5hbWljRGF0YUJ5SWQBA3RJZAkArAICAhclcyVkX190b3VyRHluYW1pY0RhdGFfXwkApAMBBQN0SWQBGmtleUJlc3RSZXN1bHRCeVRvdXJBbmREdWNrAgN0SWQLZHVja0Fzc2V0SWQJALkJAgkAzAgCAh8lcyVkJXNfX2Jlc3RSZXN1bHRCeVRvdXJBbmREdWNrCQDMCAIJAKQDAQUDdElkCQDMCAIFC2R1Y2tBc3NldElkBQNuaWwCAl9fAAlpZHhTdGF0aWMAAAAKaWR4RHluYW1pYwABAAp0U3RhdGljRW5kAAYADnREeW5hbWljU3RhdHVzAAEBC2dldFRvdXJEYXRhAgx0b3VyQ29udHJhY3QDdElkBAZzdGF0aWMJALUJAgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFDHRvdXJDb250cmFjdAkBFWtleVRvdXJTdGF0aWNEYXRhQnlJZAEFA3RJZAkArAICCQCsAgICGUVycm9yIHJlYWRpbmcgdG91cm5hbWVudCAJAKQDAQUDdElkAgUgZGF0YQICX18EB2R5bmFtaWMJALwJAgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFDHRvdXJDb250cmFjdAkBFmtleVRvdXJEeW5hbWljRGF0YUJ5SWQBBQN0SWQJAKwCAgkArAICAhlFcnJvciByZWFkaW5nIHRvdXJuYW1lbnQgCQCkAwEFA3RJZAIFIGRhdGECAl9fCQDMCAIFBnN0YXRpYwkAzAgCBQdkeW5hbWljBQNuaWwBDmlzSW5Ub3VybmFtZW50Agx0b3VyQ29udHJhY3QIbG9jYXRpb24EBmxhc3RJZAkBC3ZhbHVlT3JFbHNlAgkAmggCBQx0b3VyQ29udHJhY3QFDWxhc3RUb3VySWRLZXkAAAQDbG9jCQC1CQIFCGxvY2F0aW9uAgFfBANub3cIBQlsYXN0QmxvY2sJdGltZXN0YW1wBAV0RGF0YQkBC2dldFRvdXJEYXRhAgUMdG91ckNvbnRyYWN0BQZsYXN0SWQEBnN0YXRpYwkAkQMCBQV0RGF0YQUJaWR4U3RhdGljBAdkeW5hbWljCQCRAwIFBXREYXRhBQppZHhEeW5hbWljAwMDCQAAAgkAkQMCBQNsb2MFCmxvY0lkeFR5cGUCAVQJAAACCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDbG9jBQ9sb2NJZHhDb250aW5lbnQFBmxhc3RJZAcJAAACCQCRAwIFB2R5bmFtaWMFDnREeW5hbWljU3RhdHVzAgpJTlBST0dSRVNTBwkAZgIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQZzdGF0aWMFCnRTdGF0aWNFbmQFA25vdwcBDGlzSW5EZWxpdmVyeQEIbG9jYXRpb24EA2xvYwkAtQkCBQhsb2NhdGlvbgIBXwQDbm93CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQJc3RhcnRUaW1lCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDbG9jBQ9sb2NJZHhDb250aW5lbnQECGRpc3RhbmNlCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDbG9jBQhsb2NJZHhJZAMDCQAAAgkAkQMCBQNsb2MFCmxvY0lkeFR5cGUCAUQJAGYCCQBkAgUJc3RhcnRUaW1lBRJURU5fTUlOVVRFU19NSUxMSVMFA25vdwcJAGcCAAMFCGRpc3RhbmNlBwEPaXNVc3VhbExvY2F0aW9uAQhsb2NhdGlvbgQHbG9jVHlwZQkAkQMCCQC1CQIFCGxvY2F0aW9uAgFfBQpsb2NJZHhUeXBlAwkBAiE9AgUHbG9jVHlwZQIBVAkBAiE9AgUHbG9jVHlwZQIBRAcBCW9uTWlzc2lvbgIMdG91ckNvbnRyYWN0CGxvY2F0aW9uBAZsYXN0SWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUMdG91ckNvbnRyYWN0BQ1sYXN0VG91cklkS2V5AAAEA2xvYwkAtQkCBQhsb2NhdGlvbgIBXwQDbm93CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQFdERhdGEJAQtnZXRUb3VyRGF0YQIFDHRvdXJDb250cmFjdAUGbGFzdElkBAZzdGF0aWMJAJEDAgUFdERhdGEFCWlkeFN0YXRpYwQHZHluYW1pYwkAkQMCBQV0RGF0YQUKaWR4RHluYW1pYwQHbG9jVHlwZQkAkQMCBQNsb2MFCmxvY0lkeFR5cGUDCQAAAgUHbG9jVHlwZQIBRAYDAwMJAAACCQCRAwIFA2xvYwUKbG9jSWR4VHlwZQIBVAkAAAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNsb2MFD2xvY0lkeENvbnRpbmVudAUGbGFzdElkBwkAAAIJAJEDAgUHZHluYW1pYwUOdER5bmFtaWNTdGF0dXMCCklOUFJPR1JFU1MHCQBmAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBnN0YXRpYwUKdFN0YXRpY0VuZAUDbm93BwESZ2V0UmVjaXBlTWF0ZXJpYWxzAQZyZWNpcGUJAGgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUGcmVjaXBlBQlySWR4Q29lZmYFCUNPRUZGMk1BVAEMY2hlYXRBdHRlbXB0AwZvbGRMb2MGbmV3TG9jCWNoZWF0Q2FzZQkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAhZDaGVhdCBhdHRlbXB0OiBvbGRMb2M9BQZvbGRMb2MCCSwgbmV3TG9jPQUGbmV3TG9jAgcsIGNhc2U9CQCkAwEFCWNoZWF0Q2FzZQAWS1NfU0VQQVJBVEVfUFVCTElDX0tFWQcAGEtTX0FMTE9XX0JJR19JTkZSQV9NRVJHRQcACkRBWV9NSUxMSVMAgLiZKQAFY2hhaW4JAMkBAgkAygECCAUEdGhpcwVieXRlcwABAAEAC3VzZHRBc3NldElkBAckbWF0Y2gwBQVjaGFpbgMJAAACAQFXBQckbWF0Y2gwASCE2nqyCAM/TtG7yo7ui5O8yYLdC136B5ao1CP5qA//uQMJAAACAQFUBQckbWF0Y2gwASBVsdifcoeC7+XjW42sBatl3ppDoS8WuwXzGreHpfHFGAkAAgECDVVua25vd24gY2hhaW4AFWRlZmF1bHRSZXN0QWRkcmVzc1N0cgQHJG1hdGNoMAUFY2hhaW4DCQAAAgEBVwUHJG1hdGNoMAIjM1BRQ3V2RmJ2aDRMa1BVbnJuVTF6M2puYkExcDltM1dOaHYDCQAAAgEBVAUHJG1hdGNoMAIjM011bWtHR3p0Q0tBWHBXRHF4a2Rkb2ZxWFNVYnFRa3ZTSnkJAAIBAg1Vbmtub3duIGNoYWluABFJbmZyYVVwZ3JhZGVDb3N0UwQHJG1hdGNoMAUFY2hhaW4DCQAAAgEBVwUHJG1hdGNoMACAyK+gJQMJAAACAQFUBQckbWF0Y2gwAIDC1y8JAAIBAg1Vbmtub3duIGNoYWluAA5hcmJpdHJhZ2VEZWxheQQHJG1hdGNoMAUFY2hhaW4DCQAAAgEBVwUHJG1hdGNoMAUKREFZX01JTExJUwMJAAACAQFUBQckbWF0Y2gwAODUAwkAAgECDVVua25vd24gY2hhaW4AE0RFTElWRVJZX1BVTklTSE1FTlQEByRtYXRjaDAFBWNoYWluAwkAAAIBAVcFByRtYXRjaDAAgJeTBQMJAAACAQFUBQckbWF0Y2gwAKD3NgkAAgECDVVua25vd24gY2hhaW4AA1NFUAICX18ABU1VTFQ2AMCEPQAFTVVMVDgAgMLXLwAFU1NJWkUAGQAFTVNJWkUAZAAFTFNJWkUA4QEABlhMU0laRQCQAwAHWFhMU0laRQDxBAAFSVRFUjYJAMwIAgAACQDMCAIAAQkAzAgCAAIJAMwIAgADCQDMCAIABAkAzAgCAAUFA25pbAEPZ2V0U3RyaW5nT3JGYWlsAgdhZGRyZXNzA2tleQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFB2FkZHJlc3MFA2tleQkAuQkCCQDMCAICCm1hbmRhdG9yeSAJAMwIAgkApQgBBQdhZGRyZXNzCQDMCAICAS4JAMwIAgUDa2V5CQDMCAICDyBpcyBub3QgZGVmaW5lZAUDbmlsAgAAEUlkeENmZ1N0YWtpbmdEYXBwAAEAEUlkeENmZ0Vjb25vbXlEYXBwAAIAFElkeENmZ0dvdmVybmFuY2VEYXBwAAMADUlkeENmZ1dsZ0RhcHAABAAUSWR4Q2ZnVG91cm5hbWVudERhcHAABwAPSWR4Q2ZnQWNyZXNEYXBwAAgBCmtleVJlc3RDZmcAAg4lc19fcmVzdENvbmZpZwEOa2V5UmVzdEFkZHJlc3MAAgwlc19fcmVzdEFkZHIBEXJlYWRSZXN0Q2ZnT3JGYWlsAQRyZXN0CQC8CQIJAQ9nZXRTdHJpbmdPckZhaWwCBQRyZXN0CQEKa2V5UmVzdENmZwAFA1NFUAEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgdyZXN0Q2ZnA2lkeAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUHcmVzdENmZwUDaWR4CQCsAgICKlJlc3QgY2ZnIGRvZXNuJ3QgY29udGFpbiBhZGRyZXNzIGF0IGluZGV4IAkApAMBBQNpZHgADHJlc3RDb250cmFjdAkBEUBleHRyTmF0aXZlKDEwNjIpAQkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzCQEOa2V5UmVzdEFkZHJlc3MABRVkZWZhdWx0UmVzdEFkZHJlc3NTdHIAB3Jlc3RDZmcJARFyZWFkUmVzdENmZ09yRmFpbAEFDHJlc3RDb250cmFjdAAPc3Rha2luZ0NvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUHcmVzdENmZwURSWR4Q2ZnU3Rha2luZ0RhcHAAD2Vjb25vbXlDb250cmFjdAkBGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIFB3Jlc3RDZmcFEUlkeENmZ0Vjb25vbXlEYXBwAAtnb3ZDb250cmFjdAkBGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIFB3Jlc3RDZmcFFElkeENmZ0dvdmVybmFuY2VEYXBwAAt3bGdDb250cmFjdAkBGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIFB3Jlc3RDZmcFDUlkeENmZ1dsZ0RhcHAAEnRvdXJuYW1lbnRDb250cmFjdAkBGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIFB3Jlc3RDZmcFFElkeENmZ1RvdXJuYW1lbnREYXBwAA1hY3Jlc0NvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUHcmVzdENmZwUPSWR4Q2ZnQWNyZXNEYXBwAApyZWNMYW5kTnVtAAAAC3JlY0xhbmRTaXplAAEAC3JlY1RlcnJhaW5zAAIADHJlY0NvbnRpbmVudAADAA13bGdBc3NldElkS2V5Agt3bGdfYXNzZXRJZAAKd2xnQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCcCAIFC3dsZ0NvbnRyYWN0BQ13bGdBc3NldElkS2V5AhhXTEdPTEQgaXMgbm90IGlzc3VlZCB5ZXQAD2FjcmVzQXNzZXRJZEtleQIMYWNyZXNBc3NldElkAAxhY3Jlc0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnAgCBQ1hY3Jlc0NvbnRyYWN0BQ9hY3Jlc0Fzc2V0SWRLZXkCF0FDUkVTIGlzIG5vdCBpc3N1ZWQgeWV0AAtyYW5kb21EZWxheQACAQlrZXlDb21taXQBB2FkZHJlc3MJAKwCAgITZmluaXNoQmxvY2tGb3JBZGRyXwUHYWRkcmVzcwERa2V5UmVzUHJvcG9ydGlvbnMAAhNyZXNUeXBlc1Byb3BvcnRpb25zARZrZXlSZXNUeXBlc0J5Q29udGluZW50AQljb250aW5lbnQJAKwCAgIUcmVzVHlwZXNCeUNvbnRpbmVudF8FCWNvbnRpbmVudAEVa2V5U3Rha2VkTGFuZHNCeU93bmVyAQlvd25lckFkZHIJAKwCAgITc3Rha2VkTGFuZHNCeU93bmVyXwUJb3duZXJBZGRyARZrZXlTdGFrZWRQaWVjZXNCeU93bmVyAQlvd25lckFkZHIJAKwCAgIUc3Rha2VkUGllY2VzQnlPd25lcl8FCW93bmVyQWRkcgEIYXNTdHJpbmcBAXYEByRtYXRjaDAFAXYDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFzBQckbWF0Y2gwBQFzCQACAQIYZmFpbCB0byBjYXN0IGludG8gU3RyaW5nAQVhc0ludAEBdgQHJG1hdGNoMAUBdgMJAAECBQckbWF0Y2gwAgNJbnQEAW4FByRtYXRjaDAFAW4JAAIBAhVmYWlsIHRvIGNhc3QgaW50byBJbnQBCWFzQW55TGlzdAEBdgQHJG1hdGNoMAUBdgMJAAECBQckbWF0Y2gwAglMaXN0W0FueV0EAWwFByRtYXRjaDAFAWwJAAIBAhtmYWlsIHRvIGNhc3QgaW50byBMaXN0W0FueV0BCWFzQm9vbGVhbgEBdgQHJG1hdGNoMAUBdgMJAAECBQckbWF0Y2gwAgdCb29sZWFuBAFzBQckbWF0Y2gwBQFzCQACAQIZZmFpbCB0byBjYXN0IGludG8gQm9vbGVhbgEPbnVtUGllY2VzQnlTaXplAQhsYW5kU2l6ZQQHJG1hdGNoMAUIbGFuZFNpemUDCQAAAgIBUwUHJG1hdGNoMAUFU1NJWkUDCQAAAgIBTQUHJG1hdGNoMAUFTVNJWkUDCQAAAgIBTAUHJG1hdGNoMAUFTFNJWkUDCQAAAgICWEwFByRtYXRjaDAFBlhMU0laRQMJAAACAgNYWEwFByRtYXRjaDAFB1hYTFNJWkUJAAIBAhFVbmtub3duIGxhbmQgc2l6ZQEHaXNEaWdpdAEBcwkBCWlzRGVmaW5lZAEJALYJAQUBcwEKa2V5QmxvY2tlZAACEGNvbnRyYWN0c0Jsb2NrZWQBEWtleUxhc3RUeElkQnlVc2VyAQRhZGRyCQCsAgICD2xh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ZXRJZAEHbGFuZE51bQkArAICAgNsYV8FB2xhbmROdW0BHmtleUluZnJhTGV2ZWxCeUFzc2V0SWRBbmRPd25lcgIHYXNzZXRJZAlvd25lckFkZHIJAKwCAgkArAICCQCsAgICBWlsYW9fBQdhc3NldElkAgFfBQlvd25lckFkZHIBEWtleUxhbmROdW1Ub093bmVyAQdsYW5kTnVtCQCsAgICA2xvXwUHbGFuZE51bQEaa2V5RHVja0N1c3RvbU5hbWVUb0Fzc2V0SWQBBG5hbWUJAKwCAgIRZHVja0J5Q3VzdG9tTmFtZV8FBG5hbWUBFmtleUN1c3RvbU5hbWVUb0FkZHJlc3MBBG5hbWUJAKwCAgIUYWNjb3VudEJ5Q3VzdG9tTmFtZV8FBG5hbWUBCWtleU9sZGllcwACCm9sZGllc0xpc3QAC2NsYWltTW9kZVdoAAAADWNsYWltTW9kZUR1Y2sAAQATY2xhaW1Nb2RlV2hUaGVuRHVjawACAAhmbEhlYWx0aAAAAAtmbFRpbWVzdGFtcAAFAAdmbEJvbnVzAAYAC2ZsUHJvZHNVc2VkAAcBB25mdE5hbWUCB2xhbmROdW0IbGFuZFNpemUJAKwCAgkArAICBQpMQU5EUFJFRklYBQdsYW5kTnVtBQhsYW5kU2l6ZQEIdG9Wb2x1bWUCBmFtb3VudAdwa2dTaXplBARwa2dzAwkAZwIFBmFtb3VudAAACQBpAgkAZQIJAGQCBQZhbW91bnQFB3BrZ1NpemUAAQUHcGtnU2l6ZQkBAS0BCQBpAgkAZQIJAGQCCQEBLQEFBmFtb3VudAUHcGtnU2l6ZQABBQdwa2dTaXplCQBoAgUEcGtncwUFTVVMVDgBE2Rpc3RyaWJ1dGVCeVdlaWdodHMCBXRvdGFsB3dlaWdodHMEA3N1bQkAZAIJAGQCCQBkAgkAZAIJAGQCCQCRAwIFB3dlaWdodHMAAAkAkQMCBQd3ZWlnaHRzAAEJAJEDAgUHd2VpZ2h0cwACCQCRAwIFB3dlaWdodHMAAwkAkQMCBQd3ZWlnaHRzAAQJAJEDAgUHd2VpZ2h0cwAFAwkAZwIAAAUDc3VtCQACAQIQWmVybyB3ZWlnaHRzIHN1bQQFbm9ybTYJAGsDBQV0b3RhbAUFTVVMVDYFA3N1bQoBCm5vcm1hbGl6ZXICA2FjYwRlbGVtCQDNCAIFA2FjYwkAawMFBGVsZW0FBW5vcm02BQVNVUxUNgoAAiRsBQd3ZWlnaHRzCgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQpub3JtYWxpemVyAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA2CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGARJnZXROZWVkZWRNYXRlcmlhbHMBBXRvdGFsBAVwcm9wcwkAtQkCCQEFdmFsdWUBCQCiCAEJARFrZXlSZXNQcm9wb3J0aW9ucwACAV8DCQECIT0CCQCQAwEFBXByb3BzBQZOVU1SRVMJAAIBAhZXcm9uZyBwcm9wb3J0aW9ucyBkYXRhBAFyCQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwcm9wcwAACQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwcm9wcwABCQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwcm9wcwACCQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwcm9wcwADCQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwcm9wcwAECQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwcm9wcwAFBQNuaWwJARNkaXN0cmlidXRlQnlXZWlnaHRzAgUFdG90YWwFAXIBEXN1YnRyYWN0TWF0ZXJpYWxzAwxzaG91bGRVc2VNYXQDaGFzCXRvdGFsTmVlZAQEbmVlZAkBEmdldE5lZWRlZE1hdGVyaWFscwEFCXRvdGFsTmVlZAoBCnN1YnRyYWN0b3ICA2FjYwNpZHgEBnJlc3VsdAkAZQIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNoYXMFA2lkeAkAkQMCBQRuZWVkBQNpZHgDCQBmAgAABQZyZXN1bHQJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIYTm90IGVub3VnaCBtYXRlcmlh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BGhlYWQJAMkBAgUFcExpc3QJAGgCAAgFCnByb2R1Y3RJZHgEBGN1cnIJALEJAQkAyQECCQDKAQIFBXBMaXN0CQBoAgAIBQpwcm9kdWN0SWR4AAgEBHRhaWwJAMoBAgUFcExpc3QJAGgCAAgJAGQCBQpwcm9kdWN0SWR4AAEEBnJlY2lwZQkAtQkCCQCRAwIFEHByb2R1Y3Rpb25NYXRyaXgFCnByb2R1Y3RJZHgCAV8DAwkBASEBBQppc1Bvc2l0aXZlCQBmAgUFY291bnQFBGN1cnIHCQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgICCVlvdSBoYXZlIAkApAMBBQRjdXJyAgQgb2YgCQCRAwIFCXByb2RUeXBlcwUKcHJvZHVjdElkeAITLCBidXQgdHJpZWQgdG8gdXNlIAkApAMBBQVjb3VudAQGbmV3QW10AwMJAQEhAQUKaXNQb3NpdGl2ZQkBFWNoZWNrU3RhdFJlcXVpcmVtZW50cwIFCWR1Y2tTdGF0cwkAtQkCCQCRAwIFBnJlY2lwZQUQcklkeFJlcXVpcmVtZW50cwIBLAcJAGUCBQRjdXJyBQVjb3VudAkAZAIFBGN1cnIFBWNvdW50BAhkZWx0YVZvbAkAZQIJAQh0b1ZvbHVtZQIFBm5ld0FtdAUOUFJPRFVDVFBLR1NJWkUJAQh0b1ZvbHVtZQIFBGN1cnIFDlBST0RVQ1RQS0dTSVpFCQCVCgMJAMsBAgkAywECBQRoZWFkCQCaAwEFBm5ld0FtdAUEdGFpbAkAZAIFCG9jY3VwaWVkBQhkZWx0YVZvbAkAZQIFBGZyZWUFCGRlbHRhVm9sAQhhZGRQcm9kQgcGaWR4Q250BXBMaXN0CmlzUG9zaXRpdmUHc2VnbWVudAdtYWluQXV4BHNsb3QJZHVja1N0YXRzBAVwYXJ0cwkAtQkCBQZpZHhDbnQCAToDCQECIT0CCQCQAwEFBXBhcnRzAAIJAAIBAihJbmNvcnJlY3QgZm9ybWF0LCBzaG91bGQgYmUgaW5kZXg6YW1vdW50AwMJAQEhAQUKaXNQb3NpdGl2ZQkBAiE9AgkAsQIBCQCRAwIFBXBhcnRzAAAAAgcJAAIBAitQcm9kdWN0IGlkeCBzaG91bGQgYmUgMiBkaWdpdHMsIHplcm8gcGFkZGVkBApwcm9kdWN0SWR4CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFcGFydHMAAAQFY291bnQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwYXJ0cwABAwMJAGYCAAAFCnByb2R1Y3RJZHgGCQBnAgUKcHJvZHVjdElkeAkAkAMBBRBwcm9kdWN0aW9uTWF0cml4CQACAQITVW5rbm93biBwcm9kdWN0IGlkeAMJAGYCAAAFBWNvdW50CQACAQIXQ291bnQgY2FuJ3QgYmUgbmVnYXRpdmUDCQBmAgUFY291bnQFDU1BWFBST0RJTlNMT1QJAAIBCQCsAgIJAKwCAgkArAICAhRDYW4ndCBwdXQgbW9yZSB0aGFuIAkApAMBBQ1NQVhQUk9ESU5TTE9UAgQgb2YgCQCRAwIFCXByb2RUeXBlcwUKcHJvZHVjdElkeAMJAAACBQVjb3VudAAACQCUCgIFBXBMaXN0BwQEaGVhZAkAyQECBQVwTGlzdAkAaAIACAUKcHJvZHVjdElkeAQEY3VycgkAsQkBCQDJAQIJAMoBAgUFcExpc3QJAGgCAAgFCnByb2R1Y3RJZHgACAQEdGFpbAkAygECBQVwTGlzdAkAaAIACAkAZAIFCnByb2R1Y3RJZHgAAQQGcmVjaXBlCQC1CQIJAJEDAgUQcHJvZHVjdGlvbk1hdHJpeAUKcHJvZHVjdElkeAIBXwMDCQEBIQEFCmlzUG9zaXRpdmUJAGYCBQVjb3VudAUEY3VycgcJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIJWW91IGhhdmUgCQCkAwEFBGN1cnICBCBvZiAJAJEDAgUJcHJvZFR5cGVzBQpwcm9kdWN0SWR4AhMsIGJ1dCB0cmllZCB0byB1c2UgCQCkAwEFBWNvdW50BAlpc0JpZ0l0ZW0DAwkBASEBBQppc1Bvc2l0aXZlCQEVY2hlY2tTdGF0UmVxdWlyZW1lbnRzAgUJZHVja1N0YXRzCQC1CQIJAJEDAgUGcmVjaXBlBRBySWR4UmVxdWlyZW1lbnRzAgEsBwQGY29tcGF0CQCRAwIFBnJlY2lwZQUJcklkeFNsb3RzAwkAAAIFBmNvbXBhdAIACQACAQIXSXRlbSBjYW5ub3QgYmUgZXF1aXBwZWQEAWMJAQ1wYXJzZUludFZhbHVlAQUGY29tcGF0BARjU2VnCQBpAgUBYwBkAwkBAiE9AgUHc2VnbWVudAUEY1NlZwkAAgECFFNlZ21lbnQgaW5jb21wYXRpYmxlBAhjTWFpbkF1eAkAaQIJAGoCBQFjAGQACgMJAQIhPQIFB21haW5BdXgFCGNNYWluQXV4CQACAQIRU2xvdCBpbmNvbXBhdGlibGUECWNOdW1TbG90cwkAagIFAWMACgMDCQECIT0CBQRzbG90AAAJAGYCBQljTnVtU2xvdHMAAQcJAAIBAh5CaWcgaXRlbXMgc2hvdWxkIG9jY3VweSBzbG90IDAJAGYCBQljTnVtU2xvdHMAAQcJAJQKAgkAywECCQDLAQIFBGhlYWQJAJoDAQkAZAIFBGN1cnIDBQppc1Bvc2l0aXZlBQVjb3VudAkBAS0BBQVjb3VudAUEdGFpbAUJaXNCaWdJdGVtAQtzbG90c0dyb3VwQgYBZwRicEluCmlzUG9zaXRpdmUHc2VnbWVudAdtYWluQXV4BXN0YXRzAwkBAiE9AgUBZwIABAVzbG90cwkAtQkCBQFnAgEsAwkAZgIJAJADAQUFc2xvdHMFCE1BWFNMT1RTCQACAQISV3Jvbmcgc2xvdHMgZm9ybWF0BAJzMAkAkQMCBQVzbG90cwAABAJzMQMJAGYCCQCQAwEFBXNsb3RzAAEJAJEDAgUFc2xvdHMAAQIAAwMJAAACBQJzMAIACQAAAgUCczECAAcFBGJwSW4EBXRtcFMwAwkBAiE9AgUCczACAAkBCGFkZFByb2RCBwUCczAFBGJwSW4FCmlzUG9zaXRpdmUFB3NlZ21lbnQFB21haW5BdXgAAAUFc3RhdHMJAJQKAgUEYnBJbgcDCQECIT0CBQJzMQIAAwgFBXRtcFMwAl8yCQACAQIeQmlnIGl0ZW0gYWxyZWFkeSBvY2N1cGllcyBzbG90CAkBCGFkZFByb2RCBwUCczEIBQV0bXBTMAJfMQUKaXNQb3NpdGl2ZQUHc2VnbWVudAUHbWFpbkF1eAABBQVzdGF0cwJfMQgFBXRtcFMwAl8xBQRicEluAQZkcmVzc0IEB3NlZ0xpc3QGcEJ5dGVzCmlzUG9zaXRpdmUFc3RhdHMKAQdzZWdtZW50AgNhY2MDc2VnBAFqCAUDYWNjAl8xBAdtYWluQXV4CQC1CQIFA3NlZwIBOwMJAQIhPQIJAJADAQUHbWFpbkF1eAUKTlVN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cQUJdGVtcFByb2RCBwUFc3RhdHMJAAACBQhuZXdQcm9kQgUIbmV3UHJvZEIBGXVwZGF0ZVByb3BvcnRpb25zSW50ZXJuYWwECHByb3BMaXN0DXRlcnJhaW5Db3VudHMNbGFuZFNpemVJbmRleARzaWduAwkBAiE9AgkAkAMBBQhwcm9wTGlzdAUGTlVNUkVTCQACAQIWV3JvbmcgcHJvcG9ydGlvbnMgZGF0YQoBB3VwZGF0ZXICA2FjYwFpBAZyZXN1bHQJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUIcHJvcExpc3QFAWkJAGgCCQBoAgUEc2lnbgkAkQMCBQ10ZXJyYWluQ291bnRzBQFpBQ1sYW5kU2l6ZUluZGV4AwkAZgIAAAUGcmVzdWx0CQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAhZQYW5pYyEgUGllY2VzIG9mIHR5cGU9CQCkAwEFAWkCBywgc2lnbj0JAKQDAQUEc2lnbgITLCB0ZXJyYWluQ291bnRzW2ldPQkApAMBCQCRAwIFDXRlcnJhaW5Db3VudHMFAWkCECwgbGFuZFNpemVJbmRleD0JAKQDAQUNbGFuZFNpemVJbmRleAkAzQgCBQNhY2MJAKQDAQUGcmVzdWx0CgACJGwFBUlURVI2CgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQd1cGRhdGVyAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA2CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGARF1cGRhdGVQcm9wb3J0aW9ucwMNdGVycmFpbkNvdW50cw1sYW5kU2l6ZUluZGV4BHNpZ24ECHByb3BMaXN0CQC1CQIJAQt2YWx1ZU9yRWxzZQIJAKIIAQkBEWtleVJlc1Byb3BvcnRpb25zAAILMF8wXzBfMF8wXzACAV8JALkJAgkBGXVwZGF0ZVByb3BvcnRpb25zSW50ZXJuYWwEBQhwcm9wTGlzdAUNdGVycmFpbkNvdW50cwUNbGFuZFNpemVJbmRleAUEc2lnbgIBXwENY291bnRUZXJyYWlucwEIdGVycmFpbnMJAMwIAgkAZQIJAJADAQkAtQkCBQh0ZXJyYWlucwIBQQABCQDMCAIJAGUCCQCQAwEJALUJAgUIdGVycmFpbnMCAUIAAQkAzAgCCQBlAgkAkAMBCQC1CQIFCHRlcnJhaW5zAgFDAAEJAMwIAgkAZQIJAJADAQkAtQkCBQh0ZXJyYWlucwIBRAABCQDMCAIJAGUCCQCQAwEJALUJAgUIdGVycmFpbnMCAUUAAQkAzAgCCQBlAgkAkAMBCQC1CQIFCHRlcnJhaW5zAgFGAAEFA25pbAEGYWRkUmVzBQpjdXJyZW50UmVzDXRlcnJhaW5Db3VudHMJZGVsdGFUaW1lDWxhbmRTaXplSW5kZXgXZGFpbHlCeVBpZWNlV2l0aEJvbnVzZXMKAQVhZGRlcgIDYWNjAWkECXJlc09mVHlwZQkAaAIJAGgCCQBrAwUJZGVsdGFUaW1lBRdkYWlseUJ5UGllY2VXaXRoQm9udXNlcwUJREFZTUlMTElTCQCRAwIFDXRlcnJhaW5Db3VudHMFAWkFDWxhbmRTaXplSW5kZXgJAM0IAgUDYWNjCQCkAwEJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUKY3VycmVudFJlcwUBaQUJcmVzT2ZUeXBlBAFyCgACJGwFBUlURVI2CgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQVhZGRlcgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNgkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgkAuQkCBQFyAgFfAQl2aXJ0Q2xhaW0EDXRlcnJhaW5Db3VudHMJZGVsdGFUaW1lDWxhbmRTaXplSW5kZXgXZGFpbHlCeVBpZWNlV2l0aEJvbnVzZXMKAQVhZGRlcgIDYWNjAWkE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aFN0cgkBC3ZhbHVlT3JFbHNlAgkAoggBBQV3aEtleQkArAICBQl2b2xQcmVmaXgCGzowXzBfMF8wXzBfMDowXzBfMF8wXzBfMDo6MAQCd2gJALwJAgUFd2hTdHICAToECndoT2NjdXBpZWQJARdnZXRXYXJlaG91c2VPY2N1cGllZFZvbAEFAndoBAZ3aExvZnQDCQBmAgAFCQCQAwEFAndoCQC5CQIJAMwIAgIBMAkAzAgCCQCkAwEFCndoT2NjdXBpZWQJAMwIAgkApAMBCQBlAgUHd2hUb3RhbAUKd2hPY2N1cGllZAkAzAgCCQCkAwEFB3doVG90YWwFA25pbAIBXwQEbG9mdAkAtQkCCQCRAwIFAndoBQl3aElkeExPRlQCAV8ECHdoTG9ja2VkCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEbG9mdAUJdm9sTG9ja2VkBANvY2MDCQBmAgkAkAMBBQRsb2Z0AAEJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQt2b2xPY2N1cGllZAUKd2hPY2N1cGllZAkAuQkCCQDMCAIJAKQDAQUId2hMb2NrZWQJAMwIAgkApAMBBQNvY2MJAMwIAgkApAMBCQBlAgkAZQIFB3doVG90YWwFCHdoTG9ja2VkBQNvY2MJAMwIAgkApAMBBQd3aFRvdGFsBQNuaWwCAV8JAMwIAgkAkQMCBQJ3aAULd2hJZHhMZXZlbHMJAMwIAgMJAAACCQCQAwEJALUJAgkAkQMCBQJ3aAUId2hJZHhSZXMCAV8FBk5VTVJFUwkAkQMCBQJ3aAUId2hJZHhSZXMCCzBfMF8wXzBfMF8wCQDMCAIDCQAAAgkAkAMBCQC1CQIJAJEDAgUCd2gFCHdoSWR4TWF0AgFfBQZOVU1SRVMJAJEDAgUCd2gFCHdoSWR4TWF0AgswXzBfMF8wXzBfMAkAzAgCCQCRAwIFAndoBQl3aElkeFByb2QJAMwIAgUGd2hMb2Z0BQNuaWwBFWdldFdhcmVob3VzZVNwYWNlTGVmdAEJY3VycmVudFdoBAtvY2N1cGllZFZvbAkBF2dldFdhcmVob3VzZU9jY3VwaWVkVm9sAQUJY3VycmVudFdoBA9jdXJyV2hMb2NrZWRWb2wJAQ1wYXJzZUludFZhbHVlAQkAkQMCCQC1CQIJAJEDAgUJY3VycmVudFdoBQl3aElkeExPRlQCAV8FCXZvbExvY2tlZAkAZQIJAGUCCQEXZ2V0V2FyZWhvdXNlVG90YWxWb2x1bWUBCQCRAwIFCWN1cnJlbnRXaAULd2hJZHhMZXZlbHMFC29jY3VwaWVkVm9sBQ9jdXJyV2hMb2NrZWRWb2wBCW1vdmVTdHVmZgMKY2FyZ29QYXJ0cwljdXJyZW50V2gLY3VycmVudFBhY2sDCQECIT0CCQCQAwEFCmNhcmdvUGFydHMAAwkAAgECNGNhcmdvTGlzdFN0ciBzaG91bGQgY29udGFpbiBleGFjdGx5IDIgJzonIHNlcGFyYXRvcnMECHJlc1BhcnRzCQC1CQIJAJEDAgUKY2FyZ29QYXJ0cwAAAgFfBAhtYXRQYXJ0cwkAtQkCCQCRAwIFCmNhcmdvUGFydHMAAQIBXwQJcHJvZFBhcnRzAwkAAAIJAJEDAgUKY2FyZ29QYXJ0cwACAgAFA25pbAkAvAkCCQCRAwIFCmNhcmdvUGFydHMAAgIBXwMJAQIhPQIJAJADAQUIcmVzUGFydHMFBk5VTVJFUwkAAgECIEFsbCA2IHJlc291cmNlcyBzaG91bGQgYmUgcGFzc2VkAwkBAiE9AgkAkAMBBQhtYXRQYXJ0cwUGTlVNUkVTCQACAQIgQWxsIDYgbWF0ZXJpYWxzIHNob3VsZCBiZSBwYXNzZWQEC3doU3BhY2VMZWZ0CQEVZ2V0V2FyZWhvdXNlU3BhY2VMZWZ0AQUJY3VycmVudFdoBAljdXJyV2hSZXMJALUJAgkAkQMCBQljdXJyZW50V2gFCHdoSWR4UmVzAgFfBAljdXJyV2hNYXQJALUJAgkAkQMCBQljdXJyZW50V2gFCHdoSWR4TWF0AgFfBApjdXJyV2hQcm9kAwkAAAIJAJEDAgUJY3VycmVudFdoBQl3aElkeFByb2QCAAUDbmlsCQC8CQIJAJEDAgUJY3VycmVudFdoBQl3aElkeFByb2QCAV8EDmN1cnJlbnRQYWNrUmVzCQC1CQIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4UmVzAgFfBA5jdXJyZW50UGFja01hdAkAtQkCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeE1hdAIBXwQPY3VycmVudFBhY2tQcm9kAwkAAAIJAJEDAgULY3VycmVudFBhY2sFCWJwSWR4UHJvZAIABQNuaWwJALwJAgkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kAgFfCgEDbXZSAgNhY2MEaXRlbQQBaQgFA2FjYwJfMQQCYW0JAQ1wYXJzZUludFZhbHVlAQUEaXRlbQQDd2hyCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUJY3VycldoUmVzBQFpBANicHIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQ5jdXJyZW50UGFja1JlcwUBaQMJAAACBQJhbQAACQCWCgQJAGQCBQFpAAEJAM0IAggFA2FjYwJfMgkAkQMCBQljdXJyV2hSZXMFAWkJAM0IAggFA2FjYwJfMwkAkQMCBQ5jdXJyZW50UGFja1JlcwUBaQgFA2FjYwJfNAMJAGYCBQJhbQAAAwkAZgIFAmFtBQNicHIJAAIBCQCsAgIJAKwCAgkArAICCQCsAgICEEF0dGVtcHQgdG8gdGFrZSAFBGl0ZW0CGSBmcm9tIGJhY2twYWNrLCBidXQgb25seSAJAKQDAQUDYnByAgogYXZhaWxhYmxlCQCWCgQJAGQCBQFpAAEJAM0IAggFA2FjYwJfMgkApAMBCQBkAgUDd2hyBQJhbQkAzQgCCAUDYWNjAl8zCQCkAwEJAGUCBQNicHIFAmFtCQBkAggFA2FjYwJfNAUCYW0DCQBmAgkBAS0BBQJhbQUDd2hyCQACAQkArAICCQCsAgIJAKwCAgkArAICAhBBdHRlbXB0IHRvIHRha2UgCQCkAwEJAQEtAQUCYW0CGiBmcm9tIHdhcmVob3VzZSwgYnV0IG9ubHkgCQCkAwEFA3docgIKIGF2YWlsYWJsZQkAlgoECQBkAgUBaQABCQDNCAIIBQNhY2MCXzIJAKQDAQkAZAIFA3docgUCYW0JAM0IAggFA2FjYwJfMwkApAMBCQBlAgUDYnByBQJhbQkAZAIIBQNhY2MCXzQFAmFtBAFyCgACJGwFCHJlc1BhcnRzCgACJHMJAJADAQUCJGwKAAUkYWNjMAkAlgoEAAAFA25pbAUDbmlsAAAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBA212UgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNgkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgoBA212TQIDYWNjBGl0ZW0EAWkIBQNhY2MCXzEEAmFtCQENcGFyc2VJbnRWYWx1ZQEFBGl0ZW0EA3dobQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCWN1cnJXaE1hdAUBaQQDYnBtCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUOY3VycmVudFBhY2tNYXQFAWkDCQAAAgUCYW0AAAkAlgoECQBkAgUBaQABCQDNCAIIBQNhY2MCXzIJAJEDAgUJY3VycldoTWF0BQFpCQDNCAIIBQNhY2MCXzMJAJEDAgUOY3VycmVudFBhY2tNYXQFAWkIBQNhY2MCXzQDCQBmAgUCYW0AAAMJAGYCBQJhbQUDYnBtCQACAQkArAICCQCsAgIJAKwCAgkArAICAhBBdHRlbXB0IHRvIHRha2UgBQRpdGVtAhkgZnJvbSBiYWNrcGFjaywgYnV0IG9ubHkgCQCkAwEFA2JwbQIKIGF2YWlsYWJsZQkAlgoECQBkAgUBaQABCQDNCAIIBQNhY2MCXzIJAKQDAQkAZAIFA3dobQUCYW0JAM0IAggFA2FjYwJfMwkApAMBCQBlAgUDYnBtBQJhbQkAZAIIBQNhY2MCXzQFAmFtAwkAZgIJAQEtAQUCYW0FA3dobQkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgIQQXR0ZW1wdCB0byB0YWtlIAkApAMBCQEBLQEFAmFtAhogZnJvbSB3YXJlaG91c2UsIGJ1dCBvbmx5IAkApAMBBQN3aG0CCiBhdmFpbGFibGUJAJYKBAkAZAIFAWkAAQkAzQgCCAUDYWNjAl8yCQCkAwEJAGQCBQN3aG0FAmFtCQDNCAIIBQNhY2MCXzMJAKQDAQkAZQIFA2JwbQUCYW0JAGQCCAUDYWNjAl80BQJhbQQBbQoAAiRsBQhtYXRQYXJ0cwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJYKBAAABQNuaWwFA25pbAgFAXICXzQKAQUkZjFfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBA212TQIFAiRhCQCRAwIFAiRsBQIk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ACcAKAApACoAKwAsAC0ALgAvADAAMQAyCQCWCgQAAAUKY3VycldoUHJvZAUPY3VycmVudFBhY2tQcm9kCAUBbQJfNAQIdm9sU2FsZG8IBQFwAl80AwkAZgIFCHZvbFNhbGRvBQt3aFNwYWNlTGVmdAkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgIVQXR0ZW1wdCB0byBwdXQgdG90YWwgCQCkAwEFCHZvbFNhbGRvAhEgc3R1ZmYsIGJ1dCBvbmx5IAkApAMBBQt3aFNwYWNlTGVmdAIVIHdhcmVob3VzZSBzcGFjZSBsZWZ0CQCZCgcJALkJAggFAXICXzICAV8JALkJAggFAW0CXzICAV8JALoJAggFAXACXzICAV8JALkJAggFAXICXzMCAV8JALkJAggFAW0CXzMCAV8JALoJAggFAXACXzMCAV8FCHZvbFNhbGRvARJleHBlZGl0aW9uSW50ZXJuYWwCBmNhbGxlcgR0eElkBAh1c2VyQWRkcgkApQgBBQZjYWxsZXIEBmJpZ051bQkBA2FicwEJAJ4DAQUEdHhJZAQHZnJlZU51bQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQESa2V5TmV4dEZyZWVMYW5kTnVtAAkAZAIFD1BSRVNBTEVOVU1MQU5EUwABBAdsYW5kTnVtCQCkAwEFB2ZyZWVOdW0EDGNvbnRpbmVudElkeAkAoAMBCQC7AgIFBmJpZ051bQUFRklWRVgECHRlcnJhaW5zCQELZ2VuVGVycmFpbnMCBQZiaWdOdW0FDGNvbnRpbmVudElkeAQJY29udGluZW50CQCRAwIFCmNvbnRpbmVudHMFDGNvbnRpbmVudElkeAQFaXNzdWUJAMIIBQkBB25mdE5hbWUCBQdsYW5kTnVtAgFTCQC5CQIJAMwIAgUHbGFuZE51bQkAzAgCAgFTCQDMCAIFCHRlcnJhaW5zCQDMCAIFCWNvbnRpbmVudAUDbmlsAgFfAAEAAAcEB2Fzc2V0SWQJALgIAQUFaXNzdWUEAmlkCQDYBAEFB2Fzc2V0SWQJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBEmtleU5leHRGcmVlTGFuZE51bQAJAGQCBQdmcmVlTnVtAAEJAMwIAgUFaXNzdWUJAMwIAgkBC1N0cmluZ0VudHJ5AgkBEGtleUxhbmRUb0Fzc2V0SWQBBQdsYW5kTnVtBQJpZAkAzAgCCQELU3RyaW5nRW50cnkCCQEVa2V5TGFuZEFzc2V0SWRUb093bmVyAQUCaWQFCHVzZXJBZGRyCQDMCAIJAQtTdHJpbmdFbnRyeQIJARFrZXlMYW5kTnVtVG9Pd25lcgEFB2xhbmROdW0FCHVzZXJBZGRyCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEWa2V5SW5mcmFMZXZlbEJ5QXNzZXRJZAEFAmlkAAAJAMwIAgkBDEludGVnZXJFbnRyeQIJAR5rZXlJbmZyYUxldmVsQnlBc3NldElkQW5kT3duZXICBQJpZAUIdXNlckFkZHIAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQZjYWxsZXIAAQUHYXNzZXRJZAUDbmlsCQCUCgIFAmlkBQljb250aW5lbnQBDGZsaWdodENvbW1vbgMIdXNlckFkZHIHbWVzc2FnZQNzaWcDCQEBIQEJAMQTAwUHbWVzc2FnZQUDc2lnBQNwdWIJAAIBAhhzaWduYXR1cmUgZG9lcyBub3QgbWF0Y2gEBXBhcnRzCQC8CQIJALAJAQUHbWVzc2FnZQIBOwQJZmxpZ2h0TG9nCQC8CQIJAJEDAgUFcGFydHMAAAIBfAQCaHAJALUJAgkAkQMCBQlmbGlnaHRMb2cFCGZsSGVhbHRoAgFfBAVjdXJIUAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmhwAAAEBW5ld0hQCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCaHAAAQQLbmV3TG9jVHhWZXIJALUJAgkAkQMCBQVwYXJ0cwABAgE6BAtuZXdMb2NhdGlvbgkAkQMCBQtuZXdMb2NUeFZlcgAABAR0aW1lCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUJZmxpZ2h0TG9nBQtmbFRpbWVzdGFtcAMDCQBmAgUEdGltZQkAZAIIBQlsYXN0QmxvY2sJdGltZXN0YW1wBRFGSVZFTUlOVVRFU01JTExJUwYJAGYCCQBlAggFCWxhc3RCbG9jawl0aW1lc3RhbXAFEUZJVkVNSU5VVEVTTUlMTElTBQR0aW1lCQACAQkArAICCQCsAgIJAKwCAgIcc2lnbmF0dXJlIG91dGRhdGVkOiBsb2dUaW1lPQkApAMBBQR0aW1lAgksIGJjVGltZT0JAKQDAQgFCWxhc3RCbG9jawl0aW1lc3RhbXAECXR4RnJvbU1zZwkAkQMCBQtuZXdMb2NUeFZlcgABBAZsYXN0VHgJAQt2YWx1ZU9yRWxzZQIJAKIIAQkBEWtleUxhc3RUeElkQnlVc2VyAQUIdXNlckFkZHICAAMJAQIhPQIFBmxhc3RUeAUJdHhGcm9tTXNnCQACAQkArAICCQCsAgIJAKwCAgIeVHggaWRzIGRvbid0IG1hdGNoISBJbiBzdGF0ZTogBQZsYXN0VHgCCiwgaW4gbXNnOiAFCXR4RnJvbU1zZwQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQh1c2VyQWRkcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAQJa2V5SGVhbHRoCQENa2V5RHVja0hlYWx0aAEFC2R1Y2tBc3NldElkBAVtYXhIUAkBCW1heEhlYWx0aAEJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBDGtleUR1Y2tMZXZlbAEFC2R1Y2tBc3NldElkAAAEDG9sZEZyb21TdGF0ZQkBC3ZhbHVlT3JFbHNlAgkAnwgBBQlrZXlIZWFsdGgFBW1heEhQAwkBAiE9AgUMb2xkRnJvbVN0YXRlBQVjdXJIUAkAAgEJAKwCAgkArAICCQCsAgICCm9sZEhlYWx0aD0JAKQDAQUMb2xkRnJvbVN0YXRlAi8gZnJvbSBzdGF0ZSBkb2VzIG5vdCBtYXRjaCBvbmUgZnJvbSBmbGlnaHQgbG9nPQkApAMBBQVjdXJIUAMJAGcCAAAFBWN1ckhQCQACAQIeWW91IGNhbid0IGZseSB3aXRoIHplcm8gaGVhbHRoAwkBASEBCQEXY2FuV2VhckN1cnJlbnRFcXVpcG1lbnQBBQtkdWNrQXNzZXRJZAkAAgECFkVxdWlwbWVudCBpbmNvbXBhdGlibGUEBWJvbnVzAwkAZgIJAJADAQUJZmxpZ2h0TG9nBQdmbEJvbnVzCQCRAwIFCWZsaWdodExvZwUHZmxCb251cwIABAhwcm9kVXNlZAMJAGYCCQCQAwEFCWZsaWdodExvZwULZmxQcm9kc1VzZWQJAJEDAgUJZmxpZ2h0TG9nBQtmbFByb2RzVXNlZAIABApzZW50QW1vdW50AwMJAGYCBQVuZXdIUAAACQAAAgUFYm9udXMCASQHCQEFYXNJbnQBCQD8BwQFDHJlc3RDb250cmFjdAINc2VuZFVzZHRQcml6ZQkAzAgCBQh1c2VyQWRkcgUDbmlsBQNuaWwAAAkAlwoFBQVuZXdIUAULZHVja0Fzc2V0SWQFCnNlbnRBbW91bnQFC25ld0xvY2F0aW9uBQhwcm9kVXNlZAEMYXBwbHlCb251c2VzAgtsYW5kQXNzZXRJZAZwaWVjZXMECmluZnJhTGV2ZWwJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBFmtleUluZnJhTGV2ZWxCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAAABAlhcnRQaWVjZXMJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBIGtleUxhbmRBcnRTdGF0dXNCeVR5cGVBbmRBc3NldElkAgUKQVJUUFJFU0FMRQULbGFuZEFzc2V0SWQAAAQEYWRkNgkAaQIFCmluZnJhTGV2ZWwABgQEYWRkNwkAaQIFCmluZnJhTGV2ZWwABwkAZAIJAGQCBQ9EQUlMWVJFU0JZUElFQ0UJAGsDBQ9EQUlMWVJFU0JZUElFQ0UJAGQCCQBkAgUKaW5mcmFMZXZlbAUEYWRkNgkAaAIAAgUEYWRkNwAFCQBrAwUPREFJTFlSRVNCWVBJRUNFBQlhcnRQaWVjZXMJAGgCBQZwaWVjZXMABQEUY2hlY2tDbGFpbUNvbmRpdGlvbnMDBGFkZHIJY2xhaW1Nb2RlDWxhbmRBc3NldElkSW4EDSR0MDMzNzM4MzQyNzcDCQAAAgUJY2xhaW1Nb2RlBQtjbGFpbU1vZGVXaAkAlAoCBQ1sYW5kQXNzZXRJZEluCQELdmFsdWVPckVsc2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFBGFkZHICAAQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQRhZGRyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkBAtjdXJMb2NhdGlvbgkBC3ZhbHVlT3JFbHNlAgkAoggBCQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQFD0RFRkFVTFRMT0NBVElPTgQDbG9jCQC1CQIJAQV2YWx1ZQEFC2N1ckxvY2F0aW9uAgFfAwkBAiE9AgkAkQMCBQNsb2MFCmxvY0lkeFR5cGUCAUwJAAIBCQCsAgIJAKwCAgIWRHVjayBsb2NhdGlvbiB0eXBlIGlzIAkAkQMCBQNsb2MFCmxvY0lkeFR5cGUCESwgYnV0IHNob3VsZCBiZSBMCQCUCgIJAJEDAgUDbG9jBQhsb2NJZHhJZAULZHVja0Fzc2V0SWQEC2xhbmRBc3NldElkCAUNJHQwMzM3MzgzNDI3NwJfMQQGZHVja0lkCAUNJHQwMzM3MzgzNDI3NwJfMgQFYXNzZXQJAQV2YWx1ZQEJAOwHAQkA2QQBBQtsYW5kQXNzZXRJZAQHdGltZUtleQkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAQJc2F2ZWRUaW1lCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ8IAQUHdGltZUtleQkArAICCQCsAgICBUxhbmQgCAUFYXNzZXQEbmFtZQIOIGlzIG5vdCBzdGFrZWQEBW93bmVyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFWtleUxhbmRBc3NldElkVG9Pd25lcgEFC2xhbmRBc3NldElkCQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCDCBpcyBvcnBoYW5lZAMJAQIhPQIFBW93bmVyBQRhZGRyCQACAQkArAICBQpMQU5EUFJFRklYAg0gaXMgbm90IHlvdXJzBAFkCQC1CQIIBQVhc3NldAtkZXNjcmlwdGlvbgIBXwkAlgoEBQZkdWNrSWQFC2xhbmRBc3NldElkBQFkBQlzYXZlZFRpbWUBEGNsYWltUmVzSW50ZXJuYWwEBGFkZHIGYW1vdW50CWNsYWltTW9kZQ1sYW5kQXNzZXRJZEluAwkAZgIAAAUGYW1vdW50CQACAQIPTmVnYXRpdmUgYW1vdW50BAFjCQEUY2hlY2tDbGFpbUNvbmRpdGlvbnMDBQRhZGRyBQljbGFpbU1vZGUFDWxhbmRBc3NldElkSW4ECGxhbmRTaXplCQCRAwIIBQFjAl8zBQtyZWNMYW5kU2l6ZQQNdGVycmFpbkNvdW50cwkBDWNvdW50VGVycmFpbnMBCQCRAwIIBQFjAl8zBQtyZWNUZXJyYWlucwQJZGVsdGFUaW1lCQBlAggFCWxhc3RCbG9jawl0aW1lc3RhbXAIBQFjAl80AwkAZgIAAAUJZGVsdGFUaW1lCQACAQkArAICCQCsAgIJAKwCAgImU2F2ZWQgdGltZXN0YW1wIGlzIGluIGZ1dHVyZSwgc2F2ZWQgPSAJAKQDAQgFAWMCXzQCDCwgY3VycmVudCA9IAkApAMBCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQGcGllY2VzCQEPbnVtUGllY2VzQnlTaXplAQUIbGFuZFNpemUEFmRhaWx5UHJvZHVjdGlvbkJ5UGllY2UJAQxhcHBseUJvbnVzZXMCCAUBYwJfMgUGcGllY2VzBAhhdmFpbFJlcwkAawMFCWRlbHRhVGltZQkAaAIFFmRhaWx5UHJvZHVjdGlvbkJ5UGllY2UFBnBpZWNlcwUJREFZTUlMTElTAwkAZgIFBmFtb3VudAUIYXZhaWxSZXMJAAIBCQCsAgIJAKwCAgkArAICAiJOb3QgZW5vdWdoIHJlc291cmNlcywgYXZhaWxhYmxlID0gCQCkAwEFCGF2YWlsUmVzAg4sIHJlcXVlc3RlZCA9IAkApAMBBQZhbW91bnQEDG5ld0RlbHRhVGltZQkAawMJAGUCBQhhdmFpbFJlcwUGYW1vdW50BQlEQVlNSUxMSVMJAGgCBRZkYWlseVByb2R1Y3Rpb25CeVBpZWNlBQZwaWVjZXMEDG5ld1RpbWVzdGFtcAkAZQIIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQxuZXdEZWx0YVRpbWUECWxhbmRJbmRleAkAaQIFBnBpZWNlcwUFU1NJWkUECnJlc1RvQ2xhaW0JAQl2aXJ0Q2xhaW0EBQ10ZXJyYWluQ291bnRzCQBlAgUJZGVsdGFUaW1lBQxuZXdEZWx0YVRpbWUFCWxhbmRJbmRleAUWZGFpbHlQcm9kdWN0aW9uQnlQaWVjZQQFd2hLZXkJARJrZXlXYXJlaG91c2VCeUxhbmQBCAUBYwJfMgQKaW5mcmFMZXZlbAkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEWa2V5SW5mcmFMZXZlbEJ5QXNzZXRJZAEIBQFjAl8yAAAECWN1cnJlbnRXaAkBDGdldFdhcmVob3VzZQMFBXdoS2V5BQlsYW5kSW5kZXgFCmluZnJhTGV2ZWwEBGxvZnQJALUJAgkAkQMCBQljdXJyZW50V2gFCXdoSWR4TE9GVAIBXwQLd2hTcGFjZUxlZnQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQd2b2xGcmVlAwMJAAACBQljbGFpbU1vZGUFC2NsYWltTW9kZVdoCQBmAgUGYW1vdW50BQt3aFNwYWNlTGVmdAcJAAIBCQCsAgIJAKwCAgIFT25seSAJAKQDAQULd2hTcGFjZUxlZnQCGCBzcGFjZSBsZWZ0IGluIHdhcmVob3VzZQQFYnBLZXkJARFrZXlCYWNrcGFja0J5RHVjawEIBQFjAl8xBAtjdXJyZW50UGFjawkBC2dldEJhY2twYWNrAQUFYnBLZXkEDmN1cnJlbnRQYWNrUmVzCQC1CQIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4UmVzAgFfBAxjdXJyZW50V2hSZXMJALUJAgkAkQMCBQljdXJyZW50V2gFCHdoSWR4UmVzAgFfBA0kdDAzNjY1MTM3NTIyAwkAAAIFCWNsYWltTW9kZQULY2xhaW1Nb2RlV2gJAJYKBAkBBmFkZFJlcwUFDGN1cnJlbnRXaFJlcwUNdGVycmFpbkNvdW50cwkAZQIFCWRlbHRhVGltZQUMbmV3RGVsdGFUaW1lBQlsYW5kSW5kZXgFFmRhaWx5UHJvZHVjdGlvbkJ5UGllY2UJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4UmVzCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFC3ZvbE9jY3VwaWVkCAUKcmVzVG9DbGFpbQJfMgkAZQIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQd2b2xGcmVlCAUKcmVzVG9DbGFpbQJfMgMJAAACBQljbGFpbU1vZGUFDWNsYWltTW9kZUR1Y2sJAJYKBAkAkQMCBQljdXJyZW50V2gFCHdoSWR4UmVzCQEGYWRkUmVzBQUOY3VycmVudFBhY2tSZXMFDXRlcnJhaW5Db3VudHMJAGUCBQlkZWx0YVRpbWUFDG5ld0RlbHRhVGltZQUJbGFuZEluZGV4BRZkYWlseVByb2R1Y3Rpb25CeVBpZWNlCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEbG9mdAULdm9sT2NjdXBpZWQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQd2b2xGcmVlBAVkaXN0cgkBDWRpc3RyaWJ1dGVSZXMEBQxjdXJyZW50V2hSZXMFDmN1cnJlbnRQYWNrUmVzBQpyZXNUb0NsYWltBQt3aFNwYWNlTGVmdAQEd2hBbQkAlwMBCQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQd2b2xGcmVlCQDMCAIIBQpyZXNUb0NsYWltAl8yBQNuaWwJAJYKBAgFBWRpc3RyAl8xCAUFZGlzdHICXzIJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEbG9mdAULdm9sT2NjdXBpZWQFBHdoQW0JAGUCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEbG9mdAUHdm9sRnJlZQUEd2hBbQQFd2hSZXMIBQ0kdDAzNjY1MTM3NTIyAl8xBAVicFJlcwgFDSR0MDM2NjUxMzc1MjICXzIEBWxvZnRPCAUNJHQwMzY2NTEzNzUyMgJfMwQFbG9mdEYIBQ0kdDAzNjY1MTM3NTIyAl80CQCXCgUJAMwIAgkBDEludGVnZXJFbnRyeQIJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQgFAWMCXzIFDG5ld1RpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBImtleVN0YWtlZFRpbWVCeVR5cGVBc3NldElkQW5kT3duZXIDBQpMQU5EUFJFRklYCAUBYwJfMgUEYWRkcgUMbmV3VGltZXN0YW1wBQNuaWwFBWJwS2V5CQDMCAIJAJEDAgULY3VycmVudFBhY2sFCmJwSWR4TGV2ZWwJAMwIAgUFYnBSZXMJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhNYXQJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kBQNuaWwFBXdoS2V5CQDMCAIJAJEDAgUJY3VycmVudFdoBQt3aElkeExldmVscwkAzAgCBQV3aFJlcwkAzAgCCQCRAwIFCWN1cnJlbnRXaAUId2hJZHhNYXQJAMwIAgkAkQMCBQljdXJyZW50V2gFCXdoSWR4UHJvZAkAzAgCCQC5CQIJAMwIAgkAkQMCBQRsb2Z0BQl2b2xMb2NrZWQJAMwIAgkApAMBBQVsb2Z0TwkAzAgCCQCkAwEFBWxvZnRGCQDMCAIJAJEDAgUEbG9mdAUIdm9sVG90YWwFA25pbAIBXwUDbmlsAQhjbGFpbUFsbAQEYWRkcgtsYW5kQXNzZXRJZAZwaWVjZXMJY2xhaW1Nb2RlBAd0aW1lS2V5CQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFC2xhbmRBc3NldElkBAlzYXZlZFRpbWUJAQV2YWx1ZQEJAJ8IAQUHdGltZUtleQQIYXZhaWxSZXMJAGgCCQBrAwkAZQIIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQlzYXZlZFRpbWUJAQxhcHBseUJvbnVzZXMCBQtsYW5kQXNzZXRJZAUGcGllY2VzBQlEQVlNSUxMSVMFBnBpZWNlcwkBEGNsYWltUmVzSW50ZXJuYWwEBQRhZGRyBQhhdmFpbFJlcwUJY2xhaW1Nb2RlBQtsYW5kQXNzZXRJZAENdXBJbmZyYUNvbW1vbgQMc2hvdWxkVXNlTWF0BmNhbGxlcg1wYXltZW50QW1vdW50C2xhbmRBc3NldElkBARhZGRyCQClCAEFBmNhbGxlcgQBYwkBFGNoZWNrQ2xhaW1Db25kaXRpb25zAwUEYWRkcgUTY2xhaW1Nb2RlV2hUaGVuRHVjawULbGFuZEFzc2V0SWQEBnBpZWNlcwkBD251bVBpZWNlc0J5U2l6ZQEJAJEDAggFAWMCXzMFC3JlY0xhbmRTaXplBAhpbmZyYUtleQkBFmtleUluZnJhTGV2ZWxCeUFzc2V0SWQBCAUBYwJfMgQIY3VyTGV2ZWwJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUIaW5mcmFLZXkAAAMDCQEBIQEFGEtTX0FMTE9XX0JJR19JTkZSQV9NRVJHRQkAZwIFCGN1ckxldmVsAAMHCQACAQImQ3VycmVudGx5IG1heCBpbmZyYXN0cnVjdHVyZSBsZXZlbCA9IDMECG1heEluZnJhCQBkAgkAaQIJAQRzcXJ0BAUGcGllY2VzAAAAAAUERE9XTgAFAAIECG5ld0xldmVsCQBkAgUIY3VyTGV2ZWwAAQMDBRhLU19BTExPV19CSUdfSU5GUkFfTUVSR0UJAGYCBQhuZXdMZXZlbAUIbWF4SW5mcmEHCQACAQkArAICAiVDdXJyZW50bHkgbWF4IGluZnJhc3RydWN0dXJlIGxldmVsID0gCQCkAwEFCG1heEluZnJhBARjb3N0CQBrAwUVSW5mcmFVcGdyYWRlQ29zdFNVc2R0CQBoAgUGcGllY2VzBQhuZXdMZXZlbAUFU1NJWkUDAwkBASEBBQxzaG91bGRVc2VNYXQJAQIhPQIFDXBheW1lbnRBbW91bnQFBGNvc3QHCQACAQkArAICAhtQYXltZW50IGF0dGFjaGVkIHNob3VsZCBiZSAJAKQDAQUEY29zdAQFYnBLZXkJARFrZXlCYWNrcGFja0J5RHVjawEIBQFjAl8xBAtjdXJyZW50UGFjawkBC2dldEJhY2twYWNrAQUFYnBLZXkEBW1MaXN0CQC1CQIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4TWF0AgFfBAdtYXRVc2VkCQBrAwURSW5mcmFVcGdyYWRlQ29zdFMJAGgCBQZwaWVjZXMFCG5ld0xldmVsBQVTU0laRQQGbmV3TWF0CQC5CQIJARFzdWJ0cmFjdE1hdGVyaWFscwMFDHNob3VsZFVzZU1hdAUFbUxpc3QFB21hdFVzZWQCAV8EC2NsYWltUmVzdWx0CQEIY2xhaW1BbGwEBQRhZGRyCAUBYwJfMgUGcGllY2VzBRNjbGFpbU1vZGVXaFRoZW5EdWNrBAZ3aERhdGEIBQtjbGFpbVJlc3VsdAJfNQQGb2xkVm9sCQEXZ2V0V2FyZWhvdXNlVG90YWxWb2x1bWUBCQCRAwIFBndoRGF0YQULd2hJZHhMZXZlbHMECm5ld1ZvbERhdGEJALkJAgkAzAgCCQCRAwIJALUJAgkAkQMCBQZ3aERhdGEFC3doSWR4TGV2ZWxzAgFfAAAJAMwIAgkApAMBBQhuZXdMZXZlbAUDbmlsAgFfBAZuZXdWb2wJARdnZXRXYXJlaG91c2VUb3RhbFZvbHVtZQEFCm5ld1ZvbERhdGEEBGxvZnQJALUJAgkAkQMCBQZ3aERhdGEFCXdoSWR4TE9GVAIBXwQKbmV3TG9mdFN0cgkAuQkCCQDMCAIJAJEDAgUEbG9mdAUJdm9sTG9ja2VkCQDMCAIJAJEDAgUEbG9mdAULdm9sT2NjdXBpZWQJAMwIAgkApAMBCQBlAgkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQd2b2xGcmVlBQZuZXdWb2wFBm9sZFZvbAkAzAgCCQCkAwEFBm5ld1ZvbAUDbmlsAgFfCQCVCgMJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUIaW5mcmFLZXkFCG5ld0xldmVsCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEea2V5SW5mcmFMZXZlbEJ5QXNzZXRJZEFuZE93bmVyAggFAWMCXzIFBGFkZHIFCG5ld0xldmVsCQDMCAIJAQtTdHJpbmdFbnRyeQIFBWJwS2V5CQC5CQIJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUKYnBJZHhMZXZlbAkAzAgCCQCRAwIIBQtjbGFpbVJlc3VsdAJfMwUIYnBJZHhSZXMJAMwIAgUGbmV3TWF0CQDMCAIJAJEDAgULY3VycmVudFBhY2sFCWJwSWR4UHJvZAUDbmlsAgE6CQDMCAIJAQtTdHJpbmdFbnRyeQIIBQtjbGFpbVJlc3VsdAJfNAkAuQkCCQDMCAIFCm5ld1ZvbERhdGEJAMwIAgkAkQMCBQZ3aERhdGEFCHdoSWR4UmVzCQDMCAIJAJEDAgUGd2hEYXRhBQh3aElkeE1hdAkAzAgCCQCRAwIFBndoRGF0YQUJd2hJZHhQcm9kCQDMCAIFCm5ld0xvZnRTdHIFA25pbAIBOgUDbmlsCAULY2xhaW1SZXN1bHQCXzEFCG5ld0xldmVsBQdtYXRVc2VkARN1cGRhdGVTdGF0c0ludGVybmFsBAZsdmxLZXkFeHBLZXkJcG9pbnRzS2V5B2RlbHRhWFAEAnhwCQELdmFsdWVPckVsc2UCCQCfCAEFBXhwS2V5AAAEBW5ld1hQCQBkAgUCeHAFB2RlbHRhWFAECWx2bFBvaW50cwkBB2xldmVsVXACCQELdmFsdWVPckVsc2UCCQCfCAEFBmx2bEtleQAABQVuZXdYUAkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQZsdmxLZXkJAJEDAgUJbHZsUG9pbnRzAAAJAMwIAgkBDEludGVnZXJFbnRyeQIFBXhwS2V5BQVuZXdYUAkAzAgCCQEMSW50ZWdlckVudHJ5AgUJcG9pbnRzS2V5CQBkAgkBC3ZhbHVlT3JFbHNlAgkAnwgBBQlwb2ludHNLZXkAAAkAkQMCBQlsdmxQb2ludHMAAQUDbmlsBQVuZXdYUAEXdXBkYXRlRHVja1N0YXRzSW50ZXJuYWwCC2R1Y2tBc3NldElkB2RlbHRhWFAJARN1cGRhdGVTdGF0c0ludGVybmFsBAkBDGtleUR1Y2tMZXZlbAEFC2R1Y2tBc3NldElkCQEJa2V5RHVja1hQAQULZHVja0Fzc2V0SWQJARFrZXlEdWNrRnJlZVBvaW50cwEFC2R1Y2tBc3NldElkBQdkZWx0YVhQARZ1cGRhdGVBY2NTdGF0c0ludGVybmFsAgRhZGRyB2RlbHRhWFAJARN1cGRhdGVTdGF0c0ludGVybmFsBAkBDGtleVVzZXJMZXZlbAEFBGFkZHIJAQlrZXlVc2VyWFABBQRhZGRyCQERa2V5VXNlckZyZWVQb2ludHMBBQRhZGRyBQdkZWx0YVhQARJhY3RpdmF0ZU9uYm9hcmRBcnQBBGFkZHIEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUEYWRkcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAQIcmVmQnlLZXkJAQ9rZXlBZGRyZXNzUmVmQnkBBQRhZGRyBAVyZWZCeQkAoggBBQhyZWZCeUtleQMJAQEhAQkBCWlzRGVmaW5lZAEFBXJlZkJ5CQACAQIpWW91IGFyZSBub3QgZWxpZ2libGUgZm9yIE9OQk9BUkQgYXJ0aWZhY3QEBmFydEtleQkBHGtleU9uYm9hcmRBcnREdWNrQWN0aXZhdGVkQnkBBQRhZGRyBAdhcnREdWNrCQCiCAEFBmFydEtleQMJAQlpc0RlZmluZWQBBQdhcnREdWNrCQACAQkArAICAi9Zb3UgYWxyZWFkeSB1c2VkIHlvdXIgT05CT0FSRCBhcnRpZmFjdCBvbiBkdWNrIAkBBXZhbHVlAQUHYXJ0RHVjawQQZHVja0FjdGl2YXRvcktleQkBHGtleU9uYm9hcmRBcnRBY3RpdmF0ZWRPbkR1Y2sBBQtkdWNrQXNzZXRJZAQNZHVja0FjdGl2YXRvcgkAoggBBRBkdWNrQWN0aXZhdG9yS2V5AwkBCWlzRGVmaW5lZAEFDWR1Y2tBY3RpdmF0b3IJAAIBCQCsAgIJAKwCAgkArAICAglUaGUgZHVjayAFC2R1Y2tBc3NldElkAjQgYWxyZWFkeSBnb3QgcG9pbnRzIGZyb20gT05CT0FSRCBhcnRpZmFjdCBmcm9tIHVzZXIgCQEFdmFsdWUBBQ1kdWNrQWN0aXZhdG9yCQDOCAIJAMwIAgkBC1N0cmluZ0VudHJ5AgUGYXJ0S2V5BQtkdWNrQXNzZXRJZAkAzAgCCQELU3RyaW5nRW50cnkCBRBkdWNrQWN0aXZhdG9yS2V5BQRhZGRyBQNuaWwICQEXdXBkYXRlRHVja1N0YXRzSW50ZXJuYWwCBQtkdWNrQXNzZXRJZAUJeHBPbmJvYXJkAl8xARJhY3RpdmF0ZVByZXNhbGVBcnQCBGFkZHINbGFuZEFzc2V0SWRJbgQBYwkBFGNoZWNrQ2xhaW1Db25kaXRpb25zAwUEYWRkcgUTY2xhaW1Nb2RlV2hUaGVuRHVjawUNbGFuZEFzc2V0SWRJbgQLbGFuZEFzc2V0SWQIBQFjAl8yBAZwaWVjZXMJAQ9udW1QaWVjZXNCeVNpemUBCQCRAwIIBQFjAl8zBQtyZWNMYW5kU2l6ZQQNYWN0aXZhdGlvbktleQkBIGtleUxhbmRBcnRTdGF0dXNCeVR5cGVBbmRBc3NldElkAgUKQVJUUFJFU0FMRQULbGFuZEFzc2V0SWQDCQBmAgkBC3ZhbHVlT3JFbHNlAgkAnwgBBQ1hY3RpdmF0aW9uS2V5AAAAAAkAAgECJVByZXNhbGUgYXJ0aWZhY3QgaXMgYWxyZWFkeSBhY3RpdmF0ZWQDCQBmAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIIBQFjAl8zBQpyZWNMYW5kTnVtBQ9QUkVTQUxFTlVNTEFORFMJAAIBCQCsAgIJAKwCAgkArAICBQpMQU5EUFJFRklYAgEgBQtsYW5kQXNzZXRJZAIlIGlzIG5vdCBlbGlnaWJsZSBmb3IgcHJlc2FsZSBhcnRpZmFjdAQLY2xhaW1SZXN1bHQJAQhjbGFpbUFsbAQFBGFkZHIFC2xhbmRBc3NldElkBQZwaWVjZXMFE2NsYWltTW9kZVdoVGhlbkR1Y2sJAM0IAgkAzQgCCQDNCAIIBQtjbGFpbVJlc3VsdAJfMQkBDEludGVnZXJFbnRyeQIFDWFjdGl2YXRpb25LZXkFBnBpZWNlcwkBC1N0cmluZ0VudHJ5AggFC2NsYWltUmVzdWx0Al8yCQC5CQIIBQtjbGFpbVJlc3VsdAJfMwIBOgkBC1N0cmluZ0VudHJ5AggFC2NsYWltUmVzdWx0Al80CQC5CQIIBQtjbGFpbVJlc3VsdAJfNQIBOgEPY2hlY2tUb3VybmFtZW50AQtkdWNrQXNzZXRJZAQGbGFzdElkCQELdmFsdWVPckVsc2UCCQCaCAIFEnRvdXJuYW1lbnRDb250cmFjdAUNbGFzdFRvdXJJZEtleQAABAtjdXJMb2NhdGlvbgkAtQkCCQELdmFsdWVPckVsc2UCCQCiCAEJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAUPREVGQVVMVExPQ0FUSU9OAgFfBANub3cIBQlsYXN0QmxvY2sJdGltZXN0YW1wBAV0RGF0YQkBC2dldFRvdXJEYXRhAgUSdG91cm5hbWVudENvbnRyYWN0BQZsYXN0SWQEBnN0YXRpYwkAkQMCBQV0RGF0YQUJaWR4U3RhdGljBAdkeW5hbWljCQCRAwIFBXREYXRhBQppZHhEeW5hbWljAwkBAiE9AgkAkQMCBQtjdXJMb2NhdGlvbgUKbG9jSWR4VHlwZQIBVAcDAwMJAAACCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgULY3VyTG9jYXRpb24FD2xvY0lkeENvbnRpbmVudAUGbGFzdElkCQAAAgkAkQMCBQdkeW5hbWljBQ50RHluYW1pY1N0YXR1cwIKSU5QUk9HUkVTUwcJAGYCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUGc3RhdGljBQp0U3RhdGljRW5kBQNub3cHCQACAQIqWW91ciBkdWNrIGlzIHRha2luZyBwYXJ0IGluIHRoZSB0b3VybmFtZW50CQEJYXNCb29sZWFuAQkA/AcEBQR0aGlzAhZleGl0VG91cm5hbWVudEludGVybmFsCQDMCAIFC2R1Y2tBc3NldElkBQNuaWwFA25pbAENY2hlY2tEZWxpdmVyeQELZHVja0Fzc2V0SWQEC2N1ckxvY2F0aW9uCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAKIIAQkBD2tleUR1Y2tMb2NhdGlvbgEFC2R1Y2tBc3NldElkBQ9ERUZBVUxUTE9DQVRJT04CAV8EA25vdwgFCWxhc3RCbG9jawl0aW1lc3RhbXADCQECIT0CCQCRAwIFC2N1ckxvY2F0aW9uBQpsb2NJZHhUeXBlAgFEBwQJc3RhcnRUaW1lCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgULY3VyTG9jYXRpb24FD2xvY0lkeENvbnRpbmVudAQIZGlzdGFuY2UJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQtjdXJMb2NhdGlvbgUIbG9jSWR4SWQDAwkAZgIJAGQCBQlzdGFydFRpbWUFElRFTl9NSU5VVEVTX01JTExJUwUDbm93CQBmAgABBQhkaXN0YW5jZQcJAAIBAiBZb3VyIGR1Y2sgaXMgb24gZGVsaXZlcnkgbWlzc2lvbgkBCWFzQm9vbGVhbgEJAPwHBAUEdGhpcwIUZXhpdERlbGl2ZXJ5SW50ZXJuYWwJAMwIAgULZHVja0Fzc2V0SWQFA25pbAUDbmlsARJleGl0RGVsaXZlcnlDb21tb24EC2R1Y2tBc3NldElkBWNoZWNrBW5ld0hQBXNjb3JlBAtjdXJMb2NhdGlvbgkAtQkCCQELdmFsdWVPckVsc2UCCQCiCAEJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAUPREVGQVVMVExPQ0FUSU9OAgFfBANub3cIBQlsYXN0QmxvY2sJdGltZXN0YW1wBAlzdGFydFRpbWUJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQtjdXJMb2NhdGlvbgUPbG9jSWR4Q29udGluZW50BAhkaXN0YW5jZQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFC2N1ckxvY2F0aW9uBQhsb2NJZHhJZAQFb3duZXIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEQa2V5RHVja0lkVG9Pd25lcgEFC2R1Y2tBc3NldElkAhRORlQgZHVjayBpcyBvcnBoYW5lZAQJaGVhbHRoS2V5CQENa2V5RHVja0hlYWx0aAEFC2R1Y2tBc3NldElkBAljdXJIZWFsdGgJARFAZXh0ck5hdGl2ZSgxMDU1KQEFCWhlYWx0aEtleQQOb3V0Y29tZUFjdGlvbnMDAwkAZgIFCGRpc3RhbmNlAAAGAwMFBWNoZWNrCQBmAgUFc2NvcmUAAAcJAGYCBQVuZXdIUAAABwQGcmV3YXJkCQD8BwQFD2Vjb25vbXlDb250cmFjdAISc2VuZERlbGl2ZXJ5UmV3YXJkCQDMCAIFBW93bmVyBQNuaWwFA25pbAMJAAACBQZyZXdhcmQFBnJld2FyZAQIY291bnRLZXkJARRrZXlVc2VyRGVsaXZlcnlDb3VudAEFBW93bmVyCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQhjb3VudEtleQkAZAIJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUIY291bnRLZXkAAAABCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEWa2V5VXNlckxhc3REZWxpdmVyeURheQEFBW93bmVyCQBpAgUJc3RhcnRUaW1lBQlEQVlNSUxMSVMFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgMDAwUFY2hlY2sJAGYCBQVuZXdIUAAABwkAZgIJAGQCBQlzdGFydFRpbWUFElRFTl9NSU5VVEVTX01JTExJUwUDbm93BwkAAgECJllvdXIgZHVjayBpcyBzdGlsbCBvbiBkZWxpdmVyeSBtaXNzaW9uBAtsb2NrZWRUb3RhbAkBC3ZhbHVlT3JFbHNlAgkAmggCBQ9lY29ub215Q29udHJhY3QFEWRlbGl2ZXJ5TG9ja2VkS2V5AAAEBnVubG9jawkA/AcEBQ9lY29ub215Q29udHJhY3QCFHVwZGF0ZURlbGl2ZXJ5TG9ja2VkCQDMCAIJAGUCBQtsb2NrZWRUb3RhbAUVTUlOX1VTRFRfRkVFX0RFTElWRVJZBQNuaWwFA25pbAMJAAACBQZ1bmxvY2sFBnVubG9jawMDAwUFY2hlY2sJAGcCAAAFBW5ld0hQBwYJAGcCAAAFCWN1ckhlYWx0aAUDbmlsCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEWa2V5RGVsaXZlcnlEZWxheUJ5RHVjawEFC2R1Y2tBc3NldElkCQBkAgUJc3RhcnRUaW1lBRNERUxJVkVSWV9QVU5JU0hNRU5UBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4EDXNhdmVkTG9jYXRpb24JARFAZXh0ck5hdGl2ZSgxMDU4KQEJARBrZXlTYXZlZExvY2F0aW9uAQULZHVja0Fzc2V0SWQJAJUKAwUOb3V0Y29tZUFjdGlvbnMJAMwIAgkBC1N0cmluZ0VudHJ5AgkBD2tleUR1Y2tMb2NhdGlvbgEFC2R1Y2tBc3NldElkBQ1zYXZlZExvY2F0aW9uBQNuaWwFDXNhdmVkTG9jYXRpb24BDW1lcmdlSW50ZXJuYWwGC25ld0xhbmRTaXplCG5ld0xldmVsB2Zvcm11bGEEYWRkcgxsYW5kQXNzZXRJZHMHbmVlZE1hdAQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQRhZGRyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkAwkBD2NoZWNrVG91cm5hbWVudAEFC2R1Y2tBc3NldElkCQACAQIdbWVyZ2VJbnRlcm5hbF9jaGVja1RvdXJuYW1lbnQDCQENY2hlY2tEZWxpdmVyeQEFC2R1Y2tBc3NldElkCQACAQIbbWVyZ2VJbnRlcm5hbF9jaGVja0RlbGl2ZXJ5CgEKY2hlY2tNZXJnZQIDYWNjC2xhbmRBc3NldElkBAVhc3NldAkBBXZhbHVlAQkA7AcBCQDZBAEFC2xhbmRBc3NldElkBAd0aW1lS2V5CQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFC2xhbmRBc3NldElkBAlzYXZlZFRpbWUJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnwgBBQd0aW1lS2V5CQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCDiBpcyBub3Qgc3Rha2VkBAVvd25lcgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARVrZXlMYW5kQXNzZXRJZFRvT3duZXIBBQtsYW5kQXNzZXRJZAkArAICCQCsAgICBE5GVCAIBQVhc3NldARuYW1lAgwgaXMgb3JwaGFuZWQDCQECIT0CBQVvd25lcgUEYWRkcgkAAgEJAKwCAgUKTEFORFBSRUZJWAINIGlzIG5vdCB5b3VycwQBZAkAtQkCCAUFYXNzZXQLZGVzY3JpcHRpb24CAV8ECWNvbnRpbmVudAkAkQMCBQFkBQxyZWNDb250aW5lbnQDAwkBAiE9AggFA2FjYwJfMwIACQECIT0CCAUDYWNjAl8zBQljb250aW5lbnQHCQACAQIuTGFuZHMgc2hvdWxkIGJlIG9uIHRoZSBzYW1lIGNvbnRpbmVudCB0byBtZXJnZQQIbGFuZFNpemUJAJEDAgUBZAULcmVjTGFuZFNpemUEB3NpemVzSW4IBQNhY2MCXzEEAWkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAswkCBQdzaXplc0luBQhsYW5kU2l6ZQInWW91IGhhdmVuJ3QgcGFzc2VkIGFsbCB0aGUgbGFuZHMgbmVlZGVkBAhzaXplc091dAkArAICCQCvAgIFB3NpemVzSW4FAWkJALACAgUHc2l6ZXNJbgkAZAIFAWkAAQQGcGllY2VzCQEPbnVtUGllY2VzQnlTaXplAQUIbGFuZFNpemUEBGFydHMJAGQCCAUDYWNjAl8yCQELdmFsdWVPckVsc2UCCQCfCAEJASBrZXlMYW5kQXJ0U3RhdHVzQnlUeXBlQW5kQXNzZXRJZAIFCkFSVFBSRVNBTEUFC2xhbmRBc3NldElkAAAECmluZnJhTGV2ZWwJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBFmtleUluZnJhTGV2ZWxCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAAABAhyZXFMZXZlbAQHJG1hdGNoMAUIbGFuZFNpemUDCQAAAgIBUwUHJG1hdGNoMAADAwkAAAICAU0FByRtYXRjaDAABAMJAAACAgFMBQckbWF0Y2gwAAUDCQAAAgICWEwFByRtYXRjaDAABgkAAgECGk9ubHkgUywgTSwgTCwgWEwgY2FuIG1lcmdlAwkBAiE9AgUKaW5mcmFMZXZlbAUIcmVxTGV2ZWwJAAIBAiJBbGwgbGFuZHMgc2hvdWxkIGJlIG1heGVkIHRvIG1lcmdlBAdsYW5kTnVtCQCRAwIFAWQFCnJlY0xhbmROdW0EDXRlcnJhaW5Db3VudHMJAQ1jb3VudFRlcnJhaW5zAQkAkQMCBQFkBQtyZWNUZXJyYWlucwQJZGVsdGFUaW1lCQBlAggFCWxhc3RCbG9jawl0aW1lc3RhbXAFCXNhdmVkVGltZQMJAGYCAAAFCWRlbHRhVGltZQkAAgEJAKwCAgkArAICCQCsAgICJlNhdmVkIHRpbWVzdGFtcCBpcyBpbiBmdXR1cmUsIHNhdmVkID0gCQCkAwEFCXNhdmVkVGltZQIMLCBjdXJyZW50ID0gCQCkAwEIBQlsYXN0QmxvY2sJdGltZXN0YW1wBBZkYWlseVByb2R1Y3Rpb25CeVBpZWNlCQEMYXBwbHlCb251c2VzAgULbGFuZEFzc2V0SWQFBnBpZWNlcwQJbGFuZEluZGV4CQBpAgUGcGllY2VzBQVTU0laRQQFYnBSZXMJAQZhZGRSZXMFCQC1CQIIBQNhY2MCXzQCAV8FDXRlcnJhaW5Db3VudHMFCWRlbHRhVGltZQUJbGFuZEluZGV4BRZkYWlseVByb2R1Y3Rpb25CeVBpZWNlBAVwcm9wcwkBGXVwZGF0ZVByb3BvcnRpb25zSW50ZXJuYWwECAUDYWNjAl82BQ10ZXJyYWluQ291bnRzBQlsYW5kSW5kZXgA////////////AQQGY1Byb3BzCQEZdXBkYXRlUHJvcG9ydGlvbnNJbnRlcm5hbAQIBQNhY2MDXzEwBQ10ZXJyYWluQ291bnRzBQlsYW5kSW5kZXgA////////////AQQLc3VtVGVycmFpbnMJARl1cGRhdGVQcm9wb3J0aW9uc0ludGVybmFsBAgFA2FjYwJfOQUNdGVycmFpbkNvdW50cwUJbGFuZEluZGV4AAEEBWxhbmRzCAUDYWNjAl83BANpZHgJAM8IAgUFbGFuZHMFC2xhbmRBc3NldElkAwkBASEBCQEJaXNEZWZpbmVkAQUDaWR4CQACAQkArAICAiBZb3VyIHN0YWtlZCBsYW5kcyBkb24ndCBjb250YWluIAULbGFuZEFzc2V0SWQECWN1c3RvbUtleQkBGmtleUxhbmRBc3NldElkVG9DdXN0b21OYW1lAQULbGFuZEFzc2V0SWQECmN1c3RvbU5hbWUJAQt2YWx1ZU9yRWxzZQIJAKIIAQUJY3VzdG9tS2V5AgAJAJwKCgUIc2l6ZXNPdXQFBGFydHMFCWNvbnRpbmVudAUFYnBSZXMJAM4IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIIBQNhY2MCXzUJAQtEZWxldGVFbnRyeQEJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQULbGFuZEFzc2V0SWQJAQtEZWxldGVFbnRyeQEJASJrZXlTdGFrZWRUaW1lQnlUeXBlQXNzZXRJZEFuZE93bmVyAwUKTEFORFBSRUZJWAULbGFuZEFzc2V0SWQFBGFkZHIJAQtEZWxldGVFbnRyeQEJARBrZXlMYW5kVG9Bc3NldElkAQUHbGFuZE51bQkBC0RlbGV0ZUVudHJ5AQkBFWtleUxhbmRBc3NldElkVG9Pd25lcgEFC2xhbmRBc3NldElkCQELRGVsZXRlRW50cnkBCQEWa2V5SW5mcmFMZXZlbEJ5QXNzZXRJZAEFC2xhbmRBc3NldElkCQELRGVsZXRlRW50cnkBCQEea2V5SW5mcmFMZXZlbEJ5QXNzZXRJZEFuZE93bmVyAgULbGFuZEFzc2V0SWQFBGFkZHIJAQtEZWxldGVFbnRyeQEJASBrZXlMYW5kQXJ0U3RhdHVzQnlUeXBlQW5kQXNzZXRJZAIFCkFSVFBSRVNBTEUFC2xhbmRBc3NldElkCQELRGVsZXRlRW50cnkBCQERa2V5TGFuZE51bVRvT3duZXIBBQdsYW5kTnVtCQELRGVsZXRlRW50cnkBCQESa2V5V2FyZWhvdXNlQnlMYW5kAQULbGFuZEFzc2V0SWQJAQtEZWxldGVFbnRyeQEFCWN1c3RvbUtleQkBBEJ1cm4CCQDZBAEFC2xhbmRBc3NldElkAAEDCQECIT0CBQpjdXN0b21OYW1lAgAJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBGmtleUxhbmRDdXN0b21OYW1lVG9Bc3NldElkAQUKY3VzdG9tTmFtZQUDbmlsBQNuaWwFBXByb3BzCQDRCAIFBWxhbmRzCQEFdmFsdWUBBQNpZHgJAGQCCAUDYWNjAl84BQZwaWVjZXMFC3N1bVRlcnJhaW5zBQZjUHJvcHMEBWJwS2V5CQERa2V5QmFja3BhY2tCeUR1Y2sBBQtkdWNrQXNzZXRJZAQLY3VycmVudFBhY2sJAQtnZXRCYWNrcGFjawEFBWJwS2V5BAhwcm9wTGlzdAkAtQkCCQELdmFsdWVPckVsc2UCCQCiCAEJARFrZXlSZXNQcm9wb3J0aW9ucwACCzBfMF8wXzBfMF8wAgFfBAhsYW5kc0tleQkBFWtleVN0YWtlZExhbmRzQnlPd25lcgEFBGFkZHIECGxhbmRzU3RyCQCiCAEFCGxhbmRzS2V5BAdsYW5kc0luAwkBCWlzRGVmaW5lZAEFCGxhbmRzU3RyCQC9CQIJAQV2YWx1ZQEFCGxhbmRzU3RyAgFfBQNuaWwEBWNvbnQwCQCRAwIJALUJAggJAQV2YWx1ZQEJAOwHAQkA2QQBCQCRAwIFDGxhbmRBc3NldElkcwAAC2Rlc2NyaXB0aW9uAgFfBQxyZWNDb250aW5lbnQECWNvbnRQcm9wcwkAtQkCCQELdmFsdWVPckVsc2UCCQCiCAEJARZrZXlSZXNUeXBlc0J5Q29udGluZW50AQUFY29udDACCzBfMF8wXzBfMF8wAgFfBAFyCgACJGwFDGxhbmRBc3NldElkcwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJwKCgUHZm9ybXVsYQAAAgAJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4UmVzBQNuaWwFCHByb3BMaXN0BQdsYW5kc0luAAAJALUJAgILMF8wXzBfMF8wXzACAV8FCWNvbnRQcm9wcwoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEKY2hlY2tNZXJnZQIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNQkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUECWNvbnRpbmVudAgFAXICXzMEDGNvbnRpbmVudElkeAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDPCAIFCmNvbnRpbmVudHMFCWNvbnRpbmVudAkArAICAhNVbmtub3duIGNvbnRpbmVudDogBQljb250aW5lbnQECHRlcnJhaW5zCQETZ2VuVGVycmFpbnNGb3JNZXJnZQIIBQFyAl85CQBpAgkBD251bVBpZWNlc0J5U2l6ZQEFC25ld0xhbmRTaXplBQVTU0laRQQHZnJlZU51bQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQESa2V5TmV4dEZyZWVMYW5kTnVtAAkAZAIFD1BSRVNBTEVOVU1MQU5EUwABBApuZXdMYW5kTnVtCQCkAwEFB2ZyZWVOdW0EBWlzc3VlCQDCCAUJAQduZnROYW1lAgUKbmV3TGFuZE51bQULbmV3TGFuZFNpemUJALkJAgkAzAgCBQpuZXdMYW5kTnVtCQDMCAIFC25ld0xhbmRTaXplCQDMCAIFCHRlcnJhaW5zCQDMCAIFCWNvbnRpbmVudAUDbmlsAgFfAAEAAAcEB2Fzc2V0SWQJALgIAQUFaXNzdWUEDm5ld0xhbmRBc3NldElkCQDYBAEFB2Fzc2V0SWQEBm5ld01hdAkAuQkCCQERc3VidHJhY3RNYXRlcmlhbHMDCQBmAgUHbmVlZE1hdAAACQC1CQIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4TWF0AgFfBQduZWVkTWF0AgFfBAlwaWVjZXNLZXkJARZrZXlTdGFrZWRQaWVjZXNCeU93bmVyAQUEYWRkcgQMc3Rha2VkUGllY2VzCQELdmFsdWVPckVsc2UCCQCfCAEFCXBpZWNlc0tleQAACQCUCgIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIIBQFyAl81AwkAZgIJAJADAQgFAXICXzcAAAkBC1N0cmluZ0VudHJ5AgUIbGFuZHNLZXkJALsJAggFAXICXzcCAV8JAQtEZWxldGVFbnRyeQEFCGxhbmRzS2V5CQEMSW50ZWdlckVudHJ5AgUJcGllY2VzS2V5AwkAZgIIBQFyAl84BQxzdGFrZWRQaWVjZXMAAAkAZQIFDHN0YWtlZFBpZWNlcwgFAXICXzgJAQxJbnRlZ2VyRW50cnkCCQESa2V5TmV4dEZyZWVMYW5kTnVtAAkAZAIFB2ZyZWVOdW0AAQUFaXNzdWUJAQtTdHJpbmdFbnRyeQIJARBrZXlMYW5kVG9Bc3NldElkAQUKbmV3TGFuZE51bQUObmV3TGFuZEFzc2V0SWQJAQtTdHJpbmdFbnRyeQIJARVrZXlMYW5kQXNzZXRJZFRvT3duZXIBBQ5uZXdMYW5kQXNzZXRJZAUEYWRkcgkBC1N0cmluZ0VudHJ5AgkBEWtleUxhbmROdW1Ub093bmVyAQUKbmV3TGFuZE51bQUEYWRkcgkBDEludGVnZXJFbnRyeQIJASBrZXlMYW5kQXJ0U3RhdHVzQnlUeXBlQW5kQXNzZXRJZAIFCkFSVFBSRVNBTEUFDm5ld0xhbmRBc3NldElkCAUBcgJfMgkBDEludGVnZXJFbnRyeQIJARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQUObmV3TGFuZEFzc2V0SWQFCG5ld0xldmVsCQEMSW50ZWdlckVudHJ5AgkBHmtleUluZnJhTGV2ZWxCeUFzc2V0SWRBbmRPd25lcgIFDm5ld0xhbmRBc3NldElkBQRhZGRyBQhuZXdMZXZlbAkBC1N0cmluZ0VudHJ5AgUFYnBLZXkJALkJAgkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQpicElkeExldmVsCQDMCAIIBQFyAl80CQDMCAIFBm5ld01hdAkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QFA25pbAIBOgkBC1N0cmluZ0VudHJ5AgkBEWtleVJlc1Byb3BvcnRpb25zAAkAuQkCCAUBcgJfNgIBXwkBC1N0cmluZ0VudHJ5AgkBFmtleVJlc1R5cGVzQnlDb250aW5lbnQBBQljb250aW5lbnQJALkJAggFAXIDXzEwAgFfCQELU3RyaW5nRW50cnkCCQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQJALkJAgkAzAgCBQljb250aW5lbnQJAMwIAgIBTAkAzAgCBQ5uZXdMYW5kQXNzZXRJZAUDbmlsAgFfCQEOU2NyaXB0VHJhbnNmZXIDCQERQGV4dHJOYXRpdmUoMTA2MikBBQRhZGRyAAEFB2Fzc2V0SWQFDm5ld0xhbmRBc3NldElkAQNzMm0CBGFkZHIMbGFuZEFzc2V0SWRzCQENbWVyZ2VJbnRlcm5hbAYCAU0AAwIEU1NTUwUEYWRkcgUMbGFuZEFzc2V0SWRzAAABA20ybAIEYWRkcgxsYW5kQXNzZXRJZHMJAQ1tZXJnZUludGVybmFsBgIBTAAEAgNTTU0FBGFkZHIFDGxhbmRBc3NldElkcwkAaAIFEUluZnJhVXBncmFkZUNvc3RTAAQBBGwyeGwCBGFkZHIMbGFuZEFzc2V0SWRzCQENbWVyZ2VJbnRlcm5hbAYCAlhMAAUCBVNTU01MBQRhZGRyBQxsYW5kQXNzZXRJZHMJAGgCBRFJbmZyYVVwZ3JhZGVDb3N0UwAvAQZ4bDJ4eGwCBGFkZHIMbGFuZEFzc2V0SWRzCQENbWVyZ2VJbnRlcm5hbAYCA1hYTAAGAgNMWEwFBGFkZHIFDGxhbmRBc3NldElkcwkAaAIFEUluZnJhVXBncmFkZUNvc3RTADYBC21lcmdlQ29tbW9uAgRhZGRyDGxhbmRBc3NldElkcwQHJG1hdGNoMAkAkAMBBQxsYW5kQXNzZXRJZHMDCQAAAgAEBQckbWF0Y2gwCQEDczJtAgUEYWRkcgUMbGFuZEFzc2V0SWRzAwkAAAIAAwUHJG1hdGNoMAkBA20ybAIFBGFkZHIFDGxhbmRBc3NldElkcwMJAAACAAUFByRtYXRjaDAJAQRsMnhsAgUEYWRkcgUMbGFuZEFzc2V0SWRzAwkAAAIAAgUHJG1hdGNoMAkBBnhsMnh4bAIFBGFkZHIFDGxhbmRBc3NldElkcwkAAgECDVVua25vd24gbWVyZ2UBFWNoZWNrT3V0ZGF0ZWREZWxpdmVyeQEIdXNlckFkZHIEBGR1Y2sJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUIdXNlckFkZHIDCQEJaXNEZWZpbmVkAQUEZHVjawQLZHVja0Fzc2V0SWQJAQV2YWx1ZQEFBGR1Y2sEBmxvY0tleQkBD2tleUR1Y2tMb2NhdGlvbgEFC2R1Y2tBc3NldElkBANsb2MJALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBBQZsb2NLZXkFD0RFRkFVTFRMT0NBVElPTgIBXwQJc3RhcnRUaW1lCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDbG9jBQ9sb2NJZHhDb250aW5lbnQDAwkBAiE9AgkAkQMCBQNsb2MFCmxvY0lkeFR5cGUCAUQGCQBmAgkAZAIFCXN0YXJ0VGltZQUSVEVOX01JTlVURVNfTUlMTElTCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUDbmlsBAloZWFsdGhLZXkJAQ1rZXlEdWNrSGVhbHRoAQULZHVja0Fzc2V0SWQDCQBmAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFA2xvYwUIbG9jSWR4SWQAAAQGcmV3YXJkCQD8BwQFD2Vjb25vbXlDb250cmFjdAISc2VuZERlbGl2ZXJ5UmV3YXJkCQDMCAIFCHVzZXJBZGRyBQNuaWwFA25pbAMJAAACBQZyZXdhcmQFBnJld2FyZAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQDNCAIJAM0IAgQLbG9ja2VkVG90YWwJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPZWNvbm9teUNvbnRyYWN0BRFkZWxpdmVyeUxvY2tlZEtleQAABAZ1bmxvY2sJAPwHBAUPZWNvbm9teUNvbnRyYWN0AhR1cGRhdGVEZWxpdmVyeUxvY2tlZAkAzAgCCQBlAgULbG9ja2VkVG90YWwFFU1JTl9VU0RUX0ZFRV9ERUxJVkVSWQUDbmlsBQNuaWwDCQAAAgUGdW5sb2NrBQZ1bmxvY2sDCQBnAgAACQERQGV4dHJOYXRpdmUoMTA1NSkBBQloZWFsdGhLZXkFA25pbAQKcHVuaXNobWVudAkA/AcEBQR0aGlzAgtzYXZlSW50ZWdlcgkAzAgCCQEWa2V5RGVsaXZlcnlEZWxheUJ5RHVjawEFC2R1Y2tBc3NldElkCQDMCAIJAGQCBQlzdGFydFRpbWUFE0RFTElWRVJZX1BVTklTSE1FTlQFA25pbAUDbmlsAwkAAAIFCnB1bmlzaG1lbnQFCnB1bmlzaG1lbnQFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkBDEludGVnZXJFbnRyeQIFCWhlYWx0aEtleQkBEUBleHRyTmF0aXZlKDEwNTUpAQkBDmtleVNhdmVkSGVhbHRoAQULZHVja0Fzc2V0SWQJAQtTdHJpbmdFbnRyeQIFBmxvY0tleQkBEUBleHRyTmF0aXZlKDEwNTgpAQkBEGtleVNhdmVkTG9jYXRpb24BBQtkdWNrQXNzZXRJZAUDbmlsAQZwcm9sb2cBAWkDAwkBAiE9AggFAWkMb3JpZ2luQ2FsbGVyBQxyZXN0Q29udHJhY3QJAQt2YWx1ZU9yRWxzZQIJAKAIAQkBCmtleUJsb2NrZWQABwcJAAIBAh9Db250cmFjdHMgYXJlIHVuZGVyIG1haW50ZW5hbmNlBAh1c2VyQWRkcgkApQgBCAUBaQxvcmlnaW5DYWxsZXIJAM0IAgkBFWNoZWNrT3V0ZGF0ZWREZWxpdmVyeQEFCHVzZXJBZGRyCQELU3RyaW5nRW50cnkCCQERa2V5TGFzdFR4SWRCeVVzZXIBBQh1c2VyQWRkcgkA2AQBCAUBaQ10cmFuc2FjdGlvbklkAQxwcm9sb2dGbGlnaHQBAWkDAwkBAiE9AggFAWkMb3JpZ2luQ2FsbGVyBQxyZXN0Q29udHJhY3QJAQt2YWx1ZU9yRWxzZQIJAKAIAQkBCmtleUJsb2NrZWQABwcJAAIBAh9Db250cmFjdHMgYXJlIHVuZGVyIG1haW50ZW5hbmNlCQDMCAIJAQtTdHJpbmdFbnRyeQIJARFrZXlMYXN0VHhJZEJ5VXNlcgEJAKUIAQgFAWkMb3JpZ2luQ2FsbGVyCQDYBAEIBQFpDXRyYW5zYWN0aW9uSWQFA25pbCwBaQENY29uc3RydWN0b3JWMQEIcmVzdEFkZHIDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAhFQZXJtaXNzaW9uIGRlbmllZAkAzAgCCQELU3RyaW5nRW50cnkCCQEOa2V5UmVzdEFkZHJlc3MABQhyZXN0QWRkcgUDbmlsAWkBC3NhdmVJbnRlZ2VyAgNrZXkGYW1vdW50AwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQIgc2F2ZUludGVnZXIgaXMgbm90IHB1YmxpYyBtZXRob2QJAMwIAgkBDEludGVnZXJFbnRyeQIFA2tleQUGYW1vdW50BQNuaWwBaQEKc2V0QmxvY2tlZAEJaXNCbG9ja2VkAwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQIRcGVybWlzc2lvbiBkZW5pZWQJAMwIAgkBDEJvb2xlYW5FbnRyeQIJAQprZXlCbG9ja2VkAAUJaXNCbG9ja2VkBQNuaWwBaQEJc3Rha2VMYW5kAAQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAhxFeGFjdGx5IG9uZSBwYXltZW50IHJlcXVpcmVkBANwbXQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAQHYXNzZXRJZAkBBXZhbHVlAQgFA3BtdAdhc3NldElkBAdhZGRyZXNzCQClCAEIBQFpBmNhbGxlcgMJAQIhPQIIBQNwbXQGYW1vdW50AAEJAAIBCQCsAgIJAKwCAgIETkZUIAUKTEFORFBSRUZJWAIkIHRva2VuIHNob3VsZCBiZSBhdHRhY2hlZCBhcyBwYXltZW50BAVhc3NldAkBBXZhbHVlAQkA7AcBBQdhc3NldElkAwkBAiE9AggFBWFzc2V0Bmlzc3VlcgUEdGhpcwkAAgECF1Vua25vd24gaXNzdWVyIG9mIHRva2VuAwkBASEBCQEIY29udGFpbnMCCAUFYXNzZXQEbmFtZQUKTEFORFBSRUZJWAkAAgEJAKwCAgkArAICAglPbmx5IE5GVCAFCkxBTkRQUkVGSVgCFCB0b2tlbnMgYXJlIGFjY2VwdGVkBAtsYW5kTnVtU2l6ZQkAsAICCAUFYXNzZXQEbmFtZQAEBAdsYW5kTnVtAwkBCGNvbnRhaW5zAgULbGFuZE51bVNpemUCA1hYTAkAswICBQtsYW5kTnVtU2l6ZQADAwkBCGNvbnRhaW5zAgULbGFuZE51bVNpemUCAlhMCQCzAgIFC2xhbmROdW1TaXplAAIJALMCAgULbGFuZE51bVNpemUAAQMJAQEhAQkBCWlzRGVmaW5lZAEJALYJAQUHbGFuZE51bQkAAgEJAKwCAgIeQ2Fubm90IHBhcnNlIGxhbmQgbnVtYmVyIGZyb20gCAUFYXNzZXQEbmFtZQQLbGFuZEFzc2V0SWQJANgEAQUHYXNzZXRJZAQHdGltZUtleQkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAMJAQlpc0RlZmluZWQBCQCfCAEFB3RpbWVLZXkJAAIBCQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCEiBpcyBhbHJlYWR5IHN0YWtlZAQBZAkAtQkCCAUFYXNzZXQLZGVzY3JpcHRpb24CAV8EDXRlcnJhaW5Db3VudHMJAQ1jb3VudFRlcnJhaW5zAQkAkQMCBQFkBQtyZWNUZXJyYWlucwQGcGllY2VzCQEPbnVtUGllY2VzQnlTaXplAQkAkQMCBQFkBQtyZWNMYW5kU2l6ZQQJbGFuZEluZGV4CQBpAgUGcGllY2VzBQVTU0laRQQFcHJvcHMJARF1cGRhdGVQcm9wb3J0aW9ucwMFDXRlcnJhaW5Db3VudHMFCWxhbmRJbmRleAABBAxyZXNCeUNvbnRLZXkJARZrZXlSZXNUeXBlc0J5Q29udGluZW50AQkAkQMCBQFkBQxyZWNDb250aW5lbnQECWNvbnRQcm9wcwkAtQkCCQELdmFsdWVPckVsc2UCCQCiCAEFDHJlc0J5Q29udEtleQILMF8wXzBfMF8wXzACAV8EEHVwZGF0ZWRDb250UHJvcHMJALkJAgkBGXVwZGF0ZVByb3BvcnRpb25zSW50ZXJuYWwEBQljb250UHJvcHMFDXRlcnJhaW5Db3VudHMFCWxhbmRJbmRleAABAgFfBAhsYW5kc0tleQkBFWtleVN0YWtlZExhbmRzQnlPd25lcgEFB2FkZHJlc3MECGxhbmRzU3RyCQCiCAEFCGxhbmRzS2V5BAVsYW5kcwMJAQlpc0RlZmluZWQBBQhsYW5kc1N0cgkAvQkCCQEFdmFsdWUBBQhsYW5kc1N0cgIBXwUDbmlsAwkBD2NvbnRhaW5zRWxlbWVudAIFBWxhbmRzBQtsYW5kQXNzZXRJZAkAAgEJAKwCAgIiWW91ciBzdGFrZWQgbGFuZHMgYWxyZWFkeSBjb250YWluIAULbGFuZEFzc2V0SWQDCQBnAgkAkAMBBQVsYW5kcwUYTUFYX0xBTkRTX1NUQUtFRF9CWV9VU0VSCQACAQkArAICCQCsAgICGVlvdXIgYWxyZWFkeSBzdGFrZWQgbWF4ICgJAKQDAQUYTUFYX0xBTkRTX1NUQUtFRF9CWV9VU0VSAgcpIGxhbmRzBAppbmZyYUxldmVsCQELdmFsdWVPckVsc2UCCQCfCAEJARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQULbGFuZEFzc2V0SWQAAAQJcGllY2VzS2V5CQEWa2V5U3Rha2VkUGllY2VzQnlPd25lcgEFB2FkZHJlc3MECW9sZFBpZWNlcwkBC3ZhbHVlT3JFbHNlAgkAnwgBBQlwaWVjZXNLZXkAAAQJd2xnUmVzdWx0CQD8BwQFC3dsZ0NvbnRyYWN0AhJvblN0YWtlVW5zdGFrZUxhbmQJAMwIAgUHYWRkcmVzcwUDbmlsBQNuaWwJAJQKAgkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQd0aW1lS2V5CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBImtleVN0YWtlZFRpbWVCeVR5cGVBc3NldElkQW5kT3duZXIDBQpMQU5EUFJFRklYBQtsYW5kQXNzZXRJZAUHYWRkcmVzcwgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBC1N0cmluZ0VudHJ5AgUIbGFuZHNLZXkJALsJAgkAzQgCBQVsYW5kcwULbGFuZEFzc2V0SWQCAV8JAMwIAgkBDEludGVnZXJFbnRyeQIFCXBpZWNlc0tleQkAZAIFCW9sZFBpZWNlcwUGcGllY2VzCQDMCAIJAQtTdHJpbmdFbnRyeQIJARVrZXlMYW5kQXNzZXRJZFRvT3duZXIBBQtsYW5kQXNzZXRJZAUHYWRkcmVzcwkAzAgCCQELU3RyaW5nRW50cnkCCQERa2V5TGFuZE51bVRvT3duZXIBBQdsYW5kTnVtBQdhZGRyZXNzCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEea2V5SW5mcmFMZXZlbEJ5QXNzZXRJZEFuZE93bmVyAgULbGFuZEFzc2V0SWQFB2FkZHJlc3MFCmluZnJhTGV2ZWwJAMwIAgkBC1N0cmluZ0VudHJ5AgkBEWtleVJlc1Byb3BvcnRpb25zAAUFcHJvcHMJAMwIAgkBC1N0cmluZ0VudHJ5AgUMcmVzQnlDb250S2V5BRB1cGRhdGVkQ29udFByb3BzBQNuaWwFDXByb2xvZ0FjdGlvbnMFCXdsZ1Jlc3VsdAFpAQt1bnN0YWtlTGFuZAENbGFuZEFzc2V0SWRJbgQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQEYWRkcgkApQgBCAUBaQZjYWxsZXIEAWMJARRjaGVja0NsYWltQ29uZGl0aW9ucwMFBGFkZHIFDWNsYWltTW9kZUR1Y2sFDWxhbmRBc3NldElkSW4EC2xhbmRBc3NldElkCAUBYwJfMgQBZAgFAWMCXzMECGxhbmRzS2V5CQEVa2V5U3Rha2VkTGFuZHNCeU93bmVyAQUEYWRkcgQNdGVycmFpbkNvdW50cwkBDWNvdW50VGVycmFpbnMBCQCRAwIFAWQFC3JlY1RlcnJhaW5zBAZwaWVjZXMJAQ9udW1QaWVjZXNCeVNpemUBCQCRAwIFAWQFC3JlY0xhbmRTaXplBAlsYW5kSW5kZXgJAGkCBQZwaWVjZXMFBVNTSVpFBAVwcm9wcwkBEXVwZGF0ZVByb3BvcnRpb25zAwUNdGVycmFpbkNvdW50cwUJbGFuZEluZGV4AP///////////wEEDHJlc0J5Q29udEtleQkBFmtleVJlc1R5cGVzQnlDb250aW5lbnQBCQCRAwIFAWQFDHJlY0NvbnRpbmVudAQJY29udFByb3BzCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAKIIAQUMcmVzQnlDb250S2V5AgswXzBfMF8wXzBfMAIBXwQQdXBkYXRlZENvbnRQcm9wcwkAuQkCCQEZdXBkYXRlUHJvcG9ydGlvbnNJbnRlcm5hbAQFCWNvbnRQcm9wcwUNdGVycmFpbkNvdW50cwUJbGFuZEluZGV4AP///////////wECAV8EC2NsYWltUmVzdWx0CQEIY2xhaW1BbGwEBQRhZGRyBQtsYW5kQXNzZXRJZAUGcGllY2VzBQ1jbGFpbU1vZGVEdWNrBAVsYW5kcwkAvQkCCQELdmFsdWVPckVsc2UCCQCiCAEFCGxhbmRzS2V5AgACAV8EA2lkeAkAzwgCBQVsYW5kcwULbGFuZEFzc2V0SWQDCQEBIQEJAQlpc0RlZmluZWQBBQNpZHgJAAIBCQCsAgICIFlvdXIgc3Rha2VkIGxhbmRzIGRvbid0IGNvbnRhaW4gBQtsYW5kQXNzZXRJZAQDbm93CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQOZ292UmVsZWFzZVRpbWUJAQt2YWx1ZU9yRWxzZQIJAJoIAgULZ292Q29udHJhY3QJARVrZXlVc2VyR3dsUmVsZWFzZVRpbWUBBQRhZGRyAAADCQBnAgUOZ292UmVsZWFzZVRpbWUFA25vdwkAAgEJAKwCAgI5WW91ciBnV0wgYXJlIHRha2luZyBwYXJ0IGluIHZvdGluZywgY2Fubm90IHVuc3Rha2UgdW50aWwgCQCkAwEFDmdvdlJlbGVhc2VUaW1lBA5hcmJSZWxlYXNlVGltZQkAZAIJAQt2YWx1ZU9yRWxzZQIJAJoIAgULd2xnQ29udHJhY3QJARRrZXlMYXN0QXJiVGltZUJ5VXNlcgEFBGFkZHIAAAUOYXJiaXRyYWdlRGVsYXkDCQBmAgUOYXJiUmVsZWFzZVRpbWUFA25vdwkAAgEJAKwCAgI/WW91ciBzdGFrZWQgbGFuZHMgdG9vayBwYXJ0IGluIGFyYml0cmFnZSwgY2Fubm90IHVuc3Rha2UgdW50aWwgCQCkAwEFDmFyYlJlbGVhc2VUaW1lBAlwaWVjZXNLZXkJARZrZXlTdGFrZWRQaWVjZXNCeU93bmVyAQUEYWRkcgQMc3Rha2VkUGllY2VzCQELdmFsdWVPckVsc2UCCQCfCAEFCXBpZWNlc0tleQAABAluZXdQaWVjZXMDCQBmAgUGcGllY2VzBQxzdGFrZWRQaWVjZXMAAAkAZQIFDHN0YWtlZFBpZWNlcwUGcGllY2VzBAl3bGdSZXN1bHQJAPwHBAULd2xnQ29udHJhY3QCEm9uU3Rha2VVbnN0YWtlTGFuZAkAzAgCBQRhZGRyBQNuaWwFA25pbAkAlAoCCQDOCAIJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyAAEJANkEAQULbGFuZEFzc2V0SWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAkAzAgCCQELRGVsZXRlRW50cnkBCQEia2V5U3Rha2VkVGltZUJ5VHlwZUFzc2V0SWRBbmRPd25lcgMFCkxBTkRQUkVGSVgFC2xhbmRBc3NldElkBQRhZGRyCQDMCAIJAQtTdHJpbmdFbnRyeQIJARFrZXlSZXNQcm9wb3J0aW9ucwAFBXByb3BzCQDMCAIJAQtTdHJpbmdFbnRyeQIFDHJlc0J5Q29udEtleQUQdXBkYXRlZENvbnRQcm9wcwkAzAgCCQELU3RyaW5nRW50cnkCCAULY2xhaW1SZXN1bHQCXzIJALkJAggFC2NsYWltUmVzdWx0Al8zAgE6CQDMCAIDCQBmAgkAkAMBBQVsYW5kcwABCQELU3RyaW5nRW50cnkCBQhsYW5kc0tleQkAuwkCCQDRCAIFBWxhbmRzCQEFdmFsdWUBBQNpZHgCAV8JAQtEZWxldGVFbnRyeQEFCGxhbmRzS2V5CQDMCAIJAQxJbnRlZ2VyRW50cnkCBQlwaWVjZXNLZXkFCW5ld1BpZWNlcwUDbmlsBQ1wcm9sb2dBY3Rpb25zBQl3bGdSZXN1bHQBaQEJc3Rha2VEdWNrAAQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAhxFeGFjdGx5IG9uZSBwYXltZW50IHJlcXVpcmVkBANwbXQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAQHYXNzZXRJZAkBBXZhbHVlAQgFA3BtdAdhc3NldElkBAdhZGRyZXNzCQClCAEIBQFpBmNhbGxlcgMJAQIhPQIIBQNwbXQGYW1vdW50AAEJAAIBCQCsAgIJAKwCAgIETkZUIAUKRFVDS1BSRUZJWAIkIHRva2VuIHNob3VsZCBiZSBhdHRhY2hlZCBhcyBwYXltZW50BAVhc3NldAkBBXZhbHVlAQkA7AcBBQdhc3NldElkAwMJAQIhPQIIBQVhc3NldAZpc3N1ZXIFDWluY3ViYXRvckFkZHIJAQIhPQIIBQVhc3NldAZpc3N1ZXIFC2JyZWVkZXJBZGRyBwkAAgEJAKwCAgkArAICAhJVbmtub3duIGlzc3VlciBvZiAFCkRVQ0tQUkVGSVgCBiB0b2tlbgMJAQEhAQkBCGNvbnRhaW5zAggFBWFzc2V0BG5hbWUFCkRVQ0tQUkVGSVgJAAIBCQCsAgIJAKwCAgIJT25seSBORlQgBQpEVUNLUFJFRklYAhQgdG9rZW5zIGFyZSBhY2NlcHRlZAQKYXNzZXRJZFN0cgkA2AQBBQdhc3NldElkBAd0aW1lS2V5CQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFCmFzc2V0SWRTdHIDCQEJaXNEZWZpbmVkAQkAnwgBBQd0aW1lS2V5CQACAQkArAICCQCsAgICBE5GVCAIBQVhc3NldARuYW1lAhIgaXMgYWxyZWFkeSBzdGFrZWQDCQEJaXNEZWZpbmVkAQkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQdhZGRyZXNzCQACAQkArAICAh1Zb3UgYWxyZWFkeSBzdGFrZWQgb25lIGR1Y2s6IAgFBWFzc2V0BG5hbWUEBmxvY0tleQkBD2tleUR1Y2tMb2NhdGlvbgEFCmFzc2V0SWRTdHIECGxvY2F0aW9uCQCiCAEFBmxvY0tleQQFYnBLZXkJARFrZXlCYWNrcGFja0J5RHVjawEFCmFzc2V0SWRTdHIECGJhY2twYWNrCQCiCAEFBWJwS2V5BAlrZXlIZWFsdGgJAQ1rZXlEdWNrSGVhbHRoAQUKYXNzZXRJZFN0cgQFbWF4SFAJAQltYXhIZWFsdGgBCQELdmFsdWVPckVsc2UCCQCfCAEJAQxrZXlEdWNrTGV2ZWwBBQphc3NldElkU3RyAAAECWN1ckhlYWx0aAkBC3ZhbHVlT3JFbHNlAgkAnwgBBQlrZXlIZWFsdGgFBW1heEhQCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIFB3RpbWVLZXkIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEia2V5U3Rha2VkVGltZUJ5VHlwZUFzc2V0SWRBbmRPd25lcgMFCkRVQ0tQUkVGSVgJANgEAQUHYXNzZXRJZAUHYWRkcmVzcwgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBC1N0cmluZ0VudHJ5AgkBEGtleUR1Y2tJZFRvT3duZXIBBQphc3NldElkU3RyBQdhZGRyZXNzCQDMCAIJAQtTdHJpbmdFbnRyeQIJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFB2FkZHJlc3MFCmFzc2V0SWRTdHIFA25pbAMJAQlpc0RlZmluZWQBBQhsb2NhdGlvbgUDbmlsCQDOCAIJAMwIAgkBC1N0cmluZ0VudHJ5AgUGbG9jS2V5BQ9ERUZBVUxUTE9DQVRJT04FA25pbAMJAQlpc0RlZmluZWQBBQhiYWNrcGFjawUDbmlsCQDOCAIJAM0IAgkAzAgCCQELU3RyaW5nRW50cnkCBQVicEtleQIaMDowXzBfMF8wXzBfMDowXzBfMF8wXzBfMDoFA25pbAkBDEludGVnZXJFbnRyeQIFCWtleUhlYWx0aAUJY3VySGVhbHRoBQ1wcm9sb2dBY3Rpb25zAWkBC3Vuc3Rha2VEdWNrAQphc3NldElkU3RyBA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBAdhc3NldElkCQDZBAEFCmFzc2V0SWRTdHIEB2FkZHJlc3MJAKUIAQgFAWkGY2FsbGVyBAVhc3NldAkBBXZhbHVlAQkA7AcBBQdhc3NldElkBAd0aW1lS2V5CQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFCmFzc2V0SWRTdHIDCQEBIQEJAQlpc0RlZmluZWQBCQCfCAEFB3RpbWVLZXkJAAIBCQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCDiBpcyBub3Qgc3Rha2VkAwkBASEBCQEJaXNEZWZpbmVkAQkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQdhZGRyZXNzCQACAQkArAICCQCsAgICCVRoZSBkdWNrIAgFBWFzc2V0BG5hbWUCDiBpcyBub3Qgc3Rha2VkBAVvd25lcgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARBrZXlEdWNrSWRUb093bmVyAQUKYXNzZXRJZFN0cgkArAICCQCsAgICBE5GVCAIBQVhc3NldARuYW1lAgwgaXMgb3JwaGFuZWQDCQECIT0CBQVvd25lcgUHYWRkcmVzcwkAAgECF1N0YWtlZCBORlQgaXMgbm90IHlvdXJzAwkBD2NoZWNrVG91cm5hbWVudAEFCmFzc2V0SWRTdHIJAAIBAht1bnN0YWtlRHVja19jaGVja1RvdXJuYW1lbnQDCQENY2hlY2tEZWxpdmVyeQEFCmFzc2V0SWRTdHIJAAIBAhl1bnN0YWtlRHVja19jaGVja0RlbGl2ZXJ5BAlrZXlIZWFsdGgJAQ1rZXlEdWNrSGVhbHRoAQUKYXNzZXRJZFN0cgQFbWF4SFAJAQltYXhIZWFsdGgBCQELdmFsdWVPckVsc2UCCQCfCAEJAQxrZXlEdWNrTGV2ZWwBBQphc3NldElkU3RyAAAEBmhlYWx0aAkBC3ZhbHVlT3JFbHNlAgkAnwgBBQlrZXlIZWFsdGgFBW1heEhQAwkAZgIFBW1heEhQBQZoZWFsdGgJAAIBCQCsAgIJAKwCAgIZUGxlYXNlIGhlYWwgeW91ciBkdWNrIHRvIAkApAMBBQVtYXhIUAITaHAgYmVmb3JlIHVuc3Rha2luZwkAzggCCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgABBQdhc3NldElkCQDMCAIJAQtEZWxldGVFbnRyeQEFB3RpbWVLZXkJAMwIAgkBC0RlbGV0ZUVudHJ5AQUJa2V5SGVhbHRoCQDMCAIJAQtEZWxldGVFbnRyeQEJAQ9rZXlEdWNrTG9jYXRpb24BBQphc3NldElkU3RyCQDMCAIJAQtEZWxldGVFbnRyeQEJARBrZXlEdWNrSWRUb093bmVyAQUKYXNzZXRJZFN0cgkAzAgCCQELRGVsZXRlRW50cnkBCQEia2V5U3Rha2VkVGltZUJ5VHlwZUFzc2V0SWRBbmRPd25lcgMFCkRVQ0tQUkVGSVgFCmFzc2V0SWRTdHIFB2FkZHJlc3MJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUHYWRkcmVzcwUDbmlsBQ1wcm9sb2dBY3Rpb25zAWkBCGNsYWltUmVzAgZhbW91bnQObGFuZEFzc2V0SWRTdHIEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQEBGFkZHIJAKUIAQgFAWkMb3JpZ2luQ2FsbGVyBAZyZXN1bHQJARBjbGFpbVJlc0ludGVybmFsBAUEYWRkcgUGYW1vdW50BQ1jbGFpbU1vZGVEdWNrBQ5sYW5kQXNzZXRJZFN0cgQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQRhZGRyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkCQCUCgIJAM4IAgkAzQgCCQDNCAIJAM4IAggFBnJlc3VsdAJfMQgJARd1cGRhdGVEdWNrU3RhdHNJbnRlcm5hbAIFC2R1Y2tBc3NldElkCQBrAwUHeHBDbGFpbQUGYW1vdW50BQVNVUxUOAJfMQkBC1N0cmluZ0VudHJ5AggFBnJlc3VsdAJfMgkAuQkCCAUGcmVzdWx0Al8zAgE6CQELU3RyaW5nRW50cnkCCAUGcmVzdWx0Al80CQC5CQIIBQZyZXN1bHQCXzUCAToFDXByb2xvZ0FjdGlvbnMJAJEDAggFBnJlc3VsdAJfMwUIYnBJZHhSZXMBaQEMY2xhaW1SZXNUb1dIAgZhbW91bnQObGFuZEFzc2V0SWRTdHIEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQEBGFkZHIJAKUIAQgFAWkMb3JpZ2luQ2FsbGVyBAZyZXN1bHQJARBjbGFpbVJlc0ludGVybmFsBAUEYWRkcgUGYW1vdW50BQtjbGFpbU1vZGVXaAUObGFuZEFzc2V0SWRTdHIJAJQKAgkAzggCCQDNCAIJAM0IAgkAzggCCAUGcmVzdWx0Al8xCAkBFnVwZGF0ZUFjY1N0YXRzSW50ZXJuYWwCBQRhZGRyCQBrAwUHeHBDbGFpbQUGYW1vdW50BQVNVUxUOAJfMQkBC1N0cmluZ0VudHJ5AggFBnJlc3VsdAJfMgkAuQkCCAUGcmVzdWx0Al8zAgE6CQELU3RyaW5nRW50cnkCCAUGcmVzdWx0Al80CQC5CQIIBQZyZXN1bHQCXzUCAToFDXByb2xvZ0FjdGlvbnMJAJEDAggFBnJlc3VsdAJfNQUId2hJZHhSZXMBaQEGZmxpZ2h0AgdtZXNzYWdlA3NpZwQNcHJvbG9nQWN0aW9ucwkBDHByb2xvZ0ZsaWdodAEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQIdXNlckFkZHIJAKUIAQgFAWkGY2FsbGVyBAFmCQEMZmxpZ2h0Q29tbW9uAwUIdXNlckFkZHIFB21lc3NhZ2UFA3NpZwQFbmV3SFAIBQFmAl8xBAtkdWNrQXNzZXRJZAgFAWYCXzIEBmxvY0tleQkBD2tleUR1Y2tMb2NhdGlvbgEFC2R1Y2tBc3NldElkBAtjdXJMb2NhdGlvbgkBC3ZhbHVlT3JFbHNlAgkAoggBBQZsb2NLZXkFD0RFRkFVTFRMT0NBVElPTgQLbmV3TG9jYXRpb24IBQFmAl80AwkAAAIFC25ld0xvY2F0aW9uBQtjdXJMb2NhdGlvbgkAAgECIllvdSBjYW4ndCBmbHkgdG8gdGhlIHNhbWUgbG9jYXRpb24EBm5ld0xvYwkAtQkCBQtuZXdMb2NhdGlvbgIBXwQGaXNUb3VyCQAAAgkAkQMCBQZuZXdMb2MFCmxvY0lkeFR5cGUCAVQEB2lzRGVsaXYJAAACCQCRAwIFBm5ld0xvYwUKbG9jSWR4VHlwZQIBRAQFZXFLZXkJARBrZXlEdWNrRXF1aXBtZW50AQULZHVja0Fzc2V0SWQECWN1cnJlbnRFcQkBC3ZhbHVlT3JFbHNlAgkAoggBBQVlcUtleQIXLDssXyw7LF8sOyxfLDssXyw7LF8sOywEDSR0MDcwMTY0NzAyNjEJARFzdWJ0cmFjdEVxdWlwbWVudAIFCWN1cnJlbnRFcQgFAWYCXzUEBW5ld0VxCAUNJHQwNzAxNjQ3MDI2MQJfMQQPc2hvdWxkWmVyb0J1ZmZzCAUNJHQwNzAxNjQ3MDI2MQJfMgQNJHQwNzAyNjQ3MzM3NgMJAQEhAQkBCW9uTWlzc2lvbgIFEnRvdXJuYW1lbnRDb250cmFjdAULY3VyTG9jYXRpb24DCQEBIQEJAQ9pc1VzdWFsTG9jYXRpb24BBQtuZXdMb2NhdGlvbgkBDGNoZWF0QXR0ZW1wdAMFC2N1ckxvY2F0aW9uBQtuZXdMb2NhdGlvbgAFAwkAZgIFBW5ld0hQAAAJAJQKAgULbmV3TG9jYXRpb24FBW5ld0hQCQCUCgIFC2N1ckxvY2F0aW9uAAADCQEOaXNJblRvdXJuYW1lbnQCBRJ0b3VybmFtZW50Q29udHJhY3QFC2N1ckxvY2F0aW9uAwkBASEBCQEOaXNJblRvdXJuYW1lbnQCBRJ0b3VybmFtZW50Q29udHJhY3QFC25ld0xvY2F0aW9uCQACAQIqWW91ciBkdWNrIGlzIHRha2luZyBwYXJ0IGluIHRoZSB0b3VybmFtZW50BAVzY29yZQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBm5ld0xvYwUIbG9jSWR4SWQEBmN1ckxvYwkAtQkCBQtjdXJMb2NhdGlvbgIBXwQGbGFzdElkCQELdmFsdWVPckVsc2UCCQCaCAIFEnRvdXJuYW1lbnRDb250cmFjdAUNbGFzdFRvdXJJZEtleQAAAwkBAiE9AgUFc2NvcmUJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUGY3VyTG9jBQhsb2NJZHhJZAABCQEMY2hlYXRBdHRlbXB0AwULY3VyTG9jYXRpb24FC25ld0xvY2F0aW9uAAcDCQBmAgUFbmV3SFAAAAQJbG9jYWxCZXN0CQELdmFsdWVPckVsc2UCCQCaCAIFEnRvdXJuYW1lbnRDb250cmFjdAkBGmtleUJlc3RSZXN1bHRCeVRvdXJBbmREdWNrAgUGbGFzdElkBQtkdWNrQXNzZXRJZAAABAh1cGRMb2NhbAMJAGYCBQVzY29yZQUJbG9jYWxCZXN0CQD8BwQFEnRvdXJuYW1lbnRDb250cmFjdAIOc2F2ZUR1Y2tSZXN1bHQJAMwIAgULZHVja0Fzc2V0SWQJAMwIAgUFc2NvcmUFA25pbAUDbmlsBQR1bml0AwkAAAIFCHVwZExvY2FsBQh1cGRMb2NhbAkAlAoCBQtuZXdMb2NhdGlvbgUFbmV3SFAJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAJQKAgULY3VyTG9jYXRpb24AAAMJAQEhAQkBDGlzSW5EZWxpdmVyeQEFC2N1ckxvY2F0aW9uBAhzYXZlZExvYwkBCGFzU3RyaW5nAQkA/AcEBQR0aGlzAhBhdXRvRXhpdERlbGl2ZXJ5CQDMCAIFC2R1Y2tBc3NldElkCQDMCAIFBW5ld0hQCQDMCAIDBQdpc0RlbGl2AgIxMAICMTEJAMwIAgAABQNuaWwFA25pbAMJAAACBQhzYXZlZExvYwUIc2F2ZWRMb2MDBQdpc0RlbGl2CQCUCgIFCHNhdmVkTG9jBQVuZXdIUAMJAGYCBQVuZXdIUAAACQCUCgIFC25ld0xvY2F0aW9uBQVuZXdIUAkAlAoCBQhzYXZlZExvYwAACQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAwkBASEBBQdpc0RlbGl2CQACAQIkWW91ciBkdWNrIGlzIHRha2luZyBwYXJ0IGluIGRlbGl2ZXJ5AwkBASEBCQEMaXNJbkRlbGl2ZXJ5AQULbmV3TG9jYXRpb24JAQxjaGVhdEF0dGVtcHQDBQtjdXJMb2NhdGlvbgULbmV3TG9jYXRpb24ADQQFc2NvcmUJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQZuZXdMb2MFCGxvY0lkeElkBAZjdXJMb2MJALUJAgULY3VyTG9jYXRpb24CAV8DCQECIT0CBQVzY29yZQkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQZjdXJMb2MFCGxvY0lkeElkAAEJAQxjaGVhdEF0dGVtcHQDBQtjdXJMb2NhdGlvbgULbmV3TG9jYXRpb24ADgMDCQBmAgUFbmV3SFAAAAkAZgIAAQUFc2NvcmUHCQCUCgIFC25ld0xvY2F0aW9uBQVuZXdIUAQIc2F2ZWRMb2MJAQhhc1N0cmluZwEJAPwHBAUEdGhpcwIQYXV0b0V4aXREZWxpdmVyeQkAzAgCBQtkdWNrQXNzZXRJZAkAzAgCBQVuZXdIUAkAzAgCAgUxNS0xNwkAzAgCBQVzY29yZQUDbmlsBQNuaWwDCQAAAgUIc2F2ZWRMb2MFCHNhdmVkTG9jCQCUCgIFCHNhdmVkTG9jBQVuZXdIUAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgQJbG9jVG9TYXZlCAUNJHQwNzAyNjQ3MzM3NgJfMQQIaHBUb1NhdmUIBQ0kdDA3MDI2NDczMzc2Al8yCQCUCgIJAM4IAgkAzggCCQDOCAIJAMwIAgkBC1N0cmluZ0VudHJ5AgUGbG9jS2V5BQlsb2NUb1NhdmUJAMwIAgkBC1N0cmluZ0VudHJ5AgUFZXFLZXkFBW5ld0VxCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQENa2V5RHVja0hlYWx0aAEFC2R1Y2tBc3NldElkBQhocFRvU2F2ZQUDbmlsBQ1wcm9sb2dBY3Rpb25zAwUPc2hvdWxkWmVyb0J1ZmZzCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQxrZXlEdWNrQnVmZnMBBQtkdWNrQXNzZXRJZAIJMF8wXzBfMF8wBQNuaWwFA25pbAgJARd1cGRhdGVEdWNrU3RhdHNJbnRlcm5hbAIFC2R1Y2tBc3NldElkAwkAZgIFBW5ld0hQAAAFD3hwU3VjY2Vzc0ZsaWdodAUMeHBGYWlsRmxpZ2h0Al8xCAUBZgJfMwFpAQRoZWFsAwpxdWFudGl0eUwxCnF1YW50aXR5TDIKcXVhbnRpdHlMMwQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDAwMJAGYCAAAFCnF1YW50aXR5TDEGCQBmAgAABQpxdWFudGl0eUwyBgkAZgIAAAUKcXVhbnRpdHlMMwkAAgECG1F1YW50aXR5IGNhbm5vdCBiZSBuZWdhdGl2ZQQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBCQClCAEIBQFpBmNhbGxlcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAMJAQ9jaGVja1RvdXJuYW1lbnQBBQtkdWNrQXNzZXRJZAkAAgECFGhlYWxfY2hlY2tUb3VybmFtZW50AwkBDWNoZWNrRGVsaXZlcnkBBQtkdWNrQXNzZXRJZAkAAgECEmhlYWxfY2hlY2tEZWxpdmVyeQQDcXRzCQDMCAIFCnF1YW50aXR5TDEJAMwIAgUKcXVhbnRpdHlMMgkAzAgCBQpxdWFudGl0eUwzBQNuaWwECWtleUhlYWx0aAkBDWtleUR1Y2tIZWFsdGgBBQtkdWNrQXNzZXRJZAQFbWF4SFAJAQltYXhIZWFsdGgBCQELdmFsdWVPckVsc2UCCQCfCAEJAQxrZXlEdWNrTGV2ZWwBBQtkdWNrQXNzZXRJZAAABAlvbGRIZWFsdGgJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJa2V5SGVhbHRoBQVtYXhIUAMJAGcCBQlvbGRIZWFsdGgFBW1heEhQCQACAQkArAICCQCsAgICD0hQIHNob3VsZCBiZSA8IAkApAMBBQVtYXhIUAIIIHRvIGhlYWwEBWJwS2V5CQERa2V5QmFja3BhY2tCeUR1Y2sBBQtkdWNrQXNzZXRJZAQLY3VycmVudFBhY2sJAQtnZXRCYWNrcGFjawEFBWJwS2V5BAhwcm9kTGlzdAMJAAACCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QCAAUDbmlsCQC8CQIJAJEDAgULY3VycmVudFBhY2sFCWJwSWR4UHJvZAIBXwoBC2l0ZXJhdGVQcm9kAgNhY2MGcmVjaXBlBAFuCAUDYWNjAl8yBAF4AwkAZgIJAJADAQUIcHJvZExpc3QFAW4JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQhwcm9kTGlzdAUBbgAAAwkAZgIAAwUBbgQBcQkAkQMCBQNxdHMFAW4DCQBmAgUBcQUBeAkAAgEJAKwCAgkArAICCQCsAgICDllvdSBoYXZlIG9ubHkgCQCkAwEFAXgCBCBvZiAJAJEDAgUJcHJvZFR5cGVzBQFuCQCVCgMJAM0IAggFA2FjYwJfMQkApAMBCQBlAgUBeAUBcQkAZAIFAW4AAQkAZAIIBQNhY2MCXzMJAGgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgkAtQkCBQZyZWNpcGUCAV8FCnJJZHhFZmZlY3QFAXEJAJUKAwkAzQgCCAUDYWNjAl8xCQCkAwEFAXgJAGQCBQFuAAEIBQNhY2MCXzMEBnJlc3VsdAoAAiRsBRBwcm9kdWN0aW9uTWF0cml4CgACJHMJAJADAQUCJGwKAAUkYWNjMAkAlQoDBQNuaWwAAAAACgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQtpdGVyYXRlUHJvZAIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgNTAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyBAluZXdIZWFsdGgJAJcDAQkAzAgCBQVtYXhIUAkAzAgCCQBkAgUJb2xkSGVhbHRoCAUGcmVzdWx0Al8zBQNuaWwJAJQKAgkAzggCCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIFCWtleUhlYWx0aAUJbmV3SGVhbHRoCQDMCAIJAQtTdHJpbmdFbnRyeQIFBWJwS2V5CQC6CQIJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUKYnBJZHhMZXZlbAkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeFJlcwkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeE1hdAkAzAgCCQC5CQIIBQZyZXN1bHQCXzECAV8FA25pbAIBOgUDbmlsBQ1wcm9sb2dBY3Rpb25zCAkBF3VwZGF0ZUR1Y2tTdGF0c0ludGVybmFsAgULZHVja0Fzc2V0SWQJAGgCBQZ4cEhlYWwJAGQCCQBkAgUKcXVhbnRpdHlMMQUKcXVhbnRpdHlMMgUKcXVhbnRpdHlMMwJfMQUJbmV3SGVhbHRoAWkBBmhlYWxFUwAEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQIcRXhhY3RseSBvbmUgcGF5bWVudCByZXF1aXJlZAQDcG10CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAADCQECIT0CCAUDcG10B2Fzc2V0SWQFC3VzZHRBc3NldElkCQACAQIaQWxsb3dlZCBVU0RUIHBheW1lbnQgb25seSEEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQkApQgBCAUBaQZjYWxsZXICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQDCQEPY2hlY2tUb3VybmFtZW50AQULZHVja0Fzc2V0SWQJAAIBAhZoZWFsRVNfY2hlY2tUb3VybmFtZW50AwkBDWNoZWNrRGVsaXZlcnkBBQtkdWNrQXNzZXRJZAkAAgECFGhlYWxFU19jaGVja0RlbGl2ZXJ5BAlrZXlIZWFsdGgJAQ1rZXlEdWNrSGVhbHRoAQULZHVja0Fzc2V0SWQEBW1heEhQCQEJbWF4SGVhbHRoAQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEMa2V5RHVja0xldmVsAQULZHVja0Fzc2V0SWQAAAQJb2xkSGVhbHRoCQELdmFsdWVPckVsc2UCCQCfCAEFCWtleUhlYWx0aAUFbWF4SFADCQBmAgUJb2xkSGVhbHRoAAAJAAIBAihIUCBzaG91bGQgYmUgMCB0byBjYWxsIEVtZXJnZW5jeSBTZXJ2aWNlBAVicEtleQkBEWtleUJhY2twYWNrQnlEdWNrAQULZHVja0Fzc2V0SWQEC2N1cnJlbnRQYWNrCQELZ2V0QmFja3BhY2sBBQVicEtleQQIcHJvZExpc3QDCQAAAgkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kAgAFA25pbAkAvAkCCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QCAV8EDW1lZEtpdEFtb3VudDEDCQBmAgkAkAMBBQhwcm9kTGlzdAAACQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUIcHJvZExpc3QAAAAABA1tZWRLaXRBbW91bnQyAwkAZgIJAJADAQUIcHJvZExpc3QAAQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCHByb2RMaXN0AAEAAAQNbWVkS2l0QW1vdW50MwMJAGYCCQCQAwEFCHByb2RMaXN0AAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQhwcm9kTGlzdAACAAADAwMJAGYCBQ1tZWRLaXRBbW91bnQxAAAGCQBmAgUNbWVkS2l0QW1vdW50MgAABgkAZgIFDW1lZEtpdEFtb3VudDMAAAkAAgECH1lvdSBoYXZlIHRvIHVzZSBvd24gTWVkaWNhbCBLaXQECGV4aXN0U3RyCQCdCAIFD2Vjb25vbXlDb250cmFjdAkBDmtleUVzV2FyZWhvdXNlAAQMZXhpc3RBbW91bnRzAwkBCWlzRGVmaW5lZAEFCGV4aXN0U3RyCQC8CQIJAQV2YWx1ZQEFCGV4aXN0U3RyAgFfBQNuaWwEC2V4aXN0QW1vdW50AwkAZgIJAJADAQUMZXhpc3RBbW91bnRzAAAJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQxleGlzdEFtb3VudHMAAAAAAwkAZwIAAAULZXhpc3RBbW91bnQJAAIBAjlUaGVyZSBhcmUgbm8gTWVkaWNhbCBLaXRzIEwxIGF0IEVtZXJnZW5jeSBTZXJ2aWNlIHN0b3JhZ2UECW5ld0hlYWx0aAkAZAIFCW9sZEhlYWx0aAkBDXBhcnNlSW50VmFsdWUBCQCRAwIJALUJAgkAkQMCBRBwcm9kdWN0aW9uTWF0cml4AAACAV8FCnJJZHhFZmZlY3QEBW5ld0VTCQC5CQIJAMwIAgkApAMBCQBlAgULZXhpc3RBbW91bnQAAQkA0QgCBQxleGlzdEFtb3VudHMAAAIBXwQGcmVjaXBlCQC1CQIJAJEDAgUQcHJvZHVjdGlvbk1hdHJpeAAAAgFfBAh0b3RhbE1hdAkBEmdldFJlY2lwZU1hdGVyaWFscwEFBnJlY2lwZQQJc2VsbFByaWNlCQBrAwkAaAIFCHRvdGFsTWF0BQpFU1NFTExDT0VGBRBSRVNPVVJDRVBSSUNFTUlOCQBoAgUFTVVMVDgFDlBST0RVQ1RQS0dTSVpFAwkBAiE9AggFA3BtdAZhbW91bnQFCXNlbGxQcmljZQkAAgEJAKwCAgIbUGF5bWVudCBhdHRhY2hlZCBzaG91bGQgYmUgCQCkAwEFCXNlbGxQcmljZQQGcmVzdWx0CQEIYXNTdHJpbmcBCQD8BwQFD2Vjb25vbXlDb250cmFjdAIPdXBkYXRlRXNTdG9yYWdlCQDMCAIFBW5ld0VTBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFC3VzZHRBc3NldElkBQlzZWxsUHJpY2UFA25pbAkAlAoCCQDOCAIJAM0IAgUNcHJvbG9nQWN0aW9ucwkBDEludGVnZXJFbnRyeQIFCWtleUhlYWx0aAUJbmV3SGVhbHRoCAkBF3VwZGF0ZUR1Y2tTdGF0c0ludGVybmFsAgULZHVja0Fzc2V0SWQFCHhwQ2FsbEVTAl8xBQZyZXN1bHQBaQEOdXBkYXRlQmFja3BhY2sCC2R1Y2tBc3NldElkB25ld1BhY2sDCQECIT0CCAUBaQZjYWxsZXIFD2Vjb25vbXlDb250cmFjdAkAAgECEXBlcm1pc3Npb24gZGVuaWVkCQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBEWtleUJhY2twYWNrQnlEdWNrAQULZHVja0Fzc2V0SWQFB25ld1BhY2sFA25pbAUHbmV3UGFjawFpAQ9jb21taXRGb3JSYW5kb20ABA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQQLZmluaXNoQmxvY2sJAGQCBQZoZWlnaHQFC3JhbmRvbURlbGF5BARhZGRyCQClCAEIBQFpBmNhbGxlcgkAlAoCCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIJAQlrZXlDb21taXQBBQRhZGRyBQtmaW5pc2hCbG9jawUDbmlsBQ1wcm9sb2dBY3Rpb25zBQtmaW5pc2hCbG9jawFpAQhidXlTTGFuZAAEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQIcRXhhY3RseSBvbmUgcGF5bWVudCByZXF1aXJlZAQDcG10CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAADCQECIT0CCAUDcG10B2Fzc2V0SWQFC3VzZHRBc3NldElkCQACAQIaQWxsb3dlZCBVU0RUIHBheW1lbnQgb25seSEDCQECIT0CCAUDcG10BmFtb3VudAUHRVhQVVNEVAkAAgEJAKwCAgIbUGF5bWVudCBhdHRhY2hlZCBzaG91bGQgYmUgCQCkAwEFB0VYUFVTRFQEBnJlc3VsdAkBEmV4cGVkaXRpb25JbnRlcm5hbAIIBQFpBmNhbGxlcggFAWkNdHJhbnNhY3Rpb25JZAQLYWNyZXNSZXN1bHQJAQVhc0ludAEJAPwHBAUNYWNyZXNDb250cmFjdAIJYnVybkFjcmVzCQDMCAIFDFNfQ09TVF9BQ1JFUwUDbmlsBQNuaWwJAJQKAgkAzggCCQDOCAIJAM0IAggFBnJlc3VsdAJfMQkBDlNjcmlwdFRyYW5zZmVyAwUPZWNvbm9teUNvbnRyYWN0CAUDcG10BmFtb3VudAULdXNkdEFzc2V0SWQICQEWdXBkYXRlQWNjU3RhdHNJbnRlcm5hbAIJAKUIAQgFAWkGY2FsbGVyBQp4cE5ld1NMYW5kAl8xBQ1wcm9sb2dBY3Rpb25zCQCUCgIICAUGcmVzdWx0Al8yAl8xBQthY3Jlc1Jlc3VsdAFpAQpleHBlZGl0aW9uAgdtZXNzYWdlA3NpZwQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQIdXNlckFkZHIJAKUIAQgFAWkGY2FsbGVyBAFmCQEMZmxpZ2h0Q29tbW9uAwUIdXNlckFkZHIFB21lc3NhZ2UFA3NpZwQLZHVja0Fzc2V0SWQIBQFmAl8yBAlrZXlIZWFsdGgJAQ1rZXlEdWNrSGVhbHRoAQULZHVja0Fzc2V0SWQEBWJwS2V5CQERa2V5QmFja3BhY2tCeUR1Y2sBBQtkdWNrQXNzZXRJZAQLY3VycmVudFBhY2sJAQtnZXRCYWNrcGFjawEFBWJwS2V5BAVtTGlzdAkAtQkCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeE1hdAIBXwQGbmV3TWF0CQC5CQIJARFzdWJ0cmFjdE1hdGVyaWFscwMGBQVtTGlzdAUMRVhQTUFURVJJQUxTAgFfBAVlcUtleQkBEGtleUR1Y2tFcXVpcG1lbnQBBQtkdWNrQXNzZXRJZAQJY3VycmVudEVxCQELdmFsdWVPckVsc2UCCQCiCAEFBWVxS2V5AhcsOyxfLDssXyw7LF8sOyxfLDssXyw7LAQNJHQwODA4MTY4MDkxMwkBEXN1YnRyYWN0RXF1aXBtZW50AgUJY3VycmVudEVxCAUBZgJfNQQFbmV3RXEIBQ0kdDA4MDgxNjgwOTEzAl8xBA9zaG91bGRaZXJvQnVmZnMIBQ0kdDA4MDgxNjgwOTEzAl8yBAFlCQESZXhwZWRpdGlvbkludGVybmFsAggFAWkGY2FsbGVyCAUBaQ10cmFuc2FjdGlvbklkBAJpZAgIBQFlAl8yAl8xBAZyZXN1bHQDCQBnAgAACAUBZgJfMQkAlQoDCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQlrZXlIZWFsdGgAAAkAzAgCCQELU3RyaW5nRW50cnkCBQVlcUtleQUFbmV3RXEFA25pbAIAAAAJAJUKAwkAzggCCAUBZQJfMQMFD3Nob3VsZFplcm9CdWZmcwkAzAgCCQELU3RyaW5nRW50cnkCCQEMa2V5RHVja0J1ZmZzAQULZHVja0Fzc2V0SWQCCTBfMF8wXzBfMAUDbmlsCQDNCAIJAM0IAgkAzQgCCQDNCAIFA25pbAkBC1N0cmluZ0VudHJ5AgkBD2tleUR1Y2tMb2NhdGlvbgEFC2R1Y2tBc3NldElkCQC5CQIJAMwIAggIBQFlAl8yAl8yCQDMCAICAUwJAMwIAgUCaWQFA25pbAIBXwkBDEludGVnZXJFbnRyeQIFCWtleUhlYWx0aAgFAWYCXzEJAQtTdHJpbmdFbnRyeQIFBWVxS2V5BQVuZXdFcQkBC1N0cmluZ0VudHJ5AgUFYnBLZXkJALkJAgkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQpicElkeExldmVsCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4UmVzCQDMCAIFBm5ld01hdAkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QFA25pbAIBOgUCaWQIBQFmAl8zAwkBD2NoZWNrVG91cm5hbWVudAEFC2R1Y2tBc3NldElkCQACAQIaZXhwZWRpdGlvbl9jaGVja1RvdXJuYW1lbnQDCQENY2hlY2tEZWxpdmVyeQEFC2R1Y2tBc3NldElkCQACAQIYZXhwZWRpdGlvbl9jaGVja0RlbGl2ZXJ5BAthY3Jlc1Jlc3VsdAkBBWFzSW50AQkA/AcEBQ1hY3Jlc0NvbnRyYWN0AglidXJuQWNyZXMJAMwIAgUMU19DT1NUX0FDUkVTBQNuaWwFA25pbAkAlAoCCQDOCAIJAM4IAggFBnJlc3VsdAJfMQgJARd1cGRhdGVEdWNrU3RhdHNJbnRlcm5hbAIFC2R1Y2tBc3NldElkBQp4cE5ld1NMYW5kAl8xBQ1wcm9sb2dBY3Rpb25zCQCVCgMIBQZyZXN1bHQCXzIIBQZyZXN1bHQCXzMFC2FjcmVzUmVzdWx0AWkBEGJ1eVNMYW5kRm9yQWNyZXMABA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECImV4YWN0bHkgMSBwYXltZW50IG11c3QgYmUgYXR0YWNoZWQEA3BtdAkAkQMCCAUBaQhwYXltZW50cwAABANhbXQIBQNwbXQGYW1vdW50AwMJAQEhAQkBCWlzRGVmaW5lZAEIBQNwbXQHYXNzZXRJZAYJAQIhPQIJAQV2YWx1ZQEIBQNwbXQHYXNzZXRJZAUMYWNyZXNBc3NldElkCQACAQIUQUNSRVMgcGF5bWVudHMgb25seSEDCQECIT0CBQNhbXQFDFNfQ09TVF9BQ1JFUwkAAgEJAKwCAgIbUGF5bWVudCBhdHRhY2hlZCBzaG91bGQgYmUgCQCkAwEFDFNfQ09TVF9BQ1JFUwQGcmVzdWx0CQESZXhwZWRpdGlvbkludGVybmFsAggFAWkGY2FsbGVyCAUBaQ10cmFuc2FjdGlvbklkBAthY3Jlc1Jlc3VsdAkBBWFzSW50AQkA/AcEBQ1hY3Jlc0NvbnRyYWN0AglidXJuQWNyZXMJAMwIAgUMU19DT1NUX0FDUkVTBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFDGFjcmVzQXNzZXRJZAUDYW10BQNuaWwJAJQKAgkAzggCCQDOCAIIBQZyZXN1bHQCXzEICQEWdXBkYXRlQWNjU3RhdHNJbnRlcm5hbAIJAKUIAQgFAWkGY2FsbGVyBQp4cE5ld1NMYW5kAl8xBQ1wcm9sb2dBY3Rpb25zCQCUCgIICAUGcmVzdWx0Al8yAl8xBQthY3Jlc1Jlc3VsdAFpAQx1cGdyYWRlSW5mcmEBC2xhbmRBc3NldElkBA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBAZyZXN1bHQJAQ11cEluZnJhQ29tbW9uBAYIBQFpBmNhbGxlcgAABQtsYW5kQXNzZXRJZAQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBCQClCAEIBQFpBmNhbGxlcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAkAlAoCCQDOCAIJAM4IAggFBnJlc3VsdAJfMQUNcHJvbG9nQWN0aW9ucwgJARd1cGRhdGVEdWNrU3RhdHNJbnRlcm5hbAIFC2R1Y2tBc3NldElkCQBrAwUOeHBVcGdyYWRlSW5mcmEIBQZyZXN1bHQCXzMFBU1VTFQ4Al8xCAUGcmVzdWx0Al8yAWkBEGFjdGl2YXRlQXJ0aWZhY3QCB2FydE5hbWUObGFuZEFzc2V0SWRPcHQEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQEBGFkZHIJAKUIAQgFAWkGY2FsbGVyBAZyZXN1bHQEByRtYXRjaDAFB2FydE5hbWUDCQAAAgIHUFJFU0FMRQUHJG1hdGNoMAkBEmFjdGl2YXRlUHJlc2FsZUFydAIFBGFkZHIFDmxhbmRBc3NldElkT3B0AwkAAAICB09OQk9BUkQFByRtYXRjaDAJARJhY3RpdmF0ZU9uYm9hcmRBcnQBBQRhZGRyCQACAQIQVW5rbm93biBhcnRpZmFjdAkAzggCBQZyZXN1bHQFDXByb2xvZ0FjdGlvbnMBaQEKbWVyZ2VMYW5kcwEMbGFuZEFzc2V0SWRzBA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBAZyZXN1bHQJAQttZXJnZUNvbW1vbgIJAKUIAQgFAWkGY2FsbGVyBQxsYW5kQXNzZXRJZHMJAJQKAgkAzggCCQDOCAIIBQZyZXN1bHQCXzEFDXByb2xvZ0FjdGlvbnMICQEWdXBkYXRlQWNjU3RhdHNJbnRlcm5hbAIJAKUIAQgFAWkGY2FsbGVyBQd4cE1lcmdlAl8xCAUGcmVzdWx0Al8yAWkBDWNhcmdvRXhjaGFuZ2UCDGNhcmdvTGlzdFN0cgtsYW5kQXNzZXRJZAQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQKY2FyZ29QYXJ0cwkAvAkCBQxjYXJnb0xpc3RTdHICAToEBGFkZHIJAKUIAQgFAWkMb3JpZ2luQ2FsbGVyBAVhc3NldAkBBXZhbHVlAQkA7AcBCQDZBAEFC2xhbmRBc3NldElkBAd0aW1lS2V5CQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFC2xhbmRBc3NldElkAwkBASEBCQEJaXNEZWZpbmVkAQkAnwgBBQd0aW1lS2V5CQACAQkArAICCAUFYXNzZXQEbmFtZQIOIGlzIG5vdCBzdGFrZWQEBW93bmVyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFWtleUxhbmRBc3NldElkVG9Pd25lcgEFC2xhbmRBc3NldElkCQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCDCBpcyBvcnBoYW5lZAMJAQIhPQIFBW93bmVyBQRhZGRyCQACAQkArAICBQpMQU5EUFJFRklYAg0gaXMgbm90IHlvdXJzBAlsYW5kSW5kZXgJAGkCCQEPbnVtUGllY2VzQnlTaXplAQkAkQMCCQC1CQIIBQVhc3NldAtkZXNjcmlwdGlvbgIBXwULcmVjTGFuZFNpemUFBVNTSVpFBAppbmZyYUxldmVsCQELdmFsdWVPckVsc2UCCQCfCAEJARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQULbGFuZEFzc2V0SWQAAAQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQRhZGRyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkBAtjdXJMb2NhdGlvbgkBC3ZhbHVlT3JFbHNlAgkAoggBCQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQFD0RFRkFVTFRMT0NBVElPTgQDbG9jCQC1CQIJAQV2YWx1ZQEFC2N1ckxvY2F0aW9uAgFfAwkBAiE9AgkAkQMCBQNsb2MFCmxvY0lkeFR5cGUCAUwJAAIBCQCsAgIJAKwCAgIWRHVjayBsb2NhdGlvbiB0eXBlIGlzIAkAkQMCBQNsb2MFCmxvY0lkeFR5cGUCESwgYnV0IHNob3VsZCBiZSBMAwkBAiE9AgkAkQMCBQNsb2MFCGxvY0lkeElkBQtsYW5kQXNzZXRJZAkAAgEJAKwCAgIbRHVjayBzaG91bGQgYmUgb24gdGhlIGxhbmQgBQtsYW5kQXNzZXRJZAQFd2hLZXkJARJrZXlXYXJlaG91c2VCeUxhbmQBBQtsYW5kQXNzZXRJZAQJY3VycmVudFdoCQEMZ2V0V2FyZWhvdXNlAwUFd2hLZXkFCWxhbmRJbmRleAUKaW5mcmFMZXZlbAQFYnBLZXkJARFrZXlCYWNrcGFja0J5RHVjawEFC2R1Y2tBc3NldElkBAtjdXJyZW50UGFjawkBC2dldEJhY2twYWNrAQUFYnBLZXkEBnJlc3VsdAkBCW1vdmVTdHVmZgMFCmNhcmdvUGFydHMFCWN1cnJlbnRXaAULY3VycmVudFBhY2sEBGxvZnQJALUJAgkAkQMCBQljdXJyZW50V2gFCXdoSWR4TE9GVAIBXwQFbG9mdE8JAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEbG9mdAULdm9sT2NjdXBpZWQIBQZyZXN1bHQCXzcEBWxvZnRGCQBlAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFB3ZvbEZyZWUIBQZyZXN1bHQCXzcJAM4IAgkAzAgCCQELU3RyaW5nRW50cnkCBQVicEtleQkAugkCCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCmJwSWR4TGV2ZWwJAMwIAggFBnJlc3VsdAJfNAkAzAgCCAUGcmVzdWx0Al81CQDMCAIIBQZyZXN1bHQCXzYFA25pbAIBOgkAzAgCCQELU3RyaW5nRW50cnkCBQV3aEtleQkAugkCCQDMCAIJAJEDAgUJY3VycmVudFdoBQt3aElkeExldmVscwkAzAgCCAUGcmVzdWx0Al8xCQDMCAIIBQZyZXN1bHQCXzIJAMwIAggFBnJlc3VsdAJfMwkAzAgCCQC5CQIJAMwIAgkAkQMCBQRsb2Z0BQl2b2xMb2NrZWQJAMwIAgkApAMBBQVsb2Z0TwkAzAgCCQCkAwEFBWxvZnRGCQDMCAIJAJEDAgUEbG9mdAUIdm9sVG90YWwFA25pbAIBXwUDbmlsAgE6BQNuaWwFDXByb2xvZ0FjdGlvbnMBaQENc2F2ZVdhcmVob3VzZQIFd2hTdHILbGFuZEFzc2V0SWQDCQECIT0CCAUBaQZjYWxsZXIFD2Vjb25vbXlDb250cmFjdAkAAgECDUFjY2VzcyBkZW5pZWQEBXdoS2V5CQESa2V5V2FyZWhvdXNlQnlMYW5kAQULbGFuZEFzc2V0SWQEAndoCQC8CQIFBXdoU3RyAgE6AwkBAiE9AgkAkAMBBQJ3aAAFCQACAQIwd2FyZWhvdXNlIHN0cmluZyBzaG91bGQgY29udGFpbiA0ICc6JyBzZXBhcmF0b3JzBAVsb2Z0TAkAkQMCCQC1CQIJAJEDAgUCd2gFCXdoSWR4TE9GVAIBXwUJdm9sTG9ja2VkBAVsb2Z0TwkBF2dldFdhcmVob3VzZU9jY3VwaWVkVm9sAQUCd2gEBWxvZnRUCQEXZ2V0V2FyZWhvdXNlVG90YWxWb2x1bWUBCQCRAwIFAndoBQt3aElkeExldmVscwQFbG9mdEYJAGUCCQBlAgUFbG9mdFQJAQ1wYXJzZUludFZhbHVlAQUFbG9mdEwFBWxvZnRPAwkAZgIAAAUFbG9mdEYJAAIBAjBPcGVyYXRpb24gbGVhZHMgdG8gbmVnYXRpdmUgZnJlZSB3YXJlaG91c2Ugc3BhY2UECG5ld1doU3RyCQC6CQIJAMwIAgkAkQMCBQJ3aAULd2hJZHhMZXZlbHMJAMwIAgkAkQMCBQJ3aAUId2hJZHhSZXMJAMwIAgkAkQMCBQJ3aAUId2hJZHhNYXQJAMwIAgkAkQMCBQJ3aAUJd2hJZHhQcm9kCQDMCAIJALkJAgkAzAgCBQVsb2Z0TAkAzAgCCQCkAwEFBWxvZnRPCQDMCAIJAKQDAQUFbG9mdEYJAMwIAgkApAMBBQVsb2Z0VAUDbmlsAgFfBQNuaWwCAToJAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCBQV3aEtleQUIbmV3V2hTdHIFA25pbAUIbmV3V2hTdHIBaQENc2V0Q3VzdG9tTmFtZQMHYXNzZXRJZApjdXN0b21OYW1lBHR5cGUEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQIcRXhhY3RseSBvbmUgcGF5bWVudCByZXF1aXJlZAQDcG10CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAADCQECIT0CCAUDcG10B2Fzc2V0SWQFC3VzZHRBc3NldElkCQACAQIaQWxsb3dlZCBVU0RUIHBheW1lbnQgb25seSEDCQECIT0CCAUDcG10BmFtb3VudAUMUkVOQU1JTkdDT1NUCQACAQkArAICAhJQYXltZW50IHNob3VsZCBiZSAJAKQDAQUMUkVOQU1JTkdDT1NUAwkBCGNvbnRhaW5zAgUKY3VzdG9tTmFtZQICX18JAAIBCQCsAgICHk5hbWUgc2hvdWxkIG5vdCBjb250YWluICdfXyc6IAUKY3VzdG9tTmFtZQMJAGYCCQCxAgEFCmN1c3RvbU5hbWUFCk1BWE5BTUVMRU4JAAIBCQCsAgICGU5hbWUgdG9vIGxvbmcsIG1heExlbmd0aD0JAKQDAQUKTUFYTkFNRUxFTgQEYWRkcgkApQgBCAUBaQxvcmlnaW5DYWxsZXIEB2FjdGlvbnMEByRtYXRjaDAFBHR5cGUDCQAAAgIHQUNDT1VOVAUHJG1hdGNoMAQKcmV2ZXJzZUtleQkBFmtleUN1c3RvbU5hbWVUb0FkZHJlc3MBBQpjdXN0b21OYW1lBAluYW1lT3duZXIJAKIIAQUKcmV2ZXJzZUtleQMJAQlpc0RlZmluZWQBBQluYW1lT3duZXIJAAIBCQCsAgICGU5hbWUgYWxyZWFkeSByZWdpc3RlcmVkOiAFCmN1c3RvbU5hbWUEDWFkZHJUb05hbWVLZXkJARZrZXlBZGRyZXNzVG9DdXN0b21OYW1lAQUEYWRkcgQHb2xkTmFtZQkAoggBBQ1hZGRyVG9OYW1lS2V5BAdmcmVlT2xkAwkBCWlzRGVmaW5lZAEFB29sZE5hbWUJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBFmtleUN1c3RvbU5hbWVUb0FkZHJlc3MBCQEFdmFsdWUBBQdvbGROYW1lBQNuaWwFA25pbAkAzggCCQDNCAIJAM0IAgUHZnJlZU9sZAkBC1N0cmluZ0VudHJ5AgUNYWRkclRvTmFtZUtleQUKY3VzdG9tTmFtZQkBC1N0cmluZ0VudHJ5AgUKcmV2ZXJzZUtleQUEYWRkcggJARZ1cGRhdGVBY2NTdGF0c0ludGVybmFsAgUEYWRkcgUMeHBDdXN0b21OYW1lAl8xAwkAAAICBExBTkQFByRtYXRjaDAEBWFzc2V0CQEFdmFsdWUBCQDsBwEJANkEAQUHYXNzZXRJZAQHdGltZUtleQkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQdhc3NldElkAwkBASEBCQEJaXNEZWZpbmVkAQkAnwgBBQd0aW1lS2V5CQACAQkArAICCAUFYXNzZXQEbmFtZQIOIGlzIG5vdCBzdGFrZWQEBW93bmVyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFWtleUxhbmRBc3NldElkVG9Pd25lcgEFB2Fzc2V0SWQJAKwCAgkArAICAgRORlQgCAUFYXNzZXQEbmFtZQIMIGlzIG9ycGhhbmVkAwkBAiE9AgUFb3duZXIFBGFkZHIJAAIBCQCsAgIFCkxBTkRQUkVGSVgCDSBpcyBub3QgeW91cnMECnJldmVyc2VLZXkJARprZXlMYW5kQ3VzdG9tTmFtZVRvQXNzZXRJZAEFCmN1c3RvbU5hbWUECW5hbWVPd25lcgkAoggBBQpyZXZlcnNlS2V5AwkBCWlzRGVmaW5lZAEFCW5hbWVPd25lcgkAAgEJAKwCAgIZTmFtZSBhbHJlYWR5IHJlZ2lzdGVyZWQ6IAUKY3VzdG9tTmFtZQQOYXNzZXRUb05hbWVLZXkJARprZXlMYW5kQXNzZXRJZFRvQ3VzdG9tTmFtZQEFB2Fzc2V0SWQEB29sZE5hbWUJAKIIAQUOYXNzZXRUb05hbWVLZXkEB2ZyZWVPbGQDCQEJaXNEZWZpbmVkAQUHb2xkTmFtZQkAzAgCCQELRGVsZXRlRW50cnkBCQEaa2V5TGFuZEN1c3RvbU5hbWVUb0Fzc2V0SWQBCQEFdmFsdWUBBQdvbGROYW1lBQNuaWwFA25pbAkAzggCCQDNCAIJAM0IAgUHZnJlZU9sZAkBC1N0cmluZ0VudHJ5AgUOYXNzZXRUb05hbWVLZXkFCmN1c3RvbU5hbWUJAQtTdHJpbmdFbnRyeQIFCnJldmVyc2VLZXkFB2Fzc2V0SWQICQEWdXBkYXRlQWNjU3RhdHNJbnRlcm5hbAIFBGFkZHIFDHhwQ3VzdG9tTmFtZQJfMQMJAAACAgREVUNLBQckbWF0Y2gwBAVhc3NldAkBBXZhbHVlAQkA7AcBCQDZBAEFB2Fzc2V0SWQEB3RpbWVLZXkJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQUHYXNzZXRJZAMDCQEBIQEJAQlpc0RlZmluZWQBCQCfCAEFB3RpbWVLZXkGCQEBIQEJAQlpc0RlZmluZWQBCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFBGFkZHIJAAIBCQCsAgIIBQVhc3NldARuYW1lAg4gaXMgbm90IHN0YWtlZAQFb3duZXIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEQa2V5RHVja0lkVG9Pd25lcgEFB2Fzc2V0SWQJAKwCAgkArAICAgRORlQgCAUFYXNzZXQEbmFtZQIMIGlzIG9ycGhhbmVkAwkBAiE9AgUFb3duZXIFBGFkZHIJAAIBCQCsAgIFCkRVQ0tQUkVGSVgCDSBpcyBub3QgeW91cnMECnJldmVyc2VLZXkJARprZXlEdWNrQ3VzdG9tTmFtZVRvQXNzZXRJZAEFCmN1c3RvbU5hbWUECW5hbWVPd25lcgkAoggBBQpyZXZlcnNlS2V5AwkBCWlzRGVmaW5lZAEFCW5hbWVPd25lcgkAAgEJAKwCAgIZTmFtZSBhbHJlYWR5IHJlZ2lzdGVyZWQ6IAUKY3VzdG9tTmFtZQQOYXNzZXRUb05hbWVLZXkJARprZXlEdWNrQXNzZXRJZFRvQ3VzdG9tTmFtZQEFB2Fzc2V0SWQEB29sZE5hbWUJAKIIAQUOYXNzZXRUb05hbWVLZXkEB2ZyZWVPbGQDCQEJaXNEZWZpbmVkAQUHb2xkTmFtZQkAzAgCCQELRGVsZXRlRW50cnkBCQEaa2V5RHVja0N1c3RvbU5hbWVUb0Fzc2V0SWQBCQEFdmFsdWUBBQdvbGROYW1lBQNuaWwFA25pbAkAzggCCQDNCAIJAM0IAgUHZnJlZU9sZAkBC1N0cmluZ0VudHJ5AgUOYXNzZXRUb05hbWVLZXkFCmN1c3RvbU5hbWUJAQtTdHJpbmdFbnRyeQIFCnJldmVyc2VLZXkFB2Fzc2V0SWQICQEXdXBkYXRlRHVja1N0YXRzSW50ZXJuYWwCBQdhc3NldElkBQx4cEN1c3RvbU5hbWUCXzEJAAIBAhNVbmtub3duIGVudGl0eSB0eXBlCQCUCgIJAM4IAgkAzQgCBQdhY3Rpb25zCQEOU2NyaXB0VHJhbnNmZXIDBQ9lY29ub215Q29udHJhY3QIBQNwbXQGYW1vdW50BQt1c2R0QXNzZXRJZAUNcHJvbG9nQWN0aW9ucwAAAWkBDHNldFJlZmVycmFscwIJb2xkUGxheWVyCW5ld1BsYXllcgMJAQIhPQIIBQFpD2NhbGxlclB1YmxpY0tleQUDcHViCQACAQIRUGVybWlzc2lvbiBkZW5pZWQEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQDCQEBIQEJAQlpc0RlZmluZWQBCQCmCAEFCW9sZFBsYXllcgkAAgEJAKwCAgIRSW52YWxpZCBhZGRyZXNzOiAFCW9sZFBsYXllcgMJAQEhAQkBCWlzRGVmaW5lZAEJAKYIAQUJbmV3UGxheWVyCQACAQkArAICAhFJbnZhbGlkIGFkZHJlc3M6IAUJbmV3UGxheWVyBAdvbGRzS2V5CQEJa2V5T2xkaWVzAAQEb2xkcwkAoggBBQdvbGRzS2V5BAZvbGRpZXMDCQEJaXNEZWZpbmVkAQUEb2xkcwkAvAkCCQEFdmFsdWUBBQRvbGRzAgFfBQNuaWwDCQEPY29udGFpbnNFbGVtZW50AgUGb2xkaWVzBQluZXdQbGF5ZXIJAAIBCQCsAgIFCW5ld1BsYXllcgImIGlzIG5vdCBuZXdiaWUgKGFscmVhZHkgaGFzIHJlZmVycmFscykECHJlZkJ5S2V5CQEPa2V5QWRkcmVzc1JlZkJ5AQUJbmV3UGxheWVyBAVyZWZCeQkAoggBBQhyZWZCeUtleQMDCQEJaXNEZWZpbmVkAQUFcmVmQnkJAQlpc0RlZmluZWQBCQCmCAEJAQV2YWx1ZQEFBXJlZkJ5BwkAAgEJAKwCAgkArAICBQluZXdQbGF5ZXICFCBhbHJlYWR5IGhhcyByZWZCeTogCQEFdmFsdWUBBQVyZWZCeQQHcmVmc0tleQkBE2tleUFkZHJlc3NSZWZlcnJhbHMBBQlvbGRQbGF5ZXIEBHJlZnMJAKIIAQUHcmVmc0tleQQJcmVmc0FycmF5AwkBCWlzRGVmaW5lZAEFBHJlZnMJALwJAgkBBXZhbHVlAQUEcmVmcwIBXwUDbmlsAwkBD2NvbnRhaW5zRWxlbWVudAIFCXJlZnNBcnJheQUJbmV3UGxheWVyCQACAQkArAICCQCsAgIJAKwCAgUJb2xkUGxheWVyAhIgYWxyZWFkeSBjb250YWlucyAFCW5ld1BsYXllcgIRIHdpdGhpbiByZWZlcnJhbHMEB25ld1JlZnMJALoJAgkAzQgCBQlyZWZzQXJyYXkFCW5ld1BsYXllcgIBXwQHbmV3T2xkcwMJAQ9jb250YWluc0VsZW1lbnQCBQZvbGRpZXMFCW9sZFBsYXllcgkBBXZhbHVlAQUEb2xkcwkAugkCCQDNCAIFBm9sZGllcwUJb2xkUGxheWVyAgFfCQCUCgIJAM4IAgkAzAgCCQELU3RyaW5nRW50cnkCBQhyZWZCeUtleQUJb2xkUGxheWVyCQDMCAIJAQtTdHJpbmdFbnRyeQIFB3JlZnNLZXkFB25ld1JlZnMJAMwIAgkBC1N0cmluZ0VudHJ5AgUHb2xkc0tleQUHbmV3T2xkcwUDbmlsBQ1wcm9sb2dBY3Rpb25zAAABaQEQZGlzdHJpYnV0ZVBvaW50cwUIc3RyZW5ndGgIYWNjdXJhY3kJaW50ZWxsZWN0CWVuZHVyYW5jZQlkZXh0ZXJpdHkEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQEBGFkZHIJAKUIAQgFAWkMb3JpZ2luQ2FsbGVyBAt2aXJ0V2xnRGF0YQkBCWFzQW55TGlzdAEJAPwHBAULd2xnQ29udHJhY3QCEmNoZWNrV2xnWHBSRUFET05MWQkAzAgCBQRhZGRyBQNuaWwFA25pbAQNdmlydFdsZ1BvaW50cwkBBWFzSW50AQkAkQMCBQt2aXJ0V2xnRGF0YQABBA0kdDA5NjUzMzk2OTIzAwkAZwIAAAUNdmlydFdsZ1BvaW50cwkAlAoCAAAFA25pbAQHZGVsdGFYUAkBBWFzSW50AQkA/AcEBQt3bGdDb250cmFjdAIJdGFrZVdsZ1hwCQDMCAIFBGFkZHIFA25pbAUDbmlsAwkAAAIFB2RlbHRhWFAFB2RlbHRhWFAJAJQKAgUNdmlydFdsZ1BvaW50cwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBDGtleVVzZXJMZXZlbAEFBGFkZHIJAQVhc0ludAEJAJEDAgULdmlydFdsZ0RhdGEAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBCWtleVVzZXJYUAEFBGFkZHIJAQVhc0ludAEJAJEDAgULdmlydFdsZ0RhdGEAAgUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBAl3bGdQb2ludHMIBQ0kdDA5NjUzMzk2OTIzAl8xBAp3bGdBY3Rpb25zCAUNJHQwOTY1MzM5NjkyMwJfMgQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQRhZGRyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkBApmcmVlS2V5QWNjCQERa2V5VXNlckZyZWVQb2ludHMBBQRhZGRyBA1mcmVlUG9pbnRzQWNjCQBkAgkBC3ZhbHVlT3JFbHNlAgkAnwgBBQpmcmVlS2V5QWNjAAAFCXdsZ1BvaW50cwQLZnJlZUtleUR1Y2sJARFrZXlEdWNrRnJlZVBvaW50cwEFC2R1Y2tBc3NldElkBA5mcmVlUG9pbnRzRHVjawkBC3ZhbHVlT3JFbHNlAgkAnwgBBQtmcmVlS2V5RHVjawAABAdzdW1GcmVlCQBkAgUNZnJlZVBvaW50c0FjYwUOZnJlZVBvaW50c0R1Y2sED3N1bVRvRGlzdHJpYnV0ZQkAZAIJAGQCCQBkAgkAZAIFCHN0cmVuZ3RoBQhhY2N1cmFjeQUJaW50ZWxsZWN0BQllbmR1cmFuY2UFCWRleHRlcml0eQMJAGYCBQ9zdW1Ub0Rpc3RyaWJ1dGUFB3N1bUZyZWUJAAIBCQCsAgIJAKwCAgIPVGhlcmUgYXJlIG9ubHkgCQCkAwEFB3N1bUZyZWUCGiBmcmVlIHBvaW50cyB0byBkaXN0cmlidXRlBAhjaGFyc0tleQkBDGtleUR1Y2tDaGFycwEFC2R1Y2tBc3NldElkBAVjaGFycwkAtQkCCQELdmFsdWVPckVsc2UCCQCiCAEFCGNoYXJzS2V5AgkwXzBfMF8wXzACAV8EBm5ld0FjYwkAZQIFDWZyZWVQb2ludHNBY2MFD3N1bVRvRGlzdHJpYnV0ZQkAlAoCCQDOCAIJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUKZnJlZUtleUFjYwMJAGYCAAAFBm5ld0FjYwAABQZuZXdBY2MJAMwIAgkBDEludGVnZXJFbnRyeQIFC2ZyZWVLZXlEdWNrAwkAZgIAAAUGbmV3QWNjCQBkAgUOZnJlZVBvaW50c0R1Y2sFBm5ld0FjYwUOZnJlZVBvaW50c0R1Y2sJAMwIAgkBC1N0cmluZ0VudHJ5AgUIY2hhcnNLZXkJALkJAgkAzAgCCQCkAwEJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFY2hhcnMFDGNoYXJTdHJlbmd0aAUIc3RyZW5ndGgJAMwIAgkApAMBCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBWNoYXJzBQxjaGFyQWNjdXJhY3kFCGFjY3VyYWN5CQDMCAIJAKQDAQkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVjaGFycwUNY2hhckludGVsbGVjdAUJaW50ZWxsZWN0CQDMCAIJAKQDAQkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVjaGFycwUNY2hhckVuZHVyYW5jZQUJZW5kdXJhbmNlCQDMCAIJAKQDAQkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVjaGFycwUNY2hhckRleHRlcml0eQUJZGV4dGVyaXR5BQNuaWwCAV8FA25pbAUNcHJvbG9nQWN0aW9ucwUKd2xnQWN0aW9ucwAAAWkBHHNwbGl0QnlHbG9iYWxXZWlnaHRzUkVBRE9OTFkBBmFtb3VudAkAlAoCBQNuaWwJARJnZXROZWVkZWRNYXRlcmlhbHMBBQZhbW91bnQBaQEkc3BsaXRCeUdsb2JhbEFuZExvY2FsV2VpZ2h0c1JFQURPTkxZAwltYXRBbW91bnQJcmVzQW1vdW50CHRlcnJhaW5zBA10ZXJyYWluQ291bnRzCQENY291bnRUZXJyYWlucwEFCHRlcnJhaW5zCQCUCgIFA25pbAkAlAoCCQESZ2V0TmVlZGVkTWF0ZXJpYWxzAQUJbWF0QW1vdW50CQETZGlzdHJpYnV0ZUJ5V2VpZ2h0cwIFCXJlc0Ftb3VudAUNdGVycmFpbkNvdW50cwFpARNnZXRCYWNrcGFja1JFQURPTkxZAQtkdWNrQXNzZXRJZAkAlAoCBQNuaWwJALkJAgkBC2dldEJhY2twYWNrAQkBEWtleUJhY2twYWNrQnlEdWNrAQULZHVja0Fzc2V0SWQCAToBaQEUZ2V0V2FyZWhvdXNlUkVBRE9OTFkBC2xhbmRBc3NldElkBAVhc3NldAkBBXZhbHVlAQkA7AcBCQDZBAEFC2xhbmRBc3NldElkBAlsYW5kSW5kZXgJAGkCCQEPbnVtUGllY2VzQnlTaXplAQkAkQMCCQC1CQIIBQVhc3NldAtkZXNjcmlwdGlvbgIBXwULcmVjTGFuZFNpemUFBVNTSVpFBAppbmZyYUxldmVsCQELdmFsdWVPckVsc2UCCQCfCAEJARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQULbGFuZEFzc2V0SWQAAAkAlAoCBQNuaWwJALoJAgkBDGdldFdhcmVob3VzZQMJARJrZXlXYXJlaG91c2VCeUxhbmQBBQtsYW5kQXNzZXRJZAUJbGFuZEluZGV4BQppbmZyYUxldmVsAgE6AWkBCnNhdmVMYXN0VHgAAwkBASEBCQEPY29udGFpbnNFbGVtZW50AgkAzAgCBQt3bGdDb250cmFjdAkAzAgCBQ9lY29ub215Q29udHJhY3QJAMwIAgUSdG91cm5hbWVudENvbnRyYWN0CQDMCAIFDWFjcmVzQ29udHJhY3QFA25pbAgFAWkGY2FsbGVyCQACAQINQWNjZXNzIGRlbmllZAkAlAoCCQEGcHJvbG9nAQUBaQAqAWkBD3VwZGF0ZUR1Y2tTdGF0cwILZHVja0Fzc2V0SWQHZGVsdGFYUAMJAQIhPQIIBQFpBmNhbGxlcgUPZWNvbm9teUNvbnRyYWN0CQACAQINQWNjZXNzIGRlbmllZAkBF3VwZGF0ZUR1Y2tTdGF0c0ludGVybmFsAgULZHVja0Fzc2V0SWQFB2RlbHRhWFABaQEOdXBkYXRlQWNjU3RhdHMCBGFkZHIHZGVsdGFYUAMJAQEhAQkBD2NvbnRhaW5zRWxlbWVudAIJAMwIAgULd2xnQ29udHJhY3QJAMwIAgUPZWNvbm9teUNvbnRyYWN0CQDMCAIFDWFjcmVzQ29udHJhY3QFA25pbAgFAWkGY2FsbGVyCQACAQINQWNjZXNzIGRlbmllZAkBFnVwZGF0ZUFjY1N0YXRzSW50ZXJuYWwCBQRhZGRyBQdkZWx0YVhQAWkBCWVxdWlwRHVjawEJZXF1aXBtZW50BA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBARhZGRyCQClCAEIBQFpDG9yaWdpbkNhbGxlcgQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQRhZGRyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkAwkBD2NoZWNrVG91cm5hbWVudAEFC2R1Y2tBc3NldElkCQACAQIZZXF1aXBEdWNrX2NoZWNrVG91cm5hbWVudAMJAQ1jaGVja0RlbGl2ZXJ5AQULZHVja0Fzc2V0SWQJAAIBAhdlcXVpcER1Y2tfY2hlY2tEZWxpdmVyeQQFZXFLZXkJARBrZXlEdWNrRXF1aXBtZW50AQULZHVja0Fzc2V0SWQEC2N1cnJlbnRTZWdzCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAKIIAQUFZXFLZXkCFyw7LF8sOyxfLDssXyw7LF8sOyxfLDssAgFfBAVicEtleQkBEWtleUJhY2twYWNrQnlEdWNrAQULZHVja0Fzc2V0SWQEC2N1cnJlbnRQYWNrCQELZ2V0QmFja3BhY2sBBQVicEtleQQFbmV3RXEJALUJAgUJZXF1aXBtZW50AgFfAwkBAiE9AgkAkAMBBQVuZXdFcQULTlVNU0VHTUVOVFMJAAIBAhZXcm9uZyBlcXVpcG1lbnQgc3RyaW5nBAl0ZW1wUHJvZEIJAQZkcmVzc0IEBQtjdXJyZW50U2VncwkBDnByb2RTdHJUb0J5dGVzAQkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kBgUDbmlsBAhzZWdCcEF1eAkAkQMCCQC1CQIJAJEDAgUFbmV3RXEFC3NlZ0JhY2twYWNrAgE7AAEECmJ1ZmZFZmZlY3QDCQAAAgUIc2VnQnBBdXgCAAAABARhdXgwCQCRAwIJALUJAgUIc2VnQnBBdXgCASwAAAMJAAACBQRhdXgwAgAAAAQGaWR4Q250CQC1CQIFBGF1eDACAToEA2lkeAkAkQMCBQZpZHhDbnQAAAQDY250CQCRAwIFBmlkeENudAABAwMDAwMJAAACBQNpZHgCAjA2BgkAAAIFA2lkeAICMDcGCQAAAgUDaWR4AgIwOAkBAiE9AgUDY250AgAHCQBmAgkBDXBhcnNlSW50VmFsdWUBBQNjbnQAAAcJAQ1wYXJzZUludFZhbHVlAQkAkQMCCQC1CQIJAJEDAgUQcHJvZHVjdGlvbk1hdHJpeAkBDXBhcnNlSW50VmFsdWUBBQNpZHgCAV8FCnJJZHhFZmZlY3QAAAQFc3RhdHMJAQxnZXREdWNrU3RhdHMEBQR0aGlzBQtkdWNrQXNzZXRJZAUKYnVmZkVmZmVjdAYECG5ld1Byb2RCCQEGZHJlc3NCBAUFbmV3RXEFCXRlbXBQcm9kQgcFBXN0YXRzBApuZXdQcm9kU3RyCQEOYnl0ZXNUb1Byb2RTdHIBBQhuZXdQcm9kQgkAlAoCCQDOCAIJAMwIAgkBC1N0cmluZ0VudHJ5AgUFZXFLZXkFCWVxdWlwbWVudAkAzAgCCQELU3RyaW5nRW50cnkCBQVicEtleQkAugkCCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCmJwSWR4TGV2ZWwJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhSZXMJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhNYXQJAMwIAgUKbmV3UHJvZFN0cgUDbmlsAgE6CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQxrZXlEdWNrQnVmZnMBBQtkdWNrQXNzZXRJZAkAuQkCCQDMCAIJAKQDAQkAkQMCBQVzdGF0cwAHCQDMCAIJAKQDAQkAkQMCBQVzdGF0cwAICQDMCAIJAKQDAQkAkQMCBQVzdGF0cwAJCQDMCAIJAKQDAQkAkQMCBQVzdGF0cwAKCQDMCAIJAKQDAQkAkQMCBQVzdGF0cwALBQNuaWwCAV8FA25pbAUNcHJvbG9nQWN0aW9ucwAAAWkBD2ZvcnRpZmljYXRlTGFuZAILbGFuZEFzc2V0SWQEcGxhbgQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQEYWRkcgkApQgBCAUBaQxvcmlnaW5DYWxsZXIEC2R1Y2tBc3NldElkCQELdmFsdWVPckVsc2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFBGFkZHICAAQJZHVja1N0YXRzCQEMZ2V0RHVja1N0YXRzBAUEdGhpcwULZHVja0Fzc2V0SWQAAAcEB2ZvcnRLZXkJARdrZXlGb3J0aWZpY2F0aW9uc0J5TGFuZAEFC2xhbmRBc3NldElkBAxjdXJyZW50Rm9ydHMJALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBBQdmb3J0S2V5Agw6MF8xNTowXzE4OjACAV8EBWFzc2V0CQEFdmFsdWUBCQDsBwEJANkEAQULbGFuZEFzc2V0SWQECWxhbmRJbmRleAkAaQIJAQ9udW1QaWVjZXNCeVNpemUBCQCRAwIJALUJAggFBWFzc2V0C2Rlc2NyaXB0aW9uAgFfBQtyZWNMYW5kU2l6ZQUFU1NJWkUECmluZnJhTGV2ZWwJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBFmtleUluZnJhTGV2ZWxCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAAABAV3aEtleQkBEmtleVdhcmVob3VzZUJ5TGFuZAEFC2xhbmRBc3NldElkBAJ3aAkBDGdldFdhcmVob3VzZQMFBXdoS2V5BQlsYW5kSW5kZXgFCmluZnJhTGV2ZWwEB2N1ckxvZnQJALUJAgkAkQMCBQJ3aAUJd2hJZHhMT0ZUAgFfBARjdXJPCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUHY3VyTG9mdAULdm9sT2NjdXBpZWQEBGN1ckYJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQdjdXJMb2Z0BQd2b2xGcmVlBAhuZXdGb3J0cwkAtQkCBQRwbGFuAgFfBA8kdDAxMDM3NjExMDM4NzYJAQVmb3J0QgYFDGN1cnJlbnRGb3J0cwkBDnByb2RTdHJUb0J5dGVzAQkAkQMCBQJ3aAUJd2hJZHhQcm9kBQRjdXJPBQRjdXJGBgUDbmlsBAl0ZW1wUHJvZEIIBQ8kdDAxMDM3NjExMDM4NzYCXzEEBXRlbXBPCAUPJHQwMTAzNzYxMTAzODc2Al8yBAV0ZW1wRggFDyR0MDEwMzc2MTEwMzg3NgJfMwQPJHQwMTAzODc5MTAzOTc1CQEFZm9ydEIGBQhuZXdGb3J0cwUJdGVtcFByb2RCBQV0ZW1wTwUFdGVtcEYHBQlkdWNrU3RhdHMECG5ld1Byb2RCCAUPJHQwMTAzODc5MTAzOTc1Al8xBARuZXdPCAUPJHQwMTAzODc5MTAzOTc1Al8yBARuZXdGCAUPJHQwMTAzODc5MTAzOTc1Al8zBApuZXdQcm9kU3RyCQEOYnl0ZXNUb1Byb2RTdHIBBQhuZXdQcm9kQgQKbmV3TG9mdFN0cgkAuQkCCQDMCAIJAJEDAgUHY3VyTG9mdAUJdm9sTG9ja2VkCQDMCAIJAKQDAQUEbmV3TwkAzAgCCQCkAwEFBG5ld0YJAMwIAgkAkQMCBQdjdXJMb2Z0BQh2b2xUb3RhbAUDbmlsAgFfCQCUCgIJAM4IAgkAzAgCCQELU3RyaW5nRW50cnkCBQdmb3J0S2V5BQRwbGFuCQDMCAIJAQtTdHJpbmdFbnRyeQIFBXdoS2V5CQC6CQIJAMwIAgkAkQMCBQJ3aAULd2hJZHhMZXZlbHMJAMwIAgkAkQMCBQJ3aAUId2hJZHhSZXMJAMwIAgkAkQMCBQJ3aAUId2hJZHhNYXQJAMwIAgUKbmV3UHJvZFN0cgkAzAgCBQpuZXdMb2Z0U3RyBQNuaWwCAToFA25pbAUNcHJvbG9nQWN0aW9ucwAAAWkBE2luaXREdWNrVG91ckF0dGVtcHQBC2R1Y2tBc3NldElkAwkBAiE9AggFAWkGY2FsbGVyBRJ0b3VybmFtZW50Q29udHJhY3QJAAIBAg1BY2Nlc3MgZGVuaWVkBAlrZXlIZWFsdGgJAQ1rZXlEdWNrSGVhbHRoAQULZHVja0Fzc2V0SWQEBW1heEhQCQEJbWF4SGVhbHRoAQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEMa2V5RHVja0xldmVsAQULZHVja0Fzc2V0SWQAAAQJY3VySGVhbHRoCQELdmFsdWVPckVsc2UCCQCfCAEFCWtleUhlYWx0aAUFbWF4SFAECWN1ckxvY0tleQkBD2tleUR1Y2tMb2NhdGlvbgEFC2R1Y2tBc3NldElkBAtjdXJMb2NhdGlvbgkBC3ZhbHVlT3JFbHNlAgkAoggBBQljdXJMb2NLZXkFD0RFRkFVTFRMT0NBVElPTgQGbGFzdElkCQELdmFsdWVPckVsc2UCCQCaCAIFEnRvdXJuYW1lbnRDb250cmFjdAUNbGFzdFRvdXJJZEtleQAABAx0b3VyTG9jYXRpb24JAKwCAgkApAMBBQZsYXN0SWQCBF9UXzAJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBDmtleVNhdmVkSGVhbHRoAQULZHVja0Fzc2V0SWQFCWN1ckhlYWx0aAkAzAgCCQEMSW50ZWdlckVudHJ5AgUJa2V5SGVhbHRoBQVtYXhIUAkAzAgCCQELU3RyaW5nRW50cnkCCQEQa2V5U2F2ZWRMb2NhdGlvbgEFC2R1Y2tBc3NldElkBQtjdXJMb2NhdGlvbgkAzAgCCQELU3RyaW5nRW50cnkCBQljdXJMb2NLZXkFDHRvdXJMb2NhdGlvbgUDbmlsBQx0b3VyTG9jYXRpb24BaQEMYnJlYWtBdHRlbXB0AAQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQkApQgBCAUBaQZjYWxsZXICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQECWN1ckxvY0tleQkBD2tleUR1Y2tMb2NhdGlvbgEFC2R1Y2tBc3NldElkBAtjdXJMb2NhdGlvbgkBC3ZhbHVlT3JFbHNlAgkAoggBBQljdXJMb2NLZXkFD0RFRkFVTFRMT0NBVElPTgMJAQIhPQIJAJEDAgkAtQkCBQtjdXJMb2NhdGlvbgIBXwUKbG9jSWR4VHlwZQIBVAkAAgECIllvdXIgZHVjayBpcyBub3QgaW4gdGhlIHRvdXJuYW1lbnQEC3NhdmVkSGVhbHRoCQERQGV4dHJOYXRpdmUoMTA1NSkBCQEOa2V5U2F2ZWRIZWFsdGgBBQtkdWNrQXNzZXRJZAQNc2F2ZWRMb2NhdGlvbgkBEUBleHRyTmF0aXZlKDEwNTgpAQkBEGtleVNhdmVkTG9jYXRpb24BBQtkdWNrQXNzZXRJZAkAlAoCCQDNCAIJAM0IAgUNcHJvbG9nQWN0aW9ucwkBDEludGVnZXJFbnRyeQIJAQ1rZXlEdWNrSGVhbHRoAQULZHVja0Fzc2V0SWQFC3NhdmVkSGVhbHRoCQELU3RyaW5nRW50cnkCBQljdXJMb2NLZXkFDXNhdmVkTG9jYXRpb24FC2N1ckxvY2F0aW9uAWkBFmV4aXRUb3VybmFtZW50SW50ZXJuYWwBC2R1Y2tBc3NldElkAwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQINQWNjZXNzIGRlbmllZAQLc2F2ZWRIZWFsdGgJARFAZXh0ck5hdGl2ZSgxMDU1KQEJAQ5rZXlTYXZlZEhlYWx0aAEFC2R1Y2tBc3NldElkBA1zYXZlZExvY2F0aW9uCQERQGV4dHJOYXRpdmUoMTA1OCkBCQEQa2V5U2F2ZWRMb2NhdGlvbgEFC2R1Y2tBc3NldElkCQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIJAQ1rZXlEdWNrSGVhbHRoAQULZHVja0Fzc2V0SWQFC3NhdmVkSGVhbHRoCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAUNc2F2ZWRMb2NhdGlvbgUDbmlsBwFpARRleGl0RGVsaXZlcnlJbnRlcm5hbAELZHVja0Fzc2V0SWQDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAg1BY2Nlc3MgZGVuaWVkBAFlCQESZXhpdERlbGl2ZXJ5Q29tbW9uBAULZHVja0Fzc2V0SWQHAAAAAAkAlAoCCQDOCAIIBQFlAl8xCAUBZQJfMgcBaQEQYXV0b0V4aXREZWxpdmVyeQQLZHVja0Fzc2V0SWQFbmV3SFAGcmVhc29uBXNjb3JlAwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQINQWNjZXNzIGRlbmllZAQBZQkBEmV4aXREZWxpdmVyeUNvbW1vbgQFC2R1Y2tBc3NldElkBgUFbmV3SFAFBXNjb3JlCQCUCgIIBQFlAl8xCAUBZQJfMwFpAQ1icmVha0RlbGl2ZXJ5AAkAlAoCCQEGcHJvbG9nAQUBaQINYnJlYWtEZWxpdmVyeQFpAQ5wcmVwYXJlUm9iYmVyeQIHbWVzc2FnZQNzaWcEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBASEBCQDEEwMFB21lc3NhZ2UFA3NpZwUDcHViCQACAQIYc2lnbmF0dXJlIGRvZXMgbm90IG1hdGNoAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQIiZXhhY3RseSAxIHBheW1lbnQgbXVzdCBiZSBhdHRhY2hlZAQDcG10CQCRAwIIBQFpCHBheW1lbnRzAAAEBndsZ0FtdAgFA3BtdAZhbW91bnQDAwkBASEBCQEJaXNEZWZpbmVkAQgFA3BtdAdhc3NldElkBgkBAiE9AgkBBXZhbHVlAQgFA3BtdAdhc3NldElkBQp3bGdBc3NldElkCQACAQIVV0xHT0xEIHBheW1lbnRzIG9ubHkhBAVwYXJ0cwkAtQkCCQCwCQEFB21lc3NhZ2UCAXwDCQBmAgACCQCQAwEFBXBhcnRzCQACAQIUV3JvbmcgbWVzc2FnZSBmb3JtYXQEC2R1Y2tBc3NldElkCQCRAwIFBXBhcnRzAAADCQEPY2hlY2tUb3VybmFtZW50AQULZHVja0Fzc2V0SWQJAAIBAh5wcmVwYXJlUm9iYmVyeV9jaGVja1RvdXJuYW1lbnQDCQENY2hlY2tEZWxpdmVyeQEFC2R1Y2tBc3NldElkCQACAQIccHJlcGFyZVJvYmJlcnlfY2hlY2tEZWxpdmVyeQQHcm9iQ29zdAgJAQ5nZXRSb2JiZXJ5RGF0YQIFBHRoaXMFC2R1Y2tBc3NldElkAl8xAwkAZgIFB3JvYkNvc3QFBndsZ0FtdAkAAgEJAKwCAgkArAICCQCsAgICCFBheW1lbnQgCQCkAwEFBndsZ0FtdAIMIDwgcmVxdWlyZWQgCQCkAwEFB3JvYkNvc3QECmNhbmRpZGF0ZXMJALUJAgkAkQMCBQVwYXJ0cwABAgFfBANub3cIBQlsYXN0QmxvY2sJdGltZXN0YW1wBAlkdWNrU3RhdGUJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBE2tleUR1Y2tSb2JiZXJ5U3RhdGUBBQtkdWNrQXNzZXRJZAAABApsb2NrZWRMYW5kCQELdmFsdWVPckVsc2UCCQCiCAEJARNrZXlMb2NrZWRMYW5kQnlEdWNrAQULZHVja0Fzc2V0SWQCAAQHbGFuZEVUQQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQESa2V5TGFuZENvb2xkb3duRVRBAQUKbG9ja2VkTGFuZAAAAwMJAQIhPQIFCWR1Y2tTdGF0ZQULZHVja0lkeEZyZWUJAGYCBQdsYW5kRVRBBQNub3cHCQACAQkArAICAidZb3UgYWxyZWFkeSBzdGFydGVkIHJvYmJpbmcsIHdhaXQgdGlsbCAJAKQDAQUHbGFuZEVUQQoBB2NoZWNrZXICA2FjYwtsYW5kQXNzZXRJZAQFc3RhdGUJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBE2tleUxhbmRSb2JiZXJ5U3RhdGUBBQtsYW5kQXNzZXRJZAAABAtjb29sZG93bkVUQQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQESa2V5TGFuZENvb2xkb3duRVRBAQULbGFuZEFzc2V0SWQAAAMJAGYCBQVzdGF0ZQkAkAMBBRBsYW5kUm9iQ29vbGRvd25zCQACAQINSW52YWxpZCBzdGF0ZQMJAGYCBQNub3cFC2Nvb2xkb3duRVRBBApzdGFrZWRUaW1lCQELdmFsdWVPckVsc2UCCQCfCAEJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQULbGFuZEFzc2V0SWQAAAMJAGcCAAAFCnN0YWtlZFRpbWUFA2FjYwQBYQkBBXZhbHVlAQkA7AcBCQDZBAEFC2xhbmRBc3NldElkBAFkCQC1CQIIBQFhC2Rlc2NyaXB0aW9uAgFfBAZwaWVjZXMJAQ9udW1QaWVjZXNCeVNpemUBCQCRAwIFAWQFC3JlY0xhbmRTaXplBAxwcm9kdWN0aXZpdHkJAQxhcHBseUJvbnVzZXMCBQtsYW5kQXNzZXRJZAUGcGllY2VzBAlkZWx0YVRpbWUJAGUCBQNub3cFCnN0YWtlZFRpbWUECGF2YWlsUmVzCQBrAwUJZGVsdGFUaW1lCQBoAgUMcHJvZHVjdGl2aXR5BQZwaWVjZXMFCURBWU1JTExJUwMJAGYCBQ5NSU5fUkVTX1RPX1JPQgUIYXZhaWxSZXMFA2FjYwkAzQgCBQNhY2MFC2xhbmRBc3NldElkBQNhY2MECGZpbHRlcmVkCgACJGwFCmNhbmRpZGF0ZXMKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBB2NoZWNrZXICBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDEwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoDCQAAAgkAkAMBBQhmaWx0ZXJlZAAACQACAQIZTm8gY2FuZGlkYXRlcyBmb3Igcm9iYmVyeQQGcm5kSWR4CQEPZ2V0UmFuZG9tTnVtYmVyAwkAkAMBBQhmaWx0ZXJlZAUHbWVzc2FnZQUDc2lnBAtsYW5kQXNzZXRJZAkAkQMCBQhmaWx0ZXJlZAUGcm5kSWR4CQCUCgIJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBE2tleUxhbmRSb2JiZXJ5U3RhdGUBBQtsYW5kQXNzZXRJZAUMcm9iSWR4TG9ja2VkCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQESa2V5TGFuZENvb2xkb3duRVRBAQULbGFuZEFzc2V0SWQJAGQCBQNub3cJAJEDAgUQbGFuZFJvYkNvb2xkb3ducwUMcm9iSWR4TG9ja2VkCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQETa2V5RHVja1JvYmJlcnlTdGF0ZQEFC2R1Y2tBc3NldElkBRBkdWNrSWR4UHJlcGFyaW5nCQDMCAIJAQtTdHJpbmdFbnRyeQIJARNrZXlMb2NrZWRMYW5kQnlEdWNrAQULZHVja0Fzc2V0SWQFC2xhbmRBc3NldElkBQNuaWwFDXByb2xvZ0FjdGlvbnMFC2xhbmRBc3NldElkAWkBB3JvYkxhbmQCB21lc3NhZ2UDc2lnBA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQEhAQkAxBMDBQdtZXNzYWdlBQNzaWcFA3B1YgkAAgECGHNpZ25hdHVyZSBkb2VzIG5vdCBtYXRjaAQIdXNlckFkZHIJAKUIAQgFAWkGY2FsbGVyBAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFCHVzZXJBZGRyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkBANub3cIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQCUCgIJAM0IAgUNcHJvbG9nQWN0aW9ucwkBDEludGVnZXJFbnRyeQIJARhrZXlMYXN0Um9iYmVyeVRpbWVCeUR1Y2sBBQtkdWNrQXNzZXRJZAUDbm93AAABaQEOYWNjZXB0RGVsaXZlcnkABA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQQIdXNlckFkZHIJAKUIAQgFAWkGY2FsbGVyBAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFCHVzZXJBZGRyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkBAlmdW5kVG90YWwJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPZWNvbm9teUNvbnRyYWN0BQ9kZWxpdmVyeUZ1bmRLZXkAAAQLbG9ja2VkVG90YWwJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPZWNvbm9teUNvbnRyYWN0BRFkZWxpdmVyeUxvY2tlZEtleQAAAwkAZgIFFU1JTl9VU0RUX0ZFRV9ERUxJVkVSWQkAZQIFCWZ1bmRUb3RhbAULbG9ja2VkVG90YWwJAAIBCQCsAgIJAKwCAgkArAICAiBEZWxpdmVyeSBpcyBub3QgYXZhaWxhYmxlLCBmdW5kPQkBCmZpeGVkUG9pbnQCBQlmdW5kVG90YWwABgIJLCBsb2NrZWQ9CQEKZml4ZWRQb2ludAIFC2xvY2tlZFRvdGFsAAYEA25vdwgFCWxhc3RCbG9jawl0aW1lc3RhbXAECGRlbGF5RVRBCQELdmFsdWVPckVsc2UCCQCfCAEJARZrZXlEZWxpdmVyeURlbGF5QnlEdWNrAQULZHVja0Fzc2V0SWQAAAMJAGYCBQhkZWxheUVUQQUDbm93CQACAQkArAICAipEZWxpdmVyeSBpcyBmb3JiaWRkZW4gZm9yIHlvdXIgZHVjayB1bnRpbCAJAKQDAQUIZGVsYXlFVEEEBmhlYWx0aAkBEUBleHRyTmF0aXZlKDEwNTUpAQkBDWtleUR1Y2tIZWFsdGgBBQtkdWNrQXNzZXRJZAMJAGcCAAAFBmhlYWx0aAkAAgECK1lvdSBjYW5ub3QgYWNjZXB0IGRlbGl2ZXJ5IHdpdGggemVybyBoZWFsdGgECGNvdW50S2V5CQEUa2V5VXNlckRlbGl2ZXJ5Q291bnQBBQh1c2VyQWRkcgQFY291bnQJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUIY291bnRLZXkAAAQHbGFzdERheQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEWa2V5VXNlckxhc3REZWxpdmVyeURheQEFCHVzZXJBZGRyAAAEBXRvZGF5CQBpAgUDbm93BQlEQVlNSUxMSVMEBWFjcmVzCQELdmFsdWVPckVsc2UCCQCaCAIFDWFjcmVzQ29udHJhY3QJARprZXlBY3Jlc1N0YWtlZEFtb3VudEJ5VXNlcgEFCHVzZXJBZGRyAAAEEWFsbG93ZWREZWxpdmVyaWVzCQBkAgUXQUxMT1dFRF9GUkVFX0RFTElWRVJJRVMJAGkCBQVhY3JlcwUaQUNSRVNfRk9SX0RFTElWRVJZX0FUVEVNUFQDAwkAZwIFBWNvdW50BRFhbGxvd2VkRGVsaXZlcmllcwkAAAIFB2xhc3REYXkFBXRvZGF5BwkAAgEJAKwCAgkArAICAhFZb3UgYWxyZWFkeSB1c2VkIAkApAMBBRFhbGxvd2VkRGVsaXZlcmllcwIcIGRlbGl2ZXJ5IGF0dGVtcHRzIGZvciB0b2RheQMJAQ9jaGVja1RvdXJuYW1lbnQBBQtkdWNrQXNzZXRJZAkAAgECHmFjY2VwdERlbGl2ZXJ5X2NoZWNrVG91cm5hbWVudAMJAQ1jaGVja0RlbGl2ZXJ5AQULZHVja0Fzc2V0SWQJAAIBAhxhY2NlcHREZWxpdmVyeV9jaGVja0RlbGl2ZXJ5BA5uZXdMb2NrZWRUb3RhbAkBBWFzSW50AQkA/AcEBQ9lY29ub215Q29udHJhY3QCFHVwZGF0ZURlbGl2ZXJ5TG9ja2VkCQDMCAIJAGQCBQtsb2NrZWRUb3RhbAUVTUlOX1VTRFRfRkVFX0RFTElWRVJZBQNuaWwFA25pbAQJY3VyTG9jS2V5CQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQEC2N1ckxvY2F0aW9uCQELdmFsdWVPckVsc2UCCQCiCAEFCWN1ckxvY0tleQUPREVGQVVMVExPQ0FUSU9OBBBkZWxpdmVyeUxvY2F0aW9uCQCsAgIJAKQDAQUDbm93AgRfRF8wCQCUCgIJAM4IAgkAzAgCCQELU3RyaW5nRW50cnkCCQEQa2V5U2F2ZWRMb2NhdGlvbgEFC2R1Y2tBc3NldElkBQtjdXJMb2NhdGlvbgkAzAgCCQELU3RyaW5nRW50cnkCBQljdXJMb2NLZXkFEGRlbGl2ZXJ5TG9jYXRpb24JAMwIAgkBDEludGVnZXJFbnRyeQIFCGNvdW50S2V5AwkBAiE9AgUHbGFzdERheQUFdG9kYXkAAAUFY291bnQFA25pbAUNcHJvbG9nQWN0aW9ucwkAlAoCBRBkZWxpdmVyeUxvY2F0aW9uBQ5uZXdMb2NrZWRUb3RhbAFpARVjaGVja0RlbGl2ZXJ5Q2FsbGJhY2sBC2R1Y2tBc3NldElkAwkBAiE9AggFAWkGY2FsbGVyBRJ0b3VybmFtZW50Q29udHJhY3QJAAIBAg1BY2Nlc3MgZGVuaWVkCQCUCgIFA25pbAkBDWNoZWNrRGVsaXZlcnkBBQtkdWNrQXNzZXRJZAAdrSIe", "height": 2829111, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 6JQn6zjbVZccBYm5XhfrGCh2R1LZUiQ3jmVyQ495S3pC Next: 8C9oLw8dWj9p78E8TwauBAyEVZQWuCbScPpNFUMBsfVc Diff:
Old | New | Differences | |
---|---|---|---|
179 | 179 | ||
180 | 180 | let aI = 6 | |
181 | 181 | ||
182 | - | let aJ = | |
183 | - | ||
184 | - | let aK = | |
185 | - | ||
186 | - | let aL = | |
187 | - | ||
188 | - | let aM = | |
189 | - | ||
190 | - | let aN = | |
191 | - | ||
192 | - | let aO = | |
193 | - | ||
194 | - | let aP = | |
195 | - | ||
196 | - | let aQ = | |
197 | - | ||
198 | - | let aR = | |
199 | - | ||
200 | - | let aS = | |
201 | - | ||
202 | - | let aT = | |
203 | - | ||
204 | - | let aU = [" | |
205 | - | ||
206 | - | let aV = | |
207 | - | ||
208 | - | let aW = | |
209 | - | ||
210 | - | let aX = [ | |
211 | - | ||
212 | - | let aY = | |
213 | - | ||
214 | - | let aZ = | |
215 | - | ||
216 | - | let ba = | |
217 | - | ||
218 | - | let bb = | |
182 | + | let aJ = 25 | |
183 | + | ||
184 | + | let aK = 3456000 | |
185 | + | ||
186 | + | let aL = 10000000000 | |
187 | + | ||
188 | + | let aM = "Africa_F_Africa" | |
189 | + | ||
190 | + | let aN = 39637 | |
191 | + | ||
192 | + | let aO = 10 | |
193 | + | ||
194 | + | let aP = 50000 | |
195 | + | ||
196 | + | let aQ = 600000 | |
197 | + | ||
198 | + | let aR = 1 | |
199 | + | ||
200 | + | let aS = 50000000 | |
201 | + | ||
202 | + | let aT = ["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"] | |
203 | + | ||
204 | + | let aU = ["Americas", "Europe", "Asia", "Africa", "Oceania"] | |
205 | + | ||
206 | + | let aV = 10000000 | |
207 | + | ||
208 | + | let aW = [15, 16, 17, 18, 19, 20] | |
209 | + | ||
210 | + | let aX = ["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_"] | |
211 | + | ||
212 | + | let aY = 6 | |
213 | + | ||
214 | + | let aZ = 8 | |
215 | + | ||
216 | + | let ba = 9 | |
217 | + | ||
218 | + | let bb = 10 | |
219 | 219 | ||
220 | 220 | let bc = 10 | |
221 | 221 | ||
222 | - | let bd = 10 | |
223 | - | ||
224 | - | let be = 0 | |
225 | - | ||
226 | - | let bf = 1 | |
227 | - | ||
228 | - | let bg = 2 | |
229 | - | ||
230 | - | let bh = 3 | |
231 | - | ||
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 (Q) = ("wh_" + Q) | |
272 | - | ||
273 | - | ||
274 | - | func bE (bv) = ("infraLevel_" + bv) | |
275 | - | ||
276 | - | ||
277 | - | func bF (Q) = ("fortifications_" + Q) | |
278 | - | ||
279 | - | ||
280 | - | func bG (bv) = ("duckCustomNameByAssetId_" + bv) | |
281 | - | ||
282 | - | ||
283 | - | func bH (c) = ("accountCustomNameByAddr_" + c) | |
284 | - | ||
285 | - | ||
286 | - | func bI (c) = ("accRefBy_" + c) | |
287 | - | ||
288 | - | ||
289 | - | func bJ (B) = ("onboardArtActivatedOnDuck_" + B) | |
290 | - | ||
291 | - | ||
292 | - | func bK (c) = ("onboardArtActivatedDuckBy_" + c) | |
293 | - | ||
294 | - | ||
295 | - | func bL (c) = ("accReferrals_" + c) | |
296 | - | ||
297 | - | ||
298 | - | func bM (bv) = ("duckOwner_" + bv) | |
299 | - | ||
300 | - | ||
301 | - | func bN (bC) = ("stakedDuckByOwner_" + bC) | |
302 | - | ||
303 | - | ||
304 | - | func bO (B) = ("backPack_" + B) | |
305 | - | ||
306 | - | ||
307 | - | func bP (B) = ("duckLocation_" + B) | |
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,B) = makeString(["%s%d%s__bestResultByTourAndDuck", toString(bX), B], "__") | |
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, "_") | |
222 | + | let bd = 0 | |
223 | + | ||
224 | + | let be = 1 | |
225 | + | ||
226 | + | let bf = 2 | |
227 | + | ||
228 | + | let bg = 3 | |
229 | + | ||
230 | + | let bh = 4 | |
231 | + | ||
232 | + | let bi = 0 | |
233 | + | ||
234 | + | let bj = 1 | |
235 | + | ||
236 | + | let bk = 2 | |
237 | + | ||
238 | + | let bl = 3 | |
239 | + | ||
240 | + | let bm = 0 | |
241 | + | ||
242 | + | let bn = 1 | |
243 | + | ||
244 | + | let bo = 2 | |
245 | + | ||
246 | + | let bp = 3 | |
247 | + | ||
248 | + | let bq = 0 | |
249 | + | ||
250 | + | let br = 1 | |
251 | + | ||
252 | + | let bs = 2 | |
253 | + | ||
254 | + | func bt (bu) = ("no_" + bu) | |
255 | + | ||
256 | + | ||
257 | + | func bv (bu) = ("lcna_" + bu) | |
258 | + | ||
259 | + | ||
260 | + | func bw (bu) = ("st_" + bu) | |
261 | + | ||
262 | + | ||
263 | + | func bx (by,bu) = makeString(["las", by, bu], "_") | |
264 | + | ||
265 | + | ||
266 | + | func bz (bA,bu,bB) = ((((("sttao_" + bA) + "_") + bu) + "_") + bB) | |
267 | + | ||
268 | + | ||
269 | + | func bC (Q) = ("wh_" + Q) | |
270 | + | ||
271 | + | ||
272 | + | func bD (bu) = ("infraLevel_" + bu) | |
273 | + | ||
274 | + | ||
275 | + | func bE (Q) = ("fortifications_" + Q) | |
276 | + | ||
277 | + | ||
278 | + | func bF (bu) = ("duckCustomNameByAssetId_" + bu) | |
279 | + | ||
280 | + | ||
281 | + | func bG (c) = ("accountCustomNameByAddr_" + c) | |
282 | + | ||
283 | + | ||
284 | + | func bH (c) = ("accRefBy_" + c) | |
285 | + | ||
286 | + | ||
287 | + | func bI (B) = ("onboardArtActivatedOnDuck_" + B) | |
288 | + | ||
289 | + | ||
290 | + | func bJ (c) = ("onboardArtActivatedDuckBy_" + c) | |
291 | + | ||
292 | + | ||
293 | + | func bK (c) = ("accReferrals_" + c) | |
294 | + | ||
295 | + | ||
296 | + | func bL (bu) = ("duckOwner_" + bu) | |
297 | + | ||
298 | + | ||
299 | + | func bM (bB) = ("stakedDuckByOwner_" + bB) | |
300 | + | ||
301 | + | ||
302 | + | func bN (B) = ("backPack_" + B) | |
303 | + | ||
304 | + | ||
305 | + | func bO (B) = ("duckLocation_" + B) | |
306 | + | ||
307 | + | ||
308 | + | func bP (bQ) = ("%s%s__userGwlReleaseTime__" + bQ) | |
309 | + | ||
310 | + | ||
311 | + | func bR () = "emergencyWarehouseProducts" | |
312 | + | ||
313 | + | ||
314 | + | let bS = "deliveryFund" | |
315 | + | ||
316 | + | let bT = "deliveryLocked" | |
317 | + | ||
318 | + | let bU = "%s__lastTourId" | |
319 | + | ||
320 | + | func bV (bW) = ("%s%d__tourStaticData__" + toString(bW)) | |
321 | + | ||
322 | + | ||
323 | + | func bX (bW) = ("%s%d__tourDynamicData__" + toString(bW)) | |
324 | + | ||
325 | + | ||
326 | + | func bY (bW,B) = makeString(["%s%d%s__bestResultByTourAndDuck", toString(bW), B], "__") | |
327 | + | ||
328 | + | ||
329 | + | let bZ = 0 | |
330 | + | ||
331 | + | let ca = 1 | |
332 | + | ||
333 | + | let cb = 6 | |
334 | + | ||
335 | + | let cc = 1 | |
336 | + | ||
337 | + | func cd (ce,bW) = { | |
338 | + | let cf = split(valueOrErrorMessage(getString(ce, bV(bW)), (("Error reading tournament " + toString(bW)) + " data")), "__") | |
339 | + | let cg = split_4C(valueOrErrorMessage(getString(ce, bX(bW)), (("Error reading tournament " + toString(bW)) + " data")), "__") | |
340 | + | [cf, cg] | |
341 | + | } | |
342 | + | ||
343 | + | ||
344 | + | func ch (ce,ci) = { | |
345 | + | let cj = valueOrElse(getInteger(ce, bU), 0) | |
346 | + | let ck = split(ci, "_") | |
349 | 347 | let aA = lastBlock.timestamp | |
350 | - | let | |
351 | - | let | |
352 | - | let | |
353 | - | if (if (if (( | |
354 | - | then (parseIntValue( | |
348 | + | let cl = cd(ce, cj) | |
349 | + | let cf = cl[bZ] | |
350 | + | let cg = cl[ca] | |
351 | + | if (if (if ((ck[br] == "T")) | |
352 | + | then (parseIntValue(ck[bq]) == cj) | |
355 | 353 | else false) | |
356 | - | then ( | |
354 | + | then (cg[cc] == "INPROGRESS") | |
357 | 355 | else false) | |
358 | - | then (parseIntValue( | |
356 | + | then (parseIntValue(cf[cb]) > aA) | |
359 | 357 | else false | |
360 | 358 | } | |
361 | 359 | ||
362 | 360 | ||
363 | - | func | |
364 | - | let | |
361 | + | func cm (ci) = { | |
362 | + | let ck = split(ci, "_") | |
365 | 363 | let aA = lastBlock.timestamp | |
366 | - | let | |
367 | - | let | |
368 | - | if (if (( | |
369 | - | then (( | |
364 | + | let cn = parseIntValue(ck[bq]) | |
365 | + | let co = parseIntValue(ck[bs]) | |
366 | + | if (if ((ck[br] == "D")) | |
367 | + | then ((cn + aQ) > aA) | |
370 | 368 | else false) | |
371 | - | then (3 >= | |
369 | + | then (3 >= co) | |
372 | 370 | else false | |
373 | 371 | } | |
374 | 372 | ||
375 | 373 | ||
376 | - | func | |
377 | - | let | |
378 | - | if (( | |
379 | - | then ( | |
374 | + | func cp (ci) = { | |
375 | + | let cq = split(ci, "_")[br] | |
376 | + | if ((cq != "T")) | |
377 | + | then (cq != "D") | |
380 | 378 | else false | |
381 | 379 | } | |
382 | 380 | ||
383 | 381 | ||
384 | - | func | |
385 | - | let | |
386 | - | let | |
382 | + | func cr (ce,ci) = { | |
383 | + | let cj = valueOrElse(getInteger(ce, bU), 0) | |
384 | + | let ck = split(ci, "_") | |
387 | 385 | let aA = lastBlock.timestamp | |
388 | - | let | |
389 | - | let | |
390 | - | let | |
391 | - | let | |
392 | - | if (( | |
386 | + | let cl = cd(ce, cj) | |
387 | + | let cf = cl[bZ] | |
388 | + | let cg = cl[ca] | |
389 | + | let cq = ck[br] | |
390 | + | if ((cq == "D")) | |
393 | 391 | then true | |
394 | - | else if (if (if (( | |
395 | - | then (parseIntValue( | |
392 | + | else if (if (if ((ck[br] == "T")) | |
393 | + | then (parseIntValue(ck[bq]) == cj) | |
396 | 394 | else false) | |
397 | - | then ( | |
395 | + | then (cg[cc] == "INPROGRESS") | |
398 | 396 | else false) | |
399 | - | then (parseIntValue( | |
397 | + | then (parseIntValue(cf[cb]) > aA) | |
400 | 398 | else false | |
401 | 399 | } | |
402 | 400 | ||
403 | 401 | ||
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 | - | ||
402 | + | func cs (ct) = (parseIntValue(ct[aY]) * aV) | |
403 | + | ||
404 | + | ||
405 | + | func cu (cv,cw,cx) = throw(((((("Cheat attempt: oldLoc=" + cv) + ", newLoc=") + cw) + ", case=") + toString(cx))) | |
406 | + | ||
407 | + | ||
408 | + | let cy = false | |
409 | 409 | ||
410 | 410 | let cz = false | |
411 | 411 | ||
412 | - | let cA = false | |
413 | - | ||
414 | - | let cB = 86400000 | |
415 | - | ||
416 | - | let cC = take(drop(this.bytes, 1), 1) | |
417 | - | ||
418 | - | let cD = { | |
419 | - | let cE = cC | |
420 | - | if ((base58'2W' == cE)) | |
412 | + | let cA = 86400000 | |
413 | + | ||
414 | + | let cB = take(drop(this.bytes, 1), 1) | |
415 | + | ||
416 | + | let cC = { | |
417 | + | let cD = cB | |
418 | + | if ((base58'2W' == cD)) | |
421 | 419 | then base58'9wc3LXNA4TEBsXyKtoLE9mrbDD7WMHXvXrCjZvabLAsi' | |
422 | - | else if ((base58'2T' == | |
420 | + | else if ((base58'2T' == cD)) | |
423 | 421 | then base58'6mWwf9mZBjVgkC54idpyaZLQfAosD914wT8fGf2iiY63' | |
424 | 422 | else throw("Unknown chain") | |
425 | 423 | } | |
426 | 424 | ||
427 | - | let | |
428 | - | let | |
429 | - | if ((base58'2W' == | |
425 | + | let cE = { | |
426 | + | let cD = cB | |
427 | + | if ((base58'2W' == cD)) | |
430 | 428 | then "3PQCuvFbvh4LkPUnrnU1z3jnbA1p9m3WNhv" | |
431 | - | else if ((base58'2T' == | |
429 | + | else if ((base58'2T' == cD)) | |
432 | 430 | then "3MumkGGztCKAXpWDqxkddofqXSUbqQkvSJy" | |
433 | 431 | else throw("Unknown chain") | |
434 | 432 | } | |
435 | 433 | ||
436 | - | let | |
437 | - | let | |
438 | - | if ((base58'2W' == | |
434 | + | let cF = { | |
435 | + | let cD = cB | |
436 | + | if ((base58'2W' == cD)) | |
439 | 437 | then 10000000000 | |
440 | - | else if ((base58'2T' == | |
438 | + | else if ((base58'2T' == cD)) | |
441 | 439 | then 100000000 | |
442 | 440 | else throw("Unknown chain") | |
443 | 441 | } | |
444 | 442 | ||
445 | - | let | |
446 | - | let | |
447 | - | if ((base58'2W' == | |
448 | - | then | |
449 | - | else if ((base58'2T' == | |
443 | + | let cG = { | |
444 | + | let cD = cB | |
445 | + | if ((base58'2W' == cD)) | |
446 | + | then cA | |
447 | + | else if ((base58'2T' == cD)) | |
450 | 448 | then 60000 | |
451 | 449 | else throw("Unknown chain") | |
452 | 450 | } | |
453 | 451 | ||
454 | - | let | |
455 | - | let | |
456 | - | if ((base58'2W' == | |
452 | + | let cH = { | |
453 | + | let cD = cB | |
454 | + | if ((base58'2W' == cD)) | |
457 | 455 | then 10800000 | |
458 | - | else if ((base58'2T' == | |
456 | + | else if ((base58'2T' == cD)) | |
459 | 457 | then 900000 | |
460 | 458 | else throw("Unknown chain") | |
461 | 459 | } | |
462 | 460 | ||
463 | - | let | |
464 | - | ||
465 | - | let | |
466 | - | ||
467 | - | let | |
468 | - | ||
469 | - | let | |
470 | - | ||
471 | - | let | |
472 | - | ||
473 | - | let | |
474 | - | ||
475 | - | let | |
476 | - | ||
477 | - | let | |
478 | - | ||
479 | - | let | |
480 | - | ||
481 | - | func | |
482 | - | ||
483 | - | ||
484 | - | let | |
485 | - | ||
486 | - | let | |
487 | - | ||
488 | - | let | |
489 | - | ||
490 | - | let | |
491 | - | ||
492 | - | let | |
493 | - | ||
494 | - | let | |
495 | - | ||
496 | - | func | |
497 | - | ||
498 | - | ||
499 | - | func | |
500 | - | ||
501 | - | ||
502 | - | func | |
503 | - | ||
504 | - | ||
505 | - | func | |
506 | - | ||
507 | - | ||
508 | - | let | |
509 | - | ||
510 | - | let | |
511 | - | ||
512 | - | let aq = df | |
513 | - | ||
514 | - | let | |
515 | - | ||
516 | - | let | |
517 | - | ||
518 | - | let | |
519 | - | ||
520 | - | let | |
521 | - | ||
522 | - | let | |
523 | - | ||
524 | - | let | |
525 | - | ||
526 | - | let | |
527 | - | ||
528 | - | let | |
529 | - | ||
530 | - | let | |
531 | - | ||
532 | - | let | |
533 | - | ||
534 | - | let | |
535 | - | ||
536 | - | let | |
537 | - | ||
538 | - | let | |
539 | - | ||
540 | - | let | |
541 | - | ||
542 | - | func | |
543 | - | ||
544 | - | ||
545 | - | func | |
546 | - | ||
547 | - | ||
548 | - | func | |
549 | - | ||
550 | - | ||
551 | - | func | |
552 | - | ||
553 | - | ||
554 | - | func | |
555 | - | ||
556 | - | ||
557 | - | func | |
558 | - | let | |
559 | - | if ($isInstanceOf( | |
461 | + | let cI = "__" | |
462 | + | ||
463 | + | let cJ = 1000000 | |
464 | + | ||
465 | + | let cK = 100000000 | |
466 | + | ||
467 | + | let cL = 25 | |
468 | + | ||
469 | + | let cM = 100 | |
470 | + | ||
471 | + | let cN = 225 | |
472 | + | ||
473 | + | let cO = 400 | |
474 | + | ||
475 | + | let cP = 625 | |
476 | + | ||
477 | + | let cQ = [0, 1, 2, 3, 4, 5] | |
478 | + | ||
479 | + | func cR (cS,cT) = valueOrErrorMessage(getString(cS, cT), makeString(["mandatory ", toString(cS), ".", cT, " is not defined"], "")) | |
480 | + | ||
481 | + | ||
482 | + | let cU = 1 | |
483 | + | ||
484 | + | let cV = 2 | |
485 | + | ||
486 | + | let cW = 3 | |
487 | + | ||
488 | + | let cX = 4 | |
489 | + | ||
490 | + | let cY = 7 | |
491 | + | ||
492 | + | let cZ = 8 | |
493 | + | ||
494 | + | func da () = "%s__restConfig" | |
495 | + | ||
496 | + | ||
497 | + | func db () = "%s__restAddr" | |
498 | + | ||
499 | + | ||
500 | + | func dc (dd) = split_4C(cR(dd, da()), cI) | |
501 | + | ||
502 | + | ||
503 | + | func de (df,dg) = valueOrErrorMessage(addressFromString(df[dg]), ("Rest cfg doesn't contain address at index " + toString(dg))) | |
504 | + | ||
505 | + | ||
506 | + | let dh = addressFromStringValue(valueOrElse(getString(this, db()), cE)) | |
507 | + | ||
508 | + | let df = dc(dh) | |
509 | + | ||
510 | + | let aq = de(df, cU) | |
511 | + | ||
512 | + | let di = de(df, cV) | |
513 | + | ||
514 | + | let dj = de(df, cW) | |
515 | + | ||
516 | + | let dk = de(df, cX) | |
517 | + | ||
518 | + | let dl = de(df, cY) | |
519 | + | ||
520 | + | let dm = de(df, cZ) | |
521 | + | ||
522 | + | let dn = 0 | |
523 | + | ||
524 | + | let do = 1 | |
525 | + | ||
526 | + | let dp = 2 | |
527 | + | ||
528 | + | let dq = 3 | |
529 | + | ||
530 | + | let dr = "wlg_assetId" | |
531 | + | ||
532 | + | let ds = valueOrErrorMessage(getBinary(dk, dr), "WLGOLD is not issued yet") | |
533 | + | ||
534 | + | let dt = "acresAssetId" | |
535 | + | ||
536 | + | let du = valueOrErrorMessage(getBinary(dm, dt), "ACRES is not issued yet") | |
537 | + | ||
538 | + | let dv = 2 | |
539 | + | ||
540 | + | func dw (cS) = ("finishBlockForAddr_" + cS) | |
541 | + | ||
542 | + | ||
543 | + | func dx () = "resTypesProportions" | |
544 | + | ||
545 | + | ||
546 | + | func dy (dz) = ("resTypesByContinent_" + dz) | |
547 | + | ||
548 | + | ||
549 | + | func dA (bB) = ("stakedLandsByOwner_" + bB) | |
550 | + | ||
551 | + | ||
552 | + | func dB (bB) = ("stakedPiecesByOwner_" + bB) | |
553 | + | ||
554 | + | ||
555 | + | func dC (dD) = { | |
556 | + | let cD = dD | |
557 | + | if ($isInstanceOf(cD, "String")) | |
560 | 558 | then { | |
561 | - | let | |
562 | - | | |
559 | + | let dE = cD | |
560 | + | dE | |
563 | 561 | } | |
564 | 562 | else throw("fail to cast into String") | |
565 | 563 | } | |
566 | 564 | ||
567 | 565 | ||
568 | - | func | |
569 | - | let | |
570 | - | if ($isInstanceOf( | |
566 | + | func dF (dD) = { | |
567 | + | let cD = dD | |
568 | + | if ($isInstanceOf(cD, "Int")) | |
571 | 569 | then { | |
572 | - | let | |
573 | - | | |
570 | + | let dG = cD | |
571 | + | dG | |
574 | 572 | } | |
575 | 573 | else throw("fail to cast into Int") | |
576 | 574 | } | |
577 | 575 | ||
578 | 576 | ||
579 | - | func | |
580 | - | let | |
581 | - | if ($isInstanceOf( | |
577 | + | func dH (dD) = { | |
578 | + | let cD = dD | |
579 | + | if ($isInstanceOf(cD, "List[Any]")) | |
582 | 580 | then { | |
583 | - | let | |
584 | - | | |
581 | + | let dI = cD | |
582 | + | dI | |
585 | 583 | } | |
586 | 584 | else throw("fail to cast into List[Any]") | |
587 | 585 | } | |
588 | 586 | ||
589 | 587 | ||
590 | - | func | |
591 | - | let | |
592 | - | if ($isInstanceOf( | |
588 | + | func dJ (dD) = { | |
589 | + | let cD = dD | |
590 | + | if ($isInstanceOf(cD, "Boolean")) | |
593 | 591 | then { | |
594 | - | let | |
595 | - | | |
592 | + | let dE = cD | |
593 | + | dE | |
596 | 594 | } | |
597 | 595 | else throw("fail to cast into Boolean") | |
598 | 596 | } | |
599 | 597 | ||
600 | 598 | ||
601 | - | func | |
602 | - | let | |
603 | - | if (("S" == | |
604 | - | then | |
605 | - | else if (("M" == | |
606 | - | then | |
607 | - | else if (("L" == | |
608 | - | then | |
609 | - | else if (("XL" == | |
610 | - | then | |
611 | - | else if (("XXL" == | |
612 | - | then | |
599 | + | func dK (dL) = { | |
600 | + | let cD = dL | |
601 | + | if (("S" == cD)) | |
602 | + | then cL | |
603 | + | else if (("M" == cD)) | |
604 | + | then cM | |
605 | + | else if (("L" == cD)) | |
606 | + | then cN | |
607 | + | else if (("XL" == cD)) | |
608 | + | then cO | |
609 | + | else if (("XXL" == cD)) | |
610 | + | then cP | |
613 | 611 | else throw("Unknown land size") | |
614 | 612 | } | |
615 | 613 | ||
616 | 614 | ||
617 | - | func | |
618 | - | ||
619 | - | ||
620 | - | func | |
621 | - | ||
622 | - | ||
623 | - | func | |
624 | - | ||
625 | - | ||
626 | - | func | |
627 | - | let | |
628 | - | let | |
629 | - | let | |
630 | - | (((toString(( | |
631 | - | } | |
632 | - | ||
633 | - | ||
634 | - | func | |
635 | - | let | |
636 | - | (toInt( | |
637 | - | } | |
638 | - | ||
639 | - | ||
640 | - | let | |
641 | - | let | |
642 | - | if ((base58'2W' == | |
615 | + | func dM (dE) = isDefined(parseInt(dE)) | |
616 | + | ||
617 | + | ||
618 | + | func dN () = "contractsBlocked" | |
619 | + | ||
620 | + | ||
621 | + | func dO (c) = ("lastTxIdByUser_" + c) | |
622 | + | ||
623 | + | ||
624 | + | func dP (dQ,dR) = { | |
625 | + | let dS = pow(10, 0, dR, 0, 0, DOWN) | |
626 | + | let dT = toString((dQ % dS)) | |
627 | + | let dU = drop(toString(dS), (1 + size(dT))) | |
628 | + | (((toString((dQ / dS)) + ".") + dU) + dT) | |
629 | + | } | |
630 | + | ||
631 | + | ||
632 | + | func dV (dW,dX,dY) = { | |
633 | + | let dZ = sha256((dX + dY)) | |
634 | + | (toInt(dZ) % dW) | |
635 | + | } | |
636 | + | ||
637 | + | ||
638 | + | let ea = { | |
639 | + | let cD = cB | |
640 | + | if ((base58'2W' == cD)) | |
643 | 641 | then addressFromStringValue("3PEktVux2RhchSN63DsDo4b4mz4QqzKSeDv") | |
644 | - | else if ((base58'2T' == | |
642 | + | else if ((base58'2T' == cD)) | |
645 | 643 | then this | |
646 | 644 | else throw("Unknown chain") | |
647 | 645 | } | |
648 | 646 | ||
649 | - | let | |
650 | - | let | |
651 | - | if ((base58'2W' == | |
647 | + | let eb = { | |
648 | + | let cD = cB | |
649 | + | if ((base58'2W' == cD)) | |
652 | 650 | then addressFromStringValue("3PDVuU45H7Eh5dmtNbnRNRStGwULA7NY6Hb") | |
653 | - | else if ((base58'2T' == | |
651 | + | else if ((base58'2T' == cD)) | |
654 | 652 | then this | |
655 | 653 | else throw("Unknown chain") | |
656 | 654 | } | |
657 | 655 | ||
658 | - | let | |
659 | - | let | |
660 | - | if ((base58'2W' == | |
661 | - | then if ( | |
656 | + | let ec = { | |
657 | + | let cD = cB | |
658 | + | if ((base58'2W' == cD)) | |
659 | + | then if (cy) | |
662 | 660 | then base58'CWsMtTZC5BjjoL4Q1ayW4Wwb1ehGACQB6DrKyPgotKfm' | |
663 | 661 | else base58'6LfPuKJjLgekmncBhMg2LZyMTNVzZBccXR28ySXm9uXD' | |
664 | - | else if ((base58'2T' == | |
662 | + | else if ((base58'2T' == cD)) | |
665 | 663 | then base58'6LfPuKJjLgekmncBhMg2LZyMTNVzZBccXR28ySXm9uXD' | |
666 | 664 | else throw("Unknown chain") | |
667 | 665 | } | |
668 | 666 | ||
669 | - | let | |
670 | - | ||
671 | - | let | |
672 | - | ||
673 | - | let | |
674 | - | ||
675 | - | let | |
676 | - | ||
677 | - | let | |
678 | - | ||
679 | - | let | |
680 | - | let | |
681 | - | if ((base58'2W' == | |
667 | + | let ed = base64'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==' | |
668 | + | ||
669 | + | let ee = 300000 | |
670 | + | ||
671 | + | let ef = 5000000 | |
672 | + | ||
673 | + | let eg = 50 | |
674 | + | ||
675 | + | let eh = 10000000 | |
676 | + | ||
677 | + | let ei = { | |
678 | + | let cD = cB | |
679 | + | if ((base58'2W' == cD)) | |
682 | 680 | then 252289527462 | |
683 | - | else if ((base58'2T' == | |
681 | + | else if ((base58'2T' == cD)) | |
684 | 682 | then 2522895274 | |
685 | 683 | else throw("Unknown chain") | |
686 | 684 | } | |
687 | 685 | ||
688 | - | let | |
689 | - | let | |
690 | - | if ((base58'2W' == | |
686 | + | let ej = { | |
687 | + | let cD = cB | |
688 | + | if ((base58'2W' == cD)) | |
691 | 689 | then 250000000 | |
692 | - | else if ((base58'2T' == | |
690 | + | else if ((base58'2T' == cD)) | |
693 | 691 | then 250000000 | |
694 | 692 | else throw("Unknown chain") | |
695 | 693 | } | |
696 | 694 | ||
697 | - | let | |
698 | - | ||
699 | - | let | |
700 | - | ||
701 | - | let | |
702 | - | ||
703 | - | let | |
704 | - | ||
705 | - | let | |
706 | - | ||
707 | - | let | |
708 | - | ||
709 | - | let | |
710 | - | ||
711 | - | let | |
712 | - | ||
713 | - | func | |
714 | - | ||
715 | - | ||
716 | - | func | |
717 | - | ||
718 | - | ||
719 | - | func | |
720 | - | ||
721 | - | ||
722 | - | func | |
723 | - | ||
724 | - | ||
725 | - | func | |
726 | - | ||
727 | - | ||
728 | - | func | |
729 | - | ||
730 | - | ||
731 | - | func | |
732 | - | ||
733 | - | ||
734 | - | func | |
735 | - | ||
736 | - | ||
737 | - | let | |
738 | - | ||
739 | - | let | |
740 | - | ||
741 | - | let | |
742 | - | ||
743 | - | let | |
744 | - | ||
745 | - | let | |
746 | - | ||
747 | - | let | |
748 | - | ||
749 | - | let | |
750 | - | ||
751 | - | func | |
752 | - | ||
753 | - | ||
754 | - | func | |
755 | - | let | |
756 | - | then ((( | |
757 | - | else -((((-( | |
758 | - | ( | |
759 | - | } | |
760 | - | ||
761 | - | ||
762 | - | func | |
763 | - | let | |
764 | - | if ((0 >= | |
695 | + | let ek = 2500000000 | |
696 | + | ||
697 | + | let el = toBigInt(5) | |
698 | + | ||
699 | + | let em = toBigInt(20) | |
700 | + | ||
701 | + | let en = toBigInt((20 * 20)) | |
702 | + | ||
703 | + | let eo = toBigInt(((20 * 20) * 20)) | |
704 | + | ||
705 | + | let ep = toBigInt((((20 * 20) * 20) * 20)) | |
706 | + | ||
707 | + | let eq = toBigInt(((((20 * 20) * 20) * 20) * 20)) | |
708 | + | ||
709 | + | let er = 500 | |
710 | + | ||
711 | + | func es () = "nextLandNum" | |
712 | + | ||
713 | + | ||
714 | + | func et (eu) = ("lcn_" + eu) | |
715 | + | ||
716 | + | ||
717 | + | func ev (ew) = ("la_" + ew) | |
718 | + | ||
719 | + | ||
720 | + | func ex (bu,bB) = ((("ilao_" + bu) + "_") + bB) | |
721 | + | ||
722 | + | ||
723 | + | func ey (ew) = ("lo_" + ew) | |
724 | + | ||
725 | + | ||
726 | + | func ez (eu) = ("duckByCustomName_" + eu) | |
727 | + | ||
728 | + | ||
729 | + | func eA (eu) = ("accountByCustomName_" + eu) | |
730 | + | ||
731 | + | ||
732 | + | func eB () = "oldiesList" | |
733 | + | ||
734 | + | ||
735 | + | let eC = 0 | |
736 | + | ||
737 | + | let eD = 1 | |
738 | + | ||
739 | + | let eE = 2 | |
740 | + | ||
741 | + | let eF = 0 | |
742 | + | ||
743 | + | let eG = 5 | |
744 | + | ||
745 | + | let eH = 6 | |
746 | + | ||
747 | + | let eI = 7 | |
748 | + | ||
749 | + | func eJ (ew,dL) = ((aF + ew) + dL) | |
750 | + | ||
751 | + | ||
752 | + | func eK (eL,eM) = { | |
753 | + | let eN = if ((eL >= 0)) | |
754 | + | then (((eL + eM) - 1) / eM) | |
755 | + | else -((((-(eL) + eM) - 1) / eM)) | |
756 | + | (eN * cK) | |
757 | + | } | |
758 | + | ||
759 | + | ||
760 | + | func eO (eP,eQ) = { | |
761 | + | let eR = (((((eQ[0] + eQ[1]) + eQ[2]) + eQ[3]) + eQ[4]) + eQ[5]) | |
762 | + | if ((0 >= eR)) | |
765 | 763 | then throw("Zero weights sum") | |
766 | 764 | else { | |
767 | - | let | |
768 | - | func | |
769 | - | ||
770 | - | let | |
771 | - | let | |
772 | - | let | |
773 | - | func | |
774 | - | then | |
775 | - | else | |
776 | - | ||
777 | - | func | |
778 | - | then | |
765 | + | let eS = fraction(eP, cJ, eR) | |
766 | + | func eT (eU,eV) = (eU :+ fraction(eV, eS, cJ)) | |
767 | + | ||
768 | + | let eW = eQ | |
769 | + | let eX = size(eW) | |
770 | + | let eY = nil | |
771 | + | func eZ (fa,fb) = if ((fb >= eX)) | |
772 | + | then fa | |
773 | + | else eT(fa, eW[fb]) | |
774 | + | ||
775 | + | func fc (fa,fb) = if ((fb >= eX)) | |
776 | + | then fa | |
779 | 777 | else throw("List size exceeds 6") | |
780 | 778 | ||
781 | - | | |
782 | - | } | |
783 | - | } | |
784 | - | ||
785 | - | ||
786 | - | func | |
787 | - | let | |
788 | - | if ((size( | |
779 | + | fc(eZ(eZ(eZ(eZ(eZ(eZ(eY, 0), 1), 2), 3), 4), 5), 6) | |
780 | + | } | |
781 | + | } | |
782 | + | ||
783 | + | ||
784 | + | func fd (eP) = { | |
785 | + | let fe = split(value(getString(dx())), "_") | |
786 | + | if ((size(fe) != aI)) | |
789 | 787 | then throw("Wrong proportions data") | |
790 | 788 | else { | |
791 | - | let | |
792 | - | eP | |
793 | - | } | |
794 | - | } | |
795 | - | ||
796 | - | ||
797 | - | func | |
798 | - | let | |
799 | - | func | |
800 | - | let | |
801 | - | if ((0 > | |
802 | - | then throw(((((("Not enough material idx=" + toString( | |
803 | - | else ( | |
789 | + | let ff = [parseIntValue(fe[0]), parseIntValue(fe[1]), parseIntValue(fe[2]), parseIntValue(fe[3]), parseIntValue(fe[4]), parseIntValue(fe[5])] | |
790 | + | eO(eP, ff) | |
791 | + | } | |
792 | + | } | |
793 | + | ||
794 | + | ||
795 | + | func fg (fh,fi,fj) = { | |
796 | + | let fk = fd(fj) | |
797 | + | func fl (eU,dg) = { | |
798 | + | let fm = (parseIntValue(fi[dg]) - fk[dg]) | |
799 | + | if ((0 > fm)) | |
800 | + | then throw(((((("Not enough material idx=" + toString(dg)) + ", you have ") + fi[dg]) + ", but need ") + toString(fk[dg]))) | |
801 | + | else (eU :+ toString(fm)) | |
804 | 802 | } | |
805 | 803 | ||
806 | - | if ( | |
804 | + | if (fh) | |
807 | 805 | then { | |
808 | - | let | |
809 | - | let | |
810 | - | let | |
811 | - | func | |
812 | - | then | |
813 | - | else | |
814 | - | ||
815 | - | func | |
816 | - | then | |
806 | + | let eW = cQ | |
807 | + | let eX = size(eW) | |
808 | + | let eY = nil | |
809 | + | func eZ (fa,fb) = if ((fb >= eX)) | |
810 | + | then fa | |
811 | + | else fl(fa, eW[fb]) | |
812 | + | ||
813 | + | func fc (fa,fb) = if ((fb >= eX)) | |
814 | + | then fa | |
817 | 815 | else throw("List size exceeds 6") | |
818 | 816 | ||
819 | - | | |
820 | - | } | |
821 | - | else | |
822 | - | } | |
823 | - | ||
824 | - | ||
825 | - | func | |
826 | - | then $Tuple2( | |
817 | + | fc(eZ(eZ(eZ(eZ(eZ(eZ(eY, 0), 1), 2), 3), 4), 5), 6) | |
818 | + | } | |
819 | + | else fi | |
820 | + | } | |
821 | + | ||
822 | + | ||
823 | + | func fn (fo,fp) = if ((fp == "")) | |
824 | + | then $Tuple2(fo, false) | |
827 | 825 | else { | |
828 | - | func | |
829 | - | let | |
830 | - | if ((size( | |
826 | + | func fq (eU,fr) = { | |
827 | + | let fs = split(fr, ",") | |
828 | + | if ((size(fs) != 2)) | |
831 | 829 | then throw("Incorrect format, should be index,amount") | |
832 | 830 | else { | |
833 | - | let | |
834 | - | if (if ((0 > | |
831 | + | let dg = parseIntValue(fs[0]) | |
832 | + | if (if ((0 > dg)) | |
835 | 833 | then true | |
836 | - | else ( | |
834 | + | else (dg >= size(aX))) | |
837 | 835 | then throw("Unknown product idx") | |
838 | 836 | else { | |
839 | - | let | |
840 | - | let | |
841 | - | if ((size( | |
842 | - | then throw((("You don't have " + | |
837 | + | let ft = parseIntValue(fs[1]) | |
838 | + | let fu = split(eU._1, (fs[0] + ":")) | |
839 | + | if ((size(fu) != 2)) | |
840 | + | then throw((("You don't have " + aT[dg]) + " equipped")) | |
843 | 841 | else { | |
844 | - | let | |
845 | - | let | |
842 | + | let fv = fu[1] | |
843 | + | let fw = if (dM(take(drop(fv, 1), 1))) | |
846 | 844 | then 2 | |
847 | 845 | else 1 | |
848 | - | let | |
849 | - | let | |
850 | - | let | |
851 | - | then ( | |
852 | - | else throw(((((("You equipped " + toString( | |
853 | - | $Tuple2((((( | |
846 | + | let fx = parseIntValue(take(fv, fw)) | |
847 | + | let fy = drop(fv, fw) | |
848 | + | let fz = if ((fx >= ft)) | |
849 | + | then (fx - ft) | |
850 | + | else throw(((((("You equipped " + toString(fx)) + " of ") + aT[dg]) + ", but tried to use ") + toString(ft))) | |
851 | + | $Tuple2(((((fu[0] + fs[0]) + ":") + toString(fz)) + fy), if (eU._2) | |
854 | 852 | then true | |
855 | - | else if (if (( | |
856 | - | then (8 >= | |
853 | + | else if (if ((dg >= 6)) | |
854 | + | then (8 >= dg) | |
857 | 855 | else false) | |
858 | - | then ( | |
856 | + | then (fz == 0) | |
859 | 857 | else false) | |
860 | 858 | } | |
861 | 859 | } | |
862 | 860 | } | |
863 | 861 | } | |
864 | 862 | ||
865 | - | let | |
866 | - | let | |
867 | - | let | |
868 | - | func | |
869 | - | then | |
870 | - | else | |
871 | - | ||
872 | - | func | |
873 | - | then | |
863 | + | let eW = split(fp, "_") | |
864 | + | let eX = size(eW) | |
865 | + | let eY = $Tuple2(fo, false) | |
866 | + | func eZ (fa,fb) = if ((fb >= eX)) | |
867 | + | then fa | |
868 | + | else fq(fa, eW[fb]) | |
869 | + | ||
870 | + | func fc (fa,fb) = if ((fb >= eX)) | |
871 | + | then fa | |
874 | 872 | else throw("List size exceeds 10") | |
875 | 873 | ||
876 | - | | |
874 | + | fc(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eY, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
877 | 875 | } | |
878 | 876 | ||
879 | 877 | ||
880 | - | func | |
881 | - | let | |
878 | + | func fA (fB) = { | |
879 | + | let fC = if ((fB == "")) | |
882 | 880 | then nil | |
883 | - | else split_4C( | |
884 | - | func | |
885 | - | let | |
886 | - | let | |
887 | - | then parseIntValue( | |
881 | + | else split_4C(fB, "_") | |
882 | + | func fD (eU,ct) = { | |
883 | + | let fE = (size(eU) / 8) | |
884 | + | let fx = if ((size(fC) > fE)) | |
885 | + | then parseIntValue(fC[fE]) | |
888 | 886 | else 0 | |
889 | - | ( | |
887 | + | (eU + toBytes(fx)) | |
890 | 888 | } | |
891 | 889 | ||
892 | - | let | |
893 | - | let | |
894 | - | let | |
895 | - | func | |
896 | - | then | |
897 | - | else | |
898 | - | ||
899 | - | func | |
900 | - | then | |
890 | + | let eW = aX | |
891 | + | let eX = size(eW) | |
892 | + | let eY = base58'' | |
893 | + | func eZ (fa,fb) = if ((fb >= eX)) | |
894 | + | then fa | |
895 | + | else fD(fa, eW[fb]) | |
896 | + | ||
897 | + | func fc (fa,fb) = if ((fb >= eX)) | |
898 | + | then fa | |
901 | 899 | else throw("List size exceeds 50") | |
902 | 900 | ||
903 | - | | |
904 | - | } | |
905 | - | ||
906 | - | ||
907 | - | func | |
908 | - | func | |
909 | - | let | |
910 | - | let | |
911 | - | ( | |
901 | + | fc(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eY, 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) | |
902 | + | } | |
903 | + | ||
904 | + | ||
905 | + | func fF (fG) = { | |
906 | + | func fH (eU,ct) = { | |
907 | + | let fE = size(eU) | |
908 | + | let fI = take(drop(fG, (8 * fE)), 8) | |
909 | + | (eU :+ toString(toInt(fI))) | |
912 | 910 | } | |
913 | 911 | ||
914 | 912 | makeString_2C({ | |
915 | - | let | |
916 | - | let | |
917 | - | let | |
918 | - | func | |
919 | - | then | |
920 | - | else | |
921 | - | ||
922 | - | func | |
923 | - | then | |
913 | + | let eW = aX | |
914 | + | let eX = size(eW) | |
915 | + | let eY = nil | |
916 | + | func eZ (fa,fb) = if ((fb >= eX)) | |
917 | + | then fa | |
918 | + | else fH(fa, eW[fb]) | |
919 | + | ||
920 | + | func fc (fa,fb) = if ((fb >= eX)) | |
921 | + | then fa | |
924 | 922 | else throw("List size exceeds 50") | |
925 | 923 | ||
926 | - | | |
924 | + | fc(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eY, 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) | |
927 | 925 | }, "_") | |
928 | 926 | } | |
929 | 927 | ||
930 | 928 | ||
931 | - | func | |
932 | - | func | |
933 | - | let | |
934 | - | then | |
929 | + | func fJ (fK,fL) = { | |
930 | + | func fM (eU,fE) = { | |
931 | + | let fN = if ((size(fK) > (7 + fE))) | |
932 | + | then fK[(7 + fE)] | |
935 | 933 | else 0 | |
936 | - | if ((parseIntValue( | |
937 | - | then throw(("Requirement not satisfied: " + k[ | |
934 | + | if ((parseIntValue(fL[fE]) > (fK[fE] + fN))) | |
935 | + | then throw(("Requirement not satisfied: " + k[fE])) | |
938 | 936 | else true | |
939 | 937 | } | |
940 | 938 | ||
941 | - | let | |
942 | - | let | |
943 | - | let | |
944 | - | func | |
945 | - | then | |
946 | - | else | |
947 | - | ||
948 | - | func | |
949 | - | then | |
939 | + | let eW = [0, 1, 2, 3, 4, 5, 6] | |
940 | + | let eX = size(eW) | |
941 | + | let eY = false | |
942 | + | func eZ (fa,fb) = if ((fb >= eX)) | |
943 | + | then fa | |
944 | + | else fM(fa, eW[fb]) | |
945 | + | ||
946 | + | func fc (fa,fb) = if ((fb >= eX)) | |
947 | + | then fa | |
950 | 948 | else throw("List size exceeds 7") | |
951 | 949 | ||
952 | - | | |
953 | - | } | |
954 | - | ||
955 | - | ||
956 | - | func | |
957 | - | let | |
958 | - | if ((size( | |
950 | + | fc(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eY, 0), 1), 2), 3), 4), 5), 6), 7) | |
951 | + | } | |
952 | + | ||
953 | + | ||
954 | + | func fO (fP,fC,fQ,fK,fR,fS) = { | |
955 | + | let fs = split(fP, ":") | |
956 | + | if ((size(fs) != 2)) | |
959 | 957 | then throw("Incorrect format, should be index:amount") | |
960 | - | else if (if (!( | |
961 | - | then (size( | |
958 | + | else if (if (!(fQ)) | |
959 | + | then (size(fs[0]) != 2) | |
962 | 960 | else false) | |
963 | 961 | then throw("Product idx should be 2 digits, zero padded") | |
964 | 962 | else { | |
965 | - | let | |
966 | - | let | |
967 | - | if (!(containsElement( | |
968 | - | then throw((("Product '" + | |
969 | - | else if ((0 > | |
963 | + | let fT = parseIntValue(fs[0]) | |
964 | + | let fU = parseIntValue(fs[1]) | |
965 | + | if (!(containsElement(aW, fT))) | |
966 | + | then throw((("Product '" + aT[fT]) + "' cannot be used for land defense")) | |
967 | + | else if ((0 > fU)) | |
970 | 968 | then throw("Count can't be negative") | |
971 | - | else if (( | |
972 | - | then throw(((("Can't put more than " + toString(u)) + " of ") + | |
973 | - | else if (( | |
974 | - | then $Tuple3( | |
969 | + | else if ((fU > u)) | |
970 | + | then throw(((("Can't put more than " + toString(u)) + " of ") + aT[fT])) | |
971 | + | else if ((fU == 0)) | |
972 | + | then $Tuple3(fC, fR, fS) | |
975 | 973 | else { | |
976 | - | let | |
977 | - | let | |
978 | - | let | |
979 | - | let | |
980 | - | if (if (!( | |
981 | - | then ( | |
974 | + | let fV = take(fC, (8 * fT)) | |
975 | + | let fx = toInt(take(drop(fC, (8 * fT)), 8)) | |
976 | + | let fy = drop(fC, (8 * (fT + 1))) | |
977 | + | let ct = split(aX[fT], "_") | |
978 | + | if (if (!(fQ)) | |
979 | + | then (fU > fx) | |
982 | 980 | else false) | |
983 | - | then throw(((((("You have " + toString( | |
981 | + | then throw(((((("You have " + toString(fx)) + " of ") + aT[fT]) + ", but tried to use ") + toString(fU))) | |
984 | 982 | else { | |
985 | - | let | |
986 | - | then fK | |
983 | + | let fz = if (if (!(fQ)) | |
984 | + | then fJ(fK, split(ct[ba], ",")) | |
987 | 985 | else false) | |
988 | - | then ( | |
989 | - | else ( | |
990 | - | let | |
991 | - | $Tuple3((( | |
986 | + | then (fx - fU) | |
987 | + | else (fx + fU) | |
988 | + | let fW = (eK(fz, bc) - eK(fx, bc)) | |
989 | + | $Tuple3(((fV + toBytes(fz)) + fy), (fR + fW), (fS - fW)) | |
992 | 990 | } | |
993 | 991 | } | |
994 | 992 | } | |
995 | 993 | } | |
996 | 994 | ||
997 | 995 | ||
998 | - | func | |
999 | - | let | |
1000 | - | if ((size( | |
996 | + | func fX (fP,fC,fQ,fY,fZ,ga,fK) = { | |
997 | + | let fs = split(fP, ":") | |
998 | + | if ((size(fs) != 2)) | |
1001 | 999 | then throw("Incorrect format, should be index:amount") | |
1002 | - | else if (if (!( | |
1003 | - | then (size( | |
1000 | + | else if (if (!(fQ)) | |
1001 | + | then (size(fs[0]) != 2) | |
1004 | 1002 | else false) | |
1005 | 1003 | then throw("Product idx should be 2 digits, zero padded") | |
1006 | 1004 | else { | |
1007 | - | let | |
1008 | - | let | |
1009 | - | if (if ((0 > | |
1005 | + | let fT = parseIntValue(fs[0]) | |
1006 | + | let fU = parseIntValue(fs[1]) | |
1007 | + | if (if ((0 > fT)) | |
1010 | 1008 | then true | |
1011 | - | else ( | |
1009 | + | else (fT >= size(aX))) | |
1012 | 1010 | then throw("Unknown product idx") | |
1013 | - | else if ((0 > | |
1011 | + | else if ((0 > fU)) | |
1014 | 1012 | then throw("Count can't be negative") | |
1015 | - | else if (( | |
1016 | - | then throw(((("Can't put more than " + toString(u)) + " of ") + | |
1017 | - | else if (( | |
1018 | - | then $Tuple2( | |
1013 | + | else if ((fU > u)) | |
1014 | + | then throw(((("Can't put more than " + toString(u)) + " of ") + aT[fT])) | |
1015 | + | else if ((fU == 0)) | |
1016 | + | then $Tuple2(fC, false) | |
1019 | 1017 | else { | |
1020 | - | let | |
1021 | - | let | |
1022 | - | let | |
1023 | - | let | |
1024 | - | if (if (!( | |
1025 | - | then ( | |
1018 | + | let fV = take(fC, (8 * fT)) | |
1019 | + | let fx = toInt(take(drop(fC, (8 * fT)), 8)) | |
1020 | + | let fy = drop(fC, (8 * (fT + 1))) | |
1021 | + | let ct = split(aX[fT], "_") | |
1022 | + | if (if (!(fQ)) | |
1023 | + | then (fU > fx) | |
1026 | 1024 | else false) | |
1027 | - | then throw(((((("You have " + toString( | |
1025 | + | then throw(((((("You have " + toString(fx)) + " of ") + aT[fT]) + ", but tried to use ") + toString(fU))) | |
1028 | 1026 | else { | |
1029 | - | let | |
1030 | - | then fK | |
1027 | + | let gb = if (if (!(fQ)) | |
1028 | + | then fJ(fK, split(ct[ba], ",")) | |
1031 | 1029 | else false) | |
1032 | 1030 | then { | |
1033 | - | let | |
1034 | - | if (( | |
1031 | + | let gc = ct[bb] | |
1032 | + | if ((gc == "")) | |
1035 | 1033 | then throw("Item cannot be equipped") | |
1036 | 1034 | else { | |
1037 | - | let | |
1038 | - | let | |
1039 | - | if (( | |
1035 | + | let gd = parseIntValue(gc) | |
1036 | + | let ge = (gd / 100) | |
1037 | + | if ((fY != ge)) | |
1040 | 1038 | then throw("Segment incompatible") | |
1041 | 1039 | else { | |
1042 | - | let | |
1043 | - | if (( | |
1040 | + | let gf = ((gd % 100) / 10) | |
1041 | + | if ((fZ != gf)) | |
1044 | 1042 | then throw("Slot incompatible") | |
1045 | 1043 | else { | |
1046 | - | let | |
1047 | - | if (if (( | |
1048 | - | then ( | |
1044 | + | let gg = (gd % 10) | |
1045 | + | if (if ((ga != 0)) | |
1046 | + | then (gg > 1) | |
1049 | 1047 | else false) | |
1050 | 1048 | then throw("Big items should occupy slot 0") | |
1051 | - | else ( | |
1049 | + | else (gg > 1) | |
1052 | 1050 | } | |
1053 | 1051 | } | |
1054 | 1052 | } | |
1055 | 1053 | } | |
1056 | 1054 | else false | |
1057 | - | $Tuple2((( | |
1058 | - | then | |
1059 | - | else -( | |
1055 | + | $Tuple2(((fV + toBytes((fx + (if (fQ) | |
1056 | + | then fU | |
1057 | + | else -(fU))))) + fy), gb) | |
1060 | 1058 | } | |
1061 | 1059 | } | |
1062 | 1060 | } | |
1063 | 1061 | } | |
1064 | 1062 | ||
1065 | 1063 | ||
1066 | - | func | |
1064 | + | func gh (gi,gj,fQ,fY,fZ,gk) = if ((gi != "")) | |
1067 | 1065 | then { | |
1068 | - | let | |
1069 | - | if ((size( | |
1066 | + | let gl = split(gi, ",") | |
1067 | + | if ((size(gl) > t)) | |
1070 | 1068 | then throw("Wrong slots format") | |
1071 | 1069 | else { | |
1072 | - | let | |
1073 | - | let | |
1074 | - | then | |
1070 | + | let gm = gl[0] | |
1071 | + | let gn = if ((size(gl) > 1)) | |
1072 | + | then gl[1] | |
1075 | 1073 | else "" | |
1076 | - | if (if (( | |
1077 | - | then ( | |
1074 | + | if (if ((gm == "")) | |
1075 | + | then (gn == "") | |
1078 | 1076 | else false) | |
1079 | - | then | |
1077 | + | then gj | |
1080 | 1078 | else { | |
1081 | - | let | |
1082 | - | then | |
1083 | - | else $Tuple2( | |
1084 | - | if (( | |
1085 | - | then if ( | |
1079 | + | let go = if ((gm != "")) | |
1080 | + | then fX(gm, gj, fQ, fY, fZ, 0, gk) | |
1081 | + | else $Tuple2(gj, false) | |
1082 | + | if ((gn != "")) | |
1083 | + | then if (go._2) | |
1086 | 1084 | then throw("Big item already occupies slot") | |
1087 | - | else | |
1088 | - | else | |
1085 | + | else fX(gn, go._1, fQ, fY, fZ, 1, gk)._1 | |
1086 | + | else go._1 | |
1089 | 1087 | } | |
1090 | 1088 | } | |
1091 | 1089 | } | |
1092 | - | else | |
1093 | - | ||
1094 | - | ||
1095 | - | func | |
1096 | - | func | |
1097 | - | let | |
1098 | - | let | |
1099 | - | if ((size( | |
1090 | + | else gj | |
1091 | + | ||
1092 | + | ||
1093 | + | func gp (gq,gr,fQ,gk) = { | |
1094 | + | func fY (eU,gs) = { | |
1095 | + | let fE = eU._1 | |
1096 | + | let fZ = split(gs, ";") | |
1097 | + | if ((size(fZ) != s)) | |
1100 | 1098 | then throw("Wrong segment format") | |
1101 | 1099 | else { | |
1102 | - | let | |
1103 | - | let | |
1104 | - | if (if (( | |
1105 | - | then ( | |
1100 | + | let gt = fZ[0] | |
1101 | + | let gu = fZ[1] | |
1102 | + | if (if ((gt == "")) | |
1103 | + | then (gu == "") | |
1106 | 1104 | else false) | |
1107 | - | then $Tuple2(( | |
1105 | + | then $Tuple2((fE + 1), eU._2) | |
1108 | 1106 | else { | |
1109 | - | let | |
1110 | - | $Tuple2(( | |
1107 | + | let gv = gh(gt, eU._2, fQ, fE, 0, gk) | |
1108 | + | $Tuple2((fE + 1), gh(gu, gv, fQ, fE, 1, gk)) | |
1111 | 1109 | } | |
1112 | 1110 | } | |
1113 | 1111 | } | |
1114 | 1112 | ||
1115 | - | ( let | |
1116 | - | let | |
1117 | - | let | |
1118 | - | func | |
1119 | - | then | |
1120 | - | else | |
1121 | - | ||
1122 | - | func | |
1123 | - | then | |
1113 | + | ( let eW = gq | |
1114 | + | let eX = size(eW) | |
1115 | + | let eY = $Tuple2(0, gr) | |
1116 | + | func eZ (fa,fb) = if ((fb >= eX)) | |
1117 | + | then fa | |
1118 | + | else fY(fa, eW[fb]) | |
1119 | + | ||
1120 | + | func fc (fa,fb) = if ((fb >= eX)) | |
1121 | + | then fa | |
1124 | 1122 | else throw("List size exceeds 6") | |
1125 | 1123 | ||
1126 | - | | |
1127 | - | } | |
1128 | - | ||
1129 | - | ||
1130 | - | func | |
1124 | + | fc(eZ(eZ(eZ(eZ(eZ(eZ(eY, 0), 1), 2), 3), 4), 5), 6))._2 | |
1125 | + | } | |
1126 | + | ||
1127 | + | ||
1128 | + | func gw (gq,gr,fR,fS,fQ,fK) = if ((3 > size(gq))) | |
1131 | 1129 | then throw("At least duck, mines and traps parts are required") | |
1132 | 1130 | else { | |
1133 | - | func | |
1134 | - | let | |
1135 | - | if (( | |
1136 | - | then $Tuple4(( | |
1131 | + | func fY (eU,gs) = { | |
1132 | + | let fE = eU._1 | |
1133 | + | if ((fE == 0)) | |
1134 | + | then $Tuple4((fE + 1), eU._2, eU._3, eU._4) | |
1137 | 1135 | else { | |
1138 | - | let | |
1139 | - | $Tuple4(( | |
1136 | + | let gx = fO(gs, eU._2, fQ, fK, eU._3, eU._4) | |
1137 | + | $Tuple4((fE + 1), gx._1, gx._2, gx._3) | |
1140 | 1138 | } | |
1141 | 1139 | } | |
1142 | 1140 | ||
1143 | - | let | |
1144 | - | let | |
1145 | - | let | |
1146 | - | let | |
1147 | - | func | |
1148 | - | then | |
1149 | - | else | |
1150 | - | ||
1151 | - | func | |
1152 | - | then | |
1141 | + | let gy = { | |
1142 | + | let eW = gq | |
1143 | + | let eX = size(eW) | |
1144 | + | let eY = $Tuple4(0, gr, fR, fS) | |
1145 | + | func eZ (fa,fb) = if ((fb >= eX)) | |
1146 | + | then fa | |
1147 | + | else fY(fa, eW[fb]) | |
1148 | + | ||
1149 | + | func fc (fa,fb) = if ((fb >= eX)) | |
1150 | + | then fa | |
1153 | 1151 | else throw("List size exceeds 10") | |
1154 | 1152 | ||
1155 | - | | |
1156 | - | } | |
1157 | - | $Tuple3( | |
1153 | + | fc(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eY, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
1154 | + | } | |
1155 | + | $Tuple3(gy._2, gy._3, gy._4) | |
1158 | 1156 | } | |
1159 | 1157 | ||
1160 | 1158 | ||
1161 | - | func | |
1162 | - | let | |
1163 | - | let | |
1164 | - | let | |
1165 | - | let | |
1166 | - | let ar = if (( | |
1159 | + | func gz (B) = { | |
1160 | + | let gA = G(B) | |
1161 | + | let gB = split(valueOrElse(getString(gA), ",;,_,;,_,;,_,;,_,;,_,;,"), "_") | |
1162 | + | let gC = gp(gB, ed, true, nil) | |
1163 | + | let gD = split(gB[q], ";")[1] | |
1164 | + | let ar = if ((gD == "")) | |
1167 | 1165 | then 0 | |
1168 | 1166 | else { | |
1169 | - | let | |
1170 | - | if (( | |
1167 | + | let gE = split(gD, ",")[0] | |
1168 | + | if ((gE == "")) | |
1171 | 1169 | then 0 | |
1172 | 1170 | else { | |
1173 | - | let | |
1174 | - | let | |
1175 | - | let | |
1176 | - | if (if (if (if (if (( | |
1171 | + | let fP = split(gE, ":") | |
1172 | + | let dg = fP[0] | |
1173 | + | let gF = fP[1] | |
1174 | + | if (if (if (if (if ((dg == "06")) | |
1177 | 1175 | then true | |
1178 | - | else ( | |
1176 | + | else (dg == "07")) | |
1179 | 1177 | then true | |
1180 | - | else ( | |
1181 | - | then ( | |
1178 | + | else (dg == "08")) | |
1179 | + | then (gF != "") | |
1182 | 1180 | else false) | |
1183 | - | then (parseIntValue( | |
1181 | + | then (parseIntValue(gF) > 0) | |
1184 | 1182 | else false) | |
1185 | - | then parseIntValue(split( | |
1183 | + | then parseIntValue(split(aX[parseIntValue(dg)], "_")[aZ]) | |
1186 | 1184 | else 0 | |
1187 | 1185 | } | |
1188 | 1186 | } | |
1189 | - | let | |
1190 | - | let | |
1191 | - | ( | |
1192 | - | } | |
1193 | - | ||
1194 | - | ||
1195 | - | func | |
1187 | + | let gk = ap(this, B, ar, true) | |
1188 | + | let gG = gp(gB, gC, false, gk) | |
1189 | + | (gG == gG) | |
1190 | + | } | |
1191 | + | ||
1192 | + | ||
1193 | + | func gH (gI,gJ,gK,gL) = if ((size(gI) != aI)) | |
1196 | 1194 | then throw("Wrong proportions data") | |
1197 | 1195 | else { | |
1198 | - | func | |
1199 | - | let | |
1200 | - | if ((0 > | |
1201 | - | then throw(((((((("Panic! Pieces of type=" + toString( | |
1202 | - | else ( | |
1203 | - | } | |
1204 | - | ||
1205 | - | let | |
1206 | - | let | |
1207 | - | let | |
1208 | - | func | |
1209 | - | then | |
1210 | - | else | |
1211 | - | ||
1212 | - | func | |
1213 | - | then | |
1196 | + | func gM (eU,gN) = { | |
1197 | + | let fm = (parseIntValue(gI[gN]) + ((gL * gJ[gN]) * gK)) | |
1198 | + | if ((0 > fm)) | |
1199 | + | then throw(((((((("Panic! Pieces of type=" + toString(gN)) + ", sign=") + toString(gL)) + ", terrainCounts[i]=") + toString(gJ[gN])) + ", landSizeIndex=") + toString(gK))) | |
1200 | + | else (eU :+ toString(fm)) | |
1201 | + | } | |
1202 | + | ||
1203 | + | let eW = cQ | |
1204 | + | let eX = size(eW) | |
1205 | + | let eY = nil | |
1206 | + | func eZ (fa,fb) = if ((fb >= eX)) | |
1207 | + | then fa | |
1208 | + | else gM(fa, eW[fb]) | |
1209 | + | ||
1210 | + | func fc (fa,fb) = if ((fb >= eX)) | |
1211 | + | then fa | |
1214 | 1212 | else throw("List size exceeds 6") | |
1215 | 1213 | ||
1216 | - | | |
1214 | + | fc(eZ(eZ(eZ(eZ(eZ(eZ(eY, 0), 1), 2), 3), 4), 5), 6) | |
1217 | 1215 | } | |
1218 | 1216 | ||
1219 | 1217 | ||
1220 | - | func | |
1221 | - | let | |
1222 | - | makeString(gI | |
1223 | - | } | |
1224 | - | ||
1225 | - | ||
1226 | - | func | |
1227 | - | ||
1228 | - | ||
1229 | - | func | |
1230 | - | func | |
1231 | - | let | |
1232 | - | ( | |
1218 | + | func gO (gJ,gK,gL) = { | |
1219 | + | let gI = split(valueOrElse(getString(dx()), "0_0_0_0_0_0"), "_") | |
1220 | + | makeString(gH(gI, gJ, gK, gL), "_") | |
1221 | + | } | |
1222 | + | ||
1223 | + | ||
1224 | + | func gP (gQ) = [(size(split(gQ, "A")) - 1), (size(split(gQ, "B")) - 1), (size(split(gQ, "C")) - 1), (size(split(gQ, "D")) - 1), (size(split(gQ, "E")) - 1), (size(split(gQ, "F")) - 1)] | |
1225 | + | ||
1226 | + | ||
1227 | + | func gR (gS,gJ,gT,gK,gU) = { | |
1228 | + | func gV (eU,gN) = { | |
1229 | + | let gW = ((fraction(gT, gU, a) * gJ[gN]) * gK) | |
1230 | + | (eU :+ toString((parseIntValue(gS[gN]) + gW))) | |
1233 | 1231 | } | |
1234 | 1232 | ||
1235 | - | let | |
1236 | - | let | |
1237 | - | let | |
1238 | - | let | |
1239 | - | func | |
1240 | - | then | |
1241 | - | else | |
1242 | - | ||
1243 | - | func | |
1244 | - | then | |
1233 | + | let ff = { | |
1234 | + | let eW = cQ | |
1235 | + | let eX = size(eW) | |
1236 | + | let eY = nil | |
1237 | + | func eZ (fa,fb) = if ((fb >= eX)) | |
1238 | + | then fa | |
1239 | + | else gV(fa, eW[fb]) | |
1240 | + | ||
1241 | + | func fc (fa,fb) = if ((fb >= eX)) | |
1242 | + | then fa | |
1245 | 1243 | else throw("List size exceeds 6") | |
1246 | 1244 | ||
1247 | - | | |
1245 | + | fc(eZ(eZ(eZ(eZ(eZ(eZ(eY, 0), 1), 2), 3), 4), 5), 6) | |
1248 | 1246 | } | |
1249 | - | makeString( | |
1250 | - | } | |
1251 | - | ||
1252 | - | ||
1253 | - | func | |
1254 | - | func | |
1255 | - | let | |
1256 | - | $Tuple2(( | |
1247 | + | makeString(ff, "_") | |
1248 | + | } | |
1249 | + | ||
1250 | + | ||
1251 | + | func gX (gJ,gT,gK,gU) = { | |
1252 | + | func gV (eU,gN) = { | |
1253 | + | let gW = ((fraction(gT, gU, a) * gJ[gN]) * gK) | |
1254 | + | $Tuple2((eU._1 :+ gW), (eU._2 + gW)) | |
1257 | 1255 | } | |
1258 | 1256 | ||
1259 | - | let | |
1260 | - | let | |
1261 | - | let | |
1262 | - | func | |
1263 | - | then | |
1264 | - | else | |
1265 | - | ||
1266 | - | func | |
1267 | - | then | |
1257 | + | let eW = cQ | |
1258 | + | let eX = size(eW) | |
1259 | + | let eY = $Tuple2(nil, 0) | |
1260 | + | func eZ (fa,fb) = if ((fb >= eX)) | |
1261 | + | then fa | |
1262 | + | else gV(fa, eW[fb]) | |
1263 | + | ||
1264 | + | func fc (fa,fb) = if ((fb >= eX)) | |
1265 | + | then fa | |
1268 | 1266 | else throw("List size exceeds 6") | |
1269 | 1267 | ||
1270 | - | | |
1271 | - | } | |
1272 | - | ||
1273 | - | ||
1274 | - | func | |
1275 | - | let | |
1276 | - | let | |
1277 | - | if (( | |
1278 | - | then $Tuple2(makeString( | |
1279 | - | else if (( | |
1268 | + | fc(eZ(eZ(eZ(eZ(eZ(eZ(eY, 0), 1), 2), 3), 4), 5), 6) | |
1269 | + | } | |
1270 | + | ||
1271 | + | ||
1272 | + | func gY (gZ,ha,hb,hc) = { | |
1273 | + | let hd = hb._1 | |
1274 | + | let he = hb._2 | |
1275 | + | if ((he == 0)) | |
1276 | + | then $Tuple2(makeString(gZ, "_"), makeString(ha, "_")) | |
1277 | + | else if ((hc >= he)) | |
1280 | 1278 | then { | |
1281 | - | func | |
1282 | - | ||
1283 | - | let | |
1284 | - | let | |
1285 | - | let | |
1286 | - | let | |
1287 | - | func | |
1288 | - | then | |
1289 | - | else | |
1290 | - | ||
1291 | - | func | |
1292 | - | then | |
1279 | + | func hf (eU,gN) = (eU :+ toString((parseIntValue(gZ[gN]) + hd[gN]))) | |
1280 | + | ||
1281 | + | let ff = { | |
1282 | + | let eW = cQ | |
1283 | + | let eX = size(eW) | |
1284 | + | let eY = nil | |
1285 | + | func eZ (fa,fb) = if ((fb >= eX)) | |
1286 | + | then fa | |
1287 | + | else hf(fa, eW[fb]) | |
1288 | + | ||
1289 | + | func fc (fa,fb) = if ((fb >= eX)) | |
1290 | + | then fa | |
1293 | 1291 | else throw("List size exceeds 6") | |
1294 | 1292 | ||
1295 | - | | |
1293 | + | fc(eZ(eZ(eZ(eZ(eZ(eZ(eY, 0), 1), 2), 3), 4), 5), 6) | |
1296 | 1294 | } | |
1297 | - | $Tuple2(makeString( | |
1295 | + | $Tuple2(makeString(ff, "_"), makeString(ha, "_")) | |
1298 | 1296 | } | |
1299 | 1297 | else { | |
1300 | - | func | |
1301 | - | let | |
1302 | - | $Tuple2(( | |
1298 | + | func hg (eU,gN) = { | |
1299 | + | let hh = fraction(hd[gN], hc, he) | |
1300 | + | $Tuple2((eU._1 :+ toString((parseIntValue(gZ[gN]) + hh))), (eU._2 :+ toString(((parseIntValue(ha[gN]) + hd[gN]) - hh)))) | |
1303 | 1301 | } | |
1304 | 1302 | ||
1305 | - | let | |
1306 | - | let | |
1307 | - | let | |
1308 | - | let | |
1309 | - | func | |
1310 | - | then | |
1311 | - | else | |
1312 | - | ||
1313 | - | func | |
1314 | - | then | |
1303 | + | let ff = { | |
1304 | + | let eW = cQ | |
1305 | + | let eX = size(eW) | |
1306 | + | let eY = $Tuple2(nil, nil) | |
1307 | + | func eZ (fa,fb) = if ((fb >= eX)) | |
1308 | + | then fa | |
1309 | + | else hg(fa, eW[fb]) | |
1310 | + | ||
1311 | + | func fc (fa,fb) = if ((fb >= eX)) | |
1312 | + | then fa | |
1315 | 1313 | else throw("List size exceeds 6") | |
1316 | 1314 | ||
1317 | - | | |
1315 | + | fc(eZ(eZ(eZ(eZ(eZ(eZ(eY, 0), 1), 2), 3), 4), 5), 6) | |
1318 | 1316 | } | |
1319 | - | $Tuple2(makeString( | |
1317 | + | $Tuple2(makeString(ff._1, "_"), makeString(ff._2, "_")) | |
1320 | 1318 | } | |
1321 | 1319 | } | |
1322 | 1320 | ||
1323 | 1321 | ||
1324 | - | func hj (hk) = if ((hk >= toBigInt(0))) | |
1325 | - | then hk | |
1326 | - | else -(hk) | |
1327 | - | ||
1328 | - | ||
1329 | - | let hl = [[35, 18, 30, 7, 6, 24], [29, 18, 29, 7, 8, 29], [6, 18, 29, 8, 30, 29], [6, 28, 6, 48, 26, 6], [24, 18, 6, 30, 30, 12]] | |
1330 | - | ||
1331 | - | let hm = [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] | |
1332 | - | ||
1333 | - | let hn = ["A", "B", "C", "D", "E", "F"] | |
1334 | - | ||
1335 | - | let ho = 10 | |
1336 | - | ||
1337 | - | func hp (eV,hq) = (eV + parseIntValue(hq)) | |
1338 | - | ||
1339 | - | ||
1340 | - | func hr (hs,ht) = if ((hs == 0)) | |
1341 | - | then throw("maxRand should be non-zero") | |
1342 | - | else { | |
1343 | - | let hu = toBigInt(hs) | |
1344 | - | $Tuple2(toInt((ht % hu)), (ht / hu)) | |
1345 | - | } | |
1346 | - | ||
1347 | - | ||
1348 | - | func hv (hw,hx,hy) = { | |
1349 | - | func hz (eV,hq) = if (eV._1) | |
1350 | - | then eV | |
1351 | - | else { | |
1352 | - | let hA = ((eV._3 - hq) - hy) | |
1353 | - | if ((0 > hA)) | |
1354 | - | then $Tuple3(true, eV._2, 0) | |
1355 | - | else $Tuple3(false, (eV._2 + 1), hA) | |
1356 | - | } | |
1357 | - | ||
1358 | - | let fg = { | |
1359 | - | let eX = hw | |
1360 | - | let eY = size(eX) | |
1361 | - | let eZ = $Tuple3(false, 0, hx) | |
1362 | - | func fa (fb,fc) = if ((fc >= eY)) | |
1363 | - | then fb | |
1364 | - | else hz(fb, eX[fc]) | |
1365 | - | ||
1366 | - | func fd (fb,fc) = if ((fc >= eY)) | |
1367 | - | then fb | |
1368 | - | else throw("List size exceeds 6") | |
1369 | - | ||
1370 | - | fd(fa(fa(fa(fa(fa(fa(eZ, 0), 1), 2), 3), 4), 5), 6) | |
1371 | - | } | |
1372 | - | fg._2 | |
1373 | - | } | |
1374 | - | ||
1375 | - | ||
1376 | - | func hB (hC,gL,hD) = { | |
1377 | - | func hE (hF,hG) = { | |
1378 | - | let fy = split(valueOrElse(getString(dz(hG)), "0_0_0_0_0_0"), "_") | |
1379 | - | let hH = { | |
1380 | - | let eX = fy | |
1381 | - | let eY = size(eX) | |
1382 | - | let eZ = 0 | |
1383 | - | func fa (fb,fc) = if ((fc >= eY)) | |
1384 | - | then fb | |
1385 | - | else hp(fb, eX[fc]) | |
1386 | - | ||
1387 | - | func fd (fb,fc) = if ((fc >= eY)) | |
1388 | - | then fb | |
1389 | - | else throw("List size exceeds 6") | |
1390 | - | ||
1391 | - | fd(fa(fa(fa(fa(fa(fa(eZ, 0), 1), 2), 3), 4), 5), 6) | |
1392 | - | } | |
1393 | - | $Tuple2((hF._1 :+ hH), (hF._2 + hH)) | |
1394 | - | } | |
1395 | - | ||
1396 | - | let hI = { | |
1397 | - | let eX = aV | |
1398 | - | let eY = size(eX) | |
1399 | - | let eZ = $Tuple2(nil, 0) | |
1400 | - | func fa (fb,fc) = if ((fc >= eY)) | |
1401 | - | then fb | |
1402 | - | else hE(fb, eX[fc]) | |
1403 | - | ||
1404 | - | func fd (fb,fc) = if ((fc >= eY)) | |
1405 | - | then fb | |
1406 | - | else throw("List size exceeds 5") | |
1407 | - | ||
1408 | - | fd(fa(fa(fa(fa(fa(eZ, 0), 1), 2), 3), 4), 5) | |
1409 | - | } | |
1410 | - | let hJ = hI._1 | |
1411 | - | let eQ = hI._2 | |
1412 | - | let hK = max(hJ) | |
1413 | - | let hL = ((hK * aJ) - eQ) | |
1414 | - | let hM = (hL / (ho * aJ)) | |
1415 | - | let hN = if (if ((hD >= 0)) | |
1416 | - | then (aJ > hD) | |
1417 | - | else false) | |
1418 | - | then $Tuple2(hD, hC) | |
1419 | - | else if ((hL == 0)) | |
1420 | - | then hr(aJ, hC) | |
1421 | - | else { | |
1422 | - | let hO = hr((hL + (hM * aJ)), hC) | |
1423 | - | let fg = hO._1 | |
1424 | - | let hP = hO._2 | |
1425 | - | func hQ (eV,hq) = (eV :+ (hK - hq)) | |
1426 | - | ||
1427 | - | let hR = { | |
1428 | - | let eX = hJ | |
1429 | - | let eY = size(eX) | |
1430 | - | let eZ = nil | |
1431 | - | func hS (fb,fc) = if ((fc >= eY)) | |
1432 | - | then fb | |
1433 | - | else hQ(fb, eX[fc]) | |
1434 | - | ||
1435 | - | func hT (fb,fc) = if ((fc >= eY)) | |
1436 | - | then fb | |
1437 | - | else throw("List size exceeds 6") | |
1438 | - | ||
1439 | - | hT(hS(hS(hS(hS(hS(hS(eZ, 0), 1), 2), 3), 4), 5), 6) | |
1440 | - | } | |
1441 | - | $Tuple2(hv(hR, fg, hM), hP) | |
1442 | - | } | |
1443 | - | let hU = hN._1 | |
1444 | - | let hV = hN._2 | |
1445 | - | let hW = hl[hU] | |
1446 | - | let hX = split(valueOrElse(getString(dz(aV[hU])), "0_0_0_0_0_0"), "_") | |
1447 | - | func hY (eV,hq) = (eV :+ parseIntValue(hq)) | |
1448 | - | ||
1449 | - | let hZ = { | |
1450 | - | let eX = hX | |
1451 | - | let eY = size(eX) | |
1452 | - | let eZ = nil | |
1453 | - | func hS (fb,fc) = if ((fc >= eY)) | |
1454 | - | then fb | |
1455 | - | else hY(fb, eX[fc]) | |
1456 | - | ||
1457 | - | func hT (fb,fc) = if ((fc >= eY)) | |
1458 | - | then fb | |
1459 | - | else throw("List size exceeds 6") | |
1460 | - | ||
1461 | - | hT(hS(hS(hS(hS(hS(hS(eZ, 0), 1), 2), 3), 4), 5), 6) | |
1462 | - | } | |
1463 | - | let ia = hJ[hU] | |
1464 | - | func ib (hF,ic) = { | |
1465 | - | func id (eV,fF) = (eV :+ ((hF._2[fF] * 120) - (hW[fF] * hF._3))) | |
1466 | - | ||
1467 | - | let ie = { | |
1468 | - | let eX = cR | |
1469 | - | let eY = size(eX) | |
1470 | - | let eZ = nil | |
1471 | - | func if (fb,fc) = if ((fc >= eY)) | |
1472 | - | then fb | |
1473 | - | else id(fb, eX[fc]) | |
1474 | - | ||
1475 | - | func ig (fb,fc) = if ((fc >= eY)) | |
1476 | - | then fb | |
1477 | - | else throw("List size exceeds 6") | |
1478 | - | ||
1479 | - | ig(if(if(if(if(if(if(eZ, 0), 1), 2), 3), 4), 5), 6) | |
1480 | - | } | |
1481 | - | let ih = max(ie) | |
1482 | - | func ii (eV,hq) = { | |
1483 | - | let dF = (ih - hq) | |
1484 | - | $Tuple2((eV._1 :+ dF), (eV._2 + dF)) | |
1485 | - | } | |
1486 | - | ||
1487 | - | let ij = { | |
1488 | - | let eX = ie | |
1489 | - | let eY = size(eX) | |
1490 | - | let eZ = $Tuple2(nil, 0) | |
1491 | - | func ik (fb,fc) = if ((fc >= eY)) | |
1492 | - | then fb | |
1493 | - | else ii(fb, eX[fc]) | |
1494 | - | ||
1495 | - | func il (fb,fc) = if ((fc >= eY)) | |
1496 | - | then fb | |
1497 | - | else throw("List size exceeds 6") | |
1498 | - | ||
1499 | - | il(ik(ik(ik(ik(ik(ik(eZ, 0), 1), 2), 3), 4), 5), 6) | |
1500 | - | } | |
1501 | - | let im = ij._1 | |
1502 | - | let in = ij._2 | |
1503 | - | let io = (in / (ho * aI)) | |
1504 | - | let ip = if ((in == 0)) | |
1505 | - | then hr(aI, hF._4) | |
1506 | - | else { | |
1507 | - | let iq = hr((in + (io * aI)), hF._4) | |
1508 | - | let fg = iq._1 | |
1509 | - | let hP = iq._2 | |
1510 | - | $Tuple2(hv(im, fg, io), hP) | |
1511 | - | } | |
1512 | - | let dh = ip._1 | |
1513 | - | let ir = ip._2 | |
1514 | - | func is (eV,fF) = (eV :+ (hF._2[fF] + (if ((fF == dh)) | |
1515 | - | then gL | |
1516 | - | else 0))) | |
1517 | - | ||
1518 | - | let it = { | |
1519 | - | let eX = cR | |
1520 | - | let eY = size(eX) | |
1521 | - | let eZ = nil | |
1522 | - | func iu (fb,fc) = if ((fc >= eY)) | |
1523 | - | then fb | |
1524 | - | else is(fb, eX[fc]) | |
1525 | - | ||
1526 | - | func iv (fb,fc) = if ((fc >= eY)) | |
1527 | - | then fb | |
1528 | - | else throw("List size exceeds 6") | |
1529 | - | ||
1530 | - | iv(iu(iu(iu(iu(iu(iu(eZ, 0), 1), 2), 3), 4), 5), 6) | |
1531 | - | } | |
1532 | - | $Tuple4((hF._1 + hn[dh]), it, (hF._3 + gL), ir) | |
1533 | - | } | |
1534 | - | ||
1535 | - | let fn = { | |
1536 | - | let eX = hm | |
1537 | - | let eY = size(eX) | |
1538 | - | let eZ = $Tuple4("", hZ, ia, hV) | |
1539 | - | func if (fb,fc) = if ((fc >= eY)) | |
1540 | - | then fb | |
1541 | - | else ib(fb, eX[fc]) | |
1542 | - | ||
1543 | - | func ig (fb,fc) = if ((fc >= eY)) | |
1544 | - | then fb | |
1545 | - | else throw("List size exceeds 25") | |
1546 | - | ||
1547 | - | ig(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(eZ, 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) | |
1548 | - | } | |
1549 | - | $Tuple2(hU, fn._1) | |
1550 | - | } | |
1551 | - | ||
1552 | - | ||
1553 | - | let iw = [[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]] | |
1554 | - | ||
1555 | - | func ix (dH,iy) = { | |
1556 | - | let hA = toInt((dH % en)) | |
1557 | - | let iz = if ((iy[0] > hA)) | |
1322 | + | func hi (hj) = if ((hj >= toBigInt(0))) | |
1323 | + | then hj | |
1324 | + | else -(hj) | |
1325 | + | ||
1326 | + | ||
1327 | + | let hk = [[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]] | |
1328 | + | ||
1329 | + | func hl (dG,hm) = { | |
1330 | + | let hn = toInt((dG % em)) | |
1331 | + | let ho = if ((hm[0] > hn)) | |
1558 | 1332 | then "A" | |
1559 | - | else if (( | |
1333 | + | else if ((hm[1] > hn)) | |
1560 | 1334 | then "B" | |
1561 | - | else if (( | |
1335 | + | else if ((hm[2] > hn)) | |
1562 | 1336 | then "C" | |
1563 | - | else if (( | |
1337 | + | else if ((hm[3] > hn)) | |
1564 | 1338 | then "D" | |
1565 | - | else if (( | |
1339 | + | else if ((hm[4] > hn)) | |
1566 | 1340 | then "E" | |
1567 | 1341 | else "F" | |
1568 | - | | |
1569 | - | } | |
1570 | - | ||
1571 | - | ||
1572 | - | func | |
1573 | - | let | |
1574 | - | func | |
1575 | - | ||
1576 | - | let | |
1577 | - | let | |
1578 | - | let | |
1579 | - | let | |
1580 | - | func | |
1581 | - | then | |
1582 | - | else | |
1583 | - | ||
1584 | - | func | |
1585 | - | then | |
1342 | + | ho | |
1343 | + | } | |
1344 | + | ||
1345 | + | ||
1346 | + | func hp (hq,hr) = { | |
1347 | + | let hs = hk[hr] | |
1348 | + | func ht (eU,eV) = $Tuple2((((((eU._1 + hl(eU._2, hs)) + hl((eU._2 / em), hs)) + hl((eU._2 / en), hs)) + hl((eU._2 / eo), hs)) + hl((eU._2 / ep), hs)), (eU._2 / eq)) | |
1349 | + | ||
1350 | + | let gy = { | |
1351 | + | let eW = [1, 2, 3, 4, 5] | |
1352 | + | let eX = size(eW) | |
1353 | + | let eY = $Tuple2("", (hq / el)) | |
1354 | + | func eZ (fa,fb) = if ((fb >= eX)) | |
1355 | + | then fa | |
1356 | + | else ht(fa, eW[fb]) | |
1357 | + | ||
1358 | + | func fc (fa,fb) = if ((fb >= eX)) | |
1359 | + | then fa | |
1586 | 1360 | else throw("List size exceeds 5") | |
1587 | 1361 | ||
1588 | - | | |
1362 | + | fc(eZ(eZ(eZ(eZ(eZ(eY, 0), 1), 2), 3), 4), 5) | |
1589 | 1363 | } | |
1590 | - | gz._1 | |
1591 | - | } | |
1592 | - | ||
1593 | - | ||
1594 | - | func iF (iG,gL) = { | |
1595 | - | func iH (eV,dF) = { | |
1596 | - | let fF = eV._2 | |
1597 | - | let hq = parseIntValue(dF) | |
1598 | - | let hk = if ((hq == 0)) | |
1364 | + | gy._1 | |
1365 | + | } | |
1366 | + | ||
1367 | + | ||
1368 | + | let hu = [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] | |
1369 | + | ||
1370 | + | let hv = ["A", "B", "C", "D", "E", "F"] | |
1371 | + | ||
1372 | + | func hw (hx,gK) = { | |
1373 | + | func hy (eU,dE) = { | |
1374 | + | let fE = eU._2 | |
1375 | + | let hz = parseIntValue(dE) | |
1376 | + | let hj = if ((hz == 0)) | |
1599 | 1377 | then 0 | |
1600 | - | else if (( | |
1601 | - | then ( | |
1602 | - | else if (( | |
1378 | + | else if ((hz >= (4 * gK))) | |
1379 | + | then (hz / gK) | |
1380 | + | else if ((hz > (3 * gK))) | |
1603 | 1381 | then 3 | |
1604 | - | else ((( | |
1605 | - | $Tuple3(( | |
1382 | + | else (((hz - 1) / gK) + 1) | |
1383 | + | $Tuple3((eU._1 :+ hj), (eU._2 + 1), (eU._3 + hj)) | |
1606 | 1384 | } | |
1607 | 1385 | ||
1608 | - | let | |
1609 | - | let | |
1610 | - | let | |
1611 | - | let | |
1612 | - | func | |
1613 | - | then | |
1614 | - | else | |
1615 | - | ||
1616 | - | func | |
1617 | - | then | |
1386 | + | let gy = { | |
1387 | + | let eW = hx | |
1388 | + | let eX = size(eW) | |
1389 | + | let eY = $Tuple3(nil, 0, 0) | |
1390 | + | func eZ (fa,fb) = if ((fb >= eX)) | |
1391 | + | then fa | |
1392 | + | else hy(fa, eW[fb]) | |
1393 | + | ||
1394 | + | func fc (fa,fb) = if ((fb >= eX)) | |
1395 | + | then fa | |
1618 | 1396 | else throw("List size exceeds 6") | |
1619 | 1397 | ||
1620 | - | | |
1398 | + | fc(eZ(eZ(eZ(eZ(eZ(eZ(eY, 0), 1), 2), 3), 4), 5), 6) | |
1621 | 1399 | } | |
1622 | - | let | |
1623 | - | let | |
1624 | - | let | |
1625 | - | func | |
1626 | - | let | |
1627 | - | then | |
1628 | - | else | |
1629 | - | let | |
1400 | + | let hA = gy._1 | |
1401 | + | let hB = value(indexOf(hA, max(hA))) | |
1402 | + | let hC = (gy._3 - 25) | |
1403 | + | func hD (eU,dg) = { | |
1404 | + | let dQ = if ((dg == hB)) | |
1405 | + | then (hA[dg] - hC) | |
1406 | + | else hA[dg] | |
1407 | + | let dU = if ((dQ == 0)) | |
1630 | 1408 | then nil | |
1631 | - | else split(drop(toString(pow(10, 0, | |
1632 | - | let | |
1633 | - | func | |
1634 | - | ||
1635 | - | let | |
1636 | - | let | |
1637 | - | let | |
1638 | - | let | |
1639 | - | func | |
1640 | - | then | |
1641 | - | else | |
1642 | - | ||
1643 | - | func | |
1644 | - | then | |
1409 | + | else split(drop(toString(pow(10, 0, dQ, 0, 0, DOWN)), 1), "") | |
1410 | + | let gd = hv[dg] | |
1411 | + | func hE (hF,hG) = (hF :+ gd) | |
1412 | + | ||
1413 | + | let hH = { | |
1414 | + | let eW = dU | |
1415 | + | let eX = size(eW) | |
1416 | + | let eY = nil | |
1417 | + | func hI (fa,fb) = if ((fb >= eX)) | |
1418 | + | then fa | |
1419 | + | else hE(fa, eW[fb]) | |
1420 | + | ||
1421 | + | func hJ (fa,fb) = if ((fb >= eX)) | |
1422 | + | then fa | |
1645 | 1423 | else throw("List size exceeds 25") | |
1646 | 1424 | ||
1647 | - | | |
1648 | - | } | |
1649 | - | ( | |
1425 | + | hJ(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(eY, 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) | |
1426 | + | } | |
1427 | + | (eU ++ hH) | |
1650 | 1428 | } | |
1651 | 1429 | ||
1652 | - | let | |
1653 | - | let | |
1654 | - | let | |
1655 | - | let | |
1656 | - | func | |
1657 | - | then | |
1658 | - | else | |
1659 | - | ||
1660 | - | func | |
1661 | - | then | |
1430 | + | let ff = { | |
1431 | + | let eW = cQ | |
1432 | + | let eX = size(eW) | |
1433 | + | let eY = nil | |
1434 | + | func hI (fa,fb) = if ((fb >= eX)) | |
1435 | + | then fa | |
1436 | + | else hD(fa, eW[fb]) | |
1437 | + | ||
1438 | + | func hJ (fa,fb) = if ((fb >= eX)) | |
1439 | + | then fa | |
1662 | 1440 | else throw("List size exceeds 6") | |
1663 | 1441 | ||
1664 | - | | |
1442 | + | hJ(hI(hI(hI(hI(hI(hI(eY, 0), 1), 2), 3), 4), 5), 6) | |
1665 | 1443 | } | |
1666 | - | func | |
1667 | - | ||
1668 | - | let | |
1669 | - | let | |
1670 | - | let | |
1671 | - | func | |
1672 | - | then | |
1673 | - | else | |
1674 | - | ||
1675 | - | func | |
1676 | - | then | |
1444 | + | func hK (eU,fE) = (eU + ff[fE]) | |
1445 | + | ||
1446 | + | let eW = hu | |
1447 | + | let eX = size(eW) | |
1448 | + | let eY = "" | |
1449 | + | func hL (fa,fb) = if ((fb >= eX)) | |
1450 | + | then fa | |
1451 | + | else hK(fa, eW[fb]) | |
1452 | + | ||
1453 | + | func hM (fa,fb) = if ((fb >= eX)) | |
1454 | + | then fa | |
1677 | 1455 | else throw("List size exceeds 25") | |
1678 | 1456 | ||
1679 | - | | |
1680 | - | } | |
1681 | - | ||
1682 | - | ||
1683 | - | func | |
1684 | - | let | |
1685 | - | [toString(valueOrElse(parseInt( | |
1686 | - | then | |
1687 | - | else "0_0_0_0_0_0", if ((size(split( | |
1688 | - | then | |
1689 | - | else "0_0_0_0_0_0", | |
1690 | - | } | |
1691 | - | ||
1692 | - | ||
1693 | - | func | |
1694 | - | let | |
1695 | - | (( | |
1696 | - | } | |
1697 | - | ||
1698 | - | ||
1699 | - | func | |
1700 | - | let | |
1701 | - | func | |
1702 | - | ||
1703 | - | func | |
1704 | - | let | |
1705 | - | let | |
1706 | - | $Tuple2(( | |
1457 | + | 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(eY, 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) | |
1458 | + | } | |
1459 | + | ||
1460 | + | ||
1461 | + | func hN (hO) = { | |
1462 | + | let gx = split(valueOrElse(getString(hO), "0:0_0_0_0_0_0:0_0_0_0_0_0:"), ":") | |
1463 | + | [toString(valueOrElse(parseInt(gx[bm]), 0)), if ((size(split(gx[bn], "_")) == aI)) | |
1464 | + | then gx[bn] | |
1465 | + | else "0_0_0_0_0_0", if ((size(split(gx[bo], "_")) == aI)) | |
1466 | + | then gx[bo] | |
1467 | + | else "0_0_0_0_0_0", gx[bp]] | |
1468 | + | } | |
1469 | + | ||
1470 | + | ||
1471 | + | func hP (hQ) = { | |
1472 | + | let fs = split(hQ, "_") | |
1473 | + | ((aL * (parseIntValue(fs[1]) + 1)) * parseIntValue(fs[0])) | |
1474 | + | } | |
1475 | + | ||
1476 | + | ||
1477 | + | func hR (hS) = { | |
1478 | + | let hT = hS[bg] | |
1479 | + | func hU (eU,hV) = (eU + parseIntValue(hV)) | |
1480 | + | ||
1481 | + | func hW (eU,hV) = { | |
1482 | + | let dg = eU._1 | |
1483 | + | let eN = (((parseIntValue(hV) + bc) - 1) / bc) | |
1484 | + | $Tuple2((dg + 1), (eU._2 + (eN * cK))) | |
1707 | 1485 | } | |
1708 | 1486 | ||
1709 | - | let | |
1710 | - | let | |
1711 | - | let | |
1712 | - | let | |
1713 | - | func | |
1714 | - | then | |
1715 | - | else | |
1716 | - | ||
1717 | - | func | |
1718 | - | then | |
1487 | + | let hX = { | |
1488 | + | let eW = split(hS[be], "_") | |
1489 | + | let eX = size(eW) | |
1490 | + | let eY = 0 | |
1491 | + | func eZ (fa,fb) = if ((fb >= eX)) | |
1492 | + | then fa | |
1493 | + | else hU(fa, eW[fb]) | |
1494 | + | ||
1495 | + | func fc (fa,fb) = if ((fb >= eX)) | |
1496 | + | then fa | |
1719 | 1497 | else throw("List size exceeds 6") | |
1720 | 1498 | ||
1721 | - | | |
1499 | + | fc(eZ(eZ(eZ(eZ(eZ(eZ(eY, 0), 1), 2), 3), 4), 5), 6) | |
1722 | 1500 | } | |
1723 | - | let | |
1724 | - | let | |
1725 | - | let | |
1726 | - | let | |
1727 | - | func | |
1728 | - | then | |
1729 | - | else | |
1730 | - | ||
1731 | - | func | |
1732 | - | then | |
1501 | + | let hY = { | |
1502 | + | let eW = split(hS[bf], "_") | |
1503 | + | let eX = size(eW) | |
1504 | + | let eY = 0 | |
1505 | + | func hI (fa,fb) = if ((fb >= eX)) | |
1506 | + | then fa | |
1507 | + | else hU(fa, eW[fb]) | |
1508 | + | ||
1509 | + | func hJ (fa,fb) = if ((fb >= eX)) | |
1510 | + | then fa | |
1733 | 1511 | else throw("List size exceeds 6") | |
1734 | 1512 | ||
1735 | - | | |
1513 | + | hJ(hI(hI(hI(hI(hI(hI(eY, 0), 1), 2), 3), 4), 5), 6) | |
1736 | 1514 | } | |
1737 | - | let | |
1515 | + | let hZ = if ((hT == "")) | |
1738 | 1516 | then 0 | |
1739 | - | else ( let | |
1740 | - | let | |
1741 | - | let | |
1742 | - | func | |
1743 | - | then | |
1744 | - | else | |
1745 | - | ||
1746 | - | func | |
1747 | - | then | |
1517 | + | else ( let eW = split_4C(hT, "_") | |
1518 | + | let eX = size(eW) | |
1519 | + | let eY = $Tuple2(0, 0) | |
1520 | + | func hL (fa,fb) = if ((fb >= eX)) | |
1521 | + | then fa | |
1522 | + | else hW(fa, eW[fb]) | |
1523 | + | ||
1524 | + | func hM (fa,fb) = if ((fb >= eX)) | |
1525 | + | then fa | |
1748 | 1526 | else throw("List size exceeds 50") | |
1749 | 1527 | ||
1750 | - | | |
1751 | - | (( | |
1752 | - | } | |
1753 | - | ||
1754 | - | ||
1755 | - | func | |
1756 | - | let | |
1757 | - | let | |
1758 | - | let | |
1759 | - | let | |
1760 | - | let | |
1761 | - | let | |
1762 | - | then makeString(["0", toString( | |
1528 | + | 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(eY, 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 | |
1529 | + | ((hX + hY) + hZ) | |
1530 | + | } | |
1531 | + | ||
1532 | + | ||
1533 | + | func ia (ib,ic,id) = { | |
1534 | + | let hQ = ((toString(ic) + "_") + toString(id)) | |
1535 | + | let ie = hP(hQ) | |
1536 | + | let if = valueOrElse(getString(ib), (hQ + ":0_0_0_0_0_0:0_0_0_0_0_0::0")) | |
1537 | + | let ig = split_4C(if, ":") | |
1538 | + | let ih = hR(ig) | |
1539 | + | let ii = if ((5 > size(ig))) | |
1540 | + | then makeString(["0", toString(ih), toString((ie - ih)), toString(ie)], "_") | |
1763 | 1541 | else { | |
1764 | - | let | |
1765 | - | let | |
1766 | - | let | |
1767 | - | then parseIntValue( | |
1768 | - | else | |
1769 | - | makeString([toString( | |
1770 | - | } | |
1771 | - | [ | |
1772 | - | then | |
1773 | - | else "0_0_0_0_0_0", if ((size(split( | |
1774 | - | then | |
1775 | - | else "0_0_0_0_0_0", | |
1776 | - | } | |
1777 | - | ||
1778 | - | ||
1779 | - | func | |
1780 | - | let | |
1781 | - | let | |
1782 | - | (( | |
1783 | - | } | |
1784 | - | ||
1785 | - | ||
1786 | - | func | |
1542 | + | let ij = split(ig[bh], "_") | |
1543 | + | let ik = parseIntValue(ij[bi]) | |
1544 | + | let il = if ((size(ij) > 1)) | |
1545 | + | then parseIntValue(ij[bj]) | |
1546 | + | else ih | |
1547 | + | makeString([toString(ik), toString(il), toString(((ie - ik) - il)), toString(ie)], "_") | |
1548 | + | } | |
1549 | + | [ig[bd], if ((size(split(ig[be], "_")) == aI)) | |
1550 | + | then ig[be] | |
1551 | + | else "0_0_0_0_0_0", if ((size(split(ig[bf], "_")) == aI)) | |
1552 | + | then ig[bf] | |
1553 | + | else "0_0_0_0_0_0", ig[bg], ii] | |
1554 | + | } | |
1555 | + | ||
1556 | + | ||
1557 | + | func im (hS) = { | |
1558 | + | let in = hR(hS) | |
1559 | + | let io = parseIntValue(split(hS[bh], "_")[bi]) | |
1560 | + | ((hP(hS[bd]) - in) - io) | |
1561 | + | } | |
1562 | + | ||
1563 | + | ||
1564 | + | func ip (iq,hS,ir) = if ((size(iq) != 3)) | |
1787 | 1565 | then throw("cargoListStr should contain exactly 2 ':' separators") | |
1788 | 1566 | else { | |
1789 | - | let | |
1790 | - | let | |
1791 | - | let | |
1567 | + | let is = split(iq[0], "_") | |
1568 | + | let it = split(iq[1], "_") | |
1569 | + | let iu = if ((iq[2] == "")) | |
1792 | 1570 | then nil | |
1793 | - | else split_4C( | |
1794 | - | if ((size( | |
1571 | + | else split_4C(iq[2], "_") | |
1572 | + | if ((size(is) != aI)) | |
1795 | 1573 | then throw("All 6 resources should be passed") | |
1796 | - | else if ((size( | |
1574 | + | else if ((size(it) != aI)) | |
1797 | 1575 | then throw("All 6 materials should be passed") | |
1798 | 1576 | else { | |
1799 | - | let | |
1800 | - | let | |
1801 | - | let | |
1802 | - | let | |
1577 | + | let hc = im(hS) | |
1578 | + | let iv = split(hS[be], "_") | |
1579 | + | let iw = split(hS[bf], "_") | |
1580 | + | let ix = if ((hS[bg] == "")) | |
1803 | 1581 | then nil | |
1804 | - | else split_4C( | |
1805 | - | let | |
1806 | - | let | |
1807 | - | let | |
1582 | + | else split_4C(hS[bg], "_") | |
1583 | + | let ha = split(ir[bn], "_") | |
1584 | + | let iy = split(ir[bo], "_") | |
1585 | + | let iz = if ((ir[bp] == "")) | |
1808 | 1586 | then nil | |
1809 | - | else split_4C( | |
1810 | - | func | |
1811 | - | let | |
1812 | - | let | |
1813 | - | let | |
1814 | - | let | |
1815 | - | if (( | |
1816 | - | then $Tuple4(( | |
1817 | - | else if (( | |
1818 | - | then if (( | |
1819 | - | then throw((((("Attempt to take " + | |
1820 | - | else $Tuple4(( | |
1821 | - | else if ((-( | |
1822 | - | then throw((((("Attempt to take " + toString(-( | |
1823 | - | else $Tuple4(( | |
1587 | + | else split_4C(ir[bp], "_") | |
1588 | + | func iA (eU,hV) = { | |
1589 | + | let gN = eU._1 | |
1590 | + | let iB = parseIntValue(hV) | |
1591 | + | let iC = parseIntValue(iv[gN]) | |
1592 | + | let iD = parseIntValue(ha[gN]) | |
1593 | + | if ((iB == 0)) | |
1594 | + | then $Tuple4((gN + 1), (eU._2 :+ iv[gN]), (eU._3 :+ ha[gN]), eU._4) | |
1595 | + | else if ((iB > 0)) | |
1596 | + | then if ((iB > iD)) | |
1597 | + | then throw((((("Attempt to take " + hV) + " from backpack, but only ") + toString(iD)) + " available")) | |
1598 | + | else $Tuple4((gN + 1), (eU._2 :+ toString((iC + iB))), (eU._3 :+ toString((iD - iB))), (eU._4 + iB)) | |
1599 | + | else if ((-(iB) > iC)) | |
1600 | + | then throw((((("Attempt to take " + toString(-(iB))) + " from warehouse, but only ") + toString(iC)) + " available")) | |
1601 | + | else $Tuple4((gN + 1), (eU._2 :+ toString((iC + iB))), (eU._3 :+ toString((iD - iB))), (eU._4 + iB)) | |
1824 | 1602 | } | |
1825 | 1603 | ||
1826 | - | let | |
1827 | - | let | |
1828 | - | let | |
1829 | - | let | |
1830 | - | func | |
1831 | - | then | |
1832 | - | else | |
1833 | - | ||
1834 | - | func | |
1835 | - | then | |
1604 | + | let ff = { | |
1605 | + | let eW = is | |
1606 | + | let eX = size(eW) | |
1607 | + | let eY = $Tuple4(0, nil, nil, 0) | |
1608 | + | func eZ (fa,fb) = if ((fb >= eX)) | |
1609 | + | then fa | |
1610 | + | else iA(fa, eW[fb]) | |
1611 | + | ||
1612 | + | func fc (fa,fb) = if ((fb >= eX)) | |
1613 | + | then fa | |
1836 | 1614 | else throw("List size exceeds 6") | |
1837 | 1615 | ||
1838 | - | | |
1616 | + | fc(eZ(eZ(eZ(eZ(eZ(eZ(eY, 0), 1), 2), 3), 4), 5), 6) | |
1839 | 1617 | } | |
1840 | - | func | |
1841 | - | let | |
1842 | - | let | |
1843 | - | let | |
1844 | - | let | |
1845 | - | if (( | |
1846 | - | then $Tuple4(( | |
1847 | - | else if (( | |
1848 | - | then if (( | |
1849 | - | then throw((((("Attempt to take " + | |
1850 | - | else $Tuple4(( | |
1851 | - | else if ((-( | |
1852 | - | then throw((((("Attempt to take " + toString(-( | |
1853 | - | else $Tuple4(( | |
1618 | + | func iE (eU,hV) = { | |
1619 | + | let gN = eU._1 | |
1620 | + | let iB = parseIntValue(hV) | |
1621 | + | let iF = parseIntValue(iw[gN]) | |
1622 | + | let iG = parseIntValue(iy[gN]) | |
1623 | + | if ((iB == 0)) | |
1624 | + | then $Tuple4((gN + 1), (eU._2 :+ iw[gN]), (eU._3 :+ iy[gN]), eU._4) | |
1625 | + | else if ((iB > 0)) | |
1626 | + | then if ((iB > iG)) | |
1627 | + | then throw((((("Attempt to take " + hV) + " from backpack, but only ") + toString(iG)) + " available")) | |
1628 | + | else $Tuple4((gN + 1), (eU._2 :+ toString((iF + iB))), (eU._3 :+ toString((iG - iB))), (eU._4 + iB)) | |
1629 | + | else if ((-(iB) > iF)) | |
1630 | + | then throw((((("Attempt to take " + toString(-(iB))) + " from warehouse, but only ") + toString(iF)) + " available")) | |
1631 | + | else $Tuple4((gN + 1), (eU._2 :+ toString((iF + iB))), (eU._3 :+ toString((iG - iB))), (eU._4 + iB)) | |
1854 | 1632 | } | |
1855 | 1633 | ||
1856 | - | let | |
1857 | - | let | |
1858 | - | let | |
1859 | - | let | |
1860 | - | func | |
1861 | - | then | |
1862 | - | else | |
1863 | - | ||
1864 | - | func | |
1865 | - | then | |
1634 | + | let gt = { | |
1635 | + | let eW = it | |
1636 | + | let eX = size(eW) | |
1637 | + | let eY = $Tuple4(0, nil, nil, ff._4) | |
1638 | + | func hI (fa,fb) = if ((fb >= eX)) | |
1639 | + | then fa | |
1640 | + | else iE(fa, eW[fb]) | |
1641 | + | ||
1642 | + | func hJ (fa,fb) = if ((fb >= eX)) | |
1643 | + | then fa | |
1866 | 1644 | else throw("List size exceeds 6") | |
1867 | 1645 | ||
1868 | - | | |
1646 | + | hJ(hI(hI(hI(hI(hI(hI(eY, 0), 1), 2), 3), 4), 5), 6) | |
1869 | 1647 | } | |
1870 | - | func | |
1871 | - | let | |
1872 | - | let | |
1873 | - | let | |
1874 | - | then parseIntValue( | |
1648 | + | func iH (eU,hV) = { | |
1649 | + | let gN = eU._1 | |
1650 | + | let iB = parseIntValue(hV) | |
1651 | + | let iI = if ((size(ix) > gN)) | |
1652 | + | then parseIntValue(ix[gN]) | |
1875 | 1653 | else 0 | |
1876 | - | let | |
1877 | - | then parseIntValue( | |
1654 | + | let iJ = if ((size(iz) > gN)) | |
1655 | + | then parseIntValue(iz[gN]) | |
1878 | 1656 | else 0 | |
1879 | - | if (( | |
1880 | - | then $Tuple4(( | |
1881 | - | else if (( | |
1882 | - | then if (( | |
1883 | - | then throw((((("Attempt to take " + | |
1657 | + | if ((iB == 0)) | |
1658 | + | then $Tuple4((gN + 1), (eU._2 :+ toString(iI)), (eU._3 :+ toString(iJ)), eU._4) | |
1659 | + | else if ((iB > 0)) | |
1660 | + | then if ((iB > iJ)) | |
1661 | + | then throw((((("Attempt to take " + hV) + " from backpack, but only ") + toString(iJ)) + " available")) | |
1884 | 1662 | else { | |
1885 | - | let | |
1886 | - | $Tuple4(( | |
1663 | + | let fW = (eK((iI + iB), bc) - eK(iI, bc)) | |
1664 | + | $Tuple4((gN + 1), (eU._2 :+ toString((iI + iB))), (eU._3 :+ toString((iJ - iB))), (eU._4 + fW)) | |
1887 | 1665 | } | |
1888 | - | else if ((-( | |
1889 | - | then throw((((("Attempt to take " + toString(-( | |
1666 | + | else if ((-(iB) > iI)) | |
1667 | + | then throw((((("Attempt to take " + toString(-(iB))) + " from warehouse, but only ") + toString(iI)) + " available")) | |
1890 | 1668 | else { | |
1891 | - | let | |
1892 | - | $Tuple4(( | |
1669 | + | let fW = (eK((iI + iB), bc) - eK(iI, bc)) | |
1670 | + | $Tuple4((gN + 1), (eU._2 :+ toString((iI + iB))), (eU._3 :+ toString((iJ - iB))), (eU._4 + fW)) | |
1893 | 1671 | } | |
1894 | 1672 | } | |
1895 | 1673 | ||
1896 | - | let | |
1674 | + | let gx = if ((size(iu) != 0)) | |
1897 | 1675 | then { | |
1898 | - | let | |
1899 | - | let | |
1900 | - | let | |
1901 | - | func | |
1902 | - | then | |
1903 | - | else | |
1904 | - | ||
1905 | - | func | |
1906 | - | then | |
1676 | + | let eW = iu | |
1677 | + | let eX = size(eW) | |
1678 | + | let eY = $Tuple4(0, nil, nil, gt._4) | |
1679 | + | func hL (fa,fb) = if ((fb >= eX)) | |
1680 | + | then fa | |
1681 | + | else iH(fa, eW[fb]) | |
1682 | + | ||
1683 | + | func hM (fa,fb) = if ((fb >= eX)) | |
1684 | + | then fa | |
1907 | 1685 | else throw("List size exceeds 50") | |
1908 | 1686 | ||
1909 | - | | |
1687 | + | 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(eY, 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) | |
1910 | 1688 | } | |
1911 | - | else $Tuple4(0, | |
1912 | - | let | |
1913 | - | if (( | |
1914 | - | then throw((((("Attempt to put total " + toString( | |
1915 | - | else $Tuple7(makeString( | |
1689 | + | else $Tuple4(0, ix, iz, gt._4) | |
1690 | + | let iK = gx._4 | |
1691 | + | if ((iK > hc)) | |
1692 | + | then throw((((("Attempt to put total " + toString(iK)) + " stuff, but only ") + toString(hc)) + " warehouse space left")) | |
1693 | + | else $Tuple7(makeString(ff._2, "_"), makeString(gt._2, "_"), makeString_2C(gx._2, "_"), makeString(ff._3, "_"), makeString(gt._3, "_"), makeString_2C(gx._3, "_"), iK) | |
1916 | 1694 | } | |
1917 | 1695 | } | |
1918 | 1696 | ||
1919 | 1697 | ||
1920 | - | func | |
1921 | - | let | |
1922 | - | let | |
1923 | - | let | |
1924 | - | let | |
1925 | - | let | |
1926 | - | let | |
1927 | - | let | |
1928 | - | let | |
1929 | - | let | |
1930 | - | let | |
1931 | - | $Tuple2([IntegerEntry( | |
1932 | - | } | |
1933 | - | ||
1934 | - | ||
1935 | - | func | |
1698 | + | func iL (iM,iN) = { | |
1699 | + | let bQ = toString(iM) | |
1700 | + | let iO = hi(toBigInt(iN)) | |
1701 | + | let iP = valueOrElse(getInteger(es()), (er + 1)) | |
1702 | + | let ew = toString(iP) | |
1703 | + | let hr = toInt((iO % el)) | |
1704 | + | let gQ = hp(iO, hr) | |
1705 | + | let dz = aU[hr] | |
1706 | + | let iQ = Issue(eJ(ew, "S"), makeString([ew, "S", gQ, dz], "_"), 1, 0, false) | |
1707 | + | let bu = calculateAssetId(iQ) | |
1708 | + | let iR = toBase58String(bu) | |
1709 | + | $Tuple2([IntegerEntry(es(), (iP + 1)), iQ, StringEntry(ev(ew), iR), StringEntry(bt(iR), bQ), StringEntry(ey(ew), bQ), IntegerEntry(bD(iR), 0), IntegerEntry(ex(iR, bQ), 0), ScriptTransfer(iM, 1, bu)], $Tuple2(iR, dz)) | |
1710 | + | } | |
1711 | + | ||
1712 | + | ||
1713 | + | func iS (bQ,iT,iU) = if (!(sigVerify_8Kb(iT, iU, ec))) | |
1936 | 1714 | then throw("signature does not match") | |
1937 | 1715 | else { | |
1938 | - | let | |
1939 | - | let | |
1940 | - | let | |
1941 | - | let | |
1942 | - | let | |
1943 | - | let | |
1944 | - | let | |
1945 | - | let | |
1946 | - | if (if (( | |
1716 | + | let fs = split_4C(toUtf8String(iT), ";") | |
1717 | + | let iV = split_4C(fs[0], "|") | |
1718 | + | let iW = split(iV[eF], "_") | |
1719 | + | let iX = parseIntValue(iW[0]) | |
1720 | + | let iY = parseIntValue(iW[1]) | |
1721 | + | let iZ = split(fs[1], ":") | |
1722 | + | let ja = iZ[0] | |
1723 | + | let jb = parseIntValue(iV[eG]) | |
1724 | + | if (if ((jb > (lastBlock.timestamp + ee))) | |
1947 | 1725 | then true | |
1948 | - | else ((lastBlock.timestamp - | |
1949 | - | then throw(((("signature outdated: logTime=" + toString( | |
1726 | + | else ((lastBlock.timestamp - ee) > jb)) | |
1727 | + | then throw(((("signature outdated: logTime=" + toString(jb)) + ", bcTime=") + toString(lastBlock.timestamp))) | |
1950 | 1728 | else { | |
1951 | - | let | |
1952 | - | let | |
1953 | - | if (( | |
1954 | - | then throw(((("Tx ids don't match! In state: " + | |
1729 | + | let jc = iZ[1] | |
1730 | + | let jd = valueOrElse(getString(dO(bQ)), "") | |
1731 | + | if ((jd != jc)) | |
1732 | + | then throw(((("Tx ids don't match! In state: " + jd) + ", in msg: ") + jc)) | |
1955 | 1733 | else { | |
1956 | - | let B = valueOrErrorMessage(getString( | |
1957 | - | let | |
1958 | - | let | |
1959 | - | let | |
1960 | - | if (( | |
1961 | - | then throw(((("oldHealth=" + toString( | |
1962 | - | else if ((0 >= | |
1734 | + | let B = valueOrErrorMessage(getString(bM(bQ)), "You don't have a duck staked") | |
1735 | + | let je = A(B) | |
1736 | + | let jf = aj(valueOrElse(getInteger(E(B)), 0)) | |
1737 | + | let jg = valueOrElse(getInteger(je), jf) | |
1738 | + | if ((jg != iX)) | |
1739 | + | then throw(((("oldHealth=" + toString(jg)) + " from state does not match one from flight log=") + toString(iX))) | |
1740 | + | else if ((0 >= iX)) | |
1963 | 1741 | then throw("You can't fly with zero health") | |
1964 | - | else if (!( | |
1742 | + | else if (!(gz(B))) | |
1965 | 1743 | then throw("Equipment incompatible") | |
1966 | 1744 | else { | |
1967 | - | let | |
1968 | - | then | |
1745 | + | let jh = if ((size(iV) > eH)) | |
1746 | + | then iV[eH] | |
1969 | 1747 | else "" | |
1970 | - | let | |
1971 | - | then | |
1748 | + | let ji = if ((size(iV) > eI)) | |
1749 | + | then iV[eI] | |
1972 | 1750 | else "" | |
1973 | - | let | |
1974 | - | then ( | |
1751 | + | let jj = if (if ((iY > 0)) | |
1752 | + | then (jh == "$") | |
1975 | 1753 | else false) | |
1976 | - | then | |
1754 | + | then dF(invoke(dh, "sendUsdtPrize", [bQ], nil)) | |
1977 | 1755 | else 0 | |
1978 | - | $Tuple5( | |
1756 | + | $Tuple5(iY, B, jj, ja, ji) | |
1979 | 1757 | } | |
1980 | 1758 | } | |
1981 | 1759 | } | |
1982 | 1760 | } | |
1983 | 1761 | ||
1984 | 1762 | ||
1985 | - | func | |
1986 | - | let | |
1987 | - | let | |
1988 | - | let | |
1989 | - | let | |
1990 | - | (( | |
1991 | - | } | |
1992 | - | ||
1993 | - | ||
1994 | - | func | |
1995 | - | let | |
1996 | - | then $Tuple2( | |
1763 | + | func jk (Q,jl) = { | |
1764 | + | let id = valueOrElse(getInteger(bD(Q)), 0) | |
1765 | + | let jm = valueOrElse(getInteger(bx(aH, Q)), 0) | |
1766 | + | let jn = (id / 6) | |
1767 | + | let jo = (id / 7) | |
1768 | + | ((aK + fraction(aK, ((id + jn) + (2 * jo)), 5)) + fraction(aK, jm, (jl * 5))) | |
1769 | + | } | |
1770 | + | ||
1771 | + | ||
1772 | + | func jp (c,jq,jr) = { | |
1773 | + | let js = if ((jq == eC)) | |
1774 | + | then $Tuple2(jr, valueOrElse(getString(bM(c)), "")) | |
1997 | 1775 | else { | |
1998 | - | let B = valueOrErrorMessage(getString( | |
1999 | - | let | |
2000 | - | let | |
2001 | - | if (( | |
2002 | - | then throw((("Duck location type is " + | |
2003 | - | else $Tuple2( | |
2004 | - | } | |
2005 | - | let Q = | |
2006 | - | let | |
2007 | - | let | |
2008 | - | let | |
2009 | - | let | |
2010 | - | let | |
2011 | - | if (( | |
1776 | + | let B = valueOrErrorMessage(getString(bM(c)), "You don't have a duck staked") | |
1777 | + | let jt = valueOrElse(getString(bO(B)), aM) | |
1778 | + | let ck = split(value(jt), "_") | |
1779 | + | if ((ck[br] != "L")) | |
1780 | + | then throw((("Duck location type is " + ck[br]) + ", but should be L")) | |
1781 | + | else $Tuple2(ck[bs], B) | |
1782 | + | } | |
1783 | + | let Q = js._1 | |
1784 | + | let ju = js._2 | |
1785 | + | let jv = value(assetInfo(fromBase58String(Q))) | |
1786 | + | let jw = bw(Q) | |
1787 | + | let jx = valueOrErrorMessage(getInteger(jw), (("Land " + jv.name) + " is not staked")) | |
1788 | + | let jy = valueOrErrorMessage(getString(bt(Q)), (("NFT " + jv.name) + " is orphaned")) | |
1789 | + | if ((jy != c)) | |
2012 | 1790 | then throw((aF + " is not yours")) | |
2013 | 1791 | else { | |
2014 | - | let | |
2015 | - | $Tuple4( | |
2016 | - | } | |
2017 | - | } | |
2018 | - | ||
2019 | - | ||
2020 | - | func | |
1792 | + | let jz = split(jv.description, "_") | |
1793 | + | $Tuple4(ju, Q, jz, jx) | |
1794 | + | } | |
1795 | + | } | |
1796 | + | ||
1797 | + | ||
1798 | + | func jA (c,eL,jq,jr) = if ((0 > eL)) | |
2021 | 1799 | then throw("Negative amount") | |
2022 | 1800 | else { | |
2023 | - | let | |
2024 | - | let | |
2025 | - | let | |
2026 | - | let | |
2027 | - | if ((0 > | |
2028 | - | then throw(((("Saved timestamp is in future, saved = " + toString( | |
1801 | + | let gd = jp(c, jq, jr) | |
1802 | + | let dL = gd._3[do] | |
1803 | + | let gJ = gP(gd._3[dp]) | |
1804 | + | let gT = (lastBlock.timestamp - gd._4) | |
1805 | + | if ((0 > gT)) | |
1806 | + | then throw(((("Saved timestamp is in future, saved = " + toString(gd._4)) + ", current = ") + toString(lastBlock.timestamp))) | |
2029 | 1807 | else { | |
2030 | - | let | |
2031 | - | let | |
2032 | - | let | |
2033 | - | if (( | |
2034 | - | then throw(((("Not enough resources, available = " + toString( | |
1808 | + | let jl = dK(dL) | |
1809 | + | let jB = jk(gd._2, jl) | |
1810 | + | let jC = fraction(gT, (jB * jl), a) | |
1811 | + | if ((eL > jC)) | |
1812 | + | then throw(((("Not enough resources, available = " + toString(jC)) + ", requested = ") + toString(eL))) | |
2035 | 1813 | else { | |
2036 | - | let | |
2037 | - | let | |
2038 | - | let | |
2039 | - | let | |
2040 | - | let | |
2041 | - | let | |
2042 | - | let | |
2043 | - | let | |
2044 | - | let | |
2045 | - | if (if (( | |
2046 | - | then ( | |
1814 | + | let jD = fraction((jC - eL), a, (jB * jl)) | |
1815 | + | let jE = (lastBlock.timestamp - jD) | |
1816 | + | let ic = (jl / cL) | |
1817 | + | let hb = gX(gJ, (gT - jD), ic, jB) | |
1818 | + | let ib = bC(gd._2) | |
1819 | + | let id = valueOrElse(getInteger(bD(gd._2)), 0) | |
1820 | + | let hS = ia(ib, ic, id) | |
1821 | + | let ij = split(hS[bh], "_") | |
1822 | + | let hc = parseIntValue(ij[bk]) | |
1823 | + | if (if ((jq == eC)) | |
1824 | + | then (eL > hc) | |
2047 | 1825 | else false) | |
2048 | - | then throw((("Only " + toString( | |
1826 | + | then throw((("Only " + toString(hc)) + " space left in warehouse")) | |
2049 | 1827 | else { | |
2050 | - | let | |
2051 | - | let | |
2052 | - | let | |
2053 | - | let | |
2054 | - | let | |
2055 | - | then $Tuple4( | |
2056 | - | else if (( | |
2057 | - | then $Tuple4( | |
1828 | + | let hO = bN(gd._1) | |
1829 | + | let ir = hN(hO) | |
1830 | + | let ha = split(ir[bn], "_") | |
1831 | + | let gZ = split(hS[be], "_") | |
1832 | + | let jF = if ((jq == eC)) | |
1833 | + | then $Tuple4(gR(gZ, gJ, (gT - jD), ic, jB), ir[bn], (parseIntValue(ij[bj]) + hb._2), (parseIntValue(ij[bk]) - hb._2)) | |
1834 | + | else if ((jq == eD)) | |
1835 | + | then $Tuple4(hS[be], gR(ha, gJ, (gT - jD), ic, jB), parseIntValue(ij[bj]), parseIntValue(ij[bk])) | |
2058 | 1836 | else { | |
2059 | - | let | |
2060 | - | let | |
2061 | - | $Tuple4( | |
1837 | + | let jG = gY(gZ, ha, hb, hc) | |
1838 | + | let jH = min([parseIntValue(ij[bk]), hb._2]) | |
1839 | + | $Tuple4(jG._1, jG._2, (parseIntValue(ij[bj]) + jH), (parseIntValue(ij[bk]) - jH)) | |
2062 | 1840 | } | |
2063 | - | let | |
2064 | - | let | |
2065 | - | let | |
2066 | - | let | |
2067 | - | $Tuple5([IntegerEntry( | |
1841 | + | let jI = jF._1 | |
1842 | + | let jJ = jF._2 | |
1843 | + | let jK = jF._3 | |
1844 | + | let jL = jF._4 | |
1845 | + | $Tuple5([IntegerEntry(bw(gd._2), jE), IntegerEntry(bz(aF, gd._2, c), jE)], hO, [ir[bm], jJ, ir[bo], ir[bp]], ib, [hS[bd], jI, hS[bf], hS[bg], makeString([ij[bi], toString(jK), toString(jL), ij[bl]], "_")]) | |
2068 | 1846 | } | |
2069 | 1847 | } | |
2070 | 1848 | } | |
2071 | 1849 | } | |
2072 | 1850 | ||
2073 | 1851 | ||
2074 | - | func | |
2075 | - | let | |
2076 | - | let | |
2077 | - | let | |
2078 | - | | |
2079 | - | } | |
2080 | - | ||
2081 | - | ||
2082 | - | func | |
2083 | - | let c = toString( | |
2084 | - | let | |
2085 | - | let | |
2086 | - | let | |
2087 | - | let | |
2088 | - | if (if (!( | |
2089 | - | then ( | |
1852 | + | func jM (c,Q,jl,jq) = { | |
1853 | + | let jw = bw(Q) | |
1854 | + | let jx = value(getInteger(jw)) | |
1855 | + | let jC = (fraction((lastBlock.timestamp - jx), jk(Q, jl), a) * jl) | |
1856 | + | jA(c, jC, jq, Q) | |
1857 | + | } | |
1858 | + | ||
1859 | + | ||
1860 | + | func jN (fh,iM,jO,Q) = { | |
1861 | + | let c = toString(iM) | |
1862 | + | let gd = jp(c, eE, Q) | |
1863 | + | let jl = dK(gd._3[do]) | |
1864 | + | let jP = bD(gd._2) | |
1865 | + | let jQ = valueOrElse(getInteger(jP), 0) | |
1866 | + | if (if (!(cz)) | |
1867 | + | then (jQ >= 3) | |
2090 | 1868 | else false) | |
2091 | 1869 | then throw("Currently max infrastructure level = 3") | |
2092 | 1870 | else { | |
2093 | - | let | |
2094 | - | let ao = ( | |
2095 | - | if (if ( | |
2096 | - | then (ao > | |
1871 | + | let jR = ((sqrt(jl, 0, 0, DOWN) / 5) + 2) | |
1872 | + | let ao = (jQ + 1) | |
1873 | + | if (if (cz) | |
1874 | + | then (ao > jR) | |
2097 | 1875 | else false) | |
2098 | - | then throw(("Currently max infrastructure level = " + toString( | |
1876 | + | then throw(("Currently max infrastructure level = " + toString(jR))) | |
2099 | 1877 | else { | |
2100 | - | let | |
2101 | - | if (if (!( | |
2102 | - | then ( | |
1878 | + | let jS = fraction(eh, (jl * ao), cL) | |
1879 | + | if (if (!(fh)) | |
1880 | + | then (jO != jS) | |
2103 | 1881 | else false) | |
2104 | - | then throw(("Payment attached should be " + toString( | |
1882 | + | then throw(("Payment attached should be " + toString(jS))) | |
2105 | 1883 | else { | |
2106 | - | let | |
2107 | - | let | |
2108 | - | let | |
2109 | - | let | |
2110 | - | let | |
2111 | - | let | |
2112 | - | let | |
2113 | - | let | |
2114 | - | let | |
2115 | - | let | |
2116 | - | let | |
2117 | - | let | |
2118 | - | $Tuple3(([IntegerEntry( | |
1884 | + | let hO = bN(gd._1) | |
1885 | + | let ir = hN(hO) | |
1886 | + | let jT = split(ir[bo], "_") | |
1887 | + | let jU = fraction(cF, (jl * ao), cL) | |
1888 | + | let jV = makeString(fg(fh, jT, jU), "_") | |
1889 | + | let jW = jM(c, gd._2, jl, eE) | |
1890 | + | let jX = jW._5 | |
1891 | + | let jY = hP(jX[bd]) | |
1892 | + | let jZ = makeString([split(jX[bd], "_")[0], toString(ao)], "_") | |
1893 | + | let ka = hP(jZ) | |
1894 | + | let ij = split(jX[bh], "_") | |
1895 | + | let kb = makeString([ij[bi], ij[bj], toString(((parseIntValue(ij[bk]) + ka) - jY)), toString(ka)], "_") | |
1896 | + | $Tuple3(([IntegerEntry(jP, ao), IntegerEntry(ex(gd._2, c), ao), StringEntry(hO, makeString([ir[bm], jW._3[bn], jV, ir[bp]], ":")), StringEntry(jW._4, makeString([jZ, jX[be], jX[bf], jX[bg], kb], ":"))] ++ jW._1), ao, jU) | |
2119 | 1897 | } | |
2120 | 1898 | } | |
2121 | 1899 | } | |
2122 | 1900 | } | |
2123 | 1901 | ||
2124 | 1902 | ||
2125 | - | func | |
2126 | - | let ai = valueOrElse(getInteger( | |
2127 | - | let an = (ai + | |
2128 | - | let | |
2129 | - | $Tuple2([IntegerEntry( | |
2130 | - | } | |
2131 | - | ||
2132 | - | ||
2133 | - | func | |
2134 | - | ||
2135 | - | ||
2136 | - | func | |
2137 | - | ||
2138 | - | ||
2139 | - | func | |
2140 | - | let B = valueOrErrorMessage(getString( | |
2141 | - | let | |
2142 | - | let | |
2143 | - | if (!(isDefined( | |
1903 | + | func kc (kd,ke,kf,kg) = { | |
1904 | + | let ai = valueOrElse(getInteger(ke), 0) | |
1905 | + | let an = (ai + kg) | |
1906 | + | let kh = al(valueOrElse(getInteger(kd), 0), an) | |
1907 | + | $Tuple2([IntegerEntry(kd, kh[0]), IntegerEntry(ke, an), IntegerEntry(kf, (valueOrElse(getInteger(kf), 0) + kh[1]))], an) | |
1908 | + | } | |
1909 | + | ||
1910 | + | ||
1911 | + | func ki (B,kg) = kc(E(B), D(B), F(B), kg) | |
1912 | + | ||
1913 | + | ||
1914 | + | func kj (c,kg) = kc(I(c), H(c), J(c), kg) | |
1915 | + | ||
1916 | + | ||
1917 | + | func kk (c) = { | |
1918 | + | let B = valueOrErrorMessage(getString(bM(c)), "You don't have a duck staked") | |
1919 | + | let kl = bH(c) | |
1920 | + | let km = getString(kl) | |
1921 | + | if (!(isDefined(km))) | |
2144 | 1922 | then throw("You are not eligible for ONBOARD artifact") | |
2145 | 1923 | else { | |
2146 | - | let | |
2147 | - | let | |
2148 | - | if (isDefined( | |
2149 | - | then throw(("You already used your ONBOARD artifact on duck " + value( | |
1924 | + | let kn = bJ(c) | |
1925 | + | let ko = getString(kn) | |
1926 | + | if (isDefined(ko)) | |
1927 | + | then throw(("You already used your ONBOARD artifact on duck " + value(ko))) | |
2150 | 1928 | else { | |
2151 | - | let | |
2152 | - | let | |
2153 | - | if (isDefined( | |
2154 | - | then throw(((("The duck " + B) + " already got points from ONBOARD artifact from user ") + value( | |
2155 | - | else ([StringEntry( | |
1929 | + | let kp = bI(B) | |
1930 | + | let kq = getString(kp) | |
1931 | + | if (isDefined(kq)) | |
1932 | + | then throw(((("The duck " + B) + " already got points from ONBOARD artifact from user ") + value(kq))) | |
1933 | + | else ([StringEntry(kn, B), StringEntry(kp, c)] ++ ki(B, af)._1) | |
2156 | 1934 | } | |
2157 | 1935 | } | |
2158 | 1936 | } | |
2159 | 1937 | ||
2160 | 1938 | ||
2161 | - | func | |
2162 | - | let | |
2163 | - | let Q = | |
2164 | - | let | |
2165 | - | let | |
2166 | - | if ((valueOrElse(getInteger( | |
1939 | + | func kr (c,jr) = { | |
1940 | + | let gd = jp(c, eE, jr) | |
1941 | + | let Q = gd._2 | |
1942 | + | let jl = dK(gd._3[do]) | |
1943 | + | let ks = bx(aH, Q) | |
1944 | + | if ((valueOrElse(getInteger(ks), 0) > 0)) | |
2167 | 1945 | then throw("Presale artifact is already activated") | |
2168 | - | else if ((parseIntValue( | |
1946 | + | else if ((parseIntValue(gd._3[dn]) > er)) | |
2169 | 1947 | then throw((((aF + " ") + Q) + " is not eligible for presale artifact")) | |
2170 | 1948 | else { | |
2171 | - | let | |
2172 | - | ((( | |
1949 | + | let jW = jM(c, Q, jl, eE) | |
1950 | + | (((jW._1 :+ IntegerEntry(ks, jl)) :+ StringEntry(jW._2, makeString(jW._3, ":"))) :+ StringEntry(jW._4, makeString(jW._5, ":"))) | |
2173 | 1951 | } | |
2174 | 1952 | } | |
2175 | 1953 | ||
2176 | 1954 | ||
2177 | - | func | |
2178 | - | let | |
2179 | - | let | |
1955 | + | func kt (B) = { | |
1956 | + | let cj = valueOrElse(getInteger(dl, bU), 0) | |
1957 | + | let jt = split(valueOrElse(getString(bO(B)), aM), "_") | |
2180 | 1958 | let aA = lastBlock.timestamp | |
2181 | - | let | |
2182 | - | let | |
2183 | - | let | |
2184 | - | if (( | |
1959 | + | let cl = cd(dl, cj) | |
1960 | + | let cf = cl[bZ] | |
1961 | + | let cg = cl[ca] | |
1962 | + | if ((jt[br] != "T")) | |
2185 | 1963 | then false | |
2186 | - | else if (if (if ((parseIntValue( | |
2187 | - | then ( | |
1964 | + | else if (if (if ((parseIntValue(jt[bq]) == cj)) | |
1965 | + | then (cg[cc] == "INPROGRESS") | |
2188 | 1966 | else false) | |
2189 | - | then (parseIntValue( | |
1967 | + | then (parseIntValue(cf[cb]) > aA) | |
2190 | 1968 | else false) | |
2191 | 1969 | then throw("Your duck is taking part in the tournament") | |
2192 | - | else | |
2193 | - | } | |
2194 | - | ||
2195 | - | ||
2196 | - | func | |
2197 | - | let | |
1970 | + | else dJ(invoke(this, "exitTournamentInternal", [B], nil)) | |
1971 | + | } | |
1972 | + | ||
1973 | + | ||
1974 | + | func ku (B) = { | |
1975 | + | let jt = split(valueOrElse(getString(bO(B)), aM), "_") | |
2198 | 1976 | let aA = lastBlock.timestamp | |
2199 | - | if (( | |
1977 | + | if ((jt[br] != "D")) | |
2200 | 1978 | then false | |
2201 | 1979 | else { | |
2202 | - | let | |
2203 | - | let | |
2204 | - | if (if ((( | |
2205 | - | then (1 > | |
1980 | + | let cn = parseIntValue(jt[bq]) | |
1981 | + | let co = parseIntValue(jt[bs]) | |
1982 | + | if (if (((cn + aQ) > aA)) | |
1983 | + | then (1 > co) | |
2206 | 1984 | else false) | |
2207 | 1985 | then throw("Your duck is on delivery mission") | |
2208 | - | else | |
2209 | - | } | |
2210 | - | } | |
2211 | - | ||
2212 | - | ||
2213 | - | func | |
2214 | - | let | |
1986 | + | else dJ(invoke(this, "exitDeliveryInternal", [B], nil)) | |
1987 | + | } | |
1988 | + | } | |
1989 | + | ||
1990 | + | ||
1991 | + | func kv (B,fM,iY,kw) = { | |
1992 | + | let jt = split(valueOrElse(getString(bO(B)), aM), "_") | |
2215 | 1993 | let aA = lastBlock.timestamp | |
2216 | - | let | |
2217 | - | let | |
2218 | - | let | |
2219 | - | let | |
2220 | - | let | |
2221 | - | let | |
1994 | + | let cn = parseIntValue(jt[bq]) | |
1995 | + | let co = parseIntValue(jt[bs]) | |
1996 | + | let jy = valueOrErrorMessage(getString(bL(B)), "NFT duck is orphaned") | |
1997 | + | let kx = A(B) | |
1998 | + | let ky = getIntegerValue(kx) | |
1999 | + | let kz = if (if ((co > 0)) | |
2222 | 2000 | then true | |
2223 | - | else if (if ( | |
2224 | - | then ( | |
2001 | + | else if (if (fM) | |
2002 | + | then (kw > 0) | |
2225 | 2003 | else false) | |
2226 | - | then ( | |
2004 | + | then (iY > 0) | |
2227 | 2005 | else false) | |
2228 | 2006 | then { | |
2229 | - | let | |
2230 | - | if (( | |
2007 | + | let kA = invoke(di, "sendDeliveryReward", [jy], nil) | |
2008 | + | if ((kA == kA)) | |
2231 | 2009 | then { | |
2232 | - | let | |
2233 | - | [IntegerEntry( | |
2010 | + | let kB = V(jy) | |
2011 | + | [IntegerEntry(kB, (valueOrElse(getInteger(kB), 0) + 1)), IntegerEntry(W(jy), (cn / a))] | |
2234 | 2012 | } | |
2235 | 2013 | else throw("Strict value is not equal to itself.") | |
2236 | 2014 | } | |
2237 | - | else if (if (if ( | |
2238 | - | then ( | |
2015 | + | else if (if (if (fM) | |
2016 | + | then (iY > 0) | |
2239 | 2017 | else false) | |
2240 | - | then (( | |
2018 | + | then ((cn + aQ) > aA) | |
2241 | 2019 | else false) | |
2242 | 2020 | then throw("Your duck is still on delivery mission") | |
2243 | 2021 | else { | |
2244 | - | let | |
2245 | - | let | |
2246 | - | if (( | |
2247 | - | then if (if (if ( | |
2248 | - | then (0 >= | |
2022 | + | let kC = valueOrElse(getInteger(di, bT), 0) | |
2023 | + | let kD = invoke(di, "updateDeliveryLocked", [(kC - aP)], nil) | |
2024 | + | if ((kD == kD)) | |
2025 | + | then if (if (if (fM) | |
2026 | + | then (0 >= iY) | |
2249 | 2027 | else false) | |
2250 | 2028 | then true | |
2251 | - | else (0 >= | |
2029 | + | else (0 >= ky)) | |
2252 | 2030 | then nil | |
2253 | - | else [IntegerEntry(U(B), ( | |
2031 | + | else [IntegerEntry(U(B), (cn + cH))] | |
2254 | 2032 | else throw("Strict value is not equal to itself.") | |
2255 | 2033 | } | |
2256 | - | let | |
2257 | - | $Tuple3( | |
2258 | - | } | |
2259 | - | ||
2260 | - | ||
2261 | - | func | |
2262 | - | let B = valueOrErrorMessage(getString( | |
2263 | - | if ( | |
2034 | + | let kE = getStringValue(L(B)) | |
2035 | + | $Tuple3(kz, [StringEntry(bO(B), kE)], kE) | |
2036 | + | } | |
2037 | + | ||
2038 | + | ||
2039 | + | func kF (kG,ao,kH,c,kI,kJ) = { | |
2040 | + | let B = valueOrErrorMessage(getString(bM(c)), "You don't have a duck staked") | |
2041 | + | if (kt(B)) | |
2264 | 2042 | then throw("mergeInternal_checkTournament") | |
2265 | - | else if ( | |
2043 | + | else if (ku(B)) | |
2266 | 2044 | then throw("mergeInternal_checkDelivery") | |
2267 | 2045 | else { | |
2268 | - | func | |
2269 | - | let | |
2270 | - | let | |
2271 | - | let | |
2272 | - | let | |
2273 | - | if (( | |
2046 | + | func kK (eU,Q) = { | |
2047 | + | let jv = value(assetInfo(fromBase58String(Q))) | |
2048 | + | let jw = bw(Q) | |
2049 | + | let jx = valueOrErrorMessage(getInteger(jw), (("NFT " + jv.name) + " is not staked")) | |
2050 | + | let jy = valueOrErrorMessage(getString(bt(Q)), (("NFT " + jv.name) + " is orphaned")) | |
2051 | + | if ((jy != c)) | |
2274 | 2052 | then throw((aF + " is not yours")) | |
2275 | 2053 | else { | |
2276 | - | let | |
2277 | - | let | |
2278 | - | if (if (( | |
2279 | - | then ( | |
2054 | + | let jz = split(jv.description, "_") | |
2055 | + | let dz = jz[dq] | |
2056 | + | if (if ((eU._3 != "")) | |
2057 | + | then (eU._3 != dz) | |
2280 | 2058 | else false) | |
2281 | 2059 | then throw("Lands should be on the same continent to merge") | |
2282 | 2060 | else { | |
2283 | - | let | |
2284 | - | let | |
2285 | - | let | |
2286 | - | let | |
2287 | - | let | |
2288 | - | let | |
2289 | - | let | |
2290 | - | let | |
2291 | - | let | |
2292 | - | if (("S" == | |
2061 | + | let dL = jz[do] | |
2062 | + | let kL = eU._1 | |
2063 | + | let gN = valueOrErrorMessage(indexOf(kL, dL), "You haven't passed all the lands needed") | |
2064 | + | let kM = (take(kL, gN) + drop(kL, (gN + 1))) | |
2065 | + | let jl = dK(dL) | |
2066 | + | let kN = (eU._2 + valueOrElse(getInteger(bx(aH, Q)), 0)) | |
2067 | + | let id = valueOrElse(getInteger(bD(Q)), 0) | |
2068 | + | let kO = { | |
2069 | + | let cD = dL | |
2070 | + | if (("S" == cD)) | |
2293 | 2071 | then 3 | |
2294 | - | else if (("M" == | |
2072 | + | else if (("M" == cD)) | |
2295 | 2073 | then 4 | |
2296 | - | else if (("L" == | |
2074 | + | else if (("L" == cD)) | |
2297 | 2075 | then 5 | |
2298 | - | else if (("XL" == | |
2076 | + | else if (("XL" == cD)) | |
2299 | 2077 | then 6 | |
2300 | 2078 | else throw("Only S, M, L, XL can merge") | |
2301 | 2079 | } | |
2302 | - | if (( | |
2080 | + | if ((id != kO)) | |
2303 | 2081 | then throw("All lands should be maxed to merge") | |
2304 | 2082 | else { | |
2305 | - | let | |
2306 | - | let | |
2307 | - | let | |
2308 | - | if ((0 > | |
2309 | - | then throw(((("Saved timestamp is in future, saved = " + toString( | |
2083 | + | let ew = jz[dn] | |
2084 | + | let gJ = gP(jz[dp]) | |
2085 | + | let gT = (lastBlock.timestamp - jx) | |
2086 | + | if ((0 > gT)) | |
2087 | + | then throw(((("Saved timestamp is in future, saved = " + toString(jx)) + ", current = ") + toString(lastBlock.timestamp))) | |
2310 | 2088 | else { | |
2311 | - | let | |
2312 | - | let | |
2313 | - | let | |
2314 | - | let | |
2315 | - | let | |
2316 | - | let | |
2317 | - | let | |
2318 | - | let | |
2319 | - | if (!(isDefined( | |
2089 | + | let jB = jk(Q, jl) | |
2090 | + | let ic = (jl / cL) | |
2091 | + | let jJ = gR(split(eU._4, "_"), gJ, gT, ic, jB) | |
2092 | + | let fe = gH(eU._6, gJ, ic, -1) | |
2093 | + | let kP = gH(eU._10, gJ, ic, -1) | |
2094 | + | let hx = gH(eU._9, gJ, ic, 1) | |
2095 | + | let kQ = eU._7 | |
2096 | + | let dg = indexOf(kQ, Q) | |
2097 | + | if (!(isDefined(dg))) | |
2320 | 2098 | then throw(("Your staked lands don't contain " + Q)) | |
2321 | 2099 | else { | |
2322 | - | let | |
2323 | - | let | |
2324 | - | $Tuple10( | |
2325 | - | then [DeleteEntry( | |
2326 | - | else nil)), | |
2100 | + | let kR = bv(Q) | |
2101 | + | let kS = valueOrElse(getString(kR), "") | |
2102 | + | $Tuple10(kM, kN, dz, jJ, ((((((((((((eU._5 :+ DeleteEntry(bw(Q))) :+ DeleteEntry(bz(aF, Q, c))) :+ DeleteEntry(ev(ew))) :+ DeleteEntry(bt(Q))) :+ DeleteEntry(bD(Q))) :+ DeleteEntry(ex(Q, c))) :+ DeleteEntry(bx(aH, Q))) :+ DeleteEntry(ey(ew))) :+ DeleteEntry(bC(Q))) :+ DeleteEntry(kR)) :+ Burn(fromBase58String(Q), 1)) ++ (if ((kS != "")) | |
2103 | + | then [DeleteEntry(et(kS))] | |
2104 | + | else nil)), fe, removeByIndex(kQ, value(dg)), (eU._8 + jl), hx, kP) | |
2327 | 2105 | } | |
2328 | 2106 | } | |
2329 | 2107 | } | |
2331 | 2109 | } | |
2332 | 2110 | } | |
2333 | 2111 | ||
2334 | - | let | |
2335 | - | let | |
2336 | - | let | |
2337 | - | let | |
2338 | - | let | |
2339 | - | let | |
2340 | - | then split_51C(value( | |
2112 | + | let hO = bN(B) | |
2113 | + | let ir = hN(hO) | |
2114 | + | let gI = split(valueOrElse(getString(dx()), "0_0_0_0_0_0"), "_") | |
2115 | + | let kT = dA(c) | |
2116 | + | let kU = getString(kT) | |
2117 | + | let kV = if (isDefined(kU)) | |
2118 | + | then split_51C(value(kU), "_") | |
2341 | 2119 | else nil | |
2342 | - | let | |
2343 | - | let | |
2344 | - | let | |
2345 | - | let | |
2346 | - | let | |
2347 | - | let | |
2348 | - | func | |
2349 | - | then | |
2350 | - | else | |
2351 | - | ||
2352 | - | func | |
2353 | - | then | |
2120 | + | let kW = split(value(assetInfo(fromBase58String(kI[0]))).description, "_")[dq] | |
2121 | + | let kX = split(valueOrElse(getString(dy(kW)), "0_0_0_0_0_0"), "_") | |
2122 | + | let ff = { | |
2123 | + | let eW = kI | |
2124 | + | let eX = size(eW) | |
2125 | + | let eY = $Tuple10(kH, 0, "", ir[bn], nil, gI, kV, 0, split("0_0_0_0_0_0", "_"), kX) | |
2126 | + | func eZ (fa,fb) = if ((fb >= eX)) | |
2127 | + | then fa | |
2128 | + | else kK(fa, eW[fb]) | |
2129 | + | ||
2130 | + | func fc (fa,fb) = if ((fb >= eX)) | |
2131 | + | then fa | |
2354 | 2132 | else throw("List size exceeds 5") | |
2355 | 2133 | ||
2356 | - | | |
2134 | + | fc(eZ(eZ(eZ(eZ(eZ(eY, 0), 1), 2), 3), 4), 5) | |
2357 | 2135 | } | |
2358 | - | let | |
2359 | - | let | |
2360 | - | let | |
2361 | - | let | |
2362 | - | let | |
2363 | - | let | |
2364 | - | let | |
2365 | - | let | |
2366 | - | let | |
2367 | - | let | |
2368 | - | let | |
2369 | - | $Tuple2(((((((((((((((( | |
2370 | - | then StringEntry( | |
2371 | - | else DeleteEntry( | |
2136 | + | let dz = ff._3 | |
2137 | + | let hr = valueOrErrorMessage(indexOf(aU, dz), ("Unknown continent: " + dz)) | |
2138 | + | let gQ = hw(ff._9, (dK(kG) / cL)) | |
2139 | + | let iP = valueOrElse(getInteger(es()), (er + 1)) | |
2140 | + | let kY = toString(iP) | |
2141 | + | let iQ = Issue(eJ(kY, kG), makeString([kY, kG, gQ, dz], "_"), 1, 0, false) | |
2142 | + | let bu = calculateAssetId(iQ) | |
2143 | + | let kZ = toBase58String(bu) | |
2144 | + | let jV = makeString(fg((kJ > 0), split(ir[bo], "_"), kJ), "_") | |
2145 | + | let la = dB(c) | |
2146 | + | let lb = valueOrElse(getInteger(la), 0) | |
2147 | + | $Tuple2((((((((((((((((ff._5 :+ (if ((size(ff._7) > 0)) | |
2148 | + | then StringEntry(kT, makeString_11C(ff._7, "_")) | |
2149 | + | else DeleteEntry(kT))) :+ IntegerEntry(la, if ((ff._8 > lb)) | |
2372 | 2150 | then 0 | |
2373 | - | else ( | |
2151 | + | else (lb - ff._8))) :+ IntegerEntry(es(), (iP + 1))) :+ iQ) :+ StringEntry(ev(kY), kZ)) :+ StringEntry(bt(kZ), c)) :+ StringEntry(ey(kY), c)) :+ IntegerEntry(bx(aH, kZ), ff._2)) :+ IntegerEntry(bD(kZ), ao)) :+ IntegerEntry(ex(kZ, c), ao)) :+ StringEntry(hO, makeString([ir[bm], ff._4, jV, ir[bp]], ":"))) :+ StringEntry(dx(), makeString(ff._6, "_"))) :+ StringEntry(dy(dz), makeString(ff._10, "_"))) :+ StringEntry(bO(B), makeString([dz, "L", kZ], "_"))) :+ ScriptTransfer(addressFromStringValue(c), 1, bu)), kZ) | |
2374 | 2152 | } | |
2375 | 2153 | } | |
2376 | 2154 | ||
2377 | 2155 | ||
2378 | - | func | |
2379 | - | ||
2380 | - | ||
2381 | - | func | |
2382 | - | ||
2383 | - | ||
2384 | - | func | |
2385 | - | ||
2386 | - | ||
2387 | - | func | |
2388 | - | ||
2389 | - | ||
2390 | - | func | |
2391 | - | let | |
2392 | - | if ((4 == | |
2393 | - | then | |
2394 | - | else if ((3 == | |
2395 | - | then | |
2396 | - | else if ((5 == | |
2397 | - | then | |
2398 | - | else if ((2 == | |
2399 | - | then | |
2156 | + | func lc (c,kI) = kF("M", 3, "SSSS", c, kI, 0) | |
2157 | + | ||
2158 | + | ||
2159 | + | func ld (c,kI) = kF("L", 4, "SMM", c, kI, (cF * 4)) | |
2160 | + | ||
2161 | + | ||
2162 | + | func le (c,kI) = kF("XL", 5, "SSSML", c, kI, (cF * 47)) | |
2163 | + | ||
2164 | + | ||
2165 | + | func lf (c,kI) = kF("XXL", 6, "LXL", c, kI, (cF * 54)) | |
2166 | + | ||
2167 | + | ||
2168 | + | func lg (c,kI) = { | |
2169 | + | let cD = size(kI) | |
2170 | + | if ((4 == cD)) | |
2171 | + | then lc(c, kI) | |
2172 | + | else if ((3 == cD)) | |
2173 | + | then ld(c, kI) | |
2174 | + | else if ((5 == cD)) | |
2175 | + | then le(c, kI) | |
2176 | + | else if ((2 == cD)) | |
2177 | + | then lf(c, kI) | |
2400 | 2178 | else throw("Unknown merge") | |
2401 | 2179 | } | |
2402 | 2180 | ||
2403 | 2181 | ||
2404 | - | func | |
2405 | - | let | |
2406 | - | if (isDefined( | |
2182 | + | func lh (bQ) = { | |
2183 | + | let li = getString(bM(bQ)) | |
2184 | + | if (isDefined(li)) | |
2407 | 2185 | then { | |
2408 | - | let B = value( | |
2409 | - | let | |
2410 | - | let | |
2411 | - | let | |
2412 | - | if (if (( | |
2186 | + | let B = value(li) | |
2187 | + | let lj = bO(B) | |
2188 | + | let ck = split(valueOrElse(getString(lj), aM), "_") | |
2189 | + | let cn = parseIntValue(ck[bq]) | |
2190 | + | if (if ((ck[br] != "D")) | |
2413 | 2191 | then true | |
2414 | - | else (( | |
2192 | + | else ((cn + aQ) > lastBlock.timestamp)) | |
2415 | 2193 | then nil | |
2416 | 2194 | else { | |
2417 | - | let | |
2418 | - | if ((parseIntValue( | |
2195 | + | let kx = A(B) | |
2196 | + | if ((parseIntValue(ck[bs]) > 0)) | |
2419 | 2197 | then { | |
2420 | - | let | |
2421 | - | if (( | |
2198 | + | let kA = invoke(di, "sendDeliveryReward", [bQ], nil) | |
2199 | + | if ((kA == kA)) | |
2422 | 2200 | then nil | |
2423 | 2201 | else throw("Strict value is not equal to itself.") | |
2424 | 2202 | } | |
2425 | 2203 | else (({ | |
2426 | - | let | |
2427 | - | let | |
2428 | - | if (( | |
2429 | - | then if ((0 >= getIntegerValue( | |
2204 | + | let kC = valueOrElse(getInteger(di, bT), 0) | |
2205 | + | let kD = invoke(di, "updateDeliveryLocked", [(kC - aP)], nil) | |
2206 | + | if ((kD == kD)) | |
2207 | + | then if ((0 >= getIntegerValue(kx))) | |
2430 | 2208 | then nil | |
2431 | 2209 | else { | |
2432 | - | let | |
2433 | - | if (( | |
2210 | + | let lk = invoke(this, "saveInteger", [U(B), (cn + cH)], nil) | |
2211 | + | if ((lk == lk)) | |
2434 | 2212 | then nil | |
2435 | 2213 | else throw("Strict value is not equal to itself.") | |
2436 | 2214 | } | |
2437 | 2215 | else throw("Strict value is not equal to itself.") | |
2438 | - | } :+ IntegerEntry( | |
2216 | + | } :+ IntegerEntry(kx, getIntegerValue(K(B)))) :+ StringEntry(lj, getStringValue(L(B)))) | |
2439 | 2217 | } | |
2440 | 2218 | } | |
2441 | 2219 | else nil | |
2442 | 2220 | } | |
2443 | 2221 | ||
2444 | 2222 | ||
2445 | - | func | |
2446 | - | then valueOrElse(getBoolean( | |
2223 | + | func ll (gN) = if (if ((gN.originCaller != dh)) | |
2224 | + | then valueOrElse(getBoolean(dN()), false) | |
2447 | 2225 | else false) | |
2448 | 2226 | then throw("Contracts are under maintenance") | |
2449 | 2227 | else { | |
2450 | - | let | |
2451 | - | ( | |
2228 | + | let bQ = toString(gN.originCaller) | |
2229 | + | (lh(bQ) :+ StringEntry(dO(bQ), toBase58String(gN.transactionId))) | |
2452 | 2230 | } | |
2453 | 2231 | ||
2454 | 2232 | ||
2455 | - | func | |
2456 | - | then valueOrElse(getBoolean( | |
2233 | + | func lm (gN) = if (if ((gN.originCaller != dh)) | |
2234 | + | then valueOrElse(getBoolean(dN()), false) | |
2457 | 2235 | else false) | |
2458 | 2236 | then throw("Contracts are under maintenance") | |
2459 | - | else [StringEntry( | |
2460 | - | ||
2461 | - | ||
2462 | - | @Callable( | |
2463 | - | func constructorV1 ( | |
2237 | + | else [StringEntry(dO(toString(gN.originCaller)), toBase58String(gN.transactionId))] | |
2238 | + | ||
2239 | + | ||
2240 | + | @Callable(gN) | |
2241 | + | func constructorV1 (ln) = if ((gN.caller != this)) | |
2464 | 2242 | then throw("Permission denied") | |
2465 | - | else [StringEntry( | |
2466 | - | ||
2467 | - | ||
2468 | - | ||
2469 | - | @Callable( | |
2470 | - | func saveInteger ( | |
2243 | + | else [StringEntry(db(), ln)] | |
2244 | + | ||
2245 | + | ||
2246 | + | ||
2247 | + | @Callable(gN) | |
2248 | + | func saveInteger (cT,eL) = if ((gN.caller != this)) | |
2471 | 2249 | then throw("saveInteger is not public method") | |
2472 | - | else [IntegerEntry( | |
2473 | - | ||
2474 | - | ||
2475 | - | ||
2476 | - | @Callable( | |
2477 | - | func setBlocked ( | |
2250 | + | else [IntegerEntry(cT, eL)] | |
2251 | + | ||
2252 | + | ||
2253 | + | ||
2254 | + | @Callable(gN) | |
2255 | + | func setBlocked (lo) = if ((gN.caller != this)) | |
2478 | 2256 | then throw("permission denied") | |
2479 | - | else [BooleanEntry( | |
2480 | - | ||
2481 | - | ||
2482 | - | ||
2483 | - | @Callable( | |
2257 | + | else [BooleanEntry(dN(), lo)] | |
2258 | + | ||
2259 | + | ||
2260 | + | ||
2261 | + | @Callable(gN) | |
2484 | 2262 | func stakeLand () = { | |
2485 | - | let | |
2486 | - | if ((size( | |
2263 | + | let lp = ll(gN) | |
2264 | + | if ((size(gN.payments) != 1)) | |
2487 | 2265 | then throw("Exactly one payment required") | |
2488 | 2266 | else { | |
2489 | - | let | |
2490 | - | let | |
2491 | - | let | |
2492 | - | if (( | |
2267 | + | let lq = value(gN.payments[0]) | |
2268 | + | let bu = value(lq.assetId) | |
2269 | + | let cS = toString(gN.caller) | |
2270 | + | if ((lq.amount != 1)) | |
2493 | 2271 | then throw((("NFT " + aF) + " token should be attached as payment")) | |
2494 | 2272 | else { | |
2495 | - | let | |
2496 | - | if (( | |
2273 | + | let jv = value(assetInfo(bu)) | |
2274 | + | if ((jv.issuer != this)) | |
2497 | 2275 | then throw("Unknown issuer of token") | |
2498 | - | else if (!(contains( | |
2276 | + | else if (!(contains(jv.name, aF))) | |
2499 | 2277 | then throw((("Only NFT " + aF) + " tokens are accepted")) | |
2500 | 2278 | else { | |
2501 | - | let | |
2502 | - | let | |
2503 | - | then dropRight( | |
2504 | - | else if (contains( | |
2505 | - | then dropRight( | |
2506 | - | else dropRight( | |
2507 | - | if (!(isDefined(parseInt( | |
2508 | - | then throw(("Cannot parse land number from " + | |
2279 | + | let lr = drop(jv.name, 4) | |
2280 | + | let ew = if (contains(lr, "XXL")) | |
2281 | + | then dropRight(lr, 3) | |
2282 | + | else if (contains(lr, "XL")) | |
2283 | + | then dropRight(lr, 2) | |
2284 | + | else dropRight(lr, 1) | |
2285 | + | if (!(isDefined(parseInt(ew)))) | |
2286 | + | then throw(("Cannot parse land number from " + jv.name)) | |
2509 | 2287 | else { | |
2510 | - | let Q = toBase58String( | |
2511 | - | let | |
2512 | - | if (isDefined(getInteger( | |
2513 | - | then throw((("NFT " + | |
2288 | + | let Q = toBase58String(bu) | |
2289 | + | let jw = bw(Q) | |
2290 | + | if (isDefined(getInteger(jw))) | |
2291 | + | then throw((("NFT " + jv.name) + " is already staked")) | |
2514 | 2292 | else { | |
2515 | - | let | |
2516 | - | let | |
2517 | - | let | |
2518 | - | let | |
2519 | - | let | |
2520 | - | let | |
2521 | - | let | |
2522 | - | let | |
2523 | - | let | |
2524 | - | let | |
2525 | - | let | |
2526 | - | then split_51C(value( | |
2293 | + | let jz = split(jv.description, "_") | |
2294 | + | let gJ = gP(jz[dp]) | |
2295 | + | let jl = dK(jz[do]) | |
2296 | + | let ic = (jl / cL) | |
2297 | + | let fe = gO(gJ, ic, 1) | |
2298 | + | let ls = dy(jz[dq]) | |
2299 | + | let kX = split(valueOrElse(getString(ls), "0_0_0_0_0_0"), "_") | |
2300 | + | let lt = makeString(gH(kX, gJ, ic, 1), "_") | |
2301 | + | let kT = dA(cS) | |
2302 | + | let kU = getString(kT) | |
2303 | + | let kQ = if (isDefined(kU)) | |
2304 | + | then split_51C(value(kU), "_") | |
2527 | 2305 | else nil | |
2528 | - | if (containsElement( | |
2306 | + | if (containsElement(kQ, Q)) | |
2529 | 2307 | then throw(("Your staked lands already contain " + Q)) | |
2530 | - | else if ((size( | |
2531 | - | then throw((("Your already staked max (" + toString( | |
2308 | + | else if ((size(kQ) >= aJ)) | |
2309 | + | then throw((("Your already staked max (" + toString(aJ)) + ") lands")) | |
2532 | 2310 | else { | |
2533 | - | let | |
2534 | - | let | |
2535 | - | let | |
2536 | - | let | |
2537 | - | $Tuple2(([IntegerEntry( | |
2311 | + | let id = valueOrElse(getInteger(bD(Q)), 0) | |
2312 | + | let la = dB(cS) | |
2313 | + | let lu = valueOrElse(getInteger(la), 0) | |
2314 | + | let lv = invoke(dk, "onStakeUnstakeLand", [cS], nil) | |
2315 | + | $Tuple2(([IntegerEntry(jw, lastBlock.timestamp), IntegerEntry(bz(aF, Q, cS), lastBlock.timestamp), StringEntry(kT, makeString_11C((kQ :+ Q), "_")), IntegerEntry(la, (lu + jl)), StringEntry(bt(Q), cS), StringEntry(ey(ew), cS), IntegerEntry(ex(Q, cS), id), StringEntry(dx(), fe), StringEntry(ls, lt)] ++ lp), lv) | |
2538 | 2316 | } | |
2539 | 2317 | } | |
2540 | 2318 | } | |
2545 | 2323 | ||
2546 | 2324 | ||
2547 | 2325 | ||
2548 | - | @Callable( | |
2549 | - | func unstakeLand ( | |
2550 | - | let | |
2551 | - | if ((size( | |
2326 | + | @Callable(gN) | |
2327 | + | func unstakeLand (jr) = { | |
2328 | + | let lp = ll(gN) | |
2329 | + | if ((size(gN.payments) != 0)) | |
2552 | 2330 | then throw("No payments required") | |
2553 | 2331 | else { | |
2554 | - | let c = toString( | |
2555 | - | let | |
2556 | - | let Q = | |
2557 | - | let | |
2558 | - | let | |
2559 | - | let | |
2560 | - | let | |
2561 | - | let | |
2562 | - | let | |
2563 | - | let | |
2564 | - | let | |
2565 | - | let | |
2566 | - | let | |
2567 | - | let | |
2568 | - | let | |
2569 | - | if (!(isDefined( | |
2332 | + | let c = toString(gN.caller) | |
2333 | + | let gd = jp(c, eD, jr) | |
2334 | + | let Q = gd._2 | |
2335 | + | let jz = gd._3 | |
2336 | + | let kT = dA(c) | |
2337 | + | let gJ = gP(jz[dp]) | |
2338 | + | let jl = dK(jz[do]) | |
2339 | + | let ic = (jl / cL) | |
2340 | + | let fe = gO(gJ, ic, -1) | |
2341 | + | let ls = dy(jz[dq]) | |
2342 | + | let kX = split(valueOrElse(getString(ls), "0_0_0_0_0_0"), "_") | |
2343 | + | let lt = makeString(gH(kX, gJ, ic, -1), "_") | |
2344 | + | let jW = jM(c, Q, jl, eD) | |
2345 | + | let kQ = split_51C(valueOrElse(getString(kT), ""), "_") | |
2346 | + | let dg = indexOf(kQ, Q) | |
2347 | + | if (!(isDefined(dg))) | |
2570 | 2348 | then throw(("Your staked lands don't contain " + Q)) | |
2571 | 2349 | else { | |
2572 | 2350 | let aA = lastBlock.timestamp | |
2573 | - | let | |
2574 | - | if (( | |
2575 | - | then throw(("Your gWL are taking part in voting, cannot unstake until " + toString( | |
2351 | + | let lw = valueOrElse(getInteger(dj, bP(c)), 0) | |
2352 | + | if ((lw >= aA)) | |
2353 | + | then throw(("Your gWL are taking part in voting, cannot unstake until " + toString(lw))) | |
2576 | 2354 | else { | |
2577 | - | let | |
2578 | - | if (( | |
2579 | - | then throw(("Your staked lands took part in arbitrage, cannot unstake until " + toString( | |
2355 | + | let lx = (valueOrElse(getInteger(dk, b(c)), 0) + cG) | |
2356 | + | if ((lx > aA)) | |
2357 | + | then throw(("Your staked lands took part in arbitrage, cannot unstake until " + toString(lx))) | |
2580 | 2358 | else { | |
2581 | - | let | |
2582 | - | let | |
2583 | - | let | |
2359 | + | let la = dB(c) | |
2360 | + | let lb = valueOrElse(getInteger(la), 0) | |
2361 | + | let ly = if ((jl > lb)) | |
2584 | 2362 | then 0 | |
2585 | - | else ( | |
2586 | - | let | |
2587 | - | $Tuple2(([ScriptTransfer( | |
2588 | - | then StringEntry( | |
2589 | - | else DeleteEntry( | |
2363 | + | else (lb - jl) | |
2364 | + | let lv = invoke(dk, "onStakeUnstakeLand", [c], nil) | |
2365 | + | $Tuple2(([ScriptTransfer(gN.caller, 1, fromBase58String(Q)), DeleteEntry(bw(Q)), DeleteEntry(bz(aF, Q, c)), StringEntry(dx(), fe), StringEntry(ls, lt), StringEntry(jW._2, makeString(jW._3, ":")), if ((size(kQ) > 1)) | |
2366 | + | then StringEntry(kT, makeString_11C(removeByIndex(kQ, value(dg)), "_")) | |
2367 | + | else DeleteEntry(kT), IntegerEntry(la, ly)] ++ lp), lv) | |
2590 | 2368 | } | |
2591 | 2369 | } | |
2592 | 2370 | } | |
2595 | 2373 | ||
2596 | 2374 | ||
2597 | 2375 | ||
2598 | - | @Callable( | |
2376 | + | @Callable(gN) | |
2599 | 2377 | func stakeDuck () = { | |
2600 | - | let | |
2601 | - | if ((size( | |
2378 | + | let lp = ll(gN) | |
2379 | + | if ((size(gN.payments) != 1)) | |
2602 | 2380 | then throw("Exactly one payment required") | |
2603 | 2381 | else { | |
2604 | - | let | |
2605 | - | let | |
2606 | - | let | |
2607 | - | if (( | |
2382 | + | let lq = value(gN.payments[0]) | |
2383 | + | let bu = value(lq.assetId) | |
2384 | + | let cS = toString(gN.caller) | |
2385 | + | if ((lq.amount != 1)) | |
2608 | 2386 | then throw((("NFT " + aG) + " token should be attached as payment")) | |
2609 | 2387 | else { | |
2610 | - | let | |
2611 | - | if (if (( | |
2612 | - | then ( | |
2388 | + | let jv = value(assetInfo(bu)) | |
2389 | + | if (if ((jv.issuer != ea)) | |
2390 | + | then (jv.issuer != eb) | |
2613 | 2391 | else false) | |
2614 | 2392 | then throw((("Unknown issuer of " + aG) + " token")) | |
2615 | - | else if (!(contains( | |
2393 | + | else if (!(contains(jv.name, aG))) | |
2616 | 2394 | then throw((("Only NFT " + aG) + " tokens are accepted")) | |
2617 | 2395 | else { | |
2618 | - | let | |
2619 | - | let | |
2620 | - | if (isDefined(getInteger( | |
2621 | - | then throw((("NFT " + | |
2622 | - | else if (isDefined(getString( | |
2623 | - | then throw(("You already staked one duck: " + | |
2396 | + | let lz = toBase58String(bu) | |
2397 | + | let jw = bw(lz) | |
2398 | + | if (isDefined(getInteger(jw))) | |
2399 | + | then throw((("NFT " + jv.name) + " is already staked")) | |
2400 | + | else if (isDefined(getString(bM(cS)))) | |
2401 | + | then throw(("You already staked one duck: " + jv.name)) | |
2624 | 2402 | else { | |
2625 | - | let | |
2626 | - | let | |
2627 | - | let | |
2628 | - | let | |
2629 | - | let | |
2630 | - | let | |
2631 | - | let | |
2632 | - | ([IntegerEntry( | |
2403 | + | let lj = bO(lz) | |
2404 | + | let ci = getString(lj) | |
2405 | + | let hO = bN(lz) | |
2406 | + | let lA = getString(hO) | |
2407 | + | let je = A(lz) | |
2408 | + | let jf = aj(valueOrElse(getInteger(E(lz)), 0)) | |
2409 | + | let ky = valueOrElse(getInteger(je), jf) | |
2410 | + | ([IntegerEntry(jw, lastBlock.timestamp), IntegerEntry(bz(aG, toBase58String(bu), cS), lastBlock.timestamp), StringEntry(bL(lz), cS), StringEntry(bM(cS), lz)] ++ (if (isDefined(ci)) | |
2633 | 2411 | then nil | |
2634 | - | else ([StringEntry( | |
2412 | + | else ([StringEntry(lj, aM)] ++ (if (isDefined(lA)) | |
2635 | 2413 | then nil | |
2636 | - | else (([StringEntry( | |
2414 | + | else (([StringEntry(hO, "0:0_0_0_0_0_0:0_0_0_0_0_0:")] :+ IntegerEntry(je, ky)) ++ lp))))) | |
2637 | 2415 | } | |
2638 | 2416 | } | |
2639 | 2417 | } | |
2642 | 2420 | ||
2643 | 2421 | ||
2644 | 2422 | ||
2645 | - | @Callable( | |
2646 | - | func unstakeDuck ( | |
2647 | - | let | |
2648 | - | if ((size( | |
2423 | + | @Callable(gN) | |
2424 | + | func unstakeDuck (lz) = { | |
2425 | + | let lp = ll(gN) | |
2426 | + | if ((size(gN.payments) != 0)) | |
2649 | 2427 | then throw("No payments required") | |
2650 | 2428 | else { | |
2651 | - | let | |
2652 | - | let | |
2653 | - | let | |
2654 | - | let | |
2655 | - | if (!(isDefined(getInteger( | |
2656 | - | then throw((("NFT " + | |
2657 | - | else if (!(isDefined(getString( | |
2658 | - | then throw((("The duck " + | |
2429 | + | let bu = fromBase58String(lz) | |
2430 | + | let cS = toString(gN.caller) | |
2431 | + | let jv = value(assetInfo(bu)) | |
2432 | + | let jw = bw(lz) | |
2433 | + | if (!(isDefined(getInteger(jw)))) | |
2434 | + | then throw((("NFT " + jv.name) + " is not staked")) | |
2435 | + | else if (!(isDefined(getString(bM(cS))))) | |
2436 | + | then throw((("The duck " + jv.name) + " is not staked")) | |
2659 | 2437 | else { | |
2660 | - | let | |
2661 | - | if (( | |
2438 | + | let jy = valueOrErrorMessage(getString(bL(lz)), (("NFT " + jv.name) + " is orphaned")) | |
2439 | + | if ((jy != cS)) | |
2662 | 2440 | then throw("Staked NFT is not yours") | |
2663 | - | else if ( | |
2441 | + | else if (kt(lz)) | |
2664 | 2442 | then throw("unstakeDuck_checkTournament") | |
2665 | - | else if ( | |
2443 | + | else if (ku(lz)) | |
2666 | 2444 | then throw("unstakeDuck_checkDelivery") | |
2667 | 2445 | else { | |
2668 | - | let | |
2669 | - | let | |
2670 | - | let av = valueOrElse(getInteger( | |
2671 | - | if (( | |
2672 | - | then throw((("Please heal your duck to " + toString( | |
2673 | - | else ([ScriptTransfer( | |
2446 | + | let je = A(lz) | |
2447 | + | let jf = aj(valueOrElse(getInteger(E(lz)), 0)) | |
2448 | + | let av = valueOrElse(getInteger(je), jf) | |
2449 | + | if ((jf > av)) | |
2450 | + | then throw((("Please heal your duck to " + toString(jf)) + "hp before unstaking")) | |
2451 | + | else ([ScriptTransfer(gN.caller, 1, bu), DeleteEntry(jw), DeleteEntry(je), DeleteEntry(bO(lz)), DeleteEntry(bL(lz)), DeleteEntry(bz(aG, lz, cS)), DeleteEntry(bM(cS))] ++ lp) | |
2674 | 2452 | } | |
2675 | 2453 | } | |
2676 | 2454 | } | |
2678 | 2456 | ||
2679 | 2457 | ||
2680 | 2458 | ||
2681 | - | @Callable( | |
2682 | - | func claimRes ( | |
2683 | - | let | |
2684 | - | if ((size( | |
2459 | + | @Callable(gN) | |
2460 | + | func claimRes (eL,lB) = { | |
2461 | + | let lp = ll(gN) | |
2462 | + | if ((size(gN.payments) != 0)) | |
2685 | 2463 | then throw("No payments required") | |
2686 | 2464 | else { | |
2687 | - | let c = toString( | |
2688 | - | let | |
2689 | - | let B = valueOrErrorMessage(getString( | |
2690 | - | $Tuple2((((( | |
2691 | - | } | |
2692 | - | } | |
2693 | - | ||
2694 | - | ||
2695 | - | ||
2696 | - | @Callable( | |
2697 | - | func claimResToWH ( | |
2698 | - | let | |
2699 | - | if ((size( | |
2465 | + | let c = toString(gN.originCaller) | |
2466 | + | let fm = jA(c, eL, eD, lB) | |
2467 | + | let B = valueOrErrorMessage(getString(bM(c)), "You don't have a duck staked") | |
2468 | + | $Tuple2(((((fm._1 ++ ki(B, fraction(X, eL, cK))._1) :+ StringEntry(fm._2, makeString(fm._3, ":"))) :+ StringEntry(fm._4, makeString(fm._5, ":"))) ++ lp), fm._3[bn]) | |
2469 | + | } | |
2470 | + | } | |
2471 | + | ||
2472 | + | ||
2473 | + | ||
2474 | + | @Callable(gN) | |
2475 | + | func claimResToWH (eL,lB) = { | |
2476 | + | let lp = ll(gN) | |
2477 | + | if ((size(gN.payments) != 0)) | |
2700 | 2478 | then throw("No payments required") | |
2701 | 2479 | else { | |
2702 | - | let c = toString( | |
2703 | - | let | |
2704 | - | $Tuple2((((( | |
2705 | - | } | |
2706 | - | } | |
2707 | - | ||
2708 | - | ||
2709 | - | ||
2710 | - | @Callable( | |
2711 | - | func flight ( | |
2712 | - | let | |
2713 | - | if ((size( | |
2480 | + | let c = toString(gN.originCaller) | |
2481 | + | let fm = jA(c, eL, eC, lB) | |
2482 | + | $Tuple2(((((fm._1 ++ kj(c, fraction(X, eL, cK))._1) :+ StringEntry(fm._2, makeString(fm._3, ":"))) :+ StringEntry(fm._4, makeString(fm._5, ":"))) ++ lp), fm._5[be]) | |
2483 | + | } | |
2484 | + | } | |
2485 | + | ||
2486 | + | ||
2487 | + | ||
2488 | + | @Callable(gN) | |
2489 | + | func flight (iT,iU) = { | |
2490 | + | let lp = lm(gN) | |
2491 | + | if ((size(gN.payments) != 0)) | |
2714 | 2492 | then throw("No payments required") | |
2715 | 2493 | else { | |
2716 | - | let | |
2717 | - | let | |
2718 | - | let | |
2719 | - | let B = | |
2720 | - | let | |
2721 | - | let | |
2722 | - | let | |
2723 | - | if (( | |
2494 | + | let bQ = toString(gN.caller) | |
2495 | + | let hs = iS(bQ, iT, iU) | |
2496 | + | let iY = hs._1 | |
2497 | + | let B = hs._2 | |
2498 | + | let lj = bO(B) | |
2499 | + | let jt = valueOrElse(getString(lj), aM) | |
2500 | + | let ja = hs._4 | |
2501 | + | if ((ja == jt)) | |
2724 | 2502 | then throw("You can't fly to the same location") | |
2725 | 2503 | else { | |
2726 | - | let | |
2727 | - | let | |
2728 | - | let | |
2729 | - | let | |
2730 | - | let | |
2731 | - | let | |
2732 | - | let | |
2733 | - | let | |
2734 | - | let | |
2735 | - | then if (!( | |
2736 | - | then | |
2737 | - | else if (( | |
2738 | - | then $Tuple2( | |
2739 | - | else $Tuple2( | |
2740 | - | else if ( | |
2741 | - | then if (!( | |
2504 | + | let cw = split(ja, "_") | |
2505 | + | let lC = (cw[br] == "T") | |
2506 | + | let lD = (cw[br] == "D") | |
2507 | + | let gA = G(B) | |
2508 | + | let lE = valueOrElse(getString(gA), ",;,_,;,_,;,_,;,_,;,_,;,") | |
2509 | + | let lF = fn(lE, hs._5) | |
2510 | + | let lG = lF._1 | |
2511 | + | let lH = lF._2 | |
2512 | + | let lI = if (!(cr(dl, jt))) | |
2513 | + | then if (!(cp(ja))) | |
2514 | + | then cu(jt, ja, 5) | |
2515 | + | else if ((iY > 0)) | |
2516 | + | then $Tuple2(ja, iY) | |
2517 | + | else $Tuple2(jt, 0) | |
2518 | + | else if (ch(dl, jt)) | |
2519 | + | then if (!(ch(dl, ja))) | |
2742 | 2520 | then throw("Your duck is taking part in the tournament") | |
2743 | 2521 | else { | |
2744 | - | let | |
2745 | - | let | |
2746 | - | let | |
2747 | - | if (( | |
2748 | - | then | |
2749 | - | else if (( | |
2522 | + | let kw = parseIntValue(cw[bs]) | |
2523 | + | let lJ = split(jt, "_") | |
2524 | + | let cj = valueOrElse(getInteger(dl, bU), 0) | |
2525 | + | if ((kw != (parseIntValue(lJ[bs]) + 1))) | |
2526 | + | then cu(jt, ja, 7) | |
2527 | + | else if ((iY > 0)) | |
2750 | 2528 | then { | |
2751 | - | let | |
2752 | - | let | |
2753 | - | then invoke( | |
2529 | + | let lK = valueOrElse(getInteger(dl, bY(cj, B)), 0) | |
2530 | + | let lL = if ((kw > lK)) | |
2531 | + | then invoke(dl, "saveDuckResult", [B, kw], nil) | |
2754 | 2532 | else unit | |
2755 | - | if (( | |
2756 | - | then $Tuple2( | |
2533 | + | if ((lL == lL)) | |
2534 | + | then $Tuple2(ja, iY) | |
2757 | 2535 | else throw("Strict value is not equal to itself.") | |
2758 | 2536 | } | |
2759 | - | else $Tuple2( | |
2537 | + | else $Tuple2(jt, 0) | |
2760 | 2538 | } | |
2761 | - | else if (!( | |
2539 | + | else if (!(cm(jt))) | |
2762 | 2540 | then { | |
2763 | - | let | |
2541 | + | let lM = dC(invoke(this, "autoExitDelivery", [B, iY, if (lD) | |
2764 | 2542 | then "10" | |
2765 | 2543 | else "11", 0], nil)) | |
2766 | - | if (( | |
2767 | - | then if ( | |
2768 | - | then $Tuple2( | |
2769 | - | else if (( | |
2770 | - | then $Tuple2( | |
2771 | - | else $Tuple2( | |
2544 | + | if ((lM == lM)) | |
2545 | + | then if (lD) | |
2546 | + | then $Tuple2(lM, iY) | |
2547 | + | else if ((iY > 0)) | |
2548 | + | then $Tuple2(ja, iY) | |
2549 | + | else $Tuple2(lM, 0) | |
2772 | 2550 | else throw("Strict value is not equal to itself.") | |
2773 | 2551 | } | |
2774 | - | else if (!( | |
2552 | + | else if (!(lD)) | |
2775 | 2553 | then throw("Your duck is taking part in delivery") | |
2776 | - | else if (!( | |
2777 | - | then | |
2554 | + | else if (!(cm(ja))) | |
2555 | + | then cu(jt, ja, 13) | |
2778 | 2556 | else { | |
2779 | - | let | |
2780 | - | let | |
2781 | - | if (( | |
2782 | - | then | |
2783 | - | else if (if (( | |
2784 | - | then (1 > | |
2557 | + | let kw = parseIntValue(cw[bs]) | |
2558 | + | let lJ = split(jt, "_") | |
2559 | + | if ((kw != (parseIntValue(lJ[bs]) + 1))) | |
2560 | + | then cu(jt, ja, 14) | |
2561 | + | else if (if ((iY > 0)) | |
2562 | + | then (1 > kw) | |
2785 | 2563 | else false) | |
2786 | - | then $Tuple2( | |
2564 | + | then $Tuple2(ja, iY) | |
2787 | 2565 | else { | |
2788 | - | let | |
2789 | - | if (( | |
2790 | - | then $Tuple2( | |
2566 | + | let lM = dC(invoke(this, "autoExitDelivery", [B, iY, "15-17", kw], nil)) | |
2567 | + | if ((lM == lM)) | |
2568 | + | then $Tuple2(lM, iY) | |
2791 | 2569 | else throw("Strict value is not equal to itself.") | |
2792 | 2570 | } | |
2793 | 2571 | } | |
2794 | - | let | |
2795 | - | let | |
2796 | - | $Tuple2(((([StringEntry( | |
2572 | + | let lN = lI._1 | |
2573 | + | let lO = lI._2 | |
2574 | + | $Tuple2(((([StringEntry(lj, lN), StringEntry(gA, lG), IntegerEntry(A(B), lO)] ++ lp) ++ (if (lH) | |
2797 | 2575 | then [StringEntry(M(B), "0_0_0_0_0")] | |
2798 | - | else nil)) ++ | |
2576 | + | else nil)) ++ ki(B, if ((iY > 0)) | |
2799 | 2577 | then Y | |
2800 | - | else Z)._1), | |
2578 | + | else Z)._1), hs._3) | |
2801 | 2579 | } | |
2802 | 2580 | } | |
2803 | 2581 | } | |
2804 | 2582 | ||
2805 | 2583 | ||
2806 | 2584 | ||
2807 | - | @Callable( | |
2808 | - | func heal ( | |
2809 | - | let | |
2810 | - | if (if (if ((0 > | |
2585 | + | @Callable(gN) | |
2586 | + | func heal (lP,lQ,lR) = { | |
2587 | + | let lp = ll(gN) | |
2588 | + | if (if (if ((0 > lP)) | |
2811 | 2589 | then true | |
2812 | - | else (0 > | |
2590 | + | else (0 > lQ)) | |
2813 | 2591 | then true | |
2814 | - | else (0 > | |
2592 | + | else (0 > lR)) | |
2815 | 2593 | then throw("Quantity cannot be negative") | |
2816 | 2594 | else { | |
2817 | - | let B = valueOrErrorMessage(getString( | |
2818 | - | if ( | |
2595 | + | let B = valueOrErrorMessage(getString(bM(toString(gN.caller))), "You don't have a duck staked") | |
2596 | + | if (kt(B)) | |
2819 | 2597 | then throw("heal_checkTournament") | |
2820 | - | else if ( | |
2598 | + | else if (ku(B)) | |
2821 | 2599 | then throw("heal_checkDelivery") | |
2822 | 2600 | else { | |
2823 | - | let | |
2824 | - | let | |
2825 | - | let | |
2826 | - | let | |
2827 | - | if (( | |
2828 | - | then throw((("HP should be < " + toString( | |
2601 | + | let lS = [lP, lQ, lR] | |
2602 | + | let je = A(B) | |
2603 | + | let jf = aj(valueOrElse(getInteger(E(B)), 0)) | |
2604 | + | let lT = valueOrElse(getInteger(je), jf) | |
2605 | + | if ((lT >= jf)) | |
2606 | + | then throw((("HP should be < " + toString(jf)) + " to heal")) | |
2829 | 2607 | else { | |
2830 | - | let | |
2831 | - | let | |
2832 | - | let | |
2608 | + | let hO = bN(B) | |
2609 | + | let ir = hN(hO) | |
2610 | + | let lU = if ((ir[bp] == "")) | |
2833 | 2611 | then nil | |
2834 | - | else split_4C( | |
2835 | - | func | |
2836 | - | let | |
2837 | - | let | |
2838 | - | then parseIntValue( | |
2612 | + | else split_4C(ir[bp], "_") | |
2613 | + | func lV (eU,ct) = { | |
2614 | + | let dG = eU._2 | |
2615 | + | let hj = if ((size(lU) > dG)) | |
2616 | + | then parseIntValue(lU[dG]) | |
2839 | 2617 | else 0 | |
2840 | - | if ((3 > | |
2618 | + | if ((3 > dG)) | |
2841 | 2619 | then { | |
2842 | - | let | |
2843 | - | if (( | |
2844 | - | then throw(((("You have only " + toString( | |
2845 | - | else $Tuple3(( | |
2620 | + | let lW = lS[dG] | |
2621 | + | if ((lW > hj)) | |
2622 | + | then throw(((("You have only " + toString(hj)) + " of ") + aT[dG])) | |
2623 | + | else $Tuple3((eU._1 :+ toString((hj - lW))), (dG + 1), (eU._3 + (parseIntValue(split(ct, "_")[aZ]) * lW))) | |
2846 | 2624 | } | |
2847 | - | else $Tuple3(( | |
2625 | + | else $Tuple3((eU._1 :+ toString(hj)), (dG + 1), eU._3) | |
2848 | 2626 | } | |
2849 | 2627 | ||
2850 | - | let | |
2851 | - | let | |
2852 | - | let | |
2853 | - | let | |
2854 | - | func | |
2855 | - | then | |
2856 | - | else | |
2857 | - | ||
2858 | - | func | |
2859 | - | then | |
2628 | + | let fm = { | |
2629 | + | let eW = aX | |
2630 | + | let eX = size(eW) | |
2631 | + | let eY = $Tuple3(nil, 0, 0) | |
2632 | + | func eZ (fa,fb) = if ((fb >= eX)) | |
2633 | + | then fa | |
2634 | + | else lV(fa, eW[fb]) | |
2635 | + | ||
2636 | + | func fc (fa,fb) = if ((fb >= eX)) | |
2637 | + | then fa | |
2860 | 2638 | else throw("List size exceeds 50") | |
2861 | 2639 | ||
2862 | - | | |
2640 | + | fc(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eY, 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) | |
2863 | 2641 | } | |
2864 | - | let | |
2865 | - | $Tuple2((([IntegerEntry( | |
2642 | + | let lX = min([jf, (lT + fm._3)]) | |
2643 | + | $Tuple2((([IntegerEntry(je, lX), StringEntry(hO, makeString_2C([ir[bm], ir[bn], ir[bo], makeString(fm._1, "_")], ":"))] ++ lp) ++ ki(B, (ag * ((lP + lQ) + lR)))._1), lX) | |
2866 | 2644 | } | |
2867 | 2645 | } | |
2868 | 2646 | } | |
2870 | 2648 | ||
2871 | 2649 | ||
2872 | 2650 | ||
2873 | - | @Callable( | |
2651 | + | @Callable(gN) | |
2874 | 2652 | func healES () = { | |
2875 | - | let | |
2876 | - | if ((size( | |
2653 | + | let lp = ll(gN) | |
2654 | + | if ((size(gN.payments) != 1)) | |
2877 | 2655 | then throw("Exactly one payment required") | |
2878 | 2656 | else { | |
2879 | - | let | |
2880 | - | if (( | |
2657 | + | let lq = value(gN.payments[0]) | |
2658 | + | if ((lq.assetId != cC)) | |
2881 | 2659 | then throw("Allowed USDT payment only!") | |
2882 | 2660 | else { | |
2883 | - | let B = valueOrErrorMessage(getString( | |
2884 | - | if ( | |
2661 | + | let B = valueOrErrorMessage(getString(bM(toString(gN.caller))), "You don't have a duck staked") | |
2662 | + | if (kt(B)) | |
2885 | 2663 | then throw("healES_checkTournament") | |
2886 | - | else if ( | |
2664 | + | else if (ku(B)) | |
2887 | 2665 | then throw("healES_checkDelivery") | |
2888 | 2666 | else { | |
2889 | - | let | |
2890 | - | let | |
2891 | - | let | |
2892 | - | if (( | |
2667 | + | let je = A(B) | |
2668 | + | let jf = aj(valueOrElse(getInteger(E(B)), 0)) | |
2669 | + | let lT = valueOrElse(getInteger(je), jf) | |
2670 | + | if ((lT > 0)) | |
2893 | 2671 | then throw("HP should be 0 to call Emergency Service") | |
2894 | 2672 | else { | |
2895 | - | let | |
2896 | - | let | |
2897 | - | let | |
2673 | + | let hO = bN(B) | |
2674 | + | let ir = hN(hO) | |
2675 | + | let lU = if ((ir[bp] == "")) | |
2898 | 2676 | then nil | |
2899 | - | else split_4C( | |
2900 | - | let | |
2901 | - | then parseIntValue( | |
2677 | + | else split_4C(ir[bp], "_") | |
2678 | + | let lY = if ((size(lU) > 0)) | |
2679 | + | then parseIntValue(lU[0]) | |
2902 | 2680 | else 0 | |
2903 | - | let | |
2904 | - | then parseIntValue( | |
2681 | + | let lZ = if ((size(lU) > 1)) | |
2682 | + | then parseIntValue(lU[1]) | |
2905 | 2683 | else 0 | |
2906 | - | let | |
2907 | - | then parseIntValue( | |
2684 | + | let ma = if ((size(lU) > 2)) | |
2685 | + | then parseIntValue(lU[2]) | |
2908 | 2686 | else 0 | |
2909 | - | if (if (if (( | |
2687 | + | if (if (if ((lY > 0)) | |
2910 | 2688 | then true | |
2911 | - | else ( | |
2689 | + | else (lZ > 0)) | |
2912 | 2690 | then true | |
2913 | - | else ( | |
2691 | + | else (ma > 0)) | |
2914 | 2692 | then throw("You have to use own Medical Kit") | |
2915 | 2693 | else { | |
2916 | - | let | |
2917 | - | let | |
2918 | - | then split_4C(value( | |
2694 | + | let mb = getString(di, bR()) | |
2695 | + | let mc = if (isDefined(mb)) | |
2696 | + | then split_4C(value(mb), "_") | |
2919 | 2697 | else nil | |
2920 | - | let | |
2921 | - | then parseIntValue( | |
2698 | + | let md = if ((size(mc) > 0)) | |
2699 | + | then parseIntValue(mc[0]) | |
2922 | 2700 | else 0 | |
2923 | - | if ((0 >= | |
2701 | + | if ((0 >= md)) | |
2924 | 2702 | then throw("There are no Medical Kits L1 at Emergency Service storage") | |
2925 | 2703 | else { | |
2926 | - | let | |
2927 | - | let | |
2928 | - | let | |
2929 | - | let | |
2930 | - | let | |
2931 | - | if (( | |
2932 | - | then throw(("Payment attached should be " + toString( | |
2704 | + | let lX = (lT + parseIntValue(split(aX[0], "_")[aZ])) | |
2705 | + | let me = makeString([toString((md - 1)), removeByIndex(mc, 0)], "_") | |
2706 | + | let ct = split(aX[0], "_") | |
2707 | + | let mf = cs(ct) | |
2708 | + | let mg = fraction((mf * aO), aN, (cK * bc)) | |
2709 | + | if ((lq.amount != mg)) | |
2710 | + | then throw(("Payment attached should be " + toString(mg))) | |
2933 | 2711 | else { | |
2934 | - | let | |
2935 | - | $Tuple2((( | |
2712 | + | let fm = dC(invoke(di, "updateEsStorage", [me], [AttachedPayment(cC, mg)])) | |
2713 | + | $Tuple2(((lp :+ IntegerEntry(je, lX)) ++ ki(B, aa)._1), fm) | |
2936 | 2714 | } | |
2937 | 2715 | } | |
2938 | 2716 | } | |
2944 | 2722 | ||
2945 | 2723 | ||
2946 | 2724 | ||
2947 | - | @Callable( | |
2948 | - | func updateBackpack (B, | |
2725 | + | @Callable(gN) | |
2726 | + | func updateBackpack (B,mh) = if ((gN.caller != di)) | |
2949 | 2727 | then throw("permission denied") | |
2950 | - | else $Tuple2([StringEntry( | |
2951 | - | ||
2952 | - | ||
2953 | - | ||
2954 | - | @Callable( | |
2728 | + | else $Tuple2([StringEntry(bN(B), mh)], mh) | |
2729 | + | ||
2730 | + | ||
2731 | + | ||
2732 | + | @Callable(gN) | |
2955 | 2733 | func commitForRandom () = { | |
2956 | - | let | |
2957 | - | let | |
2958 | - | let c = toString( | |
2959 | - | $Tuple2(([IntegerEntry( | |
2960 | - | } | |
2961 | - | ||
2962 | - | ||
2963 | - | ||
2964 | - | @Callable( | |
2734 | + | let lp = ll(gN) | |
2735 | + | let mi = (height + dv) | |
2736 | + | let c = toString(gN.caller) | |
2737 | + | $Tuple2(([IntegerEntry(dw(c), mi)] ++ lp), mi) | |
2738 | + | } | |
2739 | + | ||
2740 | + | ||
2741 | + | ||
2742 | + | @Callable(gN) | |
2965 | 2743 | func buySLand () = { | |
2966 | - | let | |
2967 | - | if ((size( | |
2744 | + | let lp = ll(gN) | |
2745 | + | if ((size(gN.payments) != 1)) | |
2968 | 2746 | then throw("Exactly one payment required") | |
2969 | 2747 | else { | |
2970 | - | let | |
2971 | - | if (( | |
2748 | + | let lq = value(gN.payments[0]) | |
2749 | + | if ((lq.assetId != cC)) | |
2972 | 2750 | then throw("Allowed USDT payment only!") | |
2973 | - | else if ((mq.amount != ek)) | |
2751 | + | else if ((lq.amount != ej)) | |
2752 | + | then throw(("Payment attached should be " + toString(ej))) | |
2753 | + | else { | |
2754 | + | let fm = iL(gN.caller, gN.transactionId) | |
2755 | + | let mj = dF(invoke(dm, "burnAcres", [ek], nil)) | |
2756 | + | $Tuple2((((fm._1 :+ ScriptTransfer(di, lq.amount, cC)) ++ kj(toString(gN.caller), ac)._1) ++ lp), $Tuple2(fm._2._1, mj)) | |
2757 | + | } | |
2758 | + | } | |
2759 | + | } | |
2760 | + | ||
2761 | + | ||
2762 | + | ||
2763 | + | @Callable(gN) | |
2764 | + | func expedition (iT,iU) = { | |
2765 | + | let lp = ll(gN) | |
2766 | + | if ((size(gN.payments) != 0)) | |
2767 | + | then throw("No payments required") | |
2768 | + | else { | |
2769 | + | let bQ = toString(gN.caller) | |
2770 | + | let hs = iS(bQ, iT, iU) | |
2771 | + | let B = hs._2 | |
2772 | + | let je = A(B) | |
2773 | + | let hO = bN(B) | |
2774 | + | let ir = hN(hO) | |
2775 | + | let jT = split(ir[bo], "_") | |
2776 | + | let jV = makeString(fg(true, jT, ei), "_") | |
2777 | + | let gA = G(B) | |
2778 | + | let lE = valueOrElse(getString(gA), ",;,_,;,_,;,_,;,_,;,_,;,") | |
2779 | + | let mk = fn(lE, hs._5) | |
2780 | + | let lG = mk._1 | |
2781 | + | let lH = mk._2 | |
2782 | + | let ml = iL(gN.caller, gN.transactionId) | |
2783 | + | let iR = ml._2._1 | |
2784 | + | let fm = if ((0 >= hs._1)) | |
2785 | + | then $Tuple3([IntegerEntry(je, 0), StringEntry(gA, lG)], "", 0) | |
2786 | + | else $Tuple3((ml._1 ++ (if (lH) | |
2787 | + | then [StringEntry(M(B), "0_0_0_0_0")] | |
2788 | + | else ((((nil :+ StringEntry(bO(B), makeString([ml._2._2, "L", iR], "_"))) :+ IntegerEntry(je, hs._1)) :+ StringEntry(gA, lG)) :+ StringEntry(hO, makeString([ir[bm], ir[bn], jV, ir[bp]], ":"))))), iR, hs._3) | |
2789 | + | if (kt(B)) | |
2790 | + | then throw("expedition_checkTournament") | |
2791 | + | else if (ku(B)) | |
2792 | + | then throw("expedition_checkDelivery") | |
2793 | + | else { | |
2794 | + | let mj = dF(invoke(dm, "burnAcres", [ek], nil)) | |
2795 | + | $Tuple2(((fm._1 ++ ki(B, ac)._1) ++ lp), $Tuple3(fm._2, fm._3, mj)) | |
2796 | + | } | |
2797 | + | } | |
2798 | + | } | |
2799 | + | ||
2800 | + | ||
2801 | + | ||
2802 | + | @Callable(gN) | |
2803 | + | func buySLandForAcres () = { | |
2804 | + | let lp = ll(gN) | |
2805 | + | if ((size(gN.payments) != 1)) | |
2806 | + | then throw("exactly 1 payment must be attached") | |
2807 | + | else { | |
2808 | + | let lq = gN.payments[0] | |
2809 | + | let ft = lq.amount | |
2810 | + | if (if (!(isDefined(lq.assetId))) | |
2811 | + | then true | |
2812 | + | else (value(lq.assetId) != du)) | |
2813 | + | then throw("ACRES payments only!") | |
2814 | + | else if ((ft != ek)) | |
2974 | 2815 | then throw(("Payment attached should be " + toString(ek))) | |
2975 | 2816 | else { | |
2976 | - | let | |
2977 | - | let | |
2978 | - | $Tuple2((( | |
2817 | + | let fm = iL(gN.caller, gN.transactionId) | |
2818 | + | let mj = dF(invoke(dm, "burnAcres", [ek], [AttachedPayment(du, ft)])) | |
2819 | + | $Tuple2(((fm._1 ++ kj(toString(gN.caller), ac)._1) ++ lp), $Tuple2(fm._2._1, mj)) | |
2979 | 2820 | } | |
2980 | 2821 | } | |
2981 | 2822 | } | |
2982 | 2823 | ||
2983 | 2824 | ||
2984 | 2825 | ||
2985 | - | @Callable( | |
2986 | - | func | |
2987 | - | let | |
2988 | - | if ((size( | |
2826 | + | @Callable(gN) | |
2827 | + | func upgradeInfra (Q) = { | |
2828 | + | let lp = ll(gN) | |
2829 | + | if ((size(gN.payments) != 0)) | |
2989 | 2830 | then throw("No payments required") | |
2990 | 2831 | else { | |
2991 | - | let bR = toString(gO.caller) | |
2992 | - | let iD = jS(bR, jT, jU) | |
2993 | - | let B = iD._2 | |
2994 | - | let ke = A(B) | |
2995 | - | let iO = bO(B) | |
2996 | - | let jr = iN(iO) | |
2997 | - | let kT = split(jr[bp], "_") | |
2998 | - | let kV = makeString(fh(true, kT, ej), "_") | |
2999 | - | let gB = G(B) | |
3000 | - | let mE = valueOrElse(getString(gB), ",;,_,;,_,;,_,;,_,;,_,;,") | |
3001 | - | let nk = fo(mE, iD._5) | |
3002 | - | let mG = nk._1 | |
3003 | - | let mH = nk._2 | |
3004 | - | let nl = jL(gO.caller, gO.transactionId) | |
3005 | - | let jR = nl._2._1 | |
3006 | - | let fn = if ((0 >= iD._1)) | |
3007 | - | then $Tuple3([IntegerEntry(ke, 0), StringEntry(gB, mG)], "", 0) | |
3008 | - | else $Tuple3((nl._1 ++ (if (mH) | |
3009 | - | then [StringEntry(M(B), "0_0_0_0_0")] | |
3010 | - | else ((((nil :+ StringEntry(bP(B), makeString([nl._2._2, "L", jR], "_"))) :+ IntegerEntry(ke, iD._1)) :+ StringEntry(gB, mG)) :+ StringEntry(iO, makeString([jr[bn], jr[bo], kV, jr[bq]], ":"))))), jR, iD._3) | |
3011 | - | if (lt(B)) | |
3012 | - | then throw("expedition_checkTournament") | |
3013 | - | else if (lu(B)) | |
3014 | - | then throw("expedition_checkDelivery") | |
3015 | - | else { | |
3016 | - | let nj = dG(invoke(dn, "burnAcres", [el], nil)) | |
3017 | - | $Tuple2(((fn._1 ++ li(B, ac)._1) ++ mp), $Tuple3(fn._2, fn._3, nj)) | |
3018 | - | } | |
3019 | - | } | |
3020 | - | } | |
3021 | - | ||
3022 | - | ||
3023 | - | ||
3024 | - | @Callable(gO) | |
3025 | - | func buySLandForAcres () = { | |
3026 | - | let mp = ml(gO) | |
3027 | - | if ((size(gO.payments) != 1)) | |
3028 | - | then throw("exactly 1 payment must be attached") | |
3029 | - | else { | |
3030 | - | let mq = gO.payments[0] | |
3031 | - | let fu = mq.amount | |
3032 | - | if (if (!(isDefined(mq.assetId))) | |
3033 | - | then true | |
3034 | - | else (value(mq.assetId) != dv)) | |
3035 | - | then throw("ACRES payments only!") | |
3036 | - | else if ((fu != el)) | |
3037 | - | then throw(("Payment attached should be " + toString(el))) | |
3038 | - | else { | |
3039 | - | let fn = jL(gO.caller, gO.transactionId) | |
3040 | - | let nj = dG(invoke(dn, "burnAcres", [el], [AttachedPayment(dv, fu)])) | |
3041 | - | $Tuple2(((fn._1 ++ lj(toString(gO.caller), ac)._1) ++ mp), $Tuple2(fn._2._1, nj)) | |
3042 | - | } | |
3043 | - | } | |
3044 | - | } | |
3045 | - | ||
3046 | - | ||
3047 | - | ||
3048 | - | @Callable(gO) | |
3049 | - | func upgradeInfra (Q) = { | |
3050 | - | let mp = ml(gO) | |
3051 | - | if ((size(gO.payments) != 0)) | |
2832 | + | let fm = jN(true, gN.caller, 0, Q) | |
2833 | + | let B = valueOrErrorMessage(getString(bM(toString(gN.caller))), "You don't have a duck staked") | |
2834 | + | $Tuple2(((fm._1 ++ lp) ++ ki(B, fraction(ad, fm._3, cK))._1), fm._2) | |
2835 | + | } | |
2836 | + | } | |
2837 | + | ||
2838 | + | ||
2839 | + | ||
2840 | + | @Callable(gN) | |
2841 | + | func activateArtifact (mm,mn) = { | |
2842 | + | let lp = ll(gN) | |
2843 | + | if ((size(gN.payments) != 0)) | |
3052 | 2844 | then throw("No payments required") | |
3053 | 2845 | else { | |
3054 | - | let fn = kN(true, gO.caller, 0, Q) | |
3055 | - | let B = valueOrErrorMessage(getString(bN(toString(gO.caller))), "You don't have a duck staked") | |
3056 | - | $Tuple2(((fn._1 ++ mp) ++ li(B, fraction(ad, fn._3, cL))._1), fn._2) | |
3057 | - | } | |
3058 | - | } | |
3059 | - | ||
3060 | - | ||
3061 | - | ||
3062 | - | @Callable(gO) | |
3063 | - | func activateArtifact (nm,nn) = { | |
3064 | - | let mp = ml(gO) | |
3065 | - | if ((size(gO.payments) != 0)) | |
2846 | + | let c = toString(gN.caller) | |
2847 | + | let fm = { | |
2848 | + | let cD = mm | |
2849 | + | if (("PRESALE" == cD)) | |
2850 | + | then kr(c, mn) | |
2851 | + | else if (("ONBOARD" == cD)) | |
2852 | + | then kk(c) | |
2853 | + | else throw("Unknown artifact") | |
2854 | + | } | |
2855 | + | (fm ++ lp) | |
2856 | + | } | |
2857 | + | } | |
2858 | + | ||
2859 | + | ||
2860 | + | ||
2861 | + | @Callable(gN) | |
2862 | + | func mergeLands (kI) = { | |
2863 | + | let lp = ll(gN) | |
2864 | + | if ((size(gN.payments) != 0)) | |
3066 | 2865 | then throw("No payments required") | |
3067 | 2866 | else { | |
3068 | - | let c = toString(gO.caller) | |
3069 | - | let fn = { | |
3070 | - | let cE = nm | |
3071 | - | if (("PRESALE" == cE)) | |
3072 | - | then lr(c, nn) | |
3073 | - | else if (("ONBOARD" == cE)) | |
3074 | - | then lk(c) | |
3075 | - | else throw("Unknown artifact") | |
3076 | - | } | |
3077 | - | (fn ++ mp) | |
3078 | - | } | |
3079 | - | } | |
3080 | - | ||
3081 | - | ||
3082 | - | ||
3083 | - | @Callable(gO) | |
3084 | - | func mergeLands (lI) = { | |
3085 | - | let mp = ml(gO) | |
3086 | - | if ((size(gO.payments) != 0)) | |
2867 | + | let fm = lg(toString(gN.caller), kI) | |
2868 | + | $Tuple2(((fm._1 ++ lp) ++ kj(toString(gN.caller), ae)._1), fm._2) | |
2869 | + | } | |
2870 | + | } | |
2871 | + | ||
2872 | + | ||
2873 | + | ||
2874 | + | @Callable(gN) | |
2875 | + | func cargoExchange (mo,Q) = { | |
2876 | + | let lp = ll(gN) | |
2877 | + | if ((size(gN.payments) != 0)) | |
3087 | 2878 | then throw("No payments required") | |
3088 | 2879 | else { | |
3089 | - | let fn = mg(toString(gO.caller), lI) | |
3090 | - | $Tuple2(((fn._1 ++ mp) ++ lj(toString(gO.caller), ae)._1), fn._2) | |
3091 | - | } | |
3092 | - | } | |
3093 | - | ||
3094 | - | ||
3095 | - | ||
3096 | - | @Callable(gO) | |
3097 | - | func cargoExchange (no,Q) = { | |
3098 | - | let mp = ml(gO) | |
3099 | - | if ((size(gO.payments) != 0)) | |
3100 | - | then throw("No payments required") | |
3101 | - | else { | |
3102 | - | let jq = split_4C(no, ":") | |
3103 | - | let c = toString(gO.originCaller) | |
3104 | - | let kv = value(assetInfo(fromBase58String(Q))) | |
3105 | - | let kw = bx(Q) | |
3106 | - | if (!(isDefined(getInteger(kw)))) | |
3107 | - | then throw((kv.name + " is not staked")) | |
2880 | + | let iq = split_4C(mo, ":") | |
2881 | + | let c = toString(gN.originCaller) | |
2882 | + | let jv = value(assetInfo(fromBase58String(Q))) | |
2883 | + | let jw = bw(Q) | |
2884 | + | if (!(isDefined(getInteger(jw)))) | |
2885 | + | then throw((jv.name + " is not staked")) | |
3108 | 2886 | else { | |
3109 | - | let | |
3110 | - | if (( | |
2887 | + | let jy = valueOrErrorMessage(getString(bt(Q)), (("NFT " + jv.name) + " is orphaned")) | |
2888 | + | if ((jy != c)) | |
3111 | 2889 | then throw((aF + " is not yours")) | |
3112 | 2890 | else { | |
3113 | - | let | |
3114 | - | let | |
3115 | - | let B = valueOrErrorMessage(getString( | |
3116 | - | let | |
3117 | - | let | |
3118 | - | if (( | |
3119 | - | then throw((("Duck location type is " + | |
3120 | - | else if (( | |
2891 | + | let ic = (dK(split(jv.description, "_")[do]) / cL) | |
2892 | + | let id = valueOrElse(getInteger(bD(Q)), 0) | |
2893 | + | let B = valueOrErrorMessage(getString(bM(c)), "You don't have a duck staked") | |
2894 | + | let jt = valueOrElse(getString(bO(B)), aM) | |
2895 | + | let ck = split(value(jt), "_") | |
2896 | + | if ((ck[br] != "L")) | |
2897 | + | then throw((("Duck location type is " + ck[br]) + ", but should be L")) | |
2898 | + | else if ((ck[bs] != Q)) | |
3121 | 2899 | then throw(("Duck should be on the land " + Q)) | |
3122 | 2900 | else { | |
3123 | - | let | |
3124 | - | let | |
3125 | - | let | |
3126 | - | let | |
3127 | - | let | |
3128 | - | let | |
3129 | - | let | |
3130 | - | let | |
3131 | - | ([StringEntry( | |
2901 | + | let ib = bC(Q) | |
2902 | + | let hS = ia(ib, ic, id) | |
2903 | + | let hO = bN(B) | |
2904 | + | let ir = hN(hO) | |
2905 | + | let fm = ip(iq, hS, ir) | |
2906 | + | let ij = split(hS[bh], "_") | |
2907 | + | let jK = (parseIntValue(ij[bj]) + fm._7) | |
2908 | + | let jL = (parseIntValue(ij[bk]) - fm._7) | |
2909 | + | ([StringEntry(hO, makeString_2C([ir[bm], fm._4, fm._5, fm._6], ":")), StringEntry(ib, makeString_2C([hS[bd], fm._1, fm._2, fm._3, makeString([ij[bi], toString(jK), toString(jL), ij[bl]], "_")], ":"))] ++ lp) | |
3132 | 2910 | } | |
3133 | 2911 | } | |
3134 | 2912 | } | |
3137 | 2915 | ||
3138 | 2916 | ||
3139 | 2917 | ||
3140 | - | @Callable( | |
3141 | - | func saveWarehouse ( | |
2918 | + | @Callable(gN) | |
2919 | + | func saveWarehouse (if,Q) = if ((gN.caller != di)) | |
3142 | 2920 | then throw("Access denied") | |
3143 | 2921 | else { | |
3144 | - | let | |
3145 | - | let | |
3146 | - | if ((size( | |
2922 | + | let ib = bC(Q) | |
2923 | + | let ig = split_4C(if, ":") | |
2924 | + | if ((size(ig) != 5)) | |
3147 | 2925 | then throw("warehouse string should contain 4 ':' separators") | |
3148 | 2926 | else { | |
3149 | - | let | |
3150 | - | let | |
3151 | - | let | |
3152 | - | let | |
3153 | - | if ((0 > | |
2927 | + | let mp = split(ig[bh], "_")[bi] | |
2928 | + | let jK = hR(ig) | |
2929 | + | let mq = hP(ig[bd]) | |
2930 | + | let jL = ((mq - parseIntValue(mp)) - jK) | |
2931 | + | if ((0 > jL)) | |
3154 | 2932 | then throw("Operation leads to negative free warehouse space") | |
3155 | 2933 | else { | |
3156 | - | let | |
3157 | - | $Tuple2([StringEntry( | |
2934 | + | let mr = makeString_2C([ig[bd], ig[be], ig[bf], ig[bg], makeString([mp, toString(jK), toString(jL), toString(mq)], "_")], ":") | |
2935 | + | $Tuple2([StringEntry(ib, mr)], mr) | |
3158 | 2936 | } | |
3159 | 2937 | } | |
3160 | 2938 | } | |
3161 | 2939 | ||
3162 | 2940 | ||
3163 | 2941 | ||
3164 | - | @Callable( | |
3165 | - | func setCustomName ( | |
3166 | - | let | |
3167 | - | if ((size( | |
2942 | + | @Callable(gN) | |
2943 | + | func setCustomName (bu,kS,by) = { | |
2944 | + | let lp = ll(gN) | |
2945 | + | if ((size(gN.payments) != 1)) | |
3168 | 2946 | then throw("Exactly one payment required") | |
3169 | 2947 | else { | |
3170 | - | let | |
3171 | - | if (( | |
2948 | + | let lq = value(gN.payments[0]) | |
2949 | + | if ((lq.assetId != cC)) | |
3172 | 2950 | then throw("Allowed USDT payment only!") | |
3173 | - | else if (( | |
3174 | - | then throw(("Payment should be " + toString( | |
3175 | - | else if (contains( | |
3176 | - | then throw(("Name should not contain '__': " + | |
3177 | - | else if ((size( | |
3178 | - | then throw(("Name too long, maxLength=" + toString( | |
2951 | + | else if ((lq.amount != ef)) | |
2952 | + | then throw(("Payment should be " + toString(ef))) | |
2953 | + | else if (contains(kS, "__")) | |
2954 | + | then throw(("Name should not contain '__': " + kS)) | |
2955 | + | else if ((size(kS) > eg)) | |
2956 | + | then throw(("Name too long, maxLength=" + toString(eg))) | |
3179 | 2957 | else { | |
3180 | - | let c = toString( | |
3181 | - | let | |
3182 | - | let | |
3183 | - | if (("ACCOUNT" == | |
2958 | + | let c = toString(gN.originCaller) | |
2959 | + | let ms = { | |
2960 | + | let cD = by | |
2961 | + | if (("ACCOUNT" == cD)) | |
3184 | 2962 | then { | |
3185 | - | let | |
3186 | - | let | |
3187 | - | if (isDefined( | |
3188 | - | then throw(("Name already registered: " + | |
2963 | + | let mt = eA(kS) | |
2964 | + | let mu = getString(mt) | |
2965 | + | if (isDefined(mu)) | |
2966 | + | then throw(("Name already registered: " + kS)) | |
3189 | 2967 | else { | |
3190 | - | let | |
3191 | - | let | |
3192 | - | let | |
3193 | - | then [DeleteEntry( | |
2968 | + | let mv = bG(c) | |
2969 | + | let mw = getString(mv) | |
2970 | + | let mx = if (isDefined(mw)) | |
2971 | + | then [DeleteEntry(eA(value(mw)))] | |
3194 | 2972 | else nil | |
3195 | - | ((( | |
2973 | + | (((mx :+ StringEntry(mv, kS)) :+ StringEntry(mt, c)) ++ kj(c, ab)._1) | |
3196 | 2974 | } | |
3197 | 2975 | } | |
3198 | - | else if (("LAND" == | |
2976 | + | else if (("LAND" == cD)) | |
3199 | 2977 | then { | |
3200 | - | let | |
3201 | - | let | |
3202 | - | if (!(isDefined(getInteger( | |
3203 | - | then throw(( | |
2978 | + | let jv = value(assetInfo(fromBase58String(bu))) | |
2979 | + | let jw = bw(bu) | |
2980 | + | if (!(isDefined(getInteger(jw)))) | |
2981 | + | then throw((jv.name + " is not staked")) | |
3204 | 2982 | else { | |
3205 | - | let | |
3206 | - | if (( | |
2983 | + | let jy = valueOrErrorMessage(getString(bt(bu)), (("NFT " + jv.name) + " is orphaned")) | |
2984 | + | if ((jy != c)) | |
3207 | 2985 | then throw((aF + " is not yours")) | |
3208 | 2986 | else { | |
3209 | - | let | |
3210 | - | let | |
3211 | - | if (isDefined( | |
3212 | - | then throw(("Name already registered: " + | |
2987 | + | let mt = et(kS) | |
2988 | + | let mu = getString(mt) | |
2989 | + | if (isDefined(mu)) | |
2990 | + | then throw(("Name already registered: " + kS)) | |
3213 | 2991 | else { | |
3214 | - | let | |
3215 | - | let | |
3216 | - | let | |
3217 | - | then [DeleteEntry( | |
2992 | + | let my = bv(bu) | |
2993 | + | let mw = getString(my) | |
2994 | + | let mx = if (isDefined(mw)) | |
2995 | + | then [DeleteEntry(et(value(mw)))] | |
3218 | 2996 | else nil | |
3219 | - | ((( | |
2997 | + | (((mx :+ StringEntry(my, kS)) :+ StringEntry(mt, bu)) ++ kj(c, ab)._1) | |
3220 | 2998 | } | |
3221 | 2999 | } | |
3222 | 3000 | } | |
3223 | 3001 | } | |
3224 | - | else if (("DUCK" == | |
3002 | + | else if (("DUCK" == cD)) | |
3225 | 3003 | then { | |
3226 | - | let | |
3227 | - | let | |
3228 | - | if (if (!(isDefined(getInteger( | |
3004 | + | let jv = value(assetInfo(fromBase58String(bu))) | |
3005 | + | let jw = bw(bu) | |
3006 | + | if (if (!(isDefined(getInteger(jw)))) | |
3229 | 3007 | then true | |
3230 | - | else !(isDefined(getString( | |
3231 | - | then throw(( | |
3008 | + | else !(isDefined(getString(bM(c))))) | |
3009 | + | then throw((jv.name + " is not staked")) | |
3232 | 3010 | else { | |
3233 | - | let | |
3234 | - | if (( | |
3011 | + | let jy = valueOrErrorMessage(getString(bL(bu)), (("NFT " + jv.name) + " is orphaned")) | |
3012 | + | if ((jy != c)) | |
3235 | 3013 | then throw((aG + " is not yours")) | |
3236 | 3014 | else { | |
3237 | - | let | |
3238 | - | let | |
3239 | - | if (isDefined( | |
3240 | - | then throw(("Name already registered: " + | |
3015 | + | let mt = ez(kS) | |
3016 | + | let mu = getString(mt) | |
3017 | + | if (isDefined(mu)) | |
3018 | + | then throw(("Name already registered: " + kS)) | |
3241 | 3019 | else { | |
3242 | - | let | |
3243 | - | let | |
3244 | - | let | |
3245 | - | then [DeleteEntry( | |
3020 | + | let my = bF(bu) | |
3021 | + | let mw = getString(my) | |
3022 | + | let mx = if (isDefined(mw)) | |
3023 | + | then [DeleteEntry(ez(value(mw)))] | |
3246 | 3024 | else nil | |
3247 | - | ((( | |
3025 | + | (((mx :+ StringEntry(my, kS)) :+ StringEntry(mt, bu)) ++ ki(bu, ab)._1) | |
3248 | 3026 | } | |
3249 | 3027 | } | |
3250 | 3028 | } | |
3251 | 3029 | } | |
3252 | 3030 | else throw("Unknown entity type") | |
3253 | 3031 | } | |
3254 | - | $Tuple2((( | |
3032 | + | $Tuple2(((ms :+ ScriptTransfer(di, lq.amount, cC)) ++ lp), 0) | |
3255 | 3033 | } | |
3256 | 3034 | } | |
3257 | 3035 | } | |
3258 | 3036 | ||
3259 | 3037 | ||
3260 | 3038 | ||
3261 | - | @Callable( | |
3262 | - | func setReferrals ( | |
3039 | + | @Callable(gN) | |
3040 | + | func setReferrals (mz,mA) = if ((gN.callerPublicKey != ec)) | |
3263 | 3041 | then throw("Permission denied") | |
3264 | 3042 | else { | |
3265 | - | let | |
3266 | - | if ((size( | |
3043 | + | let lp = ll(gN) | |
3044 | + | if ((size(gN.payments) != 0)) | |
3267 | 3045 | then throw("No payments required") | |
3268 | - | else if (!(isDefined(addressFromString( | |
3269 | - | then throw(("Invalid address: " + | |
3270 | - | else if (!(isDefined(addressFromString( | |
3271 | - | then throw(("Invalid address: " + | |
3046 | + | else if (!(isDefined(addressFromString(mz)))) | |
3047 | + | then throw(("Invalid address: " + mz)) | |
3048 | + | else if (!(isDefined(addressFromString(mA)))) | |
3049 | + | then throw(("Invalid address: " + mA)) | |
3272 | 3050 | else { | |
3273 | - | let | |
3274 | - | let | |
3275 | - | let | |
3276 | - | then split_4C(value( | |
3051 | + | let mB = eB() | |
3052 | + | let mC = getString(mB) | |
3053 | + | let mD = if (isDefined(mC)) | |
3054 | + | then split_4C(value(mC), "_") | |
3277 | 3055 | else nil | |
3278 | - | if (containsElement( | |
3279 | - | then throw(( | |
3056 | + | if (containsElement(mD, mA)) | |
3057 | + | then throw((mA + " is not newbie (already has referrals)")) | |
3280 | 3058 | else { | |
3281 | - | let | |
3282 | - | let | |
3283 | - | if (if (isDefined( | |
3284 | - | then isDefined(addressFromString(value( | |
3059 | + | let kl = bH(mA) | |
3060 | + | let km = getString(kl) | |
3061 | + | if (if (isDefined(km)) | |
3062 | + | then isDefined(addressFromString(value(km))) | |
3285 | 3063 | else false) | |
3286 | - | then throw((( | |
3064 | + | then throw(((mA + " already has refBy: ") + value(km))) | |
3287 | 3065 | else { | |
3288 | - | let | |
3289 | - | let | |
3290 | - | let | |
3291 | - | then split_4C(value( | |
3066 | + | let mE = bK(mz) | |
3067 | + | let mF = getString(mE) | |
3068 | + | let mG = if (isDefined(mF)) | |
3069 | + | then split_4C(value(mF), "_") | |
3292 | 3070 | else nil | |
3293 | - | if (containsElement( | |
3294 | - | then throw(((( | |
3071 | + | if (containsElement(mG, mA)) | |
3072 | + | then throw((((mz + " already contains ") + mA) + " within referrals")) | |
3295 | 3073 | else { | |
3296 | - | let | |
3297 | - | let | |
3298 | - | then value( | |
3299 | - | else makeString_2C(( | |
3300 | - | $Tuple2(([StringEntry( | |
3074 | + | let mH = makeString_2C((mG :+ mA), "_") | |
3075 | + | let mI = if (containsElement(mD, mz)) | |
3076 | + | then value(mC) | |
3077 | + | else makeString_2C((mD :+ mz), "_") | |
3078 | + | $Tuple2(([StringEntry(kl, mz), StringEntry(mE, mH), StringEntry(mB, mI)] ++ lp), 0) | |
3301 | 3079 | } | |
3302 | 3080 | } | |
3303 | 3081 | } | |
3306 | 3084 | ||
3307 | 3085 | ||
3308 | 3086 | ||
3309 | - | @Callable( | |
3310 | - | func distributePoints ( | |
3311 | - | let | |
3312 | - | if ((size( | |
3087 | + | @Callable(gN) | |
3088 | + | func distributePoints (mJ,mK,mL,mM,mN) = { | |
3089 | + | let lp = ll(gN) | |
3090 | + | if ((size(gN.payments) != 0)) | |
3313 | 3091 | then throw("No payments required") | |
3314 | 3092 | else { | |
3315 | - | let c = toString( | |
3316 | - | let | |
3317 | - | let | |
3318 | - | let | |
3093 | + | let c = toString(gN.originCaller) | |
3094 | + | let mO = dH(invoke(dk, "checkWlgXpREADONLY", [c], nil)) | |
3095 | + | let mP = dF(mO[1]) | |
3096 | + | let mQ = if ((0 >= mP)) | |
3319 | 3097 | then $Tuple2(0, nil) | |
3320 | 3098 | else { | |
3321 | - | let | |
3322 | - | if (( | |
3323 | - | then $Tuple2( | |
3099 | + | let kg = dF(invoke(dk, "takeWlgXp", [c], nil)) | |
3100 | + | if ((kg == kg)) | |
3101 | + | then $Tuple2(mP, [IntegerEntry(I(c), dF(mO[0])), IntegerEntry(H(c), dF(mO[2]))]) | |
3324 | 3102 | else throw("Strict value is not equal to itself.") | |
3325 | 3103 | } | |
3326 | - | let | |
3327 | - | let | |
3328 | - | let B = valueOrErrorMessage(getString( | |
3329 | - | let | |
3330 | - | let | |
3331 | - | let | |
3332 | - | let | |
3333 | - | let | |
3334 | - | let | |
3335 | - | if (( | |
3336 | - | then throw((("There are only " + toString( | |
3104 | + | let mR = mQ._1 | |
3105 | + | let mS = mQ._2 | |
3106 | + | let B = valueOrErrorMessage(getString(bM(c)), "You don't have a duck staked") | |
3107 | + | let mT = J(c) | |
3108 | + | let mU = (valueOrElse(getInteger(mT), 0) + mR) | |
3109 | + | let mV = F(B) | |
3110 | + | let mW = valueOrElse(getInteger(mV), 0) | |
3111 | + | let mX = (mU + mW) | |
3112 | + | let mY = ((((mJ + mK) + mL) + mM) + mN) | |
3113 | + | if ((mY > mX)) | |
3114 | + | then throw((("There are only " + toString(mX)) + " free points to distribute")) | |
3337 | 3115 | else { | |
3338 | - | let | |
3339 | - | let at = split(valueOrElse(getString( | |
3340 | - | let | |
3341 | - | $Tuple2((([IntegerEntry( | |
3116 | + | let mZ = C(B) | |
3117 | + | let at = split(valueOrElse(getString(mZ), "0_0_0_0_0"), "_") | |
3118 | + | let na = (mU - mY) | |
3119 | + | $Tuple2((([IntegerEntry(mT, if ((0 > na)) | |
3342 | 3120 | then 0 | |
3343 | - | else | |
3344 | - | then ( | |
3345 | - | else | |
3121 | + | else na), IntegerEntry(mV, if ((0 > na)) | |
3122 | + | then (mW + na) | |
3123 | + | else mW), StringEntry(mZ, makeString([toString((parseIntValue(at[l]) + mJ)), toString((parseIntValue(at[m]) + mK)), toString((parseIntValue(at[n]) + mL)), toString((parseIntValue(at[o]) + mM)), toString((parseIntValue(at[p]) + mN))], "_"))] ++ lp) ++ mS), 0) | |
3346 | 3124 | } | |
3347 | 3125 | } | |
3348 | 3126 | } | |
3349 | 3127 | ||
3350 | 3128 | ||
3351 | 3129 | ||
3352 | - | @Callable( | |
3353 | - | func splitByGlobalWeightsREADONLY ( | |
3354 | - | ||
3355 | - | ||
3356 | - | ||
3357 | - | @Callable( | |
3358 | - | func splitByGlobalAndLocalWeightsREADONLY ( | |
3359 | - | let | |
3360 | - | $Tuple2(nil, $Tuple2( | |
3361 | - | } | |
3362 | - | ||
3363 | - | ||
3364 | - | ||
3365 | - | @Callable( | |
3366 | - | func getBackpackREADONLY (B) = $Tuple2(nil, makeString( | |
3367 | - | ||
3368 | - | ||
3369 | - | ||
3370 | - | @Callable( | |
3130 | + | @Callable(gN) | |
3131 | + | func splitByGlobalWeightsREADONLY (eL) = $Tuple2(nil, fd(eL)) | |
3132 | + | ||
3133 | + | ||
3134 | + | ||
3135 | + | @Callable(gN) | |
3136 | + | func splitByGlobalAndLocalWeightsREADONLY (nb,nc,gQ) = { | |
3137 | + | let gJ = gP(gQ) | |
3138 | + | $Tuple2(nil, $Tuple2(fd(nb), eO(nc, gJ))) | |
3139 | + | } | |
3140 | + | ||
3141 | + | ||
3142 | + | ||
3143 | + | @Callable(gN) | |
3144 | + | func getBackpackREADONLY (B) = $Tuple2(nil, makeString(hN(bN(B)), ":")) | |
3145 | + | ||
3146 | + | ||
3147 | + | ||
3148 | + | @Callable(gN) | |
3371 | 3149 | func getWarehouseREADONLY (Q) = { | |
3372 | - | let | |
3373 | - | let | |
3374 | - | let | |
3375 | - | $Tuple2(nil, makeString_2C( | |
3376 | - | } | |
3377 | - | ||
3378 | - | ||
3379 | - | ||
3380 | - | @Callable( | |
3381 | - | func saveLastTx () = if (!(containsElement([dl, | |
3150 | + | let jv = value(assetInfo(fromBase58String(Q))) | |
3151 | + | let ic = (dK(split(jv.description, "_")[do]) / cL) | |
3152 | + | let id = valueOrElse(getInteger(bD(Q)), 0) | |
3153 | + | $Tuple2(nil, makeString_2C(ia(bC(Q), ic, id), ":")) | |
3154 | + | } | |
3155 | + | ||
3156 | + | ||
3157 | + | ||
3158 | + | @Callable(gN) | |
3159 | + | func saveLastTx () = if (!(containsElement([dk, di, dl, dm], gN.caller))) | |
3382 | 3160 | then throw("Access denied") | |
3383 | - | else $Tuple2( | |
3384 | - | ||
3385 | - | ||
3386 | - | ||
3387 | - | @Callable( | |
3388 | - | func updateDuckStats (B, | |
3161 | + | else $Tuple2(ll(gN), 42) | |
3162 | + | ||
3163 | + | ||
3164 | + | ||
3165 | + | @Callable(gN) | |
3166 | + | func updateDuckStats (B,kg) = if ((gN.caller != di)) | |
3389 | 3167 | then throw("Access denied") | |
3390 | - | else | |
3391 | - | ||
3392 | - | ||
3393 | - | ||
3394 | - | @Callable( | |
3395 | - | func updateAccStats (c, | |
3168 | + | else ki(B, kg) | |
3169 | + | ||
3170 | + | ||
3171 | + | ||
3172 | + | @Callable(gN) | |
3173 | + | func updateAccStats (c,kg) = if (!(containsElement([dk, di, dm], gN.caller))) | |
3396 | 3174 | then throw("Access denied") | |
3397 | - | else | |
3398 | - | ||
3399 | - | ||
3400 | - | ||
3401 | - | @Callable( | |
3402 | - | func equipDuck ( | |
3403 | - | let | |
3404 | - | if ((size( | |
3175 | + | else kj(c, kg) | |
3176 | + | ||
3177 | + | ||
3178 | + | ||
3179 | + | @Callable(gN) | |
3180 | + | func equipDuck (nd) = { | |
3181 | + | let lp = ll(gN) | |
3182 | + | if ((size(gN.payments) != 0)) | |
3405 | 3183 | then throw("No payments required") | |
3406 | 3184 | else { | |
3407 | - | let c = toString( | |
3408 | - | let B = valueOrErrorMessage(getString( | |
3409 | - | if ( | |
3185 | + | let c = toString(gN.originCaller) | |
3186 | + | let B = valueOrErrorMessage(getString(bM(c)), "You don't have a duck staked") | |
3187 | + | if (kt(B)) | |
3410 | 3188 | then throw("equipDuck_checkTournament") | |
3411 | - | else if ( | |
3189 | + | else if (ku(B)) | |
3412 | 3190 | then throw("equipDuck_checkDelivery") | |
3413 | 3191 | else { | |
3414 | - | let | |
3415 | - | let | |
3416 | - | let | |
3417 | - | let | |
3418 | - | let | |
3419 | - | if ((size( | |
3192 | + | let gA = G(B) | |
3193 | + | let ne = split(valueOrElse(getString(gA), ",;,_,;,_,;,_,;,_,;,_,;,"), "_") | |
3194 | + | let hO = bN(B) | |
3195 | + | let ir = hN(hO) | |
3196 | + | let lG = split(nd, "_") | |
3197 | + | if ((size(lG) != r)) | |
3420 | 3198 | then throw("Wrong equipment string") | |
3421 | 3199 | else { | |
3422 | - | let | |
3423 | - | let | |
3424 | - | let ar = if (( | |
3200 | + | let gC = gp(ne, fA(ir[bp]), true, nil) | |
3201 | + | let gD = split(lG[q], ";")[1] | |
3202 | + | let ar = if ((gD == "")) | |
3425 | 3203 | then 0 | |
3426 | 3204 | else { | |
3427 | - | let | |
3428 | - | if (( | |
3205 | + | let gE = split(gD, ",")[0] | |
3206 | + | if ((gE == "")) | |
3429 | 3207 | then 0 | |
3430 | 3208 | else { | |
3431 | - | let | |
3432 | - | let | |
3433 | - | let | |
3434 | - | if (if (if (if (if (( | |
3209 | + | let fP = split(gE, ":") | |
3210 | + | let dg = fP[0] | |
3211 | + | let gF = fP[1] | |
3212 | + | if (if (if (if (if ((dg == "06")) | |
3435 | 3213 | then true | |
3436 | - | else ( | |
3214 | + | else (dg == "07")) | |
3437 | 3215 | then true | |
3438 | - | else ( | |
3439 | - | then ( | |
3216 | + | else (dg == "08")) | |
3217 | + | then (gF != "") | |
3440 | 3218 | else false) | |
3441 | - | then (parseIntValue( | |
3219 | + | then (parseIntValue(gF) > 0) | |
3442 | 3220 | else false) | |
3443 | - | then parseIntValue(split( | |
3221 | + | then parseIntValue(split(aX[parseIntValue(dg)], "_")[aZ]) | |
3444 | 3222 | else 0 | |
3445 | 3223 | } | |
3446 | 3224 | } | |
3447 | - | let | |
3448 | - | let | |
3449 | - | let | |
3450 | - | $Tuple2(([StringEntry( | |
3225 | + | let gk = ap(this, B, ar, true) | |
3226 | + | let gG = gp(lG, gC, false, gk) | |
3227 | + | let nf = fF(gG) | |
3228 | + | $Tuple2(([StringEntry(gA, nd), StringEntry(hO, makeString_2C([ir[bm], ir[bn], ir[bo], nf], ":")), StringEntry(M(B), makeString([toString(gk[7]), toString(gk[8]), toString(gk[9]), toString(gk[10]), toString(gk[11])], "_"))] ++ lp), 0) | |
3451 | 3229 | } | |
3452 | 3230 | } | |
3453 | 3231 | } | |
3455 | 3233 | ||
3456 | 3234 | ||
3457 | 3235 | ||
3458 | - | @Callable( | |
3459 | - | func fortificateLand (Q, | |
3460 | - | let | |
3461 | - | if ((size( | |
3236 | + | @Callable(gN) | |
3237 | + | func fortificateLand (Q,ng) = { | |
3238 | + | let lp = ll(gN) | |
3239 | + | if ((size(gN.payments) != 0)) | |
3462 | 3240 | then throw("No payments required") | |
3463 | 3241 | else { | |
3464 | - | let c = toString( | |
3465 | - | let B = valueOrElse(getString( | |
3466 | - | let | |
3467 | - | let | |
3468 | - | let | |
3469 | - | let | |
3470 | - | let | |
3471 | - | let | |
3472 | - | let | |
3473 | - | let | |
3474 | - | let | |
3475 | - | let | |
3476 | - | let | |
3477 | - | let | |
3478 | - | let | |
3479 | - | let | |
3480 | - | let | |
3481 | - | let | |
3482 | - | let | |
3483 | - | let | |
3484 | - | let | |
3485 | - | let | |
3486 | - | let | |
3487 | - | let | |
3488 | - | $Tuple2(([StringEntry( | |
3489 | - | } | |
3490 | - | } | |
3491 | - | ||
3492 | - | ||
3493 | - | ||
3494 | - | @Callable( | |
3495 | - | func initDuckTourAttempt (B) = if (( | |
3242 | + | let c = toString(gN.originCaller) | |
3243 | + | let B = valueOrElse(getString(bM(c)), "") | |
3244 | + | let fK = ap(this, B, 0, false) | |
3245 | + | let nh = bE(Q) | |
3246 | + | let ni = split(valueOrElse(getString(nh), ":0_15:0_18:0"), "_") | |
3247 | + | let jv = value(assetInfo(fromBase58String(Q))) | |
3248 | + | let ic = (dK(split(jv.description, "_")[do]) / cL) | |
3249 | + | let id = valueOrElse(getInteger(bD(Q)), 0) | |
3250 | + | let ib = bC(Q) | |
3251 | + | let ig = ia(ib, ic, id) | |
3252 | + | let nj = split(ig[bh], "_") | |
3253 | + | let nk = parseIntValue(nj[bj]) | |
3254 | + | let nl = parseIntValue(nj[bk]) | |
3255 | + | let nm = split(ng, "_") | |
3256 | + | let nn = gw(ni, fA(ig[bg]), nk, nl, true, nil) | |
3257 | + | let gC = nn._1 | |
3258 | + | let no = nn._2 | |
3259 | + | let np = nn._3 | |
3260 | + | let nq = gw(nm, gC, no, np, false, fK) | |
3261 | + | let gG = nq._1 | |
3262 | + | let nr = nq._2 | |
3263 | + | let ns = nq._3 | |
3264 | + | let nf = fF(gG) | |
3265 | + | let kb = makeString([nj[bi], toString(nr), toString(ns), nj[bl]], "_") | |
3266 | + | $Tuple2(([StringEntry(nh, ng), StringEntry(ib, makeString_2C([ig[bd], ig[be], ig[bf], nf, kb], ":"))] ++ lp), 0) | |
3267 | + | } | |
3268 | + | } | |
3269 | + | ||
3270 | + | ||
3271 | + | ||
3272 | + | @Callable(gN) | |
3273 | + | func initDuckTourAttempt (B) = if ((gN.caller != dl)) | |
3496 | 3274 | then throw("Access denied") | |
3497 | 3275 | else { | |
3498 | - | let | |
3499 | - | let | |
3500 | - | let | |
3501 | - | let | |
3502 | - | let | |
3503 | - | let | |
3504 | - | let | |
3505 | - | $Tuple2([IntegerEntry(K(B), | |
3276 | + | let je = A(B) | |
3277 | + | let jf = aj(valueOrElse(getInteger(E(B)), 0)) | |
3278 | + | let ky = valueOrElse(getInteger(je), jf) | |
3279 | + | let nt = bO(B) | |
3280 | + | let jt = valueOrElse(getString(nt), aM) | |
3281 | + | let cj = valueOrElse(getInteger(dl, bU), 0) | |
3282 | + | let nu = (toString(cj) + "_T_0") | |
3283 | + | $Tuple2([IntegerEntry(K(B), ky), IntegerEntry(je, jf), StringEntry(L(B), jt), StringEntry(nt, nu)], nu) | |
3506 | 3284 | } | |
3507 | 3285 | ||
3508 | 3286 | ||
3509 | 3287 | ||
3510 | - | @Callable( | |
3288 | + | @Callable(gN) | |
3511 | 3289 | func breakAttempt () = { | |
3512 | - | let | |
3513 | - | let B = valueOrErrorMessage(getString( | |
3514 | - | let | |
3515 | - | let | |
3516 | - | if ((split( | |
3290 | + | let lp = ll(gN) | |
3291 | + | let B = valueOrErrorMessage(getString(bM(toString(gN.caller))), "You don't have a duck staked") | |
3292 | + | let nt = bO(B) | |
3293 | + | let jt = valueOrElse(getString(nt), aM) | |
3294 | + | if ((split(jt, "_")[br] != "T")) | |
3517 | 3295 | then throw("Your duck is not in the tournament") | |
3518 | 3296 | else { | |
3519 | - | let | |
3520 | - | let | |
3521 | - | $Tuple2((( | |
3522 | - | } | |
3523 | - | } | |
3524 | - | ||
3525 | - | ||
3526 | - | ||
3527 | - | @Callable( | |
3528 | - | func exitTournamentInternal (B) = if (( | |
3297 | + | let nv = getIntegerValue(K(B)) | |
3298 | + | let kE = getStringValue(L(B)) | |
3299 | + | $Tuple2(((lp :+ IntegerEntry(A(B), nv)) :+ StringEntry(nt, kE)), jt) | |
3300 | + | } | |
3301 | + | } | |
3302 | + | ||
3303 | + | ||
3304 | + | ||
3305 | + | @Callable(gN) | |
3306 | + | func exitTournamentInternal (B) = if ((gN.caller != this)) | |
3529 | 3307 | then throw("Access denied") | |
3530 | 3308 | else { | |
3531 | - | let | |
3532 | - | let | |
3533 | - | $Tuple2([IntegerEntry(A(B), | |
3309 | + | let nv = getIntegerValue(K(B)) | |
3310 | + | let kE = getStringValue(L(B)) | |
3311 | + | $Tuple2([IntegerEntry(A(B), nv), StringEntry(bO(B), kE)], false) | |
3534 | 3312 | } | |
3535 | 3313 | ||
3536 | 3314 | ||
3537 | 3315 | ||
3538 | - | @Callable( | |
3539 | - | func exitDeliveryInternal (B) = if (( | |
3316 | + | @Callable(gN) | |
3317 | + | func exitDeliveryInternal (B) = if ((gN.caller != this)) | |
3540 | 3318 | then throw("Access denied") | |
3541 | 3319 | else { | |
3542 | - | let | |
3543 | - | $Tuple2(( | |
3320 | + | let ml = kv(B, false, 0, 0) | |
3321 | + | $Tuple2((ml._1 ++ ml._2), false) | |
3544 | 3322 | } | |
3545 | 3323 | ||
3546 | 3324 | ||
3547 | 3325 | ||
3548 | - | @Callable( | |
3549 | - | func autoExitDelivery (B, | |
3326 | + | @Callable(gN) | |
3327 | + | func autoExitDelivery (B,iY,nw,kw) = if ((gN.caller != this)) | |
3550 | 3328 | then throw("Access denied") | |
3551 | 3329 | else { | |
3552 | - | let | |
3553 | - | $Tuple2( | |
3330 | + | let ml = kv(B, true, iY, kw) | |
3331 | + | $Tuple2(ml._1, ml._3) | |
3554 | 3332 | } | |
3555 | 3333 | ||
3556 | 3334 | ||
3557 | 3335 | ||
3558 | - | @Callable( | |
3559 | - | func breakDelivery () = $Tuple2( | |
3560 | - | ||
3561 | - | ||
3562 | - | ||
3563 | - | @Callable( | |
3564 | - | func prepareRobbery ( | |
3565 | - | let | |
3566 | - | if (!(sigVerify_8Kb( | |
3336 | + | @Callable(gN) | |
3337 | + | func breakDelivery () = $Tuple2(ll(gN), "breakDelivery") | |
3338 | + | ||
3339 | + | ||
3340 | + | ||
3341 | + | @Callable(gN) | |
3342 | + | func prepareRobbery (iT,iU) = { | |
3343 | + | let lp = ll(gN) | |
3344 | + | if (!(sigVerify_8Kb(iT, iU, ec))) | |
3567 | 3345 | then throw("signature does not match") | |
3568 | - | else if ((size( | |
3346 | + | else if ((size(gN.payments) != 1)) | |
3569 | 3347 | then throw("exactly 1 payment must be attached") | |
3570 | 3348 | else { | |
3571 | - | let | |
3572 | - | let | |
3573 | - | if (if (!(isDefined( | |
3349 | + | let lq = gN.payments[0] | |
3350 | + | let nx = lq.amount | |
3351 | + | if (if (!(isDefined(lq.assetId))) | |
3574 | 3352 | then true | |
3575 | - | else (value( | |
3353 | + | else (value(lq.assetId) != ds)) | |
3576 | 3354 | then throw("WLGOLD payments only!") | |
3577 | 3355 | else { | |
3578 | - | let | |
3579 | - | if ((size( | |
3356 | + | let fs = split(toUtf8String(iT), "|") | |
3357 | + | if ((2 > size(fs))) | |
3580 | 3358 | then throw("Wrong message format") | |
3581 | 3359 | else { | |
3582 | - | let B = | |
3583 | - | if ( | |
3360 | + | let B = fs[0] | |
3361 | + | if (kt(B)) | |
3584 | 3362 | then throw("prepareRobbery_checkTournament") | |
3585 | - | else if ( | |
3363 | + | else if (ku(B)) | |
3586 | 3364 | then throw("prepareRobbery_checkDelivery") | |
3587 | 3365 | else { | |
3588 | 3366 | let aB = ax(this, B)._1 | |
3589 | - | if ((aB > | |
3590 | - | then throw(((("Payment " + toString( | |
3367 | + | if ((aB > nx)) | |
3368 | + | then throw(((("Payment " + toString(nx)) + " < required ") + toString(aB))) | |
3591 | 3369 | else { | |
3592 | - | let | |
3370 | + | let ny = split(fs[1], "_") | |
3593 | 3371 | let aA = lastBlock.timestamp | |
3594 | 3372 | let aC = valueOrElse(getInteger(S(B)), 0) | |
3595 | 3373 | let aD = valueOrElse(getString(T(B)), "") | |
3599 | 3377 | else false) | |
3600 | 3378 | then throw(("You already started robbing, wait till " + toString(aE))) | |
3601 | 3379 | else { | |
3602 | - | func | |
3603 | - | let | |
3604 | - | let | |
3605 | - | if (( | |
3380 | + | func nz (eU,Q) = { | |
3381 | + | let nA = valueOrElse(getInteger(P(Q)), 0) | |
3382 | + | let nB = valueOrElse(getInteger(R(Q)), 0) | |
3383 | + | if ((nA > size(v))) | |
3606 | 3384 | then throw("Invalid state") | |
3607 | - | else if ((aA > | |
3385 | + | else if ((aA > nB)) | |
3608 | 3386 | then { | |
3609 | - | let | |
3610 | - | if ((0 >= | |
3611 | - | then | |
3387 | + | let nC = valueOrElse(getInteger(bw(Q)), 0) | |
3388 | + | if ((0 >= nC)) | |
3389 | + | then eU | |
3612 | 3390 | else { | |
3613 | - | let | |
3614 | - | let | |
3615 | - | let | |
3616 | - | let | |
3617 | - | let | |
3618 | - | let | |
3619 | - | if ((w > | |
3620 | - | then | |
3621 | - | else ( | |
3391 | + | let gu = value(assetInfo(fromBase58String(Q))) | |
3392 | + | let jz = split(gu.description, "_") | |
3393 | + | let jl = dK(jz[do]) | |
3394 | + | let nD = jk(Q, jl) | |
3395 | + | let gT = (aA - nC) | |
3396 | + | let jC = fraction(gT, (nD * jl), a) | |
3397 | + | if ((w > jC)) | |
3398 | + | then eU | |
3399 | + | else (eU :+ Q) | |
3622 | 3400 | } | |
3623 | 3401 | } | |
3624 | - | else | |
3402 | + | else eU | |
3625 | 3403 | } | |
3626 | 3404 | ||
3627 | - | let | |
3628 | - | let | |
3629 | - | let | |
3630 | - | let | |
3631 | - | func | |
3632 | - | then | |
3633 | - | else | |
3634 | - | ||
3635 | - | func | |
3636 | - | then | |
3405 | + | let nE = { | |
3406 | + | let eW = ny | |
3407 | + | let eX = size(eW) | |
3408 | + | let eY = nil | |
3409 | + | func eZ (fa,fb) = if ((fb >= eX)) | |
3410 | + | then fa | |
3411 | + | else nz(fa, eW[fb]) | |
3412 | + | ||
3413 | + | func fc (fa,fb) = if ((fb >= eX)) | |
3414 | + | then fa | |
3637 | 3415 | else throw("List size exceeds 10") | |
3638 | 3416 | ||
3639 | - | | |
3417 | + | fc(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eY, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
3640 | 3418 | } | |
3641 | - | if ((size( | |
3419 | + | if ((size(nE) == 0)) | |
3642 | 3420 | then throw("No candidates for robbery") | |
3643 | 3421 | else { | |
3644 | - | let | |
3645 | - | let Q = | |
3646 | - | $Tuple2(([IntegerEntry(P(Q), x), IntegerEntry(R(Q), (aA + v[x])), IntegerEntry(S(B), z), StringEntry(T(B), Q)] ++ | |
3422 | + | let nF = dV(size(nE), iT, iU) | |
3423 | + | let Q = nE[nF] | |
3424 | + | $Tuple2(([IntegerEntry(P(Q), x), IntegerEntry(R(Q), (aA + v[x])), IntegerEntry(S(B), z), StringEntry(T(B), Q)] ++ lp), Q) | |
3647 | 3425 | } | |
3648 | 3426 | } | |
3649 | 3427 | } | |
3655 | 3433 | ||
3656 | 3434 | ||
3657 | 3435 | ||
3658 | - | @Callable( | |
3659 | - | func robLand ( | |
3660 | - | let | |
3661 | - | if (!(sigVerify_8Kb( | |
3436 | + | @Callable(gN) | |
3437 | + | func robLand (iT,iU) = { | |
3438 | + | let lp = ll(gN) | |
3439 | + | if (!(sigVerify_8Kb(iT, iU, ec))) | |
3662 | 3440 | then throw("signature does not match") | |
3663 | 3441 | else { | |
3664 | - | let | |
3665 | - | let B = valueOrErrorMessage(getString( | |
3442 | + | let bQ = toString(gN.caller) | |
3443 | + | let B = valueOrErrorMessage(getString(bM(bQ)), "You don't have a duck staked") | |
3666 | 3444 | let aA = lastBlock.timestamp | |
3667 | - | $Tuple2(( | |
3668 | - | } | |
3669 | - | } | |
3670 | - | ||
3671 | - | ||
3672 | - | ||
3673 | - | @Callable( | |
3445 | + | $Tuple2((lp :+ IntegerEntry(N(B), aA)), 0) | |
3446 | + | } | |
3447 | + | } | |
3448 | + | ||
3449 | + | ||
3450 | + | ||
3451 | + | @Callable(gN) | |
3674 | 3452 | func acceptDelivery () = { | |
3675 | - | let | |
3676 | - | let | |
3677 | - | let B = valueOrErrorMessage(getString( | |
3678 | - | let | |
3679 | - | let | |
3680 | - | if (( | |
3681 | - | then throw(((("Delivery is not available, fund=" + | |
3453 | + | let lp = ll(gN) | |
3454 | + | let bQ = toString(gN.caller) | |
3455 | + | let B = valueOrErrorMessage(getString(bM(bQ)), "You don't have a duck staked") | |
3456 | + | let nG = valueOrElse(getInteger(di, bS), 0) | |
3457 | + | let kC = valueOrElse(getInteger(di, bT), 0) | |
3458 | + | if ((aP > (nG - kC))) | |
3459 | + | then throw(((("Delivery is not available, fund=" + dP(nG, 6)) + ", locked=") + dP(kC, 6))) | |
3682 | 3460 | else { | |
3683 | 3461 | let aA = lastBlock.timestamp | |
3684 | - | let | |
3685 | - | if (( | |
3686 | - | then throw(("Delivery is forbidden for your duck until " + toString( | |
3462 | + | let nH = valueOrElse(getInteger(U(B)), 0) | |
3463 | + | if ((nH > aA)) | |
3464 | + | then throw(("Delivery is forbidden for your duck until " + toString(nH))) | |
3687 | 3465 | else { | |
3688 | 3466 | let av = getIntegerValue(A(B)) | |
3689 | 3467 | if ((0 >= av)) | |
3690 | 3468 | then throw("You cannot accept delivery with zero health") | |
3691 | 3469 | else { | |
3692 | - | let | |
3693 | - | let | |
3694 | - | let | |
3695 | - | let | |
3696 | - | let | |
3697 | - | let | |
3698 | - | if (if (( | |
3699 | - | then ( | |
3470 | + | let kB = V(bQ) | |
3471 | + | let fU = valueOrElse(getInteger(kB), 0) | |
3472 | + | let nI = valueOrElse(getInteger(W(bQ)), 0) | |
3473 | + | let nJ = (aA / a) | |
3474 | + | let nK = valueOrElse(getInteger(dm, d(bQ)), 0) | |
3475 | + | let nL = (aR + (nK / aS)) | |
3476 | + | if (if ((fU >= nL)) | |
3477 | + | then (nI == nJ) | |
3700 | 3478 | else false) | |
3701 | - | then throw((("You already used " + toString( | |
3702 | - | else if ( | |
3479 | + | then throw((("You already used " + toString(nL)) + " delivery attempts for today")) | |
3480 | + | else if (kt(B)) | |
3703 | 3481 | then throw("acceptDelivery_checkTournament") | |
3704 | - | else if ( | |
3482 | + | else if (ku(B)) | |
3705 | 3483 | then throw("acceptDelivery_checkDelivery") | |
3706 | 3484 | else { | |
3707 | - | let | |
3708 | - | let | |
3709 | - | let | |
3710 | - | let | |
3711 | - | $Tuple2(([StringEntry(L(B), | |
3485 | + | let nM = dF(invoke(di, "updateDeliveryLocked", [(kC + aP)], nil)) | |
3486 | + | let nt = bO(B) | |
3487 | + | let jt = valueOrElse(getString(nt), aM) | |
3488 | + | let nN = (toString(aA) + "_D_0") | |
3489 | + | $Tuple2(([StringEntry(L(B), jt), StringEntry(nt, nN), IntegerEntry(kB, if ((nI != nJ)) | |
3712 | 3490 | then 0 | |
3713 | - | else | |
3491 | + | else fU)] ++ lp), $Tuple2(nN, nM)) | |
3714 | 3492 | } | |
3715 | 3493 | } | |
3716 | 3494 | } | |
3719 | 3497 | ||
3720 | 3498 | ||
3721 | 3499 | ||
3722 | - | @Callable( | |
3723 | - | func checkDeliveryCallback (B) = if (( | |
3500 | + | @Callable(gN) | |
3501 | + | func checkDeliveryCallback (B) = if ((gN.caller != dl)) | |
3724 | 3502 | then throw("Access denied") | |
3725 | - | else $Tuple2(nil, lu(B)) | |
3726 | - | ||
3727 | - | ||
3728 | - | ||
3729 | - | @Callable(gO) | |
3730 | - | func genTestREADONLY (iB,gL) = { | |
3731 | - | let oO = value(value(blockInfoByHeight(2827006)).vrf) | |
3732 | - | let jO = hj(toBigInt((oO + sha256(toBytes(iB))))) | |
3733 | - | $Tuple2(nil, hB(jO, gL, -1)) | |
3734 | - | } | |
3503 | + | else $Tuple2(nil, ku(B)) | |
3735 | 3504 | ||
3736 | 3505 |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 6 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | let a = 86400000 | |
5 | 5 | ||
6 | 6 | func b (c) = ("lastArbTimeUser_" + c) | |
7 | 7 | ||
8 | 8 | ||
9 | 9 | func d (c) = ("acresStakedAmountByUser_" + c) | |
10 | 10 | ||
11 | 11 | ||
12 | 12 | let e = 100000000 | |
13 | 13 | ||
14 | 14 | let f = 3200 | |
15 | 15 | ||
16 | 16 | let g = 4000 | |
17 | 17 | ||
18 | 18 | let h = 3 | |
19 | 19 | ||
20 | 20 | let i = 100000000 | |
21 | 21 | ||
22 | 22 | let j = 400 | |
23 | 23 | ||
24 | 24 | let k = ["Strength", "Accuracy", "Intellect", "Endurance", "Dexterity", "Level", "Health"] | |
25 | 25 | ||
26 | 26 | let l = 0 | |
27 | 27 | ||
28 | 28 | let m = 1 | |
29 | 29 | ||
30 | 30 | let n = 2 | |
31 | 31 | ||
32 | 32 | let o = 3 | |
33 | 33 | ||
34 | 34 | let p = 4 | |
35 | 35 | ||
36 | 36 | let q = 0 | |
37 | 37 | ||
38 | 38 | let r = 6 | |
39 | 39 | ||
40 | 40 | let s = 2 | |
41 | 41 | ||
42 | 42 | let t = 2 | |
43 | 43 | ||
44 | 44 | let u = 30 | |
45 | 45 | ||
46 | 46 | let v = [0, 600000, 900000, 43200000, 21600000] | |
47 | 47 | ||
48 | 48 | let w = 20000000 | |
49 | 49 | ||
50 | 50 | let x = 1 | |
51 | 51 | ||
52 | 52 | let y = 0 | |
53 | 53 | ||
54 | 54 | let z = 1 | |
55 | 55 | ||
56 | 56 | func A (B) = ("duckHealth_" + B) | |
57 | 57 | ||
58 | 58 | ||
59 | 59 | func C (B) = ("duckChars_" + B) | |
60 | 60 | ||
61 | 61 | ||
62 | 62 | func D (B) = ("duckXP_" + B) | |
63 | 63 | ||
64 | 64 | ||
65 | 65 | func E (B) = ("duckLevel_" + B) | |
66 | 66 | ||
67 | 67 | ||
68 | 68 | func F (B) = ("duckFreePoints_" + B) | |
69 | 69 | ||
70 | 70 | ||
71 | 71 | func G (B) = ("duckEquipment_" + B) | |
72 | 72 | ||
73 | 73 | ||
74 | 74 | func H (c) = ("userXP_" + c) | |
75 | 75 | ||
76 | 76 | ||
77 | 77 | func I (c) = ("userLevel_" + c) | |
78 | 78 | ||
79 | 79 | ||
80 | 80 | func J (c) = ("userFreePoints_" + c) | |
81 | 81 | ||
82 | 82 | ||
83 | 83 | func K (B) = ("savedHealth_" + B) | |
84 | 84 | ||
85 | 85 | ||
86 | 86 | func L (B) = ("savedLocation_" + B) | |
87 | 87 | ||
88 | 88 | ||
89 | 89 | func M (B) = ("duckBuffs_" + B) | |
90 | 90 | ||
91 | 91 | ||
92 | 92 | func N (B) = ("lastRobberyTime_" + B) | |
93 | 93 | ||
94 | 94 | ||
95 | 95 | func O (B) = ("lastRobberyCost_" + B) | |
96 | 96 | ||
97 | 97 | ||
98 | 98 | func P (Q) = ("landRobberyState_" + Q) | |
99 | 99 | ||
100 | 100 | ||
101 | 101 | func R (Q) = ("landCooldownETA_" + Q) | |
102 | 102 | ||
103 | 103 | ||
104 | 104 | func S (B) = ("duckRobberyState_" + B) | |
105 | 105 | ||
106 | 106 | ||
107 | 107 | func T (B) = ("lockedLandByDuck_" + B) | |
108 | 108 | ||
109 | 109 | ||
110 | 110 | func U (B) = ("deliveryDelayByDuck_" + B) | |
111 | 111 | ||
112 | 112 | ||
113 | 113 | func V (c) = ("userDeliveryCount_" + c) | |
114 | 114 | ||
115 | 115 | ||
116 | 116 | func W (c) = ("userLastDeliveryDay_" + c) | |
117 | 117 | ||
118 | 118 | ||
119 | 119 | let X = 10000 | |
120 | 120 | ||
121 | 121 | let Y = 10000 | |
122 | 122 | ||
123 | 123 | let Z = 2000 | |
124 | 124 | ||
125 | 125 | let aa = 100000 | |
126 | 126 | ||
127 | 127 | let ab = 1000000 | |
128 | 128 | ||
129 | 129 | let ac = 5000000 | |
130 | 130 | ||
131 | 131 | let ad = 10000 | |
132 | 132 | ||
133 | 133 | let ae = 1000000 | |
134 | 134 | ||
135 | 135 | let af = 1000000 | |
136 | 136 | ||
137 | 137 | let ag = 10000 | |
138 | 138 | ||
139 | 139 | func ah (ai) = fraction(f, pow(ai, 4, g, 4, 4, DOWN), e) | |
140 | 140 | ||
141 | 141 | ||
142 | 142 | func aj (ak) = (100 + ak) | |
143 | 143 | ||
144 | 144 | ||
145 | 145 | func al (am,an) = { | |
146 | 146 | let ao = ah(an) | |
147 | 147 | [ao, (h * (ao - am))] | |
148 | 148 | } | |
149 | 149 | ||
150 | 150 | ||
151 | 151 | func ap (aq,B,ar,as) = { | |
152 | 152 | let at = split(valueOrElse(getString(aq, C(B)), "0_0_0_0_0"), "_") | |
153 | 153 | let au = valueOrElse(getInteger(aq, E(B)), 0) | |
154 | 154 | let av = valueOrElse(getInteger(aq, A(B)), aj(au)) | |
155 | 155 | let aw = split(valueOrElse(getString(aq, M(B)), "0_0_0_0_0"), "_") | |
156 | 156 | ([parseIntValue(at[l]), parseIntValue(at[m]), parseIntValue(at[n]), parseIntValue(at[o]), parseIntValue(at[p]), au, av] ++ (if (as) | |
157 | 157 | then [ar, ar, ar, ar, ar] | |
158 | 158 | else [parseIntValue(aw[l]), parseIntValue(aw[m]), parseIntValue(aw[n]), parseIntValue(aw[o]), parseIntValue(aw[p])])) | |
159 | 159 | } | |
160 | 160 | ||
161 | 161 | ||
162 | 162 | func ax (aq,B) = { | |
163 | 163 | let ay = valueOrElse(getInteger(aq, O(B)), 0) | |
164 | 164 | let az = valueOrElse(getInteger(aq, N(B)), 0) | |
165 | 165 | let aA = lastBlock.timestamp | |
166 | 166 | let aB = max([i, (ay - (j * (aA - az)))]) | |
167 | 167 | let aC = valueOrElse(getInteger(aq, S(B)), 0) | |
168 | 168 | let aD = valueOrElse(getString(aq, T(B)), "") | |
169 | 169 | let aE = valueOrElse(getInteger(aq, R(aD)), 0) | |
170 | 170 | $Tuple5(aB, az, aC, aD, aE) | |
171 | 171 | } | |
172 | 172 | ||
173 | 173 | ||
174 | 174 | let aF = "LAND" | |
175 | 175 | ||
176 | 176 | let aG = "DUCK" | |
177 | 177 | ||
178 | 178 | let aH = "PRESALE" | |
179 | 179 | ||
180 | 180 | let aI = 6 | |
181 | 181 | ||
182 | - | let aJ = | |
183 | - | ||
184 | - | let aK = | |
185 | - | ||
186 | - | let aL = | |
187 | - | ||
188 | - | let aM = | |
189 | - | ||
190 | - | let aN = | |
191 | - | ||
192 | - | let aO = | |
193 | - | ||
194 | - | let aP = | |
195 | - | ||
196 | - | let aQ = | |
197 | - | ||
198 | - | let aR = | |
199 | - | ||
200 | - | let aS = | |
201 | - | ||
202 | - | let aT = | |
203 | - | ||
204 | - | let aU = [" | |
205 | - | ||
206 | - | let aV = | |
207 | - | ||
208 | - | let aW = | |
209 | - | ||
210 | - | let aX = [ | |
211 | - | ||
212 | - | let aY = | |
213 | - | ||
214 | - | let aZ = | |
215 | - | ||
216 | - | let ba = | |
217 | - | ||
218 | - | let bb = | |
182 | + | let aJ = 25 | |
183 | + | ||
184 | + | let aK = 3456000 | |
185 | + | ||
186 | + | let aL = 10000000000 | |
187 | + | ||
188 | + | let aM = "Africa_F_Africa" | |
189 | + | ||
190 | + | let aN = 39637 | |
191 | + | ||
192 | + | let aO = 10 | |
193 | + | ||
194 | + | let aP = 50000 | |
195 | + | ||
196 | + | let aQ = 600000 | |
197 | + | ||
198 | + | let aR = 1 | |
199 | + | ||
200 | + | let aS = 50000000 | |
201 | + | ||
202 | + | let aT = ["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"] | |
203 | + | ||
204 | + | let aU = ["Americas", "Europe", "Asia", "Africa", "Oceania"] | |
205 | + | ||
206 | + | let aV = 10000000 | |
207 | + | ||
208 | + | let aW = [15, 16, 17, 18, 19, 20] | |
209 | + | ||
210 | + | let aX = ["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_"] | |
211 | + | ||
212 | + | let aY = 6 | |
213 | + | ||
214 | + | let aZ = 8 | |
215 | + | ||
216 | + | let ba = 9 | |
217 | + | ||
218 | + | let bb = 10 | |
219 | 219 | ||
220 | 220 | let bc = 10 | |
221 | 221 | ||
222 | - | let bd = 10 | |
223 | - | ||
224 | - | let be = 0 | |
225 | - | ||
226 | - | let bf = 1 | |
227 | - | ||
228 | - | let bg = 2 | |
229 | - | ||
230 | - | let bh = 3 | |
231 | - | ||
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 (Q) = ("wh_" + Q) | |
272 | - | ||
273 | - | ||
274 | - | func bE (bv) = ("infraLevel_" + bv) | |
275 | - | ||
276 | - | ||
277 | - | func bF (Q) = ("fortifications_" + Q) | |
278 | - | ||
279 | - | ||
280 | - | func bG (bv) = ("duckCustomNameByAssetId_" + bv) | |
281 | - | ||
282 | - | ||
283 | - | func bH (c) = ("accountCustomNameByAddr_" + c) | |
284 | - | ||
285 | - | ||
286 | - | func bI (c) = ("accRefBy_" + c) | |
287 | - | ||
288 | - | ||
289 | - | func bJ (B) = ("onboardArtActivatedOnDuck_" + B) | |
290 | - | ||
291 | - | ||
292 | - | func bK (c) = ("onboardArtActivatedDuckBy_" + c) | |
293 | - | ||
294 | - | ||
295 | - | func bL (c) = ("accReferrals_" + c) | |
296 | - | ||
297 | - | ||
298 | - | func bM (bv) = ("duckOwner_" + bv) | |
299 | - | ||
300 | - | ||
301 | - | func bN (bC) = ("stakedDuckByOwner_" + bC) | |
302 | - | ||
303 | - | ||
304 | - | func bO (B) = ("backPack_" + B) | |
305 | - | ||
306 | - | ||
307 | - | func bP (B) = ("duckLocation_" + B) | |
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,B) = makeString(["%s%d%s__bestResultByTourAndDuck", toString(bX), B], "__") | |
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, "_") | |
222 | + | let bd = 0 | |
223 | + | ||
224 | + | let be = 1 | |
225 | + | ||
226 | + | let bf = 2 | |
227 | + | ||
228 | + | let bg = 3 | |
229 | + | ||
230 | + | let bh = 4 | |
231 | + | ||
232 | + | let bi = 0 | |
233 | + | ||
234 | + | let bj = 1 | |
235 | + | ||
236 | + | let bk = 2 | |
237 | + | ||
238 | + | let bl = 3 | |
239 | + | ||
240 | + | let bm = 0 | |
241 | + | ||
242 | + | let bn = 1 | |
243 | + | ||
244 | + | let bo = 2 | |
245 | + | ||
246 | + | let bp = 3 | |
247 | + | ||
248 | + | let bq = 0 | |
249 | + | ||
250 | + | let br = 1 | |
251 | + | ||
252 | + | let bs = 2 | |
253 | + | ||
254 | + | func bt (bu) = ("no_" + bu) | |
255 | + | ||
256 | + | ||
257 | + | func bv (bu) = ("lcna_" + bu) | |
258 | + | ||
259 | + | ||
260 | + | func bw (bu) = ("st_" + bu) | |
261 | + | ||
262 | + | ||
263 | + | func bx (by,bu) = makeString(["las", by, bu], "_") | |
264 | + | ||
265 | + | ||
266 | + | func bz (bA,bu,bB) = ((((("sttao_" + bA) + "_") + bu) + "_") + bB) | |
267 | + | ||
268 | + | ||
269 | + | func bC (Q) = ("wh_" + Q) | |
270 | + | ||
271 | + | ||
272 | + | func bD (bu) = ("infraLevel_" + bu) | |
273 | + | ||
274 | + | ||
275 | + | func bE (Q) = ("fortifications_" + Q) | |
276 | + | ||
277 | + | ||
278 | + | func bF (bu) = ("duckCustomNameByAssetId_" + bu) | |
279 | + | ||
280 | + | ||
281 | + | func bG (c) = ("accountCustomNameByAddr_" + c) | |
282 | + | ||
283 | + | ||
284 | + | func bH (c) = ("accRefBy_" + c) | |
285 | + | ||
286 | + | ||
287 | + | func bI (B) = ("onboardArtActivatedOnDuck_" + B) | |
288 | + | ||
289 | + | ||
290 | + | func bJ (c) = ("onboardArtActivatedDuckBy_" + c) | |
291 | + | ||
292 | + | ||
293 | + | func bK (c) = ("accReferrals_" + c) | |
294 | + | ||
295 | + | ||
296 | + | func bL (bu) = ("duckOwner_" + bu) | |
297 | + | ||
298 | + | ||
299 | + | func bM (bB) = ("stakedDuckByOwner_" + bB) | |
300 | + | ||
301 | + | ||
302 | + | func bN (B) = ("backPack_" + B) | |
303 | + | ||
304 | + | ||
305 | + | func bO (B) = ("duckLocation_" + B) | |
306 | + | ||
307 | + | ||
308 | + | func bP (bQ) = ("%s%s__userGwlReleaseTime__" + bQ) | |
309 | + | ||
310 | + | ||
311 | + | func bR () = "emergencyWarehouseProducts" | |
312 | + | ||
313 | + | ||
314 | + | let bS = "deliveryFund" | |
315 | + | ||
316 | + | let bT = "deliveryLocked" | |
317 | + | ||
318 | + | let bU = "%s__lastTourId" | |
319 | + | ||
320 | + | func bV (bW) = ("%s%d__tourStaticData__" + toString(bW)) | |
321 | + | ||
322 | + | ||
323 | + | func bX (bW) = ("%s%d__tourDynamicData__" + toString(bW)) | |
324 | + | ||
325 | + | ||
326 | + | func bY (bW,B) = makeString(["%s%d%s__bestResultByTourAndDuck", toString(bW), B], "__") | |
327 | + | ||
328 | + | ||
329 | + | let bZ = 0 | |
330 | + | ||
331 | + | let ca = 1 | |
332 | + | ||
333 | + | let cb = 6 | |
334 | + | ||
335 | + | let cc = 1 | |
336 | + | ||
337 | + | func cd (ce,bW) = { | |
338 | + | let cf = split(valueOrErrorMessage(getString(ce, bV(bW)), (("Error reading tournament " + toString(bW)) + " data")), "__") | |
339 | + | let cg = split_4C(valueOrErrorMessage(getString(ce, bX(bW)), (("Error reading tournament " + toString(bW)) + " data")), "__") | |
340 | + | [cf, cg] | |
341 | + | } | |
342 | + | ||
343 | + | ||
344 | + | func ch (ce,ci) = { | |
345 | + | let cj = valueOrElse(getInteger(ce, bU), 0) | |
346 | + | let ck = split(ci, "_") | |
349 | 347 | let aA = lastBlock.timestamp | |
350 | - | let | |
351 | - | let | |
352 | - | let | |
353 | - | if (if (if (( | |
354 | - | then (parseIntValue( | |
348 | + | let cl = cd(ce, cj) | |
349 | + | let cf = cl[bZ] | |
350 | + | let cg = cl[ca] | |
351 | + | if (if (if ((ck[br] == "T")) | |
352 | + | then (parseIntValue(ck[bq]) == cj) | |
355 | 353 | else false) | |
356 | - | then ( | |
354 | + | then (cg[cc] == "INPROGRESS") | |
357 | 355 | else false) | |
358 | - | then (parseIntValue( | |
356 | + | then (parseIntValue(cf[cb]) > aA) | |
359 | 357 | else false | |
360 | 358 | } | |
361 | 359 | ||
362 | 360 | ||
363 | - | func | |
364 | - | let | |
361 | + | func cm (ci) = { | |
362 | + | let ck = split(ci, "_") | |
365 | 363 | let aA = lastBlock.timestamp | |
366 | - | let | |
367 | - | let | |
368 | - | if (if (( | |
369 | - | then (( | |
364 | + | let cn = parseIntValue(ck[bq]) | |
365 | + | let co = parseIntValue(ck[bs]) | |
366 | + | if (if ((ck[br] == "D")) | |
367 | + | then ((cn + aQ) > aA) | |
370 | 368 | else false) | |
371 | - | then (3 >= | |
369 | + | then (3 >= co) | |
372 | 370 | else false | |
373 | 371 | } | |
374 | 372 | ||
375 | 373 | ||
376 | - | func | |
377 | - | let | |
378 | - | if (( | |
379 | - | then ( | |
374 | + | func cp (ci) = { | |
375 | + | let cq = split(ci, "_")[br] | |
376 | + | if ((cq != "T")) | |
377 | + | then (cq != "D") | |
380 | 378 | else false | |
381 | 379 | } | |
382 | 380 | ||
383 | 381 | ||
384 | - | func | |
385 | - | let | |
386 | - | let | |
382 | + | func cr (ce,ci) = { | |
383 | + | let cj = valueOrElse(getInteger(ce, bU), 0) | |
384 | + | let ck = split(ci, "_") | |
387 | 385 | let aA = lastBlock.timestamp | |
388 | - | let | |
389 | - | let | |
390 | - | let | |
391 | - | let | |
392 | - | if (( | |
386 | + | let cl = cd(ce, cj) | |
387 | + | let cf = cl[bZ] | |
388 | + | let cg = cl[ca] | |
389 | + | let cq = ck[br] | |
390 | + | if ((cq == "D")) | |
393 | 391 | then true | |
394 | - | else if (if (if (( | |
395 | - | then (parseIntValue( | |
392 | + | else if (if (if ((ck[br] == "T")) | |
393 | + | then (parseIntValue(ck[bq]) == cj) | |
396 | 394 | else false) | |
397 | - | then ( | |
395 | + | then (cg[cc] == "INPROGRESS") | |
398 | 396 | else false) | |
399 | - | then (parseIntValue( | |
397 | + | then (parseIntValue(cf[cb]) > aA) | |
400 | 398 | else false | |
401 | 399 | } | |
402 | 400 | ||
403 | 401 | ||
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 | - | ||
402 | + | func cs (ct) = (parseIntValue(ct[aY]) * aV) | |
403 | + | ||
404 | + | ||
405 | + | func cu (cv,cw,cx) = throw(((((("Cheat attempt: oldLoc=" + cv) + ", newLoc=") + cw) + ", case=") + toString(cx))) | |
406 | + | ||
407 | + | ||
408 | + | let cy = false | |
409 | 409 | ||
410 | 410 | let cz = false | |
411 | 411 | ||
412 | - | let cA = false | |
413 | - | ||
414 | - | let cB = 86400000 | |
415 | - | ||
416 | - | let cC = take(drop(this.bytes, 1), 1) | |
417 | - | ||
418 | - | let cD = { | |
419 | - | let cE = cC | |
420 | - | if ((base58'2W' == cE)) | |
412 | + | let cA = 86400000 | |
413 | + | ||
414 | + | let cB = take(drop(this.bytes, 1), 1) | |
415 | + | ||
416 | + | let cC = { | |
417 | + | let cD = cB | |
418 | + | if ((base58'2W' == cD)) | |
421 | 419 | then base58'9wc3LXNA4TEBsXyKtoLE9mrbDD7WMHXvXrCjZvabLAsi' | |
422 | - | else if ((base58'2T' == | |
420 | + | else if ((base58'2T' == cD)) | |
423 | 421 | then base58'6mWwf9mZBjVgkC54idpyaZLQfAosD914wT8fGf2iiY63' | |
424 | 422 | else throw("Unknown chain") | |
425 | 423 | } | |
426 | 424 | ||
427 | - | let | |
428 | - | let | |
429 | - | if ((base58'2W' == | |
425 | + | let cE = { | |
426 | + | let cD = cB | |
427 | + | if ((base58'2W' == cD)) | |
430 | 428 | then "3PQCuvFbvh4LkPUnrnU1z3jnbA1p9m3WNhv" | |
431 | - | else if ((base58'2T' == | |
429 | + | else if ((base58'2T' == cD)) | |
432 | 430 | then "3MumkGGztCKAXpWDqxkddofqXSUbqQkvSJy" | |
433 | 431 | else throw("Unknown chain") | |
434 | 432 | } | |
435 | 433 | ||
436 | - | let | |
437 | - | let | |
438 | - | if ((base58'2W' == | |
434 | + | let cF = { | |
435 | + | let cD = cB | |
436 | + | if ((base58'2W' == cD)) | |
439 | 437 | then 10000000000 | |
440 | - | else if ((base58'2T' == | |
438 | + | else if ((base58'2T' == cD)) | |
441 | 439 | then 100000000 | |
442 | 440 | else throw("Unknown chain") | |
443 | 441 | } | |
444 | 442 | ||
445 | - | let | |
446 | - | let | |
447 | - | if ((base58'2W' == | |
448 | - | then | |
449 | - | else if ((base58'2T' == | |
443 | + | let cG = { | |
444 | + | let cD = cB | |
445 | + | if ((base58'2W' == cD)) | |
446 | + | then cA | |
447 | + | else if ((base58'2T' == cD)) | |
450 | 448 | then 60000 | |
451 | 449 | else throw("Unknown chain") | |
452 | 450 | } | |
453 | 451 | ||
454 | - | let | |
455 | - | let | |
456 | - | if ((base58'2W' == | |
452 | + | let cH = { | |
453 | + | let cD = cB | |
454 | + | if ((base58'2W' == cD)) | |
457 | 455 | then 10800000 | |
458 | - | else if ((base58'2T' == | |
456 | + | else if ((base58'2T' == cD)) | |
459 | 457 | then 900000 | |
460 | 458 | else throw("Unknown chain") | |
461 | 459 | } | |
462 | 460 | ||
463 | - | let | |
464 | - | ||
465 | - | let | |
466 | - | ||
467 | - | let | |
468 | - | ||
469 | - | let | |
470 | - | ||
471 | - | let | |
472 | - | ||
473 | - | let | |
474 | - | ||
475 | - | let | |
476 | - | ||
477 | - | let | |
478 | - | ||
479 | - | let | |
480 | - | ||
481 | - | func | |
482 | - | ||
483 | - | ||
484 | - | let | |
485 | - | ||
486 | - | let | |
487 | - | ||
488 | - | let | |
489 | - | ||
490 | - | let | |
491 | - | ||
492 | - | let | |
493 | - | ||
494 | - | let | |
495 | - | ||
496 | - | func | |
497 | - | ||
498 | - | ||
499 | - | func | |
500 | - | ||
501 | - | ||
502 | - | func | |
503 | - | ||
504 | - | ||
505 | - | func | |
506 | - | ||
507 | - | ||
508 | - | let | |
509 | - | ||
510 | - | let | |
511 | - | ||
512 | - | let aq = df | |
513 | - | ||
514 | - | let | |
515 | - | ||
516 | - | let | |
517 | - | ||
518 | - | let | |
519 | - | ||
520 | - | let | |
521 | - | ||
522 | - | let | |
523 | - | ||
524 | - | let | |
525 | - | ||
526 | - | let | |
527 | - | ||
528 | - | let | |
529 | - | ||
530 | - | let | |
531 | - | ||
532 | - | let | |
533 | - | ||
534 | - | let | |
535 | - | ||
536 | - | let | |
537 | - | ||
538 | - | let | |
539 | - | ||
540 | - | let | |
541 | - | ||
542 | - | func | |
543 | - | ||
544 | - | ||
545 | - | func | |
546 | - | ||
547 | - | ||
548 | - | func | |
549 | - | ||
550 | - | ||
551 | - | func | |
552 | - | ||
553 | - | ||
554 | - | func | |
555 | - | ||
556 | - | ||
557 | - | func | |
558 | - | let | |
559 | - | if ($isInstanceOf( | |
461 | + | let cI = "__" | |
462 | + | ||
463 | + | let cJ = 1000000 | |
464 | + | ||
465 | + | let cK = 100000000 | |
466 | + | ||
467 | + | let cL = 25 | |
468 | + | ||
469 | + | let cM = 100 | |
470 | + | ||
471 | + | let cN = 225 | |
472 | + | ||
473 | + | let cO = 400 | |
474 | + | ||
475 | + | let cP = 625 | |
476 | + | ||
477 | + | let cQ = [0, 1, 2, 3, 4, 5] | |
478 | + | ||
479 | + | func cR (cS,cT) = valueOrErrorMessage(getString(cS, cT), makeString(["mandatory ", toString(cS), ".", cT, " is not defined"], "")) | |
480 | + | ||
481 | + | ||
482 | + | let cU = 1 | |
483 | + | ||
484 | + | let cV = 2 | |
485 | + | ||
486 | + | let cW = 3 | |
487 | + | ||
488 | + | let cX = 4 | |
489 | + | ||
490 | + | let cY = 7 | |
491 | + | ||
492 | + | let cZ = 8 | |
493 | + | ||
494 | + | func da () = "%s__restConfig" | |
495 | + | ||
496 | + | ||
497 | + | func db () = "%s__restAddr" | |
498 | + | ||
499 | + | ||
500 | + | func dc (dd) = split_4C(cR(dd, da()), cI) | |
501 | + | ||
502 | + | ||
503 | + | func de (df,dg) = valueOrErrorMessage(addressFromString(df[dg]), ("Rest cfg doesn't contain address at index " + toString(dg))) | |
504 | + | ||
505 | + | ||
506 | + | let dh = addressFromStringValue(valueOrElse(getString(this, db()), cE)) | |
507 | + | ||
508 | + | let df = dc(dh) | |
509 | + | ||
510 | + | let aq = de(df, cU) | |
511 | + | ||
512 | + | let di = de(df, cV) | |
513 | + | ||
514 | + | let dj = de(df, cW) | |
515 | + | ||
516 | + | let dk = de(df, cX) | |
517 | + | ||
518 | + | let dl = de(df, cY) | |
519 | + | ||
520 | + | let dm = de(df, cZ) | |
521 | + | ||
522 | + | let dn = 0 | |
523 | + | ||
524 | + | let do = 1 | |
525 | + | ||
526 | + | let dp = 2 | |
527 | + | ||
528 | + | let dq = 3 | |
529 | + | ||
530 | + | let dr = "wlg_assetId" | |
531 | + | ||
532 | + | let ds = valueOrErrorMessage(getBinary(dk, dr), "WLGOLD is not issued yet") | |
533 | + | ||
534 | + | let dt = "acresAssetId" | |
535 | + | ||
536 | + | let du = valueOrErrorMessage(getBinary(dm, dt), "ACRES is not issued yet") | |
537 | + | ||
538 | + | let dv = 2 | |
539 | + | ||
540 | + | func dw (cS) = ("finishBlockForAddr_" + cS) | |
541 | + | ||
542 | + | ||
543 | + | func dx () = "resTypesProportions" | |
544 | + | ||
545 | + | ||
546 | + | func dy (dz) = ("resTypesByContinent_" + dz) | |
547 | + | ||
548 | + | ||
549 | + | func dA (bB) = ("stakedLandsByOwner_" + bB) | |
550 | + | ||
551 | + | ||
552 | + | func dB (bB) = ("stakedPiecesByOwner_" + bB) | |
553 | + | ||
554 | + | ||
555 | + | func dC (dD) = { | |
556 | + | let cD = dD | |
557 | + | if ($isInstanceOf(cD, "String")) | |
560 | 558 | then { | |
561 | - | let | |
562 | - | | |
559 | + | let dE = cD | |
560 | + | dE | |
563 | 561 | } | |
564 | 562 | else throw("fail to cast into String") | |
565 | 563 | } | |
566 | 564 | ||
567 | 565 | ||
568 | - | func | |
569 | - | let | |
570 | - | if ($isInstanceOf( | |
566 | + | func dF (dD) = { | |
567 | + | let cD = dD | |
568 | + | if ($isInstanceOf(cD, "Int")) | |
571 | 569 | then { | |
572 | - | let | |
573 | - | | |
570 | + | let dG = cD | |
571 | + | dG | |
574 | 572 | } | |
575 | 573 | else throw("fail to cast into Int") | |
576 | 574 | } | |
577 | 575 | ||
578 | 576 | ||
579 | - | func | |
580 | - | let | |
581 | - | if ($isInstanceOf( | |
577 | + | func dH (dD) = { | |
578 | + | let cD = dD | |
579 | + | if ($isInstanceOf(cD, "List[Any]")) | |
582 | 580 | then { | |
583 | - | let | |
584 | - | | |
581 | + | let dI = cD | |
582 | + | dI | |
585 | 583 | } | |
586 | 584 | else throw("fail to cast into List[Any]") | |
587 | 585 | } | |
588 | 586 | ||
589 | 587 | ||
590 | - | func | |
591 | - | let | |
592 | - | if ($isInstanceOf( | |
588 | + | func dJ (dD) = { | |
589 | + | let cD = dD | |
590 | + | if ($isInstanceOf(cD, "Boolean")) | |
593 | 591 | then { | |
594 | - | let | |
595 | - | | |
592 | + | let dE = cD | |
593 | + | dE | |
596 | 594 | } | |
597 | 595 | else throw("fail to cast into Boolean") | |
598 | 596 | } | |
599 | 597 | ||
600 | 598 | ||
601 | - | func | |
602 | - | let | |
603 | - | if (("S" == | |
604 | - | then | |
605 | - | else if (("M" == | |
606 | - | then | |
607 | - | else if (("L" == | |
608 | - | then | |
609 | - | else if (("XL" == | |
610 | - | then | |
611 | - | else if (("XXL" == | |
612 | - | then | |
599 | + | func dK (dL) = { | |
600 | + | let cD = dL | |
601 | + | if (("S" == cD)) | |
602 | + | then cL | |
603 | + | else if (("M" == cD)) | |
604 | + | then cM | |
605 | + | else if (("L" == cD)) | |
606 | + | then cN | |
607 | + | else if (("XL" == cD)) | |
608 | + | then cO | |
609 | + | else if (("XXL" == cD)) | |
610 | + | then cP | |
613 | 611 | else throw("Unknown land size") | |
614 | 612 | } | |
615 | 613 | ||
616 | 614 | ||
617 | - | func | |
618 | - | ||
619 | - | ||
620 | - | func | |
621 | - | ||
622 | - | ||
623 | - | func | |
624 | - | ||
625 | - | ||
626 | - | func | |
627 | - | let | |
628 | - | let | |
629 | - | let | |
630 | - | (((toString(( | |
631 | - | } | |
632 | - | ||
633 | - | ||
634 | - | func | |
635 | - | let | |
636 | - | (toInt( | |
637 | - | } | |
638 | - | ||
639 | - | ||
640 | - | let | |
641 | - | let | |
642 | - | if ((base58'2W' == | |
615 | + | func dM (dE) = isDefined(parseInt(dE)) | |
616 | + | ||
617 | + | ||
618 | + | func dN () = "contractsBlocked" | |
619 | + | ||
620 | + | ||
621 | + | func dO (c) = ("lastTxIdByUser_" + c) | |
622 | + | ||
623 | + | ||
624 | + | func dP (dQ,dR) = { | |
625 | + | let dS = pow(10, 0, dR, 0, 0, DOWN) | |
626 | + | let dT = toString((dQ % dS)) | |
627 | + | let dU = drop(toString(dS), (1 + size(dT))) | |
628 | + | (((toString((dQ / dS)) + ".") + dU) + dT) | |
629 | + | } | |
630 | + | ||
631 | + | ||
632 | + | func dV (dW,dX,dY) = { | |
633 | + | let dZ = sha256((dX + dY)) | |
634 | + | (toInt(dZ) % dW) | |
635 | + | } | |
636 | + | ||
637 | + | ||
638 | + | let ea = { | |
639 | + | let cD = cB | |
640 | + | if ((base58'2W' == cD)) | |
643 | 641 | then addressFromStringValue("3PEktVux2RhchSN63DsDo4b4mz4QqzKSeDv") | |
644 | - | else if ((base58'2T' == | |
642 | + | else if ((base58'2T' == cD)) | |
645 | 643 | then this | |
646 | 644 | else throw("Unknown chain") | |
647 | 645 | } | |
648 | 646 | ||
649 | - | let | |
650 | - | let | |
651 | - | if ((base58'2W' == | |
647 | + | let eb = { | |
648 | + | let cD = cB | |
649 | + | if ((base58'2W' == cD)) | |
652 | 650 | then addressFromStringValue("3PDVuU45H7Eh5dmtNbnRNRStGwULA7NY6Hb") | |
653 | - | else if ((base58'2T' == | |
651 | + | else if ((base58'2T' == cD)) | |
654 | 652 | then this | |
655 | 653 | else throw("Unknown chain") | |
656 | 654 | } | |
657 | 655 | ||
658 | - | let | |
659 | - | let | |
660 | - | if ((base58'2W' == | |
661 | - | then if ( | |
656 | + | let ec = { | |
657 | + | let cD = cB | |
658 | + | if ((base58'2W' == cD)) | |
659 | + | then if (cy) | |
662 | 660 | then base58'CWsMtTZC5BjjoL4Q1ayW4Wwb1ehGACQB6DrKyPgotKfm' | |
663 | 661 | else base58'6LfPuKJjLgekmncBhMg2LZyMTNVzZBccXR28ySXm9uXD' | |
664 | - | else if ((base58'2T' == | |
662 | + | else if ((base58'2T' == cD)) | |
665 | 663 | then base58'6LfPuKJjLgekmncBhMg2LZyMTNVzZBccXR28ySXm9uXD' | |
666 | 664 | else throw("Unknown chain") | |
667 | 665 | } | |
668 | 666 | ||
669 | - | let | |
670 | - | ||
671 | - | let | |
672 | - | ||
673 | - | let | |
674 | - | ||
675 | - | let | |
676 | - | ||
677 | - | let | |
678 | - | ||
679 | - | let | |
680 | - | let | |
681 | - | if ((base58'2W' == | |
667 | + | let ed = base64'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==' | |
668 | + | ||
669 | + | let ee = 300000 | |
670 | + | ||
671 | + | let ef = 5000000 | |
672 | + | ||
673 | + | let eg = 50 | |
674 | + | ||
675 | + | let eh = 10000000 | |
676 | + | ||
677 | + | let ei = { | |
678 | + | let cD = cB | |
679 | + | if ((base58'2W' == cD)) | |
682 | 680 | then 252289527462 | |
683 | - | else if ((base58'2T' == | |
681 | + | else if ((base58'2T' == cD)) | |
684 | 682 | then 2522895274 | |
685 | 683 | else throw("Unknown chain") | |
686 | 684 | } | |
687 | 685 | ||
688 | - | let | |
689 | - | let | |
690 | - | if ((base58'2W' == | |
686 | + | let ej = { | |
687 | + | let cD = cB | |
688 | + | if ((base58'2W' == cD)) | |
691 | 689 | then 250000000 | |
692 | - | else if ((base58'2T' == | |
690 | + | else if ((base58'2T' == cD)) | |
693 | 691 | then 250000000 | |
694 | 692 | else throw("Unknown chain") | |
695 | 693 | } | |
696 | 694 | ||
697 | - | let | |
698 | - | ||
699 | - | let | |
700 | - | ||
701 | - | let | |
702 | - | ||
703 | - | let | |
704 | - | ||
705 | - | let | |
706 | - | ||
707 | - | let | |
708 | - | ||
709 | - | let | |
710 | - | ||
711 | - | let | |
712 | - | ||
713 | - | func | |
714 | - | ||
715 | - | ||
716 | - | func | |
717 | - | ||
718 | - | ||
719 | - | func | |
720 | - | ||
721 | - | ||
722 | - | func | |
723 | - | ||
724 | - | ||
725 | - | func | |
726 | - | ||
727 | - | ||
728 | - | func | |
729 | - | ||
730 | - | ||
731 | - | func | |
732 | - | ||
733 | - | ||
734 | - | func | |
735 | - | ||
736 | - | ||
737 | - | let | |
738 | - | ||
739 | - | let | |
740 | - | ||
741 | - | let | |
742 | - | ||
743 | - | let | |
744 | - | ||
745 | - | let | |
746 | - | ||
747 | - | let | |
748 | - | ||
749 | - | let | |
750 | - | ||
751 | - | func | |
752 | - | ||
753 | - | ||
754 | - | func | |
755 | - | let | |
756 | - | then ((( | |
757 | - | else -((((-( | |
758 | - | ( | |
759 | - | } | |
760 | - | ||
761 | - | ||
762 | - | func | |
763 | - | let | |
764 | - | if ((0 >= | |
695 | + | let ek = 2500000000 | |
696 | + | ||
697 | + | let el = toBigInt(5) | |
698 | + | ||
699 | + | let em = toBigInt(20) | |
700 | + | ||
701 | + | let en = toBigInt((20 * 20)) | |
702 | + | ||
703 | + | let eo = toBigInt(((20 * 20) * 20)) | |
704 | + | ||
705 | + | let ep = toBigInt((((20 * 20) * 20) * 20)) | |
706 | + | ||
707 | + | let eq = toBigInt(((((20 * 20) * 20) * 20) * 20)) | |
708 | + | ||
709 | + | let er = 500 | |
710 | + | ||
711 | + | func es () = "nextLandNum" | |
712 | + | ||
713 | + | ||
714 | + | func et (eu) = ("lcn_" + eu) | |
715 | + | ||
716 | + | ||
717 | + | func ev (ew) = ("la_" + ew) | |
718 | + | ||
719 | + | ||
720 | + | func ex (bu,bB) = ((("ilao_" + bu) + "_") + bB) | |
721 | + | ||
722 | + | ||
723 | + | func ey (ew) = ("lo_" + ew) | |
724 | + | ||
725 | + | ||
726 | + | func ez (eu) = ("duckByCustomName_" + eu) | |
727 | + | ||
728 | + | ||
729 | + | func eA (eu) = ("accountByCustomName_" + eu) | |
730 | + | ||
731 | + | ||
732 | + | func eB () = "oldiesList" | |
733 | + | ||
734 | + | ||
735 | + | let eC = 0 | |
736 | + | ||
737 | + | let eD = 1 | |
738 | + | ||
739 | + | let eE = 2 | |
740 | + | ||
741 | + | let eF = 0 | |
742 | + | ||
743 | + | let eG = 5 | |
744 | + | ||
745 | + | let eH = 6 | |
746 | + | ||
747 | + | let eI = 7 | |
748 | + | ||
749 | + | func eJ (ew,dL) = ((aF + ew) + dL) | |
750 | + | ||
751 | + | ||
752 | + | func eK (eL,eM) = { | |
753 | + | let eN = if ((eL >= 0)) | |
754 | + | then (((eL + eM) - 1) / eM) | |
755 | + | else -((((-(eL) + eM) - 1) / eM)) | |
756 | + | (eN * cK) | |
757 | + | } | |
758 | + | ||
759 | + | ||
760 | + | func eO (eP,eQ) = { | |
761 | + | let eR = (((((eQ[0] + eQ[1]) + eQ[2]) + eQ[3]) + eQ[4]) + eQ[5]) | |
762 | + | if ((0 >= eR)) | |
765 | 763 | then throw("Zero weights sum") | |
766 | 764 | else { | |
767 | - | let | |
768 | - | func | |
769 | - | ||
770 | - | let | |
771 | - | let | |
772 | - | let | |
773 | - | func | |
774 | - | then | |
775 | - | else | |
776 | - | ||
777 | - | func | |
778 | - | then | |
765 | + | let eS = fraction(eP, cJ, eR) | |
766 | + | func eT (eU,eV) = (eU :+ fraction(eV, eS, cJ)) | |
767 | + | ||
768 | + | let eW = eQ | |
769 | + | let eX = size(eW) | |
770 | + | let eY = nil | |
771 | + | func eZ (fa,fb) = if ((fb >= eX)) | |
772 | + | then fa | |
773 | + | else eT(fa, eW[fb]) | |
774 | + | ||
775 | + | func fc (fa,fb) = if ((fb >= eX)) | |
776 | + | then fa | |
779 | 777 | else throw("List size exceeds 6") | |
780 | 778 | ||
781 | - | | |
782 | - | } | |
783 | - | } | |
784 | - | ||
785 | - | ||
786 | - | func | |
787 | - | let | |
788 | - | if ((size( | |
779 | + | fc(eZ(eZ(eZ(eZ(eZ(eZ(eY, 0), 1), 2), 3), 4), 5), 6) | |
780 | + | } | |
781 | + | } | |
782 | + | ||
783 | + | ||
784 | + | func fd (eP) = { | |
785 | + | let fe = split(value(getString(dx())), "_") | |
786 | + | if ((size(fe) != aI)) | |
789 | 787 | then throw("Wrong proportions data") | |
790 | 788 | else { | |
791 | - | let | |
792 | - | eP | |
793 | - | } | |
794 | - | } | |
795 | - | ||
796 | - | ||
797 | - | func | |
798 | - | let | |
799 | - | func | |
800 | - | let | |
801 | - | if ((0 > | |
802 | - | then throw(((((("Not enough material idx=" + toString( | |
803 | - | else ( | |
789 | + | let ff = [parseIntValue(fe[0]), parseIntValue(fe[1]), parseIntValue(fe[2]), parseIntValue(fe[3]), parseIntValue(fe[4]), parseIntValue(fe[5])] | |
790 | + | eO(eP, ff) | |
791 | + | } | |
792 | + | } | |
793 | + | ||
794 | + | ||
795 | + | func fg (fh,fi,fj) = { | |
796 | + | let fk = fd(fj) | |
797 | + | func fl (eU,dg) = { | |
798 | + | let fm = (parseIntValue(fi[dg]) - fk[dg]) | |
799 | + | if ((0 > fm)) | |
800 | + | then throw(((((("Not enough material idx=" + toString(dg)) + ", you have ") + fi[dg]) + ", but need ") + toString(fk[dg]))) | |
801 | + | else (eU :+ toString(fm)) | |
804 | 802 | } | |
805 | 803 | ||
806 | - | if ( | |
804 | + | if (fh) | |
807 | 805 | then { | |
808 | - | let | |
809 | - | let | |
810 | - | let | |
811 | - | func | |
812 | - | then | |
813 | - | else | |
814 | - | ||
815 | - | func | |
816 | - | then | |
806 | + | let eW = cQ | |
807 | + | let eX = size(eW) | |
808 | + | let eY = nil | |
809 | + | func eZ (fa,fb) = if ((fb >= eX)) | |
810 | + | then fa | |
811 | + | else fl(fa, eW[fb]) | |
812 | + | ||
813 | + | func fc (fa,fb) = if ((fb >= eX)) | |
814 | + | then fa | |
817 | 815 | else throw("List size exceeds 6") | |
818 | 816 | ||
819 | - | | |
820 | - | } | |
821 | - | else | |
822 | - | } | |
823 | - | ||
824 | - | ||
825 | - | func | |
826 | - | then $Tuple2( | |
817 | + | fc(eZ(eZ(eZ(eZ(eZ(eZ(eY, 0), 1), 2), 3), 4), 5), 6) | |
818 | + | } | |
819 | + | else fi | |
820 | + | } | |
821 | + | ||
822 | + | ||
823 | + | func fn (fo,fp) = if ((fp == "")) | |
824 | + | then $Tuple2(fo, false) | |
827 | 825 | else { | |
828 | - | func | |
829 | - | let | |
830 | - | if ((size( | |
826 | + | func fq (eU,fr) = { | |
827 | + | let fs = split(fr, ",") | |
828 | + | if ((size(fs) != 2)) | |
831 | 829 | then throw("Incorrect format, should be index,amount") | |
832 | 830 | else { | |
833 | - | let | |
834 | - | if (if ((0 > | |
831 | + | let dg = parseIntValue(fs[0]) | |
832 | + | if (if ((0 > dg)) | |
835 | 833 | then true | |
836 | - | else ( | |
834 | + | else (dg >= size(aX))) | |
837 | 835 | then throw("Unknown product idx") | |
838 | 836 | else { | |
839 | - | let | |
840 | - | let | |
841 | - | if ((size( | |
842 | - | then throw((("You don't have " + | |
837 | + | let ft = parseIntValue(fs[1]) | |
838 | + | let fu = split(eU._1, (fs[0] + ":")) | |
839 | + | if ((size(fu) != 2)) | |
840 | + | then throw((("You don't have " + aT[dg]) + " equipped")) | |
843 | 841 | else { | |
844 | - | let | |
845 | - | let | |
842 | + | let fv = fu[1] | |
843 | + | let fw = if (dM(take(drop(fv, 1), 1))) | |
846 | 844 | then 2 | |
847 | 845 | else 1 | |
848 | - | let | |
849 | - | let | |
850 | - | let | |
851 | - | then ( | |
852 | - | else throw(((((("You equipped " + toString( | |
853 | - | $Tuple2((((( | |
846 | + | let fx = parseIntValue(take(fv, fw)) | |
847 | + | let fy = drop(fv, fw) | |
848 | + | let fz = if ((fx >= ft)) | |
849 | + | then (fx - ft) | |
850 | + | else throw(((((("You equipped " + toString(fx)) + " of ") + aT[dg]) + ", but tried to use ") + toString(ft))) | |
851 | + | $Tuple2(((((fu[0] + fs[0]) + ":") + toString(fz)) + fy), if (eU._2) | |
854 | 852 | then true | |
855 | - | else if (if (( | |
856 | - | then (8 >= | |
853 | + | else if (if ((dg >= 6)) | |
854 | + | then (8 >= dg) | |
857 | 855 | else false) | |
858 | - | then ( | |
856 | + | then (fz == 0) | |
859 | 857 | else false) | |
860 | 858 | } | |
861 | 859 | } | |
862 | 860 | } | |
863 | 861 | } | |
864 | 862 | ||
865 | - | let | |
866 | - | let | |
867 | - | let | |
868 | - | func | |
869 | - | then | |
870 | - | else | |
871 | - | ||
872 | - | func | |
873 | - | then | |
863 | + | let eW = split(fp, "_") | |
864 | + | let eX = size(eW) | |
865 | + | let eY = $Tuple2(fo, false) | |
866 | + | func eZ (fa,fb) = if ((fb >= eX)) | |
867 | + | then fa | |
868 | + | else fq(fa, eW[fb]) | |
869 | + | ||
870 | + | func fc (fa,fb) = if ((fb >= eX)) | |
871 | + | then fa | |
874 | 872 | else throw("List size exceeds 10") | |
875 | 873 | ||
876 | - | | |
874 | + | fc(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eY, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
877 | 875 | } | |
878 | 876 | ||
879 | 877 | ||
880 | - | func | |
881 | - | let | |
878 | + | func fA (fB) = { | |
879 | + | let fC = if ((fB == "")) | |
882 | 880 | then nil | |
883 | - | else split_4C( | |
884 | - | func | |
885 | - | let | |
886 | - | let | |
887 | - | then parseIntValue( | |
881 | + | else split_4C(fB, "_") | |
882 | + | func fD (eU,ct) = { | |
883 | + | let fE = (size(eU) / 8) | |
884 | + | let fx = if ((size(fC) > fE)) | |
885 | + | then parseIntValue(fC[fE]) | |
888 | 886 | else 0 | |
889 | - | ( | |
887 | + | (eU + toBytes(fx)) | |
890 | 888 | } | |
891 | 889 | ||
892 | - | let | |
893 | - | let | |
894 | - | let | |
895 | - | func | |
896 | - | then | |
897 | - | else | |
898 | - | ||
899 | - | func | |
900 | - | then | |
890 | + | let eW = aX | |
891 | + | let eX = size(eW) | |
892 | + | let eY = base58'' | |
893 | + | func eZ (fa,fb) = if ((fb >= eX)) | |
894 | + | then fa | |
895 | + | else fD(fa, eW[fb]) | |
896 | + | ||
897 | + | func fc (fa,fb) = if ((fb >= eX)) | |
898 | + | then fa | |
901 | 899 | else throw("List size exceeds 50") | |
902 | 900 | ||
903 | - | | |
904 | - | } | |
905 | - | ||
906 | - | ||
907 | - | func | |
908 | - | func | |
909 | - | let | |
910 | - | let | |
911 | - | ( | |
901 | + | fc(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eY, 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) | |
902 | + | } | |
903 | + | ||
904 | + | ||
905 | + | func fF (fG) = { | |
906 | + | func fH (eU,ct) = { | |
907 | + | let fE = size(eU) | |
908 | + | let fI = take(drop(fG, (8 * fE)), 8) | |
909 | + | (eU :+ toString(toInt(fI))) | |
912 | 910 | } | |
913 | 911 | ||
914 | 912 | makeString_2C({ | |
915 | - | let | |
916 | - | let | |
917 | - | let | |
918 | - | func | |
919 | - | then | |
920 | - | else | |
921 | - | ||
922 | - | func | |
923 | - | then | |
913 | + | let eW = aX | |
914 | + | let eX = size(eW) | |
915 | + | let eY = nil | |
916 | + | func eZ (fa,fb) = if ((fb >= eX)) | |
917 | + | then fa | |
918 | + | else fH(fa, eW[fb]) | |
919 | + | ||
920 | + | func fc (fa,fb) = if ((fb >= eX)) | |
921 | + | then fa | |
924 | 922 | else throw("List size exceeds 50") | |
925 | 923 | ||
926 | - | | |
924 | + | fc(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eY, 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) | |
927 | 925 | }, "_") | |
928 | 926 | } | |
929 | 927 | ||
930 | 928 | ||
931 | - | func | |
932 | - | func | |
933 | - | let | |
934 | - | then | |
929 | + | func fJ (fK,fL) = { | |
930 | + | func fM (eU,fE) = { | |
931 | + | let fN = if ((size(fK) > (7 + fE))) | |
932 | + | then fK[(7 + fE)] | |
935 | 933 | else 0 | |
936 | - | if ((parseIntValue( | |
937 | - | then throw(("Requirement not satisfied: " + k[ | |
934 | + | if ((parseIntValue(fL[fE]) > (fK[fE] + fN))) | |
935 | + | then throw(("Requirement not satisfied: " + k[fE])) | |
938 | 936 | else true | |
939 | 937 | } | |
940 | 938 | ||
941 | - | let | |
942 | - | let | |
943 | - | let | |
944 | - | func | |
945 | - | then | |
946 | - | else | |
947 | - | ||
948 | - | func | |
949 | - | then | |
939 | + | let eW = [0, 1, 2, 3, 4, 5, 6] | |
940 | + | let eX = size(eW) | |
941 | + | let eY = false | |
942 | + | func eZ (fa,fb) = if ((fb >= eX)) | |
943 | + | then fa | |
944 | + | else fM(fa, eW[fb]) | |
945 | + | ||
946 | + | func fc (fa,fb) = if ((fb >= eX)) | |
947 | + | then fa | |
950 | 948 | else throw("List size exceeds 7") | |
951 | 949 | ||
952 | - | | |
953 | - | } | |
954 | - | ||
955 | - | ||
956 | - | func | |
957 | - | let | |
958 | - | if ((size( | |
950 | + | fc(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eY, 0), 1), 2), 3), 4), 5), 6), 7) | |
951 | + | } | |
952 | + | ||
953 | + | ||
954 | + | func fO (fP,fC,fQ,fK,fR,fS) = { | |
955 | + | let fs = split(fP, ":") | |
956 | + | if ((size(fs) != 2)) | |
959 | 957 | then throw("Incorrect format, should be index:amount") | |
960 | - | else if (if (!( | |
961 | - | then (size( | |
958 | + | else if (if (!(fQ)) | |
959 | + | then (size(fs[0]) != 2) | |
962 | 960 | else false) | |
963 | 961 | then throw("Product idx should be 2 digits, zero padded") | |
964 | 962 | else { | |
965 | - | let | |
966 | - | let | |
967 | - | if (!(containsElement( | |
968 | - | then throw((("Product '" + | |
969 | - | else if ((0 > | |
963 | + | let fT = parseIntValue(fs[0]) | |
964 | + | let fU = parseIntValue(fs[1]) | |
965 | + | if (!(containsElement(aW, fT))) | |
966 | + | then throw((("Product '" + aT[fT]) + "' cannot be used for land defense")) | |
967 | + | else if ((0 > fU)) | |
970 | 968 | then throw("Count can't be negative") | |
971 | - | else if (( | |
972 | - | then throw(((("Can't put more than " + toString(u)) + " of ") + | |
973 | - | else if (( | |
974 | - | then $Tuple3( | |
969 | + | else if ((fU > u)) | |
970 | + | then throw(((("Can't put more than " + toString(u)) + " of ") + aT[fT])) | |
971 | + | else if ((fU == 0)) | |
972 | + | then $Tuple3(fC, fR, fS) | |
975 | 973 | else { | |
976 | - | let | |
977 | - | let | |
978 | - | let | |
979 | - | let | |
980 | - | if (if (!( | |
981 | - | then ( | |
974 | + | let fV = take(fC, (8 * fT)) | |
975 | + | let fx = toInt(take(drop(fC, (8 * fT)), 8)) | |
976 | + | let fy = drop(fC, (8 * (fT + 1))) | |
977 | + | let ct = split(aX[fT], "_") | |
978 | + | if (if (!(fQ)) | |
979 | + | then (fU > fx) | |
982 | 980 | else false) | |
983 | - | then throw(((((("You have " + toString( | |
981 | + | then throw(((((("You have " + toString(fx)) + " of ") + aT[fT]) + ", but tried to use ") + toString(fU))) | |
984 | 982 | else { | |
985 | - | let | |
986 | - | then fK | |
983 | + | let fz = if (if (!(fQ)) | |
984 | + | then fJ(fK, split(ct[ba], ",")) | |
987 | 985 | else false) | |
988 | - | then ( | |
989 | - | else ( | |
990 | - | let | |
991 | - | $Tuple3((( | |
986 | + | then (fx - fU) | |
987 | + | else (fx + fU) | |
988 | + | let fW = (eK(fz, bc) - eK(fx, bc)) | |
989 | + | $Tuple3(((fV + toBytes(fz)) + fy), (fR + fW), (fS - fW)) | |
992 | 990 | } | |
993 | 991 | } | |
994 | 992 | } | |
995 | 993 | } | |
996 | 994 | ||
997 | 995 | ||
998 | - | func | |
999 | - | let | |
1000 | - | if ((size( | |
996 | + | func fX (fP,fC,fQ,fY,fZ,ga,fK) = { | |
997 | + | let fs = split(fP, ":") | |
998 | + | if ((size(fs) != 2)) | |
1001 | 999 | then throw("Incorrect format, should be index:amount") | |
1002 | - | else if (if (!( | |
1003 | - | then (size( | |
1000 | + | else if (if (!(fQ)) | |
1001 | + | then (size(fs[0]) != 2) | |
1004 | 1002 | else false) | |
1005 | 1003 | then throw("Product idx should be 2 digits, zero padded") | |
1006 | 1004 | else { | |
1007 | - | let | |
1008 | - | let | |
1009 | - | if (if ((0 > | |
1005 | + | let fT = parseIntValue(fs[0]) | |
1006 | + | let fU = parseIntValue(fs[1]) | |
1007 | + | if (if ((0 > fT)) | |
1010 | 1008 | then true | |
1011 | - | else ( | |
1009 | + | else (fT >= size(aX))) | |
1012 | 1010 | then throw("Unknown product idx") | |
1013 | - | else if ((0 > | |
1011 | + | else if ((0 > fU)) | |
1014 | 1012 | then throw("Count can't be negative") | |
1015 | - | else if (( | |
1016 | - | then throw(((("Can't put more than " + toString(u)) + " of ") + | |
1017 | - | else if (( | |
1018 | - | then $Tuple2( | |
1013 | + | else if ((fU > u)) | |
1014 | + | then throw(((("Can't put more than " + toString(u)) + " of ") + aT[fT])) | |
1015 | + | else if ((fU == 0)) | |
1016 | + | then $Tuple2(fC, false) | |
1019 | 1017 | else { | |
1020 | - | let | |
1021 | - | let | |
1022 | - | let | |
1023 | - | let | |
1024 | - | if (if (!( | |
1025 | - | then ( | |
1018 | + | let fV = take(fC, (8 * fT)) | |
1019 | + | let fx = toInt(take(drop(fC, (8 * fT)), 8)) | |
1020 | + | let fy = drop(fC, (8 * (fT + 1))) | |
1021 | + | let ct = split(aX[fT], "_") | |
1022 | + | if (if (!(fQ)) | |
1023 | + | then (fU > fx) | |
1026 | 1024 | else false) | |
1027 | - | then throw(((((("You have " + toString( | |
1025 | + | then throw(((((("You have " + toString(fx)) + " of ") + aT[fT]) + ", but tried to use ") + toString(fU))) | |
1028 | 1026 | else { | |
1029 | - | let | |
1030 | - | then fK | |
1027 | + | let gb = if (if (!(fQ)) | |
1028 | + | then fJ(fK, split(ct[ba], ",")) | |
1031 | 1029 | else false) | |
1032 | 1030 | then { | |
1033 | - | let | |
1034 | - | if (( | |
1031 | + | let gc = ct[bb] | |
1032 | + | if ((gc == "")) | |
1035 | 1033 | then throw("Item cannot be equipped") | |
1036 | 1034 | else { | |
1037 | - | let | |
1038 | - | let | |
1039 | - | if (( | |
1035 | + | let gd = parseIntValue(gc) | |
1036 | + | let ge = (gd / 100) | |
1037 | + | if ((fY != ge)) | |
1040 | 1038 | then throw("Segment incompatible") | |
1041 | 1039 | else { | |
1042 | - | let | |
1043 | - | if (( | |
1040 | + | let gf = ((gd % 100) / 10) | |
1041 | + | if ((fZ != gf)) | |
1044 | 1042 | then throw("Slot incompatible") | |
1045 | 1043 | else { | |
1046 | - | let | |
1047 | - | if (if (( | |
1048 | - | then ( | |
1044 | + | let gg = (gd % 10) | |
1045 | + | if (if ((ga != 0)) | |
1046 | + | then (gg > 1) | |
1049 | 1047 | else false) | |
1050 | 1048 | then throw("Big items should occupy slot 0") | |
1051 | - | else ( | |
1049 | + | else (gg > 1) | |
1052 | 1050 | } | |
1053 | 1051 | } | |
1054 | 1052 | } | |
1055 | 1053 | } | |
1056 | 1054 | else false | |
1057 | - | $Tuple2((( | |
1058 | - | then | |
1059 | - | else -( | |
1055 | + | $Tuple2(((fV + toBytes((fx + (if (fQ) | |
1056 | + | then fU | |
1057 | + | else -(fU))))) + fy), gb) | |
1060 | 1058 | } | |
1061 | 1059 | } | |
1062 | 1060 | } | |
1063 | 1061 | } | |
1064 | 1062 | ||
1065 | 1063 | ||
1066 | - | func | |
1064 | + | func gh (gi,gj,fQ,fY,fZ,gk) = if ((gi != "")) | |
1067 | 1065 | then { | |
1068 | - | let | |
1069 | - | if ((size( | |
1066 | + | let gl = split(gi, ",") | |
1067 | + | if ((size(gl) > t)) | |
1070 | 1068 | then throw("Wrong slots format") | |
1071 | 1069 | else { | |
1072 | - | let | |
1073 | - | let | |
1074 | - | then | |
1070 | + | let gm = gl[0] | |
1071 | + | let gn = if ((size(gl) > 1)) | |
1072 | + | then gl[1] | |
1075 | 1073 | else "" | |
1076 | - | if (if (( | |
1077 | - | then ( | |
1074 | + | if (if ((gm == "")) | |
1075 | + | then (gn == "") | |
1078 | 1076 | else false) | |
1079 | - | then | |
1077 | + | then gj | |
1080 | 1078 | else { | |
1081 | - | let | |
1082 | - | then | |
1083 | - | else $Tuple2( | |
1084 | - | if (( | |
1085 | - | then if ( | |
1079 | + | let go = if ((gm != "")) | |
1080 | + | then fX(gm, gj, fQ, fY, fZ, 0, gk) | |
1081 | + | else $Tuple2(gj, false) | |
1082 | + | if ((gn != "")) | |
1083 | + | then if (go._2) | |
1086 | 1084 | then throw("Big item already occupies slot") | |
1087 | - | else | |
1088 | - | else | |
1085 | + | else fX(gn, go._1, fQ, fY, fZ, 1, gk)._1 | |
1086 | + | else go._1 | |
1089 | 1087 | } | |
1090 | 1088 | } | |
1091 | 1089 | } | |
1092 | - | else | |
1093 | - | ||
1094 | - | ||
1095 | - | func | |
1096 | - | func | |
1097 | - | let | |
1098 | - | let | |
1099 | - | if ((size( | |
1090 | + | else gj | |
1091 | + | ||
1092 | + | ||
1093 | + | func gp (gq,gr,fQ,gk) = { | |
1094 | + | func fY (eU,gs) = { | |
1095 | + | let fE = eU._1 | |
1096 | + | let fZ = split(gs, ";") | |
1097 | + | if ((size(fZ) != s)) | |
1100 | 1098 | then throw("Wrong segment format") | |
1101 | 1099 | else { | |
1102 | - | let | |
1103 | - | let | |
1104 | - | if (if (( | |
1105 | - | then ( | |
1100 | + | let gt = fZ[0] | |
1101 | + | let gu = fZ[1] | |
1102 | + | if (if ((gt == "")) | |
1103 | + | then (gu == "") | |
1106 | 1104 | else false) | |
1107 | - | then $Tuple2(( | |
1105 | + | then $Tuple2((fE + 1), eU._2) | |
1108 | 1106 | else { | |
1109 | - | let | |
1110 | - | $Tuple2(( | |
1107 | + | let gv = gh(gt, eU._2, fQ, fE, 0, gk) | |
1108 | + | $Tuple2((fE + 1), gh(gu, gv, fQ, fE, 1, gk)) | |
1111 | 1109 | } | |
1112 | 1110 | } | |
1113 | 1111 | } | |
1114 | 1112 | ||
1115 | - | ( let | |
1116 | - | let | |
1117 | - | let | |
1118 | - | func | |
1119 | - | then | |
1120 | - | else | |
1121 | - | ||
1122 | - | func | |
1123 | - | then | |
1113 | + | ( let eW = gq | |
1114 | + | let eX = size(eW) | |
1115 | + | let eY = $Tuple2(0, gr) | |
1116 | + | func eZ (fa,fb) = if ((fb >= eX)) | |
1117 | + | then fa | |
1118 | + | else fY(fa, eW[fb]) | |
1119 | + | ||
1120 | + | func fc (fa,fb) = if ((fb >= eX)) | |
1121 | + | then fa | |
1124 | 1122 | else throw("List size exceeds 6") | |
1125 | 1123 | ||
1126 | - | | |
1127 | - | } | |
1128 | - | ||
1129 | - | ||
1130 | - | func | |
1124 | + | fc(eZ(eZ(eZ(eZ(eZ(eZ(eY, 0), 1), 2), 3), 4), 5), 6))._2 | |
1125 | + | } | |
1126 | + | ||
1127 | + | ||
1128 | + | func gw (gq,gr,fR,fS,fQ,fK) = if ((3 > size(gq))) | |
1131 | 1129 | then throw("At least duck, mines and traps parts are required") | |
1132 | 1130 | else { | |
1133 | - | func | |
1134 | - | let | |
1135 | - | if (( | |
1136 | - | then $Tuple4(( | |
1131 | + | func fY (eU,gs) = { | |
1132 | + | let fE = eU._1 | |
1133 | + | if ((fE == 0)) | |
1134 | + | then $Tuple4((fE + 1), eU._2, eU._3, eU._4) | |
1137 | 1135 | else { | |
1138 | - | let | |
1139 | - | $Tuple4(( | |
1136 | + | let gx = fO(gs, eU._2, fQ, fK, eU._3, eU._4) | |
1137 | + | $Tuple4((fE + 1), gx._1, gx._2, gx._3) | |
1140 | 1138 | } | |
1141 | 1139 | } | |
1142 | 1140 | ||
1143 | - | let | |
1144 | - | let | |
1145 | - | let | |
1146 | - | let | |
1147 | - | func | |
1148 | - | then | |
1149 | - | else | |
1150 | - | ||
1151 | - | func | |
1152 | - | then | |
1141 | + | let gy = { | |
1142 | + | let eW = gq | |
1143 | + | let eX = size(eW) | |
1144 | + | let eY = $Tuple4(0, gr, fR, fS) | |
1145 | + | func eZ (fa,fb) = if ((fb >= eX)) | |
1146 | + | then fa | |
1147 | + | else fY(fa, eW[fb]) | |
1148 | + | ||
1149 | + | func fc (fa,fb) = if ((fb >= eX)) | |
1150 | + | then fa | |
1153 | 1151 | else throw("List size exceeds 10") | |
1154 | 1152 | ||
1155 | - | | |
1156 | - | } | |
1157 | - | $Tuple3( | |
1153 | + | fc(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eY, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
1154 | + | } | |
1155 | + | $Tuple3(gy._2, gy._3, gy._4) | |
1158 | 1156 | } | |
1159 | 1157 | ||
1160 | 1158 | ||
1161 | - | func | |
1162 | - | let | |
1163 | - | let | |
1164 | - | let | |
1165 | - | let | |
1166 | - | let ar = if (( | |
1159 | + | func gz (B) = { | |
1160 | + | let gA = G(B) | |
1161 | + | let gB = split(valueOrElse(getString(gA), ",;,_,;,_,;,_,;,_,;,_,;,"), "_") | |
1162 | + | let gC = gp(gB, ed, true, nil) | |
1163 | + | let gD = split(gB[q], ";")[1] | |
1164 | + | let ar = if ((gD == "")) | |
1167 | 1165 | then 0 | |
1168 | 1166 | else { | |
1169 | - | let | |
1170 | - | if (( | |
1167 | + | let gE = split(gD, ",")[0] | |
1168 | + | if ((gE == "")) | |
1171 | 1169 | then 0 | |
1172 | 1170 | else { | |
1173 | - | let | |
1174 | - | let | |
1175 | - | let | |
1176 | - | if (if (if (if (if (( | |
1171 | + | let fP = split(gE, ":") | |
1172 | + | let dg = fP[0] | |
1173 | + | let gF = fP[1] | |
1174 | + | if (if (if (if (if ((dg == "06")) | |
1177 | 1175 | then true | |
1178 | - | else ( | |
1176 | + | else (dg == "07")) | |
1179 | 1177 | then true | |
1180 | - | else ( | |
1181 | - | then ( | |
1178 | + | else (dg == "08")) | |
1179 | + | then (gF != "") | |
1182 | 1180 | else false) | |
1183 | - | then (parseIntValue( | |
1181 | + | then (parseIntValue(gF) > 0) | |
1184 | 1182 | else false) | |
1185 | - | then parseIntValue(split( | |
1183 | + | then parseIntValue(split(aX[parseIntValue(dg)], "_")[aZ]) | |
1186 | 1184 | else 0 | |
1187 | 1185 | } | |
1188 | 1186 | } | |
1189 | - | let | |
1190 | - | let | |
1191 | - | ( | |
1192 | - | } | |
1193 | - | ||
1194 | - | ||
1195 | - | func | |
1187 | + | let gk = ap(this, B, ar, true) | |
1188 | + | let gG = gp(gB, gC, false, gk) | |
1189 | + | (gG == gG) | |
1190 | + | } | |
1191 | + | ||
1192 | + | ||
1193 | + | func gH (gI,gJ,gK,gL) = if ((size(gI) != aI)) | |
1196 | 1194 | then throw("Wrong proportions data") | |
1197 | 1195 | else { | |
1198 | - | func | |
1199 | - | let | |
1200 | - | if ((0 > | |
1201 | - | then throw(((((((("Panic! Pieces of type=" + toString( | |
1202 | - | else ( | |
1203 | - | } | |
1204 | - | ||
1205 | - | let | |
1206 | - | let | |
1207 | - | let | |
1208 | - | func | |
1209 | - | then | |
1210 | - | else | |
1211 | - | ||
1212 | - | func | |
1213 | - | then | |
1196 | + | func gM (eU,gN) = { | |
1197 | + | let fm = (parseIntValue(gI[gN]) + ((gL * gJ[gN]) * gK)) | |
1198 | + | if ((0 > fm)) | |
1199 | + | then throw(((((((("Panic! Pieces of type=" + toString(gN)) + ", sign=") + toString(gL)) + ", terrainCounts[i]=") + toString(gJ[gN])) + ", landSizeIndex=") + toString(gK))) | |
1200 | + | else (eU :+ toString(fm)) | |
1201 | + | } | |
1202 | + | ||
1203 | + | let eW = cQ | |
1204 | + | let eX = size(eW) | |
1205 | + | let eY = nil | |
1206 | + | func eZ (fa,fb) = if ((fb >= eX)) | |
1207 | + | then fa | |
1208 | + | else gM(fa, eW[fb]) | |
1209 | + | ||
1210 | + | func fc (fa,fb) = if ((fb >= eX)) | |
1211 | + | then fa | |
1214 | 1212 | else throw("List size exceeds 6") | |
1215 | 1213 | ||
1216 | - | | |
1214 | + | fc(eZ(eZ(eZ(eZ(eZ(eZ(eY, 0), 1), 2), 3), 4), 5), 6) | |
1217 | 1215 | } | |
1218 | 1216 | ||
1219 | 1217 | ||
1220 | - | func | |
1221 | - | let | |
1222 | - | makeString(gI | |
1223 | - | } | |
1224 | - | ||
1225 | - | ||
1226 | - | func | |
1227 | - | ||
1228 | - | ||
1229 | - | func | |
1230 | - | func | |
1231 | - | let | |
1232 | - | ( | |
1218 | + | func gO (gJ,gK,gL) = { | |
1219 | + | let gI = split(valueOrElse(getString(dx()), "0_0_0_0_0_0"), "_") | |
1220 | + | makeString(gH(gI, gJ, gK, gL), "_") | |
1221 | + | } | |
1222 | + | ||
1223 | + | ||
1224 | + | func gP (gQ) = [(size(split(gQ, "A")) - 1), (size(split(gQ, "B")) - 1), (size(split(gQ, "C")) - 1), (size(split(gQ, "D")) - 1), (size(split(gQ, "E")) - 1), (size(split(gQ, "F")) - 1)] | |
1225 | + | ||
1226 | + | ||
1227 | + | func gR (gS,gJ,gT,gK,gU) = { | |
1228 | + | func gV (eU,gN) = { | |
1229 | + | let gW = ((fraction(gT, gU, a) * gJ[gN]) * gK) | |
1230 | + | (eU :+ toString((parseIntValue(gS[gN]) + gW))) | |
1233 | 1231 | } | |
1234 | 1232 | ||
1235 | - | let | |
1236 | - | let | |
1237 | - | let | |
1238 | - | let | |
1239 | - | func | |
1240 | - | then | |
1241 | - | else | |
1242 | - | ||
1243 | - | func | |
1244 | - | then | |
1233 | + | let ff = { | |
1234 | + | let eW = cQ | |
1235 | + | let eX = size(eW) | |
1236 | + | let eY = nil | |
1237 | + | func eZ (fa,fb) = if ((fb >= eX)) | |
1238 | + | then fa | |
1239 | + | else gV(fa, eW[fb]) | |
1240 | + | ||
1241 | + | func fc (fa,fb) = if ((fb >= eX)) | |
1242 | + | then fa | |
1245 | 1243 | else throw("List size exceeds 6") | |
1246 | 1244 | ||
1247 | - | | |
1245 | + | fc(eZ(eZ(eZ(eZ(eZ(eZ(eY, 0), 1), 2), 3), 4), 5), 6) | |
1248 | 1246 | } | |
1249 | - | makeString( | |
1250 | - | } | |
1251 | - | ||
1252 | - | ||
1253 | - | func | |
1254 | - | func | |
1255 | - | let | |
1256 | - | $Tuple2(( | |
1247 | + | makeString(ff, "_") | |
1248 | + | } | |
1249 | + | ||
1250 | + | ||
1251 | + | func gX (gJ,gT,gK,gU) = { | |
1252 | + | func gV (eU,gN) = { | |
1253 | + | let gW = ((fraction(gT, gU, a) * gJ[gN]) * gK) | |
1254 | + | $Tuple2((eU._1 :+ gW), (eU._2 + gW)) | |
1257 | 1255 | } | |
1258 | 1256 | ||
1259 | - | let | |
1260 | - | let | |
1261 | - | let | |
1262 | - | func | |
1263 | - | then | |
1264 | - | else | |
1265 | - | ||
1266 | - | func | |
1267 | - | then | |
1257 | + | let eW = cQ | |
1258 | + | let eX = size(eW) | |
1259 | + | let eY = $Tuple2(nil, 0) | |
1260 | + | func eZ (fa,fb) = if ((fb >= eX)) | |
1261 | + | then fa | |
1262 | + | else gV(fa, eW[fb]) | |
1263 | + | ||
1264 | + | func fc (fa,fb) = if ((fb >= eX)) | |
1265 | + | then fa | |
1268 | 1266 | else throw("List size exceeds 6") | |
1269 | 1267 | ||
1270 | - | | |
1271 | - | } | |
1272 | - | ||
1273 | - | ||
1274 | - | func | |
1275 | - | let | |
1276 | - | let | |
1277 | - | if (( | |
1278 | - | then $Tuple2(makeString( | |
1279 | - | else if (( | |
1268 | + | fc(eZ(eZ(eZ(eZ(eZ(eZ(eY, 0), 1), 2), 3), 4), 5), 6) | |
1269 | + | } | |
1270 | + | ||
1271 | + | ||
1272 | + | func gY (gZ,ha,hb,hc) = { | |
1273 | + | let hd = hb._1 | |
1274 | + | let he = hb._2 | |
1275 | + | if ((he == 0)) | |
1276 | + | then $Tuple2(makeString(gZ, "_"), makeString(ha, "_")) | |
1277 | + | else if ((hc >= he)) | |
1280 | 1278 | then { | |
1281 | - | func | |
1282 | - | ||
1283 | - | let | |
1284 | - | let | |
1285 | - | let | |
1286 | - | let | |
1287 | - | func | |
1288 | - | then | |
1289 | - | else | |
1290 | - | ||
1291 | - | func | |
1292 | - | then | |
1279 | + | func hf (eU,gN) = (eU :+ toString((parseIntValue(gZ[gN]) + hd[gN]))) | |
1280 | + | ||
1281 | + | let ff = { | |
1282 | + | let eW = cQ | |
1283 | + | let eX = size(eW) | |
1284 | + | let eY = nil | |
1285 | + | func eZ (fa,fb) = if ((fb >= eX)) | |
1286 | + | then fa | |
1287 | + | else hf(fa, eW[fb]) | |
1288 | + | ||
1289 | + | func fc (fa,fb) = if ((fb >= eX)) | |
1290 | + | then fa | |
1293 | 1291 | else throw("List size exceeds 6") | |
1294 | 1292 | ||
1295 | - | | |
1293 | + | fc(eZ(eZ(eZ(eZ(eZ(eZ(eY, 0), 1), 2), 3), 4), 5), 6) | |
1296 | 1294 | } | |
1297 | - | $Tuple2(makeString( | |
1295 | + | $Tuple2(makeString(ff, "_"), makeString(ha, "_")) | |
1298 | 1296 | } | |
1299 | 1297 | else { | |
1300 | - | func | |
1301 | - | let | |
1302 | - | $Tuple2(( | |
1298 | + | func hg (eU,gN) = { | |
1299 | + | let hh = fraction(hd[gN], hc, he) | |
1300 | + | $Tuple2((eU._1 :+ toString((parseIntValue(gZ[gN]) + hh))), (eU._2 :+ toString(((parseIntValue(ha[gN]) + hd[gN]) - hh)))) | |
1303 | 1301 | } | |
1304 | 1302 | ||
1305 | - | let | |
1306 | - | let | |
1307 | - | let | |
1308 | - | let | |
1309 | - | func | |
1310 | - | then | |
1311 | - | else | |
1312 | - | ||
1313 | - | func | |
1314 | - | then | |
1303 | + | let ff = { | |
1304 | + | let eW = cQ | |
1305 | + | let eX = size(eW) | |
1306 | + | let eY = $Tuple2(nil, nil) | |
1307 | + | func eZ (fa,fb) = if ((fb >= eX)) | |
1308 | + | then fa | |
1309 | + | else hg(fa, eW[fb]) | |
1310 | + | ||
1311 | + | func fc (fa,fb) = if ((fb >= eX)) | |
1312 | + | then fa | |
1315 | 1313 | else throw("List size exceeds 6") | |
1316 | 1314 | ||
1317 | - | | |
1315 | + | fc(eZ(eZ(eZ(eZ(eZ(eZ(eY, 0), 1), 2), 3), 4), 5), 6) | |
1318 | 1316 | } | |
1319 | - | $Tuple2(makeString( | |
1317 | + | $Tuple2(makeString(ff._1, "_"), makeString(ff._2, "_")) | |
1320 | 1318 | } | |
1321 | 1319 | } | |
1322 | 1320 | ||
1323 | 1321 | ||
1324 | - | func hj (hk) = if ((hk >= toBigInt(0))) | |
1325 | - | then hk | |
1326 | - | else -(hk) | |
1327 | - | ||
1328 | - | ||
1329 | - | let hl = [[35, 18, 30, 7, 6, 24], [29, 18, 29, 7, 8, 29], [6, 18, 29, 8, 30, 29], [6, 28, 6, 48, 26, 6], [24, 18, 6, 30, 30, 12]] | |
1330 | - | ||
1331 | - | let hm = [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] | |
1332 | - | ||
1333 | - | let hn = ["A", "B", "C", "D", "E", "F"] | |
1334 | - | ||
1335 | - | let ho = 10 | |
1336 | - | ||
1337 | - | func hp (eV,hq) = (eV + parseIntValue(hq)) | |
1338 | - | ||
1339 | - | ||
1340 | - | func hr (hs,ht) = if ((hs == 0)) | |
1341 | - | then throw("maxRand should be non-zero") | |
1342 | - | else { | |
1343 | - | let hu = toBigInt(hs) | |
1344 | - | $Tuple2(toInt((ht % hu)), (ht / hu)) | |
1345 | - | } | |
1346 | - | ||
1347 | - | ||
1348 | - | func hv (hw,hx,hy) = { | |
1349 | - | func hz (eV,hq) = if (eV._1) | |
1350 | - | then eV | |
1351 | - | else { | |
1352 | - | let hA = ((eV._3 - hq) - hy) | |
1353 | - | if ((0 > hA)) | |
1354 | - | then $Tuple3(true, eV._2, 0) | |
1355 | - | else $Tuple3(false, (eV._2 + 1), hA) | |
1356 | - | } | |
1357 | - | ||
1358 | - | let fg = { | |
1359 | - | let eX = hw | |
1360 | - | let eY = size(eX) | |
1361 | - | let eZ = $Tuple3(false, 0, hx) | |
1362 | - | func fa (fb,fc) = if ((fc >= eY)) | |
1363 | - | then fb | |
1364 | - | else hz(fb, eX[fc]) | |
1365 | - | ||
1366 | - | func fd (fb,fc) = if ((fc >= eY)) | |
1367 | - | then fb | |
1368 | - | else throw("List size exceeds 6") | |
1369 | - | ||
1370 | - | fd(fa(fa(fa(fa(fa(fa(eZ, 0), 1), 2), 3), 4), 5), 6) | |
1371 | - | } | |
1372 | - | fg._2 | |
1373 | - | } | |
1374 | - | ||
1375 | - | ||
1376 | - | func hB (hC,gL,hD) = { | |
1377 | - | func hE (hF,hG) = { | |
1378 | - | let fy = split(valueOrElse(getString(dz(hG)), "0_0_0_0_0_0"), "_") | |
1379 | - | let hH = { | |
1380 | - | let eX = fy | |
1381 | - | let eY = size(eX) | |
1382 | - | let eZ = 0 | |
1383 | - | func fa (fb,fc) = if ((fc >= eY)) | |
1384 | - | then fb | |
1385 | - | else hp(fb, eX[fc]) | |
1386 | - | ||
1387 | - | func fd (fb,fc) = if ((fc >= eY)) | |
1388 | - | then fb | |
1389 | - | else throw("List size exceeds 6") | |
1390 | - | ||
1391 | - | fd(fa(fa(fa(fa(fa(fa(eZ, 0), 1), 2), 3), 4), 5), 6) | |
1392 | - | } | |
1393 | - | $Tuple2((hF._1 :+ hH), (hF._2 + hH)) | |
1394 | - | } | |
1395 | - | ||
1396 | - | let hI = { | |
1397 | - | let eX = aV | |
1398 | - | let eY = size(eX) | |
1399 | - | let eZ = $Tuple2(nil, 0) | |
1400 | - | func fa (fb,fc) = if ((fc >= eY)) | |
1401 | - | then fb | |
1402 | - | else hE(fb, eX[fc]) | |
1403 | - | ||
1404 | - | func fd (fb,fc) = if ((fc >= eY)) | |
1405 | - | then fb | |
1406 | - | else throw("List size exceeds 5") | |
1407 | - | ||
1408 | - | fd(fa(fa(fa(fa(fa(eZ, 0), 1), 2), 3), 4), 5) | |
1409 | - | } | |
1410 | - | let hJ = hI._1 | |
1411 | - | let eQ = hI._2 | |
1412 | - | let hK = max(hJ) | |
1413 | - | let hL = ((hK * aJ) - eQ) | |
1414 | - | let hM = (hL / (ho * aJ)) | |
1415 | - | let hN = if (if ((hD >= 0)) | |
1416 | - | then (aJ > hD) | |
1417 | - | else false) | |
1418 | - | then $Tuple2(hD, hC) | |
1419 | - | else if ((hL == 0)) | |
1420 | - | then hr(aJ, hC) | |
1421 | - | else { | |
1422 | - | let hO = hr((hL + (hM * aJ)), hC) | |
1423 | - | let fg = hO._1 | |
1424 | - | let hP = hO._2 | |
1425 | - | func hQ (eV,hq) = (eV :+ (hK - hq)) | |
1426 | - | ||
1427 | - | let hR = { | |
1428 | - | let eX = hJ | |
1429 | - | let eY = size(eX) | |
1430 | - | let eZ = nil | |
1431 | - | func hS (fb,fc) = if ((fc >= eY)) | |
1432 | - | then fb | |
1433 | - | else hQ(fb, eX[fc]) | |
1434 | - | ||
1435 | - | func hT (fb,fc) = if ((fc >= eY)) | |
1436 | - | then fb | |
1437 | - | else throw("List size exceeds 6") | |
1438 | - | ||
1439 | - | hT(hS(hS(hS(hS(hS(hS(eZ, 0), 1), 2), 3), 4), 5), 6) | |
1440 | - | } | |
1441 | - | $Tuple2(hv(hR, fg, hM), hP) | |
1442 | - | } | |
1443 | - | let hU = hN._1 | |
1444 | - | let hV = hN._2 | |
1445 | - | let hW = hl[hU] | |
1446 | - | let hX = split(valueOrElse(getString(dz(aV[hU])), "0_0_0_0_0_0"), "_") | |
1447 | - | func hY (eV,hq) = (eV :+ parseIntValue(hq)) | |
1448 | - | ||
1449 | - | let hZ = { | |
1450 | - | let eX = hX | |
1451 | - | let eY = size(eX) | |
1452 | - | let eZ = nil | |
1453 | - | func hS (fb,fc) = if ((fc >= eY)) | |
1454 | - | then fb | |
1455 | - | else hY(fb, eX[fc]) | |
1456 | - | ||
1457 | - | func hT (fb,fc) = if ((fc >= eY)) | |
1458 | - | then fb | |
1459 | - | else throw("List size exceeds 6") | |
1460 | - | ||
1461 | - | hT(hS(hS(hS(hS(hS(hS(eZ, 0), 1), 2), 3), 4), 5), 6) | |
1462 | - | } | |
1463 | - | let ia = hJ[hU] | |
1464 | - | func ib (hF,ic) = { | |
1465 | - | func id (eV,fF) = (eV :+ ((hF._2[fF] * 120) - (hW[fF] * hF._3))) | |
1466 | - | ||
1467 | - | let ie = { | |
1468 | - | let eX = cR | |
1469 | - | let eY = size(eX) | |
1470 | - | let eZ = nil | |
1471 | - | func if (fb,fc) = if ((fc >= eY)) | |
1472 | - | then fb | |
1473 | - | else id(fb, eX[fc]) | |
1474 | - | ||
1475 | - | func ig (fb,fc) = if ((fc >= eY)) | |
1476 | - | then fb | |
1477 | - | else throw("List size exceeds 6") | |
1478 | - | ||
1479 | - | ig(if(if(if(if(if(if(eZ, 0), 1), 2), 3), 4), 5), 6) | |
1480 | - | } | |
1481 | - | let ih = max(ie) | |
1482 | - | func ii (eV,hq) = { | |
1483 | - | let dF = (ih - hq) | |
1484 | - | $Tuple2((eV._1 :+ dF), (eV._2 + dF)) | |
1485 | - | } | |
1486 | - | ||
1487 | - | let ij = { | |
1488 | - | let eX = ie | |
1489 | - | let eY = size(eX) | |
1490 | - | let eZ = $Tuple2(nil, 0) | |
1491 | - | func ik (fb,fc) = if ((fc >= eY)) | |
1492 | - | then fb | |
1493 | - | else ii(fb, eX[fc]) | |
1494 | - | ||
1495 | - | func il (fb,fc) = if ((fc >= eY)) | |
1496 | - | then fb | |
1497 | - | else throw("List size exceeds 6") | |
1498 | - | ||
1499 | - | il(ik(ik(ik(ik(ik(ik(eZ, 0), 1), 2), 3), 4), 5), 6) | |
1500 | - | } | |
1501 | - | let im = ij._1 | |
1502 | - | let in = ij._2 | |
1503 | - | let io = (in / (ho * aI)) | |
1504 | - | let ip = if ((in == 0)) | |
1505 | - | then hr(aI, hF._4) | |
1506 | - | else { | |
1507 | - | let iq = hr((in + (io * aI)), hF._4) | |
1508 | - | let fg = iq._1 | |
1509 | - | let hP = iq._2 | |
1510 | - | $Tuple2(hv(im, fg, io), hP) | |
1511 | - | } | |
1512 | - | let dh = ip._1 | |
1513 | - | let ir = ip._2 | |
1514 | - | func is (eV,fF) = (eV :+ (hF._2[fF] + (if ((fF == dh)) | |
1515 | - | then gL | |
1516 | - | else 0))) | |
1517 | - | ||
1518 | - | let it = { | |
1519 | - | let eX = cR | |
1520 | - | let eY = size(eX) | |
1521 | - | let eZ = nil | |
1522 | - | func iu (fb,fc) = if ((fc >= eY)) | |
1523 | - | then fb | |
1524 | - | else is(fb, eX[fc]) | |
1525 | - | ||
1526 | - | func iv (fb,fc) = if ((fc >= eY)) | |
1527 | - | then fb | |
1528 | - | else throw("List size exceeds 6") | |
1529 | - | ||
1530 | - | iv(iu(iu(iu(iu(iu(iu(eZ, 0), 1), 2), 3), 4), 5), 6) | |
1531 | - | } | |
1532 | - | $Tuple4((hF._1 + hn[dh]), it, (hF._3 + gL), ir) | |
1533 | - | } | |
1534 | - | ||
1535 | - | let fn = { | |
1536 | - | let eX = hm | |
1537 | - | let eY = size(eX) | |
1538 | - | let eZ = $Tuple4("", hZ, ia, hV) | |
1539 | - | func if (fb,fc) = if ((fc >= eY)) | |
1540 | - | then fb | |
1541 | - | else ib(fb, eX[fc]) | |
1542 | - | ||
1543 | - | func ig (fb,fc) = if ((fc >= eY)) | |
1544 | - | then fb | |
1545 | - | else throw("List size exceeds 25") | |
1546 | - | ||
1547 | - | ig(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(eZ, 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) | |
1548 | - | } | |
1549 | - | $Tuple2(hU, fn._1) | |
1550 | - | } | |
1551 | - | ||
1552 | - | ||
1553 | - | let iw = [[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]] | |
1554 | - | ||
1555 | - | func ix (dH,iy) = { | |
1556 | - | let hA = toInt((dH % en)) | |
1557 | - | let iz = if ((iy[0] > hA)) | |
1322 | + | func hi (hj) = if ((hj >= toBigInt(0))) | |
1323 | + | then hj | |
1324 | + | else -(hj) | |
1325 | + | ||
1326 | + | ||
1327 | + | let hk = [[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]] | |
1328 | + | ||
1329 | + | func hl (dG,hm) = { | |
1330 | + | let hn = toInt((dG % em)) | |
1331 | + | let ho = if ((hm[0] > hn)) | |
1558 | 1332 | then "A" | |
1559 | - | else if (( | |
1333 | + | else if ((hm[1] > hn)) | |
1560 | 1334 | then "B" | |
1561 | - | else if (( | |
1335 | + | else if ((hm[2] > hn)) | |
1562 | 1336 | then "C" | |
1563 | - | else if (( | |
1337 | + | else if ((hm[3] > hn)) | |
1564 | 1338 | then "D" | |
1565 | - | else if (( | |
1339 | + | else if ((hm[4] > hn)) | |
1566 | 1340 | then "E" | |
1567 | 1341 | else "F" | |
1568 | - | | |
1569 | - | } | |
1570 | - | ||
1571 | - | ||
1572 | - | func | |
1573 | - | let | |
1574 | - | func | |
1575 | - | ||
1576 | - | let | |
1577 | - | let | |
1578 | - | let | |
1579 | - | let | |
1580 | - | func | |
1581 | - | then | |
1582 | - | else | |
1583 | - | ||
1584 | - | func | |
1585 | - | then | |
1342 | + | ho | |
1343 | + | } | |
1344 | + | ||
1345 | + | ||
1346 | + | func hp (hq,hr) = { | |
1347 | + | let hs = hk[hr] | |
1348 | + | func ht (eU,eV) = $Tuple2((((((eU._1 + hl(eU._2, hs)) + hl((eU._2 / em), hs)) + hl((eU._2 / en), hs)) + hl((eU._2 / eo), hs)) + hl((eU._2 / ep), hs)), (eU._2 / eq)) | |
1349 | + | ||
1350 | + | let gy = { | |
1351 | + | let eW = [1, 2, 3, 4, 5] | |
1352 | + | let eX = size(eW) | |
1353 | + | let eY = $Tuple2("", (hq / el)) | |
1354 | + | func eZ (fa,fb) = if ((fb >= eX)) | |
1355 | + | then fa | |
1356 | + | else ht(fa, eW[fb]) | |
1357 | + | ||
1358 | + | func fc (fa,fb) = if ((fb >= eX)) | |
1359 | + | then fa | |
1586 | 1360 | else throw("List size exceeds 5") | |
1587 | 1361 | ||
1588 | - | | |
1362 | + | fc(eZ(eZ(eZ(eZ(eZ(eY, 0), 1), 2), 3), 4), 5) | |
1589 | 1363 | } | |
1590 | - | gz._1 | |
1591 | - | } | |
1592 | - | ||
1593 | - | ||
1594 | - | func iF (iG,gL) = { | |
1595 | - | func iH (eV,dF) = { | |
1596 | - | let fF = eV._2 | |
1597 | - | let hq = parseIntValue(dF) | |
1598 | - | let hk = if ((hq == 0)) | |
1364 | + | gy._1 | |
1365 | + | } | |
1366 | + | ||
1367 | + | ||
1368 | + | let hu = [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] | |
1369 | + | ||
1370 | + | let hv = ["A", "B", "C", "D", "E", "F"] | |
1371 | + | ||
1372 | + | func hw (hx,gK) = { | |
1373 | + | func hy (eU,dE) = { | |
1374 | + | let fE = eU._2 | |
1375 | + | let hz = parseIntValue(dE) | |
1376 | + | let hj = if ((hz == 0)) | |
1599 | 1377 | then 0 | |
1600 | - | else if (( | |
1601 | - | then ( | |
1602 | - | else if (( | |
1378 | + | else if ((hz >= (4 * gK))) | |
1379 | + | then (hz / gK) | |
1380 | + | else if ((hz > (3 * gK))) | |
1603 | 1381 | then 3 | |
1604 | - | else ((( | |
1605 | - | $Tuple3(( | |
1382 | + | else (((hz - 1) / gK) + 1) | |
1383 | + | $Tuple3((eU._1 :+ hj), (eU._2 + 1), (eU._3 + hj)) | |
1606 | 1384 | } | |
1607 | 1385 | ||
1608 | - | let | |
1609 | - | let | |
1610 | - | let | |
1611 | - | let | |
1612 | - | func | |
1613 | - | then | |
1614 | - | else | |
1615 | - | ||
1616 | - | func | |
1617 | - | then | |
1386 | + | let gy = { | |
1387 | + | let eW = hx | |
1388 | + | let eX = size(eW) | |
1389 | + | let eY = $Tuple3(nil, 0, 0) | |
1390 | + | func eZ (fa,fb) = if ((fb >= eX)) | |
1391 | + | then fa | |
1392 | + | else hy(fa, eW[fb]) | |
1393 | + | ||
1394 | + | func fc (fa,fb) = if ((fb >= eX)) | |
1395 | + | then fa | |
1618 | 1396 | else throw("List size exceeds 6") | |
1619 | 1397 | ||
1620 | - | | |
1398 | + | fc(eZ(eZ(eZ(eZ(eZ(eZ(eY, 0), 1), 2), 3), 4), 5), 6) | |
1621 | 1399 | } | |
1622 | - | let | |
1623 | - | let | |
1624 | - | let | |
1625 | - | func | |
1626 | - | let | |
1627 | - | then | |
1628 | - | else | |
1629 | - | let | |
1400 | + | let hA = gy._1 | |
1401 | + | let hB = value(indexOf(hA, max(hA))) | |
1402 | + | let hC = (gy._3 - 25) | |
1403 | + | func hD (eU,dg) = { | |
1404 | + | let dQ = if ((dg == hB)) | |
1405 | + | then (hA[dg] - hC) | |
1406 | + | else hA[dg] | |
1407 | + | let dU = if ((dQ == 0)) | |
1630 | 1408 | then nil | |
1631 | - | else split(drop(toString(pow(10, 0, | |
1632 | - | let | |
1633 | - | func | |
1634 | - | ||
1635 | - | let | |
1636 | - | let | |
1637 | - | let | |
1638 | - | let | |
1639 | - | func | |
1640 | - | then | |
1641 | - | else | |
1642 | - | ||
1643 | - | func | |
1644 | - | then | |
1409 | + | else split(drop(toString(pow(10, 0, dQ, 0, 0, DOWN)), 1), "") | |
1410 | + | let gd = hv[dg] | |
1411 | + | func hE (hF,hG) = (hF :+ gd) | |
1412 | + | ||
1413 | + | let hH = { | |
1414 | + | let eW = dU | |
1415 | + | let eX = size(eW) | |
1416 | + | let eY = nil | |
1417 | + | func hI (fa,fb) = if ((fb >= eX)) | |
1418 | + | then fa | |
1419 | + | else hE(fa, eW[fb]) | |
1420 | + | ||
1421 | + | func hJ (fa,fb) = if ((fb >= eX)) | |
1422 | + | then fa | |
1645 | 1423 | else throw("List size exceeds 25") | |
1646 | 1424 | ||
1647 | - | | |
1648 | - | } | |
1649 | - | ( | |
1425 | + | hJ(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(eY, 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) | |
1426 | + | } | |
1427 | + | (eU ++ hH) | |
1650 | 1428 | } | |
1651 | 1429 | ||
1652 | - | let | |
1653 | - | let | |
1654 | - | let | |
1655 | - | let | |
1656 | - | func | |
1657 | - | then | |
1658 | - | else | |
1659 | - | ||
1660 | - | func | |
1661 | - | then | |
1430 | + | let ff = { | |
1431 | + | let eW = cQ | |
1432 | + | let eX = size(eW) | |
1433 | + | let eY = nil | |
1434 | + | func hI (fa,fb) = if ((fb >= eX)) | |
1435 | + | then fa | |
1436 | + | else hD(fa, eW[fb]) | |
1437 | + | ||
1438 | + | func hJ (fa,fb) = if ((fb >= eX)) | |
1439 | + | then fa | |
1662 | 1440 | else throw("List size exceeds 6") | |
1663 | 1441 | ||
1664 | - | | |
1442 | + | hJ(hI(hI(hI(hI(hI(hI(eY, 0), 1), 2), 3), 4), 5), 6) | |
1665 | 1443 | } | |
1666 | - | func | |
1667 | - | ||
1668 | - | let | |
1669 | - | let | |
1670 | - | let | |
1671 | - | func | |
1672 | - | then | |
1673 | - | else | |
1674 | - | ||
1675 | - | func | |
1676 | - | then | |
1444 | + | func hK (eU,fE) = (eU + ff[fE]) | |
1445 | + | ||
1446 | + | let eW = hu | |
1447 | + | let eX = size(eW) | |
1448 | + | let eY = "" | |
1449 | + | func hL (fa,fb) = if ((fb >= eX)) | |
1450 | + | then fa | |
1451 | + | else hK(fa, eW[fb]) | |
1452 | + | ||
1453 | + | func hM (fa,fb) = if ((fb >= eX)) | |
1454 | + | then fa | |
1677 | 1455 | else throw("List size exceeds 25") | |
1678 | 1456 | ||
1679 | - | | |
1680 | - | } | |
1681 | - | ||
1682 | - | ||
1683 | - | func | |
1684 | - | let | |
1685 | - | [toString(valueOrElse(parseInt( | |
1686 | - | then | |
1687 | - | else "0_0_0_0_0_0", if ((size(split( | |
1688 | - | then | |
1689 | - | else "0_0_0_0_0_0", | |
1690 | - | } | |
1691 | - | ||
1692 | - | ||
1693 | - | func | |
1694 | - | let | |
1695 | - | (( | |
1696 | - | } | |
1697 | - | ||
1698 | - | ||
1699 | - | func | |
1700 | - | let | |
1701 | - | func | |
1702 | - | ||
1703 | - | func | |
1704 | - | let | |
1705 | - | let | |
1706 | - | $Tuple2(( | |
1457 | + | 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(eY, 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) | |
1458 | + | } | |
1459 | + | ||
1460 | + | ||
1461 | + | func hN (hO) = { | |
1462 | + | let gx = split(valueOrElse(getString(hO), "0:0_0_0_0_0_0:0_0_0_0_0_0:"), ":") | |
1463 | + | [toString(valueOrElse(parseInt(gx[bm]), 0)), if ((size(split(gx[bn], "_")) == aI)) | |
1464 | + | then gx[bn] | |
1465 | + | else "0_0_0_0_0_0", if ((size(split(gx[bo], "_")) == aI)) | |
1466 | + | then gx[bo] | |
1467 | + | else "0_0_0_0_0_0", gx[bp]] | |
1468 | + | } | |
1469 | + | ||
1470 | + | ||
1471 | + | func hP (hQ) = { | |
1472 | + | let fs = split(hQ, "_") | |
1473 | + | ((aL * (parseIntValue(fs[1]) + 1)) * parseIntValue(fs[0])) | |
1474 | + | } | |
1475 | + | ||
1476 | + | ||
1477 | + | func hR (hS) = { | |
1478 | + | let hT = hS[bg] | |
1479 | + | func hU (eU,hV) = (eU + parseIntValue(hV)) | |
1480 | + | ||
1481 | + | func hW (eU,hV) = { | |
1482 | + | let dg = eU._1 | |
1483 | + | let eN = (((parseIntValue(hV) + bc) - 1) / bc) | |
1484 | + | $Tuple2((dg + 1), (eU._2 + (eN * cK))) | |
1707 | 1485 | } | |
1708 | 1486 | ||
1709 | - | let | |
1710 | - | let | |
1711 | - | let | |
1712 | - | let | |
1713 | - | func | |
1714 | - | then | |
1715 | - | else | |
1716 | - | ||
1717 | - | func | |
1718 | - | then | |
1487 | + | let hX = { | |
1488 | + | let eW = split(hS[be], "_") | |
1489 | + | let eX = size(eW) | |
1490 | + | let eY = 0 | |
1491 | + | func eZ (fa,fb) = if ((fb >= eX)) | |
1492 | + | then fa | |
1493 | + | else hU(fa, eW[fb]) | |
1494 | + | ||
1495 | + | func fc (fa,fb) = if ((fb >= eX)) | |
1496 | + | then fa | |
1719 | 1497 | else throw("List size exceeds 6") | |
1720 | 1498 | ||
1721 | - | | |
1499 | + | fc(eZ(eZ(eZ(eZ(eZ(eZ(eY, 0), 1), 2), 3), 4), 5), 6) | |
1722 | 1500 | } | |
1723 | - | let | |
1724 | - | let | |
1725 | - | let | |
1726 | - | let | |
1727 | - | func | |
1728 | - | then | |
1729 | - | else | |
1730 | - | ||
1731 | - | func | |
1732 | - | then | |
1501 | + | let hY = { | |
1502 | + | let eW = split(hS[bf], "_") | |
1503 | + | let eX = size(eW) | |
1504 | + | let eY = 0 | |
1505 | + | func hI (fa,fb) = if ((fb >= eX)) | |
1506 | + | then fa | |
1507 | + | else hU(fa, eW[fb]) | |
1508 | + | ||
1509 | + | func hJ (fa,fb) = if ((fb >= eX)) | |
1510 | + | then fa | |
1733 | 1511 | else throw("List size exceeds 6") | |
1734 | 1512 | ||
1735 | - | | |
1513 | + | hJ(hI(hI(hI(hI(hI(hI(eY, 0), 1), 2), 3), 4), 5), 6) | |
1736 | 1514 | } | |
1737 | - | let | |
1515 | + | let hZ = if ((hT == "")) | |
1738 | 1516 | then 0 | |
1739 | - | else ( let | |
1740 | - | let | |
1741 | - | let | |
1742 | - | func | |
1743 | - | then | |
1744 | - | else | |
1745 | - | ||
1746 | - | func | |
1747 | - | then | |
1517 | + | else ( let eW = split_4C(hT, "_") | |
1518 | + | let eX = size(eW) | |
1519 | + | let eY = $Tuple2(0, 0) | |
1520 | + | func hL (fa,fb) = if ((fb >= eX)) | |
1521 | + | then fa | |
1522 | + | else hW(fa, eW[fb]) | |
1523 | + | ||
1524 | + | func hM (fa,fb) = if ((fb >= eX)) | |
1525 | + | then fa | |
1748 | 1526 | else throw("List size exceeds 50") | |
1749 | 1527 | ||
1750 | - | | |
1751 | - | (( | |
1752 | - | } | |
1753 | - | ||
1754 | - | ||
1755 | - | func | |
1756 | - | let | |
1757 | - | let | |
1758 | - | let | |
1759 | - | let | |
1760 | - | let | |
1761 | - | let | |
1762 | - | then makeString(["0", toString( | |
1528 | + | 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(eY, 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 | |
1529 | + | ((hX + hY) + hZ) | |
1530 | + | } | |
1531 | + | ||
1532 | + | ||
1533 | + | func ia (ib,ic,id) = { | |
1534 | + | let hQ = ((toString(ic) + "_") + toString(id)) | |
1535 | + | let ie = hP(hQ) | |
1536 | + | let if = valueOrElse(getString(ib), (hQ + ":0_0_0_0_0_0:0_0_0_0_0_0::0")) | |
1537 | + | let ig = split_4C(if, ":") | |
1538 | + | let ih = hR(ig) | |
1539 | + | let ii = if ((5 > size(ig))) | |
1540 | + | then makeString(["0", toString(ih), toString((ie - ih)), toString(ie)], "_") | |
1763 | 1541 | else { | |
1764 | - | let | |
1765 | - | let | |
1766 | - | let | |
1767 | - | then parseIntValue( | |
1768 | - | else | |
1769 | - | makeString([toString( | |
1770 | - | } | |
1771 | - | [ | |
1772 | - | then | |
1773 | - | else "0_0_0_0_0_0", if ((size(split( | |
1774 | - | then | |
1775 | - | else "0_0_0_0_0_0", | |
1776 | - | } | |
1777 | - | ||
1778 | - | ||
1779 | - | func | |
1780 | - | let | |
1781 | - | let | |
1782 | - | (( | |
1783 | - | } | |
1784 | - | ||
1785 | - | ||
1786 | - | func | |
1542 | + | let ij = split(ig[bh], "_") | |
1543 | + | let ik = parseIntValue(ij[bi]) | |
1544 | + | let il = if ((size(ij) > 1)) | |
1545 | + | then parseIntValue(ij[bj]) | |
1546 | + | else ih | |
1547 | + | makeString([toString(ik), toString(il), toString(((ie - ik) - il)), toString(ie)], "_") | |
1548 | + | } | |
1549 | + | [ig[bd], if ((size(split(ig[be], "_")) == aI)) | |
1550 | + | then ig[be] | |
1551 | + | else "0_0_0_0_0_0", if ((size(split(ig[bf], "_")) == aI)) | |
1552 | + | then ig[bf] | |
1553 | + | else "0_0_0_0_0_0", ig[bg], ii] | |
1554 | + | } | |
1555 | + | ||
1556 | + | ||
1557 | + | func im (hS) = { | |
1558 | + | let in = hR(hS) | |
1559 | + | let io = parseIntValue(split(hS[bh], "_")[bi]) | |
1560 | + | ((hP(hS[bd]) - in) - io) | |
1561 | + | } | |
1562 | + | ||
1563 | + | ||
1564 | + | func ip (iq,hS,ir) = if ((size(iq) != 3)) | |
1787 | 1565 | then throw("cargoListStr should contain exactly 2 ':' separators") | |
1788 | 1566 | else { | |
1789 | - | let | |
1790 | - | let | |
1791 | - | let | |
1567 | + | let is = split(iq[0], "_") | |
1568 | + | let it = split(iq[1], "_") | |
1569 | + | let iu = if ((iq[2] == "")) | |
1792 | 1570 | then nil | |
1793 | - | else split_4C( | |
1794 | - | if ((size( | |
1571 | + | else split_4C(iq[2], "_") | |
1572 | + | if ((size(is) != aI)) | |
1795 | 1573 | then throw("All 6 resources should be passed") | |
1796 | - | else if ((size( | |
1574 | + | else if ((size(it) != aI)) | |
1797 | 1575 | then throw("All 6 materials should be passed") | |
1798 | 1576 | else { | |
1799 | - | let | |
1800 | - | let | |
1801 | - | let | |
1802 | - | let | |
1577 | + | let hc = im(hS) | |
1578 | + | let iv = split(hS[be], "_") | |
1579 | + | let iw = split(hS[bf], "_") | |
1580 | + | let ix = if ((hS[bg] == "")) | |
1803 | 1581 | then nil | |
1804 | - | else split_4C( | |
1805 | - | let | |
1806 | - | let | |
1807 | - | let | |
1582 | + | else split_4C(hS[bg], "_") | |
1583 | + | let ha = split(ir[bn], "_") | |
1584 | + | let iy = split(ir[bo], "_") | |
1585 | + | let iz = if ((ir[bp] == "")) | |
1808 | 1586 | then nil | |
1809 | - | else split_4C( | |
1810 | - | func | |
1811 | - | let | |
1812 | - | let | |
1813 | - | let | |
1814 | - | let | |
1815 | - | if (( | |
1816 | - | then $Tuple4(( | |
1817 | - | else if (( | |
1818 | - | then if (( | |
1819 | - | then throw((((("Attempt to take " + | |
1820 | - | else $Tuple4(( | |
1821 | - | else if ((-( | |
1822 | - | then throw((((("Attempt to take " + toString(-( | |
1823 | - | else $Tuple4(( | |
1587 | + | else split_4C(ir[bp], "_") | |
1588 | + | func iA (eU,hV) = { | |
1589 | + | let gN = eU._1 | |
1590 | + | let iB = parseIntValue(hV) | |
1591 | + | let iC = parseIntValue(iv[gN]) | |
1592 | + | let iD = parseIntValue(ha[gN]) | |
1593 | + | if ((iB == 0)) | |
1594 | + | then $Tuple4((gN + 1), (eU._2 :+ iv[gN]), (eU._3 :+ ha[gN]), eU._4) | |
1595 | + | else if ((iB > 0)) | |
1596 | + | then if ((iB > iD)) | |
1597 | + | then throw((((("Attempt to take " + hV) + " from backpack, but only ") + toString(iD)) + " available")) | |
1598 | + | else $Tuple4((gN + 1), (eU._2 :+ toString((iC + iB))), (eU._3 :+ toString((iD - iB))), (eU._4 + iB)) | |
1599 | + | else if ((-(iB) > iC)) | |
1600 | + | then throw((((("Attempt to take " + toString(-(iB))) + " from warehouse, but only ") + toString(iC)) + " available")) | |
1601 | + | else $Tuple4((gN + 1), (eU._2 :+ toString((iC + iB))), (eU._3 :+ toString((iD - iB))), (eU._4 + iB)) | |
1824 | 1602 | } | |
1825 | 1603 | ||
1826 | - | let | |
1827 | - | let | |
1828 | - | let | |
1829 | - | let | |
1830 | - | func | |
1831 | - | then | |
1832 | - | else | |
1833 | - | ||
1834 | - | func | |
1835 | - | then | |
1604 | + | let ff = { | |
1605 | + | let eW = is | |
1606 | + | let eX = size(eW) | |
1607 | + | let eY = $Tuple4(0, nil, nil, 0) | |
1608 | + | func eZ (fa,fb) = if ((fb >= eX)) | |
1609 | + | then fa | |
1610 | + | else iA(fa, eW[fb]) | |
1611 | + | ||
1612 | + | func fc (fa,fb) = if ((fb >= eX)) | |
1613 | + | then fa | |
1836 | 1614 | else throw("List size exceeds 6") | |
1837 | 1615 | ||
1838 | - | | |
1616 | + | fc(eZ(eZ(eZ(eZ(eZ(eZ(eY, 0), 1), 2), 3), 4), 5), 6) | |
1839 | 1617 | } | |
1840 | - | func | |
1841 | - | let | |
1842 | - | let | |
1843 | - | let | |
1844 | - | let | |
1845 | - | if (( | |
1846 | - | then $Tuple4(( | |
1847 | - | else if (( | |
1848 | - | then if (( | |
1849 | - | then throw((((("Attempt to take " + | |
1850 | - | else $Tuple4(( | |
1851 | - | else if ((-( | |
1852 | - | then throw((((("Attempt to take " + toString(-( | |
1853 | - | else $Tuple4(( | |
1618 | + | func iE (eU,hV) = { | |
1619 | + | let gN = eU._1 | |
1620 | + | let iB = parseIntValue(hV) | |
1621 | + | let iF = parseIntValue(iw[gN]) | |
1622 | + | let iG = parseIntValue(iy[gN]) | |
1623 | + | if ((iB == 0)) | |
1624 | + | then $Tuple4((gN + 1), (eU._2 :+ iw[gN]), (eU._3 :+ iy[gN]), eU._4) | |
1625 | + | else if ((iB > 0)) | |
1626 | + | then if ((iB > iG)) | |
1627 | + | then throw((((("Attempt to take " + hV) + " from backpack, but only ") + toString(iG)) + " available")) | |
1628 | + | else $Tuple4((gN + 1), (eU._2 :+ toString((iF + iB))), (eU._3 :+ toString((iG - iB))), (eU._4 + iB)) | |
1629 | + | else if ((-(iB) > iF)) | |
1630 | + | then throw((((("Attempt to take " + toString(-(iB))) + " from warehouse, but only ") + toString(iF)) + " available")) | |
1631 | + | else $Tuple4((gN + 1), (eU._2 :+ toString((iF + iB))), (eU._3 :+ toString((iG - iB))), (eU._4 + iB)) | |
1854 | 1632 | } | |
1855 | 1633 | ||
1856 | - | let | |
1857 | - | let | |
1858 | - | let | |
1859 | - | let | |
1860 | - | func | |
1861 | - | then | |
1862 | - | else | |
1863 | - | ||
1864 | - | func | |
1865 | - | then | |
1634 | + | let gt = { | |
1635 | + | let eW = it | |
1636 | + | let eX = size(eW) | |
1637 | + | let eY = $Tuple4(0, nil, nil, ff._4) | |
1638 | + | func hI (fa,fb) = if ((fb >= eX)) | |
1639 | + | then fa | |
1640 | + | else iE(fa, eW[fb]) | |
1641 | + | ||
1642 | + | func hJ (fa,fb) = if ((fb >= eX)) | |
1643 | + | then fa | |
1866 | 1644 | else throw("List size exceeds 6") | |
1867 | 1645 | ||
1868 | - | | |
1646 | + | hJ(hI(hI(hI(hI(hI(hI(eY, 0), 1), 2), 3), 4), 5), 6) | |
1869 | 1647 | } | |
1870 | - | func | |
1871 | - | let | |
1872 | - | let | |
1873 | - | let | |
1874 | - | then parseIntValue( | |
1648 | + | func iH (eU,hV) = { | |
1649 | + | let gN = eU._1 | |
1650 | + | let iB = parseIntValue(hV) | |
1651 | + | let iI = if ((size(ix) > gN)) | |
1652 | + | then parseIntValue(ix[gN]) | |
1875 | 1653 | else 0 | |
1876 | - | let | |
1877 | - | then parseIntValue( | |
1654 | + | let iJ = if ((size(iz) > gN)) | |
1655 | + | then parseIntValue(iz[gN]) | |
1878 | 1656 | else 0 | |
1879 | - | if (( | |
1880 | - | then $Tuple4(( | |
1881 | - | else if (( | |
1882 | - | then if (( | |
1883 | - | then throw((((("Attempt to take " + | |
1657 | + | if ((iB == 0)) | |
1658 | + | then $Tuple4((gN + 1), (eU._2 :+ toString(iI)), (eU._3 :+ toString(iJ)), eU._4) | |
1659 | + | else if ((iB > 0)) | |
1660 | + | then if ((iB > iJ)) | |
1661 | + | then throw((((("Attempt to take " + hV) + " from backpack, but only ") + toString(iJ)) + " available")) | |
1884 | 1662 | else { | |
1885 | - | let | |
1886 | - | $Tuple4(( | |
1663 | + | let fW = (eK((iI + iB), bc) - eK(iI, bc)) | |
1664 | + | $Tuple4((gN + 1), (eU._2 :+ toString((iI + iB))), (eU._3 :+ toString((iJ - iB))), (eU._4 + fW)) | |
1887 | 1665 | } | |
1888 | - | else if ((-( | |
1889 | - | then throw((((("Attempt to take " + toString(-( | |
1666 | + | else if ((-(iB) > iI)) | |
1667 | + | then throw((((("Attempt to take " + toString(-(iB))) + " from warehouse, but only ") + toString(iI)) + " available")) | |
1890 | 1668 | else { | |
1891 | - | let | |
1892 | - | $Tuple4(( | |
1669 | + | let fW = (eK((iI + iB), bc) - eK(iI, bc)) | |
1670 | + | $Tuple4((gN + 1), (eU._2 :+ toString((iI + iB))), (eU._3 :+ toString((iJ - iB))), (eU._4 + fW)) | |
1893 | 1671 | } | |
1894 | 1672 | } | |
1895 | 1673 | ||
1896 | - | let | |
1674 | + | let gx = if ((size(iu) != 0)) | |
1897 | 1675 | then { | |
1898 | - | let | |
1899 | - | let | |
1900 | - | let | |
1901 | - | func | |
1902 | - | then | |
1903 | - | else | |
1904 | - | ||
1905 | - | func | |
1906 | - | then | |
1676 | + | let eW = iu | |
1677 | + | let eX = size(eW) | |
1678 | + | let eY = $Tuple4(0, nil, nil, gt._4) | |
1679 | + | func hL (fa,fb) = if ((fb >= eX)) | |
1680 | + | then fa | |
1681 | + | else iH(fa, eW[fb]) | |
1682 | + | ||
1683 | + | func hM (fa,fb) = if ((fb >= eX)) | |
1684 | + | then fa | |
1907 | 1685 | else throw("List size exceeds 50") | |
1908 | 1686 | ||
1909 | - | | |
1687 | + | 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(eY, 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) | |
1910 | 1688 | } | |
1911 | - | else $Tuple4(0, | |
1912 | - | let | |
1913 | - | if (( | |
1914 | - | then throw((((("Attempt to put total " + toString( | |
1915 | - | else $Tuple7(makeString( | |
1689 | + | else $Tuple4(0, ix, iz, gt._4) | |
1690 | + | let iK = gx._4 | |
1691 | + | if ((iK > hc)) | |
1692 | + | then throw((((("Attempt to put total " + toString(iK)) + " stuff, but only ") + toString(hc)) + " warehouse space left")) | |
1693 | + | else $Tuple7(makeString(ff._2, "_"), makeString(gt._2, "_"), makeString_2C(gx._2, "_"), makeString(ff._3, "_"), makeString(gt._3, "_"), makeString_2C(gx._3, "_"), iK) | |
1916 | 1694 | } | |
1917 | 1695 | } | |
1918 | 1696 | ||
1919 | 1697 | ||
1920 | - | func | |
1921 | - | let | |
1922 | - | let | |
1923 | - | let | |
1924 | - | let | |
1925 | - | let | |
1926 | - | let | |
1927 | - | let | |
1928 | - | let | |
1929 | - | let | |
1930 | - | let | |
1931 | - | $Tuple2([IntegerEntry( | |
1932 | - | } | |
1933 | - | ||
1934 | - | ||
1935 | - | func | |
1698 | + | func iL (iM,iN) = { | |
1699 | + | let bQ = toString(iM) | |
1700 | + | let iO = hi(toBigInt(iN)) | |
1701 | + | let iP = valueOrElse(getInteger(es()), (er + 1)) | |
1702 | + | let ew = toString(iP) | |
1703 | + | let hr = toInt((iO % el)) | |
1704 | + | let gQ = hp(iO, hr) | |
1705 | + | let dz = aU[hr] | |
1706 | + | let iQ = Issue(eJ(ew, "S"), makeString([ew, "S", gQ, dz], "_"), 1, 0, false) | |
1707 | + | let bu = calculateAssetId(iQ) | |
1708 | + | let iR = toBase58String(bu) | |
1709 | + | $Tuple2([IntegerEntry(es(), (iP + 1)), iQ, StringEntry(ev(ew), iR), StringEntry(bt(iR), bQ), StringEntry(ey(ew), bQ), IntegerEntry(bD(iR), 0), IntegerEntry(ex(iR, bQ), 0), ScriptTransfer(iM, 1, bu)], $Tuple2(iR, dz)) | |
1710 | + | } | |
1711 | + | ||
1712 | + | ||
1713 | + | func iS (bQ,iT,iU) = if (!(sigVerify_8Kb(iT, iU, ec))) | |
1936 | 1714 | then throw("signature does not match") | |
1937 | 1715 | else { | |
1938 | - | let | |
1939 | - | let | |
1940 | - | let | |
1941 | - | let | |
1942 | - | let | |
1943 | - | let | |
1944 | - | let | |
1945 | - | let | |
1946 | - | if (if (( | |
1716 | + | let fs = split_4C(toUtf8String(iT), ";") | |
1717 | + | let iV = split_4C(fs[0], "|") | |
1718 | + | let iW = split(iV[eF], "_") | |
1719 | + | let iX = parseIntValue(iW[0]) | |
1720 | + | let iY = parseIntValue(iW[1]) | |
1721 | + | let iZ = split(fs[1], ":") | |
1722 | + | let ja = iZ[0] | |
1723 | + | let jb = parseIntValue(iV[eG]) | |
1724 | + | if (if ((jb > (lastBlock.timestamp + ee))) | |
1947 | 1725 | then true | |
1948 | - | else ((lastBlock.timestamp - | |
1949 | - | then throw(((("signature outdated: logTime=" + toString( | |
1726 | + | else ((lastBlock.timestamp - ee) > jb)) | |
1727 | + | then throw(((("signature outdated: logTime=" + toString(jb)) + ", bcTime=") + toString(lastBlock.timestamp))) | |
1950 | 1728 | else { | |
1951 | - | let | |
1952 | - | let | |
1953 | - | if (( | |
1954 | - | then throw(((("Tx ids don't match! In state: " + | |
1729 | + | let jc = iZ[1] | |
1730 | + | let jd = valueOrElse(getString(dO(bQ)), "") | |
1731 | + | if ((jd != jc)) | |
1732 | + | then throw(((("Tx ids don't match! In state: " + jd) + ", in msg: ") + jc)) | |
1955 | 1733 | else { | |
1956 | - | let B = valueOrErrorMessage(getString( | |
1957 | - | let | |
1958 | - | let | |
1959 | - | let | |
1960 | - | if (( | |
1961 | - | then throw(((("oldHealth=" + toString( | |
1962 | - | else if ((0 >= | |
1734 | + | let B = valueOrErrorMessage(getString(bM(bQ)), "You don't have a duck staked") | |
1735 | + | let je = A(B) | |
1736 | + | let jf = aj(valueOrElse(getInteger(E(B)), 0)) | |
1737 | + | let jg = valueOrElse(getInteger(je), jf) | |
1738 | + | if ((jg != iX)) | |
1739 | + | then throw(((("oldHealth=" + toString(jg)) + " from state does not match one from flight log=") + toString(iX))) | |
1740 | + | else if ((0 >= iX)) | |
1963 | 1741 | then throw("You can't fly with zero health") | |
1964 | - | else if (!( | |
1742 | + | else if (!(gz(B))) | |
1965 | 1743 | then throw("Equipment incompatible") | |
1966 | 1744 | else { | |
1967 | - | let | |
1968 | - | then | |
1745 | + | let jh = if ((size(iV) > eH)) | |
1746 | + | then iV[eH] | |
1969 | 1747 | else "" | |
1970 | - | let | |
1971 | - | then | |
1748 | + | let ji = if ((size(iV) > eI)) | |
1749 | + | then iV[eI] | |
1972 | 1750 | else "" | |
1973 | - | let | |
1974 | - | then ( | |
1751 | + | let jj = if (if ((iY > 0)) | |
1752 | + | then (jh == "$") | |
1975 | 1753 | else false) | |
1976 | - | then | |
1754 | + | then dF(invoke(dh, "sendUsdtPrize", [bQ], nil)) | |
1977 | 1755 | else 0 | |
1978 | - | $Tuple5( | |
1756 | + | $Tuple5(iY, B, jj, ja, ji) | |
1979 | 1757 | } | |
1980 | 1758 | } | |
1981 | 1759 | } | |
1982 | 1760 | } | |
1983 | 1761 | ||
1984 | 1762 | ||
1985 | - | func | |
1986 | - | let | |
1987 | - | let | |
1988 | - | let | |
1989 | - | let | |
1990 | - | (( | |
1991 | - | } | |
1992 | - | ||
1993 | - | ||
1994 | - | func | |
1995 | - | let | |
1996 | - | then $Tuple2( | |
1763 | + | func jk (Q,jl) = { | |
1764 | + | let id = valueOrElse(getInteger(bD(Q)), 0) | |
1765 | + | let jm = valueOrElse(getInteger(bx(aH, Q)), 0) | |
1766 | + | let jn = (id / 6) | |
1767 | + | let jo = (id / 7) | |
1768 | + | ((aK + fraction(aK, ((id + jn) + (2 * jo)), 5)) + fraction(aK, jm, (jl * 5))) | |
1769 | + | } | |
1770 | + | ||
1771 | + | ||
1772 | + | func jp (c,jq,jr) = { | |
1773 | + | let js = if ((jq == eC)) | |
1774 | + | then $Tuple2(jr, valueOrElse(getString(bM(c)), "")) | |
1997 | 1775 | else { | |
1998 | - | let B = valueOrErrorMessage(getString( | |
1999 | - | let | |
2000 | - | let | |
2001 | - | if (( | |
2002 | - | then throw((("Duck location type is " + | |
2003 | - | else $Tuple2( | |
2004 | - | } | |
2005 | - | let Q = | |
2006 | - | let | |
2007 | - | let | |
2008 | - | let | |
2009 | - | let | |
2010 | - | let | |
2011 | - | if (( | |
1776 | + | let B = valueOrErrorMessage(getString(bM(c)), "You don't have a duck staked") | |
1777 | + | let jt = valueOrElse(getString(bO(B)), aM) | |
1778 | + | let ck = split(value(jt), "_") | |
1779 | + | if ((ck[br] != "L")) | |
1780 | + | then throw((("Duck location type is " + ck[br]) + ", but should be L")) | |
1781 | + | else $Tuple2(ck[bs], B) | |
1782 | + | } | |
1783 | + | let Q = js._1 | |
1784 | + | let ju = js._2 | |
1785 | + | let jv = value(assetInfo(fromBase58String(Q))) | |
1786 | + | let jw = bw(Q) | |
1787 | + | let jx = valueOrErrorMessage(getInteger(jw), (("Land " + jv.name) + " is not staked")) | |
1788 | + | let jy = valueOrErrorMessage(getString(bt(Q)), (("NFT " + jv.name) + " is orphaned")) | |
1789 | + | if ((jy != c)) | |
2012 | 1790 | then throw((aF + " is not yours")) | |
2013 | 1791 | else { | |
2014 | - | let | |
2015 | - | $Tuple4( | |
2016 | - | } | |
2017 | - | } | |
2018 | - | ||
2019 | - | ||
2020 | - | func | |
1792 | + | let jz = split(jv.description, "_") | |
1793 | + | $Tuple4(ju, Q, jz, jx) | |
1794 | + | } | |
1795 | + | } | |
1796 | + | ||
1797 | + | ||
1798 | + | func jA (c,eL,jq,jr) = if ((0 > eL)) | |
2021 | 1799 | then throw("Negative amount") | |
2022 | 1800 | else { | |
2023 | - | let | |
2024 | - | let | |
2025 | - | let | |
2026 | - | let | |
2027 | - | if ((0 > | |
2028 | - | then throw(((("Saved timestamp is in future, saved = " + toString( | |
1801 | + | let gd = jp(c, jq, jr) | |
1802 | + | let dL = gd._3[do] | |
1803 | + | let gJ = gP(gd._3[dp]) | |
1804 | + | let gT = (lastBlock.timestamp - gd._4) | |
1805 | + | if ((0 > gT)) | |
1806 | + | then throw(((("Saved timestamp is in future, saved = " + toString(gd._4)) + ", current = ") + toString(lastBlock.timestamp))) | |
2029 | 1807 | else { | |
2030 | - | let | |
2031 | - | let | |
2032 | - | let | |
2033 | - | if (( | |
2034 | - | then throw(((("Not enough resources, available = " + toString( | |
1808 | + | let jl = dK(dL) | |
1809 | + | let jB = jk(gd._2, jl) | |
1810 | + | let jC = fraction(gT, (jB * jl), a) | |
1811 | + | if ((eL > jC)) | |
1812 | + | then throw(((("Not enough resources, available = " + toString(jC)) + ", requested = ") + toString(eL))) | |
2035 | 1813 | else { | |
2036 | - | let | |
2037 | - | let | |
2038 | - | let | |
2039 | - | let | |
2040 | - | let | |
2041 | - | let | |
2042 | - | let | |
2043 | - | let | |
2044 | - | let | |
2045 | - | if (if (( | |
2046 | - | then ( | |
1814 | + | let jD = fraction((jC - eL), a, (jB * jl)) | |
1815 | + | let jE = (lastBlock.timestamp - jD) | |
1816 | + | let ic = (jl / cL) | |
1817 | + | let hb = gX(gJ, (gT - jD), ic, jB) | |
1818 | + | let ib = bC(gd._2) | |
1819 | + | let id = valueOrElse(getInteger(bD(gd._2)), 0) | |
1820 | + | let hS = ia(ib, ic, id) | |
1821 | + | let ij = split(hS[bh], "_") | |
1822 | + | let hc = parseIntValue(ij[bk]) | |
1823 | + | if (if ((jq == eC)) | |
1824 | + | then (eL > hc) | |
2047 | 1825 | else false) | |
2048 | - | then throw((("Only " + toString( | |
1826 | + | then throw((("Only " + toString(hc)) + " space left in warehouse")) | |
2049 | 1827 | else { | |
2050 | - | let | |
2051 | - | let | |
2052 | - | let | |
2053 | - | let | |
2054 | - | let | |
2055 | - | then $Tuple4( | |
2056 | - | else if (( | |
2057 | - | then $Tuple4( | |
1828 | + | let hO = bN(gd._1) | |
1829 | + | let ir = hN(hO) | |
1830 | + | let ha = split(ir[bn], "_") | |
1831 | + | let gZ = split(hS[be], "_") | |
1832 | + | let jF = if ((jq == eC)) | |
1833 | + | then $Tuple4(gR(gZ, gJ, (gT - jD), ic, jB), ir[bn], (parseIntValue(ij[bj]) + hb._2), (parseIntValue(ij[bk]) - hb._2)) | |
1834 | + | else if ((jq == eD)) | |
1835 | + | then $Tuple4(hS[be], gR(ha, gJ, (gT - jD), ic, jB), parseIntValue(ij[bj]), parseIntValue(ij[bk])) | |
2058 | 1836 | else { | |
2059 | - | let | |
2060 | - | let | |
2061 | - | $Tuple4( | |
1837 | + | let jG = gY(gZ, ha, hb, hc) | |
1838 | + | let jH = min([parseIntValue(ij[bk]), hb._2]) | |
1839 | + | $Tuple4(jG._1, jG._2, (parseIntValue(ij[bj]) + jH), (parseIntValue(ij[bk]) - jH)) | |
2062 | 1840 | } | |
2063 | - | let | |
2064 | - | let | |
2065 | - | let | |
2066 | - | let | |
2067 | - | $Tuple5([IntegerEntry( | |
1841 | + | let jI = jF._1 | |
1842 | + | let jJ = jF._2 | |
1843 | + | let jK = jF._3 | |
1844 | + | let jL = jF._4 | |
1845 | + | $Tuple5([IntegerEntry(bw(gd._2), jE), IntegerEntry(bz(aF, gd._2, c), jE)], hO, [ir[bm], jJ, ir[bo], ir[bp]], ib, [hS[bd], jI, hS[bf], hS[bg], makeString([ij[bi], toString(jK), toString(jL), ij[bl]], "_")]) | |
2068 | 1846 | } | |
2069 | 1847 | } | |
2070 | 1848 | } | |
2071 | 1849 | } | |
2072 | 1850 | ||
2073 | 1851 | ||
2074 | - | func | |
2075 | - | let | |
2076 | - | let | |
2077 | - | let | |
2078 | - | | |
2079 | - | } | |
2080 | - | ||
2081 | - | ||
2082 | - | func | |
2083 | - | let c = toString( | |
2084 | - | let | |
2085 | - | let | |
2086 | - | let | |
2087 | - | let | |
2088 | - | if (if (!( | |
2089 | - | then ( | |
1852 | + | func jM (c,Q,jl,jq) = { | |
1853 | + | let jw = bw(Q) | |
1854 | + | let jx = value(getInteger(jw)) | |
1855 | + | let jC = (fraction((lastBlock.timestamp - jx), jk(Q, jl), a) * jl) | |
1856 | + | jA(c, jC, jq, Q) | |
1857 | + | } | |
1858 | + | ||
1859 | + | ||
1860 | + | func jN (fh,iM,jO,Q) = { | |
1861 | + | let c = toString(iM) | |
1862 | + | let gd = jp(c, eE, Q) | |
1863 | + | let jl = dK(gd._3[do]) | |
1864 | + | let jP = bD(gd._2) | |
1865 | + | let jQ = valueOrElse(getInteger(jP), 0) | |
1866 | + | if (if (!(cz)) | |
1867 | + | then (jQ >= 3) | |
2090 | 1868 | else false) | |
2091 | 1869 | then throw("Currently max infrastructure level = 3") | |
2092 | 1870 | else { | |
2093 | - | let | |
2094 | - | let ao = ( | |
2095 | - | if (if ( | |
2096 | - | then (ao > | |
1871 | + | let jR = ((sqrt(jl, 0, 0, DOWN) / 5) + 2) | |
1872 | + | let ao = (jQ + 1) | |
1873 | + | if (if (cz) | |
1874 | + | then (ao > jR) | |
2097 | 1875 | else false) | |
2098 | - | then throw(("Currently max infrastructure level = " + toString( | |
1876 | + | then throw(("Currently max infrastructure level = " + toString(jR))) | |
2099 | 1877 | else { | |
2100 | - | let | |
2101 | - | if (if (!( | |
2102 | - | then ( | |
1878 | + | let jS = fraction(eh, (jl * ao), cL) | |
1879 | + | if (if (!(fh)) | |
1880 | + | then (jO != jS) | |
2103 | 1881 | else false) | |
2104 | - | then throw(("Payment attached should be " + toString( | |
1882 | + | then throw(("Payment attached should be " + toString(jS))) | |
2105 | 1883 | else { | |
2106 | - | let | |
2107 | - | let | |
2108 | - | let | |
2109 | - | let | |
2110 | - | let | |
2111 | - | let | |
2112 | - | let | |
2113 | - | let | |
2114 | - | let | |
2115 | - | let | |
2116 | - | let | |
2117 | - | let | |
2118 | - | $Tuple3(([IntegerEntry( | |
1884 | + | let hO = bN(gd._1) | |
1885 | + | let ir = hN(hO) | |
1886 | + | let jT = split(ir[bo], "_") | |
1887 | + | let jU = fraction(cF, (jl * ao), cL) | |
1888 | + | let jV = makeString(fg(fh, jT, jU), "_") | |
1889 | + | let jW = jM(c, gd._2, jl, eE) | |
1890 | + | let jX = jW._5 | |
1891 | + | let jY = hP(jX[bd]) | |
1892 | + | let jZ = makeString([split(jX[bd], "_")[0], toString(ao)], "_") | |
1893 | + | let ka = hP(jZ) | |
1894 | + | let ij = split(jX[bh], "_") | |
1895 | + | let kb = makeString([ij[bi], ij[bj], toString(((parseIntValue(ij[bk]) + ka) - jY)), toString(ka)], "_") | |
1896 | + | $Tuple3(([IntegerEntry(jP, ao), IntegerEntry(ex(gd._2, c), ao), StringEntry(hO, makeString([ir[bm], jW._3[bn], jV, ir[bp]], ":")), StringEntry(jW._4, makeString([jZ, jX[be], jX[bf], jX[bg], kb], ":"))] ++ jW._1), ao, jU) | |
2119 | 1897 | } | |
2120 | 1898 | } | |
2121 | 1899 | } | |
2122 | 1900 | } | |
2123 | 1901 | ||
2124 | 1902 | ||
2125 | - | func | |
2126 | - | let ai = valueOrElse(getInteger( | |
2127 | - | let an = (ai + | |
2128 | - | let | |
2129 | - | $Tuple2([IntegerEntry( | |
2130 | - | } | |
2131 | - | ||
2132 | - | ||
2133 | - | func | |
2134 | - | ||
2135 | - | ||
2136 | - | func | |
2137 | - | ||
2138 | - | ||
2139 | - | func | |
2140 | - | let B = valueOrErrorMessage(getString( | |
2141 | - | let | |
2142 | - | let | |
2143 | - | if (!(isDefined( | |
1903 | + | func kc (kd,ke,kf,kg) = { | |
1904 | + | let ai = valueOrElse(getInteger(ke), 0) | |
1905 | + | let an = (ai + kg) | |
1906 | + | let kh = al(valueOrElse(getInteger(kd), 0), an) | |
1907 | + | $Tuple2([IntegerEntry(kd, kh[0]), IntegerEntry(ke, an), IntegerEntry(kf, (valueOrElse(getInteger(kf), 0) + kh[1]))], an) | |
1908 | + | } | |
1909 | + | ||
1910 | + | ||
1911 | + | func ki (B,kg) = kc(E(B), D(B), F(B), kg) | |
1912 | + | ||
1913 | + | ||
1914 | + | func kj (c,kg) = kc(I(c), H(c), J(c), kg) | |
1915 | + | ||
1916 | + | ||
1917 | + | func kk (c) = { | |
1918 | + | let B = valueOrErrorMessage(getString(bM(c)), "You don't have a duck staked") | |
1919 | + | let kl = bH(c) | |
1920 | + | let km = getString(kl) | |
1921 | + | if (!(isDefined(km))) | |
2144 | 1922 | then throw("You are not eligible for ONBOARD artifact") | |
2145 | 1923 | else { | |
2146 | - | let | |
2147 | - | let | |
2148 | - | if (isDefined( | |
2149 | - | then throw(("You already used your ONBOARD artifact on duck " + value( | |
1924 | + | let kn = bJ(c) | |
1925 | + | let ko = getString(kn) | |
1926 | + | if (isDefined(ko)) | |
1927 | + | then throw(("You already used your ONBOARD artifact on duck " + value(ko))) | |
2150 | 1928 | else { | |
2151 | - | let | |
2152 | - | let | |
2153 | - | if (isDefined( | |
2154 | - | then throw(((("The duck " + B) + " already got points from ONBOARD artifact from user ") + value( | |
2155 | - | else ([StringEntry( | |
1929 | + | let kp = bI(B) | |
1930 | + | let kq = getString(kp) | |
1931 | + | if (isDefined(kq)) | |
1932 | + | then throw(((("The duck " + B) + " already got points from ONBOARD artifact from user ") + value(kq))) | |
1933 | + | else ([StringEntry(kn, B), StringEntry(kp, c)] ++ ki(B, af)._1) | |
2156 | 1934 | } | |
2157 | 1935 | } | |
2158 | 1936 | } | |
2159 | 1937 | ||
2160 | 1938 | ||
2161 | - | func | |
2162 | - | let | |
2163 | - | let Q = | |
2164 | - | let | |
2165 | - | let | |
2166 | - | if ((valueOrElse(getInteger( | |
1939 | + | func kr (c,jr) = { | |
1940 | + | let gd = jp(c, eE, jr) | |
1941 | + | let Q = gd._2 | |
1942 | + | let jl = dK(gd._3[do]) | |
1943 | + | let ks = bx(aH, Q) | |
1944 | + | if ((valueOrElse(getInteger(ks), 0) > 0)) | |
2167 | 1945 | then throw("Presale artifact is already activated") | |
2168 | - | else if ((parseIntValue( | |
1946 | + | else if ((parseIntValue(gd._3[dn]) > er)) | |
2169 | 1947 | then throw((((aF + " ") + Q) + " is not eligible for presale artifact")) | |
2170 | 1948 | else { | |
2171 | - | let | |
2172 | - | ((( | |
1949 | + | let jW = jM(c, Q, jl, eE) | |
1950 | + | (((jW._1 :+ IntegerEntry(ks, jl)) :+ StringEntry(jW._2, makeString(jW._3, ":"))) :+ StringEntry(jW._4, makeString(jW._5, ":"))) | |
2173 | 1951 | } | |
2174 | 1952 | } | |
2175 | 1953 | ||
2176 | 1954 | ||
2177 | - | func | |
2178 | - | let | |
2179 | - | let | |
1955 | + | func kt (B) = { | |
1956 | + | let cj = valueOrElse(getInteger(dl, bU), 0) | |
1957 | + | let jt = split(valueOrElse(getString(bO(B)), aM), "_") | |
2180 | 1958 | let aA = lastBlock.timestamp | |
2181 | - | let | |
2182 | - | let | |
2183 | - | let | |
2184 | - | if (( | |
1959 | + | let cl = cd(dl, cj) | |
1960 | + | let cf = cl[bZ] | |
1961 | + | let cg = cl[ca] | |
1962 | + | if ((jt[br] != "T")) | |
2185 | 1963 | then false | |
2186 | - | else if (if (if ((parseIntValue( | |
2187 | - | then ( | |
1964 | + | else if (if (if ((parseIntValue(jt[bq]) == cj)) | |
1965 | + | then (cg[cc] == "INPROGRESS") | |
2188 | 1966 | else false) | |
2189 | - | then (parseIntValue( | |
1967 | + | then (parseIntValue(cf[cb]) > aA) | |
2190 | 1968 | else false) | |
2191 | 1969 | then throw("Your duck is taking part in the tournament") | |
2192 | - | else | |
2193 | - | } | |
2194 | - | ||
2195 | - | ||
2196 | - | func | |
2197 | - | let | |
1970 | + | else dJ(invoke(this, "exitTournamentInternal", [B], nil)) | |
1971 | + | } | |
1972 | + | ||
1973 | + | ||
1974 | + | func ku (B) = { | |
1975 | + | let jt = split(valueOrElse(getString(bO(B)), aM), "_") | |
2198 | 1976 | let aA = lastBlock.timestamp | |
2199 | - | if (( | |
1977 | + | if ((jt[br] != "D")) | |
2200 | 1978 | then false | |
2201 | 1979 | else { | |
2202 | - | let | |
2203 | - | let | |
2204 | - | if (if ((( | |
2205 | - | then (1 > | |
1980 | + | let cn = parseIntValue(jt[bq]) | |
1981 | + | let co = parseIntValue(jt[bs]) | |
1982 | + | if (if (((cn + aQ) > aA)) | |
1983 | + | then (1 > co) | |
2206 | 1984 | else false) | |
2207 | 1985 | then throw("Your duck is on delivery mission") | |
2208 | - | else | |
2209 | - | } | |
2210 | - | } | |
2211 | - | ||
2212 | - | ||
2213 | - | func | |
2214 | - | let | |
1986 | + | else dJ(invoke(this, "exitDeliveryInternal", [B], nil)) | |
1987 | + | } | |
1988 | + | } | |
1989 | + | ||
1990 | + | ||
1991 | + | func kv (B,fM,iY,kw) = { | |
1992 | + | let jt = split(valueOrElse(getString(bO(B)), aM), "_") | |
2215 | 1993 | let aA = lastBlock.timestamp | |
2216 | - | let | |
2217 | - | let | |
2218 | - | let | |
2219 | - | let | |
2220 | - | let | |
2221 | - | let | |
1994 | + | let cn = parseIntValue(jt[bq]) | |
1995 | + | let co = parseIntValue(jt[bs]) | |
1996 | + | let jy = valueOrErrorMessage(getString(bL(B)), "NFT duck is orphaned") | |
1997 | + | let kx = A(B) | |
1998 | + | let ky = getIntegerValue(kx) | |
1999 | + | let kz = if (if ((co > 0)) | |
2222 | 2000 | then true | |
2223 | - | else if (if ( | |
2224 | - | then ( | |
2001 | + | else if (if (fM) | |
2002 | + | then (kw > 0) | |
2225 | 2003 | else false) | |
2226 | - | then ( | |
2004 | + | then (iY > 0) | |
2227 | 2005 | else false) | |
2228 | 2006 | then { | |
2229 | - | let | |
2230 | - | if (( | |
2007 | + | let kA = invoke(di, "sendDeliveryReward", [jy], nil) | |
2008 | + | if ((kA == kA)) | |
2231 | 2009 | then { | |
2232 | - | let | |
2233 | - | [IntegerEntry( | |
2010 | + | let kB = V(jy) | |
2011 | + | [IntegerEntry(kB, (valueOrElse(getInteger(kB), 0) + 1)), IntegerEntry(W(jy), (cn / a))] | |
2234 | 2012 | } | |
2235 | 2013 | else throw("Strict value is not equal to itself.") | |
2236 | 2014 | } | |
2237 | - | else if (if (if ( | |
2238 | - | then ( | |
2015 | + | else if (if (if (fM) | |
2016 | + | then (iY > 0) | |
2239 | 2017 | else false) | |
2240 | - | then (( | |
2018 | + | then ((cn + aQ) > aA) | |
2241 | 2019 | else false) | |
2242 | 2020 | then throw("Your duck is still on delivery mission") | |
2243 | 2021 | else { | |
2244 | - | let | |
2245 | - | let | |
2246 | - | if (( | |
2247 | - | then if (if (if ( | |
2248 | - | then (0 >= | |
2022 | + | let kC = valueOrElse(getInteger(di, bT), 0) | |
2023 | + | let kD = invoke(di, "updateDeliveryLocked", [(kC - aP)], nil) | |
2024 | + | if ((kD == kD)) | |
2025 | + | then if (if (if (fM) | |
2026 | + | then (0 >= iY) | |
2249 | 2027 | else false) | |
2250 | 2028 | then true | |
2251 | - | else (0 >= | |
2029 | + | else (0 >= ky)) | |
2252 | 2030 | then nil | |
2253 | - | else [IntegerEntry(U(B), ( | |
2031 | + | else [IntegerEntry(U(B), (cn + cH))] | |
2254 | 2032 | else throw("Strict value is not equal to itself.") | |
2255 | 2033 | } | |
2256 | - | let | |
2257 | - | $Tuple3( | |
2258 | - | } | |
2259 | - | ||
2260 | - | ||
2261 | - | func | |
2262 | - | let B = valueOrErrorMessage(getString( | |
2263 | - | if ( | |
2034 | + | let kE = getStringValue(L(B)) | |
2035 | + | $Tuple3(kz, [StringEntry(bO(B), kE)], kE) | |
2036 | + | } | |
2037 | + | ||
2038 | + | ||
2039 | + | func kF (kG,ao,kH,c,kI,kJ) = { | |
2040 | + | let B = valueOrErrorMessage(getString(bM(c)), "You don't have a duck staked") | |
2041 | + | if (kt(B)) | |
2264 | 2042 | then throw("mergeInternal_checkTournament") | |
2265 | - | else if ( | |
2043 | + | else if (ku(B)) | |
2266 | 2044 | then throw("mergeInternal_checkDelivery") | |
2267 | 2045 | else { | |
2268 | - | func | |
2269 | - | let | |
2270 | - | let | |
2271 | - | let | |
2272 | - | let | |
2273 | - | if (( | |
2046 | + | func kK (eU,Q) = { | |
2047 | + | let jv = value(assetInfo(fromBase58String(Q))) | |
2048 | + | let jw = bw(Q) | |
2049 | + | let jx = valueOrErrorMessage(getInteger(jw), (("NFT " + jv.name) + " is not staked")) | |
2050 | + | let jy = valueOrErrorMessage(getString(bt(Q)), (("NFT " + jv.name) + " is orphaned")) | |
2051 | + | if ((jy != c)) | |
2274 | 2052 | then throw((aF + " is not yours")) | |
2275 | 2053 | else { | |
2276 | - | let | |
2277 | - | let | |
2278 | - | if (if (( | |
2279 | - | then ( | |
2054 | + | let jz = split(jv.description, "_") | |
2055 | + | let dz = jz[dq] | |
2056 | + | if (if ((eU._3 != "")) | |
2057 | + | then (eU._3 != dz) | |
2280 | 2058 | else false) | |
2281 | 2059 | then throw("Lands should be on the same continent to merge") | |
2282 | 2060 | else { | |
2283 | - | let | |
2284 | - | let | |
2285 | - | let | |
2286 | - | let | |
2287 | - | let | |
2288 | - | let | |
2289 | - | let | |
2290 | - | let | |
2291 | - | let | |
2292 | - | if (("S" == | |
2061 | + | let dL = jz[do] | |
2062 | + | let kL = eU._1 | |
2063 | + | let gN = valueOrErrorMessage(indexOf(kL, dL), "You haven't passed all the lands needed") | |
2064 | + | let kM = (take(kL, gN) + drop(kL, (gN + 1))) | |
2065 | + | let jl = dK(dL) | |
2066 | + | let kN = (eU._2 + valueOrElse(getInteger(bx(aH, Q)), 0)) | |
2067 | + | let id = valueOrElse(getInteger(bD(Q)), 0) | |
2068 | + | let kO = { | |
2069 | + | let cD = dL | |
2070 | + | if (("S" == cD)) | |
2293 | 2071 | then 3 | |
2294 | - | else if (("M" == | |
2072 | + | else if (("M" == cD)) | |
2295 | 2073 | then 4 | |
2296 | - | else if (("L" == | |
2074 | + | else if (("L" == cD)) | |
2297 | 2075 | then 5 | |
2298 | - | else if (("XL" == | |
2076 | + | else if (("XL" == cD)) | |
2299 | 2077 | then 6 | |
2300 | 2078 | else throw("Only S, M, L, XL can merge") | |
2301 | 2079 | } | |
2302 | - | if (( | |
2080 | + | if ((id != kO)) | |
2303 | 2081 | then throw("All lands should be maxed to merge") | |
2304 | 2082 | else { | |
2305 | - | let | |
2306 | - | let | |
2307 | - | let | |
2308 | - | if ((0 > | |
2309 | - | then throw(((("Saved timestamp is in future, saved = " + toString( | |
2083 | + | let ew = jz[dn] | |
2084 | + | let gJ = gP(jz[dp]) | |
2085 | + | let gT = (lastBlock.timestamp - jx) | |
2086 | + | if ((0 > gT)) | |
2087 | + | then throw(((("Saved timestamp is in future, saved = " + toString(jx)) + ", current = ") + toString(lastBlock.timestamp))) | |
2310 | 2088 | else { | |
2311 | - | let | |
2312 | - | let | |
2313 | - | let | |
2314 | - | let | |
2315 | - | let | |
2316 | - | let | |
2317 | - | let | |
2318 | - | let | |
2319 | - | if (!(isDefined( | |
2089 | + | let jB = jk(Q, jl) | |
2090 | + | let ic = (jl / cL) | |
2091 | + | let jJ = gR(split(eU._4, "_"), gJ, gT, ic, jB) | |
2092 | + | let fe = gH(eU._6, gJ, ic, -1) | |
2093 | + | let kP = gH(eU._10, gJ, ic, -1) | |
2094 | + | let hx = gH(eU._9, gJ, ic, 1) | |
2095 | + | let kQ = eU._7 | |
2096 | + | let dg = indexOf(kQ, Q) | |
2097 | + | if (!(isDefined(dg))) | |
2320 | 2098 | then throw(("Your staked lands don't contain " + Q)) | |
2321 | 2099 | else { | |
2322 | - | let | |
2323 | - | let | |
2324 | - | $Tuple10( | |
2325 | - | then [DeleteEntry( | |
2326 | - | else nil)), | |
2100 | + | let kR = bv(Q) | |
2101 | + | let kS = valueOrElse(getString(kR), "") | |
2102 | + | $Tuple10(kM, kN, dz, jJ, ((((((((((((eU._5 :+ DeleteEntry(bw(Q))) :+ DeleteEntry(bz(aF, Q, c))) :+ DeleteEntry(ev(ew))) :+ DeleteEntry(bt(Q))) :+ DeleteEntry(bD(Q))) :+ DeleteEntry(ex(Q, c))) :+ DeleteEntry(bx(aH, Q))) :+ DeleteEntry(ey(ew))) :+ DeleteEntry(bC(Q))) :+ DeleteEntry(kR)) :+ Burn(fromBase58String(Q), 1)) ++ (if ((kS != "")) | |
2103 | + | then [DeleteEntry(et(kS))] | |
2104 | + | else nil)), fe, removeByIndex(kQ, value(dg)), (eU._8 + jl), hx, kP) | |
2327 | 2105 | } | |
2328 | 2106 | } | |
2329 | 2107 | } | |
2330 | 2108 | } | |
2331 | 2109 | } | |
2332 | 2110 | } | |
2333 | 2111 | ||
2334 | - | let | |
2335 | - | let | |
2336 | - | let | |
2337 | - | let | |
2338 | - | let | |
2339 | - | let | |
2340 | - | then split_51C(value( | |
2112 | + | let hO = bN(B) | |
2113 | + | let ir = hN(hO) | |
2114 | + | let gI = split(valueOrElse(getString(dx()), "0_0_0_0_0_0"), "_") | |
2115 | + | let kT = dA(c) | |
2116 | + | let kU = getString(kT) | |
2117 | + | let kV = if (isDefined(kU)) | |
2118 | + | then split_51C(value(kU), "_") | |
2341 | 2119 | else nil | |
2342 | - | let | |
2343 | - | let | |
2344 | - | let | |
2345 | - | let | |
2346 | - | let | |
2347 | - | let | |
2348 | - | func | |
2349 | - | then | |
2350 | - | else | |
2351 | - | ||
2352 | - | func | |
2353 | - | then | |
2120 | + | let kW = split(value(assetInfo(fromBase58String(kI[0]))).description, "_")[dq] | |
2121 | + | let kX = split(valueOrElse(getString(dy(kW)), "0_0_0_0_0_0"), "_") | |
2122 | + | let ff = { | |
2123 | + | let eW = kI | |
2124 | + | let eX = size(eW) | |
2125 | + | let eY = $Tuple10(kH, 0, "", ir[bn], nil, gI, kV, 0, split("0_0_0_0_0_0", "_"), kX) | |
2126 | + | func eZ (fa,fb) = if ((fb >= eX)) | |
2127 | + | then fa | |
2128 | + | else kK(fa, eW[fb]) | |
2129 | + | ||
2130 | + | func fc (fa,fb) = if ((fb >= eX)) | |
2131 | + | then fa | |
2354 | 2132 | else throw("List size exceeds 5") | |
2355 | 2133 | ||
2356 | - | | |
2134 | + | fc(eZ(eZ(eZ(eZ(eZ(eY, 0), 1), 2), 3), 4), 5) | |
2357 | 2135 | } | |
2358 | - | let | |
2359 | - | let | |
2360 | - | let | |
2361 | - | let | |
2362 | - | let | |
2363 | - | let | |
2364 | - | let | |
2365 | - | let | |
2366 | - | let | |
2367 | - | let | |
2368 | - | let | |
2369 | - | $Tuple2(((((((((((((((( | |
2370 | - | then StringEntry( | |
2371 | - | else DeleteEntry( | |
2136 | + | let dz = ff._3 | |
2137 | + | let hr = valueOrErrorMessage(indexOf(aU, dz), ("Unknown continent: " + dz)) | |
2138 | + | let gQ = hw(ff._9, (dK(kG) / cL)) | |
2139 | + | let iP = valueOrElse(getInteger(es()), (er + 1)) | |
2140 | + | let kY = toString(iP) | |
2141 | + | let iQ = Issue(eJ(kY, kG), makeString([kY, kG, gQ, dz], "_"), 1, 0, false) | |
2142 | + | let bu = calculateAssetId(iQ) | |
2143 | + | let kZ = toBase58String(bu) | |
2144 | + | let jV = makeString(fg((kJ > 0), split(ir[bo], "_"), kJ), "_") | |
2145 | + | let la = dB(c) | |
2146 | + | let lb = valueOrElse(getInteger(la), 0) | |
2147 | + | $Tuple2((((((((((((((((ff._5 :+ (if ((size(ff._7) > 0)) | |
2148 | + | then StringEntry(kT, makeString_11C(ff._7, "_")) | |
2149 | + | else DeleteEntry(kT))) :+ IntegerEntry(la, if ((ff._8 > lb)) | |
2372 | 2150 | then 0 | |
2373 | - | else ( | |
2151 | + | else (lb - ff._8))) :+ IntegerEntry(es(), (iP + 1))) :+ iQ) :+ StringEntry(ev(kY), kZ)) :+ StringEntry(bt(kZ), c)) :+ StringEntry(ey(kY), c)) :+ IntegerEntry(bx(aH, kZ), ff._2)) :+ IntegerEntry(bD(kZ), ao)) :+ IntegerEntry(ex(kZ, c), ao)) :+ StringEntry(hO, makeString([ir[bm], ff._4, jV, ir[bp]], ":"))) :+ StringEntry(dx(), makeString(ff._6, "_"))) :+ StringEntry(dy(dz), makeString(ff._10, "_"))) :+ StringEntry(bO(B), makeString([dz, "L", kZ], "_"))) :+ ScriptTransfer(addressFromStringValue(c), 1, bu)), kZ) | |
2374 | 2152 | } | |
2375 | 2153 | } | |
2376 | 2154 | ||
2377 | 2155 | ||
2378 | - | func | |
2379 | - | ||
2380 | - | ||
2381 | - | func | |
2382 | - | ||
2383 | - | ||
2384 | - | func | |
2385 | - | ||
2386 | - | ||
2387 | - | func | |
2388 | - | ||
2389 | - | ||
2390 | - | func | |
2391 | - | let | |
2392 | - | if ((4 == | |
2393 | - | then | |
2394 | - | else if ((3 == | |
2395 | - | then | |
2396 | - | else if ((5 == | |
2397 | - | then | |
2398 | - | else if ((2 == | |
2399 | - | then | |
2156 | + | func lc (c,kI) = kF("M", 3, "SSSS", c, kI, 0) | |
2157 | + | ||
2158 | + | ||
2159 | + | func ld (c,kI) = kF("L", 4, "SMM", c, kI, (cF * 4)) | |
2160 | + | ||
2161 | + | ||
2162 | + | func le (c,kI) = kF("XL", 5, "SSSML", c, kI, (cF * 47)) | |
2163 | + | ||
2164 | + | ||
2165 | + | func lf (c,kI) = kF("XXL", 6, "LXL", c, kI, (cF * 54)) | |
2166 | + | ||
2167 | + | ||
2168 | + | func lg (c,kI) = { | |
2169 | + | let cD = size(kI) | |
2170 | + | if ((4 == cD)) | |
2171 | + | then lc(c, kI) | |
2172 | + | else if ((3 == cD)) | |
2173 | + | then ld(c, kI) | |
2174 | + | else if ((5 == cD)) | |
2175 | + | then le(c, kI) | |
2176 | + | else if ((2 == cD)) | |
2177 | + | then lf(c, kI) | |
2400 | 2178 | else throw("Unknown merge") | |
2401 | 2179 | } | |
2402 | 2180 | ||
2403 | 2181 | ||
2404 | - | func | |
2405 | - | let | |
2406 | - | if (isDefined( | |
2182 | + | func lh (bQ) = { | |
2183 | + | let li = getString(bM(bQ)) | |
2184 | + | if (isDefined(li)) | |
2407 | 2185 | then { | |
2408 | - | let B = value( | |
2409 | - | let | |
2410 | - | let | |
2411 | - | let | |
2412 | - | if (if (( | |
2186 | + | let B = value(li) | |
2187 | + | let lj = bO(B) | |
2188 | + | let ck = split(valueOrElse(getString(lj), aM), "_") | |
2189 | + | let cn = parseIntValue(ck[bq]) | |
2190 | + | if (if ((ck[br] != "D")) | |
2413 | 2191 | then true | |
2414 | - | else (( | |
2192 | + | else ((cn + aQ) > lastBlock.timestamp)) | |
2415 | 2193 | then nil | |
2416 | 2194 | else { | |
2417 | - | let | |
2418 | - | if ((parseIntValue( | |
2195 | + | let kx = A(B) | |
2196 | + | if ((parseIntValue(ck[bs]) > 0)) | |
2419 | 2197 | then { | |
2420 | - | let | |
2421 | - | if (( | |
2198 | + | let kA = invoke(di, "sendDeliveryReward", [bQ], nil) | |
2199 | + | if ((kA == kA)) | |
2422 | 2200 | then nil | |
2423 | 2201 | else throw("Strict value is not equal to itself.") | |
2424 | 2202 | } | |
2425 | 2203 | else (({ | |
2426 | - | let | |
2427 | - | let | |
2428 | - | if (( | |
2429 | - | then if ((0 >= getIntegerValue( | |
2204 | + | let kC = valueOrElse(getInteger(di, bT), 0) | |
2205 | + | let kD = invoke(di, "updateDeliveryLocked", [(kC - aP)], nil) | |
2206 | + | if ((kD == kD)) | |
2207 | + | then if ((0 >= getIntegerValue(kx))) | |
2430 | 2208 | then nil | |
2431 | 2209 | else { | |
2432 | - | let | |
2433 | - | if (( | |
2210 | + | let lk = invoke(this, "saveInteger", [U(B), (cn + cH)], nil) | |
2211 | + | if ((lk == lk)) | |
2434 | 2212 | then nil | |
2435 | 2213 | else throw("Strict value is not equal to itself.") | |
2436 | 2214 | } | |
2437 | 2215 | else throw("Strict value is not equal to itself.") | |
2438 | - | } :+ IntegerEntry( | |
2216 | + | } :+ IntegerEntry(kx, getIntegerValue(K(B)))) :+ StringEntry(lj, getStringValue(L(B)))) | |
2439 | 2217 | } | |
2440 | 2218 | } | |
2441 | 2219 | else nil | |
2442 | 2220 | } | |
2443 | 2221 | ||
2444 | 2222 | ||
2445 | - | func | |
2446 | - | then valueOrElse(getBoolean( | |
2223 | + | func ll (gN) = if (if ((gN.originCaller != dh)) | |
2224 | + | then valueOrElse(getBoolean(dN()), false) | |
2447 | 2225 | else false) | |
2448 | 2226 | then throw("Contracts are under maintenance") | |
2449 | 2227 | else { | |
2450 | - | let | |
2451 | - | ( | |
2228 | + | let bQ = toString(gN.originCaller) | |
2229 | + | (lh(bQ) :+ StringEntry(dO(bQ), toBase58String(gN.transactionId))) | |
2452 | 2230 | } | |
2453 | 2231 | ||
2454 | 2232 | ||
2455 | - | func | |
2456 | - | then valueOrElse(getBoolean( | |
2233 | + | func lm (gN) = if (if ((gN.originCaller != dh)) | |
2234 | + | then valueOrElse(getBoolean(dN()), false) | |
2457 | 2235 | else false) | |
2458 | 2236 | then throw("Contracts are under maintenance") | |
2459 | - | else [StringEntry( | |
2460 | - | ||
2461 | - | ||
2462 | - | @Callable( | |
2463 | - | func constructorV1 ( | |
2237 | + | else [StringEntry(dO(toString(gN.originCaller)), toBase58String(gN.transactionId))] | |
2238 | + | ||
2239 | + | ||
2240 | + | @Callable(gN) | |
2241 | + | func constructorV1 (ln) = if ((gN.caller != this)) | |
2464 | 2242 | then throw("Permission denied") | |
2465 | - | else [StringEntry( | |
2466 | - | ||
2467 | - | ||
2468 | - | ||
2469 | - | @Callable( | |
2470 | - | func saveInteger ( | |
2243 | + | else [StringEntry(db(), ln)] | |
2244 | + | ||
2245 | + | ||
2246 | + | ||
2247 | + | @Callable(gN) | |
2248 | + | func saveInteger (cT,eL) = if ((gN.caller != this)) | |
2471 | 2249 | then throw("saveInteger is not public method") | |
2472 | - | else [IntegerEntry( | |
2473 | - | ||
2474 | - | ||
2475 | - | ||
2476 | - | @Callable( | |
2477 | - | func setBlocked ( | |
2250 | + | else [IntegerEntry(cT, eL)] | |
2251 | + | ||
2252 | + | ||
2253 | + | ||
2254 | + | @Callable(gN) | |
2255 | + | func setBlocked (lo) = if ((gN.caller != this)) | |
2478 | 2256 | then throw("permission denied") | |
2479 | - | else [BooleanEntry( | |
2480 | - | ||
2481 | - | ||
2482 | - | ||
2483 | - | @Callable( | |
2257 | + | else [BooleanEntry(dN(), lo)] | |
2258 | + | ||
2259 | + | ||
2260 | + | ||
2261 | + | @Callable(gN) | |
2484 | 2262 | func stakeLand () = { | |
2485 | - | let | |
2486 | - | if ((size( | |
2263 | + | let lp = ll(gN) | |
2264 | + | if ((size(gN.payments) != 1)) | |
2487 | 2265 | then throw("Exactly one payment required") | |
2488 | 2266 | else { | |
2489 | - | let | |
2490 | - | let | |
2491 | - | let | |
2492 | - | if (( | |
2267 | + | let lq = value(gN.payments[0]) | |
2268 | + | let bu = value(lq.assetId) | |
2269 | + | let cS = toString(gN.caller) | |
2270 | + | if ((lq.amount != 1)) | |
2493 | 2271 | then throw((("NFT " + aF) + " token should be attached as payment")) | |
2494 | 2272 | else { | |
2495 | - | let | |
2496 | - | if (( | |
2273 | + | let jv = value(assetInfo(bu)) | |
2274 | + | if ((jv.issuer != this)) | |
2497 | 2275 | then throw("Unknown issuer of token") | |
2498 | - | else if (!(contains( | |
2276 | + | else if (!(contains(jv.name, aF))) | |
2499 | 2277 | then throw((("Only NFT " + aF) + " tokens are accepted")) | |
2500 | 2278 | else { | |
2501 | - | let | |
2502 | - | let | |
2503 | - | then dropRight( | |
2504 | - | else if (contains( | |
2505 | - | then dropRight( | |
2506 | - | else dropRight( | |
2507 | - | if (!(isDefined(parseInt( | |
2508 | - | then throw(("Cannot parse land number from " + | |
2279 | + | let lr = drop(jv.name, 4) | |
2280 | + | let ew = if (contains(lr, "XXL")) | |
2281 | + | then dropRight(lr, 3) | |
2282 | + | else if (contains(lr, "XL")) | |
2283 | + | then dropRight(lr, 2) | |
2284 | + | else dropRight(lr, 1) | |
2285 | + | if (!(isDefined(parseInt(ew)))) | |
2286 | + | then throw(("Cannot parse land number from " + jv.name)) | |
2509 | 2287 | else { | |
2510 | - | let Q = toBase58String( | |
2511 | - | let | |
2512 | - | if (isDefined(getInteger( | |
2513 | - | then throw((("NFT " + | |
2288 | + | let Q = toBase58String(bu) | |
2289 | + | let jw = bw(Q) | |
2290 | + | if (isDefined(getInteger(jw))) | |
2291 | + | then throw((("NFT " + jv.name) + " is already staked")) | |
2514 | 2292 | else { | |
2515 | - | let | |
2516 | - | let | |
2517 | - | let | |
2518 | - | let | |
2519 | - | let | |
2520 | - | let | |
2521 | - | let | |
2522 | - | let | |
2523 | - | let | |
2524 | - | let | |
2525 | - | let | |
2526 | - | then split_51C(value( | |
2293 | + | let jz = split(jv.description, "_") | |
2294 | + | let gJ = gP(jz[dp]) | |
2295 | + | let jl = dK(jz[do]) | |
2296 | + | let ic = (jl / cL) | |
2297 | + | let fe = gO(gJ, ic, 1) | |
2298 | + | let ls = dy(jz[dq]) | |
2299 | + | let kX = split(valueOrElse(getString(ls), "0_0_0_0_0_0"), "_") | |
2300 | + | let lt = makeString(gH(kX, gJ, ic, 1), "_") | |
2301 | + | let kT = dA(cS) | |
2302 | + | let kU = getString(kT) | |
2303 | + | let kQ = if (isDefined(kU)) | |
2304 | + | then split_51C(value(kU), "_") | |
2527 | 2305 | else nil | |
2528 | - | if (containsElement( | |
2306 | + | if (containsElement(kQ, Q)) | |
2529 | 2307 | then throw(("Your staked lands already contain " + Q)) | |
2530 | - | else if ((size( | |
2531 | - | then throw((("Your already staked max (" + toString( | |
2308 | + | else if ((size(kQ) >= aJ)) | |
2309 | + | then throw((("Your already staked max (" + toString(aJ)) + ") lands")) | |
2532 | 2310 | else { | |
2533 | - | let | |
2534 | - | let | |
2535 | - | let | |
2536 | - | let | |
2537 | - | $Tuple2(([IntegerEntry( | |
2311 | + | let id = valueOrElse(getInteger(bD(Q)), 0) | |
2312 | + | let la = dB(cS) | |
2313 | + | let lu = valueOrElse(getInteger(la), 0) | |
2314 | + | let lv = invoke(dk, "onStakeUnstakeLand", [cS], nil) | |
2315 | + | $Tuple2(([IntegerEntry(jw, lastBlock.timestamp), IntegerEntry(bz(aF, Q, cS), lastBlock.timestamp), StringEntry(kT, makeString_11C((kQ :+ Q), "_")), IntegerEntry(la, (lu + jl)), StringEntry(bt(Q), cS), StringEntry(ey(ew), cS), IntegerEntry(ex(Q, cS), id), StringEntry(dx(), fe), StringEntry(ls, lt)] ++ lp), lv) | |
2538 | 2316 | } | |
2539 | 2317 | } | |
2540 | 2318 | } | |
2541 | 2319 | } | |
2542 | 2320 | } | |
2543 | 2321 | } | |
2544 | 2322 | } | |
2545 | 2323 | ||
2546 | 2324 | ||
2547 | 2325 | ||
2548 | - | @Callable( | |
2549 | - | func unstakeLand ( | |
2550 | - | let | |
2551 | - | if ((size( | |
2326 | + | @Callable(gN) | |
2327 | + | func unstakeLand (jr) = { | |
2328 | + | let lp = ll(gN) | |
2329 | + | if ((size(gN.payments) != 0)) | |
2552 | 2330 | then throw("No payments required") | |
2553 | 2331 | else { | |
2554 | - | let c = toString( | |
2555 | - | let | |
2556 | - | let Q = | |
2557 | - | let | |
2558 | - | let | |
2559 | - | let | |
2560 | - | let | |
2561 | - | let | |
2562 | - | let | |
2563 | - | let | |
2564 | - | let | |
2565 | - | let | |
2566 | - | let | |
2567 | - | let | |
2568 | - | let | |
2569 | - | if (!(isDefined( | |
2332 | + | let c = toString(gN.caller) | |
2333 | + | let gd = jp(c, eD, jr) | |
2334 | + | let Q = gd._2 | |
2335 | + | let jz = gd._3 | |
2336 | + | let kT = dA(c) | |
2337 | + | let gJ = gP(jz[dp]) | |
2338 | + | let jl = dK(jz[do]) | |
2339 | + | let ic = (jl / cL) | |
2340 | + | let fe = gO(gJ, ic, -1) | |
2341 | + | let ls = dy(jz[dq]) | |
2342 | + | let kX = split(valueOrElse(getString(ls), "0_0_0_0_0_0"), "_") | |
2343 | + | let lt = makeString(gH(kX, gJ, ic, -1), "_") | |
2344 | + | let jW = jM(c, Q, jl, eD) | |
2345 | + | let kQ = split_51C(valueOrElse(getString(kT), ""), "_") | |
2346 | + | let dg = indexOf(kQ, Q) | |
2347 | + | if (!(isDefined(dg))) | |
2570 | 2348 | then throw(("Your staked lands don't contain " + Q)) | |
2571 | 2349 | else { | |
2572 | 2350 | let aA = lastBlock.timestamp | |
2573 | - | let | |
2574 | - | if (( | |
2575 | - | then throw(("Your gWL are taking part in voting, cannot unstake until " + toString( | |
2351 | + | let lw = valueOrElse(getInteger(dj, bP(c)), 0) | |
2352 | + | if ((lw >= aA)) | |
2353 | + | then throw(("Your gWL are taking part in voting, cannot unstake until " + toString(lw))) | |
2576 | 2354 | else { | |
2577 | - | let | |
2578 | - | if (( | |
2579 | - | then throw(("Your staked lands took part in arbitrage, cannot unstake until " + toString( | |
2355 | + | let lx = (valueOrElse(getInteger(dk, b(c)), 0) + cG) | |
2356 | + | if ((lx > aA)) | |
2357 | + | then throw(("Your staked lands took part in arbitrage, cannot unstake until " + toString(lx))) | |
2580 | 2358 | else { | |
2581 | - | let | |
2582 | - | let | |
2583 | - | let | |
2359 | + | let la = dB(c) | |
2360 | + | let lb = valueOrElse(getInteger(la), 0) | |
2361 | + | let ly = if ((jl > lb)) | |
2584 | 2362 | then 0 | |
2585 | - | else ( | |
2586 | - | let | |
2587 | - | $Tuple2(([ScriptTransfer( | |
2588 | - | then StringEntry( | |
2589 | - | else DeleteEntry( | |
2363 | + | else (lb - jl) | |
2364 | + | let lv = invoke(dk, "onStakeUnstakeLand", [c], nil) | |
2365 | + | $Tuple2(([ScriptTransfer(gN.caller, 1, fromBase58String(Q)), DeleteEntry(bw(Q)), DeleteEntry(bz(aF, Q, c)), StringEntry(dx(), fe), StringEntry(ls, lt), StringEntry(jW._2, makeString(jW._3, ":")), if ((size(kQ) > 1)) | |
2366 | + | then StringEntry(kT, makeString_11C(removeByIndex(kQ, value(dg)), "_")) | |
2367 | + | else DeleteEntry(kT), IntegerEntry(la, ly)] ++ lp), lv) | |
2590 | 2368 | } | |
2591 | 2369 | } | |
2592 | 2370 | } | |
2593 | 2371 | } | |
2594 | 2372 | } | |
2595 | 2373 | ||
2596 | 2374 | ||
2597 | 2375 | ||
2598 | - | @Callable( | |
2376 | + | @Callable(gN) | |
2599 | 2377 | func stakeDuck () = { | |
2600 | - | let | |
2601 | - | if ((size( | |
2378 | + | let lp = ll(gN) | |
2379 | + | if ((size(gN.payments) != 1)) | |
2602 | 2380 | then throw("Exactly one payment required") | |
2603 | 2381 | else { | |
2604 | - | let | |
2605 | - | let | |
2606 | - | let | |
2607 | - | if (( | |
2382 | + | let lq = value(gN.payments[0]) | |
2383 | + | let bu = value(lq.assetId) | |
2384 | + | let cS = toString(gN.caller) | |
2385 | + | if ((lq.amount != 1)) | |
2608 | 2386 | then throw((("NFT " + aG) + " token should be attached as payment")) | |
2609 | 2387 | else { | |
2610 | - | let | |
2611 | - | if (if (( | |
2612 | - | then ( | |
2388 | + | let jv = value(assetInfo(bu)) | |
2389 | + | if (if ((jv.issuer != ea)) | |
2390 | + | then (jv.issuer != eb) | |
2613 | 2391 | else false) | |
2614 | 2392 | then throw((("Unknown issuer of " + aG) + " token")) | |
2615 | - | else if (!(contains( | |
2393 | + | else if (!(contains(jv.name, aG))) | |
2616 | 2394 | then throw((("Only NFT " + aG) + " tokens are accepted")) | |
2617 | 2395 | else { | |
2618 | - | let | |
2619 | - | let | |
2620 | - | if (isDefined(getInteger( | |
2621 | - | then throw((("NFT " + | |
2622 | - | else if (isDefined(getString( | |
2623 | - | then throw(("You already staked one duck: " + | |
2396 | + | let lz = toBase58String(bu) | |
2397 | + | let jw = bw(lz) | |
2398 | + | if (isDefined(getInteger(jw))) | |
2399 | + | then throw((("NFT " + jv.name) + " is already staked")) | |
2400 | + | else if (isDefined(getString(bM(cS)))) | |
2401 | + | then throw(("You already staked one duck: " + jv.name)) | |
2624 | 2402 | else { | |
2625 | - | let | |
2626 | - | let | |
2627 | - | let | |
2628 | - | let | |
2629 | - | let | |
2630 | - | let | |
2631 | - | let | |
2632 | - | ([IntegerEntry( | |
2403 | + | let lj = bO(lz) | |
2404 | + | let ci = getString(lj) | |
2405 | + | let hO = bN(lz) | |
2406 | + | let lA = getString(hO) | |
2407 | + | let je = A(lz) | |
2408 | + | let jf = aj(valueOrElse(getInteger(E(lz)), 0)) | |
2409 | + | let ky = valueOrElse(getInteger(je), jf) | |
2410 | + | ([IntegerEntry(jw, lastBlock.timestamp), IntegerEntry(bz(aG, toBase58String(bu), cS), lastBlock.timestamp), StringEntry(bL(lz), cS), StringEntry(bM(cS), lz)] ++ (if (isDefined(ci)) | |
2633 | 2411 | then nil | |
2634 | - | else ([StringEntry( | |
2412 | + | else ([StringEntry(lj, aM)] ++ (if (isDefined(lA)) | |
2635 | 2413 | then nil | |
2636 | - | else (([StringEntry( | |
2414 | + | else (([StringEntry(hO, "0:0_0_0_0_0_0:0_0_0_0_0_0:")] :+ IntegerEntry(je, ky)) ++ lp))))) | |
2637 | 2415 | } | |
2638 | 2416 | } | |
2639 | 2417 | } | |
2640 | 2418 | } | |
2641 | 2419 | } | |
2642 | 2420 | ||
2643 | 2421 | ||
2644 | 2422 | ||
2645 | - | @Callable( | |
2646 | - | func unstakeDuck ( | |
2647 | - | let | |
2648 | - | if ((size( | |
2423 | + | @Callable(gN) | |
2424 | + | func unstakeDuck (lz) = { | |
2425 | + | let lp = ll(gN) | |
2426 | + | if ((size(gN.payments) != 0)) | |
2649 | 2427 | then throw("No payments required") | |
2650 | 2428 | else { | |
2651 | - | let | |
2652 | - | let | |
2653 | - | let | |
2654 | - | let | |
2655 | - | if (!(isDefined(getInteger( | |
2656 | - | then throw((("NFT " + | |
2657 | - | else if (!(isDefined(getString( | |
2658 | - | then throw((("The duck " + | |
2429 | + | let bu = fromBase58String(lz) | |
2430 | + | let cS = toString(gN.caller) | |
2431 | + | let jv = value(assetInfo(bu)) | |
2432 | + | let jw = bw(lz) | |
2433 | + | if (!(isDefined(getInteger(jw)))) | |
2434 | + | then throw((("NFT " + jv.name) + " is not staked")) | |
2435 | + | else if (!(isDefined(getString(bM(cS))))) | |
2436 | + | then throw((("The duck " + jv.name) + " is not staked")) | |
2659 | 2437 | else { | |
2660 | - | let | |
2661 | - | if (( | |
2438 | + | let jy = valueOrErrorMessage(getString(bL(lz)), (("NFT " + jv.name) + " is orphaned")) | |
2439 | + | if ((jy != cS)) | |
2662 | 2440 | then throw("Staked NFT is not yours") | |
2663 | - | else if ( | |
2441 | + | else if (kt(lz)) | |
2664 | 2442 | then throw("unstakeDuck_checkTournament") | |
2665 | - | else if ( | |
2443 | + | else if (ku(lz)) | |
2666 | 2444 | then throw("unstakeDuck_checkDelivery") | |
2667 | 2445 | else { | |
2668 | - | let | |
2669 | - | let | |
2670 | - | let av = valueOrElse(getInteger( | |
2671 | - | if (( | |
2672 | - | then throw((("Please heal your duck to " + toString( | |
2673 | - | else ([ScriptTransfer( | |
2446 | + | let je = A(lz) | |
2447 | + | let jf = aj(valueOrElse(getInteger(E(lz)), 0)) | |
2448 | + | let av = valueOrElse(getInteger(je), jf) | |
2449 | + | if ((jf > av)) | |
2450 | + | then throw((("Please heal your duck to " + toString(jf)) + "hp before unstaking")) | |
2451 | + | else ([ScriptTransfer(gN.caller, 1, bu), DeleteEntry(jw), DeleteEntry(je), DeleteEntry(bO(lz)), DeleteEntry(bL(lz)), DeleteEntry(bz(aG, lz, cS)), DeleteEntry(bM(cS))] ++ lp) | |
2674 | 2452 | } | |
2675 | 2453 | } | |
2676 | 2454 | } | |
2677 | 2455 | } | |
2678 | 2456 | ||
2679 | 2457 | ||
2680 | 2458 | ||
2681 | - | @Callable( | |
2682 | - | func claimRes ( | |
2683 | - | let | |
2684 | - | if ((size( | |
2459 | + | @Callable(gN) | |
2460 | + | func claimRes (eL,lB) = { | |
2461 | + | let lp = ll(gN) | |
2462 | + | if ((size(gN.payments) != 0)) | |
2685 | 2463 | then throw("No payments required") | |
2686 | 2464 | else { | |
2687 | - | let c = toString( | |
2688 | - | let | |
2689 | - | let B = valueOrErrorMessage(getString( | |
2690 | - | $Tuple2((((( | |
2691 | - | } | |
2692 | - | } | |
2693 | - | ||
2694 | - | ||
2695 | - | ||
2696 | - | @Callable( | |
2697 | - | func claimResToWH ( | |
2698 | - | let | |
2699 | - | if ((size( | |
2465 | + | let c = toString(gN.originCaller) | |
2466 | + | let fm = jA(c, eL, eD, lB) | |
2467 | + | let B = valueOrErrorMessage(getString(bM(c)), "You don't have a duck staked") | |
2468 | + | $Tuple2(((((fm._1 ++ ki(B, fraction(X, eL, cK))._1) :+ StringEntry(fm._2, makeString(fm._3, ":"))) :+ StringEntry(fm._4, makeString(fm._5, ":"))) ++ lp), fm._3[bn]) | |
2469 | + | } | |
2470 | + | } | |
2471 | + | ||
2472 | + | ||
2473 | + | ||
2474 | + | @Callable(gN) | |
2475 | + | func claimResToWH (eL,lB) = { | |
2476 | + | let lp = ll(gN) | |
2477 | + | if ((size(gN.payments) != 0)) | |
2700 | 2478 | then throw("No payments required") | |
2701 | 2479 | else { | |
2702 | - | let c = toString( | |
2703 | - | let | |
2704 | - | $Tuple2((((( | |
2705 | - | } | |
2706 | - | } | |
2707 | - | ||
2708 | - | ||
2709 | - | ||
2710 | - | @Callable( | |
2711 | - | func flight ( | |
2712 | - | let | |
2713 | - | if ((size( | |
2480 | + | let c = toString(gN.originCaller) | |
2481 | + | let fm = jA(c, eL, eC, lB) | |
2482 | + | $Tuple2(((((fm._1 ++ kj(c, fraction(X, eL, cK))._1) :+ StringEntry(fm._2, makeString(fm._3, ":"))) :+ StringEntry(fm._4, makeString(fm._5, ":"))) ++ lp), fm._5[be]) | |
2483 | + | } | |
2484 | + | } | |
2485 | + | ||
2486 | + | ||
2487 | + | ||
2488 | + | @Callable(gN) | |
2489 | + | func flight (iT,iU) = { | |
2490 | + | let lp = lm(gN) | |
2491 | + | if ((size(gN.payments) != 0)) | |
2714 | 2492 | then throw("No payments required") | |
2715 | 2493 | else { | |
2716 | - | let | |
2717 | - | let | |
2718 | - | let | |
2719 | - | let B = | |
2720 | - | let | |
2721 | - | let | |
2722 | - | let | |
2723 | - | if (( | |
2494 | + | let bQ = toString(gN.caller) | |
2495 | + | let hs = iS(bQ, iT, iU) | |
2496 | + | let iY = hs._1 | |
2497 | + | let B = hs._2 | |
2498 | + | let lj = bO(B) | |
2499 | + | let jt = valueOrElse(getString(lj), aM) | |
2500 | + | let ja = hs._4 | |
2501 | + | if ((ja == jt)) | |
2724 | 2502 | then throw("You can't fly to the same location") | |
2725 | 2503 | else { | |
2726 | - | let | |
2727 | - | let | |
2728 | - | let | |
2729 | - | let | |
2730 | - | let | |
2731 | - | let | |
2732 | - | let | |
2733 | - | let | |
2734 | - | let | |
2735 | - | then if (!( | |
2736 | - | then | |
2737 | - | else if (( | |
2738 | - | then $Tuple2( | |
2739 | - | else $Tuple2( | |
2740 | - | else if ( | |
2741 | - | then if (!( | |
2504 | + | let cw = split(ja, "_") | |
2505 | + | let lC = (cw[br] == "T") | |
2506 | + | let lD = (cw[br] == "D") | |
2507 | + | let gA = G(B) | |
2508 | + | let lE = valueOrElse(getString(gA), ",;,_,;,_,;,_,;,_,;,_,;,") | |
2509 | + | let lF = fn(lE, hs._5) | |
2510 | + | let lG = lF._1 | |
2511 | + | let lH = lF._2 | |
2512 | + | let lI = if (!(cr(dl, jt))) | |
2513 | + | then if (!(cp(ja))) | |
2514 | + | then cu(jt, ja, 5) | |
2515 | + | else if ((iY > 0)) | |
2516 | + | then $Tuple2(ja, iY) | |
2517 | + | else $Tuple2(jt, 0) | |
2518 | + | else if (ch(dl, jt)) | |
2519 | + | then if (!(ch(dl, ja))) | |
2742 | 2520 | then throw("Your duck is taking part in the tournament") | |
2743 | 2521 | else { | |
2744 | - | let | |
2745 | - | let | |
2746 | - | let | |
2747 | - | if (( | |
2748 | - | then | |
2749 | - | else if (( | |
2522 | + | let kw = parseIntValue(cw[bs]) | |
2523 | + | let lJ = split(jt, "_") | |
2524 | + | let cj = valueOrElse(getInteger(dl, bU), 0) | |
2525 | + | if ((kw != (parseIntValue(lJ[bs]) + 1))) | |
2526 | + | then cu(jt, ja, 7) | |
2527 | + | else if ((iY > 0)) | |
2750 | 2528 | then { | |
2751 | - | let | |
2752 | - | let | |
2753 | - | then invoke( | |
2529 | + | let lK = valueOrElse(getInteger(dl, bY(cj, B)), 0) | |
2530 | + | let lL = if ((kw > lK)) | |
2531 | + | then invoke(dl, "saveDuckResult", [B, kw], nil) | |
2754 | 2532 | else unit | |
2755 | - | if (( | |
2756 | - | then $Tuple2( | |
2533 | + | if ((lL == lL)) | |
2534 | + | then $Tuple2(ja, iY) | |
2757 | 2535 | else throw("Strict value is not equal to itself.") | |
2758 | 2536 | } | |
2759 | - | else $Tuple2( | |
2537 | + | else $Tuple2(jt, 0) | |
2760 | 2538 | } | |
2761 | - | else if (!( | |
2539 | + | else if (!(cm(jt))) | |
2762 | 2540 | then { | |
2763 | - | let | |
2541 | + | let lM = dC(invoke(this, "autoExitDelivery", [B, iY, if (lD) | |
2764 | 2542 | then "10" | |
2765 | 2543 | else "11", 0], nil)) | |
2766 | - | if (( | |
2767 | - | then if ( | |
2768 | - | then $Tuple2( | |
2769 | - | else if (( | |
2770 | - | then $Tuple2( | |
2771 | - | else $Tuple2( | |
2544 | + | if ((lM == lM)) | |
2545 | + | then if (lD) | |
2546 | + | then $Tuple2(lM, iY) | |
2547 | + | else if ((iY > 0)) | |
2548 | + | then $Tuple2(ja, iY) | |
2549 | + | else $Tuple2(lM, 0) | |
2772 | 2550 | else throw("Strict value is not equal to itself.") | |
2773 | 2551 | } | |
2774 | - | else if (!( | |
2552 | + | else if (!(lD)) | |
2775 | 2553 | then throw("Your duck is taking part in delivery") | |
2776 | - | else if (!( | |
2777 | - | then | |
2554 | + | else if (!(cm(ja))) | |
2555 | + | then cu(jt, ja, 13) | |
2778 | 2556 | else { | |
2779 | - | let | |
2780 | - | let | |
2781 | - | if (( | |
2782 | - | then | |
2783 | - | else if (if (( | |
2784 | - | then (1 > | |
2557 | + | let kw = parseIntValue(cw[bs]) | |
2558 | + | let lJ = split(jt, "_") | |
2559 | + | if ((kw != (parseIntValue(lJ[bs]) + 1))) | |
2560 | + | then cu(jt, ja, 14) | |
2561 | + | else if (if ((iY > 0)) | |
2562 | + | then (1 > kw) | |
2785 | 2563 | else false) | |
2786 | - | then $Tuple2( | |
2564 | + | then $Tuple2(ja, iY) | |
2787 | 2565 | else { | |
2788 | - | let | |
2789 | - | if (( | |
2790 | - | then $Tuple2( | |
2566 | + | let lM = dC(invoke(this, "autoExitDelivery", [B, iY, "15-17", kw], nil)) | |
2567 | + | if ((lM == lM)) | |
2568 | + | then $Tuple2(lM, iY) | |
2791 | 2569 | else throw("Strict value is not equal to itself.") | |
2792 | 2570 | } | |
2793 | 2571 | } | |
2794 | - | let | |
2795 | - | let | |
2796 | - | $Tuple2(((([StringEntry( | |
2572 | + | let lN = lI._1 | |
2573 | + | let lO = lI._2 | |
2574 | + | $Tuple2(((([StringEntry(lj, lN), StringEntry(gA, lG), IntegerEntry(A(B), lO)] ++ lp) ++ (if (lH) | |
2797 | 2575 | then [StringEntry(M(B), "0_0_0_0_0")] | |
2798 | - | else nil)) ++ | |
2576 | + | else nil)) ++ ki(B, if ((iY > 0)) | |
2799 | 2577 | then Y | |
2800 | - | else Z)._1), | |
2578 | + | else Z)._1), hs._3) | |
2801 | 2579 | } | |
2802 | 2580 | } | |
2803 | 2581 | } | |
2804 | 2582 | ||
2805 | 2583 | ||
2806 | 2584 | ||
2807 | - | @Callable( | |
2808 | - | func heal ( | |
2809 | - | let | |
2810 | - | if (if (if ((0 > | |
2585 | + | @Callable(gN) | |
2586 | + | func heal (lP,lQ,lR) = { | |
2587 | + | let lp = ll(gN) | |
2588 | + | if (if (if ((0 > lP)) | |
2811 | 2589 | then true | |
2812 | - | else (0 > | |
2590 | + | else (0 > lQ)) | |
2813 | 2591 | then true | |
2814 | - | else (0 > | |
2592 | + | else (0 > lR)) | |
2815 | 2593 | then throw("Quantity cannot be negative") | |
2816 | 2594 | else { | |
2817 | - | let B = valueOrErrorMessage(getString( | |
2818 | - | if ( | |
2595 | + | let B = valueOrErrorMessage(getString(bM(toString(gN.caller))), "You don't have a duck staked") | |
2596 | + | if (kt(B)) | |
2819 | 2597 | then throw("heal_checkTournament") | |
2820 | - | else if ( | |
2598 | + | else if (ku(B)) | |
2821 | 2599 | then throw("heal_checkDelivery") | |
2822 | 2600 | else { | |
2823 | - | let | |
2824 | - | let | |
2825 | - | let | |
2826 | - | let | |
2827 | - | if (( | |
2828 | - | then throw((("HP should be < " + toString( | |
2601 | + | let lS = [lP, lQ, lR] | |
2602 | + | let je = A(B) | |
2603 | + | let jf = aj(valueOrElse(getInteger(E(B)), 0)) | |
2604 | + | let lT = valueOrElse(getInteger(je), jf) | |
2605 | + | if ((lT >= jf)) | |
2606 | + | then throw((("HP should be < " + toString(jf)) + " to heal")) | |
2829 | 2607 | else { | |
2830 | - | let | |
2831 | - | let | |
2832 | - | let | |
2608 | + | let hO = bN(B) | |
2609 | + | let ir = hN(hO) | |
2610 | + | let lU = if ((ir[bp] == "")) | |
2833 | 2611 | then nil | |
2834 | - | else split_4C( | |
2835 | - | func | |
2836 | - | let | |
2837 | - | let | |
2838 | - | then parseIntValue( | |
2612 | + | else split_4C(ir[bp], "_") | |
2613 | + | func lV (eU,ct) = { | |
2614 | + | let dG = eU._2 | |
2615 | + | let hj = if ((size(lU) > dG)) | |
2616 | + | then parseIntValue(lU[dG]) | |
2839 | 2617 | else 0 | |
2840 | - | if ((3 > | |
2618 | + | if ((3 > dG)) | |
2841 | 2619 | then { | |
2842 | - | let | |
2843 | - | if (( | |
2844 | - | then throw(((("You have only " + toString( | |
2845 | - | else $Tuple3(( | |
2620 | + | let lW = lS[dG] | |
2621 | + | if ((lW > hj)) | |
2622 | + | then throw(((("You have only " + toString(hj)) + " of ") + aT[dG])) | |
2623 | + | else $Tuple3((eU._1 :+ toString((hj - lW))), (dG + 1), (eU._3 + (parseIntValue(split(ct, "_")[aZ]) * lW))) | |
2846 | 2624 | } | |
2847 | - | else $Tuple3(( | |
2625 | + | else $Tuple3((eU._1 :+ toString(hj)), (dG + 1), eU._3) | |
2848 | 2626 | } | |
2849 | 2627 | ||
2850 | - | let | |
2851 | - | let | |
2852 | - | let | |
2853 | - | let | |
2854 | - | func | |
2855 | - | then | |
2856 | - | else | |
2857 | - | ||
2858 | - | func | |
2859 | - | then | |
2628 | + | let fm = { | |
2629 | + | let eW = aX | |
2630 | + | let eX = size(eW) | |
2631 | + | let eY = $Tuple3(nil, 0, 0) | |
2632 | + | func eZ (fa,fb) = if ((fb >= eX)) | |
2633 | + | then fa | |
2634 | + | else lV(fa, eW[fb]) | |
2635 | + | ||
2636 | + | func fc (fa,fb) = if ((fb >= eX)) | |
2637 | + | then fa | |
2860 | 2638 | else throw("List size exceeds 50") | |
2861 | 2639 | ||
2862 | - | | |
2640 | + | fc(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eY, 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) | |
2863 | 2641 | } | |
2864 | - | let | |
2865 | - | $Tuple2((([IntegerEntry( | |
2642 | + | let lX = min([jf, (lT + fm._3)]) | |
2643 | + | $Tuple2((([IntegerEntry(je, lX), StringEntry(hO, makeString_2C([ir[bm], ir[bn], ir[bo], makeString(fm._1, "_")], ":"))] ++ lp) ++ ki(B, (ag * ((lP + lQ) + lR)))._1), lX) | |
2866 | 2644 | } | |
2867 | 2645 | } | |
2868 | 2646 | } | |
2869 | 2647 | } | |
2870 | 2648 | ||
2871 | 2649 | ||
2872 | 2650 | ||
2873 | - | @Callable( | |
2651 | + | @Callable(gN) | |
2874 | 2652 | func healES () = { | |
2875 | - | let | |
2876 | - | if ((size( | |
2653 | + | let lp = ll(gN) | |
2654 | + | if ((size(gN.payments) != 1)) | |
2877 | 2655 | then throw("Exactly one payment required") | |
2878 | 2656 | else { | |
2879 | - | let | |
2880 | - | if (( | |
2657 | + | let lq = value(gN.payments[0]) | |
2658 | + | if ((lq.assetId != cC)) | |
2881 | 2659 | then throw("Allowed USDT payment only!") | |
2882 | 2660 | else { | |
2883 | - | let B = valueOrErrorMessage(getString( | |
2884 | - | if ( | |
2661 | + | let B = valueOrErrorMessage(getString(bM(toString(gN.caller))), "You don't have a duck staked") | |
2662 | + | if (kt(B)) | |
2885 | 2663 | then throw("healES_checkTournament") | |
2886 | - | else if ( | |
2664 | + | else if (ku(B)) | |
2887 | 2665 | then throw("healES_checkDelivery") | |
2888 | 2666 | else { | |
2889 | - | let | |
2890 | - | let | |
2891 | - | let | |
2892 | - | if (( | |
2667 | + | let je = A(B) | |
2668 | + | let jf = aj(valueOrElse(getInteger(E(B)), 0)) | |
2669 | + | let lT = valueOrElse(getInteger(je), jf) | |
2670 | + | if ((lT > 0)) | |
2893 | 2671 | then throw("HP should be 0 to call Emergency Service") | |
2894 | 2672 | else { | |
2895 | - | let | |
2896 | - | let | |
2897 | - | let | |
2673 | + | let hO = bN(B) | |
2674 | + | let ir = hN(hO) | |
2675 | + | let lU = if ((ir[bp] == "")) | |
2898 | 2676 | then nil | |
2899 | - | else split_4C( | |
2900 | - | let | |
2901 | - | then parseIntValue( | |
2677 | + | else split_4C(ir[bp], "_") | |
2678 | + | let lY = if ((size(lU) > 0)) | |
2679 | + | then parseIntValue(lU[0]) | |
2902 | 2680 | else 0 | |
2903 | - | let | |
2904 | - | then parseIntValue( | |
2681 | + | let lZ = if ((size(lU) > 1)) | |
2682 | + | then parseIntValue(lU[1]) | |
2905 | 2683 | else 0 | |
2906 | - | let | |
2907 | - | then parseIntValue( | |
2684 | + | let ma = if ((size(lU) > 2)) | |
2685 | + | then parseIntValue(lU[2]) | |
2908 | 2686 | else 0 | |
2909 | - | if (if (if (( | |
2687 | + | if (if (if ((lY > 0)) | |
2910 | 2688 | then true | |
2911 | - | else ( | |
2689 | + | else (lZ > 0)) | |
2912 | 2690 | then true | |
2913 | - | else ( | |
2691 | + | else (ma > 0)) | |
2914 | 2692 | then throw("You have to use own Medical Kit") | |
2915 | 2693 | else { | |
2916 | - | let | |
2917 | - | let | |
2918 | - | then split_4C(value( | |
2694 | + | let mb = getString(di, bR()) | |
2695 | + | let mc = if (isDefined(mb)) | |
2696 | + | then split_4C(value(mb), "_") | |
2919 | 2697 | else nil | |
2920 | - | let | |
2921 | - | then parseIntValue( | |
2698 | + | let md = if ((size(mc) > 0)) | |
2699 | + | then parseIntValue(mc[0]) | |
2922 | 2700 | else 0 | |
2923 | - | if ((0 >= | |
2701 | + | if ((0 >= md)) | |
2924 | 2702 | then throw("There are no Medical Kits L1 at Emergency Service storage") | |
2925 | 2703 | else { | |
2926 | - | let | |
2927 | - | let | |
2928 | - | let | |
2929 | - | let | |
2930 | - | let | |
2931 | - | if (( | |
2932 | - | then throw(("Payment attached should be " + toString( | |
2704 | + | let lX = (lT + parseIntValue(split(aX[0], "_")[aZ])) | |
2705 | + | let me = makeString([toString((md - 1)), removeByIndex(mc, 0)], "_") | |
2706 | + | let ct = split(aX[0], "_") | |
2707 | + | let mf = cs(ct) | |
2708 | + | let mg = fraction((mf * aO), aN, (cK * bc)) | |
2709 | + | if ((lq.amount != mg)) | |
2710 | + | then throw(("Payment attached should be " + toString(mg))) | |
2933 | 2711 | else { | |
2934 | - | let | |
2935 | - | $Tuple2((( | |
2712 | + | let fm = dC(invoke(di, "updateEsStorage", [me], [AttachedPayment(cC, mg)])) | |
2713 | + | $Tuple2(((lp :+ IntegerEntry(je, lX)) ++ ki(B, aa)._1), fm) | |
2936 | 2714 | } | |
2937 | 2715 | } | |
2938 | 2716 | } | |
2939 | 2717 | } | |
2940 | 2718 | } | |
2941 | 2719 | } | |
2942 | 2720 | } | |
2943 | 2721 | } | |
2944 | 2722 | ||
2945 | 2723 | ||
2946 | 2724 | ||
2947 | - | @Callable( | |
2948 | - | func updateBackpack (B, | |
2725 | + | @Callable(gN) | |
2726 | + | func updateBackpack (B,mh) = if ((gN.caller != di)) | |
2949 | 2727 | then throw("permission denied") | |
2950 | - | else $Tuple2([StringEntry( | |
2951 | - | ||
2952 | - | ||
2953 | - | ||
2954 | - | @Callable( | |
2728 | + | else $Tuple2([StringEntry(bN(B), mh)], mh) | |
2729 | + | ||
2730 | + | ||
2731 | + | ||
2732 | + | @Callable(gN) | |
2955 | 2733 | func commitForRandom () = { | |
2956 | - | let | |
2957 | - | let | |
2958 | - | let c = toString( | |
2959 | - | $Tuple2(([IntegerEntry( | |
2960 | - | } | |
2961 | - | ||
2962 | - | ||
2963 | - | ||
2964 | - | @Callable( | |
2734 | + | let lp = ll(gN) | |
2735 | + | let mi = (height + dv) | |
2736 | + | let c = toString(gN.caller) | |
2737 | + | $Tuple2(([IntegerEntry(dw(c), mi)] ++ lp), mi) | |
2738 | + | } | |
2739 | + | ||
2740 | + | ||
2741 | + | ||
2742 | + | @Callable(gN) | |
2965 | 2743 | func buySLand () = { | |
2966 | - | let | |
2967 | - | if ((size( | |
2744 | + | let lp = ll(gN) | |
2745 | + | if ((size(gN.payments) != 1)) | |
2968 | 2746 | then throw("Exactly one payment required") | |
2969 | 2747 | else { | |
2970 | - | let | |
2971 | - | if (( | |
2748 | + | let lq = value(gN.payments[0]) | |
2749 | + | if ((lq.assetId != cC)) | |
2972 | 2750 | then throw("Allowed USDT payment only!") | |
2973 | - | else if ((mq.amount != ek)) | |
2751 | + | else if ((lq.amount != ej)) | |
2752 | + | then throw(("Payment attached should be " + toString(ej))) | |
2753 | + | else { | |
2754 | + | let fm = iL(gN.caller, gN.transactionId) | |
2755 | + | let mj = dF(invoke(dm, "burnAcres", [ek], nil)) | |
2756 | + | $Tuple2((((fm._1 :+ ScriptTransfer(di, lq.amount, cC)) ++ kj(toString(gN.caller), ac)._1) ++ lp), $Tuple2(fm._2._1, mj)) | |
2757 | + | } | |
2758 | + | } | |
2759 | + | } | |
2760 | + | ||
2761 | + | ||
2762 | + | ||
2763 | + | @Callable(gN) | |
2764 | + | func expedition (iT,iU) = { | |
2765 | + | let lp = ll(gN) | |
2766 | + | if ((size(gN.payments) != 0)) | |
2767 | + | then throw("No payments required") | |
2768 | + | else { | |
2769 | + | let bQ = toString(gN.caller) | |
2770 | + | let hs = iS(bQ, iT, iU) | |
2771 | + | let B = hs._2 | |
2772 | + | let je = A(B) | |
2773 | + | let hO = bN(B) | |
2774 | + | let ir = hN(hO) | |
2775 | + | let jT = split(ir[bo], "_") | |
2776 | + | let jV = makeString(fg(true, jT, ei), "_") | |
2777 | + | let gA = G(B) | |
2778 | + | let lE = valueOrElse(getString(gA), ",;,_,;,_,;,_,;,_,;,_,;,") | |
2779 | + | let mk = fn(lE, hs._5) | |
2780 | + | let lG = mk._1 | |
2781 | + | let lH = mk._2 | |
2782 | + | let ml = iL(gN.caller, gN.transactionId) | |
2783 | + | let iR = ml._2._1 | |
2784 | + | let fm = if ((0 >= hs._1)) | |
2785 | + | then $Tuple3([IntegerEntry(je, 0), StringEntry(gA, lG)], "", 0) | |
2786 | + | else $Tuple3((ml._1 ++ (if (lH) | |
2787 | + | then [StringEntry(M(B), "0_0_0_0_0")] | |
2788 | + | else ((((nil :+ StringEntry(bO(B), makeString([ml._2._2, "L", iR], "_"))) :+ IntegerEntry(je, hs._1)) :+ StringEntry(gA, lG)) :+ StringEntry(hO, makeString([ir[bm], ir[bn], jV, ir[bp]], ":"))))), iR, hs._3) | |
2789 | + | if (kt(B)) | |
2790 | + | then throw("expedition_checkTournament") | |
2791 | + | else if (ku(B)) | |
2792 | + | then throw("expedition_checkDelivery") | |
2793 | + | else { | |
2794 | + | let mj = dF(invoke(dm, "burnAcres", [ek], nil)) | |
2795 | + | $Tuple2(((fm._1 ++ ki(B, ac)._1) ++ lp), $Tuple3(fm._2, fm._3, mj)) | |
2796 | + | } | |
2797 | + | } | |
2798 | + | } | |
2799 | + | ||
2800 | + | ||
2801 | + | ||
2802 | + | @Callable(gN) | |
2803 | + | func buySLandForAcres () = { | |
2804 | + | let lp = ll(gN) | |
2805 | + | if ((size(gN.payments) != 1)) | |
2806 | + | then throw("exactly 1 payment must be attached") | |
2807 | + | else { | |
2808 | + | let lq = gN.payments[0] | |
2809 | + | let ft = lq.amount | |
2810 | + | if (if (!(isDefined(lq.assetId))) | |
2811 | + | then true | |
2812 | + | else (value(lq.assetId) != du)) | |
2813 | + | then throw("ACRES payments only!") | |
2814 | + | else if ((ft != ek)) | |
2974 | 2815 | then throw(("Payment attached should be " + toString(ek))) | |
2975 | 2816 | else { | |
2976 | - | let | |
2977 | - | let | |
2978 | - | $Tuple2((( | |
2817 | + | let fm = iL(gN.caller, gN.transactionId) | |
2818 | + | let mj = dF(invoke(dm, "burnAcres", [ek], [AttachedPayment(du, ft)])) | |
2819 | + | $Tuple2(((fm._1 ++ kj(toString(gN.caller), ac)._1) ++ lp), $Tuple2(fm._2._1, mj)) | |
2979 | 2820 | } | |
2980 | 2821 | } | |
2981 | 2822 | } | |
2982 | 2823 | ||
2983 | 2824 | ||
2984 | 2825 | ||
2985 | - | @Callable( | |
2986 | - | func | |
2987 | - | let | |
2988 | - | if ((size( | |
2826 | + | @Callable(gN) | |
2827 | + | func upgradeInfra (Q) = { | |
2828 | + | let lp = ll(gN) | |
2829 | + | if ((size(gN.payments) != 0)) | |
2989 | 2830 | then throw("No payments required") | |
2990 | 2831 | else { | |
2991 | - | let bR = toString(gO.caller) | |
2992 | - | let iD = jS(bR, jT, jU) | |
2993 | - | let B = iD._2 | |
2994 | - | let ke = A(B) | |
2995 | - | let iO = bO(B) | |
2996 | - | let jr = iN(iO) | |
2997 | - | let kT = split(jr[bp], "_") | |
2998 | - | let kV = makeString(fh(true, kT, ej), "_") | |
2999 | - | let gB = G(B) | |
3000 | - | let mE = valueOrElse(getString(gB), ",;,_,;,_,;,_,;,_,;,_,;,") | |
3001 | - | let nk = fo(mE, iD._5) | |
3002 | - | let mG = nk._1 | |
3003 | - | let mH = nk._2 | |
3004 | - | let nl = jL(gO.caller, gO.transactionId) | |
3005 | - | let jR = nl._2._1 | |
3006 | - | let fn = if ((0 >= iD._1)) | |
3007 | - | then $Tuple3([IntegerEntry(ke, 0), StringEntry(gB, mG)], "", 0) | |
3008 | - | else $Tuple3((nl._1 ++ (if (mH) | |
3009 | - | then [StringEntry(M(B), "0_0_0_0_0")] | |
3010 | - | else ((((nil :+ StringEntry(bP(B), makeString([nl._2._2, "L", jR], "_"))) :+ IntegerEntry(ke, iD._1)) :+ StringEntry(gB, mG)) :+ StringEntry(iO, makeString([jr[bn], jr[bo], kV, jr[bq]], ":"))))), jR, iD._3) | |
3011 | - | if (lt(B)) | |
3012 | - | then throw("expedition_checkTournament") | |
3013 | - | else if (lu(B)) | |
3014 | - | then throw("expedition_checkDelivery") | |
3015 | - | else { | |
3016 | - | let nj = dG(invoke(dn, "burnAcres", [el], nil)) | |
3017 | - | $Tuple2(((fn._1 ++ li(B, ac)._1) ++ mp), $Tuple3(fn._2, fn._3, nj)) | |
3018 | - | } | |
3019 | - | } | |
3020 | - | } | |
3021 | - | ||
3022 | - | ||
3023 | - | ||
3024 | - | @Callable(gO) | |
3025 | - | func buySLandForAcres () = { | |
3026 | - | let mp = ml(gO) | |
3027 | - | if ((size(gO.payments) != 1)) | |
3028 | - | then throw("exactly 1 payment must be attached") | |
3029 | - | else { | |
3030 | - | let mq = gO.payments[0] | |
3031 | - | let fu = mq.amount | |
3032 | - | if (if (!(isDefined(mq.assetId))) | |
3033 | - | then true | |
3034 | - | else (value(mq.assetId) != dv)) | |
3035 | - | then throw("ACRES payments only!") | |
3036 | - | else if ((fu != el)) | |
3037 | - | then throw(("Payment attached should be " + toString(el))) | |
3038 | - | else { | |
3039 | - | let fn = jL(gO.caller, gO.transactionId) | |
3040 | - | let nj = dG(invoke(dn, "burnAcres", [el], [AttachedPayment(dv, fu)])) | |
3041 | - | $Tuple2(((fn._1 ++ lj(toString(gO.caller), ac)._1) ++ mp), $Tuple2(fn._2._1, nj)) | |
3042 | - | } | |
3043 | - | } | |
3044 | - | } | |
3045 | - | ||
3046 | - | ||
3047 | - | ||
3048 | - | @Callable(gO) | |
3049 | - | func upgradeInfra (Q) = { | |
3050 | - | let mp = ml(gO) | |
3051 | - | if ((size(gO.payments) != 0)) | |
2832 | + | let fm = jN(true, gN.caller, 0, Q) | |
2833 | + | let B = valueOrErrorMessage(getString(bM(toString(gN.caller))), "You don't have a duck staked") | |
2834 | + | $Tuple2(((fm._1 ++ lp) ++ ki(B, fraction(ad, fm._3, cK))._1), fm._2) | |
2835 | + | } | |
2836 | + | } | |
2837 | + | ||
2838 | + | ||
2839 | + | ||
2840 | + | @Callable(gN) | |
2841 | + | func activateArtifact (mm,mn) = { | |
2842 | + | let lp = ll(gN) | |
2843 | + | if ((size(gN.payments) != 0)) | |
3052 | 2844 | then throw("No payments required") | |
3053 | 2845 | else { | |
3054 | - | let fn = kN(true, gO.caller, 0, Q) | |
3055 | - | let B = valueOrErrorMessage(getString(bN(toString(gO.caller))), "You don't have a duck staked") | |
3056 | - | $Tuple2(((fn._1 ++ mp) ++ li(B, fraction(ad, fn._3, cL))._1), fn._2) | |
3057 | - | } | |
3058 | - | } | |
3059 | - | ||
3060 | - | ||
3061 | - | ||
3062 | - | @Callable(gO) | |
3063 | - | func activateArtifact (nm,nn) = { | |
3064 | - | let mp = ml(gO) | |
3065 | - | if ((size(gO.payments) != 0)) | |
2846 | + | let c = toString(gN.caller) | |
2847 | + | let fm = { | |
2848 | + | let cD = mm | |
2849 | + | if (("PRESALE" == cD)) | |
2850 | + | then kr(c, mn) | |
2851 | + | else if (("ONBOARD" == cD)) | |
2852 | + | then kk(c) | |
2853 | + | else throw("Unknown artifact") | |
2854 | + | } | |
2855 | + | (fm ++ lp) | |
2856 | + | } | |
2857 | + | } | |
2858 | + | ||
2859 | + | ||
2860 | + | ||
2861 | + | @Callable(gN) | |
2862 | + | func mergeLands (kI) = { | |
2863 | + | let lp = ll(gN) | |
2864 | + | if ((size(gN.payments) != 0)) | |
3066 | 2865 | then throw("No payments required") | |
3067 | 2866 | else { | |
3068 | - | let c = toString(gO.caller) | |
3069 | - | let fn = { | |
3070 | - | let cE = nm | |
3071 | - | if (("PRESALE" == cE)) | |
3072 | - | then lr(c, nn) | |
3073 | - | else if (("ONBOARD" == cE)) | |
3074 | - | then lk(c) | |
3075 | - | else throw("Unknown artifact") | |
3076 | - | } | |
3077 | - | (fn ++ mp) | |
3078 | - | } | |
3079 | - | } | |
3080 | - | ||
3081 | - | ||
3082 | - | ||
3083 | - | @Callable(gO) | |
3084 | - | func mergeLands (lI) = { | |
3085 | - | let mp = ml(gO) | |
3086 | - | if ((size(gO.payments) != 0)) | |
2867 | + | let fm = lg(toString(gN.caller), kI) | |
2868 | + | $Tuple2(((fm._1 ++ lp) ++ kj(toString(gN.caller), ae)._1), fm._2) | |
2869 | + | } | |
2870 | + | } | |
2871 | + | ||
2872 | + | ||
2873 | + | ||
2874 | + | @Callable(gN) | |
2875 | + | func cargoExchange (mo,Q) = { | |
2876 | + | let lp = ll(gN) | |
2877 | + | if ((size(gN.payments) != 0)) | |
3087 | 2878 | then throw("No payments required") | |
3088 | 2879 | else { | |
3089 | - | let fn = mg(toString(gO.caller), lI) | |
3090 | - | $Tuple2(((fn._1 ++ mp) ++ lj(toString(gO.caller), ae)._1), fn._2) | |
3091 | - | } | |
3092 | - | } | |
3093 | - | ||
3094 | - | ||
3095 | - | ||
3096 | - | @Callable(gO) | |
3097 | - | func cargoExchange (no,Q) = { | |
3098 | - | let mp = ml(gO) | |
3099 | - | if ((size(gO.payments) != 0)) | |
3100 | - | then throw("No payments required") | |
3101 | - | else { | |
3102 | - | let jq = split_4C(no, ":") | |
3103 | - | let c = toString(gO.originCaller) | |
3104 | - | let kv = value(assetInfo(fromBase58String(Q))) | |
3105 | - | let kw = bx(Q) | |
3106 | - | if (!(isDefined(getInteger(kw)))) | |
3107 | - | then throw((kv.name + " is not staked")) | |
2880 | + | let iq = split_4C(mo, ":") | |
2881 | + | let c = toString(gN.originCaller) | |
2882 | + | let jv = value(assetInfo(fromBase58String(Q))) | |
2883 | + | let jw = bw(Q) | |
2884 | + | if (!(isDefined(getInteger(jw)))) | |
2885 | + | then throw((jv.name + " is not staked")) | |
3108 | 2886 | else { | |
3109 | - | let | |
3110 | - | if (( | |
2887 | + | let jy = valueOrErrorMessage(getString(bt(Q)), (("NFT " + jv.name) + " is orphaned")) | |
2888 | + | if ((jy != c)) | |
3111 | 2889 | then throw((aF + " is not yours")) | |
3112 | 2890 | else { | |
3113 | - | let | |
3114 | - | let | |
3115 | - | let B = valueOrErrorMessage(getString( | |
3116 | - | let | |
3117 | - | let | |
3118 | - | if (( | |
3119 | - | then throw((("Duck location type is " + | |
3120 | - | else if (( | |
2891 | + | let ic = (dK(split(jv.description, "_")[do]) / cL) | |
2892 | + | let id = valueOrElse(getInteger(bD(Q)), 0) | |
2893 | + | let B = valueOrErrorMessage(getString(bM(c)), "You don't have a duck staked") | |
2894 | + | let jt = valueOrElse(getString(bO(B)), aM) | |
2895 | + | let ck = split(value(jt), "_") | |
2896 | + | if ((ck[br] != "L")) | |
2897 | + | then throw((("Duck location type is " + ck[br]) + ", but should be L")) | |
2898 | + | else if ((ck[bs] != Q)) | |
3121 | 2899 | then throw(("Duck should be on the land " + Q)) | |
3122 | 2900 | else { | |
3123 | - | let | |
3124 | - | let | |
3125 | - | let | |
3126 | - | let | |
3127 | - | let | |
3128 | - | let | |
3129 | - | let | |
3130 | - | let | |
3131 | - | ([StringEntry( | |
2901 | + | let ib = bC(Q) | |
2902 | + | let hS = ia(ib, ic, id) | |
2903 | + | let hO = bN(B) | |
2904 | + | let ir = hN(hO) | |
2905 | + | let fm = ip(iq, hS, ir) | |
2906 | + | let ij = split(hS[bh], "_") | |
2907 | + | let jK = (parseIntValue(ij[bj]) + fm._7) | |
2908 | + | let jL = (parseIntValue(ij[bk]) - fm._7) | |
2909 | + | ([StringEntry(hO, makeString_2C([ir[bm], fm._4, fm._5, fm._6], ":")), StringEntry(ib, makeString_2C([hS[bd], fm._1, fm._2, fm._3, makeString([ij[bi], toString(jK), toString(jL), ij[bl]], "_")], ":"))] ++ lp) | |
3132 | 2910 | } | |
3133 | 2911 | } | |
3134 | 2912 | } | |
3135 | 2913 | } | |
3136 | 2914 | } | |
3137 | 2915 | ||
3138 | 2916 | ||
3139 | 2917 | ||
3140 | - | @Callable( | |
3141 | - | func saveWarehouse ( | |
2918 | + | @Callable(gN) | |
2919 | + | func saveWarehouse (if,Q) = if ((gN.caller != di)) | |
3142 | 2920 | then throw("Access denied") | |
3143 | 2921 | else { | |
3144 | - | let | |
3145 | - | let | |
3146 | - | if ((size( | |
2922 | + | let ib = bC(Q) | |
2923 | + | let ig = split_4C(if, ":") | |
2924 | + | if ((size(ig) != 5)) | |
3147 | 2925 | then throw("warehouse string should contain 4 ':' separators") | |
3148 | 2926 | else { | |
3149 | - | let | |
3150 | - | let | |
3151 | - | let | |
3152 | - | let | |
3153 | - | if ((0 > | |
2927 | + | let mp = split(ig[bh], "_")[bi] | |
2928 | + | let jK = hR(ig) | |
2929 | + | let mq = hP(ig[bd]) | |
2930 | + | let jL = ((mq - parseIntValue(mp)) - jK) | |
2931 | + | if ((0 > jL)) | |
3154 | 2932 | then throw("Operation leads to negative free warehouse space") | |
3155 | 2933 | else { | |
3156 | - | let | |
3157 | - | $Tuple2([StringEntry( | |
2934 | + | let mr = makeString_2C([ig[bd], ig[be], ig[bf], ig[bg], makeString([mp, toString(jK), toString(jL), toString(mq)], "_")], ":") | |
2935 | + | $Tuple2([StringEntry(ib, mr)], mr) | |
3158 | 2936 | } | |
3159 | 2937 | } | |
3160 | 2938 | } | |
3161 | 2939 | ||
3162 | 2940 | ||
3163 | 2941 | ||
3164 | - | @Callable( | |
3165 | - | func setCustomName ( | |
3166 | - | let | |
3167 | - | if ((size( | |
2942 | + | @Callable(gN) | |
2943 | + | func setCustomName (bu,kS,by) = { | |
2944 | + | let lp = ll(gN) | |
2945 | + | if ((size(gN.payments) != 1)) | |
3168 | 2946 | then throw("Exactly one payment required") | |
3169 | 2947 | else { | |
3170 | - | let | |
3171 | - | if (( | |
2948 | + | let lq = value(gN.payments[0]) | |
2949 | + | if ((lq.assetId != cC)) | |
3172 | 2950 | then throw("Allowed USDT payment only!") | |
3173 | - | else if (( | |
3174 | - | then throw(("Payment should be " + toString( | |
3175 | - | else if (contains( | |
3176 | - | then throw(("Name should not contain '__': " + | |
3177 | - | else if ((size( | |
3178 | - | then throw(("Name too long, maxLength=" + toString( | |
2951 | + | else if ((lq.amount != ef)) | |
2952 | + | then throw(("Payment should be " + toString(ef))) | |
2953 | + | else if (contains(kS, "__")) | |
2954 | + | then throw(("Name should not contain '__': " + kS)) | |
2955 | + | else if ((size(kS) > eg)) | |
2956 | + | then throw(("Name too long, maxLength=" + toString(eg))) | |
3179 | 2957 | else { | |
3180 | - | let c = toString( | |
3181 | - | let | |
3182 | - | let | |
3183 | - | if (("ACCOUNT" == | |
2958 | + | let c = toString(gN.originCaller) | |
2959 | + | let ms = { | |
2960 | + | let cD = by | |
2961 | + | if (("ACCOUNT" == cD)) | |
3184 | 2962 | then { | |
3185 | - | let | |
3186 | - | let | |
3187 | - | if (isDefined( | |
3188 | - | then throw(("Name already registered: " + | |
2963 | + | let mt = eA(kS) | |
2964 | + | let mu = getString(mt) | |
2965 | + | if (isDefined(mu)) | |
2966 | + | then throw(("Name already registered: " + kS)) | |
3189 | 2967 | else { | |
3190 | - | let | |
3191 | - | let | |
3192 | - | let | |
3193 | - | then [DeleteEntry( | |
2968 | + | let mv = bG(c) | |
2969 | + | let mw = getString(mv) | |
2970 | + | let mx = if (isDefined(mw)) | |
2971 | + | then [DeleteEntry(eA(value(mw)))] | |
3194 | 2972 | else nil | |
3195 | - | ((( | |
2973 | + | (((mx :+ StringEntry(mv, kS)) :+ StringEntry(mt, c)) ++ kj(c, ab)._1) | |
3196 | 2974 | } | |
3197 | 2975 | } | |
3198 | - | else if (("LAND" == | |
2976 | + | else if (("LAND" == cD)) | |
3199 | 2977 | then { | |
3200 | - | let | |
3201 | - | let | |
3202 | - | if (!(isDefined(getInteger( | |
3203 | - | then throw(( | |
2978 | + | let jv = value(assetInfo(fromBase58String(bu))) | |
2979 | + | let jw = bw(bu) | |
2980 | + | if (!(isDefined(getInteger(jw)))) | |
2981 | + | then throw((jv.name + " is not staked")) | |
3204 | 2982 | else { | |
3205 | - | let | |
3206 | - | if (( | |
2983 | + | let jy = valueOrErrorMessage(getString(bt(bu)), (("NFT " + jv.name) + " is orphaned")) | |
2984 | + | if ((jy != c)) | |
3207 | 2985 | then throw((aF + " is not yours")) | |
3208 | 2986 | else { | |
3209 | - | let | |
3210 | - | let | |
3211 | - | if (isDefined( | |
3212 | - | then throw(("Name already registered: " + | |
2987 | + | let mt = et(kS) | |
2988 | + | let mu = getString(mt) | |
2989 | + | if (isDefined(mu)) | |
2990 | + | then throw(("Name already registered: " + kS)) | |
3213 | 2991 | else { | |
3214 | - | let | |
3215 | - | let | |
3216 | - | let | |
3217 | - | then [DeleteEntry( | |
2992 | + | let my = bv(bu) | |
2993 | + | let mw = getString(my) | |
2994 | + | let mx = if (isDefined(mw)) | |
2995 | + | then [DeleteEntry(et(value(mw)))] | |
3218 | 2996 | else nil | |
3219 | - | ((( | |
2997 | + | (((mx :+ StringEntry(my, kS)) :+ StringEntry(mt, bu)) ++ kj(c, ab)._1) | |
3220 | 2998 | } | |
3221 | 2999 | } | |
3222 | 3000 | } | |
3223 | 3001 | } | |
3224 | - | else if (("DUCK" == | |
3002 | + | else if (("DUCK" == cD)) | |
3225 | 3003 | then { | |
3226 | - | let | |
3227 | - | let | |
3228 | - | if (if (!(isDefined(getInteger( | |
3004 | + | let jv = value(assetInfo(fromBase58String(bu))) | |
3005 | + | let jw = bw(bu) | |
3006 | + | if (if (!(isDefined(getInteger(jw)))) | |
3229 | 3007 | then true | |
3230 | - | else !(isDefined(getString( | |
3231 | - | then throw(( | |
3008 | + | else !(isDefined(getString(bM(c))))) | |
3009 | + | then throw((jv.name + " is not staked")) | |
3232 | 3010 | else { | |
3233 | - | let | |
3234 | - | if (( | |
3011 | + | let jy = valueOrErrorMessage(getString(bL(bu)), (("NFT " + jv.name) + " is orphaned")) | |
3012 | + | if ((jy != c)) | |
3235 | 3013 | then throw((aG + " is not yours")) | |
3236 | 3014 | else { | |
3237 | - | let | |
3238 | - | let | |
3239 | - | if (isDefined( | |
3240 | - | then throw(("Name already registered: " + | |
3015 | + | let mt = ez(kS) | |
3016 | + | let mu = getString(mt) | |
3017 | + | if (isDefined(mu)) | |
3018 | + | then throw(("Name already registered: " + kS)) | |
3241 | 3019 | else { | |
3242 | - | let | |
3243 | - | let | |
3244 | - | let | |
3245 | - | then [DeleteEntry( | |
3020 | + | let my = bF(bu) | |
3021 | + | let mw = getString(my) | |
3022 | + | let mx = if (isDefined(mw)) | |
3023 | + | then [DeleteEntry(ez(value(mw)))] | |
3246 | 3024 | else nil | |
3247 | - | ((( | |
3025 | + | (((mx :+ StringEntry(my, kS)) :+ StringEntry(mt, bu)) ++ ki(bu, ab)._1) | |
3248 | 3026 | } | |
3249 | 3027 | } | |
3250 | 3028 | } | |
3251 | 3029 | } | |
3252 | 3030 | else throw("Unknown entity type") | |
3253 | 3031 | } | |
3254 | - | $Tuple2((( | |
3032 | + | $Tuple2(((ms :+ ScriptTransfer(di, lq.amount, cC)) ++ lp), 0) | |
3255 | 3033 | } | |
3256 | 3034 | } | |
3257 | 3035 | } | |
3258 | 3036 | ||
3259 | 3037 | ||
3260 | 3038 | ||
3261 | - | @Callable( | |
3262 | - | func setReferrals ( | |
3039 | + | @Callable(gN) | |
3040 | + | func setReferrals (mz,mA) = if ((gN.callerPublicKey != ec)) | |
3263 | 3041 | then throw("Permission denied") | |
3264 | 3042 | else { | |
3265 | - | let | |
3266 | - | if ((size( | |
3043 | + | let lp = ll(gN) | |
3044 | + | if ((size(gN.payments) != 0)) | |
3267 | 3045 | then throw("No payments required") | |
3268 | - | else if (!(isDefined(addressFromString( | |
3269 | - | then throw(("Invalid address: " + | |
3270 | - | else if (!(isDefined(addressFromString( | |
3271 | - | then throw(("Invalid address: " + | |
3046 | + | else if (!(isDefined(addressFromString(mz)))) | |
3047 | + | then throw(("Invalid address: " + mz)) | |
3048 | + | else if (!(isDefined(addressFromString(mA)))) | |
3049 | + | then throw(("Invalid address: " + mA)) | |
3272 | 3050 | else { | |
3273 | - | let | |
3274 | - | let | |
3275 | - | let | |
3276 | - | then split_4C(value( | |
3051 | + | let mB = eB() | |
3052 | + | let mC = getString(mB) | |
3053 | + | let mD = if (isDefined(mC)) | |
3054 | + | then split_4C(value(mC), "_") | |
3277 | 3055 | else nil | |
3278 | - | if (containsElement( | |
3279 | - | then throw(( | |
3056 | + | if (containsElement(mD, mA)) | |
3057 | + | then throw((mA + " is not newbie (already has referrals)")) | |
3280 | 3058 | else { | |
3281 | - | let | |
3282 | - | let | |
3283 | - | if (if (isDefined( | |
3284 | - | then isDefined(addressFromString(value( | |
3059 | + | let kl = bH(mA) | |
3060 | + | let km = getString(kl) | |
3061 | + | if (if (isDefined(km)) | |
3062 | + | then isDefined(addressFromString(value(km))) | |
3285 | 3063 | else false) | |
3286 | - | then throw((( | |
3064 | + | then throw(((mA + " already has refBy: ") + value(km))) | |
3287 | 3065 | else { | |
3288 | - | let | |
3289 | - | let | |
3290 | - | let | |
3291 | - | then split_4C(value( | |
3066 | + | let mE = bK(mz) | |
3067 | + | let mF = getString(mE) | |
3068 | + | let mG = if (isDefined(mF)) | |
3069 | + | then split_4C(value(mF), "_") | |
3292 | 3070 | else nil | |
3293 | - | if (containsElement( | |
3294 | - | then throw(((( | |
3071 | + | if (containsElement(mG, mA)) | |
3072 | + | then throw((((mz + " already contains ") + mA) + " within referrals")) | |
3295 | 3073 | else { | |
3296 | - | let | |
3297 | - | let | |
3298 | - | then value( | |
3299 | - | else makeString_2C(( | |
3300 | - | $Tuple2(([StringEntry( | |
3074 | + | let mH = makeString_2C((mG :+ mA), "_") | |
3075 | + | let mI = if (containsElement(mD, mz)) | |
3076 | + | then value(mC) | |
3077 | + | else makeString_2C((mD :+ mz), "_") | |
3078 | + | $Tuple2(([StringEntry(kl, mz), StringEntry(mE, mH), StringEntry(mB, mI)] ++ lp), 0) | |
3301 | 3079 | } | |
3302 | 3080 | } | |
3303 | 3081 | } | |
3304 | 3082 | } | |
3305 | 3083 | } | |
3306 | 3084 | ||
3307 | 3085 | ||
3308 | 3086 | ||
3309 | - | @Callable( | |
3310 | - | func distributePoints ( | |
3311 | - | let | |
3312 | - | if ((size( | |
3087 | + | @Callable(gN) | |
3088 | + | func distributePoints (mJ,mK,mL,mM,mN) = { | |
3089 | + | let lp = ll(gN) | |
3090 | + | if ((size(gN.payments) != 0)) | |
3313 | 3091 | then throw("No payments required") | |
3314 | 3092 | else { | |
3315 | - | let c = toString( | |
3316 | - | let | |
3317 | - | let | |
3318 | - | let | |
3093 | + | let c = toString(gN.originCaller) | |
3094 | + | let mO = dH(invoke(dk, "checkWlgXpREADONLY", [c], nil)) | |
3095 | + | let mP = dF(mO[1]) | |
3096 | + | let mQ = if ((0 >= mP)) | |
3319 | 3097 | then $Tuple2(0, nil) | |
3320 | 3098 | else { | |
3321 | - | let | |
3322 | - | if (( | |
3323 | - | then $Tuple2( | |
3099 | + | let kg = dF(invoke(dk, "takeWlgXp", [c], nil)) | |
3100 | + | if ((kg == kg)) | |
3101 | + | then $Tuple2(mP, [IntegerEntry(I(c), dF(mO[0])), IntegerEntry(H(c), dF(mO[2]))]) | |
3324 | 3102 | else throw("Strict value is not equal to itself.") | |
3325 | 3103 | } | |
3326 | - | let | |
3327 | - | let | |
3328 | - | let B = valueOrErrorMessage(getString( | |
3329 | - | let | |
3330 | - | let | |
3331 | - | let | |
3332 | - | let | |
3333 | - | let | |
3334 | - | let | |
3335 | - | if (( | |
3336 | - | then throw((("There are only " + toString( | |
3104 | + | let mR = mQ._1 | |
3105 | + | let mS = mQ._2 | |
3106 | + | let B = valueOrErrorMessage(getString(bM(c)), "You don't have a duck staked") | |
3107 | + | let mT = J(c) | |
3108 | + | let mU = (valueOrElse(getInteger(mT), 0) + mR) | |
3109 | + | let mV = F(B) | |
3110 | + | let mW = valueOrElse(getInteger(mV), 0) | |
3111 | + | let mX = (mU + mW) | |
3112 | + | let mY = ((((mJ + mK) + mL) + mM) + mN) | |
3113 | + | if ((mY > mX)) | |
3114 | + | then throw((("There are only " + toString(mX)) + " free points to distribute")) | |
3337 | 3115 | else { | |
3338 | - | let | |
3339 | - | let at = split(valueOrElse(getString( | |
3340 | - | let | |
3341 | - | $Tuple2((([IntegerEntry( | |
3116 | + | let mZ = C(B) | |
3117 | + | let at = split(valueOrElse(getString(mZ), "0_0_0_0_0"), "_") | |
3118 | + | let na = (mU - mY) | |
3119 | + | $Tuple2((([IntegerEntry(mT, if ((0 > na)) | |
3342 | 3120 | then 0 | |
3343 | - | else | |
3344 | - | then ( | |
3345 | - | else | |
3121 | + | else na), IntegerEntry(mV, if ((0 > na)) | |
3122 | + | then (mW + na) | |
3123 | + | else mW), StringEntry(mZ, makeString([toString((parseIntValue(at[l]) + mJ)), toString((parseIntValue(at[m]) + mK)), toString((parseIntValue(at[n]) + mL)), toString((parseIntValue(at[o]) + mM)), toString((parseIntValue(at[p]) + mN))], "_"))] ++ lp) ++ mS), 0) | |
3346 | 3124 | } | |
3347 | 3125 | } | |
3348 | 3126 | } | |
3349 | 3127 | ||
3350 | 3128 | ||
3351 | 3129 | ||
3352 | - | @Callable( | |
3353 | - | func splitByGlobalWeightsREADONLY ( | |
3354 | - | ||
3355 | - | ||
3356 | - | ||
3357 | - | @Callable( | |
3358 | - | func splitByGlobalAndLocalWeightsREADONLY ( | |
3359 | - | let | |
3360 | - | $Tuple2(nil, $Tuple2( | |
3361 | - | } | |
3362 | - | ||
3363 | - | ||
3364 | - | ||
3365 | - | @Callable( | |
3366 | - | func getBackpackREADONLY (B) = $Tuple2(nil, makeString( | |
3367 | - | ||
3368 | - | ||
3369 | - | ||
3370 | - | @Callable( | |
3130 | + | @Callable(gN) | |
3131 | + | func splitByGlobalWeightsREADONLY (eL) = $Tuple2(nil, fd(eL)) | |
3132 | + | ||
3133 | + | ||
3134 | + | ||
3135 | + | @Callable(gN) | |
3136 | + | func splitByGlobalAndLocalWeightsREADONLY (nb,nc,gQ) = { | |
3137 | + | let gJ = gP(gQ) | |
3138 | + | $Tuple2(nil, $Tuple2(fd(nb), eO(nc, gJ))) | |
3139 | + | } | |
3140 | + | ||
3141 | + | ||
3142 | + | ||
3143 | + | @Callable(gN) | |
3144 | + | func getBackpackREADONLY (B) = $Tuple2(nil, makeString(hN(bN(B)), ":")) | |
3145 | + | ||
3146 | + | ||
3147 | + | ||
3148 | + | @Callable(gN) | |
3371 | 3149 | func getWarehouseREADONLY (Q) = { | |
3372 | - | let | |
3373 | - | let | |
3374 | - | let | |
3375 | - | $Tuple2(nil, makeString_2C( | |
3376 | - | } | |
3377 | - | ||
3378 | - | ||
3379 | - | ||
3380 | - | @Callable( | |
3381 | - | func saveLastTx () = if (!(containsElement([dl, | |
3150 | + | let jv = value(assetInfo(fromBase58String(Q))) | |
3151 | + | let ic = (dK(split(jv.description, "_")[do]) / cL) | |
3152 | + | let id = valueOrElse(getInteger(bD(Q)), 0) | |
3153 | + | $Tuple2(nil, makeString_2C(ia(bC(Q), ic, id), ":")) | |
3154 | + | } | |
3155 | + | ||
3156 | + | ||
3157 | + | ||
3158 | + | @Callable(gN) | |
3159 | + | func saveLastTx () = if (!(containsElement([dk, di, dl, dm], gN.caller))) | |
3382 | 3160 | then throw("Access denied") | |
3383 | - | else $Tuple2( | |
3384 | - | ||
3385 | - | ||
3386 | - | ||
3387 | - | @Callable( | |
3388 | - | func updateDuckStats (B, | |
3161 | + | else $Tuple2(ll(gN), 42) | |
3162 | + | ||
3163 | + | ||
3164 | + | ||
3165 | + | @Callable(gN) | |
3166 | + | func updateDuckStats (B,kg) = if ((gN.caller != di)) | |
3389 | 3167 | then throw("Access denied") | |
3390 | - | else | |
3391 | - | ||
3392 | - | ||
3393 | - | ||
3394 | - | @Callable( | |
3395 | - | func updateAccStats (c, | |
3168 | + | else ki(B, kg) | |
3169 | + | ||
3170 | + | ||
3171 | + | ||
3172 | + | @Callable(gN) | |
3173 | + | func updateAccStats (c,kg) = if (!(containsElement([dk, di, dm], gN.caller))) | |
3396 | 3174 | then throw("Access denied") | |
3397 | - | else | |
3398 | - | ||
3399 | - | ||
3400 | - | ||
3401 | - | @Callable( | |
3402 | - | func equipDuck ( | |
3403 | - | let | |
3404 | - | if ((size( | |
3175 | + | else kj(c, kg) | |
3176 | + | ||
3177 | + | ||
3178 | + | ||
3179 | + | @Callable(gN) | |
3180 | + | func equipDuck (nd) = { | |
3181 | + | let lp = ll(gN) | |
3182 | + | if ((size(gN.payments) != 0)) | |
3405 | 3183 | then throw("No payments required") | |
3406 | 3184 | else { | |
3407 | - | let c = toString( | |
3408 | - | let B = valueOrErrorMessage(getString( | |
3409 | - | if ( | |
3185 | + | let c = toString(gN.originCaller) | |
3186 | + | let B = valueOrErrorMessage(getString(bM(c)), "You don't have a duck staked") | |
3187 | + | if (kt(B)) | |
3410 | 3188 | then throw("equipDuck_checkTournament") | |
3411 | - | else if ( | |
3189 | + | else if (ku(B)) | |
3412 | 3190 | then throw("equipDuck_checkDelivery") | |
3413 | 3191 | else { | |
3414 | - | let | |
3415 | - | let | |
3416 | - | let | |
3417 | - | let | |
3418 | - | let | |
3419 | - | if ((size( | |
3192 | + | let gA = G(B) | |
3193 | + | let ne = split(valueOrElse(getString(gA), ",;,_,;,_,;,_,;,_,;,_,;,"), "_") | |
3194 | + | let hO = bN(B) | |
3195 | + | let ir = hN(hO) | |
3196 | + | let lG = split(nd, "_") | |
3197 | + | if ((size(lG) != r)) | |
3420 | 3198 | then throw("Wrong equipment string") | |
3421 | 3199 | else { | |
3422 | - | let | |
3423 | - | let | |
3424 | - | let ar = if (( | |
3200 | + | let gC = gp(ne, fA(ir[bp]), true, nil) | |
3201 | + | let gD = split(lG[q], ";")[1] | |
3202 | + | let ar = if ((gD == "")) | |
3425 | 3203 | then 0 | |
3426 | 3204 | else { | |
3427 | - | let | |
3428 | - | if (( | |
3205 | + | let gE = split(gD, ",")[0] | |
3206 | + | if ((gE == "")) | |
3429 | 3207 | then 0 | |
3430 | 3208 | else { | |
3431 | - | let | |
3432 | - | let | |
3433 | - | let | |
3434 | - | if (if (if (if (if (( | |
3209 | + | let fP = split(gE, ":") | |
3210 | + | let dg = fP[0] | |
3211 | + | let gF = fP[1] | |
3212 | + | if (if (if (if (if ((dg == "06")) | |
3435 | 3213 | then true | |
3436 | - | else ( | |
3214 | + | else (dg == "07")) | |
3437 | 3215 | then true | |
3438 | - | else ( | |
3439 | - | then ( | |
3216 | + | else (dg == "08")) | |
3217 | + | then (gF != "") | |
3440 | 3218 | else false) | |
3441 | - | then (parseIntValue( | |
3219 | + | then (parseIntValue(gF) > 0) | |
3442 | 3220 | else false) | |
3443 | - | then parseIntValue(split( | |
3221 | + | then parseIntValue(split(aX[parseIntValue(dg)], "_")[aZ]) | |
3444 | 3222 | else 0 | |
3445 | 3223 | } | |
3446 | 3224 | } | |
3447 | - | let | |
3448 | - | let | |
3449 | - | let | |
3450 | - | $Tuple2(([StringEntry( | |
3225 | + | let gk = ap(this, B, ar, true) | |
3226 | + | let gG = gp(lG, gC, false, gk) | |
3227 | + | let nf = fF(gG) | |
3228 | + | $Tuple2(([StringEntry(gA, nd), StringEntry(hO, makeString_2C([ir[bm], ir[bn], ir[bo], nf], ":")), StringEntry(M(B), makeString([toString(gk[7]), toString(gk[8]), toString(gk[9]), toString(gk[10]), toString(gk[11])], "_"))] ++ lp), 0) | |
3451 | 3229 | } | |
3452 | 3230 | } | |
3453 | 3231 | } | |
3454 | 3232 | } | |
3455 | 3233 | ||
3456 | 3234 | ||
3457 | 3235 | ||
3458 | - | @Callable( | |
3459 | - | func fortificateLand (Q, | |
3460 | - | let | |
3461 | - | if ((size( | |
3236 | + | @Callable(gN) | |
3237 | + | func fortificateLand (Q,ng) = { | |
3238 | + | let lp = ll(gN) | |
3239 | + | if ((size(gN.payments) != 0)) | |
3462 | 3240 | then throw("No payments required") | |
3463 | 3241 | else { | |
3464 | - | let c = toString( | |
3465 | - | let B = valueOrElse(getString( | |
3466 | - | let | |
3467 | - | let | |
3468 | - | let | |
3469 | - | let | |
3470 | - | let | |
3471 | - | let | |
3472 | - | let | |
3473 | - | let | |
3474 | - | let | |
3475 | - | let | |
3476 | - | let | |
3477 | - | let | |
3478 | - | let | |
3479 | - | let | |
3480 | - | let | |
3481 | - | let | |
3482 | - | let | |
3483 | - | let | |
3484 | - | let | |
3485 | - | let | |
3486 | - | let | |
3487 | - | let | |
3488 | - | $Tuple2(([StringEntry( | |
3489 | - | } | |
3490 | - | } | |
3491 | - | ||
3492 | - | ||
3493 | - | ||
3494 | - | @Callable( | |
3495 | - | func initDuckTourAttempt (B) = if (( | |
3242 | + | let c = toString(gN.originCaller) | |
3243 | + | let B = valueOrElse(getString(bM(c)), "") | |
3244 | + | let fK = ap(this, B, 0, false) | |
3245 | + | let nh = bE(Q) | |
3246 | + | let ni = split(valueOrElse(getString(nh), ":0_15:0_18:0"), "_") | |
3247 | + | let jv = value(assetInfo(fromBase58String(Q))) | |
3248 | + | let ic = (dK(split(jv.description, "_")[do]) / cL) | |
3249 | + | let id = valueOrElse(getInteger(bD(Q)), 0) | |
3250 | + | let ib = bC(Q) | |
3251 | + | let ig = ia(ib, ic, id) | |
3252 | + | let nj = split(ig[bh], "_") | |
3253 | + | let nk = parseIntValue(nj[bj]) | |
3254 | + | let nl = parseIntValue(nj[bk]) | |
3255 | + | let nm = split(ng, "_") | |
3256 | + | let nn = gw(ni, fA(ig[bg]), nk, nl, true, nil) | |
3257 | + | let gC = nn._1 | |
3258 | + | let no = nn._2 | |
3259 | + | let np = nn._3 | |
3260 | + | let nq = gw(nm, gC, no, np, false, fK) | |
3261 | + | let gG = nq._1 | |
3262 | + | let nr = nq._2 | |
3263 | + | let ns = nq._3 | |
3264 | + | let nf = fF(gG) | |
3265 | + | let kb = makeString([nj[bi], toString(nr), toString(ns), nj[bl]], "_") | |
3266 | + | $Tuple2(([StringEntry(nh, ng), StringEntry(ib, makeString_2C([ig[bd], ig[be], ig[bf], nf, kb], ":"))] ++ lp), 0) | |
3267 | + | } | |
3268 | + | } | |
3269 | + | ||
3270 | + | ||
3271 | + | ||
3272 | + | @Callable(gN) | |
3273 | + | func initDuckTourAttempt (B) = if ((gN.caller != dl)) | |
3496 | 3274 | then throw("Access denied") | |
3497 | 3275 | else { | |
3498 | - | let | |
3499 | - | let | |
3500 | - | let | |
3501 | - | let | |
3502 | - | let | |
3503 | - | let | |
3504 | - | let | |
3505 | - | $Tuple2([IntegerEntry(K(B), | |
3276 | + | let je = A(B) | |
3277 | + | let jf = aj(valueOrElse(getInteger(E(B)), 0)) | |
3278 | + | let ky = valueOrElse(getInteger(je), jf) | |
3279 | + | let nt = bO(B) | |
3280 | + | let jt = valueOrElse(getString(nt), aM) | |
3281 | + | let cj = valueOrElse(getInteger(dl, bU), 0) | |
3282 | + | let nu = (toString(cj) + "_T_0") | |
3283 | + | $Tuple2([IntegerEntry(K(B), ky), IntegerEntry(je, jf), StringEntry(L(B), jt), StringEntry(nt, nu)], nu) | |
3506 | 3284 | } | |
3507 | 3285 | ||
3508 | 3286 | ||
3509 | 3287 | ||
3510 | - | @Callable( | |
3288 | + | @Callable(gN) | |
3511 | 3289 | func breakAttempt () = { | |
3512 | - | let | |
3513 | - | let B = valueOrErrorMessage(getString( | |
3514 | - | let | |
3515 | - | let | |
3516 | - | if ((split( | |
3290 | + | let lp = ll(gN) | |
3291 | + | let B = valueOrErrorMessage(getString(bM(toString(gN.caller))), "You don't have a duck staked") | |
3292 | + | let nt = bO(B) | |
3293 | + | let jt = valueOrElse(getString(nt), aM) | |
3294 | + | if ((split(jt, "_")[br] != "T")) | |
3517 | 3295 | then throw("Your duck is not in the tournament") | |
3518 | 3296 | else { | |
3519 | - | let | |
3520 | - | let | |
3521 | - | $Tuple2((( | |
3522 | - | } | |
3523 | - | } | |
3524 | - | ||
3525 | - | ||
3526 | - | ||
3527 | - | @Callable( | |
3528 | - | func exitTournamentInternal (B) = if (( | |
3297 | + | let nv = getIntegerValue(K(B)) | |
3298 | + | let kE = getStringValue(L(B)) | |
3299 | + | $Tuple2(((lp :+ IntegerEntry(A(B), nv)) :+ StringEntry(nt, kE)), jt) | |
3300 | + | } | |
3301 | + | } | |
3302 | + | ||
3303 | + | ||
3304 | + | ||
3305 | + | @Callable(gN) | |
3306 | + | func exitTournamentInternal (B) = if ((gN.caller != this)) | |
3529 | 3307 | then throw("Access denied") | |
3530 | 3308 | else { | |
3531 | - | let | |
3532 | - | let | |
3533 | - | $Tuple2([IntegerEntry(A(B), | |
3309 | + | let nv = getIntegerValue(K(B)) | |
3310 | + | let kE = getStringValue(L(B)) | |
3311 | + | $Tuple2([IntegerEntry(A(B), nv), StringEntry(bO(B), kE)], false) | |
3534 | 3312 | } | |
3535 | 3313 | ||
3536 | 3314 | ||
3537 | 3315 | ||
3538 | - | @Callable( | |
3539 | - | func exitDeliveryInternal (B) = if (( | |
3316 | + | @Callable(gN) | |
3317 | + | func exitDeliveryInternal (B) = if ((gN.caller != this)) | |
3540 | 3318 | then throw("Access denied") | |
3541 | 3319 | else { | |
3542 | - | let | |
3543 | - | $Tuple2(( | |
3320 | + | let ml = kv(B, false, 0, 0) | |
3321 | + | $Tuple2((ml._1 ++ ml._2), false) | |
3544 | 3322 | } | |
3545 | 3323 | ||
3546 | 3324 | ||
3547 | 3325 | ||
3548 | - | @Callable( | |
3549 | - | func autoExitDelivery (B, | |
3326 | + | @Callable(gN) | |
3327 | + | func autoExitDelivery (B,iY,nw,kw) = if ((gN.caller != this)) | |
3550 | 3328 | then throw("Access denied") | |
3551 | 3329 | else { | |
3552 | - | let | |
3553 | - | $Tuple2( | |
3330 | + | let ml = kv(B, true, iY, kw) | |
3331 | + | $Tuple2(ml._1, ml._3) | |
3554 | 3332 | } | |
3555 | 3333 | ||
3556 | 3334 | ||
3557 | 3335 | ||
3558 | - | @Callable( | |
3559 | - | func breakDelivery () = $Tuple2( | |
3560 | - | ||
3561 | - | ||
3562 | - | ||
3563 | - | @Callable( | |
3564 | - | func prepareRobbery ( | |
3565 | - | let | |
3566 | - | if (!(sigVerify_8Kb( | |
3336 | + | @Callable(gN) | |
3337 | + | func breakDelivery () = $Tuple2(ll(gN), "breakDelivery") | |
3338 | + | ||
3339 | + | ||
3340 | + | ||
3341 | + | @Callable(gN) | |
3342 | + | func prepareRobbery (iT,iU) = { | |
3343 | + | let lp = ll(gN) | |
3344 | + | if (!(sigVerify_8Kb(iT, iU, ec))) | |
3567 | 3345 | then throw("signature does not match") | |
3568 | - | else if ((size( | |
3346 | + | else if ((size(gN.payments) != 1)) | |
3569 | 3347 | then throw("exactly 1 payment must be attached") | |
3570 | 3348 | else { | |
3571 | - | let | |
3572 | - | let | |
3573 | - | if (if (!(isDefined( | |
3349 | + | let lq = gN.payments[0] | |
3350 | + | let nx = lq.amount | |
3351 | + | if (if (!(isDefined(lq.assetId))) | |
3574 | 3352 | then true | |
3575 | - | else (value( | |
3353 | + | else (value(lq.assetId) != ds)) | |
3576 | 3354 | then throw("WLGOLD payments only!") | |
3577 | 3355 | else { | |
3578 | - | let | |
3579 | - | if ((size( | |
3356 | + | let fs = split(toUtf8String(iT), "|") | |
3357 | + | if ((2 > size(fs))) | |
3580 | 3358 | then throw("Wrong message format") | |
3581 | 3359 | else { | |
3582 | - | let B = | |
3583 | - | if ( | |
3360 | + | let B = fs[0] | |
3361 | + | if (kt(B)) | |
3584 | 3362 | then throw("prepareRobbery_checkTournament") | |
3585 | - | else if ( | |
3363 | + | else if (ku(B)) | |
3586 | 3364 | then throw("prepareRobbery_checkDelivery") | |
3587 | 3365 | else { | |
3588 | 3366 | let aB = ax(this, B)._1 | |
3589 | - | if ((aB > | |
3590 | - | then throw(((("Payment " + toString( | |
3367 | + | if ((aB > nx)) | |
3368 | + | then throw(((("Payment " + toString(nx)) + " < required ") + toString(aB))) | |
3591 | 3369 | else { | |
3592 | - | let | |
3370 | + | let ny = split(fs[1], "_") | |
3593 | 3371 | let aA = lastBlock.timestamp | |
3594 | 3372 | let aC = valueOrElse(getInteger(S(B)), 0) | |
3595 | 3373 | let aD = valueOrElse(getString(T(B)), "") | |
3596 | 3374 | let aE = valueOrElse(getInteger(R(aD)), 0) | |
3597 | 3375 | if (if ((aC != y)) | |
3598 | 3376 | then (aE > aA) | |
3599 | 3377 | else false) | |
3600 | 3378 | then throw(("You already started robbing, wait till " + toString(aE))) | |
3601 | 3379 | else { | |
3602 | - | func | |
3603 | - | let | |
3604 | - | let | |
3605 | - | if (( | |
3380 | + | func nz (eU,Q) = { | |
3381 | + | let nA = valueOrElse(getInteger(P(Q)), 0) | |
3382 | + | let nB = valueOrElse(getInteger(R(Q)), 0) | |
3383 | + | if ((nA > size(v))) | |
3606 | 3384 | then throw("Invalid state") | |
3607 | - | else if ((aA > | |
3385 | + | else if ((aA > nB)) | |
3608 | 3386 | then { | |
3609 | - | let | |
3610 | - | if ((0 >= | |
3611 | - | then | |
3387 | + | let nC = valueOrElse(getInteger(bw(Q)), 0) | |
3388 | + | if ((0 >= nC)) | |
3389 | + | then eU | |
3612 | 3390 | else { | |
3613 | - | let | |
3614 | - | let | |
3615 | - | let | |
3616 | - | let | |
3617 | - | let | |
3618 | - | let | |
3619 | - | if ((w > | |
3620 | - | then | |
3621 | - | else ( | |
3391 | + | let gu = value(assetInfo(fromBase58String(Q))) | |
3392 | + | let jz = split(gu.description, "_") | |
3393 | + | let jl = dK(jz[do]) | |
3394 | + | let nD = jk(Q, jl) | |
3395 | + | let gT = (aA - nC) | |
3396 | + | let jC = fraction(gT, (nD * jl), a) | |
3397 | + | if ((w > jC)) | |
3398 | + | then eU | |
3399 | + | else (eU :+ Q) | |
3622 | 3400 | } | |
3623 | 3401 | } | |
3624 | - | else | |
3402 | + | else eU | |
3625 | 3403 | } | |
3626 | 3404 | ||
3627 | - | let | |
3628 | - | let | |
3629 | - | let | |
3630 | - | let | |
3631 | - | func | |
3632 | - | then | |
3633 | - | else | |
3634 | - | ||
3635 | - | func | |
3636 | - | then | |
3405 | + | let nE = { | |
3406 | + | let eW = ny | |
3407 | + | let eX = size(eW) | |
3408 | + | let eY = nil | |
3409 | + | func eZ (fa,fb) = if ((fb >= eX)) | |
3410 | + | then fa | |
3411 | + | else nz(fa, eW[fb]) | |
3412 | + | ||
3413 | + | func fc (fa,fb) = if ((fb >= eX)) | |
3414 | + | then fa | |
3637 | 3415 | else throw("List size exceeds 10") | |
3638 | 3416 | ||
3639 | - | | |
3417 | + | fc(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eY, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
3640 | 3418 | } | |
3641 | - | if ((size( | |
3419 | + | if ((size(nE) == 0)) | |
3642 | 3420 | then throw("No candidates for robbery") | |
3643 | 3421 | else { | |
3644 | - | let | |
3645 | - | let Q = | |
3646 | - | $Tuple2(([IntegerEntry(P(Q), x), IntegerEntry(R(Q), (aA + v[x])), IntegerEntry(S(B), z), StringEntry(T(B), Q)] ++ | |
3422 | + | let nF = dV(size(nE), iT, iU) | |
3423 | + | let Q = nE[nF] | |
3424 | + | $Tuple2(([IntegerEntry(P(Q), x), IntegerEntry(R(Q), (aA + v[x])), IntegerEntry(S(B), z), StringEntry(T(B), Q)] ++ lp), Q) | |
3647 | 3425 | } | |
3648 | 3426 | } | |
3649 | 3427 | } | |
3650 | 3428 | } | |
3651 | 3429 | } | |
3652 | 3430 | } | |
3653 | 3431 | } | |
3654 | 3432 | } | |
3655 | 3433 | ||
3656 | 3434 | ||
3657 | 3435 | ||
3658 | - | @Callable( | |
3659 | - | func robLand ( | |
3660 | - | let | |
3661 | - | if (!(sigVerify_8Kb( | |
3436 | + | @Callable(gN) | |
3437 | + | func robLand (iT,iU) = { | |
3438 | + | let lp = ll(gN) | |
3439 | + | if (!(sigVerify_8Kb(iT, iU, ec))) | |
3662 | 3440 | then throw("signature does not match") | |
3663 | 3441 | else { | |
3664 | - | let | |
3665 | - | let B = valueOrErrorMessage(getString( | |
3442 | + | let bQ = toString(gN.caller) | |
3443 | + | let B = valueOrErrorMessage(getString(bM(bQ)), "You don't have a duck staked") | |
3666 | 3444 | let aA = lastBlock.timestamp | |
3667 | - | $Tuple2(( | |
3668 | - | } | |
3669 | - | } | |
3670 | - | ||
3671 | - | ||
3672 | - | ||
3673 | - | @Callable( | |
3445 | + | $Tuple2((lp :+ IntegerEntry(N(B), aA)), 0) | |
3446 | + | } | |
3447 | + | } | |
3448 | + | ||
3449 | + | ||
3450 | + | ||
3451 | + | @Callable(gN) | |
3674 | 3452 | func acceptDelivery () = { | |
3675 | - | let | |
3676 | - | let | |
3677 | - | let B = valueOrErrorMessage(getString( | |
3678 | - | let | |
3679 | - | let | |
3680 | - | if (( | |
3681 | - | then throw(((("Delivery is not available, fund=" + | |
3453 | + | let lp = ll(gN) | |
3454 | + | let bQ = toString(gN.caller) | |
3455 | + | let B = valueOrErrorMessage(getString(bM(bQ)), "You don't have a duck staked") | |
3456 | + | let nG = valueOrElse(getInteger(di, bS), 0) | |
3457 | + | let kC = valueOrElse(getInteger(di, bT), 0) | |
3458 | + | if ((aP > (nG - kC))) | |
3459 | + | then throw(((("Delivery is not available, fund=" + dP(nG, 6)) + ", locked=") + dP(kC, 6))) | |
3682 | 3460 | else { | |
3683 | 3461 | let aA = lastBlock.timestamp | |
3684 | - | let | |
3685 | - | if (( | |
3686 | - | then throw(("Delivery is forbidden for your duck until " + toString( | |
3462 | + | let nH = valueOrElse(getInteger(U(B)), 0) | |
3463 | + | if ((nH > aA)) | |
3464 | + | then throw(("Delivery is forbidden for your duck until " + toString(nH))) | |
3687 | 3465 | else { | |
3688 | 3466 | let av = getIntegerValue(A(B)) | |
3689 | 3467 | if ((0 >= av)) | |
3690 | 3468 | then throw("You cannot accept delivery with zero health") | |
3691 | 3469 | else { | |
3692 | - | let | |
3693 | - | let | |
3694 | - | let | |
3695 | - | let | |
3696 | - | let | |
3697 | - | let | |
3698 | - | if (if (( | |
3699 | - | then ( | |
3470 | + | let kB = V(bQ) | |
3471 | + | let fU = valueOrElse(getInteger(kB), 0) | |
3472 | + | let nI = valueOrElse(getInteger(W(bQ)), 0) | |
3473 | + | let nJ = (aA / a) | |
3474 | + | let nK = valueOrElse(getInteger(dm, d(bQ)), 0) | |
3475 | + | let nL = (aR + (nK / aS)) | |
3476 | + | if (if ((fU >= nL)) | |
3477 | + | then (nI == nJ) | |
3700 | 3478 | else false) | |
3701 | - | then throw((("You already used " + toString( | |
3702 | - | else if ( | |
3479 | + | then throw((("You already used " + toString(nL)) + " delivery attempts for today")) | |
3480 | + | else if (kt(B)) | |
3703 | 3481 | then throw("acceptDelivery_checkTournament") | |
3704 | - | else if ( | |
3482 | + | else if (ku(B)) | |
3705 | 3483 | then throw("acceptDelivery_checkDelivery") | |
3706 | 3484 | else { | |
3707 | - | let | |
3708 | - | let | |
3709 | - | let | |
3710 | - | let | |
3711 | - | $Tuple2(([StringEntry(L(B), | |
3485 | + | let nM = dF(invoke(di, "updateDeliveryLocked", [(kC + aP)], nil)) | |
3486 | + | let nt = bO(B) | |
3487 | + | let jt = valueOrElse(getString(nt), aM) | |
3488 | + | let nN = (toString(aA) + "_D_0") | |
3489 | + | $Tuple2(([StringEntry(L(B), jt), StringEntry(nt, nN), IntegerEntry(kB, if ((nI != nJ)) | |
3712 | 3490 | then 0 | |
3713 | - | else | |
3491 | + | else fU)] ++ lp), $Tuple2(nN, nM)) | |
3714 | 3492 | } | |
3715 | 3493 | } | |
3716 | 3494 | } | |
3717 | 3495 | } | |
3718 | 3496 | } | |
3719 | 3497 | ||
3720 | 3498 | ||
3721 | 3499 | ||
3722 | - | @Callable( | |
3723 | - | func checkDeliveryCallback (B) = if (( | |
3500 | + | @Callable(gN) | |
3501 | + | func checkDeliveryCallback (B) = if ((gN.caller != dl)) | |
3724 | 3502 | then throw("Access denied") | |
3725 | - | else $Tuple2(nil, lu(B)) | |
3726 | - | ||
3727 | - | ||
3728 | - | ||
3729 | - | @Callable(gO) | |
3730 | - | func genTestREADONLY (iB,gL) = { | |
3731 | - | let oO = value(value(blockInfoByHeight(2827006)).vrf) | |
3732 | - | let jO = hj(toBigInt((oO + sha256(toBytes(iB))))) | |
3733 | - | $Tuple2(nil, hB(jO, gL, -1)) | |
3734 | - | } | |
3503 | + | else $Tuple2(nil, ku(B)) | |
3735 | 3504 | ||
3736 | 3505 |
github/deemru/w8io/169f3d6 1442.22 ms ◑