tx · 984XrwirZcLsRC5yGkY1jsauYM5totQnv5pL153FWfGi

3NAefciWv6f9fWvEXdGgpHfanJFG8HqfjuT:  -0.03100000 Waves

2022.09.26 15:22 [2246098] smart account 3NAefciWv6f9fWvEXdGgpHfanJFG8HqfjuT > SELF 0.00000000 Waves

{ "type": 13, "id": "984XrwirZcLsRC5yGkY1jsauYM5totQnv5pL153FWfGi", "fee": 3100000, "feeAssetId": null, "timestamp": 1664194968220, "version": 1, "sender": "3NAefciWv6f9fWvEXdGgpHfanJFG8HqfjuT", "senderPublicKey": "D1BL65meykxFZTCuq7jq9HSGLLnWvQamQPUNrguW5w39", "proofs": [ "3tUZaxGmYd2XghbTeoPnjYQ564oaCjwoTzosEQLJ9z94tvQ94d3VZayCpUqFdhJ7KLTLZWxXM7fHoxE6rLTXjeXK" ], "script": "base64:BgKFHwgCEgMKAQgSAwoBCBIAEgQKAgEEEgcKBQEBAQEEEgQKAgEEEgQKAgEIEgQKAgEIEgMKAQESABIHCgUBAQEIARIECgIIARIECgIIARIECgIIARIECgIBARIDCgEBEgUKAwEIARIECgIICBIECgIICBIECgIIARIAEgMKAQgSBQoDAQEBEgQKAggBEgQKAgEBEgQKAggIEgsKCQgBAQIBAggEBBIGCgQICAEIEgAiBnNjYWxlOCIMc2NhbGU4QmlnSW50IgdzY2FsZTE4Igp6ZXJvQmlnSW50IglvbmVCaWdJbnQiCnNsaXBwYWdlNEQiBUFtdWx0IgVEY29udiIDU0VQIgVFTVBUWSIKUG9vbEFjdGl2ZSIKUG9vbFB1dERpcyIOUG9vbE1hdGNoZXJEaXMiDFBvb2xTaHV0ZG93biIOaWR4UG9vbEFkZHJlc3MiCWlkeFBvb2xTdCIJaWR4TFBBc0lkIglpZHhBbUFzSWQiCWlkeFByQXNJZCILaWR4QW10QXNEY20iDWlkeFByaWNlQXNEY20iC2lkeElBbXRBc0lkIg1pZHhJUHJpY2VBc0lkIg9pZHhGYWN0U3Rha0NudHIiEGlkeEZhY3RTbGlwcENudHIiEWlkeEZhY3RHd3hSZXdDbnRyIgpmZWVEZWZhdWx0IgJ0MSIHb3JpZ1ZhbCINb3JpZ1NjYWxlTXVsdCICZjEiA3ZhbCIPcmVzdWx0U2NhbGVNdWx0IgJ0cyIDYW10IghyZXNTY2FsZSIIY3VyU2NhbGUiA2FicyICZmMiA21wayIEcG1wayICcGwiAnBoIgFoIgF0IgNwYXUiAnVhIgR0eElkIgNnYXUiAmFhIgJwYSIDYW1wIgNhZGEiBmtleUZlZSIDZmVlIgRmY2ZnIgRtdHBrIgJwYyIGaUFtdEFzIgVpUHJBcyIDbWJhIgViQVN0ciIDYXBzIhxrZXlBbGxvd2VkTHBTdGFibGVTY3JpcHRIYXNoIhZrZXlGZWVDb2xsZWN0b3JBZGRyZXNzIgN0b2UiA29yViIGc2VuZHJWIgZtYXRjaFYiA3N0ciIHJG1hdGNoMCIGdmFsU3RyIgRzdHJmIgRhZGRyIgNrZXkiBGludGYiA2ZjYSIBQSIDaWdzIgJtcCITZmVlQ29sbGVjdG9yQWRkcmVzcyIDZ3BjIgVhbXRBcyIHcHJpY2VBcyIIaVByaWNlQXMiA2dmYyINZmFjdG9yeUNvbmZpZyIPc3Rha2luZ0NvbnRyYWN0Ig9zbGlwYWdlQ29udHJhY3QiC2d3eENvbnRyYWN0IhFkYXRhUHV0QWN0aW9uSW5mbyINaW5BbXRBc3NldEFtdCIPaW5QcmljZUFzc2V0QW10IghvdXRMcEFtdCIFcHJpY2UiCnNsaXBCeVVzZXIiDHNsaXBwYWdlUmVhbCIIdHhIZWlnaHQiC3R4VGltZXN0YW1wIgxzbGlwYWdlQW1BbXQiDHNsaXBhZ2VQckFtdCIRZGF0YUdldEFjdGlvbkluZm8iDm91dEFtdEFzc2V0QW10IhBvdXRQcmljZUFzc2V0QW10IgdpbkxwQW10Ig1nZXRBY2NCYWxhbmNlIgdhc3NldElkIgRjcGJpIghwckFtdFgxOCIIYW1BbXRYMTgiA3ZhZCICQTEiAkEyIghzbGlwcGFnZSIEZGlmZiIEcGFzcyICdmQiAkQxIgJEMCIEc2xwZyIEZmFpbCIDcGNwIgphbUFzc2V0RGNtIgpwckFzc2V0RGNtIgVhbUFtdCIFcHJBbXQiC2FtdEFzQW10WDE4IgpwckFzQW10WDE4IgpjYWxjUHJpY2VzIgVscEFtdCIDY2ZnIghhbXRBc0RjbSIHcHJBc0RjbSIIcHJpY2VYMTgiCGxwQW10WDE4Ig1scFBySW5BbUFzWDE4Ig1scFBySW5QckFzWDE4Ig9jYWxjdWxhdGVQcmljZXMiAXAiB3Rha2VGZWUiBmFtb3VudCIJZmVlQW1vdW50IgNlZ28iBnR4SWQ1OCIKcG10QXNzZXRJZCIIcG10THBBbXQiC3VzZXJBZGRyZXNzIgRscElkIgRhbUlkIgRwcklkIgVhbURjbSIFcHJEY20iA3N0cyIHbHBFbWlzcyIJYW1CYWxhbmNlIgxhbUJhbGFuY2VYMTgiCXByQmFsYW5jZSIMcHJCYWxhbmNlWDE4IgtjdXJQcmljZVgxOCIIY3VyUHJpY2UiC3BtdExwQW10WDE4IgpscEVtaXNzWDE4IgtvdXRBbUFtdFgxOCILb3V0UHJBbXRYMTgiCG91dEFtQW10IghvdXRQckFtdCIFc3RhdGUiA2VwbyIHaW5BbUFtdCIGaW5BbUlkIgdpblByQW10IgZpblBySWQiBmlzRXZhbCIGZW1pdExwIgppc09uZUFzc2V0IhB2YWxpZGF0ZVNsaXBwYWdlIgZwbXRBbXQiBXBtdElkIgdhbUlkU3RyIgdwcklkU3RyIglpbkFtSWRTdHIiCWluUHJJZFN0ciIGYW10RGNtIghwcmljZURjbSIEbHBFbSIPaW5BbUFzc2V0QW10WDE4Ig9pblByQXNzZXRBbXRYMTgiDHVzZXJQcmljZVgxOCIBciILc2xpcHBhZ2VYMTgiD3NsaXBwYWdlUmVhbFgxOCINbHBFbWlzc2lvblgxOCIKcHJWaWFBbVgxOCIKYW1WaWFQclgxOCIMZXhwZWN0ZWRBbXRzIhFleHBBbXRBc3NldEFtdFgxOCITZXhwUHJpY2VBc3NldEFtdFgxOCIJY2FsY0xwQW10Ig5jYWxjQW1Bc3NldFBtdCIOY2FsY1ByQXNzZXRQbXQiDHNsaXBwYWdlQ2FsYyIJZW1pdExwQW10IgZhbURpZmYiBnByRGlmZiINJHQwMTYyMzcxNjU4MiIKd3JpdGVBbUFtdCIKd3JpdGVQckFtdCILY29tbW9uU3RhdGUiA21vYSIFb3JkZXIiB2FtdEFzSWQiBnByQXNJZCIPYWNjQW10QXNCYWxhbmNlIg5hY2NQckFzQmFsYW5jZSIKb3JBbXRBc3NldCIKb3JBbXRBc1N0ciIJb3JQckFzc2V0IglvclByQXNTdHIiCm9yZGVyUHJpY2UiDmNhc3RPcmRlclByaWNlIhFpc09yZGVyUHJpY2VWYWxpZCICY2ciAWkiA3BtdCICY3AiBmNhbGxlciIHYW1Bc1BtdCIHcHJBc1BtdCITZXN0aW1hdGVQdXRPbmVUa25WMiIJcG10QW10UmF3Igpwb29sQ29uZmlnIg0kdDAyMDkwODIwOTUzIg0kdDAyMDk1NzIxNDE4IgxhbUJhbGFuY2VOb3ciDHByQmFsYW5jZU5vdyINJHQwMjE0MjIyMTU1NiIQYW1CYWxhbmNlRm9yQ2FsYyIQcHJCYWxhbmNlRm9yQ2FsYyIKeFByZWNpc2lvbiIGcmVzdWx0IgFAIg0kdDAyMjAyNTIyMTIxIgthbUFzc2V0UGFydCILcHJBc3NldFBhcnQiBmVzdFB1dCIHZXN0aW1MUCIJbHBBc3NldElkIhNnZXRPbmVUa25WMkludGVybmFsIgpvdXRBc3NldElkIgxtaW5PdXRBbW91bnQiCHBheW1lbnRzIgxvcmlnaW5DYWxsZXIiDXRyYW5zYWN0aW9uSWQiCmFtRGVjaW1hbHMiCnByRGVjaW1hbHMiCnBvb2xTdGF0dXMiDSR0MDIzNDc2MjM1ODQiCHRvdGFsR2V0Igt0b3RhbEFtb3VudCINJHQwMjM3NzEyMzg1OCIFb3V0QW0iBW91dFByIghjdXJQclgxOCIFY3VyUHIiEW91dEFzc2V0SWRPcldhdmVzIhBzZW5kRmVlVG9NYXRjaGVyIgRidXJuIgFtIgFzIgJwbSICcGQiAm1tIgJwayIBYyIXcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkiAmNtIgNocG0iA2NwbSIEc2xpcCIJYXV0b1N0YWtlIgdmYWN0Q2ZnIgtzdGFraW5nQ250ciIIc2xpcENudHIiAWUiAmVsIgZsZWdhY3kiAnNhIgJzcCIIbHBUcm5zZnIiAnNzIgVvdXRMcCIHZ3d4Q250ciIHcG9vbENmZyIFYWRkb24iEHBheW1lbnRBbW91bnRSYXciDSR0MDI5MjQ0MjkyOTYiDSR0MDI5NDU2MzAwNzIiDHZpcnRTd2FwSW5BbSINdmlydFN3YXBPdXRQciIMdmlydFN3YXBJblByIg12aXJ0U3dhcE91dEFtIgZEMHZzRDEiCWxwQ2FsY1JlcyINcGF5bWVudEFtb3VudCIOcGF5bWVudEFzc2V0SWQiD2xwQXNzZXRFbWlzc2lvbiINJHQwMzUwOTUzNTQwNCIQcHJpY2VBc3NldEFtb3VudCIRYW1vdW50QXNzZXRBbW91bnQiCWxwQW10Qm90aCIPbHBBc3NldFByaWNlT25lIhBscEFzc2V0UHJpY2VCb3RoIgVib251cyIHbWF4U2xwZyIJb3V0QW10QW10IgFiIgpleGNoUmVzdWx0Igdub3RVc2VkIglvdXRBbW91bnQiCmVzdGltQW1BbXQiCmVzdGltUHJBbXQiDSR0MDM4NzUwMzkyMTAiC3RvdGFsR2V0UmF3IghmaW5hbFJlcyINJHQwMzk5NTc0MDA2MSINJHQwNDEwODY0MTI0MSINbHBBc3NldEFtb3VudCINJHQwNDE3NTE0MjAyMiIUYW1vdW50QmFsYW5jZUZvclN3YXAiE3ByaWNlQmFsYW5jZUZvclN3YXAiDGFtb3VudFRvU3dhcCIKeVByZWNpc2lvbiINJHQwNDI1OTQ0MjY0MyINJHQwNDI5ODc0MzEwMiISbm9MZXNzVGhlbkFtdEFzc2V0IhRub0xlc3NUaGVuUHJpY2VBc3NldCIUYnVybkxQQXNzZXRPbkZhY3RvcnkiDWNoZWNrUGF5bWVudHMiCmZhY3RvcnlDZmciB3N0YWtpbmciCnVuc3Rha2VJbnYiAXYiBWJ1cm5BIg11bnN0YWtlQW1vdW50Ig0kdDA0NTUyMjQ1NzEwIghhbXRBc1N0ciIHcHJBc1N0ciIBayICcHIiDHJlc1NjYWxlTXVsdCIHdXNyQWRkciIHcG10QXNJZCICdHgiBnZlcmlmeSIPdGFyZ2V0UHVibGljS2V5IgptYXRjaGVyUHViIgpvcmRlclZhbGlkIgtzZW5kZXJWYWxpZCIMbWF0Y2hlclZhbGlkIgduZXdIYXNoIgthbGxvd2VkSGFzaCILY3VycmVudEhhc2hXAAFhAIDC1y8AAWIJALYCAQCAwtcvAAFjCQC2AgEAgICQu7rWrfANAAFkCQC2AgEAAAABZQkAtgIBAAEAAWYJALYCAQkAZQIFAWEJAGkCCQBoAgUBYQABBQFhAAFnAgMxMDAAAWgCATEAAWkCAl9fAAFqAgAAAWsAAQABbAACAAFtAAMAAW4ABAABbwABAAFwAAIAAXEAAwABcgAEAAFzAAUAAXQABgABdQAHAAF2AAgAAXcACQABeAABAAF5AAcAAXoACgABQQkAawMABQUBYQCQTgEBQgIBQwFECQC8AgMJALYCAQUBQwUBYwkAtgIBBQFEAQFFAgFGAUcJAKADAQkAvAIDBQFGCQC2AgEFAUcFAWMBAUgDAUkBSgFLCQBrAwUBSQUBSgUBSwEBTAEBRgMJAL8CAgUBZAUBRgkAvgIBBQFGBQFGAQFNAAITJXNfX2ZhY3RvcnlDb250cmFjdAEBTgACFCVzX19tYW5hZ2VyUHVibGljS2V5AQFPAAIbJXNfX3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5AQFQAAIRJXMlc19fcHJpY2VfX2xhc3QBAVECAVIBUwkAuQkCCQDMCAICGCVzJXMlZCVkX19wcmljZV9faGlzdG9yeQkAzAgCCQCkAwEFAVIJAMwIAgkApAMBBQFTBQNuaWwFAWkBAVQCAVUBVgkArAICCQCsAgIJAKwCAgILJXMlcyVzX19QX18FAVUCAl9fBQFWAQFXAgFVAVYJAKwCAgkArAICCQCsAgICCyVzJXMlc19fR19fBQFVAgJfXwUBVgEBWAACDyVzX19hbW91bnRBc3NldAEBWQACDiVzX19wcmljZUFzc2V0AQFaAAIHJXNfX2FtcAECYWEAAg0lc19fYWRkb25BZGRyAAJhYgIHJXNfX2ZlZQACYWMJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUCYWIFAUEBAmFkAAIRJXNfX2ZhY3RvcnlDb25maWcBAmFlAAIYJXMlc19fbWF0Y2hlcl9fcHVibGljS2V5AQJhZgICYWcCYWgJAKwCAgkArAICCQCsAgIJAKwCAgIIJWQlZCVzX18FAmFnAgJfXwUCYWgCCF9fY29uZmlnAQJhaQECYWoJAKwCAgIoJXMlcyVzX19tYXBwaW5nc19fYmFzZUFzc2V0MmludGVybmFsSWRfXwUCYWoBAmFrAAIMJXNfX3NodXRkb3duAQJhbAACHSVzX19hbGxvd2VkTHBTdGFibGVTY3JpcHRIYXNoAQJhbQACFyVzX19mZWVDb2xsZWN0b3JBZGRyZXNzAQJhbgMCYW8CYXACYXEJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIRRmFpbGVkOiBvcmRWYWxpZD0JAKUDAQUCYW8CCyBzbmRyVmFsaWQ9CQClAwEFAmFwAgwgbXRjaHJWYWxpZD0JAKUDAQUCYXEBAmFyAQFGBAJhcwUBRgMJAAECBQJhcwIGU3RyaW5nBAJhdAUCYXMFAmF0CQACAQITZmFpbCBjYXN0IHRvIFN0cmluZwECYXUCAmF2AmF3CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUCYXYFAmF3CQC5CQIJAMwIAgIKbWFuZGF0b3J5IAkAzAgCCQClCAEFAmF2CQDMCAICAS4JAMwIAgUCYXcJAMwIAgIMIG5vdCBkZWZpbmVkBQNuaWwCAAECYXgCAmF2AmF3CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUCYXYFAmF3CQC5CQIJAMwIAgIKbWFuZGF0b3J5IAkAzAgCCQClCAEFAmF2CQDMCAICAS4JAMwIAgUCYXcJAMwIAgIMIG5vdCBkZWZpbmVkBQNuaWwCAAACYXkJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQJhdQIFBHRoaXMJAQFNAAACYXoJAQJhdQIFBHRoaXMJAQFaAAECYUEACQELdmFsdWVPckVsc2UCCQCbCAIFAmF5CQECYWsABwECYUIACQDZBAEJAQJhdQIFAmF5CQECYWUAAAJhQwkBEUBleHRyTmF0aXZlKDEwNjIpAQkBAmF1AgUCYXkJAQJhbQABAmFEAAQCYUUJAQJhdQIFBHRoaXMJAQFYAAQCYUYJAQJhdQIFBHRoaXMJAQFZAAQCYUcJAQJheAIFAmF5CQECYWkBBQJhRgQCYWcJAQJheAIFAmF5CQECYWkBBQJhRQkAtQkCCQECYXUCBQJheQkBAmFmAgkApAMBBQJhZwkApAMBBQJhRwUBaQECYUgACQC1CQIJAQJhdQIFAmF5CQECYWQABQFpAAJhSQkBAmFIAAACYUoJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmFJBQF4AiBJbnZhbGlkIHN0YWtpbmcgY29udHJhY3QgYWRkcmVzcwACYUsJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmFJBQF5AiBJbnZhbGlkIHNsaXBhZ2UgY29udHJhY3QgYWRkcmVzcwACYUwJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmFJBQF6AhxJbnZhbGlkIGd3eCBjb250cmFjdCBhZGRyZXNzAQJhTQoCYU4CYU8CYVACYVECYVICYVMCYVQCYVUCYVYCYVcJALkJAgkAzAgCAhQlZCVkJWQlZCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFAmFOCQDMCAIJAKQDAQUCYU8JAMwIAgkApAMBBQJhUAkAzAgCCQCkAwEFAmFRCQDMCAIJAKQDAQUCYVIJAMwIAgkApAMBBQJhUwkAzAgCCQCkAwEFAmFUCQDMCAIJAKQDAQUCYVUJAMwIAgkApAMBBQJhVgkAzAgCCQCkAwEFAmFXBQNuaWwFAWkBAmFYBgJhWQJhWgJiYQJhUQJhVAJhVQkAuQkCCQDMCAICDCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFAmFZCQDMCAIJAKQDAQUCYVoJAMwIAgkApAMBBQJiYQkAzAgCCQCkAwEFAmFRCQDMCAIJAKQDAQUCYVQJAMwIAgkApAMBBQJhVQUDbmlsBQFpAQJiYgECYmMDCQAAAgUCYmMCBVdBVkVTCAkA7wcBBQR0aGlzCWF2YWlsYWJsZQkA8AcCBQR0aGlzCQDZBAEFAmJjAQJiZAICYmUCYmYJALwCAwUCYmUFAWMFAmJmAQJiZwMCYmgCYmkCYmoEAmJrCQC8AgMJALgCAgUCYmgFAmJpBQFiBQJiaQQCYmwJAL8CAgkAuAICBQJiagkBAUwBBQJiawUBZAMJAQEhAQUCYmwJAAIBCQCsAgICCkJpZyBzbHBnOiAJAKYDAQUCYmsJAJQKAgUCYmwJAJkDAQkAzAgCBQJiaAkAzAgCBQJiaQUDbmlsAQJibQMCYm4CYm8CYnAEAmJrCQC8AgMFAmJvBQFiBQJibgQCYnEJAL8CAgUCYnAFAmJrAwMFAmJxBgkAvwICBQJibwUCYm4JAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCmAwEFAmJvAgEgCQCmAwEFAmJuAgEgCQCmAwEFAmJrAgEgCQCmAwEFAmJwBQJicQECYnIEAmJzAmJ0AmJ1AmJ2BAJidwkBAUICBQJidQUCYnMEAmJ4CQEBQgIFAmJ2BQJidAkBAmJkAgUCYngFAmJ3AQJieQMCYnUCYnYCYnoEAmJBCQECYUQABAJiQgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJBBQF0BAJiQwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJBBQF1BAJiRAkBAmJyBAUCYkIFAmJDBQJidQUCYnYEAmJmCQEBQgIFAmJ1BQJiQgQCYmUJAQFCAgUCYnYFAmJDBAJiRQkBAUICBQJiegUBYQQCYkYJAQJiZAIFAmJmBQJiRQQCYkcJAQJiZAIFAmJlBQJiRQkAzAgCBQJiRAkAzAgCBQJiRgkAzAgCBQJiRwUDbmlsAQJiSAMCYnUCYnYCYnoEAmJJCQECYnkDBQJidQUCYnYFAmJ6CQDMCAIJAQFFAgkAkQMCBQJiSQAABQFhCQDMCAIJAQFFAgkAkQMCBQJiSQABBQFhCQDMCAIJAQFFAgkAkQMCBQJiSQACBQFhBQNuaWwBAmJKAQJiSwQCYkwJAGsDBQJiSwUCYWMFAWEJAJQKAgkAZQIFAmJLBQJiTAUCYkwBAmJNBAJiTgJiTwJiUAJiUQQCYkEJAQJhRAAEAmJSCQCRAwIFAmJBBQFxBAJiUwkAkQMCBQJiQQUBcgQCYlQJAJEDAgUCYkEFAXMEAmJVCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYkEFAXQEAmJWCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYkEFAXUEAmJXCQCRAwIFAmJBBQFwBAJiWAgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBCQDZBAEFAmJSAgtXcm9uZyBMUCBpZAhxdWFudGl0eQMJAQIhPQIFAmJSBQJiTwkAAgECD1dyb25nIHBtdCBhc3NldAQCYlkJAQJiYgEFAmJTBAJiWgkBAUICBQJiWQUCYlUEAmNhCQECYmIBBQJiVAQCY2IJAQFCAgUCY2EFAmJWBAJjYwkBAmJkAgUCY2IFAmJaBAJjZAkBAUUCBQJjYwUBYQQCY2UJAQFCAgUCYlAFAWEEAmNmCQEBQgIFAmJYBQFhBAJjZwkAvAIDBQJiWgUCY2UFAmNmBAJjaAkAvAIDBQJjYgUCY2UFAmNmBAJjaQkBAUUCBQJjZwUCYlUEAmNqCQEBRQIFAmNoBQJiVgQCY2sDCQAAAgUCYk4CAAUDbmlsCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmJRBQJjaQMJAAACBQJiUwIFV0FWRVMFBHVuaXQJANkEAQUCYlMJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYlEFAmNqAwkAAAIFAmJUAgVXQVZFUwUEdW5pdAkA2QQBBQJiVAkAzAgCCQELU3RyaW5nRW50cnkCCQEBVwIJAKUIAQUCYlEFAmJOCQECYVgGBQJjaQUCY2oFAmJQBQJjZAUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVAABQJjZAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVECBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJjZAUDbmlsCQCcCgoFAmNpBQJjagUCYlMFAmJUBQJiWQUCY2EFAmJYBQJjYwUCYlcFAmNrAQJjbA0CYk4CYmoCY20CY24CY28CY3ACYlECY3ECY3ICY3MCY3QCY3UCY3YEAmJBCQECYUQABAJiUgkA2QQBCQCRAwIFAmJBBQFxBAJjdwkAkQMCBQJiQQUBcgQCY3gJAJEDAgUCYkEFAXMEAmN5CQCRAwIFAmJBBQF2BAJjegkAkQMCBQJiQQUBdwQCY0EJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiQQUBdAQCY0IJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiQQUBdQQCYlcJAJEDAgUCYkEFAXAEAmNDCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFAmJSAghXciBscCBhcwhxdWFudGl0eQQCYlkDBQJjcQkBAmJiAQUCY3cDAwUCY3MJAAACBQJjdgUCY3cHCQBlAgkBAmJiAQUCY3cFAmN1AwUCY3MJAQJiYgEFAmN3CQBlAgkBAmJiAQUCY3cFAmNtBAJjYQMFAmNxCQECYmIBBQJjeAMDBQJjcwkAAAIFAmN2BQJjeAcJAGUCCQECYmIBBQJjeAUCY3UDBQJjcwkBAmJiAQUCY3gJAGUCCQECYmIBBQJjeAUCY28EAmNECQEBQgIFAmNtBQJjQQQCY0UJAQFCAgUCY28FAmNCBAJjRgkBAmJkAgUCY0UFAmNEBAJiWgkBAUICBQJiWQUCY0EEAmNiCQEBQgIFAmNhBQJjQgQCY0cDCQAAAgUCY0MAAAQCY2MFAWQEAmNIBQFkBAJiRQkAdgYJALkCAgUCY0QFAmNFAAAJALYCAQAFAAEAAAUERE9XTgkAlwoFCQEBRQIFAmJFBQFhCQEBRQIFAmNEBQJjQQkBAUUCBQJjRQUCY0IJAQJiZAIJALcCAgUCY2IFAmNFCQC3AgIFAmJaBQJjRAUCY0gEAmNjCQECYmQCBQJjYgUCYloEAmNJCQC8AgMJAQFMAQkAuAICBQJjYwUCY0YFAWMFAmNjBAJjSAkBAUICBQJiagUBYQMDAwUCY3QJAQIhPQIFAmNjBQFkBwkAvwICBQJjSQUCY0gHCQACAQkArAICCQCsAgIJAKwCAgIPUHJpY2Ugc2xpcHBhZ2UgCQCmAwEFAmNJAgMgPiAJAKYDAQUCY0gEAmNKCQEBQgIFAmNDBQFhBAJjSwkAvAIDBQJjRAUCY2MFAWMEAmNMCQC8AgMFAmNFBQFjBQJjYwQCY00DCQC/AgIFAmNLBQJjRQkAlAoCBQJjTAUCY0UJAJQKAgUCY0QFAmNLBAJjTggFAmNNAl8xBAJjTwgFAmNNAl8yBAJiRQkAvAIDBQJjSgUCY08FAmNiCQCXCgUJAQFFAgUCYkUFAWEJAQFFAgUCY04FAmNBCQEBRQIFAmNPBQJjQgUCY2MFAmNIBAJjUAgFAmNHAl8xBAJjUQgFAmNHAl8yBAJjUggFAmNHAl8zBAJjZAkBAUUCCAUCY0cCXzQFAWEEAmNTCQEBRQIIBQJjRwJfNQUBYQMJAGcCAAAFAmNQCQACAQIHTFAgPD0gMAQCY1QDCQEBIQEFAmNyAAAFAmNQBAJjVQkAZQIFAmNtBQJjUQQCY1YJAGUCBQJjbwUCY1IEAmNXAwMFAmNzCQAAAgUCY3YFAmN3BwkAlAoCBQJjdQAAAwMFAmNzCQAAAgUCY3YFAmN4BwkAlAoCAAAFAmN1CQCUCgIFAmNRBQJjUgQCY1gIBQJjVwJfMQQCY1kIBQJjVwJfMgQCY1oJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFQAAUCY2QJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFRAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCY2QJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVQCBQJiUQUCYk4JAQJhTQoFAmNYBQJjWQUCY1QFAmNkBQJiagUCY1MFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmNVBQJjVgUDbmlsCQCfCg0FAmNQBQJjVAUCY2QFAmJZBQJjYQUCY0MFAmJSBQJiVwUCY1oFAmNVBQJjVgUCY24FAmNwAQJkYQECZGIEAmJBCQECYUQABAJkYwkAkQMCBQJiQQUBcgQCZGQJAJEDAgUCYkEFAXMEAmJXCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYkEFAXAEAmJCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYkEFAXQEAmJDCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYkEFAXUEAmRlCQECYmIBBQJkYwQCZGYJAQJiYgEFAmRkBAJjYwMJAAACCAUCZGIJb3JkZXJUeXBlBQNCdXkJAQJicgQFAmJCBQJiQwkAZAIFAmRlCAUCZGIGYW1vdW50BQJkZgkBAmJyBAUCYkIFAmJDCQBlAgUCZGUIBQJkYgZhbW91bnQFAmRmBAJjZAkBAUUCBQJjYwUBYQMDAwkBAmFBAAYJAAACBQJiVwUBbQYJAAACBQJiVwUBbgkAAgECDUFkbWluIGJsb2NrZWQEAmRnCAgFAmRiCWFzc2V0UGFpcgthbW91bnRBc3NldAQCZGgDCQAAAgUCZGcFBHVuaXQCBVdBVkVTCQDYBAEJAQV2YWx1ZQEFAmRnBAJkaQgIBQJkYglhc3NldFBhaXIKcHJpY2VBc3NldAQCZGoDCQAAAgUCZGkFBHVuaXQCBVdBVkVTCQDYBAEJAQV2YWx1ZQEFAmRpAwMJAQIhPQIFAmRoBQJkYwYJAQIhPQIFAmRqBQJkZAkAAgECCVdyIGFzc2V0cwQCZGsIBQJkYgVwcmljZQQCY0IJAGsDBQFhBQJiQwUCYkIEAmRsCQEBSAMFAmRrBQFhBQJjQgQCZG0DCQAAAggFAmRiCW9yZGVyVHlwZQUDQnV5CQBnAgUCY2QFAmRsCQBnAgUCZGwFAmNkBgECZG4BAmRvAwkBAiE9AgkAkAMBCAUCZG8IcGF5bWVudHMAAQkAAgECCjEgcG1udCBleHAEAmRwCQEFdmFsdWUBCQCRAwIIBQJkbwhwYXltZW50cwAABAJiTwkBBXZhbHVlAQgFAmRwB2Fzc2V0SWQEAmN1CAUCZHAGYW1vdW50BAJjRwkBAmJNBAkA2AQBCAUCZG8NdHJhbnNhY3Rpb25JZAkA2AQBBQJiTwUCY3UIBQJkbwZjYWxsZXIEAmNpCAUCY0cCXzEEAmNqCAUCY0cCXzIEAmJXCQENcGFyc2VJbnRWYWx1ZQEIBQJjRwJfOQQCY2sIBQJjRwNfMTADAwkBAmFBAAYJAAACBQJiVwUBbgkAAgEJAKwCAgIPQWRtaW4gYmxvY2tlZDogCQCkAwEFAmJXCQCXCgUFAmNpBQJjagUCY3UFAmJPBQJjawECZHEKAmRyAVYCZHMCZHQCYmoCY3ICY3MCY3QCY3UCY3YEAmNHCQECY2wNBQFWBQJiaggJAQV2YWx1ZQEFAmRzBmFtb3VudAgJAQV2YWx1ZQEFAmRzB2Fzc2V0SWQICQEFdmFsdWUBBQJkdAZhbW91bnQICQEFdmFsdWUBBQJkdAdhc3NldElkBQJkcgcFAmNyBQJjcwUCY3QFAmN1BQJjdgQCYlcJAQ1wYXJzZUludFZhbHVlAQgFAmNHAl84AwMDCQECYUEABgkAAAIFAmJXBQFsBgkAAAIFAmJXBQFuCQACAQkArAICAghCbG9ja2VkOgkApAMBBQJiVwUCY0cBAmR1BAJkdgJiTwJiUQFWBAJkdwkBAmFEAAQCYlMJAJEDAgUCZHcFAXIEAmJUCQCRAwIFAmR3BQFzBAJiWQkBAmJiAQUCYlMEAmNhCQECYmIBBQJiVAQCZHgJAQJiSgEFAmR2BAJjdQgFAmR4Al8xBAJiTAgFAmR4Al8yBAJkeQMJAAACBQFWAgAJAJQKAgUCYlkFAmNhAwkAAAIFAmJPBQJiUwMJAGYCBQJkdgUCYlkJAAIBAhZpbnZhbGlkIHBheW1lbnQgYW1vdW50CQCUCgIJAGUCBQJiWQUCZHYFAmNhAwkAAAIFAmJPBQJiVAMJAGYCBQJkdgUCY2EJAAIBAhZpbnZhbGlkIHBheW1lbnQgYW1vdW50CQCUCgIFAmJZCQBlAgUCY2EFAmR2CQACAQIQd3JvbmcgcG10QXNzZXRJZAQCZHoIBQJkeQJfMQQCZEEIBQJkeQJfMgQCZEIDCQAAAgUCYk8FAmJTCQCUCgIFAmR6BQJkQQkAlAoCBQJkQQUCZHoEAmRDCAUCZEICXzEEAmRECAUCZEICXzIEAmRFAAEEAmRGCgACZEcJAPwHBAUCYUwCDGNhbGNQdXRYT25seQkAzAgCCQCkAwEFAmN1CQDMCAIJAKQDAQUCZEMJAMwIAgkApAMBBQJkRAkAzAgCAgAJAMwIAgUCYXoJAMwIAgUBZwkAzAgCCQCkAwEFAmRFCQDMCAIFAWgFA25pbAUDbmlsAwkAAQIFAmRHAgooSW50LCBJbnQpBQJkRwkAAgEJAKwCAgkAAwEJAPwHBAUCYUwCDGNhbGNQdXRYT25seQkAzAgCCQCkAwEFAmN1CQDMCAIJAKQDAQUCZEMJAMwIAgkApAMBBQJkRAkAzAgCAgAJAMwIAgUCYXoJAMwIAgUBZwkAzAgCCQCkAwEFAmRFCQDMCAIFAWgFA25pbAUDbmlsAh8gY291bGRuJ3QgYmUgY2FzdCB0byAoSW50LCBJbnQpBAJkSAMJAAACBQJiTwUCYlMFAmRGCQCUCgIIBQJkRgJfMggFAmRGAl8xBAJkSQgFAmRIAl8xBAJkSggFAmRIAl8yBAJkSwkBAmRxCgUCYlEFAVYJAQ9BdHRhY2hlZFBheW1lbnQCCQDZBAEFAmJTBQJkSQkBD0F0dGFjaGVkUGF5bWVudAIJANkEAQUCYlQFAmRKAAAGBgcFAmR2BQJiTwQCZEwIBQJkSwJfMgQCZE0IBQJkSwJfNwQCY2sIBQJkSwJfOQQCY1UIBQJkSwNfMTAEAmNWCAUCZEsDXzExBQJkSwECZE4GAmRPAmRQAmRRAmRyAmRSAmRTAwkBAiE9AgkAkAMBBQJkUQABCQACAQILMSBwbW50IGV4cGQEAmR3CQECYUQABAJiUgkAkQMCBQJkdwUBcQQCYlMJAJEDAgUCZHcFAXIEAmJUCQCRAwIFAmR3BQFzBAJkVAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmR3BQF0BAJkVQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmR3BQF1BAJkVgkAkQMCBQJkdwUBcAQCYlEDCQAAAgUCZHIFBHRoaXMFAmRSBQJkcgQCZHAJAQV2YWx1ZQEJAJEDAgUCZFEAAAQCYk8JAQV2YWx1ZQEIBQJkcAdhc3NldElkBAJjdQgFAmRwBmFtb3VudAMJAGYCAICU69wDBQJjdQkAAgECDU1pbiBwbXQgMTAgTFAEAmJOCQDYBAEFAmRTAwkBAiE9AgUCYlIJANgEAQUCYk8JAAIBAghXcm9uZyBMUAQCYlkJAQJiYgEFAmJTBAJjYQkBAmJiAQUCYlQEAmRXCgACZEcJAPwHBAUEdGhpcwITZ2V0T25lVGtuVjJSRUFET05MWQkAzAgCBQJkTwkAzAgCBQJjdQUDbmlsBQNuaWwDCQABAgUCZEcCCihJbnQsIEludCkFAmRHCQACAQkArAICCQADAQkA/AcEBQR0aGlzAhNnZXRPbmVUa25WMlJFQURPTkxZCQDMCAIFAmRPCQDMCAIFAmN1BQNuaWwFA25pbAIfIGNvdWxkbid0IGJlIGNhc3QgdG8gKEludCwgSW50KQQCZFgIBQJkVwJfMQQCYkwIBQJkVwJfMgQCZFkDAwkAZgIFAmRQAAAJAGYCBQJkUAUCZFgHCQACAQkAuQkCCQDMCAICH2Ftb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJkUAUDbmlsAgAFAmRYBAJkWgMJAAACBQJkTwUCYlMJAJQKAgUCZFkAAAkAlAoCAAAFAmRZBAJlYQgFAmRaAl8xBAJlYggFAmRaAl8yBAJlYwkBAmJkAgkBAUICBQJjYQUCZFUJAQFCAgUCYlkFAmRUBAJlZAkBAUUCBQJlYwUBYQQCZWUDCQAAAgUCZE8CBVdBVkVTBQR1bml0CQDZBAEFAmRPBAJlZgMJAGYCBQJiTAAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmFDBQJiTAUCZWUFA25pbAUDbmlsBAJjawkAzggCCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmJRBQJkWQUCZWUJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVcCCQClCAEFAmJRBQJiTgkBAmFYBgUCZWEFAmViBQJjdQUCZWQFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFQAAUCZWQJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFRAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCZWQFA25pbAUCZWYDCQAAAgUCY2sFAmNrBAJlZwkA/AcEBQJheQIEYnVybgkAzAgCBQJjdQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJiTwUCY3UFA25pbAMJAAACBQJlZwUCZWcJAJQKAgUCY2sFAmRZCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJlaAAEAmFzCQCiCAEJAQFOAAMJAAECBQJhcwIGU3RyaW5nBAJlaQUCYXMJANkEAQUCZWkDCQABAgUCYXMCBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgECZWoABAJhcwkAoggBCQEBTwADCQABAgUCYXMCBlN0cmluZwQCZWkFAmFzCQDZBAEFAmVpAwkAAQIFAmFzAgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IAAmVrCQACAQIRUGVybWlzc2lvbiBkZW5pZWQBAmVsAQJkbwQCYXMJAQJlaAADCQABAgUCYXMCCkJ5dGVWZWN0b3IEAmVtBQJhcwMJAAACCAUCZG8PY2FsbGVyUHVibGljS2V5BQJlbQYFAmVrAwkAAQIFAmFzAgRVbml0AwkAAAIIBQJkbwZjYWxsZXIFBHRoaXMGBQJlawkAAgECC01hdGNoIGVycm9yHQJkbwELY29uc3RydWN0b3IBAU0EAmVuCQECZWwBBQJkbwMJAAACBQJlbgUCZW4JAMwIAgkBC1N0cmluZ0VudHJ5AgkBAU0ABQFNBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZG8BCnNldE1hbmFnZXIBAmVvBAJlbgkBAmVsAQUCZG8DCQAAAgUCZW4FAmVuBAJlcAkA2QQBBQJlbwMJAAACBQJlcAUCZXAJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAU8ABQJlbwUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRvAQ5jb25maXJtTWFuYWdlcgAEAmJJCQECZWoABAJlcQMJAQlpc0RlZmluZWQBBQJiSQYJAAIBAhJObyBwZW5kaW5nIG1hbmFnZXIDCQAAAgUCZXEFAmVxBAJlcgMJAAACCAUCZG8PY2FsbGVyUHVibGljS2V5CQEFdmFsdWUBBQJiSQYJAAIBAhtZb3UgYXJlIG5vdCBwZW5kaW5nIG1hbmFnZXIDCQAAAgUCZXIFAmVyCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFOAAkA2AQBCQEFdmFsdWUBBQJiSQkAzAgCCQELRGVsZXRlRW50cnkBCQEBTwAFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkbwEDcHV0AgJlcwJldAQCZXUJAQJhSAAEAmV2CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJldQUBeAIKV3Igc3QgYWRkcgQCZXcJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmV1BQF5AgpXciBzbCBhZGRyAwkAZgIAAAUCZXMJAAIBAg5Xcm9uZyBzbGlwcGFnZQMJAQIhPQIJAJADAQgFAmRvCHBheW1lbnRzAAIJAAIBAgwyIHBtbnRzIGV4cGQEAmV4CQECZHEKCQClCAEIBQJkbwZjYWxsZXIJANgEAQgFAmRvDXRyYW5zYWN0aW9uSWQJAQ9BdHRhY2hlZFBheW1lbnQCCAkBBXZhbHVlAQkAkQMCCAUCZG8IcGF5bWVudHMAAAdhc3NldElkCAkBBXZhbHVlAQkAkQMCCAUCZG8IcGF5bWVudHMAAAZhbW91bnQJAJEDAggFAmRvCHBheW1lbnRzAAEFAmVzBgcGAAACAAQCY1QIBQJleAJfMgQCZE0IBQJleAJfNwQCY2sIBQJleAJfOQQCY1UIBQJleANfMTAEAmNWCAUCZXgDXzExBAJiUwgFAmV4A18xMgQCYlQIBQJleANfMTMEAmNHCQD8BwQFAmF5AgRlbWl0CQDMCAIFAmNUBQNuaWwFA25pbAMJAAACBQJjRwUCY0cEAmV5BAJhcwUCY0cDCQABAgUCYXMCB0FkZHJlc3MEAmV6BQJhcwkA/AcEBQJlegIEZW1pdAkAzAgCBQJjVAUDbmlsBQNuaWwFBHVuaXQDCQAAAgUCZXkFAmV5BAJlQQMJAGYCBQJjVQAACQD8BwQFAmV3AgNwdXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCYlMFAmNVBQNuaWwFA25pbAMJAAACBQJlQQUCZUEEAmVCAwkAZgIFAmNWAAAJAPwHBAUCZXcCA3B1dAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJiVAUCY1YFA25pbAUDbmlsAwkAAAIFAmVCBQJlQgQCZUMDBQJldAQCZUQJAPwHBAUCZXYCBXN0YWtlBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmRNBQJjVAUDbmlsAwkAAAIFAmVEBQJlRAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQJkbwZjYWxsZXIFAmNUBQJkTQUDbmlsCQDOCAIFAmNrBQJlQwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkbwEJcHV0T25lVGtuBQJkSQJkSgJlRQJiagJldAQCYkEJAQJhSAAEAmV2CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJiQQUBeAIKV3Igc3QgYWRkcgQCZXcJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmJBBQF5AgpXciBzbCBhZGRyBAJlRgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCYkEFAXoCC1dyIGd3eCBhZGRyBAJlRwkBAmFEAAQCYlMJAJEDAgUCZUcFAXIEAmJUCQCRAwIFAmVHBQFzBAJiVQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmVHBQF0BAJiVgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmVHBQF1BAJlSAkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzCQECYWEAAgAEAmJRAwkAAAIFAmVICQClCAEIBQJkbwZjYWxsZXIIBQJkbwxvcmlnaW5DYWxsZXIIBQJkbwZjYWxsZXIDAwMDCQBnAgAABQJiagYJAGcCAAAFAmRJBgkAZwIAAAUCZEoGCQBnAgAABQJlRQkAAgECDFdyb25nIHBhcmFtcwMJAQIhPQIJAJADAQgFAmRvCHBheW1lbnRzAAEJAAIBAgsxIHBtbnQgZXhwZAQCZHAJAQV2YWx1ZQEJAJEDAggFAmRvCHBheW1lbnRzAAAEAmJPCQDYBAEJAQV2YWx1ZQEIBQJkcAdhc3NldElkBAJlSQgFAmRwBmFtb3VudAQCZUoJAQJiSgEFAmVJBAJjdQgFAmVKAl8xBAJiTAgFAmVKAl8yAwkAZgIAgK3iBAUCZUkJAAIBAg1Xcm9uZyBwbXQgYW10BAJiWQkBAmJiAQUCYlMEAmNhCQECYmIBBQJiVAQCZUsDCQAAAgUCYk8FAmJTAwMJAGYCBQJlSQUCYlkGCQBmAgUCZEkFAmN1CQACAQIWaW52YWxpZCBwYXltZW50IGFtb3VudAkAmAoGCQBlAgUCYlkFAmVJBQJjYQkAZQIFAmN1BQJkSQUCZEoAAAAAAwkAAAIFAmJPBQJiVAMDCQBmAgUCZUkFAmNhBgkAZgIFAmRKBQJjdQkAAgECFmludmFsaWQgcGF5bWVudCBhbW91bnQJAJgKBgUCYlkJAGUCBQJjYQUCZUkAAAAACQBlAgUCY3UFAmRKBQJkSQkAAgECEHdyb25nIHBtdEFzc2V0SWQEAmR6CAUCZUsCXzEEAmRBCAUCZUsCXzIEAmVMCAUCZUsCXzMEAmVNCAUCZUsCXzQEAmVOCAUCZUsCXzUEAmVPCAUCZUsCXzYEAmJvCQD8BwQFAmVGAgVjYWxjRAkAzAgCCQCkAwEFAmR6CQDMCAIJAKQDAQUCZEEJAMwIAgUCYXoJAMwIAgUBZwkAzAgCBQFoBQNuaWwFA25pbAQCYm4JAPwHBAUCZUYCBWNhbGNECQDMCAIJAKYDAQkAtgIBCQBlAgkAZAIFAmR6BQJlTAUCZU8JAMwIAgkApgMBCQC2AgEJAGUCCQBkAgUCZEEFAmVOBQJlTQkAzAgCBQJhegkAzAgCBQFnCQDMCAIFAWgFA25pbAUDbmlsBAJlUAkBAmJtAwkApwMBCQECYXIBBQJibgkApwMBCQECYXIBBQJibwUBZgMJAAACBQJlUAUCZVAEAmRLCQECZHEKCQClCAEIBQJkbwZjYWxsZXIJANgEAQgFAmRvDXRyYW5zYWN0aW9uSWQJAQ9BdHRhY2hlZFBheW1lbnQCCQDZBAEFAmJTBQJkSQkBD0F0dGFjaGVkUGF5bWVudAIJANkEAQUCYlQFAmRKBQJiagYGBgUCY3UFAmJPBAJkTAgFAmRLAl8yBAJkTQgFAmRLAl83BAJjawgFAmRLAl85BAJjVQgFAmRLA18xMAQCY1YIBQJkSwNfMTEEAmVRCQECYmcDCQC2AgEFAmRMCQC2AgEFAmVFCQC2AgEFAmJqBAJjVAkAoAMBCAUCZVECXzIEAmV4CQD8BwQFAmF5AgRlbWl0CQDMCAIFAmNUBQNuaWwFA25pbAMJAAACBQJleAUCZXgEAmV5BAJhcwUCZXgDCQABAgUCYXMCB0FkZHJlc3MEAmV6BQJhcwkA/AcEBQJlegIEZW1pdAkAzAgCBQJjVAUDbmlsBQNuaWwFBHVuaXQDCQAAAgUCZXkFAmV5BAJlQQMJAGYCBQJjVQAACQD8BwQFAmV3AgNwdXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkA2QQBBQJiUwUCY1UFA25pbAUDbmlsAwkAAAIFAmVBBQJlQQQCZUIDCQBmAgUCY1YAAAkA/AcEBQJldwIDcHV0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIJANkEAQUCYlQFAmNWBQNuaWwFA25pbAMJAAACBQJlQgUCZUIEAmVDAwUCZXQEAmVECQD8BwQFAmV2AgVzdGFrZQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJkTQUCY1QFA25pbAMJAAACBQJlRAUCZUQFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUCZG8GY2FsbGVyBQJjVAUCZE0FA25pbAQCZWYDCQBmAgUCYkwAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJhQwUCYkwJANkEAQUCYk8FA25pbAUDbmlsCQDOCAIJAM4IAgUCY2sFAmVDBQJlZgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkbwELcHV0T25lVGtuVjICAmRQAmV0AwkBAiE9AgkAkAMBCAUCZG8IcGF5bWVudHMAAQkAAgECCzEgcG1udCBleHBkBAJkdwkBAmFEAAQCYlMJAJEDAgUCZHcFAXIEAmJUCQCRAwIFAmR3BQFzBAJkVAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmR3BQF0BAJkVQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmR3BQF1BAJiUQMJAAACCAUCZG8GY2FsbGVyBQR0aGlzCAUCZG8Mb3JpZ2luQ2FsbGVyCAUCZG8GY2FsbGVyBAJkcAkBBXZhbHVlAQkAkQMCCAUCZG8IcGF5bWVudHMAAAQCYk8JANgEAQkBBXZhbHVlAQgFAmRwB2Fzc2V0SWQEAmN1CAUCZHAGYW1vdW50AwkAZgIAgK3iBAUCY3UJAAIBAg1Xcm9uZyBwbXQgYW10BAJjRwkBAmR1BAUCY3UFAmJPCQClCAEFAmJRCQDYBAEIBQJkbw10cmFuc2FjdGlvbklkBAJkTAgFAmNHAl8yBAJkTQgFAmNHAl83BAJjawgFAmNHAl85BAJjVQgFAmNHA18xMAQCY1YIBQJjRwNfMTEEAmNUAwMJAGYCBQJkUAAACQBmAgUCZFAFAmRMBwkAAgEJALkJAgkAzAgCAh9hbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZFAFA25pbAIABQJkTAQCZXgJAPwHBAUCYXkCBGVtaXQJAMwIAgUCY1QFA25pbAUDbmlsAwkAAAIFAmV4BQJleAQCZXkEAmFzBQJleAMJAAECBQJhcwIHQWRkcmVzcwQCZXoFAmFzCQD8BwQFAmV6AgRlbWl0CQDMCAIFAmNUBQNuaWwFA25pbAUEdW5pdAMJAAACBQJleQUCZXkEAmVBAwkAZgIFAmNVAAAJAPwHBAUCYUsCA3B1dAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQDZBAEFAmJTBQJjVQUDbmlsBQNuaWwDCQAAAgUCZUEFAmVBBAJlQgMJAGYCBQJjVgAACQD8BwQFAmFLAgNwdXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkA2QQBBQJiVAUCY1YFA25pbAUDbmlsAwkAAAIFAmVCBQJlQgQCZUMDBQJldAQCZUQJAPwHBAUCYUoCBXN0YWtlBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmRNBQJjVAUDbmlsAwkAAAIFAmVEBQJlRAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQJkbwZjYWxsZXIFAmNUBQJkTQUDbmlsBAJiTAgJAQJiSgEFAmN1Al8yBAJlZgMJAGYCBQJiTAAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmFDBQJiTAkA2QQBBQJiTwUDbmlsBQNuaWwJAJQKAgkAzggCCQDOCAIFAmNrBQJlQwUCZWYFAmNUCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRvARNwdXRPbmVUa25WMlJFQURPTkxZAgJlUgJlUwQCY0cJAQJkdQQFAmVSBQJlUwIAAgAEAmRMCAUCY0cCXzIEAmRNCAUCY0cCXzcEAmNrCAUCY0cCXzkEAmNVCAUCY0cDXzEwBAJjVggFAmNHA18xMQkAlAoCBQNuaWwFAmRMAmRvARxwdXRPbmVUa25WMldpdGhCb251c1JFQURPTkxZAgJlUgJlUwQCZHcJAQJhRAAEAmJTCQCRAwIFAmR3BQFyBAJiVAkAkQMCBQJkdwUBcwQCYlkJAQJiYgEFAmJTBAJjYQkBAmJiAQUCYlQEAmNHCQECZHUEBQJlUgUCZVMCAAIABAJkTAgFAmNHAl8yBAJjZAgFAmNHAl8zBAJlVAgFAmNHAl82BAJkTQgFAmNHAl83BAJlVQMJAAACBQJlUwUCYlMEAmVWCQBrAwUCZVIFAmNkBQFhCQCUCgIFAmVSBQJlVgQCZVcJAGsDBQJlUgUBYQUCY2QJAJQKAgUCZVcFAmVSBAJlVwgFAmVVAl8xBAJlVggFAmVVAl8yBAJlWAkAawMFAmVUBQJlVgUCY2EEAmVZAwkAAAIFAmVTBQJiUwkAawMFAmVXBQFhBQJkTAkAawMFAmVWBQFhBQJkTAQCZVoJAGsDCQBkAgUCZVYFAmVXBQFhBQJlWAQCZmEJAGsDCQBlAgUCZEwFAmVYBQFhBQJlWAQCYkwICQECYkoBBQJlUgJfMgkAlAoCBQNuaWwJAJUKAwUCZEwFAmJMBQJmYQJkbwEKcHV0Rm9yRnJlZQECZmIDCQBmAgAABQJmYgkAAgECCldyb25nIHNscGcDCQECIT0CCQCQAwEIBQJkbwhwYXltZW50cwACCQACAQIMMiBwbW50cyBleHBkBAJkSwkBAmRxCgkApQgBCAUCZG8GY2FsbGVyCQDYBAEIBQJkbw10cmFuc2FjdGlvbklkCQEPQXR0YWNoZWRQYXltZW50AggJAQV2YWx1ZQEJAJEDAggFAmRvCHBheW1lbnRzAAAHYXNzZXRJZAgJAQV2YWx1ZQEJAJEDAggFAmRvCHBheW1lbnRzAAAGYW1vdW50CQCRAwIIBQJkbwhwYXltZW50cwABBQJmYgcHBgAAAgAIBQJkSwJfOQJkbwEDZ2V0AAQCY0cJAQJkbgEFAmRvBAJmYwgFAmNHAl8xBAJjaggFAmNHAl8yBAJjdQgFAmNHAl8zBAJiTwgFAmNHAl80BAJjawgFAmNHAl81BAJmZAkA/AcEBQJheQIEYnVybgkAzAgCBQJjdQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJiTwUCY3UFA25pbAMJAAACBQJmZAUCZmQFAmNrCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRvAQlnZXRPbmVUa24FAmZlAmZmAmZnAmRPAmJqAwkBAiE9AgkAkAMBCAUCZG8IcGF5bWVudHMAAQkAAgECCzEgcG1udCBleHBkBAJiQQkBAmFEAAQCYlIJAJEDAgUCYkEFAXEEAmJTCQCRAwIFAmJBBQFyBAJiVAkAkQMCBQJiQQUBcwQCYlUJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiQQUBdAQCYlYJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiQQUBdQQCYlcJAJEDAgUCYkEFAXAEAmV1CQECYUgABAJlRgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCZXUFAXoCCldyIHNsIGFkZHIEAmRwCQEFdmFsdWUBCQCRAwIIBQJkbwhwYXltZW50cwAABAJlSAkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzCQECYWEAAgAEAmJRAwkAAAIFAmVICQClCAEIBQJkbwZjYWxsZXIIBQJkbwxvcmlnaW5DYWxsZXIIBQJkbwZjYWxsZXIEAmJOCQDYBAEIBQJkbw10cmFuc2FjdGlvbklkBAJiTwkBBXZhbHVlAQgFAmRwB2Fzc2V0SWQEAmN1CAUCZHAGYW1vdW50AwkAZgIAgJTr3AMFAmN1CQACAQINTWluIHBtdCAxMCBMUAMDAwkAZgIAAAUCYmoGCQBmAgAABQJmZQYJAGYCAAAFAmZnCQACAQIMV3JvbmcgcGFyYW1zAwkBAiE9AgUCYlIJANgEAQUCYk8JAAIBAghXcm9uZyBMUAQCY0cJAQJiTQQJANgEAQgFAmRvDXRyYW5zYWN0aW9uSWQJANgEAQUCYk8FAmN1CAUCZG8GY2FsbGVyBAJmaAgFAmNHAl8xBAJmaQgFAmNHAl8yBAJiWQkBAmJiAQUCYlMEAmNhCQECYmIBBQJiVAQCZmoDCQAAAgUCZE8FAmJTCQCZCgcJAGUCBQJiWQUCZmgJAGUCBQJjYQUCZmkFAmZlBQJmaQAAAAAJAGQCBQJmaAUCZmUDCQAAAgUCZE8FAmJUCQCZCgcJAGUCBQJiWQUCZmgJAGUCBQJjYQUCZmkAAAAABQJmZQUCZmgJAGQCBQJmaQUCZmUJAAIBAhB3cm9uZyBvdXRBc3NldElkBAJkeggFAmZqAl8xBAJkQQgFAmZqAl8yBAJlTAgFAmZqAl8zBAJlTQgFAmZqAl80BAJlTggFAmZqAl81BAJlTwgFAmZqAl82BAJmawgFAmZqAl83AwMJAGYCAAAFAmVMBgkAZgIAAAUCZU4JAAIBAgpXcm9uZyBjYWxjBAJibwkA/AcEBQJlRgIFY2FsY0QJAMwIAgkApAMBBQJkegkAzAgCCQCkAwEFAmRBCQDMCAIFAmF6CQDMCAIFAWcJAMwIAgUBaAUDbmlsBQNuaWwEAmJuCQD8BwQFAmVGAgVjYWxjRAkAzAgCCQCkAwEJAGQCCQBlAgUCZHoFAmVMBQJlTwkAzAgCCQCkAwEJAGUCCQBkAgUCZEEFAmVNBQJlTgkAzAgCBQJhegkAzAgCBQFnCQDMCAIFAWgFA25pbAUDbmlsBAJlUAkBAmJtAwkApwMBCQECYXIBBQJibgkApwMBCQECYXIBBQJibwUBZgMJAAACBQJlUAUCZVAEAmRYCAkBAmJKAQUCZmsCXzEEAmZsCQECYmcDCQC2AgEFAmRYCQC2AgEFAmZnCQC2AgEFAmJqAwkAAAIFAmZsBQJmbAQCZm0DCQAAAgUCZE8FAmJTCQCUCgIJAKADAQgFAmZsAl8yAAAJAJQKAgAACQCgAwEIBQJmbAJfMgQCZWEIBQJmbQJfMQQCZWIIBQJmbQJfMgQCZFkJAGQCBQJlYQUCZWIEAmJMCQBlAgUCZmsFAmRYBAJlZQMJAAACBQJkTwIFV0FWRVMFBHVuaXQJANkEAQUCZE8EAmVmAwkAZgIFAmJMAAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYUMFAmJMBQJlZQUDbmlsBQNuaWwEAmVjCQECYmQCCQEBQgIFAmNhBQJiVgkBAUICBQJiWQUCYlUEAmVkCQEBRQIFAmVjBQFhBAJjawkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJiUQUCZFkFAmVlCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFXAgkApQgBBQJiUQUCYk4JAQJhWAYFAmVhBQJlYgUCY3UFAmVkBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBUAAFAmVkCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBUQIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmVkBQNuaWwDCQAAAgUCY2sFAmNrBAJlZwkA/AcEBQJheQIEYnVybgkAzAgCBQJjdQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJiTwUCY3UFA25pbAMJAAACBQJlZwUCZWcJAM4IAgUCY2sFAmVmCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRvAQtnZXRPbmVUa25WMgICZE8CZFAEAmZuCQECZE4GBQJkTwUCZFAIBQJkbwhwYXltZW50cwgFAmRvBmNhbGxlcggFAmRvDG9yaWdpbkNhbGxlcggFAmRvDXRyYW5zYWN0aW9uSWQEAmNrCAUCZm4CXzEEAmRZCAUCZm4CXzIJAJQKAgUCY2sFAmRZAmRvARNnZXRPbmVUa25WMlJFQURPTkxZAgJkTwJmbwQCZHcJAQJhRAAEAmJSCQCRAwIFAmR3BQFxBAJiUwkAkQMCBQJkdwUBcgQCYlQJAJEDAgUCZHcFAXMEAmNHCQECYk0EAgAFAmJSBQJmbwUEdGhpcwQCZmgIBQJjRwJfMQQCZmkIBQJjRwJfMgQCYlkJAQJiYgEFAmJTBAJjYQkBAmJiAQUCYlQEAmR6CQBlAgUCYlkFAmZoBAJkQQkAZQIFAmNhBQJmaQQCZnADCQAAAgUCZE8FAmJTCQCVCgMFAmRBBQJkegUCZmkDCQAAAgUCZE8FAmJUCQCVCgMFAmR6BQJkQQUCZmgJAAIBAhB3cm9uZyBvdXRBc3NldElkBAJmcQgFAmZwAl8xBAJmcggFAmZwAl8yBAJmcwgFAmZwAl8zBAJmdAABBAJmZQoAAmRHCQD8BwQFAmFMAgxjYWxjU3dhcFhUb1kJAMwIAgkApAMBBQJmcwkAzAgCCQCkAwEFAmZxCQDMCAIJAKQDAQUCZnIJAMwIAgIACQDMCAIFAmF6CQDMCAIFAWcJAMwIAgkApAMBBQJmdAkAzAgCBQFoBQNuaWwFA25pbAMJAAECBQJkRwIDSW50BQJkRwkAAgEJAKwCAgkAAwEJAPwHBAUCYUwCDGNhbGNTd2FwWFRvWQkAzAgCCQCkAwEFAmZzCQDMCAIJAKQDAQUCZnEJAMwIAgkApAMBBQJmcgkAzAgCAgAJAMwIAgUCYXoJAMwIAgUBZwkAzAgCCQCkAwEFAmZ0CQDMCAIFAWgFA25pbAUDbmlsAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQEAmZrCQBkAgUCZmUDCQAAAgUCZE8FAmJTBQJmaAUCZmkEAmZ1CQECYkoBBQJmawQCZFgIBQJmdQJfMQQCYkwIBQJmdQJfMgkAlAoCBQNuaWwJAJQKAgUCZFgFAmJMAmRvARxnZXRPbmVUa25WMldpdGhCb251c1JFQURPTkxZAgJkTwJmbwQCZHcJAQJhRAAEAmJTCQCRAwIFAmR3BQFyBAJiVAkAkQMCBQJkdwUBcwQCYlIJAJEDAgUCZHcFAXEEAmJZCQECYmIBBQJiUwQCY2EJAQJiYgEFAmJUBAJmdgoAAmRHCQD8BwQFBHRoaXMCE2dldE9uZVRrblYyUkVBRE9OTFkJAMwIAgUCZE8JAMwIAgUCZm8FA25pbAUDbmlsAwkAAQIFAmRHAgooSW50LCBJbnQpBQJkRwkAAgEJAKwCAgkAAwEJAPwHBAUEdGhpcwITZ2V0T25lVGtuVjJSRUFET05MWQkAzAgCBQJkTwkAzAgCBQJmbwUDbmlsBQNuaWwCHyBjb3VsZG4ndCBiZSBjYXN0IHRvIChJbnQsIEludCkEAmRYCAUCZnYCXzEEAmJMCAUCZnYCXzIEAmNHCQECYk0EAgAFAmJSBQJmbwUEdGhpcwQC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BQJjRwJfNggFAmNHAl83CQCmAwEIBQJjRwJfOAgFAmNHAl85CAUCY0cDXzEwAmRvAQ5nZXRGZWVSRUFET05MWQAJAJQKAgUDbmlsBQJhYwECZk8BAmZQAAQCZlEEAmFzCQECZWgAAwkAAQIFAmFzAgpCeXRlVmVjdG9yBAJlbQUCYXMFAmVtAwkAAQIFAmFzAgRVbml0CAUCZk8Pc2VuZGVyUHVibGljS2V5CQACAQILTWF0Y2ggZXJyb3IEAmFzBQJmTwMJAAECBQJhcwIFT3JkZXIEAmRiBQJhcwQCZlIJAQJhQgAEAmZTCQECZGEBBQJkYgQCZlQJAPQDAwgFAmRiCWJvZHlCeXRlcwkAkQMCCAUCZGIGcHJvb2ZzAAAIBQJkYg9zZW5kZXJQdWJsaWNLZXkEAmZVCQD0AwMIBQJkYglib2R5Qnl0ZXMJAJEDAggFAmRiBnByb29mcwABBQJmUgMDAwUCZlMFAmZUBwUCZlUHBgkBAmFuAwUCZlMFAmZUBQJmVQMJAAECBQJhcwIUU2V0U2NyaXB0VHJhbnNhY3Rpb24EAmVpBQJhcwQCZlYJAPYDAQkBBXZhbHVlAQgFAmVpBnNjcmlwdAQCZlcJANsEAQkBBXZhbHVlAQkAnQgCBQJheQkBAmFsAAQCZlgJAPEHAQUEdGhpcwMDCQAAAgUCZlcFAmZWCQECIT0CBQJmWAUCZlYHBgkA9AMDCAUCZk8JYm9keUJ5dGVzCQCRAwIIBQJmTwZwcm9vZnMAAAUCZlEJAPQDAwgFAmZPCWJvZHlCeXRlcwkAkQMCCAUCZk8GcHJvb2ZzAAAFAmZRtU1VWg==", "chainId": 84, "height": 2246098, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: Crm7EBEVVuPas1FrwqcRvfgTVQira7hbXhpydbKVSVxH Next: 5LLFZNvs6hPAjp9J1UPDMZGAWL13XJSdLXdZNBLH7CXR Diff:
OldNewDifferences
962962 then fraction(eW, a, dL)
963963 else fraction(eV, a, dL)
964964 let eZ = fraction((eV + eW), a, eX)
965- let fa = fraction((eZ - eY), a, eY)
965+ let fa = fraction((dL - eX), a, eX)
966966 let bL = bJ(eR)._2
967967 $Tuple2(nil, $Tuple3(dL, bL, fa))
968968 }
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 100000000
55
66 let b = toBigInt(100000000)
77
88 let c = toBigInt(1000000000000000000)
99
1010 let d = toBigInt(0)
1111
1212 let e = toBigInt(1)
1313
1414 let f = toBigInt((a - ((a * 1) / a)))
1515
1616 let g = "100"
1717
1818 let h = "1"
1919
2020 let i = "__"
2121
2222 let j = ""
2323
2424 let k = 1
2525
2626 let l = 2
2727
2828 let m = 3
2929
3030 let n = 4
3131
3232 let o = 1
3333
3434 let p = 2
3535
3636 let q = 3
3737
3838 let r = 4
3939
4040 let s = 5
4141
4242 let t = 6
4343
4444 let u = 7
4545
4646 let v = 8
4747
4848 let w = 9
4949
5050 let x = 1
5151
5252 let y = 7
5353
5454 let z = 10
5555
5656 let A = fraction(5, a, 10000)
5757
5858 func B (C,D) = fraction(toBigInt(C), c, toBigInt(D))
5959
6060
6161 func E (F,G) = toInt(fraction(F, toBigInt(G), c))
6262
6363
6464 func H (I,J,K) = fraction(I, J, K)
6565
6666
6767 func L (F) = if ((d > F))
6868 then -(F)
6969 else F
7070
7171
7272 func M () = "%s__factoryContract"
7373
7474
7575 func N () = "%s__managerPublicKey"
7676
7777
7878 func O () = "%s__pendingManagerPublicKey"
7979
8080
8181 func P () = "%s%s__price__last"
8282
8383
8484 func Q (R,S) = makeString(["%s%s%d%d__price__history", toString(R), toString(S)], i)
8585
8686
8787 func T (U,V) = ((("%s%s%s__P__" + U) + "__") + V)
8888
8989
9090 func W (U,V) = ((("%s%s%s__G__" + U) + "__") + V)
9191
9292
9393 func X () = "%s__amountAsset"
9494
9595
9696 func Y () = "%s__priceAsset"
9797
9898
9999 func Z () = "%s__amp"
100100
101101
102102 func aa () = "%s__addonAddr"
103103
104104
105105 let ab = "%s__fee"
106106
107107 let ac = valueOrElse(getInteger(this, ab), A)
108108
109109 func ad () = "%s__factoryConfig"
110110
111111
112112 func ae () = "%s%s__matcher__publicKey"
113113
114114
115115 func af (ag,ah) = (((("%d%d%s__" + ag) + "__") + ah) + "__config")
116116
117117
118118 func ai (aj) = ("%s%s%s__mappings__baseAsset2internalId__" + aj)
119119
120120
121121 func ak () = "%s__shutdown"
122122
123123
124124 func al () = "%s__allowedLpStableScriptHash"
125125
126126
127127 func am () = "%s__feeCollectorAddress"
128128
129129
130130 func an (ao,ap,aq) = throw(((((("Failed: ordValid=" + toString(ao)) + " sndrValid=") + toString(ap)) + " mtchrValid=") + toString(aq)))
131131
132132
133133 func ar (F) = {
134134 let as = F
135135 if ($isInstanceOf(as, "String"))
136136 then {
137137 let at = as
138138 at
139139 }
140140 else throw("fail cast to String")
141141 }
142142
143143
144144 func au (av,aw) = valueOrErrorMessage(getString(av, aw), makeString(["mandatory ", toString(av), ".", aw, " not defined"], ""))
145145
146146
147147 func ax (av,aw) = valueOrErrorMessage(getInteger(av, aw), makeString(["mandatory ", toString(av), ".", aw, " not defined"], ""))
148148
149149
150150 let ay = addressFromStringValue(au(this, M()))
151151
152152 let az = au(this, Z())
153153
154154 func aA () = valueOrElse(getBoolean(ay, ak()), false)
155155
156156
157157 func aB () = fromBase58String(au(ay, ae()))
158158
159159
160160 let aC = addressFromStringValue(au(ay, am()))
161161
162162 func aD () = {
163163 let aE = au(this, X())
164164 let aF = au(this, Y())
165165 let aG = ax(ay, ai(aF))
166166 let ag = ax(ay, ai(aE))
167167 split(au(ay, af(toString(ag), toString(aG))), i)
168168 }
169169
170170
171171 func aH () = split(au(ay, ad()), i)
172172
173173
174174 let aI = aH()
175175
176176 let aJ = valueOrErrorMessage(addressFromString(aI[x]), "Invalid staking contract address")
177177
178178 let aK = valueOrErrorMessage(addressFromString(aI[y]), "Invalid slipage contract address")
179179
180180 let aL = valueOrErrorMessage(addressFromString(aI[z]), "Invalid gwx contract address")
181181
182182 func aM (aN,aO,aP,aQ,aR,aS,aT,aU,aV,aW) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(aN), toString(aO), toString(aP), toString(aQ), toString(aR), toString(aS), toString(aT), toString(aU), toString(aV), toString(aW)], i)
183183
184184
185185 func aX (aY,aZ,ba,aQ,aT,aU) = makeString(["%d%d%d%d%d%d", toString(aY), toString(aZ), toString(ba), toString(aQ), toString(aT), toString(aU)], i)
186186
187187
188188 func bb (bc) = if ((bc == "WAVES"))
189189 then wavesBalance(this).available
190190 else assetBalance(this, fromBase58String(bc))
191191
192192
193193 func bd (be,bf) = fraction(be, c, bf)
194194
195195
196196 func bg (bh,bi,bj) = {
197197 let bk = fraction((bh - bi), b, bi)
198198 let bl = ((bj - L(bk)) > d)
199199 if (!(bl))
200200 then throw(("Big slpg: " + toString(bk)))
201201 else $Tuple2(bl, min([bh, bi]))
202202 }
203203
204204
205205 func bm (bn,bo,bp) = {
206206 let bk = fraction(bo, b, bn)
207207 let bq = (bp > bk)
208208 if (if (bq)
209209 then true
210210 else (bo > bn))
211211 then throw(((((((toString(bo) + " ") + toString(bn)) + " ") + toString(bk)) + " ") + toString(bp)))
212212 else bq
213213 }
214214
215215
216216 func br (bs,bt,bu,bv) = {
217217 let bw = B(bu, bs)
218218 let bx = B(bv, bt)
219219 bd(bx, bw)
220220 }
221221
222222
223223 func by (bu,bv,bz) = {
224224 let bA = aD()
225225 let bB = parseIntValue(bA[t])
226226 let bC = parseIntValue(bA[u])
227227 let bD = br(bB, bC, bu, bv)
228228 let bf = B(bu, bB)
229229 let be = B(bv, bC)
230230 let bE = B(bz, a)
231231 let bF = bd(bf, bE)
232232 let bG = bd(be, bE)
233233 [bD, bF, bG]
234234 }
235235
236236
237237 func bH (bu,bv,bz) = {
238238 let bI = by(bu, bv, bz)
239239 [E(bI[0], a), E(bI[1], a), E(bI[2], a)]
240240 }
241241
242242
243243 func bJ (bK) = {
244244 let bL = fraction(bK, ac, a)
245245 $Tuple2((bK - bL), bL)
246246 }
247247
248248
249249 func bM (bN,bO,bP,bQ) = {
250250 let bA = aD()
251251 let bR = bA[q]
252252 let bS = bA[r]
253253 let bT = bA[s]
254254 let bU = parseIntValue(bA[t])
255255 let bV = parseIntValue(bA[u])
256256 let bW = bA[p]
257257 let bX = valueOrErrorMessage(assetInfo(fromBase58String(bR)), "Wrong LP id").quantity
258258 if ((bR != bO))
259259 then throw("Wrong pmt asset")
260260 else {
261261 let bY = bb(bS)
262262 let bZ = B(bY, bU)
263263 let ca = bb(bT)
264264 let cb = B(ca, bV)
265265 let cc = bd(cb, bZ)
266266 let cd = E(cc, a)
267267 let ce = B(bP, a)
268268 let cf = B(bX, a)
269269 let cg = fraction(bZ, ce, cf)
270270 let ch = fraction(cb, ce, cf)
271271 let ci = E(cg, bU)
272272 let cj = E(ch, bV)
273273 let ck = if ((bN == ""))
274274 then nil
275275 else [ScriptTransfer(bQ, ci, if ((bS == "WAVES"))
276276 then unit
277277 else fromBase58String(bS)), ScriptTransfer(bQ, cj, if ((bT == "WAVES"))
278278 then unit
279279 else fromBase58String(bT)), StringEntry(W(toString(bQ), bN), aX(ci, cj, bP, cd, height, lastBlock.timestamp)), IntegerEntry(P(), cd), IntegerEntry(Q(height, lastBlock.timestamp), cd)]
280280 $Tuple10(ci, cj, bS, bT, bY, ca, bX, cc, bW, ck)
281281 }
282282 }
283283
284284
285285 func cl (bN,bj,cm,cn,co,cp,bQ,cq,cr,cs,ct,cu,cv) = {
286286 let bA = aD()
287287 let bR = fromBase58String(bA[q])
288288 let cw = bA[r]
289289 let cx = bA[s]
290290 let cy = bA[v]
291291 let cz = bA[w]
292292 let cA = parseIntValue(bA[t])
293293 let cB = parseIntValue(bA[u])
294294 let bW = bA[p]
295295 let cC = valueOrErrorMessage(assetInfo(bR), "Wr lp as").quantity
296296 let bY = if (cq)
297297 then bb(cw)
298298 else if (if (cs)
299299 then (cv == cw)
300300 else false)
301301 then (bb(cw) - cu)
302302 else if (cs)
303303 then bb(cw)
304304 else (bb(cw) - cm)
305305 let ca = if (cq)
306306 then bb(cx)
307307 else if (if (cs)
308308 then (cv == cx)
309309 else false)
310310 then (bb(cx) - cu)
311311 else if (cs)
312312 then bb(cx)
313313 else (bb(cx) - co)
314314 let cD = B(cm, cA)
315315 let cE = B(co, cB)
316316 let cF = bd(cE, cD)
317317 let bZ = B(bY, cA)
318318 let cb = B(ca, cB)
319319 let cG = if ((cC == 0))
320320 then {
321321 let cc = d
322322 let cH = d
323323 let bE = pow((cD * cE), 0, toBigInt(5), 1, 0, DOWN)
324324 $Tuple5(E(bE, a), E(cD, cA), E(cE, cB), bd((cb + cE), (bZ + cD)), cH)
325325 }
326326 else {
327327 let cc = bd(cb, bZ)
328328 let cI = fraction(L((cc - cF)), c, cc)
329329 let cH = B(bj, a)
330330 if (if (if (ct)
331331 then (cc != d)
332332 else false)
333333 then (cI > cH)
334334 else false)
335335 then throw(((("Price slippage " + toString(cI)) + " > ") + toString(cH)))
336336 else {
337337 let cJ = B(cC, a)
338338 let cK = fraction(cD, cc, c)
339339 let cL = fraction(cE, c, cc)
340340 let cM = if ((cK > cE))
341341 then $Tuple2(cL, cE)
342342 else $Tuple2(cD, cK)
343343 let cN = cM._1
344344 let cO = cM._2
345345 let bE = fraction(cJ, cO, cb)
346346 $Tuple5(E(bE, a), E(cN, cA), E(cO, cB), cc, cH)
347347 }
348348 }
349349 let cP = cG._1
350350 let cQ = cG._2
351351 let cR = cG._3
352352 let cd = E(cG._4, a)
353353 let cS = E(cG._5, a)
354354 if ((0 >= cP))
355355 then throw("LP <= 0")
356356 else {
357357 let cT = if (!(cr))
358358 then 0
359359 else cP
360360 let cU = (cm - cQ)
361361 let cV = (co - cR)
362362 let cW = if (if (cs)
363363 then (cv == cw)
364364 else false)
365365 then $Tuple2(cu, 0)
366366 else if (if (cs)
367367 then (cv == cx)
368368 else false)
369369 then $Tuple2(0, cu)
370370 else $Tuple2(cQ, cR)
371371 let cX = cW._1
372372 let cY = cW._2
373373 let cZ = [IntegerEntry(P(), cd), IntegerEntry(Q(height, lastBlock.timestamp), cd), StringEntry(T(bQ, bN), aM(cX, cY, cT, cd, bj, cS, height, lastBlock.timestamp, cU, cV))]
374374 $Tuple13(cP, cT, cd, bY, ca, cC, bR, bW, cZ, cU, cV, cn, cp)
375375 }
376376 }
377377
378378
379379 func da (db) = {
380380 let bA = aD()
381381 let dc = bA[r]
382382 let dd = bA[s]
383383 let bW = parseIntValue(bA[p])
384384 let bB = parseIntValue(bA[t])
385385 let bC = parseIntValue(bA[u])
386386 let de = bb(dc)
387387 let df = bb(dd)
388388 let cc = if ((db.orderType == Buy))
389389 then br(bB, bC, (de + db.amount), df)
390390 else br(bB, bC, (de - db.amount), df)
391391 let cd = E(cc, a)
392392 if (if (if (aA())
393393 then true
394394 else (bW == m))
395395 then true
396396 else (bW == n))
397397 then throw("Admin blocked")
398398 else {
399399 let dg = db.assetPair.amountAsset
400400 let dh = if ((dg == unit))
401401 then "WAVES"
402402 else toBase58String(value(dg))
403403 let di = db.assetPair.priceAsset
404404 let dj = if ((di == unit))
405405 then "WAVES"
406406 else toBase58String(value(di))
407407 if (if ((dh != dc))
408408 then true
409409 else (dj != dd))
410410 then throw("Wr assets")
411411 else {
412412 let dk = db.price
413413 let cB = fraction(a, bC, bB)
414414 let dl = H(dk, a, cB)
415415 let dm = if ((db.orderType == Buy))
416416 then (cd >= dl)
417417 else (dl >= cd)
418418 true
419419 }
420420 }
421421 }
422422
423423
424424 func dn (do) = if ((size(do.payments) != 1))
425425 then throw("1 pmnt exp")
426426 else {
427427 let dp = value(do.payments[0])
428428 let bO = value(dp.assetId)
429429 let cu = dp.amount
430430 let cG = bM(toBase58String(do.transactionId), toBase58String(bO), cu, do.caller)
431431 let ci = cG._1
432432 let cj = cG._2
433433 let bW = parseIntValue(cG._9)
434434 let ck = cG._10
435435 if (if (aA())
436436 then true
437437 else (bW == n))
438438 then throw(("Admin blocked: " + toString(bW)))
439439 else $Tuple5(ci, cj, cu, bO, ck)
440440 }
441441
442442
443443 func dq (dr,V,ds,dt,bj,cr,cs,ct,cu,cv) = {
444444 let cG = cl(V, bj, value(ds).amount, value(ds).assetId, value(dt).amount, value(dt).assetId, dr, false, cr, cs, ct, cu, cv)
445445 let bW = parseIntValue(cG._8)
446446 if (if (if (aA())
447447 then true
448448 else (bW == l))
449449 then true
450450 else (bW == n))
451451 then throw(("Blocked:" + toString(bW)))
452452 else cG
453453 }
454454
455455
456456 func du (dv,bO,bQ,V) = {
457457 let dw = aD()
458458 let bS = dw[r]
459459 let bT = dw[s]
460460 let bY = bb(bS)
461461 let ca = bb(bT)
462462 let dx = bJ(dv)
463463 let cu = dx._1
464464 let bL = dx._2
465465 let dy = if ((V == ""))
466466 then $Tuple2(bY, ca)
467467 else if ((bO == bS))
468468 then if ((dv > bY))
469469 then throw("invalid payment amount")
470470 else $Tuple2((bY - dv), ca)
471471 else if ((bO == bT))
472472 then if ((dv > ca))
473473 then throw("invalid payment amount")
474474 else $Tuple2(bY, (ca - dv))
475475 else throw("wrong pmtAssetId")
476476 let dz = dy._1
477477 let dA = dy._2
478478 let dB = if ((bO == bS))
479479 then $Tuple2(dz, dA)
480480 else $Tuple2(dA, dz)
481481 let dC = dB._1
482482 let dD = dB._2
483483 let dE = 1
484484 let dF = {
485485 let dG = invoke(aL, "calcPutXOnly", [toString(cu), toString(dC), toString(dD), "", az, g, toString(dE), h], nil)
486486 if ($isInstanceOf(dG, "(Int, Int)"))
487487 then dG
488488 else throw(($getType(invoke(aL, "calcPutXOnly", [toString(cu), toString(dC), toString(dD), "", az, g, toString(dE), h], nil)) + " couldn't be cast to (Int, Int)"))
489489 }
490490 let dH = if ((bO == bS))
491491 then dF
492492 else $Tuple2(dF._2, dF._1)
493493 let dI = dH._1
494494 let dJ = dH._2
495495 let dK = dq(bQ, V, AttachedPayment(fromBase58String(bS), dI), AttachedPayment(fromBase58String(bT), dJ), 0, true, true, false, dv, bO)
496496 let dL = dK._2
497497 let dM = dK._7
498498 let ck = dK._9
499499 let cU = dK._10
500500 let cV = dK._11
501501 dK
502502 }
503503
504504
505505 func dN (dO,dP,dQ,dr,dR,dS) = if ((size(dQ) != 1))
506506 then throw("1 pmnt expd")
507507 else {
508508 let dw = aD()
509509 let bR = dw[q]
510510 let bS = dw[r]
511511 let bT = dw[s]
512512 let dT = parseIntValue(dw[t])
513513 let dU = parseIntValue(dw[u])
514514 let dV = dw[p]
515515 let bQ = if ((dr == this))
516516 then dR
517517 else dr
518518 let dp = value(dQ[0])
519519 let bO = value(dp.assetId)
520520 let cu = dp.amount
521521 if ((1000000000 > cu))
522522 then throw("Min pmt 10 LP")
523523 else {
524524 let bN = toBase58String(dS)
525525 if ((bR != toBase58String(bO)))
526526 then throw("Wrong LP")
527527 else {
528528 let bY = bb(bS)
529529 let ca = bb(bT)
530530 let dW = {
531531 let dG = invoke(this, "getOneTknV2READONLY", [dO, cu], nil)
532532 if ($isInstanceOf(dG, "(Int, Int)"))
533533 then dG
534534 else throw(($getType(invoke(this, "getOneTknV2READONLY", [dO, cu], nil)) + " couldn't be cast to (Int, Int)"))
535535 }
536536 let dX = dW._1
537537 let bL = dW._2
538538 let dY = if (if ((dP > 0))
539539 then (dP > dX)
540540 else false)
541541 then throw(makeString(["amount to receive is less than ", toString(dP)], ""))
542542 else dX
543543 let dZ = if ((dO == bS))
544544 then $Tuple2(dY, 0)
545545 else $Tuple2(0, dY)
546546 let ea = dZ._1
547547 let eb = dZ._2
548548 let ec = bd(B(ca, dU), B(bY, dT))
549549 let ed = E(ec, a)
550550 let ee = if ((dO == "WAVES"))
551551 then unit
552552 else fromBase58String(dO)
553553 let ef = if ((bL > 0))
554554 then [ScriptTransfer(aC, bL, ee)]
555555 else nil
556556 let ck = ([ScriptTransfer(bQ, dY, ee), StringEntry(W(toString(bQ), bN), aX(ea, eb, cu, ed, height, lastBlock.timestamp)), IntegerEntry(P(), ed), IntegerEntry(Q(height, lastBlock.timestamp), ed)] ++ ef)
557557 if ((ck == ck))
558558 then {
559559 let eg = invoke(ay, "burn", [cu], [AttachedPayment(bO, cu)])
560560 if ((eg == eg))
561561 then $Tuple2(ck, dY)
562562 else throw("Strict value is not equal to itself.")
563563 }
564564 else throw("Strict value is not equal to itself.")
565565 }
566566 }
567567 }
568568
569569
570570 func eh () = {
571571 let as = getString(N())
572572 if ($isInstanceOf(as, "String"))
573573 then {
574574 let ei = as
575575 fromBase58String(ei)
576576 }
577577 else if ($isInstanceOf(as, "Unit"))
578578 then unit
579579 else throw("Match error")
580580 }
581581
582582
583583 func ej () = {
584584 let as = getString(O())
585585 if ($isInstanceOf(as, "String"))
586586 then {
587587 let ei = as
588588 fromBase58String(ei)
589589 }
590590 else if ($isInstanceOf(as, "Unit"))
591591 then unit
592592 else throw("Match error")
593593 }
594594
595595
596596 let ek = throw("Permission denied")
597597
598598 func el (do) = {
599599 let as = eh()
600600 if ($isInstanceOf(as, "ByteVector"))
601601 then {
602602 let em = as
603603 if ((do.callerPublicKey == em))
604604 then true
605605 else ek
606606 }
607607 else if ($isInstanceOf(as, "Unit"))
608608 then if ((do.caller == this))
609609 then true
610610 else ek
611611 else throw("Match error")
612612 }
613613
614614
615615 @Callable(do)
616616 func constructor (M) = {
617617 let en = el(do)
618618 if ((en == en))
619619 then [StringEntry(M(), M)]
620620 else throw("Strict value is not equal to itself.")
621621 }
622622
623623
624624
625625 @Callable(do)
626626 func setManager (eo) = {
627627 let en = el(do)
628628 if ((en == en))
629629 then {
630630 let ep = fromBase58String(eo)
631631 if ((ep == ep))
632632 then [StringEntry(O(), eo)]
633633 else throw("Strict value is not equal to itself.")
634634 }
635635 else throw("Strict value is not equal to itself.")
636636 }
637637
638638
639639
640640 @Callable(do)
641641 func confirmManager () = {
642642 let bI = ej()
643643 let eq = if (isDefined(bI))
644644 then true
645645 else throw("No pending manager")
646646 if ((eq == eq))
647647 then {
648648 let er = if ((do.callerPublicKey == value(bI)))
649649 then true
650650 else throw("You are not pending manager")
651651 if ((er == er))
652652 then [StringEntry(N(), toBase58String(value(bI))), DeleteEntry(O())]
653653 else throw("Strict value is not equal to itself.")
654654 }
655655 else throw("Strict value is not equal to itself.")
656656 }
657657
658658
659659
660660 @Callable(do)
661661 func put (es,et) = {
662662 let eu = aH()
663663 let ev = valueOrErrorMessage(addressFromString(eu[x]), "Wr st addr")
664664 let ew = valueOrErrorMessage(addressFromString(eu[y]), "Wr sl addr")
665665 if ((0 > es))
666666 then throw("Wrong slippage")
667667 else if ((size(do.payments) != 2))
668668 then throw("2 pmnts expd")
669669 else {
670670 let ex = dq(toString(do.caller), toBase58String(do.transactionId), AttachedPayment(value(do.payments[0]).assetId, value(do.payments[0]).amount), do.payments[1], es, true, false, true, 0, "")
671671 let cT = ex._2
672672 let dM = ex._7
673673 let ck = ex._9
674674 let cU = ex._10
675675 let cV = ex._11
676676 let bS = ex._12
677677 let bT = ex._13
678678 let cG = invoke(ay, "emit", [cT], nil)
679679 if ((cG == cG))
680680 then {
681681 let ey = {
682682 let as = cG
683683 if ($isInstanceOf(as, "Address"))
684684 then {
685685 let ez = as
686686 invoke(ez, "emit", [cT], nil)
687687 }
688688 else unit
689689 }
690690 if ((ey == ey))
691691 then {
692692 let eA = if ((cU > 0))
693693 then invoke(ew, "put", nil, [AttachedPayment(bS, cU)])
694694 else nil
695695 if ((eA == eA))
696696 then {
697697 let eB = if ((cV > 0))
698698 then invoke(ew, "put", nil, [AttachedPayment(bT, cV)])
699699 else nil
700700 if ((eB == eB))
701701 then {
702702 let eC = if (et)
703703 then {
704704 let eD = invoke(ev, "stake", nil, [AttachedPayment(dM, cT)])
705705 if ((eD == eD))
706706 then nil
707707 else throw("Strict value is not equal to itself.")
708708 }
709709 else [ScriptTransfer(do.caller, cT, dM)]
710710 (ck ++ eC)
711711 }
712712 else throw("Strict value is not equal to itself.")
713713 }
714714 else throw("Strict value is not equal to itself.")
715715 }
716716 else throw("Strict value is not equal to itself.")
717717 }
718718 else throw("Strict value is not equal to itself.")
719719 }
720720 }
721721
722722
723723
724724 @Callable(do)
725725 func putOneTkn (dI,dJ,eE,bj,et) = {
726726 let bA = aH()
727727 let ev = valueOrErrorMessage(addressFromString(bA[x]), "Wr st addr")
728728 let ew = valueOrErrorMessage(addressFromString(bA[y]), "Wr sl addr")
729729 let eF = valueOrErrorMessage(addressFromString(bA[z]), "Wr gwx addr")
730730 let eG = aD()
731731 let bS = eG[r]
732732 let bT = eG[s]
733733 let bU = parseIntValue(eG[t])
734734 let bV = parseIntValue(eG[u])
735735 let eH = valueOrElse(getString(this, aa()), "")
736736 let bQ = if ((eH == toString(do.caller)))
737737 then do.originCaller
738738 else do.caller
739739 if (if (if (if ((0 >= bj))
740740 then true
741741 else (0 >= dI))
742742 then true
743743 else (0 >= dJ))
744744 then true
745745 else (0 >= eE))
746746 then throw("Wrong params")
747747 else if ((size(do.payments) != 1))
748748 then throw("1 pmnt expd")
749749 else {
750750 let dp = value(do.payments[0])
751751 let bO = toBase58String(value(dp.assetId))
752752 let eI = dp.amount
753753 let eJ = bJ(eI)
754754 let cu = eJ._1
755755 let bL = eJ._2
756756 if ((10000000 > eI))
757757 then throw("Wrong pmt amt")
758758 else {
759759 let bY = bb(bS)
760760 let ca = bb(bT)
761761 let eK = if ((bO == bS))
762762 then if (if ((eI > bY))
763763 then true
764764 else (dI > cu))
765765 then throw("invalid payment amount")
766766 else $Tuple6((bY - eI), ca, (cu - dI), dJ, 0, 0)
767767 else if ((bO == bT))
768768 then if (if ((eI > ca))
769769 then true
770770 else (dJ > cu))
771771 then throw("invalid payment amount")
772772 else $Tuple6(bY, (ca - eI), 0, 0, (cu - dJ), dI)
773773 else throw("wrong pmtAssetId")
774774 let dz = eK._1
775775 let dA = eK._2
776776 let eL = eK._3
777777 let eM = eK._4
778778 let eN = eK._5
779779 let eO = eK._6
780780 let bo = invoke(eF, "calcD", [toString(dz), toString(dA), az, g, h], nil)
781781 let bn = invoke(eF, "calcD", [toString(toBigInt(((dz + eL) - eO))), toString(toBigInt(((dA + eN) - eM))), az, g, h], nil)
782782 let eP = bm(parseBigIntValue(ar(bn)), parseBigIntValue(ar(bo)), f)
783783 if ((eP == eP))
784784 then {
785785 let dK = dq(toString(do.caller), toBase58String(do.transactionId), AttachedPayment(fromBase58String(bS), dI), AttachedPayment(fromBase58String(bT), dJ), bj, true, true, true, cu, bO)
786786 let dL = dK._2
787787 let dM = dK._7
788788 let ck = dK._9
789789 let cU = dK._10
790790 let cV = dK._11
791791 let eQ = bg(toBigInt(dL), toBigInt(eE), toBigInt(bj))
792792 let cT = toInt(eQ._2)
793793 let ex = invoke(ay, "emit", [cT], nil)
794794 if ((ex == ex))
795795 then {
796796 let ey = {
797797 let as = ex
798798 if ($isInstanceOf(as, "Address"))
799799 then {
800800 let ez = as
801801 invoke(ez, "emit", [cT], nil)
802802 }
803803 else unit
804804 }
805805 if ((ey == ey))
806806 then {
807807 let eA = if ((cU > 0))
808808 then invoke(ew, "put", nil, [AttachedPayment(fromBase58String(bS), cU)])
809809 else nil
810810 if ((eA == eA))
811811 then {
812812 let eB = if ((cV > 0))
813813 then invoke(ew, "put", nil, [AttachedPayment(fromBase58String(bT), cV)])
814814 else nil
815815 if ((eB == eB))
816816 then {
817817 let eC = if (et)
818818 then {
819819 let eD = invoke(ev, "stake", nil, [AttachedPayment(dM, cT)])
820820 if ((eD == eD))
821821 then nil
822822 else throw("Strict value is not equal to itself.")
823823 }
824824 else [ScriptTransfer(do.caller, cT, dM)]
825825 let ef = if ((bL > 0))
826826 then [ScriptTransfer(aC, bL, fromBase58String(bO))]
827827 else nil
828828 ((ck ++ eC) ++ ef)
829829 }
830830 else throw("Strict value is not equal to itself.")
831831 }
832832 else throw("Strict value is not equal to itself.")
833833 }
834834 else throw("Strict value is not equal to itself.")
835835 }
836836 else throw("Strict value is not equal to itself.")
837837 }
838838 else throw("Strict value is not equal to itself.")
839839 }
840840 }
841841 }
842842
843843
844844
845845 @Callable(do)
846846 func putOneTknV2 (dP,et) = if ((size(do.payments) != 1))
847847 then throw("1 pmnt expd")
848848 else {
849849 let dw = aD()
850850 let bS = dw[r]
851851 let bT = dw[s]
852852 let dT = parseIntValue(dw[t])
853853 let dU = parseIntValue(dw[u])
854854 let bQ = if ((do.caller == this))
855855 then do.originCaller
856856 else do.caller
857857 let dp = value(do.payments[0])
858858 let bO = toBase58String(value(dp.assetId))
859859 let cu = dp.amount
860860 if ((10000000 > cu))
861861 then throw("Wrong pmt amt")
862862 else {
863863 let cG = du(cu, bO, toString(bQ), toBase58String(do.transactionId))
864864 let dL = cG._2
865865 let dM = cG._7
866866 let ck = cG._9
867867 let cU = cG._10
868868 let cV = cG._11
869869 let cT = if (if ((dP > 0))
870870 then (dP > dL)
871871 else false)
872872 then throw(makeString(["amount to receive is less than ", toString(dP)], ""))
873873 else dL
874874 let ex = invoke(ay, "emit", [cT], nil)
875875 if ((ex == ex))
876876 then {
877877 let ey = {
878878 let as = ex
879879 if ($isInstanceOf(as, "Address"))
880880 then {
881881 let ez = as
882882 invoke(ez, "emit", [cT], nil)
883883 }
884884 else unit
885885 }
886886 if ((ey == ey))
887887 then {
888888 let eA = if ((cU > 0))
889889 then invoke(aK, "put", nil, [AttachedPayment(fromBase58String(bS), cU)])
890890 else nil
891891 if ((eA == eA))
892892 then {
893893 let eB = if ((cV > 0))
894894 then invoke(aK, "put", nil, [AttachedPayment(fromBase58String(bT), cV)])
895895 else nil
896896 if ((eB == eB))
897897 then {
898898 let eC = if (et)
899899 then {
900900 let eD = invoke(aJ, "stake", nil, [AttachedPayment(dM, cT)])
901901 if ((eD == eD))
902902 then nil
903903 else throw("Strict value is not equal to itself.")
904904 }
905905 else [ScriptTransfer(do.caller, cT, dM)]
906906 let bL = bJ(cu)._2
907907 let ef = if ((bL > 0))
908908 then [ScriptTransfer(aC, bL, fromBase58String(bO))]
909909 else nil
910910 $Tuple2(((ck ++ eC) ++ ef), cT)
911911 }
912912 else throw("Strict value is not equal to itself.")
913913 }
914914 else throw("Strict value is not equal to itself.")
915915 }
916916 else throw("Strict value is not equal to itself.")
917917 }
918918 else throw("Strict value is not equal to itself.")
919919 }
920920 }
921921
922922
923923
924924 @Callable(do)
925925 func putOneTknV2READONLY (eR,eS) = {
926926 let cG = du(eR, eS, "", "")
927927 let dL = cG._2
928928 let dM = cG._7
929929 let ck = cG._9
930930 let cU = cG._10
931931 let cV = cG._11
932932 $Tuple2(nil, dL)
933933 }
934934
935935
936936
937937 @Callable(do)
938938 func putOneTknV2WithBonusREADONLY (eR,eS) = {
939939 let dw = aD()
940940 let bS = dw[r]
941941 let bT = dw[s]
942942 let bY = bb(bS)
943943 let ca = bb(bT)
944944 let cG = du(eR, eS, "", "")
945945 let dL = cG._2
946946 let cd = cG._3
947947 let eT = cG._6
948948 let dM = cG._7
949949 let eU = if ((eS == bS))
950950 then {
951951 let eV = fraction(eR, cd, a)
952952 $Tuple2(eR, eV)
953953 }
954954 else {
955955 let eW = fraction(eR, a, cd)
956956 $Tuple2(eW, eR)
957957 }
958958 let eW = eU._1
959959 let eV = eU._2
960960 let eX = fraction(eT, eV, ca)
961961 let eY = if ((eS == bS))
962962 then fraction(eW, a, dL)
963963 else fraction(eV, a, dL)
964964 let eZ = fraction((eV + eW), a, eX)
965- let fa = fraction((eZ - eY), a, eY)
965+ let fa = fraction((dL - eX), a, eX)
966966 let bL = bJ(eR)._2
967967 $Tuple2(nil, $Tuple3(dL, bL, fa))
968968 }
969969
970970
971971
972972 @Callable(do)
973973 func putForFree (fb) = if ((0 > fb))
974974 then throw("Wrong slpg")
975975 else if ((size(do.payments) != 2))
976976 then throw("2 pmnts expd")
977977 else {
978978 let dK = dq(toString(do.caller), toBase58String(do.transactionId), AttachedPayment(value(do.payments[0]).assetId, value(do.payments[0]).amount), do.payments[1], fb, false, false, true, 0, "")
979979 dK._9
980980 }
981981
982982
983983
984984 @Callable(do)
985985 func get () = {
986986 let cG = dn(do)
987987 let fc = cG._1
988988 let cj = cG._2
989989 let cu = cG._3
990990 let bO = cG._4
991991 let ck = cG._5
992992 let fd = invoke(ay, "burn", [cu], [AttachedPayment(bO, cu)])
993993 if ((fd == fd))
994994 then ck
995995 else throw("Strict value is not equal to itself.")
996996 }
997997
998998
999999
10001000 @Callable(do)
10011001 func getOneTkn (fe,ff,fg,dO,bj) = if ((size(do.payments) != 1))
10021002 then throw("1 pmnt expd")
10031003 else {
10041004 let bA = aD()
10051005 let bR = bA[q]
10061006 let bS = bA[r]
10071007 let bT = bA[s]
10081008 let bU = parseIntValue(bA[t])
10091009 let bV = parseIntValue(bA[u])
10101010 let bW = bA[p]
10111011 let eu = aH()
10121012 let eF = valueOrErrorMessage(addressFromString(eu[z]), "Wr sl addr")
10131013 let dp = value(do.payments[0])
10141014 let eH = valueOrElse(getString(this, aa()), "")
10151015 let bQ = if ((eH == toString(do.caller)))
10161016 then do.originCaller
10171017 else do.caller
10181018 let bN = toBase58String(do.transactionId)
10191019 let bO = value(dp.assetId)
10201020 let cu = dp.amount
10211021 if ((1000000000 > cu))
10221022 then throw("Min pmt 10 LP")
10231023 else if (if (if ((0 > bj))
10241024 then true
10251025 else (0 > fe))
10261026 then true
10271027 else (0 > fg))
10281028 then throw("Wrong params")
10291029 else if ((bR != toBase58String(bO)))
10301030 then throw("Wrong LP")
10311031 else {
10321032 let cG = bM(toBase58String(do.transactionId), toBase58String(bO), cu, do.caller)
10331033 let fh = cG._1
10341034 let fi = cG._2
10351035 let bY = bb(bS)
10361036 let ca = bb(bT)
10371037 let fj = if ((dO == bS))
10381038 then $Tuple7((bY - fh), (ca - fi), fe, fi, 0, 0, (fh + fe))
10391039 else if ((dO == bT))
10401040 then $Tuple7((bY - fh), (ca - fi), 0, 0, fe, fh, (fi + fe))
10411041 else throw("wrong outAssetId")
10421042 let dz = fj._1
10431043 let dA = fj._2
10441044 let eL = fj._3
10451045 let eM = fj._4
10461046 let eN = fj._5
10471047 let eO = fj._6
10481048 let fk = fj._7
10491049 if (if ((0 > eL))
10501050 then true
10511051 else (0 > eN))
10521052 then throw("Wrong calc")
10531053 else {
10541054 let bo = invoke(eF, "calcD", [toString(dz), toString(dA), az, g, h], nil)
10551055 let bn = invoke(eF, "calcD", [toString(((dz - eL) + eO)), toString(((dA + eM) - eN)), az, g, h], nil)
10561056 let eP = bm(parseBigIntValue(ar(bn)), parseBigIntValue(ar(bo)), f)
10571057 if ((eP == eP))
10581058 then {
10591059 let dX = bJ(fk)._1
10601060 let fl = bg(toBigInt(dX), toBigInt(fg), toBigInt(bj))
10611061 if ((fl == fl))
10621062 then {
10631063 let fm = if ((dO == bS))
10641064 then $Tuple2(toInt(fl._2), 0)
10651065 else $Tuple2(0, toInt(fl._2))
10661066 let ea = fm._1
10671067 let eb = fm._2
10681068 let dY = (ea + eb)
10691069 let bL = (fk - dX)
10701070 let ee = if ((dO == "WAVES"))
10711071 then unit
10721072 else fromBase58String(dO)
10731073 let ef = if ((bL > 0))
10741074 then [ScriptTransfer(aC, bL, ee)]
10751075 else nil
10761076 let ec = bd(B(ca, bV), B(bY, bU))
10771077 let ed = E(ec, a)
10781078 let ck = [ScriptTransfer(bQ, dY, ee), StringEntry(W(toString(bQ), bN), aX(ea, eb, cu, ed, height, lastBlock.timestamp)), IntegerEntry(P(), ed), IntegerEntry(Q(height, lastBlock.timestamp), ed)]
10791079 if ((ck == ck))
10801080 then {
10811081 let eg = invoke(ay, "burn", [cu], [AttachedPayment(bO, cu)])
10821082 if ((eg == eg))
10831083 then (ck ++ ef)
10841084 else throw("Strict value is not equal to itself.")
10851085 }
10861086 else throw("Strict value is not equal to itself.")
10871087 }
10881088 else throw("Strict value is not equal to itself.")
10891089 }
10901090 else throw("Strict value is not equal to itself.")
10911091 }
10921092 }
10931093 }
10941094
10951095
10961096
10971097 @Callable(do)
10981098 func getOneTknV2 (dO,dP) = {
10991099 let fn = dN(dO, dP, do.payments, do.caller, do.originCaller, do.transactionId)
11001100 let ck = fn._1
11011101 let dY = fn._2
11021102 $Tuple2(ck, dY)
11031103 }
11041104
11051105
11061106
11071107 @Callable(do)
11081108 func getOneTknV2READONLY (dO,fo) = {
11091109 let dw = aD()
11101110 let bR = dw[q]
11111111 let bS = dw[r]
11121112 let bT = dw[s]
11131113 let cG = bM("", bR, fo, this)
11141114 let fh = cG._1
11151115 let fi = cG._2
11161116 let bY = bb(bS)
11171117 let ca = bb(bT)
11181118 let dz = (bY - fh)
11191119 let dA = (ca - fi)
11201120 let fp = if ((dO == bS))
11211121 then $Tuple3(dA, dz, fi)
11221122 else if ((dO == bT))
11231123 then $Tuple3(dz, dA, fh)
11241124 else throw("wrong outAssetId")
11251125 let fq = fp._1
11261126 let fr = fp._2
11271127 let fs = fp._3
11281128 let ft = 1
11291129 let fe = {
11301130 let dG = invoke(aL, "calcSwapXToY", [toString(fs), toString(fq), toString(fr), "", az, g, toString(ft), h], nil)
11311131 if ($isInstanceOf(dG, "Int"))
11321132 then dG
11331133 else throw(($getType(invoke(aL, "calcSwapXToY", [toString(fs), toString(fq), toString(fr), "", az, g, toString(ft), h], nil)) + " couldn't be cast to Int"))
11341134 }
11351135 let fk = (fe + (if ((dO == bS))
11361136 then fh
11371137 else fi))
11381138 let fu = bJ(fk)
11391139 let dX = fu._1
11401140 let bL = fu._2
11411141 $Tuple2(nil, $Tuple2(dX, bL))
11421142 }
11431143
11441144
11451145
11461146 @Callable(do)
11471147 func getOneTknV2WithBonusREADONLY (dO,fo) = {
11481148 let dw = aD()
11491149 let bS = dw[r]
11501150 let bT = dw[s]
11511151 let bR = dw[q]
11521152 let bY = bb(bS)
11531153 let ca = bb(bT)
11541154 let fv = {
11551155 let dG = invoke(this, "getOneTknV2READONLY", [dO, fo], nil)
11561156 if ($isInstanceOf(dG, "(Int, Int)"))
11571157 then dG
11581158 else throw(($getType(invoke(this, "getOneTknV2READONLY", [dO, fo], nil)) + " couldn't be cast to (Int, Int)"))
11591159 }
11601160 let dX = fv._1
11611161 let bL = fv._2
11621162 let cG = bM("", bR, fo, this)
11631163 let ci = cG._1
11641164 let cj = cG._2
11651165 let eY = fraction(dX, a, fo)
11661166 let eZ = fraction((ci + cj), a, fo)
11671167 let fa = fraction((eY - eZ), a, eZ)
11681168 $Tuple2(nil, $Tuple3(dX, bL, fa))
11691169 }
11701170
11711171
11721172
11731173 @Callable(do)
11741174 func getNoLess (fw,fx) = {
11751175 let cG = dn(do)
11761176 let ci = cG._1
11771177 let cj = cG._2
11781178 let cu = cG._3
11791179 let bO = cG._4
11801180 let ck = cG._5
11811181 if ((fw > ci))
11821182 then throw(((("Failed: " + toString(ci)) + " < ") + toString(fw)))
11831183 else if ((fx > cj))
11841184 then throw(((("Failed: " + toString(cj)) + " < ") + toString(fx)))
11851185 else {
11861186 let fy = invoke(ay, "burn", [cu], [AttachedPayment(bO, cu)])
11871187 if ((fy == fy))
11881188 then ck
11891189 else throw("Strict value is not equal to itself.")
11901190 }
11911191 }
11921192
11931193
11941194
11951195 @Callable(do)
11961196 func unstakeAndGet (bK) = {
11971197 let fz = if ((size(do.payments) != 0))
11981198 then throw("No pmnts expd")
11991199 else true
12001200 if ((fz == fz))
12011201 then {
12021202 let bA = aD()
12031203 let fA = aH()
12041204 let dM = fromBase58String(bA[q])
12051205 let fB = valueOrErrorMessage(addressFromString(fA[x]), "Wr st addr")
12061206 let fC = invoke(fB, "unstake", [toBase58String(dM), bK], nil)
12071207 if ((fC == fC))
12081208 then {
12091209 let cG = bM(toBase58String(do.transactionId), toBase58String(dM), bK, do.caller)
12101210 let bW = parseIntValue(cG._9)
12111211 let ck = cG._10
12121212 let fD = if (if (aA())
12131213 then true
12141214 else (bW == n))
12151215 then throw(("Blocked: " + toString(bW)))
12161216 else true
12171217 if ((fD == fD))
12181218 then {
12191219 let fE = invoke(ay, "burn", [bK], [AttachedPayment(dM, bK)])
12201220 if ((fE == fE))
12211221 then ck
12221222 else throw("Strict value is not equal to itself.")
12231223 }
12241224 else throw("Strict value is not equal to itself.")
12251225 }
12261226 else throw("Strict value is not equal to itself.")
12271227 }
12281228 else throw("Strict value is not equal to itself.")
12291229 }
12301230
12311231
12321232
12331233 @Callable(do)
12341234 func unstakeAndGetOneTkn (fF,dO,dP) = {
12351235 let fz = if ((size(do.payments) != 0))
12361236 then throw("No pmnts expd")
12371237 else true
12381238 if ((fz == fz))
12391239 then {
12401240 let bA = aD()
12411241 let fA = aH()
12421242 let dM = fromBase58String(bA[q])
12431243 let fB = valueOrErrorMessage(addressFromString(fA[x]), "Wr st addr")
12441244 let fC = invoke(fB, "unstake", [toBase58String(dM), fF], nil)
12451245 if ((fC == fC))
12461246 then {
12471247 let fG = dN(dO, dP, [AttachedPayment(dM, fF)], do.caller, do.originCaller, do.transactionId)
12481248 let ck = fG._1
12491249 let dY = fG._2
12501250 $Tuple2(ck, dY)
12511251 }
12521252 else throw("Strict value is not equal to itself.")
12531253 }
12541254 else throw("Strict value is not equal to itself.")
12551255 }
12561256
12571257
12581258
12591259 @Callable(do)
12601260 func activate (fH,fI) = if ((toString(do.caller) != toString(ay)))
12611261 then throw("denied")
12621262 else $Tuple2([StringEntry(X(), fH), StringEntry(Y(), fI)], "success")
12631263
12641264
12651265
12661266 @Callable(do)
12671267 func setS (fJ,fD) = if ((toString(do.caller) != au(this, aa())))
12681268 then ek
12691269 else [StringEntry(fJ, fD)]
12701270
12711271
12721272
12731273 @Callable(do)
12741274 func setI (fJ,fD) = if ((toString(do.caller) != au(this, aa())))
12751275 then ek
12761276 else [IntegerEntry(fJ, fD)]
12771277
12781278
12791279
12801280 @Callable(do)
12811281 func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aD())
12821282
12831283
12841284
12851285 @Callable(do)
12861286 func getAccBalanceWrapperREADONLY (bc) = $Tuple2(nil, bb(bc))
12871287
12881288
12891289
12901290 @Callable(do)
12911291 func calcPricesWrapperREADONLY (bu,bv,bz) = {
12921292 let fK = by(bu, bv, bz)
12931293 $Tuple2(nil, [toString(fK[0]), toString(fK[1]), toString(fK[2])])
12941294 }
12951295
12961296
12971297
12981298 @Callable(do)
12991299 func fromX18WrapperREADONLY (F,fL) = $Tuple2(nil, E(parseBigIntValue(F), fL))
13001300
13011301
13021302
13031303 @Callable(do)
13041304 func toX18WrapperREADONLY (C,D) = $Tuple2(nil, toString(B(C, D)))
13051305
13061306
13071307
13081308 @Callable(do)
13091309 func calcPriceBigIntWrapperREADONLY (be,bf) = $Tuple2(nil, toString(bd(parseBigIntValue(be), parseBigIntValue(bf))))
13101310
13111311
13121312
13131313 @Callable(do)
13141314 func estimatePutOperationWrapperREADONLY (bN,bj,cm,cn,co,cp,fM,cq,cr) = $Tuple2(nil, cl(bN, bj, cm, cn, co, cp, fM, cq, cr, true, false, 0, ""))
13151315
13161316
13171317
13181318 @Callable(do)
13191319 func estimateGetOperationWrapperREADONLY (bN,fN,bP,fM) = {
13201320 let cG = bM(bN, fN, bP, addressFromStringValue(fM))
13211321 $Tuple2(nil, $Tuple10(cG._1, cG._2, cG._3, cG._4, cG._5, cG._6, cG._7, toString(cG._8), cG._9, cG._10))
13221322 }
13231323
13241324
13251325
13261326 @Callable(do)
13271327 func getFeeREADONLY () = $Tuple2(nil, ac)
13281328
13291329
13301330 @Verifier(fO)
13311331 func fP () = {
13321332 let fQ = {
13331333 let as = eh()
13341334 if ($isInstanceOf(as, "ByteVector"))
13351335 then {
13361336 let em = as
13371337 em
13381338 }
13391339 else if ($isInstanceOf(as, "Unit"))
13401340 then fO.senderPublicKey
13411341 else throw("Match error")
13421342 }
13431343 let as = fO
13441344 if ($isInstanceOf(as, "Order"))
13451345 then {
13461346 let db = as
13471347 let fR = aB()
13481348 let fS = da(db)
13491349 let fT = sigVerify(db.bodyBytes, db.proofs[0], db.senderPublicKey)
13501350 let fU = sigVerify(db.bodyBytes, db.proofs[1], fR)
13511351 if (if (if (fS)
13521352 then fT
13531353 else false)
13541354 then fU
13551355 else false)
13561356 then true
13571357 else an(fS, fT, fU)
13581358 }
13591359 else if ($isInstanceOf(as, "SetScriptTransaction"))
13601360 then {
13611361 let ei = as
13621362 let fV = blake2b256(value(ei.script))
13631363 let fW = fromBase64String(value(getString(ay, al())))
13641364 let fX = scriptHash(this)
13651365 if (if ((fW == fV))
13661366 then (fX != fV)
13671367 else false)
13681368 then true
13691369 else sigVerify(fO.bodyBytes, fO.proofs[0], fQ)
13701370 }
13711371 else sigVerify(fO.bodyBytes, fO.proofs[0], fQ)
13721372 }
13731373

github/deemru/w8io/026f985 
173.41 ms