tx · 69NH1WWfLS8FraSQvZgE4RXskz6H7ZVhHnKfkqofYkCb

3N8y4wxX3JC4TdrCJBXX16SjWf6X256hrep:  -0.05700000 Waves

2023.09.24 19:59 [2769751] smart account 3N8y4wxX3JC4TdrCJBXX16SjWf6X256hrep > SELF 0.00000000 Waves

{ "type": 13, "id": "69NH1WWfLS8FraSQvZgE4RXskz6H7ZVhHnKfkqofYkCb", "fee": 5700000, "feeAssetId": null, "timestamp": 1695574796030, "version": 2, "chainId": 84, "sender": "3N8y4wxX3JC4TdrCJBXX16SjWf6X256hrep", "senderPublicKey": "7v5L7QkXxfkirALdyqmox38QCsa9jtfAtgUfHTh34eWq", "proofs": [ "2n3ZY7E7qBwzfJawZ8Lt5wgC6537NjyK6g2Eu9kmCsP1wcSwkUJY9Ur9iVTNAveBixgPMvx12uzUM55CdTiT37H7" ], "script": "base64:BgKGAQgCEgQKAggYEgMKAQgSBAoCERESBAoCCAESAwoBARIFCgMREQgSBgoEEREICBIECgIRERIFCgMREQgSBgoEEREICBIDCgEREgMKARESBAoCEQgSBAoCAQESBAoCCAgSBQoDCAgIEgQKAggIEgUKAwgICBIDCgEREgMKAQgSAwoBARIDCgEIZgAHeHBUcmFkZQCQTgAHeHBDcmFmdACQTgAKeHBTZWxsVG9FcwCQTgAGeHBTaG9wAJBOAApMQU5EUFJFRklYAgRMQU5EAAZOVU1SRVMABgAPREVGQVVMVExPQ0FUSU9OAg9BZnJpY2FfRl9BZnJpY2EAEFJFU09VUkNFUFJJQ0VNSU4A1bUCAA1FU01BWFBBQ0tBR0VTAAoACUVTQlVZQ09FRgAEABVNSU5fVVNEVF9GRUVfREVMSVZFUlkA0IYDABdNSU5fVVNEVF9GRUVfREVMSVZFUlkxNQD4yQQACHJlc1R5cGVzCQDMCAICA09pbAkAzAgCAgNPcmUJAMwIAgIEV29vZAkAzAgCAgRTYW5kCQDMCAICBENsYXkJAMwIAgIHT3JnYW5pYwUDbmlsAAhtYXRUeXBlcwkAzAgCAgRGdWVsCQDMCAICBU1ldGFsCQDMCAICBVBsYW5rCQDMCAICBUdsYXNzCQDMCAICB1BsYXN0aWMJAMwIAgIHUHJvdGVpbgUDbmlsAAlwcm9kVHlwZXMJAMwIAgIQRmlyc3QgQWlkIEtpdCBMMQkAzAgCAhBGaXJzdCBBaWQgS2l0IEwyCQDMCAICEEZpcnN0IEFpZCBLaXQgTDMJAMwIAgILQmFja3BhY2sgTDEJAMwIAgILQmFja3BhY2sgTDIJAMwIAgILQmFja3BhY2sgTDMJAMwIAgIORm9vZCBSYXRpb24gTDEJAMwIAgIORm9vZCBSYXRpb24gTDIJAMwIAgIORm9vZCBSYXRpb24gTDMJAMwIAgILSmV0IFBhY2sgTDEJAMwIAgILSmV0IFBhY2sgTDIJAMwIAgILSmV0IFBhY2sgTDMJAMwIAgIJU2hpZWxkIEwxCQDMCAICCVNoaWVsZCBMMgkAzAgCAglTaGllbGQgTDMJAMwIAgIHTWluZSBMMQkAzAgCAgdNaW5lIEwyCQDMCAICB01pbmUgTDMJAMwIAgIHVHJhcCBMMQkAzAgCAgdUcmFwIEwyCQDMCAICB1RyYXAgTDMFA25pbAAKY29udGluZW50cwkAzAgCAghBbWVyaWNhcwkAzAgCAgZFdXJvcGUJAMwIAgIEQXNpYQkAzAgCAgZBZnJpY2EJAMwIAgIHT2NlYW5pYQUDbmlsAAlDT0VGRjJNQVQAgK3iBAAQcHJvZHVjdGlvbk1hdHJpeAkAzAgCAiU4XzhfOF8xN18xN180Ml8xMl8wXzMwXzAsMCwwLDAsMCwwLDBfCQDMCAICJThfOF84XzE3XzE3XzQyXzI0XzBfNjBfMCwwLDUsMiwwLDAsMF8JAMwIAgInOF84XzhfMTdfMTdfNDJfMzZfMF8xMjBfMCwwLDEwLDQsMCwwLDBfCQDMCAICKThfMTlfMTlfOF8yN18xOV8yNl8xXzIwXzAsMCwwLDAsMCwwLDBfMDAxCQDMCAICKThfMTlfMTlfOF8yN18xOV81Ml8xXzQwXzAsMCwwLDAsMCwwLDBfMDAxCQDMCAICKThfMTlfMTlfOF8yN18xOV83OF8xXzgwXzAsMCwwLDAsMCwwLDBfMDAxCQDMCAICJThfOF84XzhfOF82MF8xM18yXzJfMCwwLDAsMCwwLDAsMF8wMTEJAMwIAgIlOF84XzhfOF84XzYwXzI2XzJfNF8wLDAsMCwwLDAsMCwwXzAxMQkAzAgCAiU4XzhfOF84XzhfNjBfMzlfMl84XzAsMCwwLDAsMCwwLDBfMDExCQDMCAICKTMwXzMwXzNfMTdfMTdfM18zMF8zXzMwXzAsMCwwLDAsMCwwLDBfMTExCQDMCAICKTMwXzMwXzNfMTdfMTdfM182MF8zXzUwXzAsMCwwLDAsMCwwLDBfMTExCQDMCAICKTMwXzMwXzNfMTdfMTdfM185MF8zXzcwXzAsMCwwLDAsMCwwLDBfMTExCQDMCAICKzE4XzE4XzEwXzE4XzE4XzE4XzExXzRfMTBfMCwwLDAsMCwwLDAsMF8yMDEJAMwIAgIrMThfMThfMTBfMThfMThfMThfMjJfNF8yMF8wLDAsMCwwLDAsMCwwXzIwMQkAzAgCAisxOF8xOF8xMF8xOF8xOF8xOF8zM180XzMwXzAsMCwwLDAsMCwwLDBfMjAxCQDMCAICKjRfMTNfMjJfNF8zNV8yMl8yM18wXzUwLDEsMF8wLDAsMCwwLDAsMCwwXwkAzAgCAio0XzEzXzIyXzRfMzVfMjJfNDZfMF81MCwxLDFfMCwyLDUsMCwwLDAsMF8JAMwIAgIrNF8xM18yMl80XzM1XzIyXzY5XzBfNTAsMiwxXzAsNSwxMCwwLDAsMCwwXwkAzAgCAio1XzI1XzQwXzVfMTBfMTVfMjBfMV8zMCwxLDFfMCwwLDAsMCwwLDAsMF8JAMwIAgIqNV8yNV80MF81XzEwXzE1XzQwXzFfMzAsMSwyXzIsMSwzLDAsMCwwLDBfCQDMCAICKjVfMjVfNDBfNV8xMF8xNV82MF8xXzMwLDEsM181LDIsOCwwLDAsMCwwXwUDbmlsAAlySWR4Q29lZmYABgANcklkeENvbnRpbmVudAAHAApSRUNJUEVTSVpFAAsADlBST0RVQ1RQS0dTSVpFAAoAC3doSWR4TGV2ZWxzAAAACHdoSWR4UmVzAAEACHdoSWR4TWF0AAIACXdoSWR4UHJvZAADAAl3aElkeExPRlQABAAJdm9sTG9ja2VkAAAACHZvbFRvdGFsAAMACmJwSWR4TGV2ZWwAAAAIYnBJZHhSZXMAAQAIYnBJZHhNYXQAAgAJYnBJZHhQcm9kAAMAD2xvY0lkeENvbnRpbmVudAAAAApsb2NJZHhUeXBlAAEACGxvY0lkeElkAAIBFWtleUxhbmRBc3NldElkVG9Pd25lcgEHYXNzZXRJZAkArAICAgNub18FB2Fzc2V0SWQBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBB2Fzc2V0SWQJAKwCAgIDc3RfBQdhc3NldElkAQ9rZXlBZGRyZXNzUmVmQnkBBGFkZHIJAKwCAgIJYWNjUmVmQnlfBQRhZGRyARRrZXlTdGFrZWREdWNrQnlPd25lcgEJb3duZXJBZGRyCQCsAgICEnN0YWtlZER1Y2tCeU93bmVyXwUJb3duZXJBZGRyARFrZXlCYWNrcGFja0J5RHVjawELZHVja0Fzc2V0SWQJAKwCAgIJYmFja1BhY2tfBQtkdWNrQXNzZXRJZAEPa2V5RHVja0xvY2F0aW9uAQtkdWNrQXNzZXRJZAkArAICAg1kdWNrTG9jYXRpb25fBQtkdWNrQXNzZXRJZAEOa2V5T3JkZXJCeUxhbmQBC2xhbmRBc3NldElkCQCsAgICCmxhbmRPcmRlcl8FC2xhbmRBc3NldElkAQ5rZXlFc1dhcmVob3VzZQACGmVtZXJnZW5jeVdhcmVob3VzZVByb2R1Y3RzAA9kZWxpdmVyeUZ1bmRLZXkCDGRlbGl2ZXJ5RnVuZAARZGVsaXZlcnlMb2NrZWRLZXkCDmRlbGl2ZXJ5TG9ja2VkARJnZXRSZWNpcGVNYXRlcmlhbHMBBnJlY2lwZQkAaAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQZyZWNpcGUFCXJJZHhDb2VmZgUJQ09FRkYyTUFUABFLU19BTExPV19ERUxJVkVSWQYABWNoYWluCQDJAQIJAMoBAggFBHRoaXMFYnl0ZXMAAQABAAt1c2R0QXNzZXRJZAQHJG1hdGNoMAUFY2hhaW4DCQAAAgEBVwUHJG1hdGNoMAEghNp6sggDP07Ru8qO7ouTvMmC3Qtd+geWqNQj+agP/7kDCQAAAgEBVAUHJG1hdGNoMAEgVbHYn3KHgu/l41uNrAWrZd6aQ6EvFrsF8xq3h6XxxRgJAAIBAg1Vbmtub3duIGNoYWluABVkZWZhdWx0UmVzdEFkZHJlc3NTdHIEByRtYXRjaDAFBWNoYWluAwkAAAIBAVcFByRtYXRjaDACIzNQUUN1dkZidmg0TGtQVW5yblUxejNqbmJBMXA5bTNXTmh2AwkAAAIBAVQFByRtYXRjaDACIzNNdW1rR0d6dENLQVhwV0RxeGtkZG9mcVhTVWJxUWt2U0p5CQACAQINVW5rbm93biBjaGFpbgADU0VQAgJfXwAFTVVMVDUAoI0GAAVNVUxUNgDAhD0ABU1VTFQ4AIDC1y8ABk1VTFQxMACAyK+gJQAOTUlOU0hPUFBBWU1FTlQAoI0GAAVJVEVSNgkAzAgCAAAJAMwIAgABCQDMCAIAAgkAzAgCAAMJAMwIAgAECQDMCAIABQUDbmlsAQ9nZXRTdHJpbmdPckZhaWwCB2FkZHJlc3MDa2V5CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUHYWRkcmVzcwUDa2V5CQC5CQIJAMwIAgIKbWFuZGF0b3J5IAkAzAgCCQClCAEFB2FkZHJlc3MJAMwIAgIBLgkAzAgCBQNrZXkJAMwIAgIPIGlzIG5vdCBkZWZpbmVkBQNuaWwCAAARSWR4Q2ZnU3Rha2luZ0RhcHAAAQAUSWR4Q2ZnSW52ZXN0RnVuZERhcHAABgAPSWR4Q2ZnQWNyZXNEYXBwAAgBCmtleVJlc3RDZmcAAg4lc19fcmVzdENvbmZpZwEOa2V5UmVzdEFkZHJlc3MAAgwlc19fcmVzdEFkZHIBEXJlYWRSZXN0Q2ZnT3JGYWlsAQRyZXN0CQC8CQIJAQ9nZXRTdHJpbmdPckZhaWwCBQRyZXN0CQEKa2V5UmVzdENmZwAFA1NFUAEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgdyZXN0Q2ZnA2lkeAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUHcmVzdENmZwUDaWR4CQCsAgICKlJlc3QgY2ZnIGRvZXNuJ3QgY29udGFpbiBhZGRyZXNzIGF0IGluZGV4IAkApAMBBQNpZHgADHJlc3RDb250cmFjdAkBEUBleHRyTmF0aXZlKDEwNjIpAQkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzCQEOa2V5UmVzdEFkZHJlc3MABRVkZWZhdWx0UmVzdEFkZHJlc3NTdHIAB3Jlc3RDZmcJARFyZWFkUmVzdENmZ09yRmFpbAEFDHJlc3RDb250cmFjdAAPc3Rha2luZ0NvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUHcmVzdENmZwURSWR4Q2ZnU3Rha2luZ0RhcHAAEmludmVzdEZ1bmRDb250cmFjdAkBGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIFB3Jlc3RDZmcFFElkeENmZ0ludmVzdEZ1bmREYXBwAA1hY3Jlc0NvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUHcmVzdENmZwUPSWR4Q2ZnQWNyZXNEYXBwAQhhc1N0cmluZwEBdgQHJG1hdGNoMAUBdgMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXMFByRtYXRjaDAFAXMJAAIBAhhmYWlsIHRvIGNhc3QgaW50byBTdHJpbmcBBWFzSW50AQF2BAckbWF0Y2gwBQF2AwkAAQIFByRtYXRjaDACA0ludAQBbgUHJG1hdGNoMAUBbgkAAgECFWZhaWwgdG8gY2FzdCBpbnRvIEludAEKa2V5QmxvY2tlZAACEGNvbnRyYWN0c0Jsb2NrZWQBCmZpeGVkUG9pbnQCA3ZhbAhkZWNpbWFscwQGdGVuUG93CQBsBgAKAAAFCGRlY2ltYWxzAAAAAAUERE9XTgQHbG93UGFydAkApAMBCQBqAgUDdmFsBQZ0ZW5Qb3cEBnplcm9lcwkAsAICCQCkAwEFBnRlblBvdwkAZAIAAQkAsQIBBQdsb3dQYXJ0CQCsAgIJAKwCAgkArAICCQCkAwEJAGkCBQN2YWwFBnRlblBvdwIBLgUGemVyb2VzBQdsb3dQYXJ0ABNGQUNUT1JZTUFYV0FSRUhPVVNFAIDIr6AlAA5TRUxMTVVMVElQTElFUgDIAQANQlVZTVVMVElQTElFUgCsAgAKQVVDVElPTkZFRQCQTgAMREVMSVZFUllfRkVFAJBOAA5ERUxJVkVSWV9GRUUxNQCYdQEea2V5RmFjdG9yeVdhcmVob3VzZUJ5SWRBbmRUeXBlAglmYWN0b3J5SWQHcmVzVHlwZQkArAICCQCsAgIJAKwCAgIbZmFjdG9yeVdoQnlDb250aW5lbnRBbmRSZXNfBQlmYWN0b3J5SWQCAV8JAKQDAQUHcmVzVHlwZQAJb3JkSWR4UmVzAAAACW9yZElkeE1hdAABAApvcmRJZHhQcm9kAAIBCGdldE9yZGVyAQZvcmRLZXkEAXAJALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBBQZvcmRLZXkCMDBAMF8wQDBfMEAwXzBAMF8wQDBfMEAwOjBAMF8wQDBfMEAwXzBAMF8wQDBfMEAwOgIBOgkAzAgCAwkAAAIJAJADAQkAtQkCCQCRAwIFAXAFCW9yZElkeFJlcwIBXwUGTlVNUkVTCQCRAwIFAXAFCW9yZElkeFJlcwIXMEAwXzBAMF8wQDBfMEAwXzBAMF8wQDAJAMwIAgMJAAACCQCQAwEJALUJAgkAkQMCBQFwBQlvcmRJZHhNYXQCAV8FBk5VTVJFUwkAkQMCBQFwBQlvcmRJZHhNYXQCFzBAMF8wQDBfMEAwXzBAMF8wQDBfMEAwCQDMCAIJAJEDAgUBcAUKb3JkSWR4UHJvZAUDbmlsAQh0b1ZvbHVtZQMGYW1vdW50B3BrZ1NpemUJaXNQcm9kdWN0AwUJaXNQcm9kdWN0BARwa2dzAwkAZwIFBmFtb3VudAAACQBpAgkAZQIJAGQCBQZhbW91bnQFB3BrZ1NpemUAAQUHcGtnU2l6ZQkBAS0BCQBpAgkAZQIJAGQCCQEBLQEFBmFtb3VudAUHcGtnU2l6ZQABBQdwa2dTaXplCQBoAgUEcGtncwUFTVVMVDgFBmFtb3VudAEMc2VsbEludGVybmFsBAVsb2NJZAdyZXNUeXBlBmFtb3VudAhtaW5QcmljZQQFd2hLZXkJAR5rZXlGYWN0b3J5V2FyZWhvdXNlQnlJZEFuZFR5cGUCBQVsb2NJZAUHcmVzVHlwZQQCdzAJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUFd2hLZXkAAAQCcjADCQBmAgUCdzAFE0ZBQ1RPUllNQVhXQVJFSE9VU0UAAAMJAGYCCQBkAgUCdzAFBmFtb3VudAUTRkFDVE9SWU1BWFdBUkVIT1VTRQkAZQIFE0ZBQ1RPUllNQVhXQVJFSE9VU0UFAncwBQZhbW91bnQEDHVzZHRSZWNlaXZlZAkAZAIJAGsDBQJyMAkAZQIJAGgCBQ5TRUxMTVVMVElQTElFUgUQUkVTT1VSQ0VQUklDRU1JTgkAawMJAGQCCQBoAgBkBQJ3MAkAaAIAMgUCcjAFEFJFU09VUkNFUFJJQ0VNSU4FE0ZBQ1RPUllNQVhXQVJFSE9VU0UFBk1VTFQxMAkAawMJAGUCBQZhbW91bnQFAnIwBRBSRVNPVVJDRVBSSUNFTUlOBQVNVUxUOAQFbWluOTkJAGUCBQhtaW5QcmljZQkAaQIFCG1pblByaWNlAGQDCQBmAgkAaAIFBW1pbjk5BQZhbW91bnQJAGgCBQx1c2R0UmVjZWl2ZWQFBU1VTFQ4CQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAg9BY3R1YWwgcHJpY2UgPSAJAKQDAQUMdXNkdFJlY2VpdmVkAgMgLyAJAKQDAQUGYW1vdW50Ag4gPCBtaW5QcmljZSA9IAkApAMBBQhtaW5QcmljZQIDLCAoBQVsb2NJZAICLCAJAJEDAgUIcmVzVHlwZXMFB3Jlc1R5cGUCASkJAJQKAgkBDEludGVnZXJFbnRyeQIFBXdoS2V5CQBkAgUCdzAFBmFtb3VudAUMdXNkdFJlY2VpdmVkAQtidXlJbnRlcm5hbAQFbG9jSWQHbWF0VHlwZQZhbW91bnQIbWF4UHJpY2UEBXdoS2V5CQEea2V5RmFjdG9yeVdhcmVob3VzZUJ5SWRBbmRUeXBlAgUFbG9jSWQFB21hdFR5cGUEAncwCQELdmFsdWVPckVsc2UCCQCfCAEFBXdoS2V5AAAEAm0xAwkAZgIFAncwBRNGQUNUT1JZTUFYV0FSRUhPVVNFCQCXAwEJAMwIAgUGYW1vdW50CQDMCAIJAGUCBQJ3MAUTRkFDVE9SWU1BWFdBUkVIT1VTRQUDbmlsAAAEAm0wCQCXAwEJAMwIAgUCdzAJAMwIAgkAZQIFBmFtb3VudAUCbTEFA25pbAQBbQkAZAIFAm0wBQJtMQQJdXNkdFNwZW50CQBkAgkAawMFAm0wCQBlAgkAaAIFDUJVWU1VTFRJUExJRVIFEFJFU09VUkNFUFJJQ0VNSU4JAGsDCQBlAgkAaAIAZAUCdzAJAGgCADIFAm0wBRBSRVNPVVJDRVBSSUNFTUlOBRNGQUNUT1JZTUFYV0FSRUhPVVNFBQZNVUxUMTAJAGsDBQJtMQkAaAIAAgUQUkVTT1VSQ0VQUklDRU1JTgUFTVVMVDgEBm1heDEwMQkAZAIFCG1heFByaWNlCQBpAgUIbWF4UHJpY2UAZAMJAGYCCQBoAgUJdXNkdFNwZW50BQVNVUxUOAkAaAIFBm1heDEwMQUBbQkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIPQWN0dWFsIHByaWNlID0gCQCkAwEFCXVzZHRTcGVudAIDIC8gCQCkAwEFAW0CDiA+IG1heFByaWNlID0gCQCkAwEFCG1heFByaWNlAgMsICgFBWxvY0lkAgIsIAkAkQMCBQhtYXRUeXBlcwUHbWF0VHlwZQIBKQkAlQoDCQEMSW50ZWdlckVudHJ5AgUFd2hLZXkJAGUCBQJ3MAUBbQUJdXNkdFNwZW50BQFtAQtnZXRCYWNrcGFjawEFYnBLZXkEAXAJALwJAgkBC3ZhbHVlT3JFbHNlAgkAnQgCBQ9zdGFraW5nQ29udHJhY3QFBWJwS2V5AhowOjBfMF8wXzBfMF8wOjBfMF8wXzBfMF8wOgIBOgkAzAgCCQCkAwEJAQt2YWx1ZU9yRWxzZQIJALYJAQkAkQMCBQFwBQpicElkeExldmVsAAAJAMwIAgMJAAACCQCQAwEJALUJAgkAkQMCBQFwBQhicElkeFJlcwIBXwUGTlVNUkVTCQCRAwIFAXAFCGJwSWR4UmVzAgswXzBfMF8wXzBfMAkAzAgCAwkAAAIJAJADAQkAtQkCCQCRAwIFAXAFCGJwSWR4TWF0AgFfBQZOVU1SRVMJAJEDAgUBcAUIYnBJZHhNYXQCCzBfMF8wXzBfMF8wCQDMCAIJAJEDAgUBcAUJYnBJZHhQcm9kBQNuaWwBDGNoZWNrQmxvY2tlZAADCQELdmFsdWVPckVsc2UCCQCbCAIFD3N0YWtpbmdDb250cmFjdAkBCmtleUJsb2NrZWQABwkAAgECH0NvbnRyYWN0cyBhcmUgdW5kZXIgbWFpbnRlbmFuY2UFBHVuaXQBBnByb2xvZwAJAQVhc0ludAEJAPwHBAUPc3Rha2luZ0NvbnRyYWN0AgpzYXZlTGFzdFR4BQNuaWwFA25pbAEJc2V0Q29tbW9uAgNhY2MPaWdub3JlZEl0ZXJhdG9yBAFqCAUDYWNjAl8xBARpdGVtAwkAZgIJAJADAQgFA2FjYwNfMTAFAWoJAJEDAggFA2FjYwNfMTAFAWoCAzBAMAQGaXNQcm9kCAUDYWNjAl84BAlpdGVtUGFydHMJALUJAgUEaXRlbQIBQAMJAQIhPQIJAJADAQUJaXRlbVBhcnRzAAIJAAIBAi5JbmNvcnJlY3Qgb3JkZXIgZm9ybWF0LCBzaG91bGQgYmUgYW1vdW50QHByaWNlBAhuZXdPcmRBbQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCWl0ZW1QYXJ0cwAABAhuZXdPcmRQcgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCWl0ZW1QYXJ0cwABBAluZXdPcmRVc2QDBQZpc1Byb2QJAGgCBQhuZXdPcmRBbQUIbmV3T3JkUHIJAGsDBQhuZXdPcmRBbQUIbmV3T3JkUHIFBU1VTFQ4BAluZXdPcmRWb2wJAQh0b1ZvbHVtZQMFCG5ld09yZEFtBQ5QUk9EVUNUUEtHU0laRQUGaXNQcm9kBAZ3aEluaXQDCQBmAgkAkAMBCAUDYWNjAl82BQFqCQENcGFyc2VJbnRWYWx1ZQEJAJEDAggFA2FjYwJfNgUBagAABAtjdXJPcmRQYXJ0cwkAtQkCAwkAZgIJAJADAQgFA2FjYwJfNwUBagkAkQMCCAUDYWNjAl83BQFqAgMwQDACAUAECGN1ck9yZEFtCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgULY3VyT3JkUGFydHMAAAQIY3VyT3JkUHIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQtjdXJPcmRQYXJ0cwABAwMJAGYCAAAFCGN1ck9yZFByBgkAZgIAAAUIbmV3T3JkUHIJAAIBAhdQcmljZSBjYW4ndCBiZSBuZWdhdGl2ZQQJY3VyT3JkVXNkAwUGaXNQcm9kCQBoAgUIY3VyT3JkQW0FCGN1ck9yZFByCQBrAwUIY3VyT3JkQW0FCGN1ck9yZFByBQVNVUxUOAMJAAACBQhuZXdPcmRBbQAAAwkAZgIFCGN1ck9yZEFtAAAJAJwKCgkAZAIFAWoAAQkAzQgCCAUDYWNjAl8yCQCkAwEFBndoSW5pdAgFA2FjYwJfMwgFA2FjYwJfNAkAZQIIBQNhY2MCXzUFCWN1ck9yZFVzZAgFA2FjYwJfNggFA2FjYwJfNwUGaXNQcm9kCQBkAggFA2FjYwJfOQkBCHRvVm9sdW1lAwUGd2hJbml0BQ5QUk9EVUNUUEtHU0laRQUGaXNQcm9kCAUDYWNjA18xMAkAnAoKCQBkAgUBagABCQDNCAIIBQNhY2MCXzIJAKQDAQkAZQIFBndoSW5pdAUIY3VyT3JkQW0IBQNhY2MCXzMIBQNhY2MCXzQIBQNhY2MCXzUIBQNhY2MCXzYIBQNhY2MCXzcFBmlzUHJvZAkAZAIIBQNhY2MCXzkJAQh0b1ZvbHVtZQMJAGUCBQZ3aEluaXQFCGN1ck9yZEFtBQ5QUk9EVUNUUEtHU0laRQUGaXNQcm9kCAUDYWNjA18xMAMJAGYCBQhuZXdPcmRBbQAAAwkAZgIAAAUIY3VyT3JkQW0JAJwKCgkAZAIFAWoAAQkAzQgCCAUDYWNjAl8yCQCkAwEJAGUCBQZ3aEluaXQFCGN1ck9yZEFtCQBkAggFA2FjYwJfMwUJbmV3T3JkVm9sCAUDYWNjAl80CQBkAggFA2FjYwJfNQUJbmV3T3JkVXNkCAUDYWNjAl82CAUDYWNjAl83BQZpc1Byb2QJAQh0b1ZvbHVtZQMJAGUCBQZ3aEluaXQFCGN1ck9yZEFtBQ5QUk9EVUNUUEtHU0laRQUGaXNQcm9kCAUDYWNjA18xMAkAnAoKCQBkAgUBagABCQDNCAIIBQNhY2MCXzIJAKQDAQUGd2hJbml0CQBkAggFA2FjYwJfMwUJbmV3T3JkVm9sCAUDYWNjAl80CQBlAgkAZAIIBQNhY2MCXzUFCW5ld09yZFVzZAUJY3VyT3JkVXNkCAUDYWNjAl82CAUDYWNjAl83BQZpc1Byb2QJAQh0b1ZvbHVtZQMFBndoSW5pdAUOUFJPRFVDVFBLR1NJWkUFBmlzUHJvZAgFA2FjYwNfMTADCQBmAgAABQhjdXJPcmRBbQQGYW1EaWZmCQBlAgUIY3VyT3JkQW0FCG5ld09yZEFtAwkAZgIAAAkAZQIFBndoSW5pdAUGYW1EaWZmCQACAQkArAICCQCsAgIJAKwCAgkArAICAhBBdHRlbXB0IHRvIHRha2UgCQCkAwEFBmFtRGlmZgIaIGZyb20gd2FyZWhvdXNlLCBidXQgb25seSAJAKQDAQUGd2hJbml0AgogYXZhaWxhYmxlCQCcCgoJAGQCBQFqAAEJAM0IAggFA2FjYwJfMgkApAMBCQBlAgUGd2hJbml0BQZhbURpZmYIBQNhY2MCXzMJAGUCCAUDYWNjAl80BQluZXdPcmRWb2wIBQNhY2MCXzUIBQNhY2MCXzYIBQNhY2MCXzcFBmlzUHJvZAkBCHRvVm9sdW1lAwkAZQIFBndoSW5pdAUGYW1EaWZmBQ5QUk9EVUNUUEtHU0laRQUGaXNQcm9kCAUDYWNjA18xMAMJAGYCAAAJAGQCBQZ3aEluaXQFCG5ld09yZEFtCQACAQkArAICCQCsAgIJAKwCAgkArAICAhBBdHRlbXB0IHRvIHRha2UgCQCkAwEJAQEtAQUIbmV3T3JkQW0CGiBmcm9tIHdhcmVob3VzZSwgYnV0IG9ubHkgCQCkAwEFBndoSW5pdAIKIGF2YWlsYWJsZQkAnAoKCQBkAgUBagABCQDNCAIIBQNhY2MCXzIJAKQDAQkAZAIFBndoSW5pdAUIbmV3T3JkQW0IBQNhY2MCXzMJAGUCCAUDYWNjAl80BQluZXdPcmRWb2wJAGUCCAUDYWNjAl81BQljdXJPcmRVc2QIBQNhY2MCXzYIBQNhY2MCXzcFBmlzUHJvZAkBCHRvVm9sdW1lAwkAZAIFBndoSW5pdAUIbmV3T3JkQW0FDlBST0RVQ1RQS0dTSVpFBQZpc1Byb2QIBQNhY2MDXzEwAQtzZXRJbnRlcm5hbAMJY3VycmVudFdoCmN1cnJlbnRPcmQGbmV3T3JkBAljdXJyV2hSZXMJALUJAgkAkQMCBQljdXJyZW50V2gFCHdoSWR4UmVzAgFfBAljdXJyV2hNYXQJALUJAgkAkQMCBQljdXJyZW50V2gFCHdoSWR4TWF0AgFfBApjdXJyV2hQcm9kAwkAAAIJAJEDAgUJY3VycmVudFdoBQl3aElkeFByb2QCAAUDbmlsCQC8CQIJAJEDAgUJY3VycmVudFdoBQl3aElkeFByb2QCAV8EDWN1cnJlbnRPcmRSZXMJALUJAgkAkQMCBQpjdXJyZW50T3JkBQlvcmRJZHhSZXMCAV8EDWN1cnJlbnRPcmRNYXQJALUJAgkAkQMCBQpjdXJyZW50T3JkBQlvcmRJZHhNYXQCAV8EDmN1cnJlbnRPcmRQcm9kAwkAAAIJAJEDAgUKY3VycmVudE9yZAUKb3JkSWR4UHJvZAIABQNuaWwJALwJAgkAkQMCBQpjdXJyZW50T3JkBQpvcmRJZHhQcm9kAgFfAwkBAiE9AgkAkAMBBQZuZXdPcmQAAwkAAgECM25ld09yZGVyU3RyIHNob3VsZCBjb250YWluIGV4YWN0bHkgMiAnOicgc2VwYXJhdG9ycwQIcmVzUGFydHMJALUJAgkAkQMCBQZuZXdPcmQAAAIBXwQIbWF0UGFydHMJALUJAgkAkQMCBQZuZXdPcmQAAQIBXwQJcHJvZFBhcnRzAwkAAAIJAJEDAgUGbmV3T3JkAAICAAUDbmlsCQC8CQIJAJEDAgUGbmV3T3JkAAICAV8DCQECIT0CCQCQAwEFCHJlc1BhcnRzBQZOVU1SRVMJAAIBAiBBbGwgNiByZXNvdXJjZXMgc2hvdWxkIGJlIHBhc3NlZAMJAQIhPQIJAJADAQUIbWF0UGFydHMFBk5VTVJFUwkAAgECIEFsbCA2IG1hdGVyaWFscyBzaG91bGQgYmUgcGFzc2VkBAFyCgACJGwFCHJlc1R5cGVzCgACJHMJAJADAQUCJGwKAAUkYWNjMAkAnAoKAAAFA25pbAAAAAAAAAUJY3VycldoUmVzBQ1jdXJyZW50T3JkUmVzBwAABQhyZXNQYXJ0cwoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEJc2V0Q29tbW9uAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIB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SW5pdAMJAGYCCQCQAwEIBQNhY2MDXzEwBQFqCQCRAwIIBQNhY2MDXzEwBQFqAgMwQDAECndoT3JkUGFydHMJALUJAgUJd2hPcmRJbml0AgFABAd3aE9yZEFtCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUKd2hPcmRQYXJ0cwAABAd3aE9yZFByCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUKd2hPcmRQYXJ0cwABAwMJAQIhPQIFB2JwT3JkQW0AAAkBAiE9AgUHYnBPcmRQcgUHd2hPcmRQcgcJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIKUHJpY2VzIG9mIAkAkQMCCAUDYWNjA18xMQUBagIXIGRvbid0IG1hdGNoISBXSCBwcmljZT0JAKQDAQUHd2hPcmRQcgINLCB5b3VyIHByaWNlPQkApAMBBQdicE9yZFByBAh3aE9yZFVzZAMFBmlzUHJvZAkAaAIFB3doT3JkQW0FB3doT3JkUHIJAGsDBQd3aE9yZEFtBQd3aE9yZFByBQVNVUxUOAQIZGVsdGFWb2wJAQh0b1ZvbHVtZQMFB2JwT3JkQW0FDlBST0RVQ1RQS0dTSVpFBQZpc1Byb2QDCQAAAgUHYnBPcmRBbQAACQCfCg0JAM0IAggFA2FjYwJfMQkApAMBBQZ3aEluaXQJAM0IAggFA2FjYwJfMgUJd2hPcmRJbml0CQDNCAIIBQNhY2MCXzMJAKQDAQUGYnBJbml0CAUDYWNjAl80CAUDYWNjAl81CAUDYWNjAl82CQBkAggFA2FjYwJfNwABCAUDYWNjAl84CAUDYWNjAl85CAUDYWNjA18xMAgFA2FjYwNfMTEFBmlzUHJvZAgFA2FjYwNfMTMDCQBmAgUHYnBPcmRBbQAAAwkAZgIAAAUHd2hPcmRBbQMJAGYCBQdicE9yZEFtCQEBLQEFB3doT3JkQW0JAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIPQXR0ZW1wdCB0byBidXkgCQCkAwEFB2JwT3JkQW0CBCBvZiAJAJEDAggFA2FjYwNfMTEFAWoCGywgYnV0IHdhcmVob3VzZSBvbmx5IHNlbGxzIAkApAMBCQEBLQEFB3doT3JkQW0JAJ8KDQkAzQgCCAUDYWNjAl8xCQCkAwEFBndoSW5pdAkAzQgCCAUDYWNjAl8yCQCsAgIJAKwCAgkApAMBCQBkAgUHd2hPcmRBbQUHYnBPcmRBbQIBQAkApAMBBQd3aE9yZFByCQDNCAIIBQNhY2MCXzMJAKQDAQkAZAIFBmJwSW5pdAUHYnBPcmRBbQkAZAIIBQNhY2MCXzQFCGRlbHRhVm9sCAUDYWNjAl81CQBkAggFA2FjYwJfNgUIYnBPcmRVc2QJAGQCCAUDYWNjAl83AAEIBQNhY2MCXzgIBQNhY2MCXzkIBQNhY2MDXzEwCAUDYWNjA18xMQUGaXNQcm9kCQBkAggFA2FjYwNfMTMDBQZpc1Byb2QJAGgCBQdicE9yZEFtBQVNVUxUOAUHYnBPcmRBbQkAAgEJAKwCAgkArAICAg9BdHRlbXB0IHRvIGJ1eSAJAJEDAggFA2FjYwNfMTEFAWoCICB3aGlsZSB3YXJlaG91c2UgZG9lc24ndCBzZWxsIGl0AwkAZgIFB3doT3JkQW0AAAMJAGYCCQEBLQEFB2JwT3JkQW0FB3doT3JkQW0JAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIQQXR0ZW1wdCB0byBzZWxsIAkApAMBCQEBLQEFB2JwT3JkQW0CBCBvZiAJAJEDAggFA2FjYwNfMTEFAWoCGiwgYnV0IHdhcmVob3VzZSBvbmx5IGJ1eXMgCQCkAwEFB3doT3JkQW0DCQBmAgkBAS0BBQdicE9yZEFtBQZicEluaXQJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIQQXR0ZW1wdCB0byBzZWxsIAkApAMBCQEBLQEFB2JwT3JkQW0CFCwgYnV0IHlvdSBvbmx5IGhhdmUgCQCkAwEFBmJwSW5pdAIEIG9mIAkAkQMCCAUDYWNjA18xMQUBagkAnwoNCQDNCAIIBQNhY2MCXzEJAKQDAQkAZQIFBndoSW5pdAUHYnBPcmRBbQkAzQgCCAUDYWNjAl8yCQCsAgIJAKwCAgkApAMBCQBkAgUHd2hPcmRBbQUHYnBPcmRBbQIBQAkApAMBBQd3aE9yZFByCQDNCAIIBQNhY2MCXzMJAKQDAQkAZAIFBmJwSW5pdAUHYnBPcmRBbQkAZQIIBQNhY2MCXzQFCGRlbHRhVm9sCQBlAggFA2FjYwJfNQUIYnBPcmRVc2QIBQNhY2MCXzYJAGQCCAUDYWNjAl83AAEIBQNhY2MCXzgIBQNhY2MCXzkIBQNhY2MDXzEwCAUDYWNjA18xMQUGaXNQcm9kCQBlAggFA2FjYwNfMTMDBQZpc1Byb2QJAGgCBQdicE9yZEFtBQVNVUxUOAUHYnBPcmRBbQkAAgEJAKwCAgkArAICAhBBdHRlbXB0IHRvIHNlbGwgCQCRAwIIBQNhY2MDXzExBQFqAh8gd2hpbGUgd2FyZWhvdXNlIGRvZXNuJ3QgYnV5IGl0ARNzZWxsUmVzb3VyY2VzQ29tbW9uBAdyZXNMaXN0DGZhY3RvcnlMb2NJZAdhbW91bnRzCW1pblByaWNlcwoBBWFkZGVyAgNhY2MBagMJAGYCCQCRAwIFB2Ftb3VudHMFAWoJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQdyZXNMaXN0BQFqCQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgICCVlvdSBoYXZlIAkAkQMCBQdyZXNMaXN0BQFqAgQgb2YgCQCRAwIFCHJlc1R5cGVzBQFqAhQsIGJ1dCB0cmllZCB0byBzZWxsIAkApAMBCQCRAwIFB2Ftb3VudHMFAWoDCQBmAgAACQCRAwIFB2Ftb3VudHMFAWoJAAIBCQCsAgIJAKwCAgkArAICAiVZb3UgdHJpZWQgdG8gc2VsbCBuZWdhdGl2ZSBhbW91bnQgb2YgCQCRAwIFCHJlc1R5cGVzBQFqAgI6IAkApAMBCQCRAwIFB2Ftb3VudHMFAWoDCQBmAgkAkQMCBQdhbW91bnRzBQFqAAAEAWIJAQxzZWxsSW50ZXJuYWwEBQxmYWN0b3J5TG9jSWQFAWoJAJEDAgUHYW1vdW50cwUBagkAkQMCBQltaW5QcmljZXMFAWoJAJYKBAkAzQgCCAUDYWNjAl8xCAUBYgJfMQkAzQgCCAUDYWNjAl8yCQCkAwEJAGUCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUHcmVzTGlzdAUBagkAkQMCBQdhbW91bnRzBQFqCQBkAggFA2FjYwJfMwgFAWICXzIJAGQCCAUDYWNjAl80CQCRAwIFB2Ftb3VudHMFAWoJAJYKBAgFA2FjYwJfMQkAzQgCCAUDYWNjAl8yCQCRAwIFB3Jlc0xpc3QFAWoIBQNhY2MCXzMIBQNhY2MCXzQKAAIkbAUFSVRFUjYKAAIkcwkAkAMBBQIkbAoA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NgkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgEQc2hvcDJ1c2VyQWN0aW9ucwMNdXNkV2gyQnBTYWxkbwpjYWxsZXJBZGRyC3JlY2VpdmVkRmVlAwkAZgIFDXVzZFdoMkJwU2FsZG8AAAQLdXNkV2gyQnBGZWUJAGsDBQ11c2RXaDJCcFNhbGRvBQpBVUNUSU9ORkVFBQVNVUxUNgMJAGcCBQtyZWNlaXZlZEZlZQkAZQIFDXVzZFdoMkJwU2FsZG8JAGgCAAMFC3VzZFdoMkJwRmVlCQACAQkArAICAitUaGlzIHRyYWRlIGRvZXMgbm90IGNvdmVyIGRlbGl2ZXJ5IGNvc3Qgb2YgCQEKZml4ZWRQb2ludAIFC3JlY2VpdmVkRmVlAAYECHJlZkJ5S2V5CQEPa2V5QWRkcmVzc1JlZkJ5AQUKY2FsbGVyQWRkcgQFcmVmQnkJAJ0IAgUPc3Rha2luZ0NvbnRyYWN0BQhyZWZCeUtleQQGY2FsbGVyCQERQGV4dHJOYXRpdmUoMTA2MikBBQpjYWxsZXJBZGRyCQDNCAIJAM0IAgMJAQlpc0RlZmluZWQBBQVyZWZCeQkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQERQGV4dHJOYXRpdmUoMTA2MikBCQEFdmFsdWUBBQVyZWZCeQULdXNkV2gyQnBGZWUFC3VzZHRBc3NldElkBQNuaWwFA25pbAkBDlNjcmlwdFRyYW5zZmVyAwUGY2FsbGVyCQBlAgkAZQIFDXVzZFdoMkJwU2FsZG8JAGgCAAMFC3VzZFdoMkJwRmVlBQtyZWNlaXZlZEZlZQULdXNkdEFzc2V0SWQJAQ5TY3JpcHRUcmFuc2ZlcgMFDHJlc3RDb250cmFjdAULdXNkV2gyQnBGZWUFC3VzZHRBc3NldElkBQNuaWwBEHVzZXIyc2hvcEFjdGlvbnMEDXVzZEJwMldoU2FsZG8EcG10cw1zaG9wTGFuZE93bmVyCHNwZW50RmVlAwkAZgIFDXVzZEJwMldoU2FsZG8AAAMJAQIhPQIJAJADAQUEcG10cwABCQACAQIiZXhhY3RseSAxIHBheW1lbnQgbXVzdCBiZSBhdHRhY2hlZAQDcG10CQCRAwIFBHBtdHMAAAQDYW10CAUDcG10BmFtb3VudAMDCQEBIQEJAQlpc0RlZmluZWQBCAUDcG10B2Fzc2V0SWQGCQECIT0CCQEFdmFsdWUBCAUDcG10B2Fzc2V0SWQFC3VzZHRBc3NldElkCQACAQITVVNEVCBwYXltZW50cyBvbmx5IQQQdXNkdFNwZW50V2l0aEZlZQkAZAIFDXVzZEJwMldoU2FsZG8FCHNwZW50RmVlAwkBAiE9AgUDYW10BRB1c2R0U3BlbnRXaXRoRmVlCQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIfSW5zdWZmaWNpZW50IHBheW1lbnQhIEF0dGFjaGVkPQkBCmZpeGVkUG9pbnQCBQNhbXQABgILLCByZXF1aXJlZD0JAQpmaXhlZFBvaW50AgUNdXNkQnAyV2hTYWxkbwAGAgErCQEKZml4ZWRQb2ludAIFCHNwZW50RmVlAAYCDihkZWxpdmVyeSBmZWUpAwkAZgIFDk1JTlNIT1BQQVlNRU5UBQ11c2RCcDJXaFNhbGRvCQACAQkArAICAhJNaW4gc2hvcCB0cmFkZSBpcyAJAQpmaXhlZFBvaW50AgUOTUlOU0hPUFBBWU1FTlQABgQLdXNkQnAyV2hGZWUJAGsDBQ11c2RCcDJXaFNhbGRvBQpBVUNUSU9ORkVFBQVNVUxUNgQIcmVmQnlLZXkJAQ9rZXlBZGRyZXNzUmVmQnkBBQ1zaG9wTGFuZE93bmVyBAVyZWZCeQkAnQgCBQ9zdGFraW5nQ29udHJhY3QFCHJlZkJ5S2V5CQDNCAIJAM0IAgMJAQlpc0RlZmluZWQBBQVyZWZCeQkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQERQGV4dHJOYXRpdmUoMTA2MikBCQEFdmFsdWUBBQVyZWZCeQULdXNkQnAyV2hGZWUFC3VzZHRBc3NldElkBQNuaWwFA25pbAkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQUNc2hvcExhbmRPd25lcgkAZQIFDXVzZEJwMldoU2FsZG8JAGgCAAMFC3VzZEJwMldoRmVlBQt1c2R0QXNzZXRJZAkBDlNjcmlwdFRyYW5zZmVyAwUMcmVzdENvbnRyYWN0BQt1c2RCcDJXaEZlZQULdXNkdEFzc2V0SWQDCQECIT0CCQCQAwEFBHBtdHMAAAkAAgECEk5vIHBheW1lbnRzIG5lZWRlZAUDbmlsARVhY2NlcHRTaG9wT3JkZXJDb21tb24GD3Nob3BMYW5kQXNzZXRJZApjYWxsZXJBZGRyCmJwT3JkZXJTdHIJYnBSZXNMaXN0CWJwTWF0TGlzdApicFByb2RMaXN0BAlsYW5kQXNzZXQJAQV2YWx1ZQEJAOwHAQkA2QQBBQ9zaG9wTGFuZEFzc2V0SWQDCQEBIQEJAQlpc0RlZmluZWQBCQCaCAIFD3N0YWtpbmdDb250cmFjdAkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQ9zaG9wTGFuZEFzc2V0SWQJAAIBCQCsAgIJAKwCAgIETkZUIAgFCWxhbmRBc3NldARuYW1lAg4gaXMgbm90IHN0YWtlZAQNc2hvcExhbmRPd25lcgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFD3N0YWtpbmdDb250cmFjdAkBFWtleUxhbmRBc3NldElkVG9Pd25lcgEFD3Nob3BMYW5kQXNzZXRJZAkArAICCQCsAgICBE5GVCAIBQlsYW5kQXNzZXQEbmFtZQIMIGlzIG9ycGhhbmVkAwkAAAIFDXNob3BMYW5kT3duZXIFCmNhbGxlckFkZHIJAAIBAh5Zb3UgY2Fubm90IHRyYWRlIHdpdGggeW91cnNlbGYEDGJwT3JkZXJQYXJ0cwkAvAkCBQpicE9yZGVyU3RyAgE6AwkBAiE9AgkAkAMBBQxicE9yZGVyUGFydHMAAwkAAgECMmJwT3JkZXJTdHIgc2hvdWxkIGNvbnRhaW4gZXhhY3RseSAyICc6JyBzZXBhcmF0b3JzBAhicE9yZFJlcwkAtQkCCQCRAwIFDGJwT3JkZXJQYXJ0cwAAAgFfBAhicE9yZE1hdAkAtQkCCQCRAwIFDGJwT3JkZXJQYXJ0cwABAgFfBAlicE9yZFByb2QDCQAAAgkAkQMCBQxicE9yZGVyUGFydHMAAgIABQNuaWwJALwJAgkAkQMCBQxicE9yZGVyUGFydHMAAgIBXwMJAQIhPQIJAJADAQUIYnBPcmRSZXMFBk5VTVJFUwkAAgECIEFsbCA2IHJlc291cmNlcyBzaG91bGQgYmUgcGFzc2VkAwkBAiE9AgkAkAMBBQhicE9yZE1hdAUGTlVNUkVTCQACAQIgQWxsIDYgbWF0ZXJpYWxzIHNob3VsZCBiZSBwYXNzZWQEAndoCQEIYXNTdHJpbmcBCQD8BwQFD3N0YWtpbmdDb250cmFjdAIUZ2V0V2FyZWhvdXNlUkVBRE9OTFkJAMwIAgUPc2hvcExhbmRBc3NldElkBQNuaWwFA25pbAQJY3VycmVudFdoCQC8CQIFAndoAgE6BAljdXJyV2hSZXMJALUJAgkAkQMCBQljdXJyZW50V2gFCHdoSWR4UmVzAgFfBAljdXJyV2hNYXQJALUJAgkAkQMCBQljdXJyZW50V2gFCHdoSWR4TWF0AgFfBApjdXJyV2hQcm9kAwkAAAIJAJEDAgUJY3VycmVudFdoBQl3aElkeFByb2QCAAUDbmlsCQC8CQIJAJEDAgUJY3VycmVudFdoBQl3aElkeFByb2QCAV8ED2N1cnJXaExvY2tlZFZvbAkBDXBhcnNlSW50VmFsdWUBCQCRAwIJALUJAgkAkQMCBQljdXJyZW50V2gFCXdoSWR4TE9GVAIBXwUJdm9sTG9ja2VkBAZvcmRLZXkJAQ5rZXlPcmRlckJ5TGFuZAEFD3Nob3BMYW5kQXNzZXRJZAQFd2hPcmQJAQhnZXRPcmRlcgEFBm9yZEtleQQId2hPcmRSZXMJALUJAgkAkQMCBQV3aE9yZAUJb3JkSWR4UmVzAgFfBAh3aE9yZE1hdAkAtQkCCQCRAwIFBXdoT3JkBQlvcmRJZHhNYXQCAV8ECXdoT3JkUHJvZAMJAAACCQCRAwIFBXdoT3JkBQpvcmRJZHhQcm9kAgAFA25pbAkAvAkCCQCRAwIFBXdoT3JkBQpvcmRJZHhQcm9kAgFfBAFyCgACJGwFCGJwT3JkUmVzCgACJHMJAJADAQUCJGwKAAUkYWNjMAkAnwoNBQNuaWwFA25pbAUDbmlsAAAAAAAAAAAFCWJwUmVzTGlzdAUJY3VycldoUmVzBQh3aE9yZFJlcwUIcmVzVHlwZXMHAAAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBDGFjY2VwdENvbW1vbgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2Vl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AgUPc2hvcExhbmRBc3NldElkBQNuaWwFA25pbAQOYWNjU3RhdHNSZXN1bHQJAQVhc0ludAEJAPwHBAUPc3Rha2luZ0NvbnRyYWN0Ag51cGRhdGVBY2NTdGF0cwkAzAgCBQ1zaG9wTGFuZE93bmVyCQDMCAIJAGsDBQZ4cFNob3AIBQFwA18xMwUFTVVMVDgFA25pbAUDbmlsCQCcCgoJAQtTdHJpbmdFbnRyeQIFBm9yZEtleQULbmV3V2hPcmRTdHIIBQFyAl8zCAUBbQJfMwgFAXACXzMIBQFwAl81CAUBcAJfNggFAXADXzEzBQ1zaG9wTGFuZE93bmVyBQZ3aFNhdmUFDmFjY1N0YXRzUmVzdWx0ARpzZWxsUmVzb3VyY2VzV29ybGRJbnRlcm5hbAEGYW1vdW50BAZvbmVSZXMJAGkCBQZhbW91bnQAHgQRb25lRmFjdG9yeUFtb3VudHMJAMwIAgUGb25lUmVzCQDMCAIFBm9uZVJlcwkAzAgCBQZvbmVSZXMJAMwIAgUGb25lUmVzCQDMCAIFBm9uZVJlcwkAzAgCBQZvbmVSZXMFA25pbAQBcwkApAMBBQZvbmVSZXMEB3Jlc0xpc3QJAMwIAgUBcwkAzAgCBQFzCQDMCAIFAXMJAMwIAgUBcwkAzAgCBQFzCQDMCAIFAXMFA25pbAQJbWluUHJpY2VzCQDMCAIAAAkAzAgCAAAJAMwIAgAACQDMCAIAAAkAzAgCAAAJAMwIAgAABQNuaWwKAQpvbmVGYWN0b3J5AgNhY2MJY29udGluZW50BAF4CQETc2VsbFJlc291cmNlc0NvbW1vbgQFB3Jlc0xpc3QFCWNvbnRpbmVudAURb25lRmFjdG9yeUFtb3VudHMFCW1pblByaWNlcwkAlQoDCQDOCAIIBQNhY2MCXzEIBQF4Al8xCQBkAggFA2FjYwJfMggFAXgCXzMJAGQCCAUDYWNjAl8zCAUBeAJfNAQNJHQwMjUyMTMyNTMwMwoAAiRsBQpjb250aW5lbnRzCgACJHMJAJADAQUCJGwKAAUkYWNjMAkAlQoDBQNuaWwAAAAACgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQpvbmVGYWN0b3J5AgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA1CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQQOZmFjdG9yeUFjdGlvbnMIBQ0kdDAyNTIxMzI1MzAzAl8xBAx1c2R0UmVjZWl2ZWQIBQ0kdDAyNTIxMzI1MzAzAl8yBAh0b3RhbFJlcwgFDSR0MDI1MjEzMjUzMDMCXzMEA2ZlZQkAawMFDHVzZHRSZWNlaXZlZAUMREVMSVZFUllfRkVFBQVNVUxUNgQQYWN0aXZpdGllc0Ftb3VudAkAaQIFDHVzZHRSZWNlaXZlZABkBAh1c2R0TGVmdAkAZQIJAGUCBQx1c2R0UmVjZWl2ZWQFEGFjdGl2aXRpZXNBbW91bnQFA2ZlZQkAlwoFBQ5mYWN0b3J5QWN0aW9ucwUIdXNkdExlZnQFA2ZlZQUQYWN0aXZpdGllc0Ftb3VudAUIdG90YWxSZXMWAWkBGnJlY2FsY0xvY2tlZFZvbHVtZVJFQURPTkxZAgtsYW5kQXNzZXRJZAJ3aAQKY3VycmVudE9yZAkBCGdldE9yZGVyAQkBDmtleU9yZGVyQnlMYW5kAQULbGFuZEFzc2V0SWQEAXoJAQtzZXRJbnRlcm5hbAMFAndoBQpjdXJyZW50T3JkBQpjdXJyZW50T3JkCQCUCgIFA25pbAkAZAIIBQF6Al80CAUBegJfNQFpAQ1jb25zdHJ1Y3RvclYxAQhyZXN0QWRkcgMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECEVBlcm1pc3Npb24gZGVuaWVkCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQ5rZXlSZXN0QWRkcmVzcwAFCHJlc3RBZGRyBQNuaWwBaQENc2VsbFJlc291cmNlcwIHYW1vdW50cwltaW5QcmljZXMEDHByb2xvZ1Jlc3VsdAkBBnByb2xvZwAEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUPc3Rha2luZ0NvbnRyYWN0CQEUa2V5U3Rha2VkRHVja0J5T3duZXIBCQClCAEIBQFpBmNhbGxlcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECKnNlbGxSZXNvdXJjZXMgZG9lc24ndCByZXF1aXJlIGFueSBwYXltZW50cwQLY3VyTG9jYXRpb24JALUJAgkBC3ZhbHVlT3JFbHNlAgkAnQgCBQ9zdGFraW5nQ29udHJhY3QJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAUPREVGQVVMVExPQ0FUSU9OAgFfAwkBAiE9AgkAkQMCBQtjdXJMb2NhdGlvbgUKbG9jSWR4VHlwZQIBRgkAAgEJAKwCAgItRHVjayBsb2NhdGlvbiB0eXBlIHNob3VsZCBiZSBGYWN0b3J5LCBidXQgaXMgCQCRAwIFC2N1ckxvY2F0aW9uBQpsb2NJZHhUeXBlBAtjdXJyZW50UGFjawkBC2dldEJhY2twYWNrAQkBEWtleUJhY2twYWNrQnlEdWNrAQULZHVja0Fzc2V0SWQEB3Jlc0xpc3QJALUJAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhSZXMCAV8EDSR0MDI2NzU1MjY4ODEJARNzZWxsUmVzb3VyY2VzQ29tbW9uBAUHcmVzTGlzdAkAkQMCBQtjdXJMb2NhdGlvbgUIbG9jSWR4SWQFB2Ftb3VudHMFCW1pblByaWNlcwQOZmFjdG9yeUFjdGlvbnMIBQ0kdDAyNjc1NTI2ODgxAl8xBAZuZXdSZXMIBQ0kdDAyNjc1NTI2ODgxAl8yBAx1c2R0UmVjZWl2ZWQIBQ0kdDAyNjc1NTI2ODgxAl8zBAh0b3RhbFJlcwgFDSR0MDI2NzU1MjY4ODECXzQEEGFjdGl2aXRpZXNBbW91bnQJAGkCBQx1c2R0UmVjZWl2ZWQAZAQHbmV3UGFjawkAugkCCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCmJwSWR4TGV2ZWwJAMwIAgkAuQkCBQZuZXdSZXMCAV8JAMwIAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhNYXQJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kBQNuaWwCAToEDmJhY2twYWNrUmVzdWx0CQEIYXNTdHJpbmcBCQD8BwQFD3N0YWtpbmdDb250cmFjdAIOdXBkYXRlQmFja3BhY2sJAMwIAgULZHVja0Fzc2V0SWQJAMwIAgUHbmV3UGFjawUDbmlsBQNuaWwEC3N0YXRzUmVzdWx0CQEFYXNJbnQBCQD8BwQFD3N0YWtpbmdDb250cmFjdAIPdXBkYXRlRHVja1N0YXRzCQDMCAIFC2R1Y2tBc3NldElkCQDMCAIJAGsDBQd4cFRyYWRlBQh0b3RhbFJlcwUFTVVMVDgFA25pbAUDbmlsCQCUCgIJAM0IAgkAzQgCBQ5mYWN0b3J5QWN0aW9ucwkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyCQBlAgUMdXNkdFJlY2VpdmVkBRBhY3Rpdml0aWVzQW1vdW50BQt1c2R0QXNzZXRJZAkBDlNjcmlwdFRyYW5zZmVyAwUMcmVzdENvbnRyYWN0BRBhY3Rpdml0aWVzQW1vdW50BQt1c2R0QXNzZXRJZAkAlQoDBQ5iYWNrcGFja1Jlc3VsdAUMcHJvbG9nUmVzdWx0BQtzdGF0c1Jlc3VsdAFpARJzZWxsUmVzb3VyY2VzV29ybGQCBGFkZHIGYW1vdW50AwkBAiE9AggFAWkGY2FsbGVyBQ1hY3Jlc0NvbnRyYWN0CQACAQIRUGVybWlzc2lvbiBkZW5pZWQEDSR0MDI3NjczMjc4MzAJARpzZWxsUmVzb3VyY2VzV29ybGRJbnRlcm5hbAEFBmFtb3VudAQOZmFjdG9yeUFjdGlvbnMIBQ0kdDAyNzY3MzI3ODMwAl8xBAh1c2R0TGVmdAgFDSR0MDI3NjczMjc4MzACXzIEA2ZlZQgFDSR0MDI3NjczMjc4MzACXzMEEGFjdGl2aXRpZXNBbW91bnQIBQ0kdDAyNzY3MzI3ODMwAl80BAh0b3RhbFJlcwgFDSR0MDI3NjczMjc4MzACXzUDCQBnAgAABQh1c2R0TGVmdAkAAgEJAKwCAgIrVGhpcyB0cmFkZSBkb2VzIG5vdCBjb3ZlciBkZWxpdmVyeSBjb3N0IG9mIAkBCmZpeGVkUG9pbnQCBQNmZWUABgQLc3RhdHNSZXN1bHQJAQVhc0ludAEJAPwHBAUPc3Rha2luZ0NvbnRyYWN0Ag51cGRhdGVBY2NTdGF0cwkAzAgCBQRhZGRyCQDMCAIJAGsDBQd4cFRyYWRlBQh0b3RhbFJlcwUFTVVMVDgFA25pbAUDbmlsCQCUCgIJAM0IAgkAzQgCCQDNCAIFDmZhY3RvcnlBY3Rpb25zCQEMSW50ZWdlckVudHJ5AgUPZGVsaXZlcnlGdW5kS2V5CQBkAgkBC3ZhbHVlT3JFbHNlAgkAnwgBBQ9kZWxpdmVyeUZ1bmRLZXkAAAUDZmVlCQEOU2NyaXB0VHJhbnNmZXIDBQxyZXN0Q29udHJhY3QFEGFjdGl2aXRpZXNBbW91bnQFC3VzZHRBc3NldElkCQEOU2NyaXB0VHJhbnNmZXIDBRJpbnZlc3RGdW5kQ29udHJhY3QFCHVzZHRMZWZ0BQt1c2R0QXNzZXRJZAkAlAoCBQh1c2R0TGVmdAULc3RhdHNSZXN1bHQBaQEac2VsbFJlc291cmNlc1dvcmxkUkVBRE9OTFkBBmFtb3VudAQIdXNkdExlZnQICQEac2VsbFJlc291cmNlc1dvcmxkSW50ZXJuYWwBBQZhbW91bnQCXzIJAJQKAgUDbmlsBQh1c2R0TGVmdAFpARlzZWxsUmVzb3VyY2VzRHVja0RlbGl2ZXJ5AwdhbW91bnRzCW1pblByaWNlcxBmYWN0b3J5Q29udGluZW50AwkBASEBBRFLU19BTExPV19ERUxJVkVSWQkAAgECH0RlbGl2ZXJ5IGZlYXR1cmUgaXMgdHVybmVkIG9mZiEEDHByb2xvZ1Jlc3VsdAkBBnByb2xvZwAEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUPc3Rha2luZ0NvbnRyYWN0CQEUa2V5U3Rha2VkRHVja0J5T3duZXIBCQClCAEIBQFpBmNhbGxlcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECKnNlbGxSZXNvdXJjZXMgZG9lc24ndCByZXF1aXJlIGFueSBwYXltZW50cwQLY3VycmVudFBhY2sJAQtnZXRCYWNrcGFjawEJARFrZXlCYWNrcGFja0J5RHVjawEFC2R1Y2tBc3NldElkBAdyZXNMaXN0CQC1CQIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4UmVzAgFfBA0kdDAyOTA2MzI5MTg0CQETc2VsbFJlc291cmNlc0NvbW1vbgQFB3Jlc0xpc3QFEGZhY3RvcnlDb250aW5lbnQFB2Ftb3VudHMFCW1pblByaWNlcwQOZmFjdG9yeUFjdGlvbnMIBQ0kdDAyOTA2MzI5MTg0Al8xBAZuZXdSZXMIBQ0kdDAyOTA2MzI5MTg0Al8yBAx1c2R0UmVjZWl2ZWQIBQ0kdDAyOTA2MzI5MTg0Al8zBAh0b3RhbFJlcwgFDSR0MDI5MDYzMjkxODQCXzQEB25ld1BhY2sJALoJAgkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQpicElkeExldmVsCQDMCAIJALkJAgUGbmV3UmVzAgFfCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4TWF0CQDMCAIJAJEDAgULY3VycmVudFBhY2sFCWJwSWR4UHJvZAUDbmlsAgE6BA5iYWNrcGFja1Jlc3VsdAkBCGFzU3RyaW5nAQkA/AcEBQ9zdGFraW5nQ29udHJhY3QCDnVwZGF0ZUJhY2twYWNrCQDMCAIFC2R1Y2tBc3NldElkCQDMCAIFB25ld1BhY2sFA25pbAUDbmlsBAtzdGF0c1Jlc3VsdAkBBWFzSW50AQkA/AcEBQ9zdGFraW5nQ29udHJhY3QCD3VwZGF0ZUR1Y2tTdGF0cwkAzAgCBQtkdWNrQXNzZXRJZAkAzAgCCQBrAwUHeHBUcmFkZQUIdG90YWxSZXMFBU1VTFQ4BQNuaWwFA25pbAQHZmVlUGFydAkAawMFDHVzZHRSZWNlaXZlZAUMREVMSVZFUllfRkVFBQVNVUxUNgQDZmVlAwkAZgIFFU1JTl9VU0RUX0ZFRV9ERUxJVkVSWQUHZmVlUGFydAUVTUlOX1VTRFRfRkVFX0RFTElWRVJZBQdmZWVQYXJ0BBBhY3Rpdml0aWVzQW1vdW50CQBpAgUMdXNkdFJlY2VpdmVkAGQDCQBnAgUDZmVlCQBlAgUMdXNkdFJlY2VpdmVkBRBhY3Rpdml0aWVzQW1vdW50CQACAQkArAICAitUaGlzIHRyYWRlIGRvZXMgbm90IGNvdmVyIGRlbGl2ZXJ5IGNvc3Qgb2YgCQEKZml4ZWRQb2ludAIFA2ZlZQAGBAlmdW5kVG90YWwJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUPZGVsaXZlcnlGdW5kS2V5AAAJAJQKAgkAzQgCCQDNCAIJAM0IAgUOZmFjdG9yeUFjdGlvbnMJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgkAZQIJAGUCBQx1c2R0UmVjZWl2ZWQFEGFjdGl2aXRpZXNBbW91bnQFA2ZlZQULdXNkdEFzc2V0SWQJAQxJbnRlZ2VyRW50cnkCBQ9kZWxpdmVyeUZ1bmRLZXkJAGQCBQlmdW5kVG90YWwFA2ZlZQkBDlNjcmlwdFRyYW5zZmVyAwUMcmVzdENvbnRyYWN0BRBhY3Rpdml0aWVzQW1vdW50BQt1c2R0QXNzZXRJZAkAlQoDBQ5iYWNrcGFja1Jlc3VsdAUMcHJvbG9nUmVzdWx0BQtzdGF0c1Jlc3VsdAFpARlzZWxsUmVzb3VyY2VzTGFuZERlbGl2ZXJ5BAdhbW91bnRzCW1pblByaWNlcwtsYW5kQXNzZXRJZBBmYWN0b3J5Q29udGluZW50AwkBASEBBRFLU19BTExPV19ERUxJVkVSWQkAAgECH0RlbGl2ZXJ5IGZlYXR1cmUgaXMgdHVybmVkIG9mZiEEDHByb2xvZ1Jlc3VsdAkBBnByb2xvZwADCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAipzZWxsUmVzb3VyY2VzIGRvZXNuJ3QgcmVxdWlyZSBhbnkgcGF5bWVudHMEBHVzZXIIBQFpBmNhbGxlcgQEYWRkcgkApQgBBQR1c2VyBAVhc3NldAkBBXZhbHVlAQkA7AcBCQDZBAEFC2xhbmRBc3NldElkAwkBASEBCQEJaXNEZWZpbmVkAQkAmggCBQ9zdGFraW5nQ29udHJhY3QJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQULbGFuZEFzc2V0SWQJAAIBCQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCDiBpcyBub3Qgc3Rha2VkBAVvd25lcgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFD3N0YWtpbmdDb250cmFjdAkBFWtleUxhbmRBc3NldElkVG9Pd25lcgEFC2xhbmRBc3NldElkCQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCDCBpcyBvcnBoYW5lZAMJAQIhPQIFBW93bmVyBQRhZGRyCQACAQkArAICBQpMQU5EUFJFRklYAg0gaXMgbm90IHlvdXJzBAJ3aAkBCGFzU3RyaW5nAQkA/AcEBQ9zdGFraW5nQ29udHJhY3QCFGdldFdhcmVob3VzZVJFQURPTkxZCQDMCAIFC2xhbmRBc3NldElkBQNuaWwFA25pbAQJY3VycmVudFdoCQC8CQIFAndoAgE6BAdyZXNMaXN0CQC1CQIJAJEDAgUJY3VycmVudFdoBQh3aElkeFJlcwIBXwQNJHQwMzEyMTEzMTMzMgkBE3NlbGxSZXNvdXJjZXNDb21tb24EBQdyZXNMaXN0BRBmYWN0b3J5Q29udGluZW50BQdhbW91bnRzBQltaW5QcmljZXMEDmZhY3RvcnlBY3Rpb25zCAUNJHQwMzEyMTEzMTMzMgJfMQQGbmV3UmVzCAUNJHQwMzEyMTEzMTMzMgJfMgQMdXNkdFJlY2VpdmVkCAUNJHQwMzEyMTEzMTMzMgJfMwQIdG90YWxSZXMIBQ0kdDAzMTIxMTMxMzMyAl80BAV3aFN0cgkAugkCCQDMCAIJAJEDAgUJY3VycmVudFdoBQt3aElkeExldmVscwkAzAgCCQC5CQIFBm5ld1JlcwIBXwkAzAgCCQCRAwIFCWN1cnJlbnRXaAUId2hJZHhNYXQJAMwIAgkAkQMCBQljdXJyZW50V2gFCXdoSWR4UHJvZAkAzAgCCQCRAwIFCWN1cnJlbnRXaAUJd2hJZHhMT0ZUBQNuaWwCAToEBndoU2F2ZQkBCGFzU3RyaW5nAQkA/AcEBQ9zdGFraW5nQ29udHJhY3QCDXNhdmVXYXJlaG91c2UJAMwIAgUFd2hTdHIJAMwIAgULbGFuZEFzc2V0SWQFA25pbAUDbmlsBAtzdGF0c1Jlc3VsdAkBBWFzSW50AQkA/AcEBQ9zdGFraW5nQ29udHJhY3QCDnVwZGF0ZUFjY1N0YXRzCQDMCAIFBGFkZHIJAMwIAgkAawMFB3hwVHJhZGUFCHRvdGFsUmVzBQVNVUxUOAUDbmlsBQNuaWwEB2ZlZVBhcnQJAGsDBQx1c2R0UmVjZWl2ZWQFDERFTElWRVJZX0ZFRQUFTVVMVDYEA2ZlZQMJAGYCBRVNSU5fVVNEVF9GRUVfREVMSVZFUlkFB2ZlZVBhcnQFFU1JTl9VU0RUX0ZFRV9ERUxJVkVSWQUHZmVlUGFydAQQYWN0aXZpdGllc0Ftb3VudAkAaQIFDHVzZHRSZWNlaXZlZABkAwkAZwIFA2ZlZQkAZQIFDHVzZHRSZWNlaXZlZAUQYWN0aXZpdGllc0Ftb3VudAkAAgEJAKwCAgIrVGhpcyB0cmFkZSBkb2VzIG5vdCBjb3ZlciBkZWxpdmVyeSBjb3N0IG9mIAkBCmZpeGVkUG9pbnQCBQNmZWUABgQJZnVuZFRvdGFsCQELdmFsdWVPckVsc2UCCQCfCAEFD2RlbGl2ZXJ5RnVuZEtleQAACQCUCgIJAM0IAgkAzQgCCQDNCAIFDmZhY3RvcnlBY3Rpb25zCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIJAGUCCQBlAgUMdXNkdFJlY2VpdmVkBRBhY3Rpdml0aWVzQW1vdW50BQNmZWUFC3VzZHRBc3NldElkCQEMSW50ZWdlckVudHJ5AgUPZGVsaXZlcnlGdW5kS2V5CQBkAgUJZnVuZFRvdGFsBQNmZWUJAQ5TY3JpcHRUcmFuc2ZlcgMFDHJlc3RDb250cmFjdAUQYWN0aXZpdGllc0Ftb3VudAULdXNkdEFzc2V0SWQJAJUKAwUGd2hTYXZlBQxwcm9sb2dSZXN1bHQFC3N0YXRzUmVzdWx0AWkBDGJ1eU1hdGVyaWFscwIHYW1vdW50cwltYXhQcmljZXMEDHByb2xvZ1Jlc3VsdAkBBnByb2xvZwAEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUPc3Rha2luZ0NvbnRyYWN0CQEUa2V5U3Rha2VkRHVja0J5T3duZXIBCQClCAEIBQFpBmNhbGxlcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECImV4YWN0bHkgMSBwYXltZW50IG11c3QgYmUgYXR0YWNoZWQEA3BtdAkAkQMCCAUBaQhwYXltZW50cwAABANhbXQIBQNwbXQGYW1vdW50AwMJAQEhAQkBCWlzRGVmaW5lZAEIBQNwbXQHYXNzZXRJZAYJAQIhPQIJAQV2YWx1ZQEIBQNwbXQHYXNzZXRJZAULdXNkdEFzc2V0SWQJAAIBAhNVU0RUIHBheW1lbnRzIG9ubHkhBAtjdXJMb2NhdGlvbgkAtQkCCQELdmFsdWVPckVsc2UCCQCdCAIFD3N0YWtpbmdDb250cmFjdAkBD2tleUR1Y2tMb2NhdGlvbgEFC2R1Y2tBc3NldElkBQ9ERUZBVUxUTE9DQVRJT04CAV8DCQECIT0CCQCRAwIFC2N1ckxvY2F0aW9uBQpsb2NJZHhUeXBlAgFGCQACAQkArAICAi1EdWNrIGxvY2F0aW9uIHR5cGUgc2hvdWxkIGJlIEZhY3RvcnksIGJ1dCBpcyAJAJEDAgULY3VyTG9jYXRpb24FCmxvY0lkeFR5cGUEC2N1cnJlbnRQYWNrCQELZ2V0QmFja3BhY2sBCQERa2V5QmFja3BhY2tCeUR1Y2sBBQtkdWNrQXNzZXRJZAQHbWF0TGlzdAkAtQkCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeE1hdAIBXwQNJHQwMzMxOTIzMzMxNAkBEmJ1eU1hdGVyaWFsc0NvbW1vbgQFB21hdExpc3QJAJEDAgULY3VyTG9jYXRpb24FCGxvY0lkeElkBQdhbW91bnRzBQltYXhQcmljZXMEDmZhY3RvcnlBY3Rpb25zCAUNJHQwMzMxOTIzMzMxNAJfMQQGbmV3TWF0CAUNJHQwMzMxOTIzMzMxNAJfMgQJdXNkdFNwZW50CAUNJHQwMzMxOTIzMzMxNAJfMwQIdG90YWxNYXQIBQ0kdDAzMzE5MjMzMzE0Al80AwkAZgIFCXVzZHRTcGVudAUDYW10CQACAQkArAICCQCsAgIJAKwCAgIfSW5zdWZmaWNpZW50IHBheW1lbnQhIEF0dGFjaGVkPQkBCmZpeGVkUG9pbnQCBQNhbXQABgILLCByZXF1aXJlZD0JAQpmaXhlZFBvaW50AgUJdXNkdFNwZW50AAYEB25ld1BhY2sJALkJAgkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQpicElkeExldmVsCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4UmVzCQDMCAIJALkJAgUGbmV3TWF0AgFfCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCWJwSWR4UHJvZAUDbmlsAgE6BA5iYWNrcGFja1Jlc3VsdAkBCGFzU3RyaW5nAQkA/AcEBQ9zdGFraW5nQ29udHJhY3QCDnVwZGF0ZUJhY2twYWNrCQDMCAIFC2R1Y2tBc3NldElkCQDMCAIFB25ld1BhY2sFA25pbAUDbmlsBARyZXN0AwkAZgIJAGUCBQNhbXQFCXVzZHRTcGVudAAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgkAZQIFA2FtdAUJdXNkdFNwZW50BQt1c2R0QXNzZXRJZAUDbmlsBQNuaWwEEGFjdGl2aXRpZXNBbW91bnQJAGkCBQl1c2R0U3BlbnQAZAQLc3RhdHNSZXN1bHQJAQVhc0ludAEJAPwHBAUPc3Rha2luZ0NvbnRyYWN0Ag91cGRhdGVEdWNrU3RhdHMJAMwIAgULZHVja0Fzc2V0SWQJAMwIAgkAawMFB3hwVHJhZGUFCHRvdGFsTWF0BQVNVUxUOAUDbmlsBQNuaWwJAJQKAgkAzQgCCQDOCAIFDmZhY3RvcnlBY3Rpb25zBQRyZXN0CQEOU2NyaXB0VHJhbnNmZXIDBQxyZXN0Q29udHJhY3QFEGFjdGl2aXRpZXNBbW91bnQFC3VzZHRBc3NldElkCQCVCgMFDmJhY2twYWNrUmVzdWx0BQxwcm9sb2dSZXN1bHQFC3N0YXRzUmVzdWx0AWkBGGJ1eU1hdGVyaWFsc0R1Y2tEZWxpdmVyeQMHYW1vdW50cwltYXhQcmljZXMQZmFjdG9yeUNvbnRpbmVudAMJAQEhAQURS1NfQUxMT1dfREVMSVZFUlkJAAIBAh9EZWxpdmVyeSBmZWF0dXJlIGlzIHR1cm5lZCBvZmYhBAxwcm9sb2dSZXN1bHQJAQZwcm9sb2cABAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFD3N0YWtpbmdDb250cmFjdAkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQkApQgBCAUBaQZjYWxsZXICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAiJleGFjdGx5IDEgcGF5bWVudCBtdXN0IGJlIGF0dGFjaGVkBANwbXQJAJEDAggFAWkIcGF5bWVudHMAAAQDYW10CAUDcG10BmFtb3VudAMDCQEBIQEJAQlpc0RlZmluZWQBCAUDcG10B2Fzc2V0SWQGCQECIT0CCQEFdmFsdWUBCAUDcG10B2Fzc2V0SWQFC3VzZHRBc3NldElkCQACAQITVVNEVCBwYXltZW50cyBvbmx5IQQLY3VycmVudFBhY2sJAQtnZXRCYWNrcGFjawEJARFrZXlCYWNrcGFja0J5RHVjawEFC2R1Y2tBc3NldElkBAdtYXRMaXN0CQC1CQIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4TWF0AgFfBA0kdDAzNDgzMjM0OTQ5CQESYnV5TWF0ZXJpYWxzQ29tbW9uBAUHbWF0TGlzdAUQZmFjdG9yeUNvbnRpbmVudAUHYW1vdW50cwUJbWF4UHJpY2VzBA5mYWN0b3J5QWN0aW9ucwgFDSR0MDM0ODMyMzQ5NDkCXzEEBm5ld01hdAgFDSR0MDM0ODMyMzQ5NDkCXzIECXVzZHRTcGVudAgFDSR0MDM0ODMyMzQ5NDkCXzMECHRvdGFsTWF0CAUNJHQwMzQ4MzIzNDk0OQJfNAQHbmV3UGFjawkAuQkCCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCmJwSWR4TGV2ZWwJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhSZXMJAMwIAgkAuQkCBQZuZXdNYXQCAV8JAMwIAgkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kBQNuaWwCAToEDmJhY2twYWNrUmVzdWx0CQEIYXNTdHJpbmcBCQD8BwQFD3N0YWtpbmdDb250cmFjdAIOdXBkYXRlQmFja3BhY2sJAMwIAgULZHVja0Fzc2V0SWQJAMwIAgUHbmV3UGFjawUDbmlsBQNuaWwEC3N0YXRzUmVzdWx0CQEFYXNJbnQBCQD8BwQFD3N0YWtpbmdDb250cmFjdAIPdXBkYXRlRHVja1N0YXRzCQDMCAIFC2R1Y2tBc3NldElkCQDMCAIJAGsDBQd4cFRyYWRlBQh0b3RhbE1hdAUFTVVMVDgFA25pbAUDbmlsBAdmZWVQYXJ0CQBrAwUJdXNkdFNwZW50BQxERUxJVkVSWV9GRUUFBU1VTFQ2BANmZWUDCQBmAgUVTUlOX1VTRFRfRkVFX0RFTElWRVJZBQdmZWVQYXJ0BRVNSU5fVVNEVF9GRUVfREVMSVZFUlkFB2ZlZVBhcnQEEHVzZHRTcGVudFdpdGhGZWUJAGQCBQl1c2R0U3BlbnQFA2ZlZQMJAGYCBRB1c2R0U3BlbnRXaXRoRmVlBQNhbXQJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAh9JbnN1ZmZpY2llbnQgcGF5bWVudCEgQXR0YWNoZWQ9CQEKZml4ZWRQb2ludAIFA2FtdAAGAgssIHJlcXVpcmVkPQkBCmZpeGVkUG9pbnQCBQl1c2R0U3BlbnQABgIBKwkBCmZpeGVkUG9pbnQCBQNmZWUABgIOKGRlbGl2ZXJ5IGZlZSkEBHJlc3QDCQBmAgkAZQIFA2FtdAUQdXNkdFNwZW50V2l0aEZlZQAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgkAZQIFA2FtdAUQdXNkdFNwZW50V2l0aEZlZQULdXNkdEFzc2V0SWQFA25pbAUDbmlsBBBhY3Rpdml0aWVzQW1vdW50CQBpAgUJdXNkdFNwZW50AGQECWZ1bmRUb3RhbAkBC3ZhbHVlT3JFbHNlAgkAnwgBBQ9kZWxpdmVyeUZ1bmRLZXkAAAkAlAoCCQDNCAIJAM0IAgkAzggCBQ5mYWN0b3J5QWN0aW9ucwUEcmVzdAkBDlNjcmlwdFRyYW5zZmVyAwUMcmVzdENvbnRyYWN0BRBhY3Rpdml0aWVzQW1vdW50BQt1c2R0QXNzZXRJZAkBDEludGVnZXJFbnRyeQIFD2RlbGl2ZXJ5RnVuZEtleQkAZAIFCWZ1bmRUb3RhbAUDZmVlCQCVCgMFDmJhY2twYWNrUmVzdWx0BQxwcm9sb2dSZXN1bHQFC3N0YXRzUmVzdWx0AWkBGGJ1eU1hdGVyaWFsc0xhbmREZWxpdmVyeQQHYW1vdW50cwltYXhQcmljZXMLbGFuZEFzc2V0SWQQZmFjdG9yeUNvbnRpbmVudAMJAQEhAQURS1NfQUxMT1dfREVMSVZFUlkJAAIBAh9EZWxpdmVyeSBmZWF0dXJlIGlzIHR1cm5lZCBvZmYhBAxwcm9sb2dSZXN1bHQJAQZwcm9sb2cAAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQIiZXhhY3RseSAxIHBheW1lbnQgbXVzdCBiZSBhdHRhY2hlZAQDcG10CQCRAwIIBQFpCHBheW1lbnRzAAAEA2FtdAgFA3BtdAZhbW91bnQDAwkBASEBCQEJaXNEZWZpbmVkAQgFA3BtdAdhc3NldElkBgkBAiE9AgkBBXZhbHVlAQgFA3BtdAdhc3NldElkBQt1c2R0QXNzZXRJZAkAAgECE1VTRFQgcGF5bWVudHMgb25seSEEBHVzZXIIBQFpBmNhbGxlcgQEYWRkcgkApQgBBQR1c2VyBAVhc3NldAkBBXZhbHVlAQkA7AcBCQDZBAEFC2xhbmRBc3NldElkAwkBASEBCQEJaXNEZWZpbmVkAQkAmggCBQ9zdGFraW5nQ29udHJhY3QJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQULbGFuZEFzc2V0SWQJAAIBCQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCDiBpcyBub3Qgc3Rha2VkBAVvd25lcgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFD3N0YWtpbmdDb250cmFjdAkBFWtleUxhbmRBc3NldElkVG9Pd25lcgEFC2xhbmRBc3NldElkCQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCDCBpcyBvcnBoYW5lZAMJAQIhPQIFBW93bmVyBQRhZGRyCQACAQkArAICBQpMQU5EUFJFRklYAg0gaXMgbm90IHlvdXJzBAJ3aAkBCGFzU3RyaW5nAQkA/AcEBQ9zdGFraW5nQ29udHJhY3QCFGdldFdhcmVob3VzZVJFQURPTkxZCQDMCAIFC2xhbmRBc3NldElkBQNuaWwFA25pbAQJY3VycmVudFdoCQC8CQIFAndoAgE6BAdtYXRMaXN0CQC1CQIJAJEDAgUJY3VycmVudFdoBQh3aElkeE1hdAIBXwQNJHQwMzcyMjczNzM0NAkBEmJ1eU1hdGVyaWFsc0NvbW1vbgQFB21hdExpc3QFEGZhY3RvcnlDb250aW5lbnQFB2Ftb3VudHMFCW1heFByaWNlcwQOZmFjdG9yeUFjdGlvbnMIBQ0kdDAzNzIyNzM3MzQ0Al8xBAZuZXdNYXQIBQ0kdDAzNzIyNzM3MzQ0Al8yBAl1c2R0U3BlbnQIBQ0kdDAzNzIyNzM3MzQ0Al8zBAh0b3RhbE1hdAgFDSR0MDM3MjI3MzczNDQCXzQEBXdoU3RyCQC6CQIJAMwIAgkAkQMCBQljdXJyZW50V2gFC3doSWR4TGV2ZWxzCQDMCAIJAJEDAgUJY3VycmVudFdoBQh3aElkeFJlcwkAzAgCCQC5CQIFBm5ld01hdAIBXwkAzAgCCQCRAwIFCWN1cnJlbnRXaAUJd2hJZHhQcm9kCQDMCAIJAJEDAgUJY3VycmVudFdoBQl3aElkeExPRlQFA25pbAIBOgQGd2hTYXZlCQEIYXNTdHJpbmcBCQD8BwQFD3N0YWtpbmdDb250cmFjdAINc2F2ZVdhcmVob3VzZQkAzAgCBQV3aFN0cgkAzAgCBQtsYW5kQXNzZXRJZAUDbmlsBQNuaWwEC3N0YXRzUmVzdWx0CQEFYXNJbnQBCQD8BwQFD3N0YWtpbmdDb250cmFjdAIOdXBkYXRlQWNjU3RhdHMJAMwIAgUEYWRkcgkAzAgCCQBrAwUHeHBUcmFkZQUIdG90YWxNYXQFBU1VTFQ4BQNuaWwFA25pbAQHZmVlUGFydAkAawMFCXVzZHRTcGVudAUMREVMSVZFUllfRkVFBQVNVUxUNgQDZmVlAwkAZgIFFU1JTl9VU0RUX0ZFRV9ERUxJVkVSWQUHZmVlUGFydAUVTUlOX1VTRFRfRkVFX0RFTElWRVJZBQdmZWVQYXJ0BBB1c2R0U3BlbnRXaXRoRmVlCQBkAgUJdXNkdFNwZW50BQNmZWUDCQBmAgUQdXNkdFNwZW50V2l0aEZlZQUDYW10CQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIfSW5zdWZmaWNpZW50IHBheW1lbnQhIEF0dGFjaGVkPQkBCmZpeGVkUG9pbnQCBQNhbXQABgILLCByZXF1aXJlZD0JAQpmaXhlZFBvaW50AgUJdXNkdFNwZW50AAYCASsJAQpmaXhlZFBvaW50AgUDZmVlAAYCDihkZWxpdmVyeSBmZWUpBARyZXN0AwkAZgIJAGUCBQNhbXQFEHVzZHRTcGVudFdpdGhGZWUAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIJAGUCBQNhbXQFEHVzZHRTcGVudFdpdGhGZWUFC3VzZHRBc3NldElkBQNuaWwFA25pbAQQYWN0aXZpdGllc0Ftb3VudAkAaQIFCXVzZHRTcGVudABkBAlmdW5kVG90YWwJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUPZGVsaXZlcnlGdW5kS2V5AAAJAJQKAgkAzQgCCQDNCAIJAM4IAgUOZmFjdG9yeUFjdGlvbnMFBHJlc3QJAQ5TY3JpcHRUcmFuc2ZlcgMFDHJlc3RDb250cmFjdAUQYWN0aXZpdGllc0Ftb3VudAULdXNkdEFzc2V0SWQJAQxJbnRlZ2VyRW50cnkCBQ9kZWxpdmVyeUZ1bmRLZXkJAGQCBQlmdW5kVG90YWwFA2ZlZQkAlQoDBQZ3aFNhdmUFDHByb2xvZ1Jlc3VsdAULc3RhdHNSZXN1bHQBaQERZXhjaGFuZ2VSZXNvdXJjZXMBB2Ftb3VudHMEDHByb2xvZ1Jlc3VsdAkBBnByb2xvZwAEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUPc3Rha2luZ0NvbnRyYWN0CQEUa2V5U3Rha2VkRHVja0J5T3duZXIBCQClCAEIBQFpBmNhbGxlcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECImV4YWN0bHkgMSBwYXltZW50IG11c3QgYmUgYXR0YWNoZWQEA3BtdAkAkQMCCAUBaQhwYXltZW50cwAABANhbXQIBQNwbXQGYW1vdW50AwMJAQEhAQkBCWlzRGVmaW5lZAEIBQNwbXQHYXNzZXRJZAYJAQIhPQIJAQV2YWx1ZQEIBQNwbXQHYXNzZXRJZAULdXNkdEFzc2V0SWQJAAIBAhNVU0RUIHBheW1lbnRzIG9ubHkhBAtjdXJMb2NhdGlvbgkAtQkCCQELdmFsdWVPckVsc2UCCQCdCAIFD3N0YWtpbmdDb250cmFjdAkBD2tleUR1Y2tMb2NhdGlvbgEFC2R1Y2tBc3NldElkBQ9ERUZBVUxUTE9DQVRJT04CAV8DCQECIT0CCQCRAwIFC2N1ckxvY2F0aW9uBQpsb2NJZHhUeXBlAgFGCQACAQkArAICAi1EdWNrIGxvY2F0aW9uIHR5cGUgc2hvdWxkIGJlIEZhY3RvcnksIGJ1dCBpcyAJAJEDAgULY3VyTG9jYXRpb24FCmxvY0lkeFR5cGUEC2N1cnJlbnRQYWNrCQELZ2V0QmFja3BhY2sBCQERa2V5QmFja3BhY2tCeUR1Y2sBBQtkdWNrQXNzZXRJZAQHcmVzTGlzdAkAtQkCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeFJlcwIBXwQHbWF0TGlzdAkAtQkCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeE1hdAIBXwQNJHQwMzk0NTgzOTU2NAkBF2V4Y2hhbmdlUmVzb3VyY2VzQ29tbW9uAwUHcmVzTGlzdAUHbWF0TGlzdAUHYW1vdW50cwQGbmV3UmVzCAUNJHQwMzk0NTgzOTU2NAJfMQQGbmV3TWF0CAUNJHQwMzk0NTgzOTU2NAJfMgQJdXNkdFNwZW50CAUNJHQwMzk0NTgzOTU2NAJfMwQUdG90YWxBbW91bnRDb252ZXJ0ZWQIBQ0kdDAzOTQ1ODM5NTY0Al80AwkAZgIFCXVzZHRTcGVudAUDYW10CQACAQkArAICCQCsAgIJAKwCAgIfSW5zdWZmaWNpZW50IHBheW1lbnQhIEF0dGFjaGVkPQkBCmZpeGVkUG9pbnQCBQNhbXQABgILLCByZXF1aXJlZD0JAQpmaXhlZFBvaW50AgUJdXNkdFNwZW50AAYEB25ld1BhY2sJALkJAgkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQpicElkeExldmVsCQDMCAIJALkJAgUGbmV3UmVzAgFfCQDMCAIJALkJAgUGbmV3TWF0AgFfCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCWJwSWR4UHJvZAUDbmlsAgE6BA5iYWNrcGFja1Jlc3VsdAkBCGFzU3RyaW5nAQkA/AcEBQ9zdGFraW5nQ29udHJhY3QCDnVwZGF0ZUJhY2twYWNrCQDMCAIFC2R1Y2tBc3NldElkCQDMCAIFB25ld1BhY2sFA25pbAUDbmlsBARyZXN0AwkAZgIJAGUCBQNhbXQFCXVzZHRTcGVudAAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgkAZQIFA2FtdAUJdXNkdFNwZW50BQt1c2R0QXNzZXRJZAUDbmlsBQNuaWwEEGFjdGl2aXRpZXNBbW91bnQJAGkCBQl1c2R0U3BlbnQAZAQLc3RhdHNSZXN1bHQJAQVhc0ludAEJAPwHBAUPc3Rha2luZ0NvbnRyYWN0Ag91cGRhdGVEdWNrU3RhdHMJAMwIAgULZHVja0Fzc2V0SWQJAMwIAgkAawMFB3hwVHJhZGUFFHRvdGFsQW1vdW50Q29udmVydGVkBQVNVUxUOAUDbmlsBQNuaWwJAJQKAgkAzQgCBQRyZXN0CQEOU2NyaXB0VHJhbnNmZXIDBQxyZXN0Q29udHJhY3QFEGFjdGl2aXRpZXNBbW91bnQFC3VzZHRBc3NldElkCQCVCgMFDmJhY2twYWNrUmVzdWx0BQxwcm9sb2dSZXN1bHQFC3N0YXRzUmVzdWx0AWkBHWV4Y2hhbmdlUmVzb3VyY2VzRHVja0RlbGl2ZXJ5AQdhbW91bnRzBAxwcm9sb2dSZXN1bHQJAQZwcm9sb2cABAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFD3N0YWtpbmdDb250cmFjdAkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQkApQgBCAUBaQZjYWxsZXICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAiJleGFjdGx5IDEgcGF5bWVudCBtdXN0IGJlIGF0dGFjaGVkBANwbXQJAJEDAggFAWkIcGF5bWVudHMAAAQDYW10CAUDcG10BmFtb3VudAMDCQEBIQEJAQlpc0RlZmluZWQBCAUDcG10B2Fzc2V0SWQGCQECIT0CCQEFdmFsdWUBCAUDcG10B2Fzc2V0SWQFC3VzZHRBc3NldElkCQACAQITVVNEVCBwYXltZW50cyBvbmx5IQQLY3VycmVudFBhY2sJAQtnZXRCYWNrcGFjawEJARFrZXlCYWNrcGFja0J5RHVjawEFC2R1Y2tBc3NldElkBAdyZXNMaXN0CQC1CQIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4UmVzAgFfBAdtYXRMaXN0CQC1CQIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4TWF0AgFfBA0kdDA0MDk5OTQxMTA1CQEXZXhjaGFuZ2VSZXNvdXJjZXNDb21tb24DBQdyZXNMaXN0BQdtYXRMaXN0BQdhbW91bnRzBAZuZXdSZXMIBQ0kdDA0MDk5OTQxMTA1Al8xBAZuZXdNYXQIBQ0kdDA0MDk5OTQxMTA1Al8yBAl1c2R0U3BlbnQIBQ0kdDA0MDk5OTQxMTA1Al8zBBR0b3RhbEFtb3VudENvbnZlcnRlZAgFDSR0MDQwOTk5NDExMDUCXzQEB2ZlZVBhcnQJAGsDBQl1c2R0U3BlbnQFDkRFTElWRVJZX0ZFRTE1BQVNVUxUNgQDZmVlAwkAZgIFF01JTl9VU0RUX0ZFRV9ERUxJVkVSWTE1BQdmZWVQYXJ0BRdNSU5fVVNEVF9GRUVfREVMSVZFUlkxNQUHZmVlUGFydAQQdXNkdFNwZW50V2l0aEZlZQkAZAIFCXVzZHRTcGVudAUDZmVlAwkAZgIFEHVzZHRTcGVudFdpdGhGZWUFA2FtdAkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICH0luc3VmZmljaWVudCBwYXltZW50ISBBdHRhY2hlZD0JAQpmaXhlZFBvaW50AgUDYW10AAYCCywgcmVxdWlyZWQ9CQEKZml4ZWRQb2ludAIFCXVzZHRTcGVudAAGAgErCQEKZml4ZWRQb2ludAIFA2ZlZQAGAg4oZGVsaXZlcnkgZmVlKQQHbmV3UGFjawkAuQkCCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCmJwSWR4TGV2ZWwJAMwIAgkAuQkCBQZuZXdSZXMCAV8JAMwIAgkAuQkCBQZuZXdNYXQCAV8JAMwIAgkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kBQNuaWwCAToEDmJhY2twYWNrUmVzdWx0CQEIYXNTdHJpbmcBCQD8BwQFD3N0YWtpbmdDb250cmFjdAIOdXBkYXRlQmFja3BhY2sJAMwIAgULZHVja0Fzc2V0SWQJAMwIAgUHbmV3UGFjawUDbmlsBQNuaWwEBHJlc3QDCQBmAgkAZQIFA2FtdAUQdXNkdFNwZW50V2l0aEZlZQAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgkAZQIFA2FtdAUQdXNkdFNwZW50V2l0aEZlZQULdXNkdEFzc2V0SWQFA25pbAUDbmlsBBBhY3Rpdml0aWVzQW1vdW50CQBpAgUJdXNkdFNwZW50AGQEC3N0YXRzUmVzdWx0CQEFYXNJbnQBCQD8BwQFD3N0YWtpbmdDb250cmFjdAIPdXBkYXRlRHVja1N0YXRzCQDMCAIFC2R1Y2tBc3NldElkCQDMCAIJAGsDBQd4cFRyYWRlBRR0b3RhbEFtb3VudENvbnZlcnRlZAUFTVVMVDgFA25pbAUDbmlsBAlmdW5kVG90YWwJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUPZGVsaXZlcnlGdW5kS2V5AAAJAJQKAgkAzQgCCQDNCAIFBHJlc3QJAQ5TY3JpcHRUcmFuc2ZlcgMFDHJlc3RDb250cmFjdAUQYWN0aXZpdGllc0Ftb3VudAULdXNkdEFzc2V0SWQJAQxJbnRlZ2VyRW50cnkCBQ9kZWxpdmVyeUZ1bmRLZXkJAGQCBQlmdW5kVG90YWwFA2ZlZQkAlQoDBQ5iYWNrcGFja1Jlc3VsdAUMcHJvbG9nUmVzdWx0BQtzdGF0c1Jlc3VsdAFpAR1leGNoYW5nZVJlc291cmNlc0xhbmREZWxpdmVyeQIHYW1vdW50cwtsYW5kQXNzZXRJZAQMcHJvbG9nUmVzdWx0CQEGcHJvbG9nAAMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECImV4YWN0bHkgMSBwYXltZW50IG11c3QgYmUgYXR0YWNoZWQEA3BtdAkAkQMCCAUBaQhwYXltZW50cwAABANhbXQIBQNwbXQGYW1vdW50AwMJAQEhAQkBCWlzRGVmaW5lZAEIBQNwbXQHYXNzZXRJZAYJAQIhPQIJAQV2YWx1ZQEIBQNwbXQHYXNzZXRJZAULdXNkdEFzc2V0SWQJAAIBAhNVU0RUIHBheW1lbnRzIG9ubHkhBAR1c2VyCAUBaQZjYWxsZXIEBGFkZHIJAKUIAQUEdXNlcgQFYXNzZXQJAQV2YWx1ZQEJAOwHAQkA2QQBBQtsYW5kQXNzZXRJZAMJAQEhAQkBCWlzRGVmaW5lZAEJAJoIAgUPc3Rha2luZ0NvbnRyYWN0CQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFC2xhbmRBc3NldElkCQACAQkArAICCQCsAgICBE5GVCAIBQVhc3NldARuYW1lAg4gaXMgbm90IHN0YWtlZAQFb3duZXIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQ9zdGFraW5nQ29udHJhY3QJARVrZXlMYW5kQXNzZXRJZFRvT3duZXIBBQtsYW5kQXNzZXRJZAkArAICCQCsAgICBE5GVCAIBQVhc3NldARuYW1lAgwgaXMgb3JwaGFuZWQDCQECIT0CBQVvd25lcgUEYWRkcgkAAgEJAKwCAgUKTEFORFBSRUZJWAINIGlzIG5vdCB5b3VycwQCd2gJAQhhc1N0cmluZwEJAPwHBAUPc3Rha2luZ0NvbnRyYWN0AhRnZXRXYXJlaG91c2VSRUFET05MWQkAzAgCBQtsYW5kQXNzZXRJZAUDbmlsBQNuaWwECWN1cnJlbnRXaAkAvAkCBQJ3aAIBOgQHcmVzTGlzdAkAtQkCCQCRAwIFCWN1cnJlbnRXaAUId2hJZHhSZXMCAV8EB21hdExpc3QJALUJAgkAkQMCBQljdXJyZW50V2gFCHdoSWR4TWF0AgFfBA0kdDA0MzMyODQzNDM0CQEXZXhjaGFuZ2VSZXNvdXJjZXNDb21tb24DBQdyZXNMaXN0BQdtYXRMaXN0BQdhbW91bnRzBAZuZXdSZXMIBQ0kdDA0MzMyODQzNDM0Al8xBAZuZXdNYXQIBQ0kdDA0MzMyODQzNDM0Al8yBAl1c2R0U3BlbnQIBQ0kdDA0MzMyODQzNDM0Al8zBBR0b3RhbEFtb3VudENvbnZlcnRlZAgFDSR0MDQzMzI4NDM0MzQCXzQEBXdoU3RyCQC6CQIJAMwIAgkAkQMCBQljdXJyZW50V2gFC3doSWR4TGV2ZWxzCQDMCAIJALkJAgUGbmV3UmVzAgFfCQDMCAIJALkJAgUGbmV3TWF0AgFfCQDMCAIJAJEDAgUJY3VycmVudFdoBQl3aElkeFByb2QJAMwIAgkAkQMCBQljdXJyZW50V2gFCXdoSWR4TE9GVAUDbmlsAgE6BAZ3aFNhdmUJAQhhc1N0cmluZwEJAPwHBAUPc3Rha2luZ0NvbnRyYWN0Ag1zYXZlV2FyZWhvdXNlCQDMCAIFBXdoU3RyCQDMCAIFC2xhbmRBc3NldElkBQNuaWwFA25pbAQLc3RhdHNSZXN1bHQJAQVhc0ludAEJAPwHBAUPc3Rha2luZ0NvbnRyYWN0Ag51cGRhdGVBY2NTdGF0cwkAzAgCBQRhZGRyCQDMCAIJAGsDBQd4cFRyYWRlBRR0b3RhbEFtb3VudENvbnZlcnRlZAUFTVVMVDgFA25pbAUDbmlsBAdmZWVQYXJ0CQBrAwUJdXNkdFNwZW50BQ5ERUxJVkVSWV9GRUUxNQUFTVVMVDYEA2ZlZQMJAGYCBRdNSU5fVVNEVF9GRUVfREVMSVZFUlkxNQUHZmVlUGFydAUXTUlOX1VTRFRfRkVFX0RFTElWRVJZMTUFB2ZlZVBhcnQEEHVzZHRTcGVudFdpdGhGZWUJAGQCBQl1c2R0U3BlbnQFA2ZlZQMJAGYCBRB1c2R0U3BlbnRXaXRoRmVlBQNhbXQJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAh9JbnN1ZmZpY2llbnQgcGF5bWVudCEgQXR0YWNoZWQ9CQEKZml4ZWRQb2ludAIFA2FtdAAGAgssIHJlcXVpcmVkPQkBCmZpeGVkUG9pbnQCBQl1c2R0U3BlbnQABgIBKwkBCmZpeGVkUG9pbnQCBQNmZWUABgIOKGRlbGl2ZXJ5IGZlZSkEBHJlc3QDCQBmAgkAZQIFA2FtdAUQdXNkdFNwZW50V2l0aEZlZQAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgkAZQIFA2FtdAUQdXNkdFNwZW50V2l0aEZlZQULdXNkdEFzc2V0SWQFA25pbAUDbmlsBBBhY3Rpdml0aWVzQW1vdW50CQBpAgUJdXNkdFNwZW50AGQECWZ1bmRUb3RhbAkBC3ZhbHVlT3JFbHNlAgkAnwgBBQ9kZWxpdmVyeUZ1bmRLZXkAAAkAlAoCCQDNCAIJAM0IAgUEcmVzdAkBDlNjcmlwdFRyYW5zZmVyAwUMcmVzdENvbnRyYWN0BRBhY3Rpdml0aWVzQW1vdW50BQt1c2R0QXNzZXRJZAkBDEludGVnZXJFbnRyeQIFD2RlbGl2ZXJ5RnVuZEtleQkAZAIFCWZ1bmRUb3RhbAUDZmVlCQCVCgMFBndoU2F2ZQUMcHJvbG9nUmVzdWx0BQtzdGF0c1Jlc3VsdAFpAQpjcmFmdEdvb2RzAgpwcm9kdWN0SWR4CHF1YW50aXR5BAxwcm9sb2dSZXN1bHQJAQZwcm9sb2cAAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQIiZXhhY3RseSAxIHBheW1lbnQgbXVzdCBiZSBhdHRhY2hlZAQDcG10CQCRAwIIBQFpCHBheW1lbnRzAAAEA2FtdAgFA3BtdAZhbW91bnQECnBtdEFzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAggFA3BtdAdhc3NldElkAh5XQVZFUyBjYW4ndCBiZSB1c2VkIGFzIHBheW1lbnQDCQECIT0CBQpwbXRBc3NldElkBQt1c2R0QXNzZXRJZAkAAgECE1VTRFQgcGF5bWVudHMgb25seSEDCQECIT0CBQNhbXQFBU1VTFQ2CQACAQIqZXhhY3RseSAxIFVTRFQgbXVzdCBiZSBhdHRhY2hlZCBhcyBwYXltZW50AwkAZwIAAAUIcXVhbnRpdHkJAAIBAhtRdWFudGl0eSBzaG91bGQgYmUgcG9zaXRpdmUEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUPc3Rha2luZ0NvbnRyYWN0CQEUa2V5U3Rha2VkRHVja0J5T3duZXIBCQClCAEIBQFpBmNhbGxlcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAQLY3VyTG9jYXRpb24JALUJAgkBC3ZhbHVlT3JFbHNlAgkAnQgCBQ9zdGFraW5nQ29udHJhY3QJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAUPREVGQVVMVExPQ0FUSU9OAgFfAwkBAiE9AgkAkQMCBQtjdXJMb2NhdGlvbgUKbG9jSWR4VHlwZQIBTQkAAgEJAKwCAgIxRHVjayBsb2NhdGlvbiB0eXBlIHNob3VsZCBiZSBNYW51ZmFjdG9yeSwgYnV0IGlzIAkAkQMCBQtjdXJMb2NhdGlvbgUKbG9jSWR4VHlwZQQEY29udAkAkQMCBQtjdXJMb2NhdGlvbgUPbG9jSWR4Q29udGluZW50BAtjdXJyZW50UGFjawkBC2dldEJhY2twYWNrAQkBEWtleUJhY2twYWNrQnlEdWNrAQULZHVja0Fzc2V0SWQEB21hdExpc3QJALUJAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhNYXQCAV8DAwkAZgIAAAUKcHJvZHVjdElkeAYJAGcCBQpwcm9kdWN0SWR4CQCQAwEFEHByb2R1Y3Rpb25NYXRyaXgJAAIBCQCsAgICFFVua25vd24gcHJvZHVjdCBpZHg9CQCkAwEFCnByb2R1Y3RJZHgEBnJlY2lwZQkAtQkCCQCRAwIFEHByb2R1Y3Rpb25NYXRyaXgFCnByb2R1Y3RJZHgCAV8DCQECIT0CCQCQAwEFBnJlY2lwZQUKUkVDSVBFU0laRQkAAgEJAKwCAgIXRmF0YWw6IHVua25vd24gcmVjaXBlOiAJAJEDAgUQcHJvZHVjdGlvbk1hdHJpeAUKcHJvZHVjdElkeAQOcHJvZHVjdENvbnRJZHgJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQZyZWNpcGUFDXJJZHhDb250aW5lbnQDCQECIT0CCQCRAwIFCmNvbnRpbmVudHMFDnByb2R1Y3RD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AiRsBQIkaQoBBSRmMV8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNgkBBSRmMV8yAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgQHbmV3UGFjawkAuQkCCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCmJwSWR4TGV2ZWwJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhSZXMJAMwIAgkAuQkCCAUGbWVyZ2VkAl8xAgFfCQDMCAIJALoJAgUGYnBQcm9kAgFfBQNuaWwCAToEBnJlc3VsdAkBCGFzU3RyaW5nAQkA/AcEBQ9zdGFraW5nQ29udHJhY3QCDnVwZGF0ZUJhY2twYWNrCQDMCAIFC2R1Y2tBc3NldElkCQDMCAIFB25ld1BhY2sFA25pbAUDbmlsBAtzdGF0c1Jlc3VsdAkBBWFzSW50AQkA/AcEBQ9zdGFraW5nQ29udHJhY3QCD3VwZGF0ZUR1Y2tTdGF0cwkAzAgCBQtkdWNrQXNzZXRJZAkAzAgCCQBrAwUHeHBDcmFmdAgFBm1lcmdlZAJfMgUFTVVMVDgFA25pbAUDbmlsCQCUCgIFA25pbAkAlQoDBQZyZXN1bHQFDHByb2xvZ1Jlc3VsdAULc3RhdHNSZXN1bHQBaQERc2V0V2FyZWhvdXNlT3JkZXICC25ld09yZGVyU3RyC2xhbmRBc3NldElkBAR1c2VyCAUBaQxvcmlnaW5DYWxsZXIEBGFkZHIJAKUIAQUEdXNlcgQGcmVzdWx0AwkBAiE9AgUEdXNlcgUMcmVzdENvbnRyYWN0CQEMY2hlY2tCbG9ja2VkAAcEBWFzc2V0CQEFdmFsdWUBCQDsBwEJANkEAQULbGFuZEFzc2V0SWQDCQEBIQEJAQlpc0RlZmluZWQBCQCaCAIFD3N0YWtpbmdDb250cmFjdAkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAkAAgEJAKwCAgkArAICAgRORlQgCAUFYXNzZXQEbmFtZQIOIGlzIG5vdCBzdGFrZWQEBW93bmVyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUPc3Rha2luZ0NvbnRyYWN0CQEVa2V5TGFuZEFzc2V0SWRUb093bmVyAQULbGFuZEFzc2V0SWQJAKwCAgkArAICAgRORlQgCAUFYXNzZXQEbmFtZQIMIGlzIG9ycGhhbmVkAwMJAQIhPQIFBHVzZXIFDHJlc3RDb250cmFjdAkBAiE9AgUFb3duZXIFBGFkZHIHCQACAQkArAICBQpMQU5EUFJFRklYAg0gaXMgbm90IHlvdXJzBAhuZXdPcmRlcgkAvAkCBQtuZXdPcmRlclN0cgIBOgQCd2gJAQhhc1N0cmluZwEJAPwHBAUPc3Rha2luZ0NvbnRyYWN0AhRnZXRXYXJlaG91c2VSRUFET05MWQkAzAgCBQtsYW5kQXNzZXRJZAUDbmlsBQNuaWwECWN1cnJlbnRXaAkAvAkCBQJ3aAIBOgQEbG9mdAkAtQkCCQCRAwIFCWN1cnJlbnRXaAUJd2hJZHhMT0ZUAgFfBAd3aFRvdGFsCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEbG9mdAUIdm9sVG90YWwEBm9yZEtleQkBDmtleU9yZGVyQnlMYW5kAQULbGFuZEFzc2V0SWQECmN1cnJlbnRPcmQJAQhnZXRPcmRlcgEFBm9yZEtleQQBegkBC3NldEludGVybmFsAwUJY3VycmVudFdoBQpjdXJyZW50T3JkBQhuZXdPcmRlcgQLYnV5Vm9sU2FsZG8IBQF6Al80BAxzZWxsVm9sU2FsZG8IBQF6Al81BAp3aE9jY3VwaWVkCAUBegJfNwQId2hMb2NrZWQJAGQCBQtidXlWb2xTYWxkbwUMc2VsbFZvbFNhbGRvBAZ3aEZyZWUJAGUCCQBlAgUHd2hUb3RhbAUKd2hPY2N1cGllZAUId2hMb2NrZWQDCQBmAgAABQZ3aEZyZWUJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAhNBdHRlbXB0IHRvIHJlc2VydmUgCQCkAwEFC2J1eVZvbFNhbGRvAhsgc3BhY2UgZm9yIGJ1eSBvcmRlcnMsIGFuZCAJAKQDAQUMc2VsbFZvbFNhbGRvAiUgc3BhY2UgZm9yIHNlbGwgb3JkZXJzIChhbmQgb2NjdXBpZWQ9CQCkAwEFCndoT2NjdXBpZWQCHyksIGxlYWRzIHRvIG5lZ2F0aXZlIGZyZWUgc3BhY2UEBXdoU3RyCQC6CQIJAMwIAgkAkQMCBQljdXJyZW50V2gFC3doSWR4TGV2ZWxzCQDMCAIJALkJAggFAXoCXzECAV8JAMwIAgkAuQkCCAUBegJfMgIBXwkAzAgCCQC6CQIIBQF6Al8zAgFfCQDMCAIJAKQDAQUId2hMb2NrZWQFA25pbAIBOgQGd2hTYXZlCQEIYXNTdHJpbmcBCQD8BwQFD3N0YWtpbmdDb250cmFjdAINc2F2ZVdhcmVob3VzZQkAzAgCBQV3aFN0cgkAzAgCBQtsYW5kQXNzZXRJZAUDbmlsBQNuaWwECHVzZFNhbGRvCAUBegJfNgQHYWN0aW9ucwMJAGYCBQh1c2RTYWxkbwAAAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQIiZXhhY3RseSAxIHBheW1lbnQgbXVzdCBiZSBhdHRhY2hlZAQDcG10CQCRAwIIBQFpCHBheW1lbnRzAAAEA2FtdAgFA3BtdAZhbW91bnQECnBtdEFzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAggFA3BtdAdhc3NldElkAh5XQVZFUyBjYW4ndCBiZSB1c2VkIGFzIHBheW1lbnQDCQECIT0CBQpwbXRBc3NldElkBQt1c2R0QXNzZXRJZAkAAgECE1VTRFQgcGF5bWVudHMgb25seSEDCQECIT0CBQNhbXQFCHVzZFNhbGRvCQACAQkArAICAhJQYXltZW50IG5lZWRlZCBpcyAJAKQDAQUIdXNkU2FsZG8JAMwIAgkBC1N0cmluZ0VudHJ5AgUGb3JkS2V5BQtuZXdPcmRlclN0cgUDbmlsAwkAAAIFCHVzZFNhbGRvAAADCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhJObyBwYXltZW50cyBuZWVkZWQJAMwIAgkBC1N0cmluZ0VudHJ5AgUGb3JkS2V5BQtuZXdPcmRlclN0cgUDbmlsAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQISTm8gcGF5bWVudHMgbmVlZGVkCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJARFAZXh0ck5hdGl2ZSgxMDYyKQEFBW93bmVyCQEBLQEFCHVzZFNhbGRvBQt1c2R0QXNzZXRJZAkAzAgCCQELU3RyaW5nRW50cnkCBQZvcmRLZXkFC25ld09yZGVyU3RyBQNuaWwJAJQKAgUHYWN0aW9ucwkAlAoCBQZyZXN1bHQFBndoU2F2ZQFpARRhY2NlcHRXYXJlaG91c2VPcmRlcgMKYnBPcmRlclN0cg9zaG9wTGFuZEFzc2V0SWQLZHVja0Fzc2V0SWQEDHByb2xvZ1Jlc3VsdAkBBnByb2xvZwAEBmNhbGxlcggFAWkMb3JpZ2luQ2FsbGVyBApjYWxsZXJBZGRyCQClCAEFBmNhbGxlcgQRc3Rha2VkRHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQ9zdGFraW5nQ29udHJhY3QJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFCmNhbGxlckFkZHICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQEC2N1ckxvY2F0aW9uCQELdmFsdWVPckVsc2UCCQCdCAIFD3N0YWtpbmdDb250cmFjdAkBD2tleUR1Y2tMb2NhdGlvbgEFEXN0YWtlZER1Y2tBc3NldElkBQ9ERUZBVUxUTE9DQVRJT04EA2xvYwkAtQkCCQEFdmFsdWUBBQtjdXJMb2NhdGlvbgIBXwMJAQIhPQIJAJEDAgUDbG9jBQpsb2NJZHhUeXBlAgFMCQACAQkArAICCQCsAgICFkR1Y2sgbG9jYXRpb24gdHlwZSBpcyAJAJEDAgUDbG9jBQpsb2NJZHhUeXBlAhEsIGJ1dCBzaG91bGQgYmUgTAMJAQIhPQIFEXN0YWtlZER1Y2tBc3NldElkBQtkdWNrQXNzZXRJZAkAAgEJAKwCAgkArAICCQCsAgICFFlvdXIgc3Rha2VkIGR1Y2sgaXMgBRFzdGFrZWREdWNrQXNzZXRJZAINLCBidXQgcGFzc2VkIAULZHVja0Fzc2V0SWQEBWJwS2V5CQERa2V5QmFja3BhY2tCeUR1Y2sBBQtkdWNrQXNzZXRJZAQLY3VycmVudFBhY2sJAQtnZXRCYWNrcGFjawEFBWJwS2V5BAlicFJlc0xpc3QJALUJAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhSZXMCAV8ECWJwTWF0TGlzdAkAtQkCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeE1hdAIBXwQKYnBQcm9kTGlzdAMJAAACCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QCAAUDbmlsCQC8CQIJAJEDAgULY3VycmVudFBhY2sFCWJwSWR4UHJvZAIBXwQNJHQwNTI5NDY1MzE4NgkBFWFjY2VwdFNob3BPcmRlckNvbW1vbgYFD3Nob3BMYW5kQXNzZXRJZAUKY2FsbGVyQWRkcgUKYnBPcmRlclN0cgUJYnBSZXNMaXN0BQlicE1hdExpc3QFCmJwUHJvZExpc3QECnNob3BBY3Rpb24IBQ0kdDA1Mjk0NjUzMTg2Al8xBApuZXdVc2VyUmVzCAUNJHQwNTI5NDY1MzE4NgJfMgQKbmV3VXNlck1hdAgFDSR0MDUyOTQ2NTMxODYCXzMEC25ld1VzZXJQcm9kCAUNJHQwNTI5NDY1MzE4NgJfNAQNdXNkV2gyQnBTYWxkbwgFDSR0MDUyOTQ2NTMxODYCXzUEDXVzZEJwMldoU2FsZG8IBQ0kdDA1Mjk0NjUzMTg2Al82BAh4cEFtb3VudAgFDSR0MDUyOTQ2NTMxODYCXzcEDXNob3BMYW5kT3duZXIIBQ0kdDA1Mjk0NjUzMTg2Al84BApzaG9wV2hTYXZlCAUNJHQwNTI5NDY1MzE4NgJfOQQOYWNjU3RhdHNSZXN1bHQIBQ0kdDA1Mjk0NjUzMTg2A18xMAQIYWN0aW9uczEJAMwIAgUKc2hvcEFjdGlvbgkBEHNob3AydXNlckFjdGlvbnMDBQ11c2RXaDJCcFNhbGRvBQpjYWxsZXJBZGRyAAAECGFjdGlvbnMyCQEQdXNlcjJzaG9wQWN0aW9ucwQFDXVzZEJwMldoU2FsZG8IBQFpCHBheW1lbnRzBQ1zaG9wTGFuZE93bmVyAAAECG5ld0JwU3RyCQC6CQIJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUKYnBJZHhMZXZlbAkAzAgCCQC5CQIFCm5ld1VzZXJSZXMCAV8JAMwIAgkAuQkCBQpuZXdVc2VyTWF0AgFfCQDMCAIJALoJAgULbmV3VXNlclByb2QCAV8FA25pbAIBOgQGYnBTYXZlCQEIYXNTdHJpbmcBCQD8BwQFD3N0YWtpbmdDb250cmFjdAIOdXBkYXRlQmFja3BhY2sJAMwIAgULZHVja0Fzc2V0SWQJAMwIAgUIbmV3QnBTdHIFA25pbAUDbmlsBA9kdWNrU3RhdHNSZXN1bHQJAQVhc0ludAEJAPwHBAUPc3Rha2luZ0NvbnRyYWN0Ag91cGRhdGVEdWNrU3RhdHMJAMwIAgULZHVja0Fzc2V0SWQJAMwIAgkAawMFBnhwU2hvcAUIeHBBbW91bnQFBU1VTFQ4BQNuaWwFA25pbAkAlAoCCQDOCAIFCGFjdGlvbnMxBQhhY3Rpb25zMgkAlwoFBQxwcm9sb2dSZXN1bHQFCnNob3BXaFNhdmUFBmJwU2F2ZQUPZHVja1N0YXRzUmVzdWx0BQ5hY2NTdGF0c1Jlc3VsdAFpARthY2NlcHRTaG9wT3JkZXJEdWNrRGVsaXZlcnkCCG9yZGVyU3RyD3Nob3BMYW5kQXNzZXRJZAMJAQEhAQURS1NfQUxMT1dfREVMSVZFUlkJAAIBAh9EZWxpdmVyeSBmZWF0dXJlIGlzIHR1cm5lZCBvZmYhBAxwcm9sb2dSZXN1bHQJAQZwcm9sb2cABAZjYWxsZXIIBQFpDG9yaWdpbkNhbGxlcgQKY2FsbGVyQWRkcgkApQgBBQZjYWxsZXIEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUPc3Rha2luZ0NvbnRyYWN0CQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQpjYWxsZXJBZGRyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkBAVicEtleQkBEWtleUJhY2twYWNrQnlEdWNrAQULZHVja0Fzc2V0SWQEC2N1cnJlbnRQYWNrCQELZ2V0QmFja3BhY2sBBQVicEtleQQJYnBSZXNMaXN0CQC1CQIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4UmVzAgFfBAlicE1hdExpc3QJALUJAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhNYXQCAV8ECmJwUHJvZExpc3QDCQAAAgkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kAgAFA25pbAkAvAkCCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QCAV8EDSR0MDU0NjI1NTQ4NjMJARVhY2NlcHRTaG9wT3JkZXJDb21tb24GBQ9zaG9wTGFuZEFzc2V0SWQFCmNhbGxlckFkZHIFCG9yZGVyU3RyBQlicFJlc0xpc3QFCWJwTWF0TGlzdAUKYnBQcm9kTGlzdAQKc2hvcEFjdGlvbggFDSR0MDU0NjI1NTQ4NjMCXzEECm5ld1VzZXJSZXMIBQ0kdDA1NDYyNTU0ODYzAl8yBApuZXdVc2VyTWF0CAUNJHQwNTQ2MjU1NDg2MwJfMwQLbmV3VXNlclByb2QIBQ0kdDA1NDYyNTU0ODYzAl80BA11c2RXaDJCcFNhbGRvCAUNJHQwNTQ2MjU1NDg2MwJfNQQNdXNkQnAyV2hTYWxkbwgFDSR0MDU0NjI1NTQ4NjMCXzYECHhwQW1vdW50CAUNJHQwNTQ2MjU1NDg2MwJfNwQNc2hvcExhbmRPd25lcggFDSR0MDU0NjI1NTQ4NjMCXzgECnNob3BXaFNhdmUIBQ0kdDA1NDYyNTU0ODYzAl85BA5hY2NTdGF0c1Jlc3VsdAgFDSR0MDU0NjI1NTQ4NjMDXzEwBA9kZWxpdmVyeUZlZVBhcnQJAGsDCQBkAgUNdXNkQnAyV2hTYWxkbwUNdXNkV2gyQnBTYWxkbwUMREVMSVZFUllfRkVFBQVNVUxUNgQLZGVsaXZlcnlGZWUDCQBmAgUVTUlOX1VTRFRfRkVFX0RFTElWRVJZBQ9kZWxpdmVyeUZlZVBhcnQFFU1JTl9VU0RUX0ZFRV9ERUxJVkVSWQUPZGVsaXZlcnlGZWVQYXJ0BAhzcGVudEZlZQkAawMFC2RlbGl2ZXJ5RmVlBQ11c2RCcDJXaFNhbGRvCQBkAgUNdXNkQnAyV2hTYWxkbwUNdXNkV2gyQnBTYWxkbwQLcmVjZWl2ZWRGZWUJAGUCBQtkZWxpdmVyeUZlZQUIc3BlbnRGZWUECWZ1bmRUb3RhbAkBC3ZhbHVlT3JFbHNlAgkAnwgBBQ9kZWxpdmVyeUZ1bmRLZXkAAAQIYWN0aW9uczEJAMwIAgUKc2hvcEFjdGlvbgkBEHNob3AydXNlckFjdGlvbnMDBQ11c2RXaDJCcFNhbGRvBQpjYWxsZXJBZGRyBQtyZWNlaXZlZEZlZQQIYWN0aW9uczIJARB1c2VyMnNob3BBY3Rpb25zBAUNdXNkQnAyV2hTYWxkbwgFAWkIcGF5bWVudHMFDXNob3BMYW5kT3duZXIFCHNwZW50RmVlBAhuZXdCcFN0cgkAugkCCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCmJwSWR4TGV2ZWwJAMwIAgkAuQkCBQpuZXdVc2VyUmVzAgFfCQDMCAIJALkJAgUKbmV3VXNlck1hdAIBXwkAzAgCCQC6CQIFC25ld1VzZXJQcm9kAgFfBQNuaWwCAToEBmJwU2F2ZQkBCGFzU3RyaW5nAQkA/AcEBQ9zdGFraW5nQ29udHJhY3QCDnVwZGF0ZUJhY2twYWNrCQDMCAIFC2R1Y2tBc3NldElkCQDMCAIFCG5ld0JwU3RyBQNuaWwFA25pbAQPZHVja1N0YXRzUmVzdWx0CQEFYXNJbnQBCQD8BwQFD3N0YWtpbmdDb250cmFjdAIPdXBkYXRlRHVja1N0YXRzCQDMCAIFC2R1Y2tBc3NldElkCQDMCAIJAGsDBQZ4cFNob3AFCHhwQW1vdW50BQVNVUxUOAUDbmlsBQNuaWwJAJQKAgkAzQgCCQDOCAIFCGFjdGlvbnMxBQhhY3Rpb25zMgkBDEludGVnZXJFbnRyeQIFD2RlbGl2ZXJ5RnVuZEtleQkAZAIFCWZ1bmRUb3RhbAULZGVsaXZlcnlGZWUJAJcKBQUMcHJvbG9nUmVzdWx0BQpzaG9wV2hTYXZlBQZicFNhdmUFD2R1Y2tTdGF0c1Jlc3VsdAUOYWNjU3RhdHNSZXN1bHQBaQEbYWNjZXB0U2hvcE9yZGVyTGFuZERlbGl2ZXJ5AwhvcmRlclN0cg9zaG9wTGFuZEFzc2V0SWQNbXlMYW5kQXNzZXRJZAMJAQEhAQURS1NfQUxMT1dfREVMSVZFUlkJAAIBAh9EZWxpdmVyeSBmZWF0dXJlIGlzIHR1cm5lZCBvZmYhBAxwcm9sb2dSZXN1bHQJAQZwcm9sb2cABAZjYWxsZXIIBQFpDG9yaWdpbkNhbGxlcgQKY2FsbGVyQWRkcgkApQgBBQZjYWxsZXIEBWFzc2V0CQEFdmFsdWUBCQDsBwEJANkEAQUNbXlMYW5kQXNzZXRJZAMJAQEhAQkBCWlzRGVmaW5lZAEJAJoIAgUPc3Rha2luZ0NvbnRyYWN0CQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFDW15TGFuZEFzc2V0SWQJAAIBCQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCDiBpcyBub3Qgc3Rha2VkBAVvd25lcgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFD3N0YWtpbmdDb250cmFjdAkBFWtleUxhbmRBc3NldElkVG9Pd25lcgEFDW15TGFuZEFzc2V0SWQJAKwCAgkArAICAgRORlQgCAUFYXNzZXQEbmFtZQIMIGlzIG9ycGhhbmVkAwkBAiE9AgUFb3duZXIFCmNhbGxlckFkZHIJAAIBCQCsAgIFCkxBTkRQUkVGSVgCDSBpcyBub3QgeW91cnMEAndoCQEIYXNTdHJpbmcBCQD8BwQFD3N0YWtpbmdDb250cmFjdAIUZ2V0V2FyZWhvdXNlUkVBRE9OTFkJAMwIAgUNbXlMYW5kQXNzZXRJZAUDbmlsBQNuaWwECWN1cnJlbnRXaAkAvAkCBQJ3aAIBOgQHcmVzTGlzdAkAtQkCCQCRAwIFCWN1cnJlbnRXaAUId2hJZHhSZXMCAV8EB21hdExpc3QJALUJAgkAkQMCBQljdXJyZW50V2gFCHdoSWR4TWF0AgFfBAhwcm9kTGlzdAMJAAACCQCRAwIFCWN1cnJlbnRXaAUJd2hJZHhQcm9kAgAFA25pbAkAtQkCCQCRAwIFCWN1cnJlbnRXaAUJd2hJZHhQcm9kAgFfBA0kdDA1NzEwMjU3MzM0CQEVYWNjZXB0U2hvcE9yZGVyQ29tbW9uBgUPc2hvcExhbmRBc3NldElkBQpjYWxsZXJBZGRyBQhvcmRlclN0cgUHcmVzTGlzdAUHbWF0TGlzdAUIcHJvZExpc3QECnNob3BBY3Rpb24IBQ0kdDA1NzEwMjU3MzM0Al8xBApuZXdVc2VyUmVzCAUNJHQwNTcxMDI1NzMzNAJfMgQKbmV3VXNlck1hdAgFDSR0MDU3MTAyNTczMzQCXzMEC25ld1VzZXJQcm9kCAUNJHQwNTcxMDI1NzMzNAJfNAQNdXNkV2gyQnBTYWxkbwgFDSR0MDU3MTAyNTczMzQCXzUEDXVzZEJwMldoU2FsZG8IBQ0kdDA1NzEwMjU3MzM0Al82BAh4cEFtb3VudAgFDSR0MDU3MTAyNTczMzQCXzcEDXNob3BMYW5kT3duZXIIBQ0kdDA1NzEwMjU3MzM0Al84BApzaG9wV2hTYXZlCAUNJHQwNTcxMDI1NzMzNAJfOQQOYWNjU3RhdHNSZXN1bHQIBQ0kdDA1NzEwMjU3MzM0A18xMAQPZGVsaXZlcnlGZWVQYXJ0CQBrAwkAZAIFDXVzZEJwMldoU2FsZG8FDXVzZFdoMkJwU2FsZG8FDERFTElWRVJZX0ZFRQUFTVVMVDYEC2RlbGl2ZXJ5RmVlAwkAZgIFFU1JTl9VU0RUX0ZFRV9ERUxJVkVSWQUPZGVsaXZlcnlGZWVQYXJ0BRVNSU5fVVNEVF9GRUVfREVMSVZFUlkFD2RlbGl2ZXJ5RmVlUGFydAQIc3BlbnRGZWUJAGsDBQtkZWxpdmVyeUZlZQUNdXNkQnAyV2hTYWxkbwkAZAIFDXVzZEJwMldoU2FsZG8FDXVzZFdoMkJwU2FsZG8EC3JlY2VpdmVkRmVlCQBlAgULZGVsaXZlcnlGZWUFCHNwZW50RmVlBAlmdW5kVG90YWwJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUPZGVsaXZlcnlGdW5kS2V5AAAECGFjdGlvbnMxCQDMCAIFCnNob3BBY3Rpb24JARBzaG9wMnVzZXJBY3Rpb25zAwUNdXNkV2gyQnBTYWxkbwUKY2FsbGVyQWRkcgULcmVjZWl2ZWRGZWUECGFjdGlvbnMyCQEQdXNlcjJzaG9wQWN0aW9ucwQFDXVzZEJwMldoU2FsZG8IBQFpCHBheW1lbnRzBQ1zaG9wTGFuZE93bmVyBQhzcGVudEZlZQQFd2hTdHIJALoJAgkAzAgCCQCRAwIFCWN1cnJlbnRXaAULd2hJZHhMZXZlbHMJAMwIAgkAuQkCBQpuZXdVc2VyUmVzAgFfCQDMCAIJALkJAgUKbmV3VXNlck1hdAIBXwkAzAgCCQC5CQIFC25ld1VzZXJQcm9kAgFfCQDMCAIJAJEDAgUJY3VycmVudFdoBQl3aElkeExPRlQFA25pbAIBOgQGd2hTYXZlCQEIYXNTdHJpbmcBCQD8BwQFD3N0YWtpbmdDb250cmFjdAINc2F2ZVdhcmVob3VzZQkAzAgCBQV3aFN0cgkAzAgCBQ1teUxhbmRBc3NldElkBQNuaWwFA25pbAQLc3RhdHNSZXN1bHQJAQVhc0ludAEJAPwHBAUPc3Rha2luZ0NvbnRyYWN0Ag51cGRhdGVBY2NTdGF0cwkAzAgCBQpjYWxsZXJBZGRyCQDMCAIJAGsDBQZ4cFNob3AFCHhwQW1vdW50BQVNVUxUOAUDbmlsBQNuaWwJAJQKAgkAzQgCCQDOCAIFCGFjdGlvbnMxBQhhY3Rpb25zMgkBDEludGVnZXJFbnRyeQIFD2RlbGl2ZXJ5RnVuZEtleQkAZAIFCWZ1bmRUb3RhbAULZGVsaXZlcnlGZWUJAJcKBQUMcHJvbG9nUmVzdWx0BQpzaG9wV2hTYXZlBQZ3aFNhdmUFC3N0YXRzUmVzdWx0BQ5hY2NTdGF0c1Jlc3VsdAFpARBzZWxsUHJvZHVjdHNUb0VTAQdhbW91bnRzBAxwcm9sb2dSZXN1bHQJAQZwcm9sb2cAAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQISTm8gcGF5bWVudHMgbmVlZGVkBAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFD3N0YWtpbmdDb250cmFjdAkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQkApQgBCAUBaQZjYWxsZXICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQEC2N1ckxvY2F0aW9uCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUPc3Rha2luZ0NvbnRyYWN0CQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQFD0RFRkFVTFRMT0NBVElPTgIBXwMJAQIhPQIJAJEDAgULY3VyTG9jYXRpb24FCmxvY0lkeFR5cGUCAUEJAAIBCQCsAgICLUR1Y2sgbG9jYXRpb24gdHlwZSBzaG91bGQgYmUgQWlycG9ydCwgYnV0IGlzIAkAkQMCBQtjdXJMb2NhdGlvbgUKbG9jSWR4VHlwZQQLY3VycmVudFBhY2sJAQtnZXRCYWNrcGFjawEJARFrZXlCYWNrcGFja0J5RHVjawEFC2R1Y2tBc3NldElkBAhwcm9kTGlzdAMJAAACCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QCAAUDbmlsCQC8CQIJAJEDAgULY3VycmVudFBhY2sFCWJwSWR4UHJvZAIBXwQFZXNLZXkJAQ5rZXlFc1dhcmVob3VzZQAECGV4aXN0U3RyCQCiCAEFBWVzS2V5BAxleGlzdEFtb3VudHMDCQEJaXNEZWZpbmVkAQUIZXhpc3RTdHIJALwJAgkBBXZhbHVlAQUIZXhpc3RTdHICAV8FA25pbAoBCG1vdmVQcm9kAgNhY2MJcmVjaXBlU3RyBAFqCAUDYWNjAl8xBAhxdWFudGl0eQMJAGYCCQCQAwEFB2Ftb3VudHMFAWoJAJEDAgUHYW1vdW50cwUBagAAAwkAZgIAAAUIcXVhbnRpdHkJAAIBAhtRdWFudGl0eSBjYW5ub3QgYmUgbmVnYXRpdmUEBnJlY2lwZQkAtQkCBQlyZWNpcGVTdHICAV8DCQECIT0CCQCQAwEFBnJlY2lwZQUKUkVDSVBFU0laRQkAAgEJAKwCAgIXRmF0YWw6IHVua25vd24gcmVjaXBlOiAFCXJlY2lwZVN0cgQJbWF4QW1vdW50CQBoAgUNRVNNQVhQQUNLQUdFUwUOUFJPRFVDVFBLR1NJWkUEC2V4aXN0QW1vdW50AwkAZgIJAJADAQUMZXhpc3RBbW91bnRzBQFqCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUMZXhpc3RBbW91bnRzBQFqAAAEBmNhbkJ1eQkAZQIFCW1heEFtb3VudAULZXhpc3RBbW91bnQDCQBmAgUIcXVhbnRpdHkFBmNhbkJ1eQkAAgEJAKwCAgkArAICCQCsAgICF1dhcmVob3VzZSBjYW4gYnV5IG9ubHkgCQCkAwEFBmNhbkJ1eQIEIG9mIAkAkQMCBQlwcm9kVHlwZXMFAWoECHRvdGFsTWF0CQESZ2V0UmVjaXBlTWF0ZXJpYWxzAQUGcmVjaXBlBAl1bml0UHJpY2UJAGsDCQBoAgUIdG90YWxNYXQFCUVTQlVZQ09FRgUQUkVTT1VSQ0VQUklDRU1JTgkAaAIFBU1VTFQ4BQ5QUk9EVUNUUEtHU0laRQQMYnBQcm9kQW1vdW50AwkAZgIJAJADAQUIcHJvZExpc3QFAWoJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQhwcm9kTGlzdAUBagAAAwkAZgIFCHF1YW50aXR5BQxicFByb2RBbW91bnQJAAIBCQCsAgIJAKwCAgkArAICAg5Zb3UgaGF2ZSBvbmx5IAkApAMBBQxicFByb2RBbW91bnQCBCBvZiAJAJEDAgUJcHJvZFR5cGVzBQFqCQCXCgUJAGQCBQFqAAEJAGQCCAUDYWNjAl8yCQBoAgUJdW5pdFByaWNlBQhxdWFudGl0eQkAzQgCCAUDYWNjAl8zCQCkAwEJAGUCBQxicFByb2RBbW91bnQFCHF1YW50aXR5CQDNCAIIBQNhY2MCXzQJAKQDAQkAZAIFC2V4aXN0QW1vdW50BQhxdWFudGl0eQkAZAIIBQNhY2MCXzUJAGgCBQh0b3RhbE1hdAUIcXVhbnRpdHkEBm1lcmdlZAoAAiRsBRBwcm9kdWN0aW9uTWF0cml4CgACJHMJAJADAQUCJGwKAAUkYWNjMAkAlwoFAAAAAAUDbmlsBQNuaWwAAAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEIbW92ZVByb2QCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDUwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAhACIAIwAkACUAJgAnACgAKQAqACsALAAtAC4ALwAwADEAMgQIbmV3QnBTdHIJALoJAgkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQpicElkeExldmVsCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4UmVzCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4TWF0CQDMCAIJALoJAggFBm1lcmdlZAJfMwIBXwUDbmlsAgE6BAZicFNhdmUJAQhhc1N0cmluZwEJAPwHBAUPc3Rha2luZ0NvbnRyYWN0Ag51cGRhdGVCYWNrcGFjawkAzAgCBQtkdWNrQXNzZXRJZAkAzAgCBQhuZXdCcFN0cgUDbmlsBQNuaWwEC3N0YXRzUmVzdWx0CQEFYXNJbnQBCQD8BwQFD3N0YWtpbmdDb250cmFjdAIPdXBkYXRlRHVja1N0YXRzCQDMCAIFC2R1Y2tBc3NldElkCQDMCAIJAGsDBQp4cFNlbGxUb0VzCAUGbWVyZ2VkAl81CQBoAgUFTVVMVDgACgUDbmlsBQNuaWwJAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCBQVlc0tleQkAugkCCAUGbWVyZ2VkAl80AgFfCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcggFBm1lcmdlZAJfMgULdXNkdEFzc2V0SWQFA25pbAkAlQoDBQZicFNhdmUFDHByb2xvZ1Jlc3VsdAULc3RhdHNSZXN1bHQBaQEPdXBkYXRlRXNTdG9yYWdlAQpuZXdTdG9yYWdlAwkBAiE9AggFAWkGY2FsbGVyBQ9zdGFraW5nQ29udHJhY3QJAAIBAhFQZXJtaXNzaW9uIGRlbmllZAkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQ5rZXlFc1dhcmVob3VzZQAFCm5ld1N0b3JhZ2UFA25pbAUKbmV3U3RvcmFnZQFpARR1cGRhdGVEZWxpdmVyeUxvY2tlZAEJbmV3QW1vdW50AwkBAiE9AggFAWkGY2FsbGVyBQ9zdGFraW5nQ29udHJhY3QJAAIBAhFQZXJtaXNzaW9uIGRlbmllZAkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRFkZWxpdmVyeUxvY2tlZEtleQUJbmV3QW1vdW50BQNuaWwFCW5ld0Ftb3VudAFpARJzZW5kRGVsaXZlcnlSZXdhcmQBBGFkZHIDCQECIT0CCAUBaQZjYWxsZXIFD3N0YWtpbmdDb250cmFjdAkAAgECEVBlcm1pc3Npb24gZGVuaWVkBAlmdW5kVG90YWwJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUPZGVsaXZlcnlGdW5kS2V5AAAEC2xvY2tlZFRvdGFsCQELdmFsdWVPckVsc2UCCQCfCAEFEWRlbGl2ZXJ5TG9ja2VkS2V5AAAJAJQKAgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQERQGV4dHJOYXRpdmUoMTA2MikBBQRhZGRyBRVNSU5fVVNEVF9GRUVfREVMSVZFUlkFC3VzZHRBc3NldElkCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQ9kZWxpdmVyeUZ1bmRLZXkJAGUCBQlmdW5kVG90YWwFFU1JTl9VU0RUX0ZFRV9ERUxJVkVSWQkAzAgCCQEMSW50ZWdlckVudHJ5AgURZGVsaXZlcnlMb2NrZWRLZXkJAGUCBQtsb2NrZWRUb3RhbAUVTUlOX1VTRFRfRkVFX0RFTElWRVJZBQNuaWwFFU1JTl9VU0RUX0ZFRV9ERUxJVkVSWQCQpMla", "height": 2769751, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 3iCeXZ1zcNk6ToaRLGAxynSPpCE9t8pLiMT2sZ3KBo5K Next: DvVvyG9sqjPTU9da2MW29vLvDsT3PB8anjZd2Xqp6TnB Diff:
OldNewDifferences
716716 let cL = [0, 0, 0, 0, 0, 0]
717717 func dM (bF,dN) = {
718718 let dO = cH(cI, dN, dL, cL)
719- $Tuple3((bF._1 :+ dO._1), (bF._2 + dO._3), (bF._3 + dO._4))
719+ $Tuple3((bF._1 ++ dO._1), (bF._2 + dO._3), (bF._3 + dO._4))
720720 }
721721
722722 let dP = {
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 10000
55
66 let b = 10000
77
88 let c = 10000
99
1010 let d = 10000
1111
1212 let e = "LAND"
1313
1414 let f = 6
1515
1616 let g = "Africa_F_Africa"
1717
1818 let h = 39637
1919
2020 let i = 10
2121
2222 let j = 4
2323
2424 let k = 50000
2525
2626 let l = 75000
2727
2828 let m = ["Oil", "Ore", "Wood", "Sand", "Clay", "Organic"]
2929
3030 let n = ["Fuel", "Metal", "Plank", "Glass", "Plastic", "Protein"]
3131
3232 let o = ["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"]
3333
3434 let p = ["Americas", "Europe", "Asia", "Africa", "Oceania"]
3535
3636 let q = 10000000
3737
3838 let r = ["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_"]
3939
4040 let s = 6
4141
4242 let t = 7
4343
4444 let u = 11
4545
4646 let v = 10
4747
4848 let w = 0
4949
5050 let x = 1
5151
5252 let y = 2
5353
5454 let z = 3
5555
5656 let A = 4
5757
5858 let B = 0
5959
6060 let C = 3
6161
6262 let D = 0
6363
6464 let E = 1
6565
6666 let F = 2
6767
6868 let G = 3
6969
7070 let H = 0
7171
7272 let I = 1
7373
7474 let J = 2
7575
7676 func K (L) = ("no_" + L)
7777
7878
7979 func M (L) = ("st_" + L)
8080
8181
8282 func N (O) = ("accRefBy_" + O)
8383
8484
8585 func P (Q) = ("stakedDuckByOwner_" + Q)
8686
8787
8888 func R (S) = ("backPack_" + S)
8989
9090
9191 func T (S) = ("duckLocation_" + S)
9292
9393
9494 func U (V) = ("landOrder_" + V)
9595
9696
9797 func W () = "emergencyWarehouseProducts"
9898
9999
100100 let X = "deliveryFund"
101101
102102 let Y = "deliveryLocked"
103103
104104 func Z (aa) = (parseIntValue(aa[s]) * q)
105105
106106
107107 let ab = true
108108
109109 let ac = take(drop(this.bytes, 1), 1)
110110
111111 let ad = {
112112 let ae = ac
113113 if ((base58'2W' == ae))
114114 then base58'9wc3LXNA4TEBsXyKtoLE9mrbDD7WMHXvXrCjZvabLAsi'
115115 else if ((base58'2T' == ae))
116116 then base58'6mWwf9mZBjVgkC54idpyaZLQfAosD914wT8fGf2iiY63'
117117 else throw("Unknown chain")
118118 }
119119
120120 let af = {
121121 let ae = ac
122122 if ((base58'2W' == ae))
123123 then "3PQCuvFbvh4LkPUnrnU1z3jnbA1p9m3WNhv"
124124 else if ((base58'2T' == ae))
125125 then "3MumkGGztCKAXpWDqxkddofqXSUbqQkvSJy"
126126 else throw("Unknown chain")
127127 }
128128
129129 let ag = "__"
130130
131131 let ah = 100000
132132
133133 let ai = 1000000
134134
135135 let aj = 100000000
136136
137137 let ak = 10000000000
138138
139139 let al = 100000
140140
141141 let am = [0, 1, 2, 3, 4, 5]
142142
143143 func an (ao,ap) = valueOrErrorMessage(getString(ao, ap), makeString(["mandatory ", toString(ao), ".", ap, " is not defined"], ""))
144144
145145
146146 let aq = 1
147147
148148 let ar = 6
149149
150150 let as = 8
151151
152152 func at () = "%s__restConfig"
153153
154154
155155 func au () = "%s__restAddr"
156156
157157
158158 func av (aw) = split_4C(an(aw, at()), ag)
159159
160160
161161 func ax (ay,az) = valueOrErrorMessage(addressFromString(ay[az]), ("Rest cfg doesn't contain address at index " + toString(az)))
162162
163163
164164 let aA = addressFromStringValue(valueOrElse(getString(this, au()), af))
165165
166166 let ay = av(aA)
167167
168168 let aB = ax(ay, aq)
169169
170170 let aC = ax(ay, ar)
171171
172172 let aD = ax(ay, as)
173173
174174 func aE (aF) = {
175175 let ae = aF
176176 if ($isInstanceOf(ae, "String"))
177177 then {
178178 let aG = ae
179179 aG
180180 }
181181 else throw("fail to cast into String")
182182 }
183183
184184
185185 func aH (aF) = {
186186 let ae = aF
187187 if ($isInstanceOf(ae, "Int"))
188188 then {
189189 let aI = ae
190190 aI
191191 }
192192 else throw("fail to cast into Int")
193193 }
194194
195195
196196 func aJ () = "contractsBlocked"
197197
198198
199199 func aK (aL,aM) = {
200200 let aN = pow(10, 0, aM, 0, 0, DOWN)
201201 let aO = toString((aL % aN))
202202 let aP = drop(toString(aN), (1 + size(aO)))
203203 (((toString((aL / aN)) + ".") + aP) + aO)
204204 }
205205
206206
207207 let aQ = 10000000000
208208
209209 let aR = 200
210210
211211 let aS = 300
212212
213213 let aT = 10000
214214
215215 let aU = 10000
216216
217217 let aV = 15000
218218
219219 func aW (aX,aY) = ((("factoryWhByContinentAndRes_" + aX) + "_") + toString(aY))
220220
221221
222222 let aZ = 0
223223
224224 let ba = 1
225225
226226 let bb = 2
227227
228228 func bc (bd) = {
229229 let be = split(valueOrElse(getString(bd), "0@0_0@0_0@0_0@0_0@0_0@0:0@0_0@0_0@0_0@0_0@0_0@0:"), ":")
230230 [if ((size(split(be[aZ], "_")) == f))
231231 then be[aZ]
232232 else "0@0_0@0_0@0_0@0_0@0_0@0", if ((size(split(be[ba], "_")) == f))
233233 then be[ba]
234234 else "0@0_0@0_0@0_0@0_0@0_0@0", be[bb]]
235235 }
236236
237237
238238 func bf (bg,bh,bi) = if (bi)
239239 then {
240240 let bj = if ((bg >= 0))
241241 then (((bg + bh) - 1) / bh)
242242 else -((((-(bg) + bh) - 1) / bh))
243243 (bj * aj)
244244 }
245245 else bg
246246
247247
248248 func bk (bl,aY,bg,bm) = {
249249 let bn = aW(bl, aY)
250250 let bo = valueOrElse(getInteger(bn), 0)
251251 let bp = if ((bo > aQ))
252252 then 0
253253 else if (((bo + bg) > aQ))
254254 then (aQ - bo)
255255 else bg
256256 let bq = (fraction(bp, ((aR * h) - fraction(((100 * bo) + (50 * bp)), h, aQ)), ak) + fraction((bg - bp), h, aj))
257257 let br = (bm - (bm / 100))
258258 if (((br * bg) > (bq * aj)))
259259 then throw((((((((((("Actual price = " + toString(bq)) + " / ") + toString(bg)) + " < minPrice = ") + toString(bm)) + ", (") + bl) + ", ") + m[aY]) + ")"))
260260 else $Tuple2(IntegerEntry(bn, (bo + bg)), bq)
261261 }
262262
263263
264264 func bs (bl,bt,bg,bu) = {
265265 let bn = aW(bl, bt)
266266 let bo = valueOrElse(getInteger(bn), 0)
267267 let bv = if ((bo > aQ))
268268 then min([bg, (bo - aQ)])
269269 else 0
270270 let bw = min([bo, (bg - bv)])
271271 let bx = (bw + bv)
272272 let by = (fraction(bw, ((aS * h) - fraction(((100 * bo) - (50 * bw)), h, aQ)), ak) + fraction(bv, (2 * h), aj))
273273 let bz = (bu + (bu / 100))
274274 if (((by * aj) > (bz * bx)))
275275 then throw((((((((((("Actual price = " + toString(by)) + " / ") + toString(bx)) + " > maxPrice = ") + toString(bu)) + ", (") + bl) + ", ") + n[bt]) + ")"))
276276 else $Tuple3(IntegerEntry(bn, (bo - bx)), by, bx)
277277 }
278278
279279
280280 func bA (bB) = {
281281 let be = split_4C(valueOrElse(getString(aB, bB), "0:0_0_0_0_0_0:0_0_0_0_0_0:"), ":")
282282 [toString(valueOrElse(parseInt(be[D]), 0)), if ((size(split(be[E], "_")) == f))
283283 then be[E]
284284 else "0_0_0_0_0_0", if ((size(split(be[F], "_")) == f))
285285 then be[F]
286286 else "0_0_0_0_0_0", be[G]]
287287 }
288288
289289
290290 func bC () = if (valueOrElse(getBoolean(aB, aJ()), false))
291291 then throw("Contracts are under maintenance")
292292 else unit
293293
294294
295295 func bD () = aH(invoke(aB, "saveLastTx", nil, nil))
296296
297297
298298 func bE (bF,bG) = {
299299 let bH = bF._1
300300 let bI = if ((size(bF._10) > bH))
301301 then bF._10[bH]
302302 else "0@0"
303303 let bJ = bF._8
304304 let bK = split(bI, "@")
305305 if ((size(bK) != 2))
306306 then throw("Incorrect order format, should be amount@price")
307307 else {
308308 let bL = parseIntValue(bK[0])
309309 let bM = parseIntValue(bK[1])
310310 let bN = if (bJ)
311311 then (bL * bM)
312312 else fraction(bL, bM, aj)
313313 let bO = bf(bL, v, bJ)
314314 let bP = if ((size(bF._6) > bH))
315315 then parseIntValue(bF._6[bH])
316316 else 0
317317 let bQ = split(if ((size(bF._7) > bH))
318318 then bF._7[bH]
319319 else "0@0", "@")
320320 let bR = parseIntValue(bQ[0])
321321 let bS = parseIntValue(bQ[1])
322322 if (if ((0 > bS))
323323 then true
324324 else (0 > bM))
325325 then throw("Price can't be negative")
326326 else {
327327 let bT = if (bJ)
328328 then (bR * bS)
329329 else fraction(bR, bS, aj)
330330 if ((bL == 0))
331331 then if ((bR > 0))
332332 then $Tuple10((bH + 1), (bF._2 :+ toString(bP)), bF._3, bF._4, (bF._5 - bT), bF._6, bF._7, bJ, (bF._9 + bf(bP, v, bJ)), bF._10)
333333 else $Tuple10((bH + 1), (bF._2 :+ toString((bP - bR))), bF._3, bF._4, bF._5, bF._6, bF._7, bJ, (bF._9 + bf((bP - bR), v, bJ)), bF._10)
334334 else if ((bL > 0))
335335 then if ((0 > bR))
336336 then $Tuple10((bH + 1), (bF._2 :+ toString((bP - bR))), (bF._3 + bO), bF._4, (bF._5 + bN), bF._6, bF._7, bJ, bf((bP - bR), v, bJ), bF._10)
337337 else $Tuple10((bH + 1), (bF._2 :+ toString(bP)), (bF._3 + bO), bF._4, ((bF._5 + bN) - bT), bF._6, bF._7, bJ, bf(bP, v, bJ), bF._10)
338338 else if ((0 > bR))
339339 then {
340340 let bU = (bR - bL)
341341 if ((0 > (bP - bU)))
342342 then throw((((("Attempt to take " + toString(bU)) + " from warehouse, but only ") + toString(bP)) + " available"))
343343 else $Tuple10((bH + 1), (bF._2 :+ toString((bP - bU))), bF._3, (bF._4 - bO), bF._5, bF._6, bF._7, bJ, bf((bP - bU), v, bJ), bF._10)
344344 }
345345 else if ((0 > (bP + bL)))
346346 then throw((((("Attempt to take " + toString(-(bL))) + " from warehouse, but only ") + toString(bP)) + " available"))
347347 else $Tuple10((bH + 1), (bF._2 :+ toString((bP + bL))), bF._3, (bF._4 - bO), (bF._5 - bT), bF._6, bF._7, bJ, bf((bP + bL), v, bJ), bF._10)
348348 }
349349 }
350350 }
351351
352352
353353 func bV (bW,bX,bY) = {
354354 let bZ = split(bW[x], "_")
355355 let ca = split(bW[y], "_")
356356 let cb = if ((bW[z] == ""))
357357 then nil
358358 else split_4C(bW[z], "_")
359359 let cc = split(bX[aZ], "_")
360360 let cd = split(bX[ba], "_")
361361 let ce = if ((bX[bb] == ""))
362362 then nil
363363 else split_4C(bX[bb], "_")
364364 if ((size(bY) != 3))
365365 then throw("newOrderStr should contain exactly 2 ':' separators")
366366 else {
367367 let cf = split(bY[0], "_")
368368 let cg = split(bY[1], "_")
369369 let ch = if ((bY[2] == ""))
370370 then nil
371371 else split_4C(bY[2], "_")
372372 if ((size(cf) != f))
373373 then throw("All 6 resources should be passed")
374374 else if ((size(cg) != f))
375375 then throw("All 6 materials should be passed")
376376 else {
377377 let ci = {
378378 let cj = m
379379 let ck = size(cj)
380380 let cl = $Tuple10(0, nil, 0, 0, 0, bZ, cc, false, 0, cf)
381381 func cm (cn,co) = if ((co >= ck))
382382 then cn
383383 else bE(cn, cj[co])
384384
385385 func cp (cn,co) = if ((co >= ck))
386386 then cn
387387 else throw("List size exceeds 6")
388388
389389 cp(cm(cm(cm(cm(cm(cm(cl, 0), 1), 2), 3), 4), 5), 6)
390390 }
391391 let bx = {
392392 let cj = n
393393 let ck = size(cj)
394394 let cl = $Tuple10(0, nil, ci._3, ci._4, ci._5, ca, cd, false, ci._9, cg)
395395 func cq (cn,co) = if ((co >= ck))
396396 then cn
397397 else bE(cn, cj[co])
398398
399399 func cr (cn,co) = if ((co >= ck))
400400 then cn
401401 else throw("List size exceeds 6")
402402
403403 cr(cq(cq(cq(cq(cq(cq(cl, 0), 1), 2), 3), 4), 5), 6)
404404 }
405405 let be = {
406406 let cj = o
407407 let ck = size(cj)
408408 let cl = $Tuple10(0, nil, bx._3, bx._4, bx._5, cb, ce, true, bx._9, ch)
409409 func cs (cn,co) = if ((co >= ck))
410410 then cn
411411 else bE(cn, cj[co])
412412
413413 func ct (cn,co) = if ((co >= ck))
414414 then cn
415415 else throw("List size exceeds 50")
416416
417417 ct(cs(cs(cs(cs(cs(cs(cs(cs(cs(cs(cs(cs(cs(cs(cs(cs(cs(cs(cs(cs(cs(cs(cs(cs(cs(cs(cs(cs(cs(cs(cs(cs(cs(cs(cs(cs(cs(cs(cs(cs(cs(cs(cs(cs(cs(cs(cs(cs(cs(cs(cl, 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)
418418 }
419419 $Tuple7(ci._2, bx._2, be._2, be._3, be._4, be._5, be._9)
420420 }
421421 }
422422 }
423423
424424
425425 func cu (bF,cv) = {
426426 let bH = bF._7
427427 let bJ = bF._12
428428 let cw = split(cv, "@")
429429 if ((size(cw) != 2))
430430 then throw("Incorrect order format, should be amount@price")
431431 else {
432432 let cx = parseIntValue(cw[0])
433433 let cy = parseIntValue(cw[1])
434434 if ((0 > cy))
435435 then throw("Price can't be negative")
436436 else {
437437 let cz = if (bJ)
438438 then (cx * cy)
439439 else fraction(cx, cy, aj)
440440 let cA = if ((size(bF._8) > bH))
441441 then parseIntValue(bF._8[bH])
442442 else 0
443443 let bP = if ((size(bF._9) > bH))
444444 then parseIntValue(bF._9[bH])
445445 else 0
446446 let cB = if ((size(bF._10) > bH))
447447 then bF._10[bH]
448448 else "0@0"
449449 let cC = split(cB, "@")
450450 let cD = parseIntValue(cC[0])
451451 let cE = parseIntValue(cC[1])
452452 if (if ((cx != 0))
453453 then (cy != cE)
454454 else false)
455455 then throw(((((("Prices of " + bF._11[bH]) + " don't match! WH price=") + toString(cE)) + ", your price=") + toString(cy)))
456456 else {
457457 let cF = if (bJ)
458458 then (cD * cE)
459459 else fraction(cD, cE, aj)
460460 let cG = bf(cx, v, bJ)
461461 if ((cx == 0))
462462 then $Tuple13((bF._1 :+ toString(bP)), (bF._2 :+ cB), (bF._3 :+ toString(cA)), bF._4, bF._5, bF._6, (bF._7 + 1), bF._8, bF._9, bF._10, bF._11, bJ, bF._13)
463463 else if ((cx > 0))
464464 then if ((0 > cD))
465465 then if ((cx > -(cD)))
466466 then throw(((((("Attempt to buy " + toString(cx)) + " of ") + bF._11[bH]) + ", but warehouse only sells ") + toString(-(cD))))
467467 else $Tuple13((bF._1 :+ toString(bP)), (bF._2 :+ ((toString((cD + cx)) + "@") + toString(cE))), (bF._3 :+ toString((cA + cx))), (bF._4 + cG), bF._5, (bF._6 + cz), (bF._7 + 1), bF._8, bF._9, bF._10, bF._11, bJ, (bF._13 + (if (bJ)
468468 then (cx * aj)
469469 else cx)))
470470 else throw((("Attempt to buy " + bF._11[bH]) + " while warehouse doesn't sell it"))
471471 else if ((cD > 0))
472472 then if ((-(cx) > cD))
473473 then throw(((((("Attempt to sell " + toString(-(cx))) + " of ") + bF._11[bH]) + ", but warehouse only buys ") + toString(cD)))
474474 else if ((-(cx) > cA))
475475 then throw(((((("Attempt to sell " + toString(-(cx))) + ", but you only have ") + toString(cA)) + " of ") + bF._11[bH]))
476476 else $Tuple13((bF._1 :+ toString((bP - cx))), (bF._2 :+ ((toString((cD + cx)) + "@") + toString(cE))), (bF._3 :+ toString((cA + cx))), (bF._4 - cG), (bF._5 - cz), bF._6, (bF._7 + 1), bF._8, bF._9, bF._10, bF._11, bJ, (bF._13 - (if (bJ)
477477 then (cx * aj)
478478 else cx)))
479479 else throw((("Attempt to sell " + bF._11[bH]) + " while warehouse doesn't buy it"))
480480 }
481481 }
482482 }
483483 }
484484
485485
486486 func cH (cI,cJ,cK,cL) = {
487487 func cM (bF,bH) = if ((cK[bH] > parseIntValue(cI[bH])))
488488 then throw(((((("You have " + cI[bH]) + " of ") + m[bH]) + ", but tried to sell ") + toString(cK[bH])))
489489 else if ((0 > cK[bH]))
490490 then throw(((("You tried to sell negative amount of " + m[bH]) + ": ") + toString(cK[bH])))
491491 else if ((cK[bH] > 0))
492492 then {
493493 let cN = bk(cJ, bH, cK[bH], cL[bH])
494494 $Tuple4((bF._1 :+ cN._1), (bF._2 :+ toString((parseIntValue(cI[bH]) - cK[bH]))), (bF._3 + cN._2), (bF._4 + cK[bH]))
495495 }
496496 else $Tuple4(bF._1, (bF._2 :+ cI[bH]), bF._3, bF._4)
497497
498498 let cj = am
499499 let ck = size(cj)
500500 let cl = $Tuple4(nil, nil, 0, 0)
501501 func cm (cn,co) = if ((co >= ck))
502502 then cn
503503 else cM(cn, cj[co])
504504
505505 func cp (cn,co) = if ((co >= ck))
506506 then cn
507507 else throw("List size exceeds 6")
508508
509509 cp(cm(cm(cm(cm(cm(cm(cl, 0), 1), 2), 3), 4), 5), 6)
510510 }
511511
512512
513513 func cO (cP,cJ,cK,cQ) = {
514514 func cR (bF,bH) = if ((0 > cK[bH]))
515515 then throw(((("You tried to buy negative amount of " + n[bH]) + ": ") + toString(cK[bH])))
516516 else if ((cK[bH] > 0))
517517 then {
518518 let cN = bs(cJ, bH, cK[bH], cQ[bH])
519519 $Tuple4((bF._1 :+ cN._1), (bF._2 :+ toString((parseIntValue(cP[bH]) + cN._3))), (bF._3 + cN._2), (bF._4 + cK[bH]))
520520 }
521521 else $Tuple4(bF._1, (bF._2 :+ cP[bH]), bF._3, bF._4)
522522
523523 let cj = am
524524 let ck = size(cj)
525525 let cl = $Tuple4(nil, nil, 0, 0)
526526 func cm (cn,co) = if ((co >= ck))
527527 then cn
528528 else cR(cn, cj[co])
529529
530530 func cp (cn,co) = if ((co >= ck))
531531 then cn
532532 else throw("List size exceeds 6")
533533
534534 cp(cm(cm(cm(cm(cm(cm(cl, 0), 1), 2), 3), 4), 5), 6)
535535 }
536536
537537
538538 func cS (cI,cP,cK) = {
539539 func cT (bF,bH) = {
540540 let cU = cK[bH]
541541 if ((cU > parseIntValue(cI[bH])))
542542 then throw(((((("You have " + cI[bH]) + " of ") + m[bH]) + ", but tried to exchange ") + toString(cU)))
543543 else if ((0 > cU))
544544 then throw(((("You tried to exchange negative amount of " + m[bH]) + ": ") + toString(cU)))
545545 else if ((cU > 0))
546546 then $Tuple4((bF._1 :+ toString((parseIntValue(cI[bH]) - cU))), (bF._2 :+ toString((parseIntValue(cP[bH]) + cU))), (bF._3 + fraction(cU, h, aj)), (bF._4 + cU))
547547 else $Tuple4((bF._1 :+ cI[bH]), (bF._2 :+ cP[bH]), bF._3, bF._4)
548548 }
549549
550550 let cj = am
551551 let ck = size(cj)
552552 let cl = $Tuple4(nil, nil, 0, 0)
553553 func cm (cn,co) = if ((co >= ck))
554554 then cn
555555 else cT(cn, cj[co])
556556
557557 func cp (cn,co) = if ((co >= ck))
558558 then cn
559559 else throw("List size exceeds 6")
560560
561561 cp(cm(cm(cm(cm(cm(cm(cl, 0), 1), 2), 3), 4), 5), 6)
562562 }
563563
564564
565565 func cV (cW,cX,cY) = if ((cW > 0))
566566 then {
567567 let cZ = fraction(cW, aT, ai)
568568 if ((cY >= (cW - (3 * cZ))))
569569 then throw(("This trade does not cover delivery cost of " + aK(cY, 6)))
570570 else {
571571 let da = N(cX)
572572 let db = getString(aB, da)
573573 let dc = addressFromStringValue(cX)
574574 (((if (isDefined(db))
575575 then [ScriptTransfer(addressFromStringValue(value(db)), cZ, ad)]
576576 else nil) :+ ScriptTransfer(dc, ((cW - (3 * cZ)) - cY), ad)) :+ ScriptTransfer(aA, cZ, ad))
577577 }
578578 }
579579 else nil
580580
581581
582582 func dd (de,df,dg,dh) = if ((de > 0))
583583 then if ((size(df) != 1))
584584 then throw("exactly 1 payment must be attached")
585585 else {
586586 let di = df[0]
587587 let dj = di.amount
588588 if (if (!(isDefined(di.assetId)))
589589 then true
590590 else (value(di.assetId) != ad))
591591 then throw("USDT payments only!")
592592 else {
593593 let dk = (de + dh)
594594 if ((dj != dk))
595595 then throw((((((("Insufficient payment! Attached=" + aK(dj, 6)) + ", required=") + aK(de, 6)) + "+") + aK(dh, 6)) + "(delivery fee)"))
596596 else if ((al > de))
597597 then throw(("Min shop trade is " + aK(al, 6)))
598598 else {
599599 let dl = fraction(de, aT, ai)
600600 let da = N(dg)
601601 let db = getString(aB, da)
602602 (((if (isDefined(db))
603603 then [ScriptTransfer(addressFromStringValue(value(db)), dl, ad)]
604604 else nil) :+ ScriptTransfer(addressFromStringValue(dg), (de - (3 * dl)), ad)) :+ ScriptTransfer(aA, dl, ad))
605605 }
606606 }
607607 }
608608 else if ((size(df) != 0))
609609 then throw("No payments needed")
610610 else nil
611611
612612
613613 func dm (dn,cX,do,dp,dq,dr) = {
614614 let ds = value(assetInfo(fromBase58String(dn)))
615615 if (!(isDefined(getInteger(aB, M(dn)))))
616616 then throw((("NFT " + ds.name) + " is not staked"))
617617 else {
618618 let dg = valueOrErrorMessage(getString(aB, K(dn)), (("NFT " + ds.name) + " is orphaned"))
619619 if ((dg == cX))
620620 then throw("You cannot trade with yourself")
621621 else {
622622 let dt = split_4C(do, ":")
623623 if ((size(dt) != 3))
624624 then throw("bpOrderStr should contain exactly 2 ':' separators")
625625 else {
626626 let du = split(dt[0], "_")
627627 let dv = split(dt[1], "_")
628628 let dw = if ((dt[2] == ""))
629629 then nil
630630 else split_4C(dt[2], "_")
631631 if ((size(du) != f))
632632 then throw("All 6 resources should be passed")
633633 else if ((size(dv) != f))
634634 then throw("All 6 materials should be passed")
635635 else {
636636 let dx = aE(invoke(aB, "getWarehouseREADONLY", [dn], nil))
637637 let bW = split_4C(dx, ":")
638638 let bZ = split(bW[x], "_")
639639 let ca = split(bW[y], "_")
640640 let cb = if ((bW[z] == ""))
641641 then nil
642642 else split_4C(bW[z], "_")
643643 let dy = parseIntValue(split(bW[A], "_")[B])
644644 let bd = U(dn)
645645 let dz = bc(bd)
646646 let dA = split(dz[aZ], "_")
647647 let dB = split(dz[ba], "_")
648648 let dC = if ((dz[bb] == ""))
649649 then nil
650650 else split_4C(dz[bb], "_")
651651 let ci = {
652652 let cj = du
653653 let ck = size(cj)
654654 let cl = $Tuple13(nil, nil, nil, 0, 0, 0, 0, dp, bZ, dA, m, false, 0)
655655 func cm (cn,co) = if ((co >= ck))
656656 then cn
657657 else cu(cn, cj[co])
658658
659659 func cp (cn,co) = if ((co >= ck))
660660 then cn
661661 else throw("List size exceeds 6")
662662
663663 cp(cm(cm(cm(cm(cm(cm(cl, 0), 1), 2), 3), 4), 5), 6)
664664 }
665665 let bx = {
666666 let cj = dv
667667 let ck = size(cj)
668668 let cl = $Tuple13(nil, nil, nil, ci._4, ci._5, ci._6, 0, dq, ca, dB, n, false, ci._13)
669669 func cq (cn,co) = if ((co >= ck))
670670 then cn
671671 else cu(cn, cj[co])
672672
673673 func cr (cn,co) = if ((co >= ck))
674674 then cn
675675 else throw("List size exceeds 6")
676676
677677 cr(cq(cq(cq(cq(cq(cq(cl, 0), 1), 2), 3), 4), 5), 6)
678678 }
679679 let be = if ((size(dw) != 0))
680680 then {
681681 let cj = dw
682682 let ck = size(cj)
683683 let cl = $Tuple13(nil, nil, nil, bx._4, bx._5, bx._6, 0, dr, cb, dC, o, true, bx._13)
684684 func cs (cn,co) = if ((co >= ck))
685685 then cn
686686 else cu(cn, cj[co])
687687
688688 func ct (cn,co) = if ((co >= ck))
689689 then cn
690690 else throw("List size exceeds 50")
691691
692692 ct(cs(cs(cs(cs(cs(cs(cs(cs(cs(cs(cs(cs(cs(cs(cs(cs(cs(cs(cs(cs(cs(cs(cs(cs(cs(cs(cs(cs(cs(cs(cs(cs(cs(cs(cs(cs(cs(cs(cs(cs(cs(cs(cs(cs(cs(cs(cs(cs(cs(cs(cl, 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)
693693 }
694694 else $Tuple13(cb, dC, dr, bx._4, bx._5, bx._6, 0, dr, cb, dC, o, true, bx._13)
695695 let dD = be._4
696696 let dE = if ((0 > (dy - dD)))
697697 then 0
698698 else (dy - dD)
699699 let dF = makeString_2C([bW[w], makeString(ci._1, "_"), makeString(bx._1, "_"), makeString_2C(be._1, "_"), toString(dE)], ":")
700700 let dG = makeString_2C([makeString(ci._2, "_"), makeString(bx._2, "_"), makeString_2C(be._2, "_")], ":")
701701 let dH = aE(invoke(aB, "saveWarehouse", [dF, dn], nil))
702702 let dI = aH(invoke(aB, "updateAccStats", [dg, fraction(d, be._13, aj)], nil))
703703 $Tuple10(StringEntry(bd, dG), ci._3, bx._3, be._3, be._5, be._6, be._13, dg, dH, dI)
704704 }
705705 }
706706 }
707707 }
708708 }
709709
710710
711711 func dJ (bg) = {
712712 let dK = (bg / 30)
713713 let dL = [dK, dK, dK, dK, dK, dK]
714714 let aG = toString(dK)
715715 let cI = [aG, aG, aG, aG, aG, aG]
716716 let cL = [0, 0, 0, 0, 0, 0]
717717 func dM (bF,dN) = {
718718 let dO = cH(cI, dN, dL, cL)
719- $Tuple3((bF._1 :+ dO._1), (bF._2 + dO._3), (bF._3 + dO._4))
719+ $Tuple3((bF._1 ++ dO._1), (bF._2 + dO._3), (bF._3 + dO._4))
720720 }
721721
722722 let dP = {
723723 let cj = p
724724 let ck = size(cj)
725725 let cl = $Tuple3(nil, 0, 0)
726726 func cm (cn,co) = if ((co >= ck))
727727 then cn
728728 else dM(cn, cj[co])
729729
730730 func cp (cn,co) = if ((co >= ck))
731731 then cn
732732 else throw("List size exceeds 5")
733733
734734 cp(cm(cm(cm(cm(cm(cl, 0), 1), 2), 3), 4), 5)
735735 }
736736 let dQ = dP._1
737737 let bq = dP._2
738738 let dR = dP._3
739739 let dS = fraction(bq, aU, ai)
740740 let dT = (bq / 100)
741741 let dU = ((bq - dT) - dS)
742742 $Tuple5(dQ, dU, dS, dT, dR)
743743 }
744744
745745
746746 @Callable(dV)
747747 func recalcLockedVolumeREADONLY (V,dx) = {
748748 let bX = bc(U(V))
749749 let dW = bV(dx, bX, bX)
750750 $Tuple2(nil, (dW._4 + dW._5))
751751 }
752752
753753
754754
755755 @Callable(dV)
756756 func constructorV1 (dX) = if ((dV.caller != this))
757757 then throw("Permission denied")
758758 else [StringEntry(au(), dX)]
759759
760760
761761
762762 @Callable(dV)
763763 func sellResources (cK,cL) = {
764764 let dY = bD()
765765 let S = valueOrErrorMessage(getString(aB, P(toString(dV.caller))), "You don't have a duck staked")
766766 if ((size(dV.payments) != 0))
767767 then throw("sellResources doesn't require any payments")
768768 else {
769769 let dZ = split(valueOrElse(getString(aB, T(S)), g), "_")
770770 if ((dZ[I] != "F"))
771771 then throw(("Duck location type should be Factory, but is " + dZ[I]))
772772 else {
773773 let ea = bA(R(S))
774774 let cI = split(ea[E], "_")
775775 let eb = cH(cI, dZ[J], cK, cL)
776776 let dQ = eb._1
777777 let ec = eb._2
778778 let bq = eb._3
779779 let dR = eb._4
780780 let dT = (bq / 100)
781781 let ed = makeString_2C([ea[D], makeString(ec, "_"), ea[F], ea[G]], ":")
782782 let ee = aE(invoke(aB, "updateBackpack", [S, ed], nil))
783783 let ef = aH(invoke(aB, "updateDuckStats", [S, fraction(a, dR, aj)], nil))
784784 $Tuple2(((dQ :+ ScriptTransfer(dV.caller, (bq - dT), ad)) :+ ScriptTransfer(aA, dT, ad)), $Tuple3(ee, dY, ef))
785785 }
786786 }
787787 }
788788
789789
790790
791791 @Callable(dV)
792792 func sellResourcesWorld (O,bg) = if ((dV.caller != aD))
793793 then throw("Permission denied")
794794 else {
795795 let eg = dJ(bg)
796796 let dQ = eg._1
797797 let dU = eg._2
798798 let dS = eg._3
799799 let dT = eg._4
800800 let dR = eg._5
801801 if ((0 >= dU))
802802 then throw(("This trade does not cover delivery cost of " + aK(dS, 6)))
803803 else {
804804 let ef = aH(invoke(aB, "updateAccStats", [O, fraction(a, dR, aj)], nil))
805805 $Tuple2((((dQ :+ IntegerEntry(X, (valueOrElse(getInteger(X), 0) + dS))) :+ ScriptTransfer(aA, dT, ad)) :+ ScriptTransfer(aC, dU, ad)), $Tuple2(dU, ef))
806806 }
807807 }
808808
809809
810810
811811 @Callable(dV)
812812 func sellResourcesWorldREADONLY (bg) = {
813813 let dU = dJ(bg)._2
814814 $Tuple2(nil, dU)
815815 }
816816
817817
818818
819819 @Callable(dV)
820820 func sellResourcesDuckDelivery (cK,cL,eh) = if (!(ab))
821821 then throw("Delivery feature is turned off!")
822822 else {
823823 let dY = bD()
824824 let S = valueOrErrorMessage(getString(aB, P(toString(dV.caller))), "You don't have a duck staked")
825825 if ((size(dV.payments) != 0))
826826 then throw("sellResources doesn't require any payments")
827827 else {
828828 let ea = bA(R(S))
829829 let cI = split(ea[E], "_")
830830 let ei = cH(cI, eh, cK, cL)
831831 let dQ = ei._1
832832 let ec = ei._2
833833 let bq = ei._3
834834 let dR = ei._4
835835 let ed = makeString_2C([ea[D], makeString(ec, "_"), ea[F], ea[G]], ":")
836836 let ee = aE(invoke(aB, "updateBackpack", [S, ed], nil))
837837 let ef = aH(invoke(aB, "updateDuckStats", [S, fraction(a, dR, aj)], nil))
838838 let ej = fraction(bq, aU, ai)
839839 let dS = if ((k > ej))
840840 then k
841841 else ej
842842 let dT = (bq / 100)
843843 if ((dS >= (bq - dT)))
844844 then throw(("This trade does not cover delivery cost of " + aK(dS, 6)))
845845 else {
846846 let ek = valueOrElse(getInteger(X), 0)
847847 $Tuple2((((dQ :+ ScriptTransfer(dV.caller, ((bq - dT) - dS), ad)) :+ IntegerEntry(X, (ek + dS))) :+ ScriptTransfer(aA, dT, ad)), $Tuple3(ee, dY, ef))
848848 }
849849 }
850850 }
851851
852852
853853
854854 @Callable(dV)
855855 func sellResourcesLandDelivery (cK,cL,V,eh) = if (!(ab))
856856 then throw("Delivery feature is turned off!")
857857 else {
858858 let dY = bD()
859859 if ((size(dV.payments) != 0))
860860 then throw("sellResources doesn't require any payments")
861861 else {
862862 let el = dV.caller
863863 let O = toString(el)
864864 let em = value(assetInfo(fromBase58String(V)))
865865 if (!(isDefined(getInteger(aB, M(V)))))
866866 then throw((("NFT " + em.name) + " is not staked"))
867867 else {
868868 let en = valueOrErrorMessage(getString(aB, K(V)), (("NFT " + em.name) + " is orphaned"))
869869 if ((en != O))
870870 then throw((e + " is not yours"))
871871 else {
872872 let dx = aE(invoke(aB, "getWarehouseREADONLY", [V], nil))
873873 let bW = split_4C(dx, ":")
874874 let cI = split(bW[x], "_")
875875 let eo = cH(cI, eh, cK, cL)
876876 let dQ = eo._1
877877 let ec = eo._2
878878 let bq = eo._3
879879 let dR = eo._4
880880 let dF = makeString_2C([bW[w], makeString(ec, "_"), bW[y], bW[z], bW[A]], ":")
881881 let dH = aE(invoke(aB, "saveWarehouse", [dF, V], nil))
882882 let ef = aH(invoke(aB, "updateAccStats", [O, fraction(a, dR, aj)], nil))
883883 let ej = fraction(bq, aU, ai)
884884 let dS = if ((k > ej))
885885 then k
886886 else ej
887887 let dT = (bq / 100)
888888 if ((dS >= (bq - dT)))
889889 then throw(("This trade does not cover delivery cost of " + aK(dS, 6)))
890890 else {
891891 let ek = valueOrElse(getInteger(X), 0)
892892 $Tuple2((((dQ :+ ScriptTransfer(dV.caller, ((bq - dT) - dS), ad)) :+ IntegerEntry(X, (ek + dS))) :+ ScriptTransfer(aA, dT, ad)), $Tuple3(dH, dY, ef))
893893 }
894894 }
895895 }
896896 }
897897 }
898898
899899
900900
901901 @Callable(dV)
902902 func buyMaterials (cK,cQ) = {
903903 let dY = bD()
904904 let S = valueOrErrorMessage(getString(aB, P(toString(dV.caller))), "You don't have a duck staked")
905905 if ((size(dV.payments) != 1))
906906 then throw("exactly 1 payment must be attached")
907907 else {
908908 let di = dV.payments[0]
909909 let dj = di.amount
910910 if (if (!(isDefined(di.assetId)))
911911 then true
912912 else (value(di.assetId) != ad))
913913 then throw("USDT payments only!")
914914 else {
915915 let dZ = split(valueOrElse(getString(aB, T(S)), g), "_")
916916 if ((dZ[I] != "F"))
917917 then throw(("Duck location type should be Factory, but is " + dZ[I]))
918918 else {
919919 let ea = bA(R(S))
920920 let cP = split(ea[F], "_")
921921 let ep = cO(cP, dZ[J], cK, cQ)
922922 let dQ = ep._1
923923 let eq = ep._2
924924 let by = ep._3
925925 let er = ep._4
926926 if ((by > dj))
927927 then throw(((("Insufficient payment! Attached=" + aK(dj, 6)) + ", required=") + aK(by, 6)))
928928 else {
929929 let ed = makeString([ea[D], ea[E], makeString(eq, "_"), ea[G]], ":")
930930 let ee = aE(invoke(aB, "updateBackpack", [S, ed], nil))
931931 let aw = if (((dj - by) > 0))
932932 then [ScriptTransfer(dV.caller, (dj - by), ad)]
933933 else nil
934934 let dT = (by / 100)
935935 let ef = aH(invoke(aB, "updateDuckStats", [S, fraction(a, er, aj)], nil))
936936 $Tuple2(((dQ ++ aw) :+ ScriptTransfer(aA, dT, ad)), $Tuple3(ee, dY, ef))
937937 }
938938 }
939939 }
940940 }
941941 }
942942
943943
944944
945945 @Callable(dV)
946946 func buyMaterialsDuckDelivery (cK,cQ,eh) = if (!(ab))
947947 then throw("Delivery feature is turned off!")
948948 else {
949949 let dY = bD()
950950 let S = valueOrErrorMessage(getString(aB, P(toString(dV.caller))), "You don't have a duck staked")
951951 if ((size(dV.payments) != 1))
952952 then throw("exactly 1 payment must be attached")
953953 else {
954954 let di = dV.payments[0]
955955 let dj = di.amount
956956 if (if (!(isDefined(di.assetId)))
957957 then true
958958 else (value(di.assetId) != ad))
959959 then throw("USDT payments only!")
960960 else {
961961 let ea = bA(R(S))
962962 let cP = split(ea[F], "_")
963963 let es = cO(cP, eh, cK, cQ)
964964 let dQ = es._1
965965 let eq = es._2
966966 let by = es._3
967967 let er = es._4
968968 let ed = makeString([ea[D], ea[E], makeString(eq, "_"), ea[G]], ":")
969969 let ee = aE(invoke(aB, "updateBackpack", [S, ed], nil))
970970 let ef = aH(invoke(aB, "updateDuckStats", [S, fraction(a, er, aj)], nil))
971971 let ej = fraction(by, aU, ai)
972972 let dS = if ((k > ej))
973973 then k
974974 else ej
975975 let dk = (by + dS)
976976 if ((dk > dj))
977977 then throw((((((("Insufficient payment! Attached=" + aK(dj, 6)) + ", required=") + aK(by, 6)) + "+") + aK(dS, 6)) + "(delivery fee)"))
978978 else {
979979 let aw = if (((dj - dk) > 0))
980980 then [ScriptTransfer(dV.caller, (dj - dk), ad)]
981981 else nil
982982 let dT = (by / 100)
983983 let ek = valueOrElse(getInteger(X), 0)
984984 $Tuple2((((dQ ++ aw) :+ ScriptTransfer(aA, dT, ad)) :+ IntegerEntry(X, (ek + dS))), $Tuple3(ee, dY, ef))
985985 }
986986 }
987987 }
988988 }
989989
990990
991991
992992 @Callable(dV)
993993 func buyMaterialsLandDelivery (cK,cQ,V,eh) = if (!(ab))
994994 then throw("Delivery feature is turned off!")
995995 else {
996996 let dY = bD()
997997 if ((size(dV.payments) != 1))
998998 then throw("exactly 1 payment must be attached")
999999 else {
10001000 let di = dV.payments[0]
10011001 let dj = di.amount
10021002 if (if (!(isDefined(di.assetId)))
10031003 then true
10041004 else (value(di.assetId) != ad))
10051005 then throw("USDT payments only!")
10061006 else {
10071007 let el = dV.caller
10081008 let O = toString(el)
10091009 let em = value(assetInfo(fromBase58String(V)))
10101010 if (!(isDefined(getInteger(aB, M(V)))))
10111011 then throw((("NFT " + em.name) + " is not staked"))
10121012 else {
10131013 let en = valueOrErrorMessage(getString(aB, K(V)), (("NFT " + em.name) + " is orphaned"))
10141014 if ((en != O))
10151015 then throw((e + " is not yours"))
10161016 else {
10171017 let dx = aE(invoke(aB, "getWarehouseREADONLY", [V], nil))
10181018 let bW = split_4C(dx, ":")
10191019 let cP = split(bW[y], "_")
10201020 let et = cO(cP, eh, cK, cQ)
10211021 let dQ = et._1
10221022 let eq = et._2
10231023 let by = et._3
10241024 let er = et._4
10251025 let dF = makeString_2C([bW[w], bW[x], makeString(eq, "_"), bW[z], bW[A]], ":")
10261026 let dH = aE(invoke(aB, "saveWarehouse", [dF, V], nil))
10271027 let ef = aH(invoke(aB, "updateAccStats", [O, fraction(a, er, aj)], nil))
10281028 let ej = fraction(by, aU, ai)
10291029 let dS = if ((k > ej))
10301030 then k
10311031 else ej
10321032 let dk = (by + dS)
10331033 if ((dk > dj))
10341034 then throw((((((("Insufficient payment! Attached=" + aK(dj, 6)) + ", required=") + aK(by, 6)) + "+") + aK(dS, 6)) + "(delivery fee)"))
10351035 else {
10361036 let aw = if (((dj - dk) > 0))
10371037 then [ScriptTransfer(dV.caller, (dj - dk), ad)]
10381038 else nil
10391039 let dT = (by / 100)
10401040 let ek = valueOrElse(getInteger(X), 0)
10411041 $Tuple2((((dQ ++ aw) :+ ScriptTransfer(aA, dT, ad)) :+ IntegerEntry(X, (ek + dS))), $Tuple3(dH, dY, ef))
10421042 }
10431043 }
10441044 }
10451045 }
10461046 }
10471047 }
10481048
10491049
10501050
10511051 @Callable(dV)
10521052 func exchangeResources (cK) = {
10531053 let dY = bD()
10541054 let S = valueOrErrorMessage(getString(aB, P(toString(dV.caller))), "You don't have a duck staked")
10551055 if ((size(dV.payments) != 1))
10561056 then throw("exactly 1 payment must be attached")
10571057 else {
10581058 let di = dV.payments[0]
10591059 let dj = di.amount
10601060 if (if (!(isDefined(di.assetId)))
10611061 then true
10621062 else (value(di.assetId) != ad))
10631063 then throw("USDT payments only!")
10641064 else {
10651065 let dZ = split(valueOrElse(getString(aB, T(S)), g), "_")
10661066 if ((dZ[I] != "F"))
10671067 then throw(("Duck location type should be Factory, but is " + dZ[I]))
10681068 else {
10691069 let ea = bA(R(S))
10701070 let cI = split(ea[E], "_")
10711071 let cP = split(ea[F], "_")
10721072 let eu = cS(cI, cP, cK)
10731073 let ec = eu._1
10741074 let eq = eu._2
10751075 let by = eu._3
10761076 let ev = eu._4
10771077 if ((by > dj))
10781078 then throw(((("Insufficient payment! Attached=" + aK(dj, 6)) + ", required=") + aK(by, 6)))
10791079 else {
10801080 let ed = makeString([ea[D], makeString(ec, "_"), makeString(eq, "_"), ea[G]], ":")
10811081 let ee = aE(invoke(aB, "updateBackpack", [S, ed], nil))
10821082 let aw = if (((dj - by) > 0))
10831083 then [ScriptTransfer(dV.caller, (dj - by), ad)]
10841084 else nil
10851085 let dT = (by / 100)
10861086 let ef = aH(invoke(aB, "updateDuckStats", [S, fraction(a, ev, aj)], nil))
10871087 $Tuple2((aw :+ ScriptTransfer(aA, dT, ad)), $Tuple3(ee, dY, ef))
10881088 }
10891089 }
10901090 }
10911091 }
10921092 }
10931093
10941094
10951095
10961096 @Callable(dV)
10971097 func exchangeResourcesDuckDelivery (cK) = {
10981098 let dY = bD()
10991099 let S = valueOrErrorMessage(getString(aB, P(toString(dV.caller))), "You don't have a duck staked")
11001100 if ((size(dV.payments) != 1))
11011101 then throw("exactly 1 payment must be attached")
11021102 else {
11031103 let di = dV.payments[0]
11041104 let dj = di.amount
11051105 if (if (!(isDefined(di.assetId)))
11061106 then true
11071107 else (value(di.assetId) != ad))
11081108 then throw("USDT payments only!")
11091109 else {
11101110 let ea = bA(R(S))
11111111 let cI = split(ea[E], "_")
11121112 let cP = split(ea[F], "_")
11131113 let ew = cS(cI, cP, cK)
11141114 let ec = ew._1
11151115 let eq = ew._2
11161116 let by = ew._3
11171117 let ev = ew._4
11181118 let ej = fraction(by, aV, ai)
11191119 let dS = if ((l > ej))
11201120 then l
11211121 else ej
11221122 let dk = (by + dS)
11231123 if ((dk > dj))
11241124 then throw((((((("Insufficient payment! Attached=" + aK(dj, 6)) + ", required=") + aK(by, 6)) + "+") + aK(dS, 6)) + "(delivery fee)"))
11251125 else {
11261126 let ed = makeString([ea[D], makeString(ec, "_"), makeString(eq, "_"), ea[G]], ":")
11271127 let ee = aE(invoke(aB, "updateBackpack", [S, ed], nil))
11281128 let aw = if (((dj - dk) > 0))
11291129 then [ScriptTransfer(dV.caller, (dj - dk), ad)]
11301130 else nil
11311131 let dT = (by / 100)
11321132 let ef = aH(invoke(aB, "updateDuckStats", [S, fraction(a, ev, aj)], nil))
11331133 let ek = valueOrElse(getInteger(X), 0)
11341134 $Tuple2(((aw :+ ScriptTransfer(aA, dT, ad)) :+ IntegerEntry(X, (ek + dS))), $Tuple3(ee, dY, ef))
11351135 }
11361136 }
11371137 }
11381138 }
11391139
11401140
11411141
11421142 @Callable(dV)
11431143 func exchangeResourcesLandDelivery (cK,V) = {
11441144 let dY = bD()
11451145 if ((size(dV.payments) != 1))
11461146 then throw("exactly 1 payment must be attached")
11471147 else {
11481148 let di = dV.payments[0]
11491149 let dj = di.amount
11501150 if (if (!(isDefined(di.assetId)))
11511151 then true
11521152 else (value(di.assetId) != ad))
11531153 then throw("USDT payments only!")
11541154 else {
11551155 let el = dV.caller
11561156 let O = toString(el)
11571157 let em = value(assetInfo(fromBase58String(V)))
11581158 if (!(isDefined(getInteger(aB, M(V)))))
11591159 then throw((("NFT " + em.name) + " is not staked"))
11601160 else {
11611161 let en = valueOrErrorMessage(getString(aB, K(V)), (("NFT " + em.name) + " is orphaned"))
11621162 if ((en != O))
11631163 then throw((e + " is not yours"))
11641164 else {
11651165 let dx = aE(invoke(aB, "getWarehouseREADONLY", [V], nil))
11661166 let bW = split_4C(dx, ":")
11671167 let cI = split(bW[x], "_")
11681168 let cP = split(bW[y], "_")
11691169 let ex = cS(cI, cP, cK)
11701170 let ec = ex._1
11711171 let eq = ex._2
11721172 let by = ex._3
11731173 let ev = ex._4
11741174 let dF = makeString_2C([bW[w], makeString(ec, "_"), makeString(eq, "_"), bW[z], bW[A]], ":")
11751175 let dH = aE(invoke(aB, "saveWarehouse", [dF, V], nil))
11761176 let ef = aH(invoke(aB, "updateAccStats", [O, fraction(a, ev, aj)], nil))
11771177 let ej = fraction(by, aV, ai)
11781178 let dS = if ((l > ej))
11791179 then l
11801180 else ej
11811181 let dk = (by + dS)
11821182 if ((dk > dj))
11831183 then throw((((((("Insufficient payment! Attached=" + aK(dj, 6)) + ", required=") + aK(by, 6)) + "+") + aK(dS, 6)) + "(delivery fee)"))
11841184 else {
11851185 let aw = if (((dj - dk) > 0))
11861186 then [ScriptTransfer(dV.caller, (dj - dk), ad)]
11871187 else nil
11881188 let dT = (by / 100)
11891189 let ek = valueOrElse(getInteger(X), 0)
11901190 $Tuple2(((aw :+ ScriptTransfer(aA, dT, ad)) :+ IntegerEntry(X, (ek + dS))), $Tuple3(dH, dY, ef))
11911191 }
11921192 }
11931193 }
11941194 }
11951195 }
11961196 }
11971197
11981198
11991199
12001200 @Callable(dV)
12011201 func craftGoods (ey,ez) = {
12021202 let dY = bD()
12031203 if ((size(dV.payments) != 1))
12041204 then throw("exactly 1 payment must be attached")
12051205 else {
12061206 let di = dV.payments[0]
12071207 let dj = di.amount
12081208 let eA = valueOrErrorMessage(di.assetId, "WAVES can't be used as payment")
12091209 if ((eA != ad))
12101210 then throw("USDT payments only!")
12111211 else if ((dj != ai))
12121212 then throw("exactly 1 USDT must be attached as payment")
12131213 else if ((0 >= ez))
12141214 then throw("Quantity should be positive")
12151215 else {
12161216 let S = valueOrErrorMessage(getString(aB, P(toString(dV.caller))), "You don't have a duck staked")
12171217 let dZ = split(valueOrElse(getString(aB, T(S)), g), "_")
12181218 if ((dZ[I] != "M"))
12191219 then throw(("Duck location type should be Manufactory, but is " + dZ[I]))
12201220 else {
12211221 let eB = dZ[H]
12221222 let ea = bA(R(S))
12231223 let cP = split(ea[F], "_")
12241224 if (if ((0 > ey))
12251225 then true
12261226 else (ey >= size(r)))
12271227 then throw(("Unknown product idx=" + toString(ey)))
12281228 else {
12291229 let aa = split(r[ey], "_")
12301230 if ((size(aa) != u))
12311231 then throw(("Fatal: unknown recipe: " + r[ey]))
12321232 else {
12331233 let eC = parseIntValue(aa[t])
12341234 if ((p[eC] != eB))
12351235 then throw(((("This product is available in " + p[eC]) + ", but you are in ") + eB))
12361236 else {
12371237 let eD = if ((ea[G] == ""))
12381238 then nil
12391239 else split_4C(ea[G], "_")
12401240 func eE (bF,eF) = {
12411241 let aI = bF._2
12421242 let eG = if ((size(eD) > aI))
12431243 then eD[aI]
12441244 else "0"
12451245 let dO = parseIntValue(eG)
12461246 let bg = (ez * v)
12471247 let eH = if ((aI == ey))
12481248 then toString((dO + bg))
12491249 else eG
12501250 $Tuple2((bF._1 :+ eH), (aI + 1))
12511251 }
12521252
12531253 let eI = ( let cj = r
12541254 let ck = size(cj)
12551255 let cl = $Tuple2(nil, 0)
12561256 func cm (cn,co) = if ((co >= ck))
12571257 then cn
12581258 else eE(cn, cj[co])
12591259
12601260 func cp (cn,co) = if ((co >= ck))
12611261 then cn
12621262 else throw("List size exceeds 50")
12631263
12641264 cp(cm(cm(cm(cm(cm(cm(cm(cm(cm(cm(cm(cm(cm(cm(cm(cm(cm(cm(cm(cm(cm(cm(cm(cm(cm(cm(cm(cm(cm(cm(cm(cm(cm(cm(cm(cm(cm(cm(cm(cm(cm(cm(cm(cm(cm(cm(cm(cm(cm(cm(cl, 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))._1
12651265 func eJ (bF,bH) = {
12661266 let eK = (((parseIntValue(aa[bH]) * ah) * ez) * parseIntValue(aa[s]))
12671267 let eL = parseIntValue(cP[bH])
12681268 if ((eK > eL))
12691269 then throw(((((((("You have " + aK(eL, 8)) + " of ") + n[bH]) + ", but recipe requires ") + aK(eK, 8)) + " for quantity ") + toString(ez)))
12701270 else if ((eK > 0))
12711271 then $Tuple2((bF._1 :+ toString((eL - eK))), (bF._2 + eK))
12721272 else $Tuple2((bF._1 :+ cP[bH]), bF._2)
12731273 }
12741274
12751275 let eM = {
12761276 let cj = am
12771277 let ck = size(cj)
12781278 let cl = $Tuple2(nil, 0)
12791279 func cq (cn,co) = if ((co >= ck))
12801280 then cn
12811281 else eJ(cn, cj[co])
12821282
12831283 func cr (cn,co) = if ((co >= ck))
12841284 then cn
12851285 else throw("List size exceeds 6")
12861286
12871287 cr(cq(cq(cq(cq(cq(cq(cl, 0), 1), 2), 3), 4), 5), 6)
12881288 }
12891289 let ed = makeString([ea[D], ea[E], makeString(eM._1, "_"), makeString_2C(eI, "_")], ":")
12901290 let eN = aE(invoke(aB, "updateBackpack", [S, ed], nil))
12911291 let ef = aH(invoke(aB, "updateDuckStats", [S, fraction(b, eM._2, aj)], nil))
12921292 $Tuple2(nil, $Tuple3(eN, dY, ef))
12931293 }
12941294 }
12951295 }
12961296 }
12971297 }
12981298 }
12991299 }
13001300
13011301
13021302
13031303 @Callable(dV)
13041304 func setWarehouseOrder (eO,V) = {
13051305 let el = dV.originCaller
13061306 let O = toString(el)
13071307 let eN = if ((el != aA))
13081308 then bC()
13091309 else false
13101310 let em = value(assetInfo(fromBase58String(V)))
13111311 if (!(isDefined(getInteger(aB, M(V)))))
13121312 then throw((("NFT " + em.name) + " is not staked"))
13131313 else {
13141314 let en = valueOrErrorMessage(getString(aB, K(V)), (("NFT " + em.name) + " is orphaned"))
13151315 if (if ((el != aA))
13161316 then (en != O)
13171317 else false)
13181318 then throw((e + " is not yours"))
13191319 else {
13201320 let eP = split_4C(eO, ":")
13211321 let dx = aE(invoke(aB, "getWarehouseREADONLY", [V], nil))
13221322 let bW = split_4C(dx, ":")
13231323 let eQ = split(bW[A], "_")
13241324 let eR = parseIntValue(eQ[C])
13251325 let bd = U(V)
13261326 let bX = bc(bd)
13271327 let dW = bV(bW, bX, eP)
13281328 let eS = dW._4
13291329 let eT = dW._5
13301330 let eU = dW._7
13311331 let eV = (eS + eT)
13321332 let eW = ((eR - eU) - eV)
13331333 if ((0 > eW))
13341334 then throw((((((("Attempt to reserve " + toString(eS)) + " space for buy orders, and ") + toString(eT)) + " space for sell orders (and occupied=") + toString(eU)) + "), leads to negative free space"))
13351335 else {
13361336 let dF = makeString_2C([bW[w], makeString(dW._1, "_"), makeString(dW._2, "_"), makeString_2C(dW._3, "_"), toString(eV)], ":")
13371337 let dH = aE(invoke(aB, "saveWarehouse", [dF, V], nil))
13381338 let eX = dW._6
13391339 let eY = if ((eX > 0))
13401340 then if ((size(dV.payments) != 1))
13411341 then throw("exactly 1 payment must be attached")
13421342 else {
13431343 let di = dV.payments[0]
13441344 let dj = di.amount
13451345 let eA = valueOrErrorMessage(di.assetId, "WAVES can't be used as payment")
13461346 if ((eA != ad))
13471347 then throw("USDT payments only!")
13481348 else if ((dj != eX))
13491349 then throw(("Payment needed is " + toString(eX)))
13501350 else [StringEntry(bd, eO)]
13511351 }
13521352 else if ((eX == 0))
13531353 then if ((size(dV.payments) != 0))
13541354 then throw("No payments needed")
13551355 else [StringEntry(bd, eO)]
13561356 else if ((size(dV.payments) != 0))
13571357 then throw("No payments needed")
13581358 else [ScriptTransfer(addressFromStringValue(en), -(eX), ad), StringEntry(bd, eO)]
13591359 $Tuple2(eY, $Tuple2(eN, dH))
13601360 }
13611361 }
13621362 }
13631363 }
13641364
13651365
13661366
13671367 @Callable(dV)
13681368 func acceptWarehouseOrder (do,dn,S) = {
13691369 let dY = bD()
13701370 let dc = dV.originCaller
13711371 let cX = toString(dc)
13721372 let eZ = valueOrErrorMessage(getString(aB, P(cX)), "You don't have a duck staked")
13731373 let dZ = valueOrElse(getString(aB, T(eZ)), g)
13741374 let fa = split(value(dZ), "_")
13751375 if ((fa[I] != "L"))
13761376 then throw((("Duck location type is " + fa[I]) + ", but should be L"))
13771377 else if ((eZ != S))
13781378 then throw(((("Your staked duck is " + eZ) + ", but passed ") + S))
13791379 else {
13801380 let bB = R(S)
13811381 let ea = bA(bB)
13821382 let dp = split(ea[E], "_")
13831383 let dq = split(ea[F], "_")
13841384 let dr = if ((ea[G] == ""))
13851385 then nil
13861386 else split_4C(ea[G], "_")
13871387 let fb = dm(dn, cX, do, dp, dq, dr)
13881388 let fc = fb._1
13891389 let fd = fb._2
13901390 let fe = fb._3
13911391 let ff = fb._4
13921392 let cW = fb._5
13931393 let de = fb._6
13941394 let fg = fb._7
13951395 let dg = fb._8
13961396 let fh = fb._9
13971397 let dI = fb._10
13981398 let fi = [fc, cV(cW, cX, 0)]
13991399 let fj = dd(de, dV.payments, dg, 0)
14001400 let fk = makeString_2C([ea[D], makeString(fd, "_"), makeString(fe, "_"), makeString_2C(ff, "_")], ":")
14011401 let fl = aE(invoke(aB, "updateBackpack", [S, fk], nil))
14021402 let fm = aH(invoke(aB, "updateDuckStats", [S, fraction(d, fg, aj)], nil))
14031403 $Tuple2((fi ++ fj), $Tuple5(dY, fh, fl, fm, dI))
14041404 }
14051405 }
14061406
14071407
14081408
14091409 @Callable(dV)
14101410 func acceptShopOrderDuckDelivery (fn,dn) = if (!(ab))
14111411 then throw("Delivery feature is turned off!")
14121412 else {
14131413 let dY = bD()
14141414 let dc = dV.originCaller
14151415 let cX = toString(dc)
14161416 let S = valueOrErrorMessage(getString(aB, P(cX)), "You don't have a duck staked")
14171417 let bB = R(S)
14181418 let ea = bA(bB)
14191419 let dp = split(ea[E], "_")
14201420 let dq = split(ea[F], "_")
14211421 let dr = if ((ea[G] == ""))
14221422 then nil
14231423 else split_4C(ea[G], "_")
14241424 let fo = dm(dn, cX, fn, dp, dq, dr)
14251425 let fc = fo._1
14261426 let fd = fo._2
14271427 let fe = fo._3
14281428 let ff = fo._4
14291429 let cW = fo._5
14301430 let de = fo._6
14311431 let fg = fo._7
14321432 let dg = fo._8
14331433 let fh = fo._9
14341434 let dI = fo._10
14351435 let fp = fraction((de + cW), aU, ai)
14361436 let fq = if ((k > fp))
14371437 then k
14381438 else fp
14391439 let dh = fraction(fq, de, (de + cW))
14401440 let cY = (fq - dh)
14411441 let ek = valueOrElse(getInteger(X), 0)
14421442 let fi = [fc, cV(cW, cX, cY)]
14431443 let fj = dd(de, dV.payments, dg, dh)
14441444 let fk = makeString_2C([ea[D], makeString(fd, "_"), makeString(fe, "_"), makeString_2C(ff, "_")], ":")
14451445 let fl = aE(invoke(aB, "updateBackpack", [S, fk], nil))
14461446 let fm = aH(invoke(aB, "updateDuckStats", [S, fraction(d, fg, aj)], nil))
14471447 $Tuple2(((fi ++ fj) :+ IntegerEntry(X, (ek + fq))), $Tuple5(dY, fh, fl, fm, dI))
14481448 }
14491449
14501450
14511451
14521452 @Callable(dV)
14531453 func acceptShopOrderLandDelivery (fn,dn,fr) = if (!(ab))
14541454 then throw("Delivery feature is turned off!")
14551455 else {
14561456 let dY = bD()
14571457 let dc = dV.originCaller
14581458 let cX = toString(dc)
14591459 let em = value(assetInfo(fromBase58String(fr)))
14601460 if (!(isDefined(getInteger(aB, M(fr)))))
14611461 then throw((("NFT " + em.name) + " is not staked"))
14621462 else {
14631463 let en = valueOrErrorMessage(getString(aB, K(fr)), (("NFT " + em.name) + " is orphaned"))
14641464 if ((en != cX))
14651465 then throw((e + " is not yours"))
14661466 else {
14671467 let dx = aE(invoke(aB, "getWarehouseREADONLY", [fr], nil))
14681468 let bW = split_4C(dx, ":")
14691469 let cI = split(bW[x], "_")
14701470 let cP = split(bW[y], "_")
14711471 let eD = if ((bW[z] == ""))
14721472 then nil
14731473 else split(bW[z], "_")
14741474 let fs = dm(dn, cX, fn, cI, cP, eD)
14751475 let fc = fs._1
14761476 let fd = fs._2
14771477 let fe = fs._3
14781478 let ff = fs._4
14791479 let cW = fs._5
14801480 let de = fs._6
14811481 let fg = fs._7
14821482 let dg = fs._8
14831483 let fh = fs._9
14841484 let dI = fs._10
14851485 let fp = fraction((de + cW), aU, ai)
14861486 let fq = if ((k > fp))
14871487 then k
14881488 else fp
14891489 let dh = fraction(fq, de, (de + cW))
14901490 let cY = (fq - dh)
14911491 let ek = valueOrElse(getInteger(X), 0)
14921492 let fi = [fc, cV(cW, cX, cY)]
14931493 let fj = dd(de, dV.payments, dg, dh)
14941494 let dF = makeString_2C([bW[w], makeString(fd, "_"), makeString(fe, "_"), makeString(ff, "_"), bW[A]], ":")
14951495 let dH = aE(invoke(aB, "saveWarehouse", [dF, fr], nil))
14961496 let ef = aH(invoke(aB, "updateAccStats", [cX, fraction(d, fg, aj)], nil))
14971497 $Tuple2(((fi ++ fj) :+ IntegerEntry(X, (ek + fq))), $Tuple5(dY, fh, dH, ef, dI))
14981498 }
14991499 }
15001500 }
15011501
15021502
15031503
15041504 @Callable(dV)
15051505 func sellProductsToES (cK) = {
15061506 let dY = bD()
15071507 if ((size(dV.payments) != 0))
15081508 then throw("No payments needed")
15091509 else {
15101510 let S = valueOrErrorMessage(getString(aB, P(toString(dV.caller))), "You don't have a duck staked")
15111511 let dZ = split(valueOrElse(getString(aB, T(S)), g), "_")
15121512 if ((dZ[I] != "A"))
15131513 then throw(("Duck location type should be Airport, but is " + dZ[I]))
15141514 else {
15151515 let ea = bA(R(S))
15161516 let eD = if ((ea[G] == ""))
15171517 then nil
15181518 else split_4C(ea[G], "_")
15191519 let ft = W()
15201520 let fu = getString(ft)
15211521 let fv = if (isDefined(fu))
15221522 then split_4C(value(fu), "_")
15231523 else nil
15241524 func fw (bF,fx) = {
15251525 let bH = bF._1
15261526 let ez = if ((size(cK) > bH))
15271527 then cK[bH]
15281528 else 0
15291529 if ((0 > ez))
15301530 then throw("Quantity cannot be negative")
15311531 else {
15321532 let aa = split(fx, "_")
15331533 if ((size(aa) != u))
15341534 then throw(("Fatal: unknown recipe: " + fx))
15351535 else {
15361536 let fy = (i * v)
15371537 let fz = if ((size(fv) > bH))
15381538 then parseIntValue(fv[bH])
15391539 else 0
15401540 let fA = (fy - fz)
15411541 if ((ez > fA))
15421542 then throw(((("Warehouse can buy only " + toString(fA)) + " of ") + o[bH]))
15431543 else {
15441544 let er = Z(aa)
15451545 let fB = fraction((er * j), h, (aj * v))
15461546 let fC = if ((size(eD) > bH))
15471547 then parseIntValue(eD[bH])
15481548 else 0
15491549 if ((ez > fC))
15501550 then throw(((("You have only " + toString(fC)) + " of ") + o[bH]))
15511551 else $Tuple5((bH + 1), (bF._2 + (fB * ez)), (bF._3 :+ toString((fC - ez))), (bF._4 :+ toString((fz + ez))), (bF._5 + (er * ez)))
15521552 }
15531553 }
15541554 }
15551555 }
15561556
15571557 let eM = {
15581558 let cj = r
15591559 let ck = size(cj)
15601560 let cl = $Tuple5(0, 0, nil, nil, 0)
15611561 func cm (cn,co) = if ((co >= ck))
15621562 then cn
15631563 else fw(cn, cj[co])
15641564
15651565 func cp (cn,co) = if ((co >= ck))
15661566 then cn
15671567 else throw("List size exceeds 50")
15681568
15691569 cp(cm(cm(cm(cm(cm(cm(cm(cm(cm(cm(cm(cm(cm(cm(cm(cm(cm(cm(cm(cm(cm(cm(cm(cm(cm(cm(cm(cm(cm(cm(cm(cm(cm(cm(cm(cm(cm(cm(cm(cm(cm(cm(cm(cm(cm(cm(cm(cm(cm(cm(cl, 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)
15701570 }
15711571 let fk = makeString_2C([ea[D], ea[E], ea[F], makeString_2C(eM._3, "_")], ":")
15721572 let fl = aE(invoke(aB, "updateBackpack", [S, fk], nil))
15731573 let ef = aH(invoke(aB, "updateDuckStats", [S, fraction(c, eM._5, (aj * 10))], nil))
15741574 $Tuple2([StringEntry(ft, makeString_2C(eM._4, "_")), ScriptTransfer(dV.caller, eM._2, ad)], $Tuple3(fl, dY, ef))
15751575 }
15761576 }
15771577 }
15781578
15791579
15801580
15811581 @Callable(dV)
15821582 func updateEsStorage (fD) = if ((dV.caller != aB))
15831583 then throw("Permission denied")
15841584 else $Tuple2([StringEntry(W(), fD)], fD)
15851585
15861586
15871587
15881588 @Callable(dV)
15891589 func updateDeliveryLocked (fE) = if ((dV.caller != aB))
15901590 then throw("Permission denied")
15911591 else $Tuple2([IntegerEntry(Y, fE)], fE)
15921592
15931593
15941594
15951595 @Callable(dV)
15961596 func sendDeliveryReward (O) = if ((dV.caller != aB))
15971597 then throw("Permission denied")
15981598 else {
15991599 let ek = valueOrElse(getInteger(X), 0)
16001600 let fF = valueOrElse(getInteger(Y), 0)
16011601 $Tuple2([ScriptTransfer(addressFromStringValue(O), k, ad), IntegerEntry(X, (ek - k)), IntegerEntry(Y, (fF - k))], k)
16021602 }
16031603
16041604

github/deemru/w8io/169f3d6 
163.33 ms