tx · 83tmBwRtUhBf5EjoybdFX7mnWFapcFmC4f9ZBbukg8NT

3MzKSdTH2jFbypLsoNfrH7QgkzSbx3EYwCA:  -0.03400000 Waves

2022.10.06 16:04 [2260493] smart account 3MzKSdTH2jFbypLsoNfrH7QgkzSbx3EYwCA > SELF 0.00000000 Waves

{ "type": 13, "id": "83tmBwRtUhBf5EjoybdFX7mnWFapcFmC4f9ZBbukg8NT", "fee": 3400000, "feeAssetId": null, "timestamp": 1665061477589, "version": 1, "sender": "3MzKSdTH2jFbypLsoNfrH7QgkzSbx3EYwCA", "senderPublicKey": "35yd3qw1gxKDxKwGAykHN9fANbXNWwseaUwbWDj24o3x", "proofs": [ "3NE9W4eNHAb4cBuJMubPPx7gXmj8LFQJwe1YRBFRvEdHTY7QyFbCSKBFrgppPCagUJRz7mPTQRFpBXhp6dqFf1pN" ], "script": "base64:BgKkIggCEgMKAQgSAwoBCBIAEgQKAgEEEgcKBQEBAQEEEgQKAgEEEgQKAgEIEgMKAQESABIHCgUBAQEIARIECgIIARIECgIIARIECgIIARIECgIIARIECgIBARIDCgEBEgUKAwEIARIECgIBCBIECgIICBIECgIICBIECgIIARIAEgMKAQgSBQoDAQEBEgQKAggBEgQKAgEBEgQKAggIEgsKCQgBAQIBAggEBBIGCgQICAEIEgAiBnNjYWxlOCIMc2NhbGU4QmlnSW50IgdzY2FsZTE4Igp6ZXJvQmlnSW50IgRiaWcwIgRiaWcxIgRiaWcyIgpzbGlwcGFnZTREIgVBbXVsdCIFRGNvbnYiA1NFUCIFRU1QVFkiClBvb2xBY3RpdmUiClBvb2xQdXREaXMiDlBvb2xNYXRjaGVyRGlzIgxQb29sU2h1dGRvd24iDmlkeFBvb2xBZGRyZXNzIglpZHhQb29sU3QiCWlkeExQQXNJZCIJaWR4QW1Bc0lkIglpZHhQckFzSWQiC2lkeEFtdEFzRGNtIg1pZHhQcmljZUFzRGNtIgtpZHhJQW10QXNJZCINaWR4SVByaWNlQXNJZCIPaWR4RmFjdFN0YWtDbnRyIhBpZHhGYWN0U2xpcHBDbnRyIhFpZHhGYWN0R3d4UmV3Q250ciIKZmVlRGVmYXVsdCICdDEiB29yaWdWYWwiDW9yaWdTY2FsZU11bHQiAmYxIgN2YWwiD3Jlc3VsdFNjYWxlTXVsdCICdHMiA2FtdCIIcmVzU2NhbGUiCGN1clNjYWxlIgNhYnMiCWFic0JpZ0ludCICZmMiA21wayIEcG1wayICcGwiAnBoIgFoIgF0IgNwYXUiAnVhIgR0eElkIgNnYXUiAmFhIgJwYSIDYW1wIgNhZGEiBmtleUZlZSIDZmVlIgRmY2ZnIgRtdHBrIgJwYyIGaUFtdEFzIgVpUHJBcyIDbWJhIgViQVN0ciIDYXBzIhxrZXlBbGxvd2VkTHBTdGFibGVTY3JpcHRIYXNoIhZrZXlGZWVDb2xsZWN0b3JBZGRyZXNzIgN0b2UiA29yViIGc2VuZHJWIgZtYXRjaFYiA3N0ciIHJG1hdGNoMCIGdmFsU3RyIgRzdHJmIgRhZGRyIgNrZXkiBGludGYiA2ZjYSIBQSIDaWdzIgJtcCITZmVlQ29sbGVjdG9yQWRkcmVzcyIDZ3BjIgVhbXRBcyIHcHJpY2VBcyIIaVByaWNlQXMiA2dmYyINZmFjdG9yeUNvbmZpZyIPc3Rha2luZ0NvbnRyYWN0Ig9zbGlwYWdlQ29udHJhY3QiC2d3eENvbnRyYWN0IhFkYXRhUHV0QWN0aW9uSW5mbyINaW5BbXRBc3NldEFtdCIPaW5QcmljZUFzc2V0QW10IghvdXRMcEFtdCIFcHJpY2UiCnNsaXBCeVVzZXIiDHNsaXBwYWdlUmVhbCIIdHhIZWlnaHQiC3R4VGltZXN0YW1wIgxzbGlwYWdlQW1BbXQiDHNsaXBhZ2VQckFtdCIRZGF0YUdldEFjdGlvbkluZm8iDm91dEFtdEFzc2V0QW10IhBvdXRQcmljZUFzc2V0QW10IgdpbkxwQW10Ig1nZXRBY2NCYWxhbmNlIgdhc3NldElkIgRjcGJpIghwckFtdFgxOCIIYW1BbXRYMTgiA3ZhZCICQTEiAkEyIghzbGlwcGFnZSIEZGlmZiIEcGFzcyICdmQiAkQxIgJEMCIEc2xwZyIEZmFpbCIDcGNwIgphbUFzc2V0RGNtIgpwckFzc2V0RGNtIgVhbUFtdCIFcHJBbXQiC2FtdEFzQW10WDE4IgpwckFzQW10WDE4IgpjYWxjUHJpY2VzIgVscEFtdCIDY2ZnIghhbXRBc0RjbSIHcHJBc0RjbSIIcHJpY2VYMTgiCGxwQW10WDE4Ig1scFBySW5BbUFzWDE4Ig1scFBySW5QckFzWDE4Ig9jYWxjdWxhdGVQcmljZXMiAXAiB3Rha2VGZWUiBmFtb3VudCIJZmVlQW1vdW50IgNlZ28iBnR4SWQ1OCIKcG10QXNzZXRJZCIIcG10THBBbXQiC3VzZXJBZGRyZXNzIgRscElkIgRhbUlkIgRwcklkIgVhbURjbSIFcHJEY20iA3N0cyIHbHBFbWlzcyIJYW1CYWxhbmNlIgxhbUJhbGFuY2VYMTgiCXByQmFsYW5jZSIMcHJCYWxhbmNlWDE4IgtjdXJQcmljZVgxOCIIY3VyUHJpY2UiC3BtdExwQW10WDE4IgpscEVtaXNzWDE4IgtvdXRBbUFtdFgxOCILb3V0UHJBbXRYMTgiCG91dEFtQW10IghvdXRQckFtdCIFc3RhdGUiA2VwbyIHaW5BbUFtdCIGaW5BbUlkIgdpblByQW10IgZpblBySWQiBmlzRXZhbCIGZW1pdExwIgppc09uZUFzc2V0IhB2YWxpZGF0ZVNsaXBwYWdlIgZwbXRBbXQiBXBtdElkIgdhbUlkU3RyIgdwcklkU3RyIglpbkFtSWRTdHIiCWluUHJJZFN0ciIGYW10RGNtIghwcmljZURjbSIEbHBFbSIPaW5BbUFzc2V0QW10WDE4Ig9pblByQXNzZXRBbXRYMTgiDHVzZXJQcmljZVgxOCIBciILc2xpcHBhZ2VYMTgiD3NsaXBwYWdlUmVhbFgxOCINbHBFbWlzc2lvblgxOCIKcHJWaWFBbVgxOCIKYW1WaWFQclgxOCIMZXhwZWN0ZWRBbXRzIhFleHBBbXRBc3NldEFtdFgxOCITZXhwUHJpY2VBc3NldEFtdFgxOCIJY2FsY0xwQW10Ig5jYWxjQW1Bc3NldFBtdCIOY2FsY1ByQXNzZXRQbXQiDHNsaXBwYWdlQ2FsYyIJZW1pdExwQW10IgZhbURpZmYiBnByRGlmZiINJHQwMTYzNTExNjY5NiIKd3JpdGVBbUFtdCIKd3JpdGVQckFtdCILY29tbW9uU3RhdGUiA21vYSIFb3JkZXIiB2FtdEFzSWQiBnByQXNJZCIPYWNjQW10QXNCYWxhbmNlIg5hY2NQckFzQmFsYW5jZSIKb3JBbXRBc3NldCIKb3JBbXRBc1N0ciIJb3JQckFzc2V0IglvclByQXNTdHIiCm9yZGVyUHJpY2UiDmNhc3RPcmRlclByaWNlIhFpc09yZGVyUHJpY2VWYWxpZCICY2ciAWkiA3BtdCICY3AiBmNhbGxlciIHYW1Bc1BtdCIHcHJBc1BtdCITZXN0aW1hdGVQdXRPbmVUa25WMiIJcG10QW10UmF3Igpwb29sQ29uZmlnIg0kdDAyMTAyNzIxMDcyIg0kdDAyMTA3NjIxNTM3IgxhbUJhbGFuY2VOb3ciDHByQmFsYW5jZU5vdyINJHQwMjE1NDEyMTY3NSIQYW1CYWxhbmNlRm9yQ2FsYyIQcHJCYWxhbmNlRm9yQ2FsYyIKeFByZWNpc2lvbiIGcmVzdWx0IgFAIg0kdDAyMjE0NDIyMjQwIgthbUFzc2V0UGFydCILcHJBc3NldFBhcnQiBmVzdFB1dCIHZXN0aW1MUCIJbHBBc3NldElkIhNnZXRPbmVUa25WMkludGVybmFsIgpvdXRBc3NldElkIgxtaW5PdXRBbW91bnQiCHBheW1lbnRzIgxvcmlnaW5DYWxsZXIiDXRyYW5zYWN0aW9uSWQiCmFtRGVjaW1hbHMiCnByRGVjaW1hbHMiCnBvb2xTdGF0dXMiDSR0MDIzNTk1MjM3MDMiCHRvdGFsR2V0Igt0b3RhbEFtb3VudCINJHQwMjM4OTAyMzk3NyIFb3V0QW0iBW91dFByIghjdXJQclgxOCIFY3VyUHIiEW91dEFzc2V0SWRPcldhdmVzIhBzZW5kRmVlVG9NYXRjaGVyIgRidXJuIgRnZXREIgJ4cCIBbiIDeHAwIgN4cDEiCmFQcmVjaXNpb24iAWEiAXMiA2FubiIEY2FsYyIDYWNjIgNjdXIiDSR0MDI1MTM1MjUxNTUiAWQiBWZvdW5kIgJkcCIFZE5leHQiBWREaWZmIgNhcnIiDSR0MDI1NTc5MjU2MjUiAiRsIgIkcyIFJGFjYzAiBSRmMF8xIgIkYSICJGkiBSRmMF8yIgVnZXRZRCIBRCIBeCIBYyIBYiINJHQwMjYxMjUyNjE0NSIBeSIFeU5leHQiBXlEaWZmIg0kdDAyNjQ1MjI2NDk5IgFtIgJwbSICcGQiAm1tIgJwayIXcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkiAmNtIgNocG0iA2NwbSIEc2xpcCIJYXV0b1N0YWtlIgdmYWN0Q2ZnIgtzdGFraW5nQ250ciIIc2xpcENudHIiAWUiAmVsIgZsZWdhY3kiAnNhIgJzcCIIbHBUcm5zZnIiAnNzIgVvdXRMcCIHZ3d4Q250ciIHcG9vbENmZyIFYWRkb24iEHBheW1lbnRBbW91bnRSYXciDSR0MDMxMTk1MzEyNDciDSR0MDMxNDA3MzIwMjMiDHZpcnRTd2FwSW5BbSINdmlydFN3YXBPdXRQciIMdmlydFN3YXBJblByIg12aXJ0U3dhcE91dEFtIgZEMHZzRDEiCWxwQ2FsY1JlcyINcGF5bWVudEFtb3VudCIOcGF5bWVudEFzc2V0SWQiD2xwQXNzZXRFbWlzc2lvbiIOcG9vbFByb3BvcnRpb24iD2Ftb3VudEFzc2V0UGFydCIOcHJpY2VBc3NldFBhcnQiCWxwQW10Qm90aCIFYm9udXMiB21heFNscGciCW91dEFtdEFtdCIKZXhjaFJlc3VsdCIHbm90VXNlZCIJb3V0QW1vdW50Igplc3RpbUFtQW10Igplc3RpbVByQW10Ig0kdDAzOTk4MzQwNDQzIgt0b3RhbEdldFJhdyIIZmluYWxSZXMiDSR0MDQxMTkwNDEyOTQiDSR0MDQyMzE5NDI0NzQiDWxwQXNzZXRBbW91bnQiDSR0MDQyOTg3NDMyOTUiFGFtb3VudEJhbGFuY2VGb3JTd2FwIhNwcmljZUJhbGFuY2VGb3JTd2FwIgxhbW91bnRUb1N3YXAiC2Ftb3VudFRvQWRkIgp5UHJlY2lzaW9uIg0kdDA0MzgyMzQzODcyIgpscEVtaXNzaW9uIgVpbmRleCIEbmV3WSICZHkiDSR0MDQ0NTYzNDQ2MTIiDSR0MDQ0OTU3NDUwNzIiDnN1bU9mR2V0QXNzZXRzIhJub0xlc3NUaGVuQW10QXNzZXQiFG5vTGVzc1RoZW5QcmljZUFzc2V0IhRidXJuTFBBc3NldE9uRmFjdG9yeSINY2hlY2tQYXltZW50cyIKZmFjdG9yeUNmZyIHc3Rha2luZyIKdW5zdGFrZUludiIBdiIFYnVybkEiDXVuc3Rha2VBbW91bnQiDSR0MDQ3Mzc3NDc1NjUiBWFzc2V0IgxwYXltZW50QXNzZXQiDSR0MDQ4MDAyNDgwOTIiDSR0MDQ4MDk2NDgyNzgiCGFtQW1vdW50IghwckFtb3VudCIMYW1CYWxhbmNlT2xkIgxwckJhbGFuY2VPbGQiDGFtQmFsYW5jZU5ldyIMcHJCYWxhbmNlTmV3IghscEFtb3VudCIIYW10QXNTdHIiB3ByQXNTdHIiAWsiAnByIgxyZXNTY2FsZU11bHQiB3VzckFkZHIiB3BtdEFzSWQiAnR4IgZ2ZXJpZnkiD3RhcmdldFB1YmxpY0tleSIKbWF0Y2hlclB1YiIKb3JkZXJWYWxpZCILc2VuZGVyVmFsaWQiDG1hdGNoZXJWYWxpZCIHbmV3SGFzaCILYWxsb3dlZEhhc2giC2N1cnJlbnRIYXNoXAABYQCAwtcvAAFiCQC2AgEAgMLXLwABYwkAtgIBAICAkLu61q3wDQABZAkAtgIBAAAAAWUJALYCAQAAAAFmCQC2AgEAAQABZwkAtgIBAAIAAWgJALYCAQkAZQIFAWEJAGkCCQBoAgUBYQABBQFhAAFpAgMxMDAAAWoCATEAAWsCAl9fAAFsAgAAAW0AAQABbgACAAFvAAMAAXAABAABcQABAAFyAAIAAXMAAwABdAAEAAF1AAUAAXYABgABdwAHAAF4AAgAAXkACQABegABAAFBAAcAAUIACgABQwkAawMABQUBYQCQTgEBRAIBRQFGCQC8AgMJALYCAQUBRQUBYwkAtgIBBQFGAQFHAgFIAUkJAKADAQkAvAIDBQFICQC2AgEFAUkFAWMBAUoDAUsBTAFNCQBrAwUBSwUBTAUBTQEBTgEBSAMJAL8CAgUBZAUBSAkAvgIBBQFIBQFIAQFPAQFIAwkAvwICBQFkBQFICQC+AgEFAUgFAUgBAVAAAhMlc19fZmFjdG9yeUNvbnRyYWN0AQFRAAIUJXNfX21hbmFnZXJQdWJsaWNLZXkBAVIAAhslc19fcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkBAVMAAhElcyVzX19wcmljZV9fbGFzdAEBVAIBVQFWCQC5CQIJAMwIAgIYJXMlcyVkJWRfX3ByaWNlX19oaXN0b3J5CQDMCAIJAKQDAQUBVQkAzAgCCQCkAwEFAVYFA25pbAUBawEBVwIBWAFZCQCsAgIJAKwCAgkArAICAgslcyVzJXNfX1BfXwUBWAICX18FAVkBAVoCAVgBWQkArAICCQCsAgIJAKwCAgILJXMlcyVzX19HX18FAVgCAl9fBQFZAQJhYQACDyVzX19hbW91bnRBc3NldAECYWIAAg4lc19fcHJpY2VBc3NldAECYWMAAgclc19fYW1wAQJhZAACDSVzX19hZGRvbkFkZHIAAmFlAgclc19fZmVlAAJhZgkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQJhZQUBQwECYWcAAhElc19fZmFjdG9yeUNvbmZpZwECYWgAAhglcyVzX19tYXRjaGVyX19wdWJsaWNLZXkBAmFpAgJhagJhawkArAICCQCsAgIJAKwCAgkArAICAgglZCVkJXNfXwUCYWoCAl9fBQJhawIIX19jb25maWcBAmFsAQJhbQkArAICAiglcyVzJXNfX21hcHBpbmdzX19iYXNlQXNzZXQyaW50ZXJuYWxJZF9fBQJhbQECYW4AAgwlc19fc2h1dGRvd24BAmFvAAIdJXNfX2FsbG93ZWRMcFN0YWJsZVNjcmlwdEhhc2gBAmFwAAIXJXNfX2ZlZUNvbGxlY3RvckFkZHJlc3MBAmFxAwJhcgJhcwJhdAkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAhFGYWlsZWQ6IG9yZFZhbGlkPQkApQMBBQJhcgILIHNuZHJWYWxpZD0JAKUDAQUCYXMCDCBtdGNoclZhbGlkPQkApQMBBQJhdAECYXUBAUgEAmF2BQFIAwkAAQIFAmF2AgZTdHJpbmcEAmF3BQJhdgUCYXcJAAIBAhNmYWlsIGNhc3QgdG8gU3RyaW5nAQJheAICYXkCYXoJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQJheQUCYXoJALkJAgkAzAgCAgptYW5kYXRvcnkgCQDMCAIJAKUIAQUCYXkJAMwIAgIBLgkAzAgCBQJhegkAzAgCAgwgbm90IGRlZmluZWQFA25pbAIAAQJhQQICYXkCYXoJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQJheQUCYXoJALkJAgkAzAgCAgptYW5kYXRvcnkgCQDMCAIJAKUIAQUCYXkJAMwIAgIBLgkAzAgCBQJhegkAzAgCAgwgbm90IGRlZmluZWQFA25pbAIAAAJhQgkBEUBleHRyTmF0aXZlKDEwNjIpAQkBAmF4AgUEdGhpcwkBAVAAAAJhQwkBAmF4AgUEdGhpcwkBAmFjAAECYUQACQELdmFsdWVPckVsc2UCCQCbCAIFAmFCCQECYW4ABwECYUUACQDZBAEJAQJheAIFAmFCCQECYWgAAAJhRgkBEUBleHRyTmF0aXZlKDEwNjIpAQkBAmF4AgUCYUIJAQJhcAABAmFHAAQCYUgJAQJheAIFBHRoaXMJAQJhYQAEAmFJCQECYXgCBQR0aGlzCQECYWIABAJhSgkBAmFBAgUCYUIJAQJhbAEFAmFJBAJhagkBAmFBAgUCYUIJAQJhbAEFAmFICQC1CQIJAQJheAIFAmFCCQECYWkCCQCkAwEFAmFqCQCkAwEFAmFKBQFrAQJhSwAJALUJAgkBAmF4AgUCYUIJAQJhZwAFAWsAAmFMCQECYUsAAAJhTQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCYUwFAXoCIEludmFsaWQgc3Rha2luZyBjb250cmFjdCBhZGRyZXNzAAJhTgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCYUwFAUECIEludmFsaWQgc2xpcGFnZSBjb250cmFjdCBhZGRyZXNzAAJhTwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCYUwFAUICHEludmFsaWQgZ3d4IGNvbnRyYWN0IGFkZHJlc3MBAmFQCgJhUQJhUgJhUwJhVAJhVQJhVgJhVwJhWAJhWQJhWgkAuQkCCQDMCAICFCVkJWQlZCVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCYVEJAMwIAgkApAMBBQJhUgkAzAgCCQCkAwEFAmFTCQDMCAIJAKQDAQUCYVQJAMwIAgkApAMBBQJhVQkAzAgCCQCkAwEFAmFWCQDMCAIJAKQDAQUCYVcJAMwIAgkApAMBBQJhWAkAzAgCCQCkAwEFAmFZCQDMCAIJAKQDAQUCYVoFA25pbAUBawECYmEGAmJiAmJjAmJkAmFUAmFXAmFYCQC5CQIJAMwIAgIMJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCYmIJAMwIAgkApAMBBQJiYwkAzAgCCQCkAwEFAmJkCQDMCAIJAKQDAQUCYVQJAMwIAgkApAMBBQJhVwkAzAgCCQCkAwEFAmFYBQNuaWwFAWsBAmJlAQJiZgMJAAACBQJiZgIFV0FWRVMICQDvBwEFBHRoaXMJYXZhaWxhYmxlCQDwBwIFBHRoaXMJANkEAQUCYmYBAmJnAgJiaAJiaQkAvAIDBQJiaAUBYwUCYmkBAmJqAwJiawJibAJibQQCYm4JALwCAwkAuAICBQJiawUCYmwFAWIFAmJsBAJibwkAvwICCQC4AgIFAmJtCQEBTgEFAmJuBQFkAwkBASEBBQJibwkAAgEJAKwCAgIKQmlnIHNscGc6IAkApgMBBQJibgkAlAoCBQJibwkAmQMBCQDMCAIFAmJrCQDMCAIFAmJsBQNuaWwBAmJwAwJicQJicgJicwQCYm4JALwCAwUCYnIFAWIFAmJxBAJidAkAvwICBQJicwUCYm4DAwUCYnQGCQC/AgIFAmJyBQJicQkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKYDAQUCYnICASAJAKYDAQUCYnECASAJAKYDAQUCYm4CASAJAKYDAQUCYnMFAmJ0AQJidQQCYnYCYncCYngCYnkEAmJ6CQEBRAIFAmJ4BQJidgQCYkEJAQFEAgUCYnkFAmJ3CQECYmcCBQJiQQUCYnoBAmJCAwJieAJieQJiQwQCYkQJAQJhRwAEAmJFCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYkQFAXYEAmJGCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYkQFAXcEAmJHCQECYnUEBQJiRQUCYkYFAmJ4BQJieQQCYmkJAQFEAgUCYngFAmJFBAJiaAkBAUQCBQJieQUCYkYEAmJICQEBRAIFAmJDBQFhBAJiSQkBAmJnAgUCYmkFAmJIBAJiSgkBAmJnAgUCYmgFAmJICQDMCAIFAmJHCQDMCAIFAmJJCQDMCAIFAmJKBQNuaWwBAmJLAwJieAJieQJiQwQCYkwJAQJiQgMFAmJ4BQJieQUCYkMJAMwIAgkBAUcCCQCRAwIFAmJMAAAFAWEJAMwIAgkBAUcCCQCRAwIFAmJMAAEFAWEJAMwIAgkBAUcCCQCRAwIFAmJMAAIFAWEFA25pbAECYk0BAmJOBAJiTwkAawMFAmJOBQJhZgUBYQkAlAoCCQBlAgUCYk4FAmJPBQJiTwECYlAEAmJRAmJSAmJTAmJUBAJiRAkBAmFHAAQCYlUJAJEDAgUCYkQFAXMEAmJWCQCRAwIFAmJEBQF0BAJiVwkAkQMCBQJiRAUBdQQCYlgJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiRAUBdgQCYlkJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiRAUBdwQCYloJAJEDAgUCYkQFAXIEAmNhCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEJANkEAQUCYlUCC1dyb25nIExQIGlkCHF1YW50aXR5AwkBAiE9AgUCYlUFAmJSCQACAQIPV3JvbmcgcG10IGFzc2V0BAJjYgkBAmJlAQUCYlYEAmNjCQEBRAIFAmNiBQJiWAQCY2QJAQJiZQEFAmJXBAJjZQkBAUQCBQJjZAUCYlkEAmNmCQECYmcCBQJjZQUCY2MEAmNnCQEBRwIFAmNmBQFhBAJjaAkBAUQCBQJiUwUBYQQCY2kJAQFEAgUCY2EFAWEEAmNqCQC8AgMFAmNjBQJjaAUCY2kEAmNrCQC8AgMFAmNlBQJjaAUCY2kEAmNsCQEBRwIFAmNqBQJiWAQCY20JAQFHAgUCY2sFAmJZBAJjbgMJAAACBQJiUQIABQNuaWwJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYlQFAmNsAwkAAAIFAmJWAgVXQVZFUwUEdW5pdAkA2QQBBQJiVgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJiVAUCY20DCQAAAgUCYlcCBVdBVkVTBQR1bml0CQDZBAEFAmJXCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFaAgkApQgBBQJiVAUCYlEJAQJiYQYFAmNsBQJjbQUCYlMFAmNnBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBUwAFAmNnCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVAIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmNnBQNuaWwJAJwKCgUCY2wFAmNtBQJiVgUCYlcFAmNiBQJjZAUCY2EFAmNmBQJiWgUCY24BAmNvDQJiUQJibQJjcAJjcQJjcgJjcwJiVAJjdAJjdQJjdgJjdwJjeAJjeQQCYkQJAQJhRwAEAmJVCQDZBAEJAJEDAgUCYkQFAXMEAmN6CQCRAwIFAmJEBQF0BAJjQQkAkQMCBQJiRAUBdQQCY0IJAJEDAgUCYkQFAXgEAmNDCQCRAwIFAmJEBQF5BAJjRAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJEBQF2BAJjRQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJEBQF3BAJiWgkAkQMCBQJiRAUBcgQCY0YICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCYlUCCFdyIGxwIGFzCHF1YW50aXR5BAJjYgMFAmN0CQECYmUBBQJjegMDBQJjdgkAAAIFAmN5BQJjegcJAGUCCQECYmUBBQJjegUCY3gDBQJjdgkBAmJlAQUCY3oJAGUCCQECYmUBBQJjegUCY3AEAmNkAwUCY3QJAQJiZQEFAmNBAwMFAmN2CQAAAgUCY3kFAmNBBwkAZQIJAQJiZQEFAmNBBQJjeAMFAmN2CQECYmUBBQJjQQkAZQIJAQJiZQEFAmNBBQJjcgQCY0cJAQFEAgUCY3AFAmNEBAJjSAkBAUQCBQJjcgUCY0UEAmNJCQECYmcCBQJjSAUCY0cEAmNjCQEBRAIFAmNiBQJjRAQCY2UJAQFEAgUCY2QFAmNFBAJjSgMJAAACBQJjRgAABAJjZgUBZAQCY0sFAWQEAmJICQB2BgkAuQICBQJjRwUCY0gAAAkAtgIBAAUAAQAABQRET1dOCQCXCgUJAQFHAgUCYkgFAWEJAQFHAgUCY0cFAmNECQEBRwIFAmNIBQJjRQkBAmJnAgkAtwICBQJjZQUCY0gJALcCAgUCY2MFAmNHBQJjSwQCY2YJAQJiZwIFAmNlBQJjYwQCY0wJALwCAwkBAU4BCQC4AgIFAmNmBQJjSQUBYwUCY2YEAmNLCQEBRAIFAmJtBQFhAwMDBQJjdwkBAiE9AgUCY2YFAWQHCQC/AgIFAmNMBQJjSwcJAAIBCQCsAgIJAKwCAgkArAICAg9QcmljZSBzbGlwcGFnZSAJAKYDAQUCY0wCAyA+IAkApgMBBQJjSwQCY00JAQFEAgUCY0YFAWEEAmNOCQC8AgMFAmNHBQJjZgUBYwQCY08JALwCAwUCY0gFAWMFAmNmBAJjUAMJAL8CAgUCY04FAmNICQCUCgIFAmNPBQJjSAkAlAoCBQJjRwUCY04EAmNRCAUCY1ACXzEEAmNSCAUCY1ACXzIEAmJICQC8AgMFAmNNBQJjUgUCY2UJAJcKBQkBAUcCBQJiSAUBYQkBAUcCBQJjUQUCY0QJAQFHAgUCY1IFAmNFBQJjZgUCY0sEAmNTCAUCY0oCXzEEAmNUCAUCY0oCXzIEAmNVCAUCY0oCXzMEAmNnCQEBRwIIBQJjSgJfNAUBYQQCY1YJAQFHAggFAmNKAl81BQFhAwkAZwIAAAUCY1MJAAIBAgdMUCA8PSAwBAJjVwMJAQEhAQUCY3UAAAUCY1MEAmNYCQBlAgUCY3AFAmNUBAJjWQkAZQIFAmNyBQJjVQQCY1oDAwUCY3YJAAACBQJjeQUCY3oHCQCUCgIFAmN4AAADAwUCY3YJAAACBQJjeQUCY0EHCQCUCgIAAAUCY3gJAJQKAgUCY1QFAmNVBAJkYQgFAmNaAl8xBAJkYggFAmNaAl8yBAJkYwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVMABQJjZwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVQCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJjZwkAzAgCCQELU3RyaW5nRW50cnkCCQEBVwIFAmJUBQJiUQkBAmFQCgUCZGEFAmRiBQJjVwUCY2cFAmJtBQJjVgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCY1gFAmNZBQNuaWwJAJ8KDQUCY1MFAmNXBQJjZwUCY2IFAmNkBQJjRgUCYlUFAmJaBQJkYwUCY1gFAmNZBQJjcQUCY3MBAmRkAQJkZQQCYkQJAQJhRwAEAmRmCQCRAwIFAmJEBQF0BAJkZwkAkQMCBQJiRAUBdQQCYloJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiRAUBcgQCYkUJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiRAUBdgQCYkYJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiRAUBdwQCZGgJAQJiZQEFAmRmBAJkaQkBAmJlAQUCZGcEAmNmAwkAAAIIBQJkZQlvcmRlclR5cGUFA0J1eQkBAmJ1BAUCYkUFAmJGCQBkAgUCZGgIBQJkZQZhbW91bnQFAmRpCQECYnUEBQJiRQUCYkYJAGUCBQJkaAgFAmRlBmFtb3VudAUCZGkEAmNnCQEBRwIFAmNmBQFhAwMDCQECYUQABgkAAAIFAmJaBQFvBgkAAAIFAmJaBQFwCQACAQINQWRtaW4gYmxvY2tlZAQCZGoICAUCZGUJYXNzZXRQYWlyC2Ftb3VudEFzc2V0BAJkawMJAAACBQJkagUEdW5pdAIFV0FWRVMJANgEAQkBBXZhbHVlAQUCZGoEAmRsCAgFAmRlCWFzc2V0UGFpcgpwcmljZUFzc2V0BAJkbQMJAAACBQJkbAUEdW5pdAIFV0FWRVMJANgEAQkBBXZhbHVlAQUCZGwDAwkBAiE9AgUCZGsFAmRmBgkBAiE9AgUCZG0FAmRnCQACAQIJV3IgYXNzZXRzBAJkbggFAmRlBXByaWNlBAJjRQkAawMFAWEFAmJGBQJiRQQCZG8JAQFKAwUCZG4FAWEFAmNFBAJkcAMJAAACCAUCZGUJb3JkZXJUeXBlBQNCdXkJAGcCBQJjZwUCZG8JAGcCBQJkbwUCY2cGAQJkcQECZHIDCQECIT0CCQCQAwEIBQJkcghwYXltZW50cwABCQACAQIKMSBwbW50IGV4cAQCZHMJAQV2YWx1ZQEJAJEDAggFAmRyCHBheW1lbnRzAAAEAmJSCQEFdmFsdWUBCAUCZHMHYXNzZXRJZAQCY3gIBQJkcwZhbW91bnQEAmNKCQECYlAECQDYBAEIBQJkcg10cmFuc2FjdGlvbklkCQDYBAEFAmJSBQJjeAgFAmRyBmNhbGxlcgQCY2wIBQJjSgJfMQQCY20IBQJjSgJfMgQCYloJAQ1wYXJzZUludFZhbHVlAQgFAmNKAl85BAJjbggFAmNKA18xMAMDCQECYUQABgkAAAIFAmJaBQFwCQACAQkArAICAg9BZG1pbiBibG9ja2VkOiAJAKQDAQUCYloJAJcKBQUCY2wFAmNtBQJjeAUCYlIFAmNuAQJkdAoCZHUBWQJkdgJkdwJibQJjdQJjdgJjdwJjeAJjeQQCY0oJAQJjbw0FAVkFAmJtCAkBBXZhbHVlAQUCZHYGYW1vdW50CAkBBXZhbHVlAQUCZHYHYXNzZXRJZAgJAQV2YWx1ZQEFAmR3BmFtb3VudAgJAQV2YWx1ZQEFAmR3B2Fzc2V0SWQFAmR1CQAAAgUBWQIABQJjdQUCY3YFAmN3BQJjeAUCY3kEAmJaCQENcGFyc2VJbnRWYWx1ZQEIBQJjSgJfOAMDAwkBAmFEAAYJAAACBQJiWgUBbgYJAAACBQJiWgUBcAkAAgEJAKwCAgIIQmxvY2tlZDoJAKQDAQUCYloFAmNKAQJkeAQCZHkCYlICYlQBWQQCZHoJAQJhRwAEAmJWCQCRAwIFAmR6BQF0BAJiVwkAkQMCBQJkegUBdQQCY2IJAQJiZQEFAmJWBAJjZAkBAmJlAQUCYlcEAmRBCQECYk0BBQJkeQQCY3gIBQJkQQJfMQQCYk8IBQJkQQJfMgQCZEIDCQAAAgUBWQIACQCUCgIFAmNiBQJjZAMJAAACBQJiUgUCYlYDCQBmAgUCZHkFAmNiCQACAQIWaW52YWxpZCBwYXltZW50IGFtb3VudAkAlAoCCQBlAgUCY2IFAmR5BQJjZAMJAAACBQJiUgUCYlcDCQBmAgUCZHkFAmNkCQACAQIWaW52YWxpZCBwYXltZW50IGFtb3VudAkAlAoCBQJjYgkAZQIFAmNkBQJkeQkAAgECEHdyb25nIHBtdEFzc2V0SWQEAmRDCAUCZEICXzEEAmRECAUCZEICXzIEAmRFAwkAAAIFAmJSBQJiVgkAlAoCBQJkQwUCZEQJAJQKAgUCZEQFAmRDBAJkRggFAmRFAl8xBAJkRwgFAmRFAl8yBAJkSAABBAJkSQoAAmRKCQD8BwQFAmFPAgxjYWxjUHV0WE9ubHkJAMwIAgkApAMBBQJjeAkAzAgCCQCkAwEFAmRGCQDMCAIJAKQDAQUCZEcJAMwIAgIACQDMCAIFAmFDCQDMCAIFAWkJAMwIAgkApAMBBQJkSAkAzAgCBQFqBQNuaWwFA25pbAMJAAECBQJkSgIKKEludCwgSW50KQUCZEoJAAIBCQCsAgIJAAMBBQJkSgIfIGNvdWxkbid0IGJlIGNhc3QgdG8gKEludCwgSW50KQQCZEsDCQAAAgUCYlIFAmJWBQJkSQkAlAoCCAUCZEkCXzIIBQJkSQJfMQQCZEwIBQJkSwJfMQQCZE0IBQJkSwJfMgQCZE4JAQJkdAoFAmJUBQFZCQEPQXR0YWNoZWRQYXltZW50AgkA2QQBBQJiVgUCZEwJAQ9BdHRhY2hlZFBheW1lbnQCCQDZBAEFAmJXBQJkTQAABgYHBQJkeQUCYlIEAmRPCAUCZE4CXzIEAmRQCAUCZE4CXzcEAmNuCAUCZE4CXzkEAmNYCAUCZE4DXzEwBAJjWQgFAmROA18xMQUCZE4BAmRRBgJkUgJkUwJkVAJkdQJkVQJkVgMJAQIhPQIJAJADAQUCZFQAAQkAAgECCzEgcG1udCBleHBkBAJkegkBAmFHAAQCYlUJAJEDAgUCZHoFAXMEAmJWCQCRAwIFAmR6BQF0BAJiVwkAkQMCBQJkegUBdQQCZFcJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJkegUBdgQCZFgJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJkegUBdwQCZFkJAJEDAgUCZHoFAXIEAmJUAwkAAAIFAmR1BQR0aGlzBQJkVQUCZHUEAmRzCQEFdmFsdWUBCQCRAwIFAmRUAAAEAmJSCQEFdmFsdWUBCAUCZHMHYXNzZXRJZAQCY3gIBQJkcwZhbW91bnQDCQBmAgCAlOvcAwUCY3gJAAIBAg1NaW4gcG10IDEwIExQBAJiUQkA2AQBBQJkVgMJAQIhPQIFAmJVCQDYBAEFAmJSCQACAQIIV3JvbmcgTFAEAmNiCQECYmUBBQJiVgQCY2QJAQJiZQEFAmJXBAJkWgoAAmRKCQD8BwQFBHRoaXMCE2dldE9uZVRrblYyUkVBRE9OTFkJAMwIAgUCZFIJAMwIAgUCY3gFA25pbAUDbmlsAwkAAQIFAmRKAgooSW50LCBJbnQpBQJkSgkAAgEJAKwCAgkAAwEFAmRKAh8gY291bGRuJ3QgYmUgY2FzdCB0byAoSW50LCBJbnQpBAJlYQgFAmRaAl8xBAJiTwgFAmRaAl8yBAJlYgMDCQBmAgUCZFMAAAkAZgIFAmRTBQJlYQcJAAIBCQC5CQIJAMwIAgIfYW1vdW50IHRvIHJlY2VpdmUgaXMgbGVzcyB0aGFuIAkAzAgCCQCkAwEFAmRTBQNuaWwCAAUCZWEEAmVjAwkAAAIFAmRSBQJiVgkAlAoCBQJlYgAACQCUCgIAAAUCZWIEAmVkCAUCZWMCXzEEAmVlCAUCZWMCXzIEAmVmCQECYmcCCQEBRAIFAmNkBQJkWAkBAUQCBQJjYgUCZFcEAmVnCQEBRwIFAmVmBQFhBAJlaAMJAAACBQJkUgIFV0FWRVMFBHVuaXQJANkEAQUCZFIEAmVpAwkAZgIFAmJPAAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYUYFAmJPBQJlaAUDbmlsBQNuaWwEAmNuCQDOCAIJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYlQFAmViBQJlaAkAzAgCCQELU3RyaW5nRW50cnkCCQEBWgIJAKUIAQUCYlQFAmJRCQECYmEGBQJlZAUCZWUFAmN4BQJlZwUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVMABQJlZwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVQCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJlZwUDbmlsBQJlaQMJAAACBQJjbgUCY24EAmVqCQD8BwQFAmFCAgRidXJuCQDMCAIFAmN4BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmJSBQJjeAUDbmlsAwkAAAIFAmVqBQJlagkAlAoCBQJjbgUCZWIJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAmVrAQJlbAQCZW0FAWcEAmVuCQCRAwIFAmVsAAAEAmVvCQCRAwIFAmVsAAEEAmVwCQCnAwEFAWkEAmVxCQC5AgIJAKcDAQUCYUMFAmVwBAJlcgkAtwICBQJlbgUCZW8DCQAAAgUCZXIFAWUFAWUEAmVzCQC5AgIFAmVxBQJlbQoBAmV0AgJldQJldgQCZXcFAmV1BAJleAgFAmV3Al8xBAJleQgFAmV3Al8yAwkBAiE9AgUCZXkFBHVuaXQFAmV1BAJlegkAugICCQC5AgIJALkCAgUCZXgFAmV4BQJleAkAuQICCQC5AgIJALkCAgUCZW4FAmVvBQJlbQUCZW0EAmVBCQC6AgIJALkCAgkAtwICCQC6AgIJALkCAgUCZXMFAmVyBQJlcAkAuQICBQJlegUCZW0FAmV4CQC3AgIJALoCAgkAuQICCQC4AgIFAmVzBQJlcAUCZXgFAmVwCQC5AgIJALcCAgUCZW0JALYCAQABBQJlegQCZUIJAQFPAQkAuAICBQJlQQkBBXZhbHVlAQUCZXgDCQDAAgIFAWYFAmVCCQCUCgIFAmVBBQJldgkAlAoCBQJlQQUEdW5pdAQCZUMJAMwIAgAACQDMCAIAAQkAzAgCAAIJAMwIAgADCQDMCAIABAkAzAgCAAUJAMwIAgAGBQNuaWwEAmVECgACZUUFAmVDCgACZUYJAJADAQUCZUUKAAJlRwkAlAoCBQJlcgUEdW5pdAoBAmVIAgJlSQJlSgMJAGcCBQJlSgUCZUYFAmVJCQECZXQCBQJlSQkAkQMCBQJlRQUCZUoKAQJlSwICZUkCZUoDCQBnAgUCZUoFAmVGBQJlSQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDcJAQJlSwIJAQJlSAIJAQJlSAIJAQJlSAIJAQJlSAIJAQJlSAIJAQJlSAIJAQJlSAIFAmVHAAAAAQACAAMABAAFAAYABwQCZXgIBQJlRAJfMQQCZXkIBQJlRAJfMgMJAQIhPQIFAmV5BQR1bml0BQJleAkAAgEJAKwCAgIZRCBjYWxjdWxhdGlvbiBlcnJvciwgRCA9IAkApgMBBQJleAECZUwDAmVsAmRyAmVNBAJlbQUBZwQCZU4JAJEDAgUCZWwDCQAAAgUCZHIAAAABAAAEAmVwCQCnAwEFAWkEAmVxCQC5AgIJAKcDAQUCYUMFAmVwBAJlcgUCZU4EAmVzCQC5AgIFAmVxBQJlbQQCZU8JALoCAgkAuQICCQC5AgIJALoCAgkAuQICBQJlTQUCZU0JALkCAgUCZU4FAmVtBQJlTQUCZXAJALkCAgUCZXMFAmVtBAJlUAkAuAICCQC3AgIFAmVyCQC6AgIJALkCAgUCZU0FAmVwBQJlcwUCZU0KAQJldAICZXUCZXYEAmVRBQJldQQCZVIIBQJlUQJfMQQCZXkIBQJlUQJfMgMJAQIhPQIFAmV5BQR1bml0BQJldQQCZVMJALoCAgkAtwICCQC5AgIFAmVSBQJlUgUCZU8JALcCAgkAuQICBQFnBQJlUgUCZVAEAmVUCQEBTwEJALgCAgUCZVMJAQV2YWx1ZQEFAmVSAwkAwAICBQFmBQJlVAkAlAoCBQJlUwUCZXYJAJQKAgUCZVMFBHVuaXQEAmVDCQDMCAIAAAkAzAgCAAEJAMwIAgACCQDMCAIAAwkAzAgCAAQJAMwIAgAFCQDMCAIABgkAzAgCAAcJAMwIAgAICQDMCAIACQkAzAgCAAoJAMwIAgALCQDMCAIADAkAzAgCAA0JAMwIAgAOBQNuaWwEAmVVCgACZUUFAmVDCgACZUYJAJADAQUCZUUKAAJlRwkAlAoCBQJlTQUEdW5pdAoBAmVIAgJlSQJlSgMJAGcCBQJlSgUCZUYFAmVJCQECZXQCBQJlSQkAkQMCBQJlRQUCZUoKAQJlSwICZUkCZUoDCQBnAgUCZUoFAmVGBQJlSQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDE1CQECZUsCCQECZUgCCQECZUgCCQECZUgCCQECZUgCCQECZUgCCQECZUgCCQECZUgCCQECZUgCCQECZUgCCQECZUgCCQECZUgCCQECZUgCCQECZUgCCQECZUgCCQECZUgCBQJlRwAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPBAJlUggFAmVVAl8xBAJleQgFAmVVAl8yAwkBAiE9AgUCZXkFBHVuaXQFAmVSCQACAQkArAICAhlZIGNhbGN1bGF0aW9uIGVycm9yLCBZID0gCQCmAwEFAmVSAQJlVgAEAmF2CQCiCAEJAQFRAAMJAAECBQJhdgIGU3RyaW5nBAJlcgUCYXYJANkEAQUCZXIDCQABAgUCYXYCBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgECZVcABAJhdgkAoggBCQEBUgADCQABAgUCYXYCBlN0cmluZwQCZXIFAmF2CQDZBAEFAmVyAwkAAQIFAmF2AgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IAAmVYCQACAQIRUGVybWlzc2lvbiBkZW5pZWQBAmVZAQJkcgQCYXYJAQJlVgADCQABAgUCYXYCCkJ5dGVWZWN0b3IEAmVaBQJhdgMJAAACCAUCZHIPY2FsbGVyUHVibGljS2V5BQJlWgYFAmVYAwkAAQIFAmF2AgRVbml0AwkAAAIIBQJkcgZjYWxsZXIFBHRoaXMGBQJlWAkAAgECC01hdGNoIGVycm9yHgJkcgELY29uc3RydWN0b3IBAVAEAmVPCQECZVkBBQJkcgMJAAACBQJlTwUCZU8JAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVAABQFQBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZHIBCnNldE1hbmFnZXIBAmZhBAJlTwkBAmVZAQUCZHIDCQAAAgUCZU8FAmVPBAJmYgkA2QQBBQJmYQMJAAACBQJmYgUCZmIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVIABQJmYQUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRyAQ5jb25maXJtTWFuYWdlcgAEAmJMCQECZVcABAJmYwMJAQlpc0RlZmluZWQBBQJiTAYJAAIBAhJObyBwZW5kaW5nIG1hbmFnZXIDCQAAAgUCZmMFAmZjBAJmZAMJAAACCAUCZHIPY2FsbGVyUHVibGljS2V5CQEFdmFsdWUBBQJiTAYJAAIBAhtZb3UgYXJlIG5vdCBwZW5kaW5nIG1hbmFnZXIDCQAAAgUCZmQFAmZkCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFRAAkA2AQBCQEFdmFsdWUBBQJiTAkAzAgCCQELRGVsZXRlRW50cnkBCQEBUgAFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkcgEDcHV0AgJmZQJmZgQCZmcJAQJhSwAEAmZoCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJmZwUBegIKV3Igc3QgYWRkcgQCZmkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmZnBQFBAgpXciBzbCBhZGRyAwkAZgIAAAUCZmUJAAIBAg5Xcm9uZyBzbGlwcGFnZQMJAQIhPQIJAJADAQgFAmRyCHBheW1lbnRzAAIJAAIBAgwyIHBtbnRzIGV4cGQEAmZqCQECZHQKCQClCAEIBQJkcgZjYWxsZXIJANgEAQgFAmRyDXRyYW5zYWN0aW9uSWQJAQ9BdHRhY2hlZFBheW1lbnQCCAkBBXZhbHVlAQkAkQMCCAUCZHIIcGF5bWVudHMAAAdhc3NldElkCAkBBXZhbHVlAQkAkQMCCAUCZHIIcGF5bWVudHMAAAZhbW91bnQJAJEDAggFAmRyCHBheW1lbnRzAAEFAmZlBgcGAAACAAQCY1cIBQJmagJfMgQCZFAIBQJmagJfNwQCY24IBQJmagJfOQQCY1gIBQJmagNfMTAEAmNZCAUCZmoDXzExBAJiVggFAmZqA18xMgQCYlcIBQJmagNfMTMEAmNKCQD8BwQFAmFCAgRlbWl0CQDMCAIFAmNXBQNuaWwFA25pbAMJAAACBQJjSgUCY0oEAmZrBAJhdgUCY0oDCQABAgUCYXYCB0FkZHJlc3MEAmZsBQJhdgkA/AcEBQJmbAIEZW1pdAkAzAgCBQJjVwUDbmlsBQNuaWwFBHVuaXQDCQAAAgUCZmsFAmZrBAJmbQMJAGYCBQJjWAAACQD8BwQFAmZpAgNwdXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCYlYFAmNYBQNuaWwFA25pbAMJAAACBQJmbQUCZm0EAmZuAwkAZgIFAmNZAAAJAPwHBAUCZmkCA3B1dAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJiVwUCY1kFA25pbAUDbmlsAwkAAAIFAmZuBQJmbgQCZm8DBQJmZgQCZnAJAPwHBAUCZmgCBXN0YWtlBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmRQBQJjVwUDbmlsAwkAAAIFAmZwBQJmcAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQJkcgZjYWxsZXIFAmNXBQJkUAUDbmlsCQDOCAIFAmNuBQJmbwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkcgEJcHV0T25lVGtuBQJkTAJkTQJmcQJibQJmZgQCYkQJAQJhSwAEAmZoCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJiRAUBegIKV3Igc3QgYWRkcgQCZmkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmJEBQFBAgpXciBzbCBhZGRyBAJmcgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCYkQFAUICC1dyIGd3eCBhZGRyBAJmcwkBAmFHAAQCYlYJAJEDAgUCZnMFAXQEAmJXCQCRAwIFAmZzBQF1BAJiWAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmZzBQF2BAJiWQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmZzBQF3BAJmdAkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzCQECYWQAAgAEAmJUAwkAAAIFAmZ0CQClCAEIBQJkcgZjYWxsZXIIBQJkcgxvcmlnaW5DYWxsZXIIBQJkcgZjYWxsZXIDAwMDCQBnAgAABQJibQYJAGcCAAAFAmRMBgkAZwIAAAUCZE0GCQBnAgAABQJmcQkAAgECDFdyb25nIHBhcmFtcwMJAQIhPQIJAJADAQgFAmRyCHBheW1lbnRzAAEJAAIBAgsxIHBtbnQgZXhwZAQCZHMJAQV2YWx1ZQEJAJEDAggFAmRyCHBheW1lbnRzAAAEAmJSCQDYBAEJAQV2YWx1ZQEIBQJkcwdhc3NldElkBAJmdQgFAmRzBmFtb3VudAQCZnYJAQJiTQEFAmZ1BAJjeAgFAmZ2Al8xBAJiTwgFAmZ2Al8yAwkAZgIAgK3iBAUCZnUJAAIBAg1Xcm9uZyBwbXQgYW10BAJjYgkBAmJlAQUCYlYEAmNkCQECYmUBBQJiVwQCZncDCQAAAgUCYlIFAmJWAwMJAGYCBQJmdQUCY2IGCQBmAgUCZEwFAmN4CQACAQIWaW52YWxpZCBwYXltZW50IGFtb3VudAkAmAoGCQBlAgUCY2IFAmZ1BQJjZAkAZQIFAmN4BQJkTAUCZE0AAAAAAwkAAAIFAmJSBQJiVwMDCQBmAgUCZnUFAmNkBgkAZgIFAmRNBQJjeAkAAgECFmludmFsaWQgcGF5bWVudCBhbW91bnQJAJgKBgUCY2IJAGUCBQJjZAUCZnUAAAAACQBlAgUCY3gFAmRNBQJkTAkAAgECEHdyb25nIHBtdEFzc2V0SWQEAmRDCAUCZncCXzEEAmRECAUCZncCXzIEAmZ4CAUCZncCXzMEAmZ5CAUCZncCXzQEAmZ6CAUCZncCXzUEAmZBCAUCZncCXzYEAmJyCQD8BwQFAmZyAgVjYWxjRAkAzAgCCQCkAwEFAmRDCQDMCAIJAKQDAQUCZEQJAMwIAgUCYUMJAMwIAgUBaQkAzAgCBQFqBQNuaWwFA25pbAQCYnEJAPwHBAUCZnICBWNhbGNECQDMCAIJAKYDAQkAtgIBCQBlAgkAZAIFAmRDBQJmeAUCZkEJAMwIAgkApgMBCQC2AgEJAGUCCQBkAgUCZEQFAmZ6BQJmeQkAzAgCBQJhQwkAzAgCBQFpCQDMCAIFAWoFA25pbAUDbmlsBAJmQgkBAmJwAwkApwMBCQECYXUBBQJicQkApwMBCQECYXUBBQJicgUBaAMJAAACBQJmQgUCZkIEAmROCQECZHQKCQClCAEIBQJkcgZjYWxsZXIJANgEAQgFAmRyDXRyYW5zYWN0aW9uSWQJAQ9BdHRhY2hlZFBheW1lbnQCCQDZBAEFAmJWBQJkTAkBD0F0dGFjaGVkUGF5bWVudAIJANkEAQUCYlcFAmRNBQJibQYGBgUCY3gFAmJSBAJkTwgFAmROAl8yBAJkUAgFAmROAl83BAJjbggFAmROAl85BAJjWAgFAmROA18xMAQCY1kIBQJkTgNfMTEEAmZDCQECYmoDCQC2AgEFAmRPCQC2AgEFAmZxCQC2AgEFAmJtBAJjVwkAoAMBCAUCZkMCXzIEAmZqCQD8BwQFAmFCAgRlbWl0CQDMCAIFAmNXBQNuaWwFA25pbAMJAAACBQJmagUCZmoEAmZrBAJhdgUCZmoDCQABAgUCYXYCB0FkZHJlc3MEAmZsBQJhdgkA/AcEBQJmbAIEZW1pdAkAzAgCBQJjVwUDbmlsBQNuaWwFBHVuaXQDCQAAAgUCZmsFAmZrBAJmbQMJAGYCBQJjWAAACQD8BwQFAmZpAgNwdXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkA2QQBBQJiVgUCY1gFA25pbAUDbmlsAwkAAAIFAmZtBQJmbQQCZm4DCQBmAgUCY1kAAAkA/AcEBQJmaQIDcHV0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIJANkEAQUCYlcFAmNZBQNuaWwFA25pbAMJAAACBQJmbgUCZm4EAmZvAwUCZmYEAmZwCQD8BwQFAmZoAgVzdGFrZQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJkUAUCY1cFA25pbAMJAAACBQJmcAUCZnAFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUCZHIGY2FsbGVyBQJjVwUCZFAFA25pbAQCZWkDCQBmAgUCYk8AAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJhRgUCYk8JANkEAQUCYlIFA25pbAUDbmlsCQDOCAIJAM4IAgUCY24FAmZvBQJlaQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkcgELcHV0T25lVGtuVjICAmRTAmZmAwkBAiE9AgkAkAMBCAUCZHIIcGF5bWVudHMAAQkAAgECCzEgcG1udCBleHBkBAJkegkBAmFHAAQCYlYJAJEDAgUCZHoFAXQEAmJXCQCRAwIFAmR6BQF1BAJkVwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmR6BQF2BAJkWAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmR6BQF3BAJiVAMJAAACCAUCZHIGY2FsbGVyBQR0aGlzCAUCZHIMb3JpZ2luQ2FsbGVyCAUCZHIGY2FsbGVyBAJkcwkBBXZhbHVlAQkAkQMCCAUCZHIIcGF5bWVudHMAAAQCYlIJANgEAQkBBXZhbHVlAQgFAmRzB2Fzc2V0SWQEAmN4CAUCZHMGYW1vdW50AwkAZgIAgK3iBAUCY3gJAAIBAg1Xcm9uZyBwbXQgYW10BAJjSgkBAmR4BAUCY3gFAmJSCQClCAEFAmJUCQDYBAEIBQJkcg10cmFuc2FjdGlvbklkBAJkTwgFAmNKAl8yBAJkUAgFAmNKAl83BAJjbggFAmNKAl85BAJjWAgFAmNKA18xMAQCY1kIBQJjSgNfMTEEAmNXAwMJAGYCBQJkUwAACQBmAgUCZFMFAmRPBwkAAgEJALkJAgkAzAgCAh9hbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZFMFA25pbAIABQJkTwQCZmoJAPwHBAUCYUICBGVtaXQJAMwIAgUCY1cFA25pbAUDbmlsAwkAAAIFAmZqBQJmagQCZmsEAmF2BQJmagMJAAECBQJhdgIHQWRkcmVzcwQCZmwFAmF2CQD8BwQFAmZsAgRlbWl0CQDMCAIFAmNXBQNuaWwFA25pbAUEdW5pdAMJAAACBQJmawUCZmsEAmZtAwkAZgIFAmNYAAAJAPwHBAUCYU4CA3B1dAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQDZBAEFAmJWBQJjWAUDbmlsBQNuaWwDCQAAAgUCZm0FAmZtBAJmbgMJAGYCBQJjWQAACQD8BwQFAmFOAgNwdXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkA2QQBBQJiVwUCY1kFA25pbAUDbmlsAwkAAAIFAmZuBQJmbgQCZm8DBQJmZgQCZnAJAPwHBAUCYU0CBXN0YWtlBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmRQBQJjVwUDbmlsAwkAAAIFAmZwBQJmcAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQJkcgZjYWxsZXIFAmNXBQJkUAUDbmlsBAJiTwgJAQJiTQEFAmN4Al8yBAJlaQMJAGYCBQJiTwAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmFGBQJiTwkA2QQBBQJiUgUDbmlsBQNuaWwJAJQKAgkAzggCCQDOCAIFAmNuBQJmbwUCZWkFAmNXCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRyAR9wdXRPbmVUa25WMldpdGhCb251c09sZFJFQURPTkxZAgJmRAJmRQQCZHoJAQJhRwAEAmJWCQCRAwIFAmR6BQF0BAJiVwkAkQMCBQJkegUBdQQCY0oJAQJkeAQFAmZEBQJmRQIAAgAEAmRPCAUCY0oCXzIEAmNnCAUCY0oCXzMEAmZGCAUCY0oCXzYEAmRQCAUCY0oCXzcEAmNiCQECYmUBBQJiVgQCY2QJAQJiZQEFAmJXBAJmRwkAawMFAmNkBQFhBQJjYgQCZkgJAGsDBQJmRAUBYQkAZAIFAmZHBQFhBAJmSQkAZQIFAmZEBQJmSAQCZkoJAGsDBQJmRgUCZkkFAmNkBAJmSwkAawMJAGUCBQJkTwUCZkoFAWEFAmZKBAJiTwgJAQJiTQEFAmZEAl8yCQCUCgIFA25pbAkAlQoDBQJkTwUCYk8FAmZLAmRyAQpwdXRGb3JGcmVlAQJmTAMJAGYCAAAFAmZMCQACAQIKV3Jvbmcgc2xwZwMJAQIhPQIJAJADAQgFAmRyCHBheW1lbnRzAAIJAAIBAgwyIHBtbnRzIGV4cGQEAmROCQECZHQKCQClCAEIBQJkcgZjYWxsZXIJANgEAQgFAmRyDXRyYW5zYWN0aW9uSWQJAQ9BdHRhY2hlZFBheW1lbnQCCAkBBXZhbHVlAQkAkQMCCAUCZHIIcGF5bWVudHMAAAdhc3NldElkCAkBBXZhbHVlAQkAkQMCCAUCZHIIcGF5bWVudHMAAAZhbW91bnQJAJEDAggFAmRyCHBheW1lbnRzAAEFAmZMBwcGAAACAAgFAmROAl85AmRyAQNnZXQABAJjSgkBAmRxAQUCZHIEAmZNCAUCY0oCXzEEAmNtCAUCY0oCXzIEAmN4CAUCY0oCXzMEAmJSCAUCY0oCXzQEAmNuCAUCY0oCXzUEAmVQCQD8BwQFAmFCAgRidXJuCQDMCAIFAmN4BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmJSBQJjeAUDbmlsAwkAAAIFAmVQBQJlUAUCY24JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZHIBCWdldE9uZVRrbgUCZk4CZk8CZlACZFICYm0DCQECIT0CCQCQAwEIBQJkcghwYXltZW50cwABCQACAQILMSBwbW50IGV4cGQEAmJECQECYUcABAJiVQkAkQMCBQJiRAUBcwQCYlYJAJEDAgUCYkQFAXQEAmJXCQCRAwIFAmJEBQF1BAJiWAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJEBQF2BAJiWQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJEBQF3BAJiWgkAkQMCBQJiRAUBcgQCZmcJAQJhSwAEAmZyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJmZwUBQgIKV3Igc2wgYWRkcgQCZHMJAQV2YWx1ZQEJAJEDAggFAmRyCHBheW1lbnRzAAAEAmZ0CQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMJAQJhZAACAAQCYlQDCQAAAgUCZnQJAKUIAQgFAmRyBmNhbGxlcggFAmRyDG9yaWdpbkNhbGxlcggFAmRyBmNhbGxlcgQCYlEJANgEAQgFAmRyDXRyYW5zYWN0aW9uSWQEAmJSCQEFdmFsdWUBCAUCZHMHYXNzZXRJZAQCY3gIBQJkcwZhbW91bnQDCQBmAgCAlOvcAwUCY3gJAAIBAg1NaW4gcG10IDEwIExQAwMDCQBmAgAABQJibQYJAGYCAAAFAmZOBgkAZgIAAAUCZlAJAAIBAgxXcm9uZyBwYXJhbXMDCQECIT0CBQJiVQkA2AQBBQJiUgkAAgECCFdyb25nIExQBAJjSgkBAmJQBAkA2AQBCAUCZHINdHJhbnNhY3Rpb25JZAkA2AQBBQJiUgUCY3gIBQJkcgZjYWxsZXIEAmZRCAUCY0oCXzEEAmZSCAUCY0oCXzIEAmNiCQECYmUBBQJiVgQCY2QJAQJiZQEFAmJXBAJmUwMJAAACBQJkUgUCYlYJAJkKBwkAZQIFAmNiBQJmUQkAZQIFAmNkBQJmUgUCZk4FAmZSAAAAAAkAZAIFAmZRBQJmTgMJAAACBQJkUgUCYlcJAJkKBwkAZQIFAmNiBQJmUQkAZQIFAmNkBQJmUgAAAAAFAmZOBQJmUQkAZAIFAmZSBQJmTgkAAgECEHdyb25nIG91dEFzc2V0SWQEAmRDCAUCZlMCXzEEAmRECAUCZlMCXzIEAmZ4CAUCZlMCXzMEAmZ5CAUCZlMCXzQEAmZ6CAUCZlMCXzUEAmZBCAUCZlMCXzYEAmZUCAUCZlMCXzcDAwkAZgIAAAUCZngGCQBmAgAABQJmegkAAgECCldyb25nIGNhbGMEAmJyCQD8BwQFAmZyAgVjYWxjRAkAzAgCCQCkAwEFAmRDCQDMCAIJAKQDAQUCZEQJAMwIAgUCYUMJAMwIAgUBaQkAzAgCBQFqBQNuaWwFA25pbAQCYnEJAPwHBAUCZnICBWNhbGNECQDMCAIJAKQDAQkAZAIJAGUCBQJkQwUCZngFAmZBCQDMCAIJAKQDAQkAZQIJAGQCBQJkRAUCZnkFAmZ6CQDMCAIFAmFDCQDMCAIFAWkJAMwIAgUBagUDbmlsBQNuaWwEAmZCCQECYnADCQCnAwEJAQJhdQEFAmJxCQCnAwEJAQJhdQEFAmJyBQFoAwkAAAIFAmZCBQJmQgQCZWEICQECYk0BBQJmVAJfMQQCZlUJAQJiagMJALYCAQUCZWEJALYCAQUCZlAJALYCAQUCYm0DCQAAAgUCZlUFAmZVBAJmVgMJAAACBQJkUgUCYlYJAJQKAgkAoAMBCAUCZlUCXzIAAAkAlAoCAAAJAKADAQgFAmZVAl8yBAJlZAgFAmZWAl8xBAJlZQgFAmZWAl8yBAJlYgkAZAIFAmVkBQJlZQQCYk8JAGUCBQJmVAUCZWEEAmVoAwkAAAIFAmRSAgVXQVZFUwUEdW5pdAkA2QQBBQJkUgQCZWkDCQBmAgUCYk8AAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJhRgUCYk8FAmVoBQNuaWwFA25pbAQCZWYJAQJiZwIJAQFEAgUCY2QFAmJZCQEBRAIFAmNiBQJiWAQCZWcJAQFHAgUCZWYFAWEEAmNuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmJUBQJlYgUCZWgJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVoCCQClCAEFAmJUBQJiUQkBAmJhBgUCZWQFAmVlBQJjeAUCZWcFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFTAAUCZWcJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFUAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCZWcFA25pbAMJAAACBQJjbgUCY24EAmVqCQD8BwQFAmFCAgRidXJuCQDMCAIFAmN4BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmJSBQJjeAUDbmlsAwkAAAIFAmVqBQJlagkAzggCBQJjbgUCZWkJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZHIBC2dldE9uZVRrblYyAgJkUgJkUwQCZlcJAQJkUQYFAmRSBQJkUwgFAmRyCHBheW1lbnRzCAUCZHIGY2FsbGVyCAUCZHIMb3JpZ2luQ2FsbGVyCAUCZHINdHJhbnNhY3Rpb25JZAQCY24IBQJmVwJfMQQCZWIIBQJmVwJfMgkAlAoCBQJjbgUCZWICZHIBFmdldE9uZVRrblYyT2xkUkVBRE9OTFkCAmRSAmZYBAJkegkBAmFHAAQCYlUJAJEDAgUCZHoFAXMEAmJWCQCRAwIFAmR6BQF0BAJiVwkAkQMCBQJkegUBdQQCY0oJAQJiUAQCAAUCYlUFAmZYBQR0aGlzBAJmUQgFAmNKAl8xBAJmUggFAmNKAl8yBAJjYgkBAmJlAQUCYlYEAmNkCQECYmUBBQJiVwQCZEMJAGUCBQJjYgUCZlEEAmRECQBlAgUCY2QFAmZSBAJmWQMJAAACBQJkUgUCYlYJAJYKBAUCZEQFAmRDBQJmUgUCZlEDCQAAAgUCZFIFAmJXCQCWCgQFAmRDBQJkRAUCZlEFAmZSCQACAQIQd3Jvbmcgb3V0QXNzZXRJZAQCZloIBQJmWQJfMQQCZ2EIBQJmWQJfMgQCZ2IIBQJmWQJfMwQCZ2MIBQJmWQJfNAQCZ2QAAQQCZk4KAAJkSgkA/AcEBQJhTwIMY2FsY1N3YXBYVG9ZCQDMCAIJAKQDAQUCZ2IJAMwIAgkApAMBBQJmWgkAzAgCCQCkAwEFAmdhCQDMCAICAAkAzAgCBQJhQwkAzAgCBQFpCQDMCAIJAKQDAQUCZ2QJAMwIAgUBagUDbmlsBQNuaWwDCQABAgUCZEoCA0ludAUCZEoJAAIBCQCsAgIJAAMBBQJkSgIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50BAJmVAkAZAIFAmZOBQJnYwQCZ2UJAQJiTQEFAmZUBAJlYQgFAmdlAl8xBAJiTwgFAmdlAl8yCQCUCgIFA25pbAkAlAoCBQJlYQUCYk8CZHIBE2dldE9uZVRrblYyUkVBRE9OTFkCAmRSAmZYBAJkegkBAmFHAAQCYlYJAJEDAgUCZHoFAXQEAmJXCQCRAwIFAmR6BQF1BAJiVQkAkQMCBQJkegUBcwQCZWwJAMwIAgkAtgIBCQECYmUBBQJiVgkAzAgCCQC2AgEJAQJiZQEFAmJXBQNuaWwEAmdmCQC2AgEICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQkA2QQBBQJiVQIQaW52YWxpZCBscCBhc3NldAhxdWFudGl0eQQCYnIJAQJlawEFAmVsBAJicQkAuAICBQJicgkAvAIDCQC2AgEFAmZYBQJicgUCZ2YEAmdnAwkAAAIFAmRSBQJiVgAAAAEEAmdoCQECZUwDBQJlbAUCZ2cFAmJxBAJnaQkAuAICCQCRAwIFAmVsBQJnZwUCZ2gEAmZUCQCgAwEJALgCAgUCZ2kFAWYEAmdqCQECYk0BBQJmVAQCZWEIBQJnagJfMQQCYk8IBQJnagJfMgkAlAoCBQNuaWwJAJQKAgUCZWEFAmJPAmRyARxnZXRPbmVUa25WMldpdGhCb251c1JFQURPTkxZAgJkUgJmWAQCZHoJAQJhRwAEAmJWCQCRAwIFAmR6BQF0BAJiVwkAkQMCBQJkegUBdQQCYlUJAJEDAgUCZHoFAXMEAmNiCQECYmUBBQJiVgQCY2QJAQJiZQEFAmJXBAJnawoAAmRKCQD8BwQFBHRoaXMCE2dldE9uZVRrblYyUkVBRE9OTFkJAMwIAgUCZFIJAMwIAgUCZlgFA25pbAUDbmlsAwkAAQIFAmRKAgooSW50LCBJbnQpBQJkSgkAAgEJAKwCAgkAAwEFAmRKAh8gY291bGRuJ3QgYmUgY2FzdCB0byAoSW50LCBJbnQpBAJlYQgFAmdrAl8xBAJiTwgFAmdrAl8yBAJjSgkBAmJQBAIABQJiVQUCZlgFBHRoaXMEAmNsCAUCY0oCXzEEAmNtCAUCY0oCXzIEAmdsCQBkAgUCY2wFAmNtBAJmSwkAawMJAGUCBQJlYQUCZ2wFAWEFAmdsCQCUCgIFA25pbAkAlQoDBQJlYQUCYk8FAmZLAmRyAQlnZXROb0xlc3MCAmdtAmduBAJjSgkBAmRxAQUCZHIEAmNsCAUCY0oCXzEEAmNtCAUCY0oCXzIEAmN4CAUCY0oCXzMEAmJSCAUCY0oCXzQEAmNuCAUCY0oCXzUDCQBmAgUCZ20FAmNsCQACAQkArAICCQCsAgIJAKwCAgIJRmFpbGVkOiAgCQCkAwEFAmNsAgMgPCAJAKQDAQUCZ20DCQBmAgUCZ24FAmNtCQACAQkArAICCQCsAgIJAKwCAgIIRmFpbGVkOiAJAKQDAQUCY20CAyA8IAkApAMBBQJnbgQCZ28JAPwHBAUCYUICBGJ1cm4JAMwIAgUCY3gFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCYlIFAmN4BQNuaWwDCQAAAgUCZ28FAmdvBQJjbgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkcgENdW5zdGFrZUFuZEdldAECYk4EAmdwAwkBAiE9AgkAkAMBCAUCZHIIcGF5bWVudHMAAAkAAgECDU5vIHBtbnRzIGV4cGQGAwkAAAIFAmdwBQJncAQCYkQJAQJhRwAEAmdxCQECYUsABAJkUAkA2QQBCQCRAwIFAmJEBQFzBAJncgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCZ3EFAXoCCldyIHN0IGFkZHIEAmdzCQD8BwQFAmdyAgd1bnN0YWtlCQDMCAIJANgEAQUCZFAJAMwIAgUCYk4FA25pbAUDbmlsAwkAAAIFAmdzBQJncwQCY0oJAQJiUAQJANgEAQgFAmRyDXRyYW5zYWN0aW9uSWQJANgEAQUCZFAFAmJOCAUCZHIGY2FsbGVyBAJiWgkBDXBhcnNlSW50VmFsdWUBCAUCY0oCXzkEAmNuCAUCY0oDXzEwBAJndAMDCQECYUQABgkAAAIFAmJaBQFwCQACAQkArAICAglCbG9ja2VkOiAJAKQDAQUCYloGAwkAAAIFAmd0BQJndAQCZ3UJAPwHBAUCYUICBGJ1cm4JAMwIAgUCYk4FA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCZFAFAmJOBQNuaWwDCQAAAgUCZ3UFAmd1BQJjbgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkcgETdW5zdGFrZUFuZEdldE9uZVRrbgMCZ3YCZFICZFMEAmdwAwkBAiE9AgkAkAMBCAUCZHIIcGF5bWVudHMAAAkAAgECDU5vIHBtbnRzIGV4cGQGAwkAAAIFAmdwBQJncAQCYkQJAQJhRwAEAmdxCQECYUsABAJkUAkA2QQBCQCRAwIFAmJEBQFzBAJncgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCZ3EFAXoCCldyIHN0IGFkZHIEAmdzCQD8BwQFAmdyAgd1bnN0YWtlCQDMCAIJANgEAQUCZFAJAMwIAgUCZ3YFA25pbAUDbmlsAwkAAAIFAmdzBQJncwQCZ3cJAQJkUQYFAmRSBQJkUwkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCZFAFAmd2BQNuaWwIBQJkcgZjYWxsZXIIBQJkcgxvcmlnaW5DYWxsZXIIBQJkcg10cmFuc2FjdGlvbklkBAJjbggFAmd3Al8xBAJlYggFAmd3Al8yCQCUCgIFAmNuBQJlYgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkcgEccHV0T25lVGtuVjJXaXRoQm9udXNSRUFET05MWQICYk4CZ3gEAmR6CQECYUcABAJiVgkAkQMCBQJkegUBdAQCYlcJAJEDAgUCZHoFAXUEAmJVCQCRAwIFAmR6BQFzBAJneQUCZ3gEAmZ1BQJiTgQCZ3oJAQJiTQEFAmZ1BAJmRAgFAmd6Al8xBAJiTwgFAmd6Al8yBAJnQQMJAAACBQJneQUCYlYJAJQKAgUCZkQAAAMJAAACBQJneQUCYlcJAJQKAgAABQJmRAkAAgECD2ludmFsaWQgcGF5bWVudAQCZ0IIBQJnQQJfMQQCZ0MIBQJnQQJfMgQCZ0QJAQJiZQEFAmJWBAJnRQkBAmJlAQUCYlcEAmdGCQBkAgUCZ0QFAmdCBAJnRwkAZAIFAmdEBQJnQwQCYnIJAQJlawEJAMwIAgkAtgIBBQJnRAkAzAgCCQC2AgEFAmdFBQNuaWwEAmJxCQECZWsBCQDMCAIJALYCAQUCZ0YJAMwIAgkAtgIBBQJnRwUDbmlsBAJnZgkAtgIBCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEJANkEAQUCYlUCEGludmFsaWQgbHAgYXNzZXQIcXVhbnRpdHkEAmdICQC6AgIJALkCAgUCZ2YJALgCAgUCYnEFAmJyBQJicgkAlAoCBQNuaWwJAJUKAwkAoAMBBQJnSAUCYk8AAAJkcgEIYWN0aXZhdGUCAmdJAmdKAwkBAiE9AgkApQgBCAUCZHIGY2FsbGVyCQClCAEFAmFCCQACAQIGZGVuaWVkCQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFhAAUCZ0kJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFiAAUCZ0oFA25pbAIHc3VjY2VzcwJkcgEEc2V0UwICZ0sCZ3QDCQECIT0CCQClCAEIBQJkcgZjYWxsZXIJAQJheAIFBHRoaXMJAQJhZAAFAmVYCQDMCAIJAQtTdHJpbmdFbnRyeQIFAmdLBQJndAUDbmlsAmRyAQRzZXRJAgJnSwJndAMJAQIhPQIJAKUIAQgFAmRyBmNhbGxlcgkBAmF4AgUEdGhpcwkBAmFkAAUCZVgJAMwIAgkBDEludGVnZXJFbnRyeQIFAmdLBQJndAUDbmlsAmRyARxnZXRQb29sQ29uZmlnV3JhcHBlclJFQURPTkxZAAkAlAoCBQNuaWwJAQJhRwACZHIBHGdldEFjY0JhbGFuY2VXcmFwcGVyUkVBRE9OTFkBAmJmCQCUCgIFA25pbAkBAmJlAQUCYmYCZHIBGWNhbGNQcmljZXNXcmFwcGVyUkVBRE9OTFkDAmJ4AmJ5AmJDBAJnTAkBAmJCAwUCYngFAmJ5BQJiQwkAlAoCBQNuaWwJAMwIAgkApgMBCQCRAwIFAmdMAAAJAMwIAgkApgMBCQCRAwIFAmdMAAEJAMwIAgkApgMBCQCRAwIFAmdMAAIFA25pbAJkcgEWZnJvbVgxOFdyYXBwZXJSRUFET05MWQIBSAJnTQkAlAoCBQNuaWwJAQFHAgkApwMBBQFIBQJnTQJkcgEUdG9YMThXcmFwcGVyUkVBRE9OTFkCAUUBRgkAlAoCBQNuaWwJAKYDAQkBAUQCBQFFBQFGAmRyAR5jYWxjUHJpY2VCaWdJbnRXcmFwcGVyUkVBRE9OTFkCAmJoAmJpCQCUCgIFA25pbAkApgMBCQECYmcCCQCnAwEFAmJoCQCnAwEFAmJpAmRyASNlc3RpbWF0ZVB1dE9wZXJhdGlvbldyYXBwZXJSRUFET05MWQkCYlECYm0CY3ACY3ECY3ICY3MCZ04CY3QCY3UJAJQKAgUDbmlsCQECY28NBQJiUQUCYm0FAmNwBQJjcQUCY3IFAmNzBQJnTgUCY3QFAmN1BgcAAAIAAmRyASNlc3RpbWF0ZUdldE9wZXJhdGlvbldyYXBwZXJSRUFET05MWQQCYlECZ08CYlMCZ04EAmNKCQECYlAEBQJiUQUCZ08FAmJTCQERQGV4dHJOYXRpdmUoMTA2MikBBQJnTgkAlAoCBQNuaWwJAJwKCggFAmNKAl8xCAUCY0oCXzIIBQJjSgJfMwgFAmNKAl80CAUCY0oCXzUIBQJjSgJfNggFAmNKAl83CQCmAwEIBQJjSgJfOAgFAmNKAl85CAUCY0oDXzEwAmRyAQ5nZXRGZWVSRUFET05MWQAJAJQKAgUDbmlsBQJhZgECZ1ABAmdRAAQCZ1IEAmF2CQECZVYAAwkAAQIFAmF2AgpCeXRlVmVjdG9yBAJlWgUCYXYFAmVaAwkAAQIFAmF2AgRVbml0CAUCZ1APc2VuZGVyUHVibGljS2V5CQACAQILTWF0Y2ggZXJyb3IEAmF2BQJnUAMJAAECBQJhdgIFT3JkZXIEAmRlBQJhdgQCZ1MJAQJhRQAEAmdUCQECZGQBBQJkZQQCZ1UJAPQDAwgFAmRlCWJvZHlCeXRlcwkAkQMCCAUCZGUGcHJvb2ZzAAAIBQJkZQ9zZW5kZXJQdWJsaWNLZXkEAmdWCQD0AwMIBQJkZQlib2R5Qnl0ZXMJAJEDAggFAmRlBnByb29mcwABBQJnUwMDAwUCZ1QFAmdVBwUCZ1YHBgkBAmFxAwUCZ1QFAmdVBQJnVgMJAAECBQJhdgIUU2V0U2NyaXB0VHJhbnNhY3Rpb24EAmVyBQJhdgQCZ1cJAPYDAQkBBXZhbHVlAQgFAmVyBnNjcmlwdAQCZ1gJANsEAQkBBXZhbHVlAQkAnQgCBQJhQgkBAmFvAAQCZ1kJAPEHAQUEdGhpcwMDCQAAAgUCZ1gFAmdXCQECIT0CBQJnWQUCZ1cHBgkA9AMDCAUCZ1AJYm9keUJ5dGVzCQCRAwIIBQJnUAZwcm9vZnMAAAUCZ1IJAPQDAwgFAmdQCWJvZHlCeXRlcwkAkQMCCAUCZ1AGcHJvb2ZzAAAFAmdSqq4NoQ==", "chainId": 84, "height": 2260493, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: Cdf8Zr2GsMYHSPkiZdWYSZmAf2nJ3PNz4bsLqHSuAFet Next: 4iu2Eos1qQ8s4qEynGo5ywxgSBBjoJqirkpX5QgGvuW7 Diff:
OldNewDifferences
10311031
10321032
10331033 @Callable(dr)
1034-func putOneTknV2OldREADONLY (fD,fE) = {
1035- let cJ = dx(fD, fE, "", "")
1036- let dO = cJ._2
1037- let dP = cJ._7
1038- let cn = cJ._9
1039- let cX = cJ._10
1040- let cY = cJ._11
1041- $Tuple2(nil, dO)
1042- }
1043-
1044-
1045-
1046-@Callable(dr)
1047-func putOneTknV2WithBonusREADONLY (fD,fE) = {
1034+func putOneTknV2WithBonusOldREADONLY (fD,fE) = {
10481035 let dz = aG()
10491036 let bV = dz[t]
10501037 let bW = dz[u]
13761363
13771364
13781365 @Callable(dr)
1379-func putOneTknV2READONLY (bN,gx) = {
1366+func putOneTknV2WithBonusREADONLY (bN,gx) = {
13801367 let dz = aG()
13811368 let bV = dz[t]
13821369 let bW = dz[u]
14011388 let bq = ek([toBigInt(gF), toBigInt(gG)])
14021389 let gf = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(bU)), "invalid lp asset").quantity)
14031390 let gH = ((gf * (bq - br)) / br)
1404- $Tuple2(nil, toInt(gH))
1391+ $Tuple2(nil, $Tuple3(toInt(gH), bO, 0))
14051392 }
14061393
14071394
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(0)
1313
1414 let f = toBigInt(1)
1515
1616 let g = toBigInt(2)
1717
1818 let h = toBigInt((a - ((a * 1) / a)))
1919
2020 let i = "100"
2121
2222 let j = "1"
2323
2424 let k = "__"
2525
2626 let l = ""
2727
2828 let m = 1
2929
3030 let n = 2
3131
3232 let o = 3
3333
3434 let p = 4
3535
3636 let q = 1
3737
3838 let r = 2
3939
4040 let s = 3
4141
4242 let t = 4
4343
4444 let u = 5
4545
4646 let v = 6
4747
4848 let w = 7
4949
5050 let x = 8
5151
5252 let y = 9
5353
5454 let z = 1
5555
5656 let A = 7
5757
5858 let B = 10
5959
6060 let C = fraction(5, a, 10000)
6161
6262 func D (E,F) = fraction(toBigInt(E), c, toBigInt(F))
6363
6464
6565 func G (H,I) = toInt(fraction(H, toBigInt(I), c))
6666
6767
6868 func J (K,L,M) = fraction(K, L, M)
6969
7070
7171 func N (H) = if ((d > H))
7272 then -(H)
7373 else H
7474
7575
7676 func O (H) = if ((d > H))
7777 then -(H)
7878 else H
7979
8080
8181 func P () = "%s__factoryContract"
8282
8383
8484 func Q () = "%s__managerPublicKey"
8585
8686
8787 func R () = "%s__pendingManagerPublicKey"
8888
8989
9090 func S () = "%s%s__price__last"
9191
9292
9393 func T (U,V) = makeString(["%s%s%d%d__price__history", toString(U), toString(V)], k)
9494
9595
9696 func W (X,Y) = ((("%s%s%s__P__" + X) + "__") + Y)
9797
9898
9999 func Z (X,Y) = ((("%s%s%s__G__" + X) + "__") + Y)
100100
101101
102102 func aa () = "%s__amountAsset"
103103
104104
105105 func ab () = "%s__priceAsset"
106106
107107
108108 func ac () = "%s__amp"
109109
110110
111111 func ad () = "%s__addonAddr"
112112
113113
114114 let ae = "%s__fee"
115115
116116 let af = valueOrElse(getInteger(this, ae), C)
117117
118118 func ag () = "%s__factoryConfig"
119119
120120
121121 func ah () = "%s%s__matcher__publicKey"
122122
123123
124124 func ai (aj,ak) = (((("%d%d%s__" + aj) + "__") + ak) + "__config")
125125
126126
127127 func al (am) = ("%s%s%s__mappings__baseAsset2internalId__" + am)
128128
129129
130130 func an () = "%s__shutdown"
131131
132132
133133 func ao () = "%s__allowedLpStableScriptHash"
134134
135135
136136 func ap () = "%s__feeCollectorAddress"
137137
138138
139139 func aq (ar,as,at) = throw(((((("Failed: ordValid=" + toString(ar)) + " sndrValid=") + toString(as)) + " mtchrValid=") + toString(at)))
140140
141141
142142 func au (H) = {
143143 let av = H
144144 if ($isInstanceOf(av, "String"))
145145 then {
146146 let aw = av
147147 aw
148148 }
149149 else throw("fail cast to String")
150150 }
151151
152152
153153 func ax (ay,az) = valueOrErrorMessage(getString(ay, az), makeString(["mandatory ", toString(ay), ".", az, " not defined"], ""))
154154
155155
156156 func aA (ay,az) = valueOrErrorMessage(getInteger(ay, az), makeString(["mandatory ", toString(ay), ".", az, " not defined"], ""))
157157
158158
159159 let aB = addressFromStringValue(ax(this, P()))
160160
161161 let aC = ax(this, ac())
162162
163163 func aD () = valueOrElse(getBoolean(aB, an()), false)
164164
165165
166166 func aE () = fromBase58String(ax(aB, ah()))
167167
168168
169169 let aF = addressFromStringValue(ax(aB, ap()))
170170
171171 func aG () = {
172172 let aH = ax(this, aa())
173173 let aI = ax(this, ab())
174174 let aJ = aA(aB, al(aI))
175175 let aj = aA(aB, al(aH))
176176 split(ax(aB, ai(toString(aj), toString(aJ))), k)
177177 }
178178
179179
180180 func aK () = split(ax(aB, ag()), k)
181181
182182
183183 let aL = aK()
184184
185185 let aM = valueOrErrorMessage(addressFromString(aL[z]), "Invalid staking contract address")
186186
187187 let aN = valueOrErrorMessage(addressFromString(aL[A]), "Invalid slipage contract address")
188188
189189 let aO = valueOrErrorMessage(addressFromString(aL[B]), "Invalid gwx contract address")
190190
191191 func aP (aQ,aR,aS,aT,aU,aV,aW,aX,aY,aZ) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(aQ), toString(aR), toString(aS), toString(aT), toString(aU), toString(aV), toString(aW), toString(aX), toString(aY), toString(aZ)], k)
192192
193193
194194 func ba (bb,bc,bd,aT,aW,aX) = makeString(["%d%d%d%d%d%d", toString(bb), toString(bc), toString(bd), toString(aT), toString(aW), toString(aX)], k)
195195
196196
197197 func be (bf) = if ((bf == "WAVES"))
198198 then wavesBalance(this).available
199199 else assetBalance(this, fromBase58String(bf))
200200
201201
202202 func bg (bh,bi) = fraction(bh, c, bi)
203203
204204
205205 func bj (bk,bl,bm) = {
206206 let bn = fraction((bk - bl), b, bl)
207207 let bo = ((bm - N(bn)) > d)
208208 if (!(bo))
209209 then throw(("Big slpg: " + toString(bn)))
210210 else $Tuple2(bo, min([bk, bl]))
211211 }
212212
213213
214214 func bp (bq,br,bs) = {
215215 let bn = fraction(br, b, bq)
216216 let bt = (bs > bn)
217217 if (if (bt)
218218 then true
219219 else (br > bq))
220220 then throw(((((((toString(br) + " ") + toString(bq)) + " ") + toString(bn)) + " ") + toString(bs)))
221221 else bt
222222 }
223223
224224
225225 func bu (bv,bw,bx,by) = {
226226 let bz = D(bx, bv)
227227 let bA = D(by, bw)
228228 bg(bA, bz)
229229 }
230230
231231
232232 func bB (bx,by,bC) = {
233233 let bD = aG()
234234 let bE = parseIntValue(bD[v])
235235 let bF = parseIntValue(bD[w])
236236 let bG = bu(bE, bF, bx, by)
237237 let bi = D(bx, bE)
238238 let bh = D(by, bF)
239239 let bH = D(bC, a)
240240 let bI = bg(bi, bH)
241241 let bJ = bg(bh, bH)
242242 [bG, bI, bJ]
243243 }
244244
245245
246246 func bK (bx,by,bC) = {
247247 let bL = bB(bx, by, bC)
248248 [G(bL[0], a), G(bL[1], a), G(bL[2], a)]
249249 }
250250
251251
252252 func bM (bN) = {
253253 let bO = fraction(bN, af, a)
254254 $Tuple2((bN - bO), bO)
255255 }
256256
257257
258258 func bP (bQ,bR,bS,bT) = {
259259 let bD = aG()
260260 let bU = bD[s]
261261 let bV = bD[t]
262262 let bW = bD[u]
263263 let bX = parseIntValue(bD[v])
264264 let bY = parseIntValue(bD[w])
265265 let bZ = bD[r]
266266 let ca = valueOrErrorMessage(assetInfo(fromBase58String(bU)), "Wrong LP id").quantity
267267 if ((bU != bR))
268268 then throw("Wrong pmt asset")
269269 else {
270270 let cb = be(bV)
271271 let cc = D(cb, bX)
272272 let cd = be(bW)
273273 let ce = D(cd, bY)
274274 let cf = bg(ce, cc)
275275 let cg = G(cf, a)
276276 let ch = D(bS, a)
277277 let ci = D(ca, a)
278278 let cj = fraction(cc, ch, ci)
279279 let ck = fraction(ce, ch, ci)
280280 let cl = G(cj, bX)
281281 let cm = G(ck, bY)
282282 let cn = if ((bQ == ""))
283283 then nil
284284 else [ScriptTransfer(bT, cl, if ((bV == "WAVES"))
285285 then unit
286286 else fromBase58String(bV)), ScriptTransfer(bT, cm, if ((bW == "WAVES"))
287287 then unit
288288 else fromBase58String(bW)), StringEntry(Z(toString(bT), bQ), ba(cl, cm, bS, cg, height, lastBlock.timestamp)), IntegerEntry(S(), cg), IntegerEntry(T(height, lastBlock.timestamp), cg)]
289289 $Tuple10(cl, cm, bV, bW, cb, cd, ca, cf, bZ, cn)
290290 }
291291 }
292292
293293
294294 func co (bQ,bm,cp,cq,cr,cs,bT,ct,cu,cv,cw,cx,cy) = {
295295 let bD = aG()
296296 let bU = fromBase58String(bD[s])
297297 let cz = bD[t]
298298 let cA = bD[u]
299299 let cB = bD[x]
300300 let cC = bD[y]
301301 let cD = parseIntValue(bD[v])
302302 let cE = parseIntValue(bD[w])
303303 let bZ = bD[r]
304304 let cF = valueOrErrorMessage(assetInfo(bU), "Wr lp as").quantity
305305 let cb = if (ct)
306306 then be(cz)
307307 else if (if (cv)
308308 then (cy == cz)
309309 else false)
310310 then (be(cz) - cx)
311311 else if (cv)
312312 then be(cz)
313313 else (be(cz) - cp)
314314 let cd = if (ct)
315315 then be(cA)
316316 else if (if (cv)
317317 then (cy == cA)
318318 else false)
319319 then (be(cA) - cx)
320320 else if (cv)
321321 then be(cA)
322322 else (be(cA) - cr)
323323 let cG = D(cp, cD)
324324 let cH = D(cr, cE)
325325 let cI = bg(cH, cG)
326326 let cc = D(cb, cD)
327327 let ce = D(cd, cE)
328328 let cJ = if ((cF == 0))
329329 then {
330330 let cf = d
331331 let cK = d
332332 let bH = pow((cG * cH), 0, toBigInt(5), 1, 0, DOWN)
333333 $Tuple5(G(bH, a), G(cG, cD), G(cH, cE), bg((ce + cH), (cc + cG)), cK)
334334 }
335335 else {
336336 let cf = bg(ce, cc)
337337 let cL = fraction(N((cf - cI)), c, cf)
338338 let cK = D(bm, a)
339339 if (if (if (cw)
340340 then (cf != d)
341341 else false)
342342 then (cL > cK)
343343 else false)
344344 then throw(((("Price slippage " + toString(cL)) + " > ") + toString(cK)))
345345 else {
346346 let cM = D(cF, a)
347347 let cN = fraction(cG, cf, c)
348348 let cO = fraction(cH, c, cf)
349349 let cP = if ((cN > cH))
350350 then $Tuple2(cO, cH)
351351 else $Tuple2(cG, cN)
352352 let cQ = cP._1
353353 let cR = cP._2
354354 let bH = fraction(cM, cR, ce)
355355 $Tuple5(G(bH, a), G(cQ, cD), G(cR, cE), cf, cK)
356356 }
357357 }
358358 let cS = cJ._1
359359 let cT = cJ._2
360360 let cU = cJ._3
361361 let cg = G(cJ._4, a)
362362 let cV = G(cJ._5, a)
363363 if ((0 >= cS))
364364 then throw("LP <= 0")
365365 else {
366366 let cW = if (!(cu))
367367 then 0
368368 else cS
369369 let cX = (cp - cT)
370370 let cY = (cr - cU)
371371 let cZ = if (if (cv)
372372 then (cy == cz)
373373 else false)
374374 then $Tuple2(cx, 0)
375375 else if (if (cv)
376376 then (cy == cA)
377377 else false)
378378 then $Tuple2(0, cx)
379379 else $Tuple2(cT, cU)
380380 let da = cZ._1
381381 let db = cZ._2
382382 let dc = [IntegerEntry(S(), cg), IntegerEntry(T(height, lastBlock.timestamp), cg), StringEntry(W(bT, bQ), aP(da, db, cW, cg, bm, cV, height, lastBlock.timestamp, cX, cY))]
383383 $Tuple13(cS, cW, cg, cb, cd, cF, bU, bZ, dc, cX, cY, cq, cs)
384384 }
385385 }
386386
387387
388388 func dd (de) = {
389389 let bD = aG()
390390 let df = bD[t]
391391 let dg = bD[u]
392392 let bZ = parseIntValue(bD[r])
393393 let bE = parseIntValue(bD[v])
394394 let bF = parseIntValue(bD[w])
395395 let dh = be(df)
396396 let di = be(dg)
397397 let cf = if ((de.orderType == Buy))
398398 then bu(bE, bF, (dh + de.amount), di)
399399 else bu(bE, bF, (dh - de.amount), di)
400400 let cg = G(cf, a)
401401 if (if (if (aD())
402402 then true
403403 else (bZ == o))
404404 then true
405405 else (bZ == p))
406406 then throw("Admin blocked")
407407 else {
408408 let dj = de.assetPair.amountAsset
409409 let dk = if ((dj == unit))
410410 then "WAVES"
411411 else toBase58String(value(dj))
412412 let dl = de.assetPair.priceAsset
413413 let dm = if ((dl == unit))
414414 then "WAVES"
415415 else toBase58String(value(dl))
416416 if (if ((dk != df))
417417 then true
418418 else (dm != dg))
419419 then throw("Wr assets")
420420 else {
421421 let dn = de.price
422422 let cE = fraction(a, bF, bE)
423423 let do = J(dn, a, cE)
424424 let dp = if ((de.orderType == Buy))
425425 then (cg >= do)
426426 else (do >= cg)
427427 true
428428 }
429429 }
430430 }
431431
432432
433433 func dq (dr) = if ((size(dr.payments) != 1))
434434 then throw("1 pmnt exp")
435435 else {
436436 let ds = value(dr.payments[0])
437437 let bR = value(ds.assetId)
438438 let cx = ds.amount
439439 let cJ = bP(toBase58String(dr.transactionId), toBase58String(bR), cx, dr.caller)
440440 let cl = cJ._1
441441 let cm = cJ._2
442442 let bZ = parseIntValue(cJ._9)
443443 let cn = cJ._10
444444 if (if (aD())
445445 then true
446446 else (bZ == p))
447447 then throw(("Admin blocked: " + toString(bZ)))
448448 else $Tuple5(cl, cm, cx, bR, cn)
449449 }
450450
451451
452452 func dt (du,Y,dv,dw,bm,cu,cv,cw,cx,cy) = {
453453 let cJ = co(Y, bm, value(dv).amount, value(dv).assetId, value(dw).amount, value(dw).assetId, du, (Y == ""), cu, cv, cw, cx, cy)
454454 let bZ = parseIntValue(cJ._8)
455455 if (if (if (aD())
456456 then true
457457 else (bZ == n))
458458 then true
459459 else (bZ == p))
460460 then throw(("Blocked:" + toString(bZ)))
461461 else cJ
462462 }
463463
464464
465465 func dx (dy,bR,bT,Y) = {
466466 let dz = aG()
467467 let bV = dz[t]
468468 let bW = dz[u]
469469 let cb = be(bV)
470470 let cd = be(bW)
471471 let dA = bM(dy)
472472 let cx = dA._1
473473 let bO = dA._2
474474 let dB = if ((Y == ""))
475475 then $Tuple2(cb, cd)
476476 else if ((bR == bV))
477477 then if ((dy > cb))
478478 then throw("invalid payment amount")
479479 else $Tuple2((cb - dy), cd)
480480 else if ((bR == bW))
481481 then if ((dy > cd))
482482 then throw("invalid payment amount")
483483 else $Tuple2(cb, (cd - dy))
484484 else throw("wrong pmtAssetId")
485485 let dC = dB._1
486486 let dD = dB._2
487487 let dE = if ((bR == bV))
488488 then $Tuple2(dC, dD)
489489 else $Tuple2(dD, dC)
490490 let dF = dE._1
491491 let dG = dE._2
492492 let dH = 1
493493 let dI = {
494494 let dJ = invoke(aO, "calcPutXOnly", [toString(cx), toString(dF), toString(dG), "", aC, i, toString(dH), j], nil)
495495 if ($isInstanceOf(dJ, "(Int, Int)"))
496496 then dJ
497497 else throw(($getType(dJ) + " couldn't be cast to (Int, Int)"))
498498 }
499499 let dK = if ((bR == bV))
500500 then dI
501501 else $Tuple2(dI._2, dI._1)
502502 let dL = dK._1
503503 let dM = dK._2
504504 let dN = dt(bT, Y, AttachedPayment(fromBase58String(bV), dL), AttachedPayment(fromBase58String(bW), dM), 0, true, true, false, dy, bR)
505505 let dO = dN._2
506506 let dP = dN._7
507507 let cn = dN._9
508508 let cX = dN._10
509509 let cY = dN._11
510510 dN
511511 }
512512
513513
514514 func dQ (dR,dS,dT,du,dU,dV) = if ((size(dT) != 1))
515515 then throw("1 pmnt expd")
516516 else {
517517 let dz = aG()
518518 let bU = dz[s]
519519 let bV = dz[t]
520520 let bW = dz[u]
521521 let dW = parseIntValue(dz[v])
522522 let dX = parseIntValue(dz[w])
523523 let dY = dz[r]
524524 let bT = if ((du == this))
525525 then dU
526526 else du
527527 let ds = value(dT[0])
528528 let bR = value(ds.assetId)
529529 let cx = ds.amount
530530 if ((1000000000 > cx))
531531 then throw("Min pmt 10 LP")
532532 else {
533533 let bQ = toBase58String(dV)
534534 if ((bU != toBase58String(bR)))
535535 then throw("Wrong LP")
536536 else {
537537 let cb = be(bV)
538538 let cd = be(bW)
539539 let dZ = {
540540 let dJ = invoke(this, "getOneTknV2READONLY", [dR, cx], nil)
541541 if ($isInstanceOf(dJ, "(Int, Int)"))
542542 then dJ
543543 else throw(($getType(dJ) + " couldn't be cast to (Int, Int)"))
544544 }
545545 let ea = dZ._1
546546 let bO = dZ._2
547547 let eb = if (if ((dS > 0))
548548 then (dS > ea)
549549 else false)
550550 then throw(makeString(["amount to receive is less than ", toString(dS)], ""))
551551 else ea
552552 let ec = if ((dR == bV))
553553 then $Tuple2(eb, 0)
554554 else $Tuple2(0, eb)
555555 let ed = ec._1
556556 let ee = ec._2
557557 let ef = bg(D(cd, dX), D(cb, dW))
558558 let eg = G(ef, a)
559559 let eh = if ((dR == "WAVES"))
560560 then unit
561561 else fromBase58String(dR)
562562 let ei = if ((bO > 0))
563563 then [ScriptTransfer(aF, bO, eh)]
564564 else nil
565565 let cn = ([ScriptTransfer(bT, eb, eh), StringEntry(Z(toString(bT), bQ), ba(ed, ee, cx, eg, height, lastBlock.timestamp)), IntegerEntry(S(), eg), IntegerEntry(T(height, lastBlock.timestamp), eg)] ++ ei)
566566 if ((cn == cn))
567567 then {
568568 let ej = invoke(aB, "burn", [cx], [AttachedPayment(bR, cx)])
569569 if ((ej == ej))
570570 then $Tuple2(cn, eb)
571571 else throw("Strict value is not equal to itself.")
572572 }
573573 else throw("Strict value is not equal to itself.")
574574 }
575575 }
576576 }
577577
578578
579579 func ek (el) = {
580580 let em = g
581581 let en = el[0]
582582 let eo = el[1]
583583 let ep = parseBigIntValue(i)
584584 let eq = (parseBigIntValue(aC) * ep)
585585 let er = (en + eo)
586586 if ((er == e))
587587 then e
588588 else {
589589 let es = (eq * em)
590590 func et (eu,ev) = {
591591 let ew = eu
592592 let ex = ew._1
593593 let ey = ew._2
594594 if ((ey != unit))
595595 then eu
596596 else {
597597 let ez = (((ex * ex) * ex) / (((en * eo) * em) * em))
598598 let eA = (((((es * er) / ep) + (ez * em)) * ex) / ((((es - ep) * ex) / ep) + ((em + toBigInt(1)) * ez)))
599599 let eB = O((eA - value(ex)))
600600 if ((f >= eB))
601601 then $Tuple2(eA, ev)
602602 else $Tuple2(eA, unit)
603603 }
604604 }
605605
606606 let eC = [0, 1, 2, 3, 4, 5, 6]
607607 let eD = {
608608 let eE = eC
609609 let eF = size(eE)
610610 let eG = $Tuple2(er, unit)
611611 func eH (eI,eJ) = if ((eJ >= eF))
612612 then eI
613613 else et(eI, eE[eJ])
614614
615615 func eK (eI,eJ) = if ((eJ >= eF))
616616 then eI
617617 else throw("List size exceeds 7")
618618
619619 eK(eH(eH(eH(eH(eH(eH(eH(eG, 0), 1), 2), 3), 4), 5), 6), 7)
620620 }
621621 let ex = eD._1
622622 let ey = eD._2
623623 if ((ey != unit))
624624 then ex
625625 else throw(("D calculation error, D = " + toString(ex)))
626626 }
627627 }
628628
629629
630630 func eL (el,dr,eM) = {
631631 let em = g
632632 let eN = el[if ((dr == 0))
633633 then 1
634634 else 0]
635635 let ep = parseBigIntValue(i)
636636 let eq = (parseBigIntValue(aC) * ep)
637637 let er = eN
638638 let es = (eq * em)
639639 let eO = (((((eM * eM) / (eN * em)) * eM) * ep) / (es * em))
640640 let eP = ((er + ((eM * ep) / es)) - eM)
641641 func et (eu,ev) = {
642642 let eQ = eu
643643 let eR = eQ._1
644644 let ey = eQ._2
645645 if ((ey != unit))
646646 then eu
647647 else {
648648 let eS = (((eR * eR) + eO) / ((g * eR) + eP))
649649 let eT = O((eS - value(eR)))
650650 if ((f >= eT))
651651 then $Tuple2(eS, ev)
652652 else $Tuple2(eS, unit)
653653 }
654654 }
655655
656656 let eC = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
657657 let eU = {
658658 let eE = eC
659659 let eF = size(eE)
660660 let eG = $Tuple2(eM, unit)
661661 func eH (eI,eJ) = if ((eJ >= eF))
662662 then eI
663663 else et(eI, eE[eJ])
664664
665665 func eK (eI,eJ) = if ((eJ >= eF))
666666 then eI
667667 else throw("List size exceeds 15")
668668
669669 eK(eH(eH(eH(eH(eH(eH(eH(eH(eH(eH(eH(eH(eH(eH(eH(eG, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
670670 }
671671 let eR = eU._1
672672 let ey = eU._2
673673 if ((ey != unit))
674674 then eR
675675 else throw(("Y calculation error, Y = " + toString(eR)))
676676 }
677677
678678
679679 func eV () = {
680680 let av = getString(Q())
681681 if ($isInstanceOf(av, "String"))
682682 then {
683683 let er = av
684684 fromBase58String(er)
685685 }
686686 else if ($isInstanceOf(av, "Unit"))
687687 then unit
688688 else throw("Match error")
689689 }
690690
691691
692692 func eW () = {
693693 let av = getString(R())
694694 if ($isInstanceOf(av, "String"))
695695 then {
696696 let er = av
697697 fromBase58String(er)
698698 }
699699 else if ($isInstanceOf(av, "Unit"))
700700 then unit
701701 else throw("Match error")
702702 }
703703
704704
705705 let eX = throw("Permission denied")
706706
707707 func eY (dr) = {
708708 let av = eV()
709709 if ($isInstanceOf(av, "ByteVector"))
710710 then {
711711 let eZ = av
712712 if ((dr.callerPublicKey == eZ))
713713 then true
714714 else eX
715715 }
716716 else if ($isInstanceOf(av, "Unit"))
717717 then if ((dr.caller == this))
718718 then true
719719 else eX
720720 else throw("Match error")
721721 }
722722
723723
724724 @Callable(dr)
725725 func constructor (P) = {
726726 let eO = eY(dr)
727727 if ((eO == eO))
728728 then [StringEntry(P(), P)]
729729 else throw("Strict value is not equal to itself.")
730730 }
731731
732732
733733
734734 @Callable(dr)
735735 func setManager (fa) = {
736736 let eO = eY(dr)
737737 if ((eO == eO))
738738 then {
739739 let fb = fromBase58String(fa)
740740 if ((fb == fb))
741741 then [StringEntry(R(), fa)]
742742 else throw("Strict value is not equal to itself.")
743743 }
744744 else throw("Strict value is not equal to itself.")
745745 }
746746
747747
748748
749749 @Callable(dr)
750750 func confirmManager () = {
751751 let bL = eW()
752752 let fc = if (isDefined(bL))
753753 then true
754754 else throw("No pending manager")
755755 if ((fc == fc))
756756 then {
757757 let fd = if ((dr.callerPublicKey == value(bL)))
758758 then true
759759 else throw("You are not pending manager")
760760 if ((fd == fd))
761761 then [StringEntry(Q(), toBase58String(value(bL))), DeleteEntry(R())]
762762 else throw("Strict value is not equal to itself.")
763763 }
764764 else throw("Strict value is not equal to itself.")
765765 }
766766
767767
768768
769769 @Callable(dr)
770770 func put (fe,ff) = {
771771 let fg = aK()
772772 let fh = valueOrErrorMessage(addressFromString(fg[z]), "Wr st addr")
773773 let fi = valueOrErrorMessage(addressFromString(fg[A]), "Wr sl addr")
774774 if ((0 > fe))
775775 then throw("Wrong slippage")
776776 else if ((size(dr.payments) != 2))
777777 then throw("2 pmnts expd")
778778 else {
779779 let fj = dt(toString(dr.caller), toBase58String(dr.transactionId), AttachedPayment(value(dr.payments[0]).assetId, value(dr.payments[0]).amount), dr.payments[1], fe, true, false, true, 0, "")
780780 let cW = fj._2
781781 let dP = fj._7
782782 let cn = fj._9
783783 let cX = fj._10
784784 let cY = fj._11
785785 let bV = fj._12
786786 let bW = fj._13
787787 let cJ = invoke(aB, "emit", [cW], nil)
788788 if ((cJ == cJ))
789789 then {
790790 let fk = {
791791 let av = cJ
792792 if ($isInstanceOf(av, "Address"))
793793 then {
794794 let fl = av
795795 invoke(fl, "emit", [cW], nil)
796796 }
797797 else unit
798798 }
799799 if ((fk == fk))
800800 then {
801801 let fm = if ((cX > 0))
802802 then invoke(fi, "put", nil, [AttachedPayment(bV, cX)])
803803 else nil
804804 if ((fm == fm))
805805 then {
806806 let fn = if ((cY > 0))
807807 then invoke(fi, "put", nil, [AttachedPayment(bW, cY)])
808808 else nil
809809 if ((fn == fn))
810810 then {
811811 let fo = if (ff)
812812 then {
813813 let fp = invoke(fh, "stake", nil, [AttachedPayment(dP, cW)])
814814 if ((fp == fp))
815815 then nil
816816 else throw("Strict value is not equal to itself.")
817817 }
818818 else [ScriptTransfer(dr.caller, cW, dP)]
819819 (cn ++ fo)
820820 }
821821 else throw("Strict value is not equal to itself.")
822822 }
823823 else throw("Strict value is not equal to itself.")
824824 }
825825 else throw("Strict value is not equal to itself.")
826826 }
827827 else throw("Strict value is not equal to itself.")
828828 }
829829 }
830830
831831
832832
833833 @Callable(dr)
834834 func putOneTkn (dL,dM,fq,bm,ff) = {
835835 let bD = aK()
836836 let fh = valueOrErrorMessage(addressFromString(bD[z]), "Wr st addr")
837837 let fi = valueOrErrorMessage(addressFromString(bD[A]), "Wr sl addr")
838838 let fr = valueOrErrorMessage(addressFromString(bD[B]), "Wr gwx addr")
839839 let fs = aG()
840840 let bV = fs[t]
841841 let bW = fs[u]
842842 let bX = parseIntValue(fs[v])
843843 let bY = parseIntValue(fs[w])
844844 let ft = valueOrElse(getString(this, ad()), "")
845845 let bT = if ((ft == toString(dr.caller)))
846846 then dr.originCaller
847847 else dr.caller
848848 if (if (if (if ((0 >= bm))
849849 then true
850850 else (0 >= dL))
851851 then true
852852 else (0 >= dM))
853853 then true
854854 else (0 >= fq))
855855 then throw("Wrong params")
856856 else if ((size(dr.payments) != 1))
857857 then throw("1 pmnt expd")
858858 else {
859859 let ds = value(dr.payments[0])
860860 let bR = toBase58String(value(ds.assetId))
861861 let fu = ds.amount
862862 let fv = bM(fu)
863863 let cx = fv._1
864864 let bO = fv._2
865865 if ((10000000 > fu))
866866 then throw("Wrong pmt amt")
867867 else {
868868 let cb = be(bV)
869869 let cd = be(bW)
870870 let fw = if ((bR == bV))
871871 then if (if ((fu > cb))
872872 then true
873873 else (dL > cx))
874874 then throw("invalid payment amount")
875875 else $Tuple6((cb - fu), cd, (cx - dL), dM, 0, 0)
876876 else if ((bR == bW))
877877 then if (if ((fu > cd))
878878 then true
879879 else (dM > cx))
880880 then throw("invalid payment amount")
881881 else $Tuple6(cb, (cd - fu), 0, 0, (cx - dM), dL)
882882 else throw("wrong pmtAssetId")
883883 let dC = fw._1
884884 let dD = fw._2
885885 let fx = fw._3
886886 let fy = fw._4
887887 let fz = fw._5
888888 let fA = fw._6
889889 let br = invoke(fr, "calcD", [toString(dC), toString(dD), aC, i, j], nil)
890890 let bq = invoke(fr, "calcD", [toString(toBigInt(((dC + fx) - fA))), toString(toBigInt(((dD + fz) - fy))), aC, i, j], nil)
891891 let fB = bp(parseBigIntValue(au(bq)), parseBigIntValue(au(br)), h)
892892 if ((fB == fB))
893893 then {
894894 let dN = dt(toString(dr.caller), toBase58String(dr.transactionId), AttachedPayment(fromBase58String(bV), dL), AttachedPayment(fromBase58String(bW), dM), bm, true, true, true, cx, bR)
895895 let dO = dN._2
896896 let dP = dN._7
897897 let cn = dN._9
898898 let cX = dN._10
899899 let cY = dN._11
900900 let fC = bj(toBigInt(dO), toBigInt(fq), toBigInt(bm))
901901 let cW = toInt(fC._2)
902902 let fj = invoke(aB, "emit", [cW], nil)
903903 if ((fj == fj))
904904 then {
905905 let fk = {
906906 let av = fj
907907 if ($isInstanceOf(av, "Address"))
908908 then {
909909 let fl = av
910910 invoke(fl, "emit", [cW], nil)
911911 }
912912 else unit
913913 }
914914 if ((fk == fk))
915915 then {
916916 let fm = if ((cX > 0))
917917 then invoke(fi, "put", nil, [AttachedPayment(fromBase58String(bV), cX)])
918918 else nil
919919 if ((fm == fm))
920920 then {
921921 let fn = if ((cY > 0))
922922 then invoke(fi, "put", nil, [AttachedPayment(fromBase58String(bW), cY)])
923923 else nil
924924 if ((fn == fn))
925925 then {
926926 let fo = if (ff)
927927 then {
928928 let fp = invoke(fh, "stake", nil, [AttachedPayment(dP, cW)])
929929 if ((fp == fp))
930930 then nil
931931 else throw("Strict value is not equal to itself.")
932932 }
933933 else [ScriptTransfer(dr.caller, cW, dP)]
934934 let ei = if ((bO > 0))
935935 then [ScriptTransfer(aF, bO, fromBase58String(bR))]
936936 else nil
937937 ((cn ++ fo) ++ ei)
938938 }
939939 else throw("Strict value is not equal to itself.")
940940 }
941941 else throw("Strict value is not equal to itself.")
942942 }
943943 else throw("Strict value is not equal to itself.")
944944 }
945945 else throw("Strict value is not equal to itself.")
946946 }
947947 else throw("Strict value is not equal to itself.")
948948 }
949949 }
950950 }
951951
952952
953953
954954 @Callable(dr)
955955 func putOneTknV2 (dS,ff) = if ((size(dr.payments) != 1))
956956 then throw("1 pmnt expd")
957957 else {
958958 let dz = aG()
959959 let bV = dz[t]
960960 let bW = dz[u]
961961 let dW = parseIntValue(dz[v])
962962 let dX = parseIntValue(dz[w])
963963 let bT = if ((dr.caller == this))
964964 then dr.originCaller
965965 else dr.caller
966966 let ds = value(dr.payments[0])
967967 let bR = toBase58String(value(ds.assetId))
968968 let cx = ds.amount
969969 if ((10000000 > cx))
970970 then throw("Wrong pmt amt")
971971 else {
972972 let cJ = dx(cx, bR, toString(bT), toBase58String(dr.transactionId))
973973 let dO = cJ._2
974974 let dP = cJ._7
975975 let cn = cJ._9
976976 let cX = cJ._10
977977 let cY = cJ._11
978978 let cW = if (if ((dS > 0))
979979 then (dS > dO)
980980 else false)
981981 then throw(makeString(["amount to receive is less than ", toString(dS)], ""))
982982 else dO
983983 let fj = invoke(aB, "emit", [cW], nil)
984984 if ((fj == fj))
985985 then {
986986 let fk = {
987987 let av = fj
988988 if ($isInstanceOf(av, "Address"))
989989 then {
990990 let fl = av
991991 invoke(fl, "emit", [cW], nil)
992992 }
993993 else unit
994994 }
995995 if ((fk == fk))
996996 then {
997997 let fm = if ((cX > 0))
998998 then invoke(aN, "put", nil, [AttachedPayment(fromBase58String(bV), cX)])
999999 else nil
10001000 if ((fm == fm))
10011001 then {
10021002 let fn = if ((cY > 0))
10031003 then invoke(aN, "put", nil, [AttachedPayment(fromBase58String(bW), cY)])
10041004 else nil
10051005 if ((fn == fn))
10061006 then {
10071007 let fo = if (ff)
10081008 then {
10091009 let fp = invoke(aM, "stake", nil, [AttachedPayment(dP, cW)])
10101010 if ((fp == fp))
10111011 then nil
10121012 else throw("Strict value is not equal to itself.")
10131013 }
10141014 else [ScriptTransfer(dr.caller, cW, dP)]
10151015 let bO = bM(cx)._2
10161016 let ei = if ((bO > 0))
10171017 then [ScriptTransfer(aF, bO, fromBase58String(bR))]
10181018 else nil
10191019 $Tuple2(((cn ++ fo) ++ ei), cW)
10201020 }
10211021 else throw("Strict value is not equal to itself.")
10221022 }
10231023 else throw("Strict value is not equal to itself.")
10241024 }
10251025 else throw("Strict value is not equal to itself.")
10261026 }
10271027 else throw("Strict value is not equal to itself.")
10281028 }
10291029 }
10301030
10311031
10321032
10331033 @Callable(dr)
1034-func putOneTknV2OldREADONLY (fD,fE) = {
1035- let cJ = dx(fD, fE, "", "")
1036- let dO = cJ._2
1037- let dP = cJ._7
1038- let cn = cJ._9
1039- let cX = cJ._10
1040- let cY = cJ._11
1041- $Tuple2(nil, dO)
1042- }
1043-
1044-
1045-
1046-@Callable(dr)
1047-func putOneTknV2WithBonusREADONLY (fD,fE) = {
1034+func putOneTknV2WithBonusOldREADONLY (fD,fE) = {
10481035 let dz = aG()
10491036 let bV = dz[t]
10501037 let bW = dz[u]
10511038 let cJ = dx(fD, fE, "", "")
10521039 let dO = cJ._2
10531040 let cg = cJ._3
10541041 let fF = cJ._6
10551042 let dP = cJ._7
10561043 let cb = be(bV)
10571044 let cd = be(bW)
10581045 let fG = fraction(cd, a, cb)
10591046 let fH = fraction(fD, a, (fG + a))
10601047 let fI = (fD - fH)
10611048 let fJ = fraction(fF, fI, cd)
10621049 let fK = fraction((dO - fJ), a, fJ)
10631050 let bO = bM(fD)._2
10641051 $Tuple2(nil, $Tuple3(dO, bO, fK))
10651052 }
10661053
10671054
10681055
10691056 @Callable(dr)
10701057 func putForFree (fL) = if ((0 > fL))
10711058 then throw("Wrong slpg")
10721059 else if ((size(dr.payments) != 2))
10731060 then throw("2 pmnts expd")
10741061 else {
10751062 let dN = dt(toString(dr.caller), toBase58String(dr.transactionId), AttachedPayment(value(dr.payments[0]).assetId, value(dr.payments[0]).amount), dr.payments[1], fL, false, false, true, 0, "")
10761063 dN._9
10771064 }
10781065
10791066
10801067
10811068 @Callable(dr)
10821069 func get () = {
10831070 let cJ = dq(dr)
10841071 let fM = cJ._1
10851072 let cm = cJ._2
10861073 let cx = cJ._3
10871074 let bR = cJ._4
10881075 let cn = cJ._5
10891076 let eP = invoke(aB, "burn", [cx], [AttachedPayment(bR, cx)])
10901077 if ((eP == eP))
10911078 then cn
10921079 else throw("Strict value is not equal to itself.")
10931080 }
10941081
10951082
10961083
10971084 @Callable(dr)
10981085 func getOneTkn (fN,fO,fP,dR,bm) = if ((size(dr.payments) != 1))
10991086 then throw("1 pmnt expd")
11001087 else {
11011088 let bD = aG()
11021089 let bU = bD[s]
11031090 let bV = bD[t]
11041091 let bW = bD[u]
11051092 let bX = parseIntValue(bD[v])
11061093 let bY = parseIntValue(bD[w])
11071094 let bZ = bD[r]
11081095 let fg = aK()
11091096 let fr = valueOrErrorMessage(addressFromString(fg[B]), "Wr sl addr")
11101097 let ds = value(dr.payments[0])
11111098 let ft = valueOrElse(getString(this, ad()), "")
11121099 let bT = if ((ft == toString(dr.caller)))
11131100 then dr.originCaller
11141101 else dr.caller
11151102 let bQ = toBase58String(dr.transactionId)
11161103 let bR = value(ds.assetId)
11171104 let cx = ds.amount
11181105 if ((1000000000 > cx))
11191106 then throw("Min pmt 10 LP")
11201107 else if (if (if ((0 > bm))
11211108 then true
11221109 else (0 > fN))
11231110 then true
11241111 else (0 > fP))
11251112 then throw("Wrong params")
11261113 else if ((bU != toBase58String(bR)))
11271114 then throw("Wrong LP")
11281115 else {
11291116 let cJ = bP(toBase58String(dr.transactionId), toBase58String(bR), cx, dr.caller)
11301117 let fQ = cJ._1
11311118 let fR = cJ._2
11321119 let cb = be(bV)
11331120 let cd = be(bW)
11341121 let fS = if ((dR == bV))
11351122 then $Tuple7((cb - fQ), (cd - fR), fN, fR, 0, 0, (fQ + fN))
11361123 else if ((dR == bW))
11371124 then $Tuple7((cb - fQ), (cd - fR), 0, 0, fN, fQ, (fR + fN))
11381125 else throw("wrong outAssetId")
11391126 let dC = fS._1
11401127 let dD = fS._2
11411128 let fx = fS._3
11421129 let fy = fS._4
11431130 let fz = fS._5
11441131 let fA = fS._6
11451132 let fT = fS._7
11461133 if (if ((0 > fx))
11471134 then true
11481135 else (0 > fz))
11491136 then throw("Wrong calc")
11501137 else {
11511138 let br = invoke(fr, "calcD", [toString(dC), toString(dD), aC, i, j], nil)
11521139 let bq = invoke(fr, "calcD", [toString(((dC - fx) + fA)), toString(((dD + fy) - fz)), aC, i, j], nil)
11531140 let fB = bp(parseBigIntValue(au(bq)), parseBigIntValue(au(br)), h)
11541141 if ((fB == fB))
11551142 then {
11561143 let ea = bM(fT)._1
11571144 let fU = bj(toBigInt(ea), toBigInt(fP), toBigInt(bm))
11581145 if ((fU == fU))
11591146 then {
11601147 let fV = if ((dR == bV))
11611148 then $Tuple2(toInt(fU._2), 0)
11621149 else $Tuple2(0, toInt(fU._2))
11631150 let ed = fV._1
11641151 let ee = fV._2
11651152 let eb = (ed + ee)
11661153 let bO = (fT - ea)
11671154 let eh = if ((dR == "WAVES"))
11681155 then unit
11691156 else fromBase58String(dR)
11701157 let ei = if ((bO > 0))
11711158 then [ScriptTransfer(aF, bO, eh)]
11721159 else nil
11731160 let ef = bg(D(cd, bY), D(cb, bX))
11741161 let eg = G(ef, a)
11751162 let cn = [ScriptTransfer(bT, eb, eh), StringEntry(Z(toString(bT), bQ), ba(ed, ee, cx, eg, height, lastBlock.timestamp)), IntegerEntry(S(), eg), IntegerEntry(T(height, lastBlock.timestamp), eg)]
11761163 if ((cn == cn))
11771164 then {
11781165 let ej = invoke(aB, "burn", [cx], [AttachedPayment(bR, cx)])
11791166 if ((ej == ej))
11801167 then (cn ++ ei)
11811168 else throw("Strict value is not equal to itself.")
11821169 }
11831170 else throw("Strict value is not equal to itself.")
11841171 }
11851172 else throw("Strict value is not equal to itself.")
11861173 }
11871174 else throw("Strict value is not equal to itself.")
11881175 }
11891176 }
11901177 }
11911178
11921179
11931180
11941181 @Callable(dr)
11951182 func getOneTknV2 (dR,dS) = {
11961183 let fW = dQ(dR, dS, dr.payments, dr.caller, dr.originCaller, dr.transactionId)
11971184 let cn = fW._1
11981185 let eb = fW._2
11991186 $Tuple2(cn, eb)
12001187 }
12011188
12021189
12031190
12041191 @Callable(dr)
12051192 func getOneTknV2OldREADONLY (dR,fX) = {
12061193 let dz = aG()
12071194 let bU = dz[s]
12081195 let bV = dz[t]
12091196 let bW = dz[u]
12101197 let cJ = bP("", bU, fX, this)
12111198 let fQ = cJ._1
12121199 let fR = cJ._2
12131200 let cb = be(bV)
12141201 let cd = be(bW)
12151202 let dC = (cb - fQ)
12161203 let dD = (cd - fR)
12171204 let fY = if ((dR == bV))
12181205 then $Tuple4(dD, dC, fR, fQ)
12191206 else if ((dR == bW))
12201207 then $Tuple4(dC, dD, fQ, fR)
12211208 else throw("wrong outAssetId")
12221209 let fZ = fY._1
12231210 let ga = fY._2
12241211 let gb = fY._3
12251212 let gc = fY._4
12261213 let gd = 1
12271214 let fN = {
12281215 let dJ = invoke(aO, "calcSwapXToY", [toString(gb), toString(fZ), toString(ga), "", aC, i, toString(gd), j], nil)
12291216 if ($isInstanceOf(dJ, "Int"))
12301217 then dJ
12311218 else throw(($getType(dJ) + " couldn't be cast to Int"))
12321219 }
12331220 let fT = (fN + gc)
12341221 let ge = bM(fT)
12351222 let ea = ge._1
12361223 let bO = ge._2
12371224 $Tuple2(nil, $Tuple2(ea, bO))
12381225 }
12391226
12401227
12411228
12421229 @Callable(dr)
12431230 func getOneTknV2READONLY (dR,fX) = {
12441231 let dz = aG()
12451232 let bV = dz[t]
12461233 let bW = dz[u]
12471234 let bU = dz[s]
12481235 let el = [toBigInt(be(bV)), toBigInt(be(bW))]
12491236 let gf = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(bU)), "invalid lp asset").quantity)
12501237 let br = ek(el)
12511238 let bq = (br - fraction(toBigInt(fX), br, gf))
12521239 let gg = if ((dR == bV))
12531240 then 0
12541241 else 1
12551242 let gh = eL(el, gg, bq)
12561243 let gi = (el[gg] - gh)
12571244 let fT = toInt((gi - f))
12581245 let gj = bM(fT)
12591246 let ea = gj._1
12601247 let bO = gj._2
12611248 $Tuple2(nil, $Tuple2(ea, bO))
12621249 }
12631250
12641251
12651252
12661253 @Callable(dr)
12671254 func getOneTknV2WithBonusREADONLY (dR,fX) = {
12681255 let dz = aG()
12691256 let bV = dz[t]
12701257 let bW = dz[u]
12711258 let bU = dz[s]
12721259 let cb = be(bV)
12731260 let cd = be(bW)
12741261 let gk = {
12751262 let dJ = invoke(this, "getOneTknV2READONLY", [dR, fX], nil)
12761263 if ($isInstanceOf(dJ, "(Int, Int)"))
12771264 then dJ
12781265 else throw(($getType(dJ) + " couldn't be cast to (Int, Int)"))
12791266 }
12801267 let ea = gk._1
12811268 let bO = gk._2
12821269 let cJ = bP("", bU, fX, this)
12831270 let cl = cJ._1
12841271 let cm = cJ._2
12851272 let gl = (cl + cm)
12861273 let fK = fraction((ea - gl), a, gl)
12871274 $Tuple2(nil, $Tuple3(ea, bO, fK))
12881275 }
12891276
12901277
12911278
12921279 @Callable(dr)
12931280 func getNoLess (gm,gn) = {
12941281 let cJ = dq(dr)
12951282 let cl = cJ._1
12961283 let cm = cJ._2
12971284 let cx = cJ._3
12981285 let bR = cJ._4
12991286 let cn = cJ._5
13001287 if ((gm > cl))
13011288 then throw(((("Failed: " + toString(cl)) + " < ") + toString(gm)))
13021289 else if ((gn > cm))
13031290 then throw(((("Failed: " + toString(cm)) + " < ") + toString(gn)))
13041291 else {
13051292 let go = invoke(aB, "burn", [cx], [AttachedPayment(bR, cx)])
13061293 if ((go == go))
13071294 then cn
13081295 else throw("Strict value is not equal to itself.")
13091296 }
13101297 }
13111298
13121299
13131300
13141301 @Callable(dr)
13151302 func unstakeAndGet (bN) = {
13161303 let gp = if ((size(dr.payments) != 0))
13171304 then throw("No pmnts expd")
13181305 else true
13191306 if ((gp == gp))
13201307 then {
13211308 let bD = aG()
13221309 let gq = aK()
13231310 let dP = fromBase58String(bD[s])
13241311 let gr = valueOrErrorMessage(addressFromString(gq[z]), "Wr st addr")
13251312 let gs = invoke(gr, "unstake", [toBase58String(dP), bN], nil)
13261313 if ((gs == gs))
13271314 then {
13281315 let cJ = bP(toBase58String(dr.transactionId), toBase58String(dP), bN, dr.caller)
13291316 let bZ = parseIntValue(cJ._9)
13301317 let cn = cJ._10
13311318 let gt = if (if (aD())
13321319 then true
13331320 else (bZ == p))
13341321 then throw(("Blocked: " + toString(bZ)))
13351322 else true
13361323 if ((gt == gt))
13371324 then {
13381325 let gu = invoke(aB, "burn", [bN], [AttachedPayment(dP, bN)])
13391326 if ((gu == gu))
13401327 then cn
13411328 else throw("Strict value is not equal to itself.")
13421329 }
13431330 else throw("Strict value is not equal to itself.")
13441331 }
13451332 else throw("Strict value is not equal to itself.")
13461333 }
13471334 else throw("Strict value is not equal to itself.")
13481335 }
13491336
13501337
13511338
13521339 @Callable(dr)
13531340 func unstakeAndGetOneTkn (gv,dR,dS) = {
13541341 let gp = if ((size(dr.payments) != 0))
13551342 then throw("No pmnts expd")
13561343 else true
13571344 if ((gp == gp))
13581345 then {
13591346 let bD = aG()
13601347 let gq = aK()
13611348 let dP = fromBase58String(bD[s])
13621349 let gr = valueOrErrorMessage(addressFromString(gq[z]), "Wr st addr")
13631350 let gs = invoke(gr, "unstake", [toBase58String(dP), gv], nil)
13641351 if ((gs == gs))
13651352 then {
13661353 let gw = dQ(dR, dS, [AttachedPayment(dP, gv)], dr.caller, dr.originCaller, dr.transactionId)
13671354 let cn = gw._1
13681355 let eb = gw._2
13691356 $Tuple2(cn, eb)
13701357 }
13711358 else throw("Strict value is not equal to itself.")
13721359 }
13731360 else throw("Strict value is not equal to itself.")
13741361 }
13751362
13761363
13771364
13781365 @Callable(dr)
1379-func putOneTknV2READONLY (bN,gx) = {
1366+func putOneTknV2WithBonusREADONLY (bN,gx) = {
13801367 let dz = aG()
13811368 let bV = dz[t]
13821369 let bW = dz[u]
13831370 let bU = dz[s]
13841371 let gy = gx
13851372 let fu = bN
13861373 let gz = bM(fu)
13871374 let fD = gz._1
13881375 let bO = gz._2
13891376 let gA = if ((gy == bV))
13901377 then $Tuple2(fD, 0)
13911378 else if ((gy == bW))
13921379 then $Tuple2(0, fD)
13931380 else throw("invalid payment")
13941381 let gB = gA._1
13951382 let gC = gA._2
13961383 let gD = be(bV)
13971384 let gE = be(bW)
13981385 let gF = (gD + gB)
13991386 let gG = (gD + gC)
14001387 let br = ek([toBigInt(gD), toBigInt(gE)])
14011388 let bq = ek([toBigInt(gF), toBigInt(gG)])
14021389 let gf = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(bU)), "invalid lp asset").quantity)
14031390 let gH = ((gf * (bq - br)) / br)
1404- $Tuple2(nil, toInt(gH))
1391+ $Tuple2(nil, $Tuple3(toInt(gH), bO, 0))
14051392 }
14061393
14071394
14081395
14091396 @Callable(dr)
14101397 func activate (gI,gJ) = if ((toString(dr.caller) != toString(aB)))
14111398 then throw("denied")
14121399 else $Tuple2([StringEntry(aa(), gI), StringEntry(ab(), gJ)], "success")
14131400
14141401
14151402
14161403 @Callable(dr)
14171404 func setS (gK,gt) = if ((toString(dr.caller) != ax(this, ad())))
14181405 then eX
14191406 else [StringEntry(gK, gt)]
14201407
14211408
14221409
14231410 @Callable(dr)
14241411 func setI (gK,gt) = if ((toString(dr.caller) != ax(this, ad())))
14251412 then eX
14261413 else [IntegerEntry(gK, gt)]
14271414
14281415
14291416
14301417 @Callable(dr)
14311418 func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aG())
14321419
14331420
14341421
14351422 @Callable(dr)
14361423 func getAccBalanceWrapperREADONLY (bf) = $Tuple2(nil, be(bf))
14371424
14381425
14391426
14401427 @Callable(dr)
14411428 func calcPricesWrapperREADONLY (bx,by,bC) = {
14421429 let gL = bB(bx, by, bC)
14431430 $Tuple2(nil, [toString(gL[0]), toString(gL[1]), toString(gL[2])])
14441431 }
14451432
14461433
14471434
14481435 @Callable(dr)
14491436 func fromX18WrapperREADONLY (H,gM) = $Tuple2(nil, G(parseBigIntValue(H), gM))
14501437
14511438
14521439
14531440 @Callable(dr)
14541441 func toX18WrapperREADONLY (E,F) = $Tuple2(nil, toString(D(E, F)))
14551442
14561443
14571444
14581445 @Callable(dr)
14591446 func calcPriceBigIntWrapperREADONLY (bh,bi) = $Tuple2(nil, toString(bg(parseBigIntValue(bh), parseBigIntValue(bi))))
14601447
14611448
14621449
14631450 @Callable(dr)
14641451 func estimatePutOperationWrapperREADONLY (bQ,bm,cp,cq,cr,cs,gN,ct,cu) = $Tuple2(nil, co(bQ, bm, cp, cq, cr, cs, gN, ct, cu, true, false, 0, ""))
14651452
14661453
14671454
14681455 @Callable(dr)
14691456 func estimateGetOperationWrapperREADONLY (bQ,gO,bS,gN) = {
14701457 let cJ = bP(bQ, gO, bS, addressFromStringValue(gN))
14711458 $Tuple2(nil, $Tuple10(cJ._1, cJ._2, cJ._3, cJ._4, cJ._5, cJ._6, cJ._7, toString(cJ._8), cJ._9, cJ._10))
14721459 }
14731460
14741461
14751462
14761463 @Callable(dr)
14771464 func getFeeREADONLY () = $Tuple2(nil, af)
14781465
14791466
14801467 @Verifier(gP)
14811468 func gQ () = {
14821469 let gR = {
14831470 let av = eV()
14841471 if ($isInstanceOf(av, "ByteVector"))
14851472 then {
14861473 let eZ = av
14871474 eZ
14881475 }
14891476 else if ($isInstanceOf(av, "Unit"))
14901477 then gP.senderPublicKey
14911478 else throw("Match error")
14921479 }
14931480 let av = gP
14941481 if ($isInstanceOf(av, "Order"))
14951482 then {
14961483 let de = av
14971484 let gS = aE()
14981485 let gT = dd(de)
14991486 let gU = sigVerify(de.bodyBytes, de.proofs[0], de.senderPublicKey)
15001487 let gV = sigVerify(de.bodyBytes, de.proofs[1], gS)
15011488 if (if (if (gT)
15021489 then gU
15031490 else false)
15041491 then gV
15051492 else false)
15061493 then true
15071494 else aq(gT, gU, gV)
15081495 }
15091496 else if ($isInstanceOf(av, "SetScriptTransaction"))
15101497 then {
15111498 let er = av
15121499 let gW = blake2b256(value(er.script))
15131500 let gX = fromBase64String(value(getString(aB, ao())))
15141501 let gY = scriptHash(this)
15151502 if (if ((gX == gW))
15161503 then (gY != gW)
15171504 else false)
15181505 then true
15191506 else sigVerify(gP.bodyBytes, gP.proofs[0], gR)
15201507 }
15211508 else sigVerify(gP.bodyBytes, gP.proofs[0], gR)
15221509 }
15231510

github/deemru/w8io/c3f4982 
123.14 ms