tx · B56NDiiu33fjTrhsLUhPDXh569UP8fdbH3k4jtdLbLMN

3NC28hSivrmsTUXaYD1x6L362J4ZpUnoTdB:  -0.01400000 Waves

2020.03.16 13:15 [911671] smart account 3NC28hSivrmsTUXaYD1x6L362J4ZpUnoTdB > SELF 0.00000000 Waves

{ "type": 13, "id": "B56NDiiu33fjTrhsLUhPDXh569UP8fdbH3k4jtdLbLMN", "fee": 1400000, "feeAssetId": null, "timestamp": 1584353740083, "version": 1, "sender": "3NC28hSivrmsTUXaYD1x6L362J4ZpUnoTdB", "senderPublicKey": "Gd5NihbWQoWuTnSvq25TuV2BYZG4U1e9KDqZn9zBPix7", "proofs": [ "3dotyeJ19bKav9bEEhpEXvPSfUD7x41c7eWWxFEeNqxQF48GAhBssohcQVRY3VNHBHEb8HKn638MGTvjrx8iZVuY" ], "script": "base64:AAIDAAAAAAAAACcIARIHCgUICAgICBIHCgUICAgICBIICgYICAgBCAgSBQoDCAgIEgAAAAAOAAAAAA9zdG9yYWdlVmVyaWZpZXIJAQAAAAdleHRyYWN0AAAAAQkBAAAAEWFkZHJlc3NGcm9tU3RyaW5nAAAAAQIAAAAjM04yczVSdGFIUEJlbkNzeDJFQ2NvRlJiWUh4M25vWmhYVzEAAAAABGJhbmsCAAAAIzNOMUU2dFhkZFJvVmFSZlE5ZFEzdmc1TGFXMmZzZDhIS3ViAAAAAA1hY2NlcHRlZFRva2VuAQAAACDopWq8yndC8nBhMjVKT0WDubke5ZlnF8Nx6tkLoQSt6wEAAAAKY2hlY2tFbnRyeQAAAAIAAAAGcHJlZml4AAAABHV1aWQEAAAAByRtYXRjaDAJAAQdAAAAAgUAAAAEdGhpcwkAASwAAAACBQAAAAZwcmVmaXgFAAAABHV1aWQDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABlN0cmluZwQAAAABYQUAAAAHJG1hdGNoMAUAAAABYQIAAAAETk9ORQEAAAAJY2hlY2tVVUlEAAAAAQAAAAR1dWlkBAAAAAckbWF0Y2gwCQAEHQAAAAIFAAAABHRoaXMFAAAABHV1aWQDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABlN0cmluZwQAAAABYQUAAAAHJG1hdGNoMAUAAAABYQIAAAAETk9ORQEAAAASY2hlY2tJZldoaXRlTGlzdGVkAAAAAQAAAA1jYWxsZXJBZGRyZXNzBAAAAAckbWF0Y2gwCQAEGgAAAAIFAAAABHRoaXMJAAEsAAAAAgIAAAARYWRkcl9XSElURUxJU1RFRF8FAAAADWNhbGxlckFkZHJlc3MDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAABYQUAAAAHJG1hdGNoMAUAAAABYQAAAAAAAAAAAAEAAAAIaXNBZHJlc3MAAAABAAAABGFkZHIDAwMJAAAAAAAAAgkAATEAAAABBQAAAARhZGRyAAAAAAAAAAAjCQAAAAAAAAIJAAEvAAAAAgUAAAAEYWRkcgAAAAAAAAAAAgIAAAACM1AHBgkAAAAAAAACCQABLwAAAAIFAAAABGFkZHIAAAAAAAAAAAICAAAAAjNOBgkAAAAAAAACCQABLwAAAAIFAAAABGFkZHIAAAAAAAAAAAICAAAAAjNNAQAAAAxjb3VudFBhcnRpZXMAAAACAAAAC2FjY3VtdWxhdG9yAAAABGFkZHIDCQAAZgAAAAIJAAExAAAAAQUAAAAEYWRkcgAAAAAAAAAAAAkAAGQAAAACBQAAAAthY2N1bXVsYXRvcgAAAAAAAAAAAQkAAGQAAAACBQAAAAthY2N1bXVsYXRvcgAAAAAAAAAAAAEAAAAUY2hlY2tJZlBlbmRpbmdUb1NpZ24AAAABAAAAA2tleQQAAAAHJG1hdGNoMAkABB0AAAACBQAAAAR0aGlzBQAAAANrZXkDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABlN0cmluZwQAAAABYQUAAAAHJG1hdGNoMAMJAAAAAAAAAgUAAAABYQIAAAAHUEVORElORwYHBwEAAAAOZ2V0VmFsdWVTdHJpbmcAAAABAAAABGpzb24JAAEvAAAAAgkAATAAAAACBQAAAARqc29uAAAAAAAAAAABCQEAAAAFdmFsdWUAAAABCQAEswAAAAIJAAEwAAAAAgUAAAAEanNvbgAAAAAAAAAAAQIAAAABIgEAAAAIZ2V0VmFsdWUAAAACAAAABGpzb24AAAADa2V5BAAAAAhrZXlJbmRleAkBAAAABXZhbHVlAAAAAQkABLMAAAACBQAAAARqc29uCQABLAAAAAIJAAEsAAAAAgIAAAABIgUAAAADa2V5AgAAAAIiOgQAAAAEZGF0YQkAATAAAAACBQAAAARqc29uCQAAZAAAAAIJAABkAAAAAgUAAAAIa2V5SW5kZXgJAAExAAAAAQUAAAADa2V5AAAAAAAAAAADBAAAAAlqc29uVmFsdWUJAQAAAA5nZXRWYWx1ZVN0cmluZwAAAAEFAAAABGRhdGEFAAAACWpzb25WYWx1ZQEAAAASZ2V0SnNvbkJlZm9yZVZhbHVlAAAAAgAAAARqc29uAAAAA2tleQQAAAAIa2V5SW5kZXgJAQAAAAV2YWx1ZQAAAAEJAASzAAAAAgUAAAAEanNvbgkAASwAAAACCQABLAAAAAICAAAAASIFAAAAA2tleQIAAAACIjoEAAAABGRhdGEJAAEvAAAAAgUAAAAEanNvbgkAAGQAAAACCQAAZAAAAAIFAAAACGtleUluZGV4CQABMQAAAAEFAAAAA2tleQAAAAAAAAAAAwUAAAAEZGF0YQEAAAARZ2V0SnNvbkFmdGVyVmFsdWUAAAACAAAABGpzb24AAAADa2V5BAAAAAhrZXlJbmRleAkBAAAABXZhbHVlAAAAAQkABLMAAAACBQAAAARqc29uCQABLAAAAAIJAAEsAAAAAgIAAAABIgUAAAADa2V5AgAAAAIiOgQAAAAEZGF0YQkBAAAACXRha2VSaWdodAAAAAIFAAAABGpzb24JAABlAAAAAgkAATEAAAABBQAAAARqc29uCQAAZAAAAAIJAABkAAAAAgkAAGQAAAACCQAAZAAAAAIFAAAACGtleUluZGV4CQABMQAAAAEFAAAAA2tleQAAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAgUAAAAEZGF0YQEAAAAIYXNTdHJpbmcAAAABAAAAAmJ2BAAAAAckbWF0Y2gwBQAAAAJidgMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAGU3RyaW5nBAAAAANidjAFAAAAByRtYXRjaDAFAAAAA2J2MAkAAAIAAAABAgAAACRTcG9uc29yZWQgUHVibGljIEtleSBTdHJpbmcgZXhwZWN0ZWQAAAAFAAAABmludm9rZQEAAAARZmlsZUNlcnRpZmljYXRpb24AAAAFAAAABGhhc2gAAAAFdGl0bGUAAAAEdXVpZAAAAARkYXRhAAAADHNpZ25lclB1YktleQQAAAACaWQJAQAAAAdleHRyYWN0AAAAAQgFAAAABmludm9rZQAAAA10cmFuc2FjdGlvbklkBAAAAAplbnRyeUV4aXN0CQEAAAAKY2hlY2tFbnRyeQAAAAIFAAAABGhhc2gFAAAABHV1aWQEAAAACXV1aWRFeGlzdAkBAAAACWNoZWNrVVVJRAAAAAEFAAAABHV1aWQEAAAADGNhbGxlcklzRGFwcAkAAAAAAAACBQAAAAR0aGlzCAUAAAAGaW52b2tlAAAABmNhbGxlcgQAAAANY2FsbGVyQWRkcmVzcwMFAAAADGNhbGxlcklzRGFwcAkABCUAAAABCQEAAAAUYWRkcmVzc0Zyb21QdWJsaWNLZXkAAAABCQACWQAAAAEFAAAADHNpZ25lclB1YktleQkAAlgAAAABCAgFAAAABmludm9rZQAAAAZjYWxsZXIAAAAFYnl0ZXMEAAAAFmNhbGxlcklzV2hpdGVMaXN0ZWROdW0JAQAAABJjaGVja0lmV2hpdGVMaXN0ZWQAAAABBQAAAA1jYWxsZXJBZGRyZXNzAwkBAAAAAiE9AAAAAgUAAAAKZW50cnlFeGlzdAIAAAAETk9ORQkAAAIAAAABAgAAABhUaGlzIGVudHJ5IGFscmVhZHkgZXhpc3QDCQEAAAACIT0AAAACBQAAAAl1dWlkRXhpc3QCAAAABE5PTkUJAAACAAAAAQIAAAAXVGhpcyB1dWlkIGFscmVhZHkgZXhpc3QDCQAAZgAAAAIJAAExAAAAAQUAAAAEdXVpZAAAAAAAAAAAJAkAAAIAAAABAgAAABBVdWlkIGlzIHRvbyBsb25nAwkAAGYAAAACCQABMQAAAAEFAAAABGhhc2gAAAAAAAAAAEAJAAACAAAAAQIAAAAQSGFzaCBpcyB0b28gbG9uZwMJAABmAAAAAgkAATEAAAABBQAAAAV0aXRsZQAAAAAAAAAAQAkAAAIAAAABAgAAABFUaXRsZSBpcyB0b28gbG9uZwMJAABmAAAAAgUAAAAWY2FsbGVySXNXaGl0ZUxpc3RlZE51bQAAAAAAAAAAAAkBAAAADFNjcmlwdFJlc3VsdAAAAAIJAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIFAAAABHV1aWQJAAJYAAAAAQUAAAACaWQJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAAEsAAAAAgUAAAAEaGFzaAUAAAAEdXVpZAkAAlgAAAABBQAAAAJpZAkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkAASwAAAACBQAAAAV0aXRsZQUAAAAEdXVpZAkAAlgAAAABBQAAAAJpZAkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkAASwAAAACAgAAABFhZGRyX1dISVRFTElTVEVEXwUAAAANY2FsbGVyQWRkcmVzcwkAAGUAAAACBQAAABZjYWxsZXJJc1doaXRlTGlzdGVkTnVtAAAAAAAAAAABCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAhkYXRhX2ZjXwkAAlgAAAABBQAAAAJpZAIAAAABXwUAAAANY2FsbGVyQWRkcmVzcwUAAAAEZGF0YQUAAAADbmlsCQEAAAALVHJhbnNmZXJTZXQAAAABCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMJAQAAABxAZXh0clVzZXIoYWRkcmVzc0Zyb21TdHJpbmcpAAAAAQUAAAANY2FsbGVyQWRkcmVzcwAAAAAAAAAAAAUAAAANYWNjZXB0ZWRUb2tlbgUAAAADbmlsAwkBAAAAASEAAAABBQAAAAxjYWxsZXJJc0RhcHAEAAAAB3BheW1lbnQJAQAAAAdleHRyYWN0AAAAAQgFAAAABmludm9rZQAAAAdwYXltZW50BAAAAAZhbW91bnQJAQAAAAdleHRyYWN0AAAAAQgFAAAAB3BheW1lbnQAAAAGYW1vdW50BAAAAA5wYXltZW50QXNzZXRJZAMJAQAAAAlpc0RlZmluZWQAAAABCAUAAAAHcGF5bWVudAAAAAdhc3NldElkCQEAAAAHZXh0cmFjdAAAAAEIBQAAAAdwYXltZW50AAAAB2Fzc2V0SWQJAAACAAAAAQIAAAAgV2F2ZXMgaXMgbm90IGFjY2VwdGVkIGFzIHBheW1lbnQEAAAADGN1cnJlbnRQcmljZQkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgUAAAAPc3RvcmFnZVZlcmlmaWVyCQABLAAAAAICAAAAEmNlcnRpZmljYXRpb25fZmVlXwkAAlgAAAABCQEAAAAHZXh0cmFjdAAAAAEFAAAADnBheW1lbnRBc3NldElkAwkBAAAAAiE9AAAAAgUAAAANYWNjZXB0ZWRUb2tlbgUAAAAOcGF5bWVudEFzc2V0SWQJAAACAAAAAQIAAAAoVGhpcyB0b2tlbiBpcyBub3QgYWNjZXB0ZWQgYXQgdGhlIG1vbWVudAMDCQEAAAACIT0AAAACBQAAAAZhbW91bnQFAAAADGN1cnJlbnRQcmljZQkAAGcAAAACAAAAAAAAAAAABQAAABZjYWxsZXJJc1doaXRlTGlzdGVkTnVtBwkAAAIAAAABAgAAABJUaGUgcHJpY2UgaXMgd3JvbmcJAQAAAAxTY3JpcHRSZXN1bHQAAAACCQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACBQAAAAR1dWlkCQACWAAAAAEFAAAAAmlkCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQABLAAAAAIFAAAABGhhc2gFAAAABHV1aWQJAAJYAAAAAQUAAAACaWQJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAAEsAAAAAgUAAAAFdGl0bGUFAAAABHV1aWQJAAJYAAAAAQUAAAACaWQJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAACGRhdGFfZmNfCQACWAAAAAEFAAAAAmlkAgAAAAFfBQAAAA1jYWxsZXJBZGRyZXNzBQAAAARkYXRhBQAAAANuaWwJAQAAAAtUcmFuc2ZlclNldAAAAAEJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAHEBleHRyVXNlcihhZGRyZXNzRnJvbVN0cmluZykAAAABBQAAAARiYW5rBQAAAAZhbW91bnQIBQAAAAdwYXltZW50AAAAB2Fzc2V0SWQFAAAAA25pbAkAAAIAAAABAgAAAB5Zb3UgYXJlIG5vdCBhbGxvd2VkIHRvIGRvIHRoYXQAAAAGaW52b2tlAQAAABJlbWFpbENlcnRpZmljYXRpb24AAAAFAAAACW1lc3NhZ2VpZAAAAAR1dWlkAAAABGRhdGEAAAAFdGl0bGUAAAAMc2lnbmVyUHViS2V5BAAAAAJpZAkBAAAAB2V4dHJhY3QAAAABCAUAAAAGaW52b2tlAAAADXRyYW5zYWN0aW9uSWQEAAAACmVudHJ5RXhpc3QJAQAAAApjaGVja0VudHJ5AAAAAgUAAAAJbWVzc2FnZWlkBQAAAAR1dWlkBAAAAAl1dWlkRXhpc3QJAQAAAAljaGVja1VVSUQAAAABBQAAAAR1dWlkBAAAAAxjYWxsZXJJc0RhcHAJAAAAAAAAAgUAAAAEdGhpcwgFAAAABmludm9rZQAAAAZjYWxsZXIEAAAADWNhbGxlckFkZHJlc3MDBQAAAAxjYWxsZXJJc0RhcHAJAAQlAAAAAQkBAAAAFGFkZHJlc3NGcm9tUHVibGljS2V5AAAAAQkAAlkAAAABBQAAAAxzaWduZXJQdWJLZXkJAAJYAAAAAQgIBQAAAAZpbnZva2UAAAAGY2FsbGVyAAAABWJ5dGVzBAAAABZjYWxsZXJJc1doaXRlTGlzdGVkTnVtCQEAAAASY2hlY2tJZldoaXRlTGlzdGVkAAAAAQUAAAANY2FsbGVyQWRkcmVzcwMJAQAAAAIhPQAAAAIFAAAACmVudHJ5RXhpc3QCAAAABE5PTkUJAAACAAAAAQIAAAAYVGhpcyBlbnRyeSBhbHJlYWR5IGV4aXN0AwkBAAAAAiE9AAAAAgUAAAAJdXVpZEV4aXN0AgAAAAROT05FCQAAAgAAAAECAAAAF1RoaXMgdXVpZCBhbHJlYWR5IGV4aXN0AwkAAGYAAAACCQABMQAAAAEFAAAABHV1aWQAAAAAAAAAACQJAAACAAAAAQIAAAAQVXVpZCBpcyB0b28gbG9uZwMJAABmAAAAAgkAATEAAAABBQAAAAltZXNzYWdlaWQAAAAAAAAAAEAJAAACAAAAAQIAAAAWTWVzc2FnZS1pZCBpcyB0b28gbG9uZwMJAABmAAAAAgkAATEAAAABBQAAAAV0aXRsZQAAAAAAAAAAQAkAAAIAAAABAgAAABFUaXRsZSBpcyB0b28gbG9uZwMJAABmAAAAAgUAAAAWY2FsbGVySXNXaGl0ZUxpc3RlZE51bQAAAAAAAAAAAAkBAAAADFNjcmlwdFJlc3VsdAAAAAIJAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIFAAAABHV1aWQJAAJYAAAAAQUAAAACaWQJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAAEsAAAAAgUAAAAJbWVzc2FnZWlkBQAAAAR1dWlkCQACWAAAAAEFAAAAAmlkCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQABLAAAAAIFAAAABXRpdGxlBQAAAAR1dWlkCQACWAAAAAEFAAAAAmlkCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQABLAAAAAICAAAAEWFkZHJfV0hJVEVMSVNURURfBQAAAA1jYWxsZXJBZGRyZXNzCQAAZQAAAAIFAAAAFmNhbGxlcklzV2hpdGVMaXN0ZWROdW0AAAAAAAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAACGRhdGFfZWNfCQACWAAAAAEFAAAAAmlkAgAAAAFfBQAAAA1jYWxsZXJBZGRyZXNzBQAAAARkYXRhBQAAAANuaWwJAQAAAAtUcmFuc2ZlclNldAAAAAEJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAHEBleHRyVXNlcihhZGRyZXNzRnJvbVN0cmluZykAAAABBQAAAA1jYWxsZXJBZGRyZXNzAAAAAAAAAAAABQAAAA1hY2NlcHRlZFRva2VuBQAAAANuaWwDCQEAAAABIQAAAAEFAAAADGNhbGxlcklzRGFwcAQAAAAHcGF5bWVudAkBAAAAB2V4dHJhY3QAAAABCAUAAAAGaW52b2tlAAAAB3BheW1lbnQEAAAABmFtb3VudAkBAAAAB2V4dHJhY3QAAAABCAUAAAAHcGF5bWVudAAAAAZhbW91bnQEAAAADnBheW1lbnRBc3NldElkAwkBAAAACWlzRGVmaW5lZAAAAAEIBQAAAAdwYXltZW50AAAAB2Fzc2V0SWQJAQAAAAdleHRyYWN0AAAAAQgFAAAAB3BheW1lbnQAAAAHYXNzZXRJZAkAAAIAAAABAgAAACBXYXZlcyBpcyBub3QgYWNjZXB0ZWQgYXMgcGF5bWVudAQAAAAMY3VycmVudFByaWNlCQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAA9zdG9yYWdlVmVyaWZpZXIJAAEsAAAAAgIAAAASY2VydGlmaWNhdGlvbl9mZWVfCQACWAAAAAEJAQAAAAdleHRyYWN0AAAAAQUAAAAOcGF5bWVudEFzc2V0SWQDCQEAAAACIT0AAAACBQAAAA1hY2NlcHRlZFRva2VuBQAAAA5wYXltZW50QXNzZXRJZAkAAAIAAAABAgAAAChUaGlzIHRva2VuIGlzIG5vdCBhY2NlcHRlZCBhdCB0aGUgbW9tZW50AwMJAQAAAAIhPQAAAAIFAAAABmFtb3VudAUAAAAMY3VycmVudFByaWNlCQAAZwAAAAIAAAAAAAAAAAAFAAAAFmNhbGxlcklzV2hpdGVMaXN0ZWROdW0HCQAAAgAAAAECAAAAElRoZSBwcmljZSBpcyB3cm9uZwkBAAAADFNjcmlwdFJlc3VsdAAAAAIJAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIFAAAABHV1aWQJAAJYAAAAAQUAAAACaWQJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAAEsAAAAAgUAAAAJbWVzc2FnZWlkBQAAAAR1dWlkCQACWAAAAAEFAAAAAmlkCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQABLAAAAAIFAAAABXRpdGxlBQAAAAR1dWlkCQACWAAAAAEFAAAAAmlkCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAhkYXRhX2VjXwkAAlgAAAABBQAAAAJpZAIAAAABXwUAAAANY2FsbGVyQWRkcmVzcwUAAAAEZGF0YQUAAAADbmlsCQEAAAALVHJhbnNmZXJTZXQAAAABCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMJAQAAABxAZXh0clVzZXIoYWRkcmVzc0Zyb21TdHJpbmcpAAAAAQUAAAAEYmFuawUAAAAGYW1vdW50CAUAAAAHcGF5bWVudAAAAAdhc3NldElkBQAAAANuaWwJAAACAAAAAQIAAAAeWW91IGFyZSBub3QgYWxsb3dlZCB0byBkbyB0aGF0AAAABmludm9rZQEAAAAPY3JlYXRlQWdyZWVtZW50AAAABgAAAARoYXNoAAAABXRpdGxlAAAACWFkZHJlc3NlcwAAAANudW0AAAAMc2lnbmVyUHViS2V5AAAABHV1aWQEAAAAAmlkCQEAAAAHZXh0cmFjdAAAAAEIBQAAAAZpbnZva2UAAAANdHJhbnNhY3Rpb25JZAQAAAAKZW50cnlFeGlzdAkBAAAACmNoZWNrRW50cnkAAAACBQAAAARoYXNoBQAAAAR1dWlkBAAAAAl1dWlkRXhpc3QJAQAAAAljaGVja1VVSUQAAAABBQAAAAR1dWlkBAAAAAxjYWxsZXJJc0RhcHAJAAAAAAAAAgUAAAAEdGhpcwgFAAAABmludm9rZQAAAAZjYWxsZXIEAAAADWNhbGxlckFkZHJlc3MDBQAAAAxjYWxsZXJJc0RhcHAJAAQlAAAAAQkBAAAAFGFkZHJlc3NGcm9tUHVibGljS2V5AAAAAQkAAlkAAAABBQAAAAxzaWduZXJQdWJLZXkJAAJYAAAAAQgIBQAAAAZpbnZva2UAAAAGY2FsbGVyAAAABWJ5dGVzBAAAABZjYWxsZXJJc1doaXRlTGlzdGVkTnVtCQEAAAASY2hlY2tJZldoaXRlTGlzdGVkAAAAAQUAAAANY2FsbGVyQWRkcmVzcwQAAAAESlNPTgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQEAAAASZ2V0SnNvbkJlZm9yZVZhbHVlAAAAAgUAAAAJYWRkcmVzc2VzAgAAAAdjcmVhdG9yAgAAAAEiBQAAAA1jYWxsZXJBZGRyZXNzAgAAAAEiCQEAAAARZ2V0SnNvbkFmdGVyVmFsdWUAAAACBQAAAAlhZGRyZXNzZXMCAAAAB2NyZWF0b3IEAAAADmFkZHJlc3Nlc0FycmF5CQAETAAAAAIJAQAAAAhnZXRWYWx1ZQAAAAIFAAAACWFkZHJlc3NlcwIAAAAIYWRkcmVzczEJAARMAAAAAgkBAAAACGdldFZhbHVlAAAAAgUAAAAJYWRkcmVzc2VzAgAAAAhhZGRyZXNzMgkABEwAAAACCQEAAAAIZ2V0VmFsdWUAAAACBQAAAAlhZGRyZXNzZXMCAAAACGFkZHJlc3MzCQAETAAAAAIJAQAAAAhnZXRWYWx1ZQAAAAIFAAAACWFkZHJlc3NlcwIAAAAIYWRkcmVzczQJAARMAAAAAgkBAAAACGdldFZhbHVlAAAAAgUAAAAJYWRkcmVzc2VzAgAAAAhhZGRyZXNzNQkABEwAAAACCQEAAAAIZ2V0VmFsdWUAAAACBQAAAAlhZGRyZXNzZXMCAAAACGFkZHJlc3M2BQAAAANuaWwEAAAADnRvdGFsQWRkcmVzc2VzBQAAAANudW0EAAAAD2dsb2JhbERhdGFUaXRsZQkBAAAACURhdGFFbnRyeQAAAAIJAAEsAAAAAgUAAAAFdGl0bGUFAAAABHV1aWQJAAJYAAAAAQUAAAACaWQEAAAADmdsb2JhbERhdGFIYXNoCQEAAAAJRGF0YUVudHJ5AAAAAgkAASwAAAACBQAAAARoYXNoBQAAAAR1dWlkCQACWAAAAAEFAAAAAmlkBAAAAA5nbG9iYWxEYXRhSnNvbgkBAAAACURhdGFFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAACGRhdGFfTUFfCQACWAAAAAEFAAAAAmlkAgAAAAFfBQAAAA1jYWxsZXJBZGRyZXNzBQAAAARKU09OBAAAAA9nbG9iYWxEYXRhT3duZXIJAQAAAAlEYXRhRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgUAAAANY2FsbGVyQWRkcmVzcwIAAAAEX01BXwkAAlgAAAABBQAAAAJpZAkAASwAAAACAgAAAAdTSUdORURfCQACWAAAAAEFAAAAAmlkBAAAAA9kYXRhV2hpdGVMaXN0ZWQJAQAAAAlEYXRhRW50cnkAAAACCQABLAAAAAICAAAAEWFkZHJfV0hJVEVMSVNURURfBQAAAA1jYWxsZXJBZGRyZXNzCQAAZQAAAAIFAAAAFmNhbGxlcklzV2hpdGVMaXN0ZWROdW0JAABkAAAAAgUAAAAOdG90YWxBZGRyZXNzZXMAAAAAAAAAAAEDCQEAAAACIT0AAAACBQAAAAplbnRyeUV4aXN0AgAAAAROT05FCQAAAgAAAAECAAAAGFRoaXMgZW50cnkgYWxyZWFkeSBleGlzdAMJAQAAAAIhPQAAAAIFAAAACXV1aWRFeGlzdAIAAAAETk9ORQkAAAIAAAABAgAAABdUaGlzIHV1aWQgYWxyZWFkeSBleGlzdAMJAABmAAAAAgkAATEAAAABBQAAAAR1dWlkAAAAAAAAAAAkCQAAAgAAAAECAAAAEFV1aWQgaXMgdG9vIGxvbmcDCQAAZgAAAAIJAAExAAAAAQUAAAAEaGFzaAAAAAAAAAAAQAkAAAIAAAABAgAAABZNZXNzYWdlLWlkIGlzIHRvbyBsb25nAwkAAGYAAAACCQABMQAAAAEFAAAABXRpdGxlAAAAAAAAAABACQAAAgAAAAECAAAAEVRpdGxlIGlzIHRvbyBsb25nAwkAAGYAAAACBQAAABZjYWxsZXJJc1doaXRlTGlzdGVkTnVtAAAAAAAAAAAAAwkAAGYAAAACCQAAZAAAAAIFAAAADnRvdGFsQWRkcmVzc2VzAAAAAAAAAAABBQAAABZjYWxsZXJJc1doaXRlTGlzdGVkTnVtCQAAAgAAAAECAAAAKllvdSBkb24ndCBoYXZlIGVub3VnaCBjZXJ0aWZpY2F0aW9uIGNyZWRpdAMJAAAAAAAAAgUAAAAOdG90YWxBZGRyZXNzZXMAAAAAAAAAAAYJAQAAAAxTY3JpcHRSZXN1bHQAAAACCQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIFAAAAD2dsb2JhbERhdGFUaXRsZQkABEwAAAACBQAAAA5nbG9iYWxEYXRhSGFzaAkABEwAAAACBQAAAA5nbG9iYWxEYXRhSnNvbgkABEwAAAACBQAAAA9nbG9iYWxEYXRhT3duZXIJAARMAAAAAgUAAAAPZGF0YVdoaXRlTGlzdGVkCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgkAAZEAAAACBQAAAA5hZGRyZXNzZXNBcnJheQAAAAAAAAAAAAIAAAAEX01BXwkAAlgAAAABBQAAAAJpZAIAAAAHUEVORElORwkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkAASwAAAACCQABLAAAAAIJAAGRAAAAAgUAAAAOYWRkcmVzc2VzQXJyYXkAAAAAAAAAAAECAAAABF9NQV8JAAJYAAAAAQUAAAACaWQCAAAAB1BFTkRJTkcJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACCQABkQAAAAIFAAAADmFkZHJlc3Nlc0FycmF5AAAAAAAAAAACAgAAAARfTUFfCQACWAAAAAEFAAAAAmlkAgAAAAdQRU5ESU5HCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgkAAZEAAAACBQAAAA5hZGRyZXNzZXNBcnJheQAAAAAAAAAAAwIAAAAEX01BXwkAAlgAAAABBQAAAAJpZAIAAAAHUEVORElORwkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkAASwAAAACCQABLAAAAAIJAAGRAAAAAgUAAAAOYWRkcmVzc2VzQXJyYXkAAAAAAAAAAAQCAAAABF9NQV8JAAJYAAAAAQUAAAACaWQCAAAAB1BFTkRJTkcJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACCQABkQAAAAIFAAAADmFkZHJlc3Nlc0FycmF5AAAAAAAAAAAFAgAAAARfTUFfCQACWAAAAAEFAAAAAmlkAgAAAAdQRU5ESU5HBQAAAANuaWwJAQAAAAtUcmFuc2ZlclNldAAAAAEJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAHEBleHRyVXNlcihhZGRyZXNzRnJvbVN0cmluZykAAAABBQAAAA1jYWxsZXJBZGRyZXNzAAAAAAAAAAAABQAAAA1hY2NlcHRlZFRva2VuCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMJAQAAABxAZXh0clVzZXIoYWRkcmVzc0Zyb21TdHJpbmcpAAAAAQkAAZEAAAACBQAAAA5hZGRyZXNzZXNBcnJheQAAAAAAAAAAAAAAAAAAAAAAAAUAAAANYWNjZXB0ZWRUb2tlbgkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAAcQGV4dHJVc2VyKGFkZHJlc3NGcm9tU3RyaW5nKQAAAAEJAAGRAAAAAgUAAAAOYWRkcmVzc2VzQXJyYXkAAAAAAAAAAAEAAAAAAAAAAAAFAAAADWFjY2VwdGVkVG9rZW4JAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAHEBleHRyVXNlcihhZGRyZXNzRnJvbVN0cmluZykAAAABCQABkQAAAAIFAAAADmFkZHJlc3Nlc0FycmF5AAAAAAAAAAACAAAAAAAAAAAABQAAAA1hY2NlcHRlZFRva2VuCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMJAQAAABxAZXh0clVzZXIoYWRkcmVzc0Zyb21TdHJpbmcpAAAAAQkAAZEAAAACBQAAAA5hZGRyZXNzZXNBcnJheQAAAAAAAAAAAwAAAAAAAAAAAAUAAAANYWNjZXB0ZWRUb2tlbgkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAAcQGV4dHJVc2VyKGFkZHJlc3NGcm9tU3RyaW5nKQAAAAEJAAGRAAAAAgUAAAAOYWRkcmVzc2VzQXJyYXkAAAAAAAAAAAQAAAAAAAAAAAAFAAAADWFjY2VwdGVkVG9rZW4JAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAHEBleHRyVXNlcihhZGRyZXNzRnJvbVN0cmluZykAAAABCQABkQAAAAIFAAAADmFkZHJlc3Nlc0FycmF5AAAAAAAAAAAFAAAAAAAAAAAABQAAAA1hY2NlcHRlZFRva2VuBQAAAANuaWwDCQAAAAAAAAIFAAAADnRvdGFsQWRkcmVzc2VzAAAAAAAAAAAFCQEAAAAMU2NyaXB0UmVzdWx0AAAAAgkBAAAACFdyaXRlU2V0AAAAAQkABEwAAAACBQAAAA9nbG9iYWxEYXRhVGl0bGUJAARMAAAAAgUAAAAOZ2xvYmFsRGF0YUhhc2gJAARMAAAAAgUAAAAOZ2xvYmFsRGF0YUpzb24JAARMAAAAAgUAAAAPZ2xvYmFsRGF0YU93bmVyCQAETAAAAAIFAAAAD2RhdGFXaGl0ZUxpc3RlZAkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkAASwAAAACCQABLAAAAAIJAAGRAAAAAgUAAAAOYWRkcmVzc2VzQXJyYXkAAAAAAAAAAAACAAAABF9NQV8JAAJYAAAAAQUAAAACaWQCAAAAB1BFTkRJTkcJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACCQABkQAAAAIFAAAADmFkZHJlc3Nlc0FycmF5AAAAAAAAAAABAgAAAARfTUFfCQACWAAAAAEFAAAAAmlkAgAAAAdQRU5ESU5HCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgkAAZEAAAACBQAAAA5hZGRyZXNzZXNBcnJheQAAAAAAAAAAAgIAAAAEX01BXwkAAlgAAAABBQAAAAJpZAIAAAAHUEVORElORwkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkAASwAAAACCQABLAAAAAIJAAGRAAAAAgUAAAAOYWRkcmVzc2VzQXJyYXkAAAAAAAAAAAMCAAAABF9NQV8JAAJYAAAAAQUAAAACaWQCAAAAB1BFTkRJTkcJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACCQABkQAAAAIFAAAADmFkZHJlc3Nlc0FycmF5AAAAAAAAAAAEAgAAAARfTUFfCQACWAAAAAEFAAAAAmlkAgAAAAdQRU5ESU5HBQAAAANuaWwJAQAAAAtUcmFuc2ZlclNldAAAAAEJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAHEBleHRyVXNlcihhZGRyZXNzRnJvbVN0cmluZykAAAABBQAAAA1jYWxsZXJBZGRyZXNzAAAAAAAAAAAABQAAAA1hY2NlcHRlZFRva2VuCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMJAQAAABxAZXh0clVzZXIoYWRkcmVzc0Zyb21TdHJpbmcpAAAAAQkAAZEAAAACBQAAAA5hZGRyZXNzZXNBcnJheQAAAAAAAAAAAAAAAAAAAAAAAAUAAAANYWNjZXB0ZWRUb2tlbgkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAAcQGV4dHJVc2VyKGFkZHJlc3NGcm9tU3RyaW5nKQAAAAEJAAGRAAAAAgUAAAAOYWRkcmVzc2VzQXJyYXkAAAAAAAAAAAEAAAAAAAAAAAAFAAAADWFjY2VwdGVkVG9rZW4JAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAHEBleHRyVXNlcihhZGRyZXNzRnJvbVN0cmluZykAAAABCQABkQAAAAIFAAAADmFkZHJlc3Nlc0FycmF5AAAAAAAAAAACAAAAAAAAAAAABQAAAA1hY2NlcHRlZFRva2VuCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMJAQAAABxAZXh0clVzZXIoYWRkcmVzc0Zyb21TdHJpbmcpAAAAAQkAAZEAAAACBQAAAA5hZGRyZXNzZXNBcnJheQAAAAAAAAAAAwAAAAAAAAAAAAUAAAANYWNjZXB0ZWRUb2tlbgkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAAcQGV4dHJVc2VyKGFkZHJlc3NGcm9tU3RyaW5nKQAAAAEJAAGRAAAAAgUAAAAOYWRkcmVzc2VzQXJyYXkAAAAAAAAAAAQAAAAAAAAAAAAFAAAADWFjY2VwdGVkVG9rZW4FAAAAA25pbAMJAAAAAAAAAgUAAAAOdG90YWxBZGRyZXNzZXMAAAAAAAAAAAQJAQAAAAxTY3JpcHRSZXN1bHQAAAACCQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIFAAAAD2dsb2JhbERhdGFUaXRsZQkABEwAAAACBQAAAA5nbG9iYWxEYXRhSGFzaAkABEwAAAACBQAAAA5nbG9iYWxEYXRhSnNvbgkABEwAAAACBQAAAA9nbG9iYWxEYXRhT3duZXIJAARMAAAAAgUAAAAPZGF0YVdoaXRlTGlzdGVkCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgkAAZEAAAACBQAAAA5hZGRyZXNzZXNBcnJheQAAAAAAAAAAAAIAAAAEX01BXwkAAlgAAAABBQAAAAJpZAIAAAAHUEVORElORwkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkAASwAAAACCQABLAAAAAIJAAGRAAAAAgUAAAAOYWRkcmVzc2VzQXJyYXkAAAAAAAAAAAECAAAABF9NQV8JAAJYAAAAAQUAAAACaWQCAAAAB1BFTkRJTkcJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACCQABkQAAAAIFAAAADmFkZHJlc3Nlc0FycmF5AAAAAAAAAAACAgAAAARfTUFfCQACWAAAAAEFAAAAAmlkAgAAAAdQRU5ESU5HCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgkAAZEAAAACBQAAAA5hZGRyZXNzZXNBcnJheQAAAAAAAAAAAwIAAAAEX01BXwkAAlgAAAABBQAAAAJpZAIAAAAHUEVORElORwUAAAADbmlsCQEAAAALVHJhbnNmZXJTZXQAAAABCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMJAQAAABxAZXh0clVzZXIoYWRkcmVzc0Zyb21TdHJpbmcpAAAAAQUAAAANY2FsbGVyQWRkcmVzcwAAAAAAAAAAAAUAAAANYWNjZXB0ZWRUb2tlbgkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAAcQGV4dHJVc2VyKGFkZHJlc3NGcm9tU3RyaW5nKQAAAAEJAAGRAAAAAgUAAAAOYWRkcmVzc2VzQXJyYXkAAAAAAAAAAAAAAAAAAAAAAAAFAAAADWFjY2VwdGVkVG9rZW4JAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAHEBleHRyVXNlcihhZGRyZXNzRnJvbVN0cmluZykAAAABCQABkQAAAAIFAAAADmFkZHJlc3Nlc0FycmF5AAAAAAAAAAABAAAAAAAAAAAABQAAAA1hY2NlcHRlZFRva2VuCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMJAQAAABxAZXh0clVzZXIoYWRkcmVzc0Zyb21TdHJpbmcpAAAAAQkAAZEAAAACBQAAAA5hZGRyZXNzZXNBcnJheQAAAAAAAAAAAgAAAAAAAAAAAAUAAAANYWNjZXB0ZWRUb2tlbgkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAAcQGV4dHJVc2VyKGFkZHJlc3NGcm9tU3RyaW5nKQAAAAEJAAGRAAAAAgUAAAAOYWRkcmVzc2VzQXJyYXkAAAAAAAAAAAMAAAAAAAAAAAAFAAAADWFjY2VwdGVkVG9rZW4FAAAAA25pbAMJAAAAAAAAAgUAAAAOdG90YWxBZGRyZXNzZXMAAAAAAAAAAAMJAQAAAAxTY3JpcHRSZXN1bHQAAAACCQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIFAAAAD2dsb2JhbERhdGFUaXRsZQkABEwAAAACBQAAAA5nbG9iYWxEYXRhSGFzaAkABEwAAAACBQAAAA5nbG9iYWxEYXRhSnNvbgkABEwAAAACBQAAAA9nbG9iYWxEYXRhT3duZXIJAARMAAAAAgUAAAAPZGF0YVdoaXRlTGlzdGVkCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgkAAZEAAAACBQAAAA5hZGRyZXNzZXNBcnJheQAAAAAAAAAAAAIAAAAEX01BXwkAAlgAAAABBQAAAAJpZAIAAAAHUEVORElORwkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkAASwAAAACCQABLAAAAAIJAAGRAAAAAgUAAAAOYWRkcmVzc2VzQXJyYXkAAAAAAAAAAAECAAAABF9NQV8JAAJYAAAAAQUAAAACaWQCAAAAB1BFTkRJTkcJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACCQABkQAAAAIFAAAADmFkZHJlc3Nlc0FycmF5AAAAAAAAAAACAgAAAARfTUFfCQACWAAAAAEFAAAAAmlkAgAAAAdQRU5ESU5HBQAAAANuaWwJAQAAAAtUcmFuc2ZlclNldAAAAAEJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAHEBleHRyVXNlcihhZGRyZXNzRnJvbVN0cmluZykAAAABBQAAAA1jYWxsZXJBZGRyZXNzAAAAAAAAAAAABQAAAA1hY2NlcHRlZFRva2VuCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMJAQAAABxAZXh0clVzZXIoYWRkcmVzc0Zyb21TdHJpbmcpAAAAAQkAAZEAAAACBQAAAA5hZGRyZXNzZXNBcnJheQAAAAAAAAAAAAAAAAAAAAAAAAUAAAANYWNjZXB0ZWRUb2tlbgkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAAcQGV4dHJVc2VyKGFkZHJlc3NGcm9tU3RyaW5nKQAAAAEJAAGRAAAAAgUAAAAOYWRkcmVzc2VzQXJyYXkAAAAAAAAAAAEAAAAAAAAAAAAFAAAADWFjY2VwdGVkVG9rZW4JAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAHEBleHRyVXNlcihhZGRyZXNzRnJvbVN0cmluZykAAAABCQABkQAAAAIFAAAADmFkZHJlc3Nlc0FycmF5AAAAAAAAAAACAAAAAAAAAAAABQAAAA1hY2NlcHRlZFRva2VuBQAAAANuaWwDCQAAAAAAAAIFAAAADnRvdGFsQWRkcmVzc2VzAAAAAAAAAAACCQEAAAAMU2NyaXB0UmVzdWx0AAAAAgkBAAAACFdyaXRlU2V0AAAAAQkABEwAAAACBQAAAA9nbG9iYWxEYXRhVGl0bGUJAARMAAAAAgUAAAAOZ2xvYmFsRGF0YUhhc2gJAARMAAAAAgUAAAAOZ2xvYmFsRGF0YUpzb24JAARMAAAAAgUAAAAPZ2xvYmFsRGF0YU93bmVyCQAETAAAAAIFAAAAD2RhdGFXaGl0ZUxpc3RlZAkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkAASwAAAACCQABLAAAAAIJAAGRAAAAAgUAAAAOYWRkcmVzc2VzQXJyYXkAAAAAAAAAAAACAAAABF9NQV8JAAJYAAAAAQUAAAACaWQCAAAAB1BFTkRJTkcJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACCQABkQAAAAIFAAAADmFkZHJlc3Nlc0FycmF5AAAAAAAAAAABAgAAAARfTUFfCQACWAAAAAEFAAAAAmlkAgAAAAdQRU5ESU5HBQAAAANuaWwJAQAAAAtUcmFuc2ZlclNldAAAAAEJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAHEBleHRyVXNlcihhZGRyZXNzRnJvbVN0cmluZykAAAABBQAAAA1jYWxsZXJBZGRyZXNzAAAAAAAAAAAABQAAAA1hY2NlcHRlZFRva2VuCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMJAQAAABxAZXh0clVzZXIoYWRkcmVzc0Zyb21TdHJpbmcpAAAAAQkAAZEAAAACBQAAAA5hZGRyZXNzZXNBcnJheQAAAAAAAAAAAAAAAAAAAAAAAAUAAAANYWNjZXB0ZWRUb2tlbgkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAAcQGV4dHJVc2VyKGFkZHJlc3NGcm9tU3RyaW5nKQAAAAEJAAGRAAAAAgUAAAAOYWRkcmVzc2VzQXJyYXkAAAAAAAAAAAEAAAAAAAAAAAAFAAAADWFjY2VwdGVkVG9rZW4FAAAAA25pbAMJAAAAAAAAAgUAAAAOdG90YWxBZGRyZXNzZXMAAAAAAAAAAAEJAQAAAAxTY3JpcHRSZXN1bHQAAAACCQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIFAAAAD2dsb2JhbERhdGFUaXRsZQkABEwAAAACBQAAAA5nbG9iYWxEYXRhSGFzaAkABEwAAAACBQAAAA5nbG9iYWxEYXRhSnNvbgkABEwAAAACBQAAAA9nbG9iYWxEYXRhT3duZXIJAARMAAAAAgUAAAAPZGF0YVdoaXRlTGlzdGVkCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgkAAZEAAAACBQAAAA5hZGRyZXNzZXNBcnJheQAAAAAAAAAAAAIAAAAEX01BXwkAAlgAAAABBQAAAAJpZAIAAAAHUEVORElORwUAAAADbmlsCQEAAAALVHJhbnNmZXJTZXQAAAABCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMJAQAAABxAZXh0clVzZXIoYWRkcmVzc0Zyb21TdHJpbmcpAAAAAQUAAAANY2FsbGVyQWRkcmVzcwAAAAAAAAAAAAUAAAANYWNjZXB0ZWRUb2tlbgkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAAcQGV4dHJVc2VyKGFkZHJlc3NGcm9tU3RyaW5nKQAAAAEJAAGRAAAAAgUAAAAOYWRkcmVzc2VzQXJyYXkAAAAAAAAAAAAAAAAAAAAAAAAFAAAADWFjY2VwdGVkVG9rZW4FAAAAA25pbAkAAAIAAAABAgAAABxXcm9uZyBudW1iZXIgb2YgcGFydGljaXBhbnRzAwkBAAAAASEAAAABBQAAAAxjYWxsZXJJc0RhcHAEAAAAB3BheW1lbnQJAQAAAAdleHRyYWN0AAAAAQgFAAAABmludm9rZQAAAAdwYXltZW50BAAAAAZhbW91bnQDCQEAAAAJaXNEZWZpbmVkAAAAAQgFAAAAB3BheW1lbnQAAAAGYW1vdW50CQEAAAAHZXh0cmFjdAAAAAEIBQAAAAdwYXltZW50AAAABmFtb3VudAAAAAAAAAAAAAQAAAAOcGF5bWVudEFzc2V0SWQDCQEAAAAJaXNEZWZpbmVkAAAAAQgFAAAAB3BheW1lbnQAAAAHYXNzZXRJZAkBAAAAB2V4dHJhY3QAAAABCAUAAAAHcGF5bWVudAAAAAdhc3NldElkBQAAAA1hY2NlcHRlZFRva2VuBAAAAAxjdXJyZW50UHJpY2UJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIFAAAAD3N0b3JhZ2VWZXJpZmllcgkAASwAAAACAgAAABJjZXJ0aWZpY2F0aW9uX2ZlZV8JAAJYAAAAAQkBAAAAB2V4dHJhY3QAAAABBQAAAA5wYXltZW50QXNzZXRJZAMJAABmAAAAAgkAAGgAAAACBQAAAAxjdXJyZW50UHJpY2UJAABkAAAAAgUAAAAOdG90YWxBZGRyZXNzZXMAAAAAAAAAAAEFAAAABmFtb3VudAkAAAIAAAABCQABLAAAAAICAAAAIVRoZSBwcmljZSBpcyB3cm9uZywgaXQgc2hvdWxkIGJlIAkAAaQAAAABCQAAaAAAAAIFAAAADGN1cnJlbnRQcmljZQkAAGQAAAACBQAAAA50b3RhbEFkZHJlc3NlcwAAAAAAAAAAAQMJAAAAAAAAAgUAAAAOdG90YWxBZGRyZXNzZXMAAAAAAAAAAAYJAQAAAAxTY3JpcHRSZXN1bHQAAAACCQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIFAAAAD2dsb2JhbERhdGFUaXRsZQkABEwAAAACBQAAAA5nbG9iYWxEYXRhSGFzaAkABEwAAAACBQAAAA5nbG9iYWxEYXRhSnNvbgkABEwAAAACBQAAAA9nbG9iYWxEYXRhT3duZXIJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACCQABkQAAAAIFAAAADmFkZHJlc3Nlc0FycmF5AAAAAAAAAAAAAgAAAARfTUFfCQACWAAAAAEFAAAAAmlkAgAAAAdQRU5ESU5HCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgkAAZEAAAACBQAAAA5hZGRyZXNzZXNBcnJheQAAAAAAAAAAAQIAAAAEX01BXwkAAlgAAAABBQAAAAJpZAIAAAAHUEVORElORwkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkAASwAAAACCQABLAAAAAIJAAGRAAAAAgUAAAAOYWRkcmVzc2VzQXJyYXkAAAAAAAAAAAICAAAABF9NQV8JAAJYAAAAAQUAAAACaWQCAAAAB1BFTkRJTkcJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACCQABkQAAAAIFAAAADmFkZHJlc3Nlc0FycmF5AAAAAAAAAAADAgAAAARfTUFfCQACWAAAAAEFAAAAAmlkAgAAAAdQRU5ESU5HCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgkAAZEAAAACBQAAAA5hZGRyZXNzZXNBcnJheQAAAAAAAAAABAIAAAAEX01BXwkAAlgAAAABBQAAAAJpZAIAAAAHUEVORElORwkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkAASwAAAACCQABLAAAAAIJAAGRAAAAAgUAAAAOYWRkcmVzc2VzQXJyYXkAAAAAAAAAAAUCAAAABF9NQV8JAAJYAAAAAQUAAAACaWQCAAAAB1BFTkRJTkcFAAAAA25pbAkBAAAAC1RyYW5zZmVyU2V0AAAAAQkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAAcQGV4dHJVc2VyKGFkZHJlc3NGcm9tU3RyaW5nKQAAAAEFAAAABGJhbmsFAAAABmFtb3VudAUAAAANYWNjZXB0ZWRUb2tlbgkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAAcQGV4dHJVc2VyKGFkZHJlc3NGcm9tU3RyaW5nKQAAAAEJAAGRAAAAAgUAAAAOYWRkcmVzc2VzQXJyYXkAAAAAAAAAAAAAAAAAAAAAAAAFAAAADWFjY2VwdGVkVG9rZW4JAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAHEBleHRyVXNlcihhZGRyZXNzRnJvbVN0cmluZykAAAABCQABkQAAAAIFAAAADmFkZHJlc3Nlc0FycmF5AAAAAAAAAAABAAAAAAAAAAAABQAAAA1hY2NlcHRlZFRva2VuCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMJAQAAABxAZXh0clVzZXIoYWRkcmVzc0Zyb21TdHJpbmcpAAAAAQkAAZEAAAACBQAAAA5hZGRyZXNzZXNBcnJheQAAAAAAAAAAAgAAAAAAAAAAAAUAAAANYWNjZXB0ZWRUb2tlbgkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAAcQGV4dHJVc2VyKGFkZHJlc3NGcm9tU3RyaW5nKQAAAAEJAAGRAAAAAgUAAAAOYWRkcmVzc2VzQXJyYXkAAAAAAAAAAAMAAAAAAAAAAAAFAAAADWFjY2VwdGVkVG9rZW4JAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAHEBleHRyVXNlcihhZGRyZXNzRnJvbVN0cmluZykAAAABCQABkQAAAAIFAAAADmFkZHJlc3Nlc0FycmF5AAAAAAAAAAAEAAAAAAAAAAAABQAAAA1hY2NlcHRlZFRva2VuCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMJAQAAABxAZXh0clVzZXIoYWRkcmVzc0Zyb21TdHJpbmcpAAAAAQkAAZEAAAACBQAAAA5hZGRyZXNzZXNBcnJheQAAAAAAAAAABQAAAAAAAAAAAAUAAAANYWNjZXB0ZWRUb2tlbgUAAAADbmlsAwkAAAAAAAACBQAAAA50b3RhbEFkZHJlc3NlcwAAAAAAAAAABQkBAAAADFNjcmlwdFJlc3VsdAAAAAIJAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgUAAAAPZ2xvYmFsRGF0YVRpdGxlCQAETAAAAAIFAAAADmdsb2JhbERhdGFIYXNoCQAETAAAAAIFAAAADmdsb2JhbERhdGFKc29uCQAETAAAAAIFAAAAD2dsb2JhbERhdGFPd25lcgkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkAASwAAAACCQABLAAAAAIJAAGRAAAAAgUAAAAOYWRkcmVzc2VzQXJyYXkAAAAAAAAAAAACAAAABF9NQV8JAAJYAAAAAQUAAAACaWQCAAAAB1BFTkRJTkcJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACCQABkQAAAAIFAAAADmFkZHJlc3Nlc0FycmF5AAAAAAAAAAABAgAAAARfTUFfCQACWAAAAAEFAAAAAmlkAgAAAAdQRU5ESU5HCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgkAAZEAAAACBQAAAA5hZGRyZXNzZXNBcnJheQAAAAAAAAAAAgIAAAAEX01BXwkAAlgAAAABBQAAAAJpZAIAAAAHUEVORElORwkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkAASwAAAACCQABLAAAAAIJAAGRAAAAAgUAAAAOYWRkcmVzc2VzQXJyYXkAAAAAAAAAAAMCAAAABF9NQV8JAAJYAAAAAQUAAAACaWQCAAAAB1BFTkRJTkcJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACCQABkQAAAAIFAAAADmFkZHJlc3Nlc0FycmF5AAAAAAAAAAAEAgAAAARfTUFfCQACWAAAAAEFAAAAAmlkAgAAAAdQRU5ESU5HBQAAAANuaWwJAQAAAAtUcmFuc2ZlclNldAAAAAEJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAHEBleHRyVXNlcihhZGRyZXNzRnJvbVN0cmluZykAAAABBQAAAARiYW5rBQAAAAZhbW91bnQFAAAADWFjY2VwdGVkVG9rZW4JAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAHEBleHRyVXNlcihhZGRyZXNzRnJvbVN0cmluZykAAAABCQABkQAAAAIFAAAADmFkZHJlc3Nlc0FycmF5AAAAAAAAAAAAAAAAAAAAAAAABQAAAA1hY2NlcHRlZFRva2VuCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMJAQAAABxAZXh0clVzZXIoYWRkcmVzc0Zyb21TdHJpbmcpAAAAAQkAAZEAAAACBQAAAA5hZGRyZXNzZXNBcnJheQAAAAAAAAAAAQAAAAAAAAAAAAUAAAANYWNjZXB0ZWRUb2tlbgkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAAcQGV4dHJVc2VyKGFkZHJlc3NGcm9tU3RyaW5nKQAAAAEJAAGRAAAAAgUAAAAOYWRkcmVzc2VzQXJyYXkAAAAAAAAAAAIAAAAAAAAAAAAFAAAADWFjY2VwdGVkVG9rZW4JAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAHEBleHRyVXNlcihhZGRyZXNzRnJvbVN0cmluZykAAAABCQABkQAAAAIFAAAADmFkZHJlc3Nlc0FycmF5AAAAAAAAAAADAAAAAAAAAAAABQAAAA1hY2NlcHRlZFRva2VuCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMJAQAAABxAZXh0clVzZXIoYWRkcmVzc0Zyb21TdHJpbmcpAAAAAQkAAZEAAAACBQAAAA5hZGRyZXNzZXNBcnJheQAAAAAAAAAABAAAAAAAAAAAAAUAAAANYWNjZXB0ZWRUb2tlbgUAAAADbmlsAwkAAAAAAAACBQAAAA50b3RhbEFkZHJlc3NlcwAAAAAAAAAABAkBAAAADFNjcmlwdFJlc3VsdAAAAAIJAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgUAAAAPZ2xvYmFsRGF0YVRpdGxlCQAETAAAAAIFAAAADmdsb2JhbERhdGFIYXNoCQAETAAAAAIFAAAADmdsb2JhbERhdGFKc29uCQAETAAAAAIFAAAAD2dsb2JhbERhdGFPd25lcgkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkAASwAAAACCQABLAAAAAIJAAGRAAAAAgUAAAAOYWRkcmVzc2VzQXJyYXkAAAAAAAAAAAACAAAABF9NQV8JAAJYAAAAAQUAAAACaWQCAAAAB1BFTkRJTkcJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACCQABkQAAAAIFAAAADmFkZHJlc3Nlc0FycmF5AAAAAAAAAAABAgAAAARfTUFfCQACWAAAAAEFAAAAAmlkAgAAAAdQRU5ESU5HCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgkAAZEAAAACBQAAAA5hZGRyZXNzZXNBcnJheQAAAAAAAAAAAgIAAAAEX01BXwkAAlgAAAABBQAAAAJpZAIAAAAHUEVORElORwkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkAASwAAAACCQABLAAAAAIJAAGRAAAAAgUAAAAOYWRkcmVzc2VzQXJyYXkAAAAAAAAAAAMCAAAABF9NQV8JAAJYAAAAAQUAAAACaWQCAAAAB1BFTkRJTkcFAAAAA25pbAkBAAAAC1RyYW5zZmVyU2V0AAAAAQkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAAcQGV4dHJVc2VyKGFkZHJlc3NGcm9tU3RyaW5nKQAAAAEFAAAABGJhbmsFAAAABmFtb3VudAUAAAANYWNjZXB0ZWRUb2tlbgkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAAcQGV4dHJVc2VyKGFkZHJlc3NGcm9tU3RyaW5nKQAAAAEJAAGRAAAAAgUAAAAOYWRkcmVzc2VzQXJyYXkAAAAAAAAAAAAAAAAAAAAAAAAFAAAADWFjY2VwdGVkVG9rZW4JAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAHEBleHRyVXNlcihhZGRyZXNzRnJvbVN0cmluZykAAAABCQABkQAAAAIFAAAADmFkZHJlc3Nlc0FycmF5AAAAAAAAAAABAAAAAAAAAAAABQAAAA1hY2NlcHRlZFRva2VuCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMJAQAAABxAZXh0clVzZXIoYWRkcmVzc0Zyb21TdHJpbmcpAAAAAQkAAZEAAAACBQAAAA5hZGRyZXNzZXNBcnJheQAAAAAAAAAAAgAAAAAAAAAAAAUAAAANYWNjZXB0ZWRUb2tlbgkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAAcQGV4dHJVc2VyKGFkZHJlc3NGcm9tU3RyaW5nKQAAAAEJAAGRAAAAAgUAAAAOYWRkcmVzc2VzQXJyYXkAAAAAAAAAAAMAAAAAAAAAAAAFAAAADWFjY2VwdGVkVG9rZW4FAAAAA25pbAMJAAAAAAAAAgUAAAAOdG90YWxBZGRyZXNzZXMAAAAAAAAAAAMJAQAAAAxTY3JpcHRSZXN1bHQAAAACCQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIFAAAAD2dsb2JhbERhdGFUaXRsZQkABEwAAAACBQAAAA5nbG9iYWxEYXRhSGFzaAkABEwAAAACBQAAAA5nbG9iYWxEYXRhSnNvbgkABEwAAAACBQAAAA9nbG9iYWxEYXRhT3duZXIJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACCQABkQAAAAIFAAAADmFkZHJlc3Nlc0FycmF5AAAAAAAAAAAAAgAAAARfTUFfCQACWAAAAAEFAAAAAmlkAgAAAAdQRU5ESU5HCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgkAAZEAAAACBQAAAA5hZGRyZXNzZXNBcnJheQAAAAAAAAAAAQIAAAAEX01BXwkAAlgAAAABBQAAAAJpZAIAAAAHUEVORElORwkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkAASwAAAACCQABLAAAAAIJAAGRAAAAAgUAAAAOYWRkcmVzc2VzQXJyYXkAAAAAAAAAAAICAAAABF9NQV8JAAJYAAAAAQUAAAACaWQCAAAAB1BFTkRJTkcFAAAAA25pbAkBAAAAC1RyYW5zZmVyU2V0AAAAAQkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAAcQGV4dHJVc2VyKGFkZHJlc3NGcm9tU3RyaW5nKQAAAAEFAAAABGJhbmsFAAAABmFtb3VudAUAAAANYWNjZXB0ZWRUb2tlbgkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAAcQGV4dHJVc2VyKGFkZHJlc3NGcm9tU3RyaW5nKQAAAAEJAAGRAAAAAgUAAAAOYWRkcmVzc2VzQXJyYXkAAAAAAAAAAAAAAAAAAAAAAAAFAAAADWFjY2VwdGVkVG9rZW4JAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAHEBleHRyVXNlcihhZGRyZXNzRnJvbVN0cmluZykAAAABCQABkQAAAAIFAAAADmFkZHJlc3Nlc0FycmF5AAAAAAAAAAABAAAAAAAAAAAABQAAAA1hY2NlcHRlZFRva2VuCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMJAQAAABxAZXh0clVzZXIoYWRkcmVzc0Zyb21TdHJpbmcpAAAAAQkAAZEAAAACBQAAAA5hZGRyZXNzZXNBcnJheQAAAAAAAAAAAgAAAAAAAAAAAAUAAAANYWNjZXB0ZWRUb2tlbgUAAAADbmlsAwkAAAAAAAACBQAAAA50b3RhbEFkZHJlc3NlcwAAAAAAAAAAAgkBAAAADFNjcmlwdFJlc3VsdAAAAAIJAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgUAAAAPZ2xvYmFsRGF0YVRpdGxlCQAETAAAAAIFAAAADmdsb2JhbERhdGFIYXNoCQAETAAAAAIFAAAADmdsb2JhbERhdGFKc29uCQAETAAAAAIFAAAAD2dsb2JhbERhdGFPd25lcgkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkAASwAAAACCQABLAAAAAIJAAGRAAAAAgUAAAAOYWRkcmVzc2VzQXJyYXkAAAAAAAAAAAACAAAABF9NQV8JAAJYAAAAAQUAAAACaWQCAAAAB1BFTkRJTkcJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACCQABkQAAAAIFAAAADmFkZHJlc3Nlc0FycmF5AAAAAAAAAAABAgAAAARfTUFfCQACWAAAAAEFAAAAAmlkAgAAAAdQRU5ESU5HBQAAAANuaWwJAQAAAAtUcmFuc2ZlclNldAAAAAEJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAHEBleHRyVXNlcihhZGRyZXNzRnJvbVN0cmluZykAAAABBQAAAARiYW5rBQAAAAZhbW91bnQFAAAADWFjY2VwdGVkVG9rZW4JAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAHEBleHRyVXNlcihhZGRyZXNzRnJvbVN0cmluZykAAAABCQABkQAAAAIFAAAADmFkZHJlc3Nlc0FycmF5AAAAAAAAAAAAAAAAAAAAAAAABQAAAA1hY2NlcHRlZFRva2VuCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMJAQAAABxAZXh0clVzZXIoYWRkcmVzc0Zyb21TdHJpbmcpAAAAAQkAAZEAAAACBQAAAA5hZGRyZXNzZXNBcnJheQAAAAAAAAAAAQAAAAAAAAAAAAUAAAANYWNjZXB0ZWRUb2tlbgUAAAADbmlsAwkAAAAAAAACBQAAAA50b3RhbEFkZHJlc3NlcwAAAAAAAAAAAQkBAAAADFNjcmlwdFJlc3VsdAAAAAIJAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgUAAAAPZ2xvYmFsRGF0YVRpdGxlCQAETAAAAAIFAAAADmdsb2JhbERhdGFIYXNoCQAETAAAAAIFAAAADmdsb2JhbERhdGFKc29uCQAETAAAAAIFAAAAD2dsb2JhbERhdGFPd25lcgkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkAASwAAAACCQABLAAAAAIJAAGRAAAAAgUAAAAOYWRkcmVzc2VzQXJyYXkAAAAAAAAAAAACAAAABF9NQV8JAAJYAAAAAQUAAAACaWQCAAAAB1BFTkRJTkcFAAAAA25pbAkBAAAAC1RyYW5zZmVyU2V0AAAAAQkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAAcQGV4dHJVc2VyKGFkZHJlc3NGcm9tU3RyaW5nKQAAAAEFAAAABGJhbmsFAAAABmFtb3VudAUAAAANYWNjZXB0ZWRUb2tlbgkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAAcQGV4dHJVc2VyKGFkZHJlc3NGcm9tU3RyaW5nKQAAAAEJAAGRAAAAAgUAAAAOYWRkcmVzc2VzQXJyYXkAAAAAAAAAAAAAAAAAAAAAAAAFAAAADWFjY2VwdGVkVG9rZW4FAAAAA25pbAkAAAIAAAABCQABLAAAAAICAAAAMk5lZWRzIDEgdG8gNiByZWNpcGllbnQgYWRkcmVzc2VzLCBjdXJyZW50bHkgc2VudDogCQABpAAAAAEFAAAADnRvdGFsQWRkcmVzc2VzCQAAAgAAAAECAAAAHllvdSBhcmUgbm90IGFsbG93ZWQgdG8gZG8gdGhhdAAAAAZpbnZva2UBAAAADXNpZ25BZ3JlZW1lbnQAAAADAAAABGhhc2gAAAALYWdyZWVtZW50SWQAAAAMc2lnbmVyUHViS2V5BAAAAAdwYXltZW50CQEAAAAHZXh0cmFjdAAAAAEIBQAAAAZpbnZva2UAAAAHcGF5bWVudAQAAAAGYW1vdW50CQEAAAAHZXh0cmFjdAAAAAEIBQAAAAdwYXltZW50AAAABmFtb3VudAQAAAACaWQJAQAAAAdleHRyYWN0AAAAAQgFAAAABmludm9rZQAAAA10cmFuc2FjdGlvbklkBAAAAAxjYWxsZXJJc0RhcHAJAAAAAAAAAgUAAAAEdGhpcwgFAAAABmludm9rZQAAAAZjYWxsZXIEAAAABnNpZ25lcgMFAAAADGNhbGxlcklzRGFwcAkABCUAAAABCQEAAAAUYWRkcmVzc0Zyb21QdWJsaWNLZXkAAAABCQACWQAAAAEFAAAADHNpZ25lclB1YktleQkAAlgAAAABCAgFAAAABmludm9rZQAAAAZjYWxsZXIAAAAFYnl0ZXMEAAAAE3NpZ25pbmdSZXF1ZXN0RXhpc3QJAQAAABRjaGVja0lmUGVuZGluZ1RvU2lnbgAAAAEJAAEsAAAAAgkAASwAAAACBQAAAAZzaWduZXICAAAABF9NQV8FAAAAC2FncmVlbWVudElkAwkBAAAAASEAAAABBQAAABNzaWduaW5nUmVxdWVzdEV4aXN0CQAAAgAAAAECAAAAI1NvcnJ5IHRoZXJlIGlzIG5vIHBlbmRpbmcgc2lnbmF0dXJlCQEAAAAMU2NyaXB0UmVzdWx0AAAAAgkBAAAACFdyaXRlU2V0AAAAAQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkAASwAAAACCQABLAAAAAIFAAAABnNpZ25lcgIAAAAEX01BXwUAAAALYWdyZWVtZW50SWQJAAEsAAAAAgIAAAAHU0lHTkVEXwkAAlgAAAABBQAAAAJpZAUAAAADbmlsCQEAAAALVHJhbnNmZXJTZXQAAAABCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMJAQAAABxAZXh0clVzZXIoYWRkcmVzc0Zyb21TdHJpbmcpAAAAAQUAAAAGc2lnbmVyAAAAAAAAAAAABQAAAA1hY2NlcHRlZFRva2VuBQAAAANuaWwAAAAGaW52b2tlAQAAAA91c2RuU2lnbkNyZWRpdHMAAAAABAAAAAdwYXltZW50CQEAAAAHZXh0cmFjdAAAAAEIBQAAAAZpbnZva2UAAAAHcGF5bWVudAQAAAANY2FsbGVyQWRkcmVzcwkAAlgAAAABCAgFAAAABmludm9rZQAAAAZjYWxsZXIAAAAFYnl0ZXMEAAAAB3Rva2VuSWQJAQAAAAdleHRyYWN0AAAAAQgFAAAAB3BheW1lbnQAAAAHYXNzZXRJZAQAAAAGYW1vdW50CQEAAAAHZXh0cmFjdAAAAAEIBQAAAAdwYXltZW50AAAABmFtb3VudAQAAAAPbnVtYmVyT2ZDcmVkaXRzCQAAaQAAAAIJAABoAAAAAgUAAAAGYW1vdW50AAAAAAAAAAACAAAAAAAAD0JABAAAABZjYWxsZXJJc1doaXRlTGlzdGVkTnVtCQEAAAASY2hlY2tJZldoaXRlTGlzdGVkAAAAAQUAAAANY2FsbGVyQWRkcmVzcwMJAQAAAAIhPQAAAAIJAAJYAAAAAQUAAAAHdG9rZW5JZAIAAAAsM0tGWEJHR0xDakE1WjJEdVc0RHE5ZkREckhqSkpQMVpFa2FvYWpTenVLc0MJAAACAAAAAQIAAAAaT25seSBVU0ROIGNhbiBiZSBleGNoYW5nZWQDAwkBAAAAAiE9AAAAAgkAAGoAAAACBQAAAAZhbW91bnQAAAAAAAAPQkAAAAAAAAAAAAAJAQAAAAIhPQAAAAIJAABqAAAAAgUAAAAGYW1vdW50AAAAAAAAD0JAAAAAAAAAB6EgBwkAAAIAAAABCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAADBZb3UgY2FuIG9ubHkgZXhjaGFuZ2UgbXVsdGlwbGUgb2YgMC41LCB5b3Ugc2VudDoJAQAAAAlkcm9wUmlnaHQAAAACCQABpAAAAAEFAAAABmFtb3VudAAAAAAAAAAABgIAAAABLgkBAAAACXRha2VSaWdodAAAAAIJAAGkAAAAAQUAAAAGYW1vdW50AAAAAAAAAAAGCQEAAAAMU2NyaXB0UmVzdWx0AAAAAgkBAAAACFdyaXRlU2V0AAAAAQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkAASwAAAACAgAAABFhZGRyX1dISVRFTElTVEVEXwUAAAANY2FsbGVyQWRkcmVzcwkAAGQAAAACBQAAABZjYWxsZXJJc1doaXRlTGlzdGVkTnVtBQAAAA9udW1iZXJPZkNyZWRpdHMFAAAAA25pbAkBAAAAC1RyYW5zZmVyU2V0AAAAAQkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAAcQGV4dHJVc2VyKGFkZHJlc3NGcm9tU3RyaW5nKQAAAAEFAAAABGJhbmsFAAAABmFtb3VudAUAAAAHdG9rZW5JZAUAAAADbmlsAAAAAQAAAAJ0eAEAAAAIdmVyaWZpZXIAAAAABAAAAAckbWF0Y2gwBQAAAAJ0eAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAXSW52b2tlU2NyaXB0VHJhbnNhY3Rpb24EAAAAA2ludgUAAAAHJG1hdGNoMAMDAwkAAAAAAAACCAUAAAADaW52AAAACGZ1bmN0aW9uAgAAABFmaWxlQ2VydGlmaWNhdGlvbgYJAAAAAAAAAggFAAAAA2ludgAAAAhmdW5jdGlvbgIAAAASZW1haWxDZXJ0aWZpY2F0aW9uBgkAAAAAAAACCAUAAAADaW52AAAACGZ1bmN0aW9uAgAAAA9jcmVhdGVBZ3JlZW1lbnQJAAH0AAAAAwgFAAAAAnR4AAAACWJvZHlCeXRlcwkAAZEAAAACCAUAAAACdHgAAAAGcHJvb2ZzAAAAAAAAAAAACQACWQAAAAEJAQAAAAhhc1N0cmluZwAAAAEJAAGRAAAAAggFAAAAA2ludgAAAARhcmdzAAAAAAAAAAAEAwkAAAAAAAACCAUAAAADaW52AAAACGZ1bmN0aW9uAgAAAA1zaWduQWdyZWVtZW50CQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAAkAAlkAAAABCQEAAAAIYXNTdHJpbmcAAAABCQABkQAAAAIIBQAAAANpbnYAAAAEYXJncwAAAAAAAAAAAgkAAfQAAAADCAUAAAACdHgAAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAJ0eAAAAAZwcm9vZnMAAAAAAAAAAAAIBQAAAAJ0eAAAAA9zZW5kZXJQdWJsaWNLZXkJAAH0AAAAAwgFAAAAAnR4AAAACWJvZHlCeXRlcwkAAZEAAAACCAUAAAACdHgAAAAGcHJvb2ZzAAAAAAAAAAAACAUAAAACdHgAAAAPc2VuZGVyUHVibGljS2V5FlslvA==", "chainId": 84, "height": 911671, "spentComplexity": 0 } View: original | compacted Prev: Bg9sdAXp69J9iih3BmBmKtr84HMs7htfUjmewHQTTG71 Next: HzRUDfSQ9qxxcGdhhCnwEHX4Cxhv3inowDJSmMLvWbrB Diff:
OldNewDifferences
4040 }
4141
4242
43-func l (m) = if (if ((size(m) == 35))
44- then (take(m, 2) == "3N")
43+func l (m) = if (if (if ((size(m) == 35))
44+ then (take(m, 2) == "3P")
4545 else false)
46+ then true
47+ else (take(m, 2) == "3N"))
4648 then true
4749 else (take(m, 2) == "3M")
4850
9092 }
9193
9294
93-@Callable(z)
94-func fileCertification (A,B,f,v) = {
95- let C = extract(z.transactionId)
96- let D = d(A, f)
97- let E = i(f)
98- let k = toBase58String(z.caller.bytes)
99- let F = j(k)
100- if ((D != "NONE"))
95+func z (A) = {
96+ let g = A
97+ if ($isInstanceOf(g, "String"))
98+ then {
99+ let B = g
100+ B
101+ }
102+ else throw("Sponsored Public Key String expected")
103+ }
104+
105+
106+@Callable(C)
107+func fileCertification (D,E,f,v,F) = {
108+ let G = extract(C.transactionId)
109+ let H = d(D, f)
110+ let I = i(f)
111+ let J = (this == C.caller)
112+ let k = if (J)
113+ then toString(addressFromPublicKey(fromBase58String(F)))
114+ else toBase58String(C.caller.bytes)
115+ let K = j(k)
116+ if ((H != "NONE"))
101117 then throw("This entry already exist")
102- else if ((E != "NONE"))
118+ else if ((I != "NONE"))
103119 then throw("This uuid already exist")
104120 else if ((size(f) > 36))
105121 then throw("Uuid is too long")
106- else if ((size(A) > 64))
122+ else if ((size(D) > 64))
107123 then throw("Hash is too long")
108- else if ((size(B) > 64))
124+ else if ((size(E) > 64))
109125 then throw("Title is too long")
110- else if ((F > 0))
111- then ScriptResult(WriteSet([DataEntry(f, toBase58String(C)), DataEntry((A + f), toBase58String(C)), DataEntry((B + f), toBase58String(C)), DataEntry(("addr_WHITELISTED_" + k), (F - 1)), DataEntry(((("data_fc_" + toBase58String(C)) + "_") + k), v)]), TransferSet([ScriptTransfer(z.caller, 500000, unit)]))
112- else {
113- let G = extract(z.payment)
114- let H = extract(G.amount)
115- let I = if (isDefined(G.assetId))
116- then extract(G.assetId)
117- else throw("Waves is not accepted as payment")
118- let J = getIntegerValue(a, ("certification_fee_" + toBase58String(extract(I))))
119- if ((c != I))
120- then throw("This token is not accepted at the moment")
121- else if (if ((H != J))
122- then (0 >= F)
123- else false)
124- then throw("The price is wrong")
125- else ScriptResult(WriteSet([DataEntry(f, toBase58String(C)), DataEntry((A + f), toBase58String(C)), DataEntry((B + f), toBase58String(C)), DataEntry(((("data_fc_" + toBase58String(C)) + "_") + k), v)]), TransferSet([ScriptTransfer(addressFromStringValue(b), H, G.assetId)]))
126- }
126+ else if ((K > 0))
127+ then ScriptResult(WriteSet([DataEntry(f, toBase58String(G)), DataEntry((D + f), toBase58String(G)), DataEntry((E + f), toBase58String(G)), DataEntry(("addr_WHITELISTED_" + k), (K - 1)), DataEntry(((("data_fc_" + toBase58String(G)) + "_") + k), v)]), TransferSet([ScriptTransfer(addressFromStringValue(k), 0, c)]))
128+ else if (!(J))
129+ then {
130+ let L = extract(C.payment)
131+ let M = extract(L.amount)
132+ let N = if (isDefined(L.assetId))
133+ then extract(L.assetId)
134+ else throw("Waves is not accepted as payment")
135+ let O = getIntegerValue(a, ("certification_fee_" + toBase58String(extract(N))))
136+ if ((c != N))
137+ then throw("This token is not accepted at the moment")
138+ else if (if ((M != O))
139+ then (0 >= K)
140+ else false)
141+ then throw("The price is wrong")
142+ else ScriptResult(WriteSet([DataEntry(f, toBase58String(G)), DataEntry((D + f), toBase58String(G)), DataEntry((E + f), toBase58String(G)), DataEntry(((("data_fc_" + toBase58String(G)) + "_") + k), v)]), TransferSet([ScriptTransfer(addressFromStringValue(b), M, L.assetId)]))
143+ }
144+ else throw("You are not allowed to do that")
127145 }
128146
129147
130148
131-@Callable(z)
132-func emailCertification (K,f,v) = {
133- let C = extract(z.transactionId)
134- let D = d(K, f)
135- let E = i(f)
136- let k = toBase58String(z.caller.bytes)
137- let F = j(k)
138- if ((D != "NONE"))
149+@Callable(C)
150+func emailCertification (P,f,v,E,F) = {
151+ let G = extract(C.transactionId)
152+ let H = d(P, f)
153+ let I = i(f)
154+ let J = (this == C.caller)
155+ let k = if (J)
156+ then toString(addressFromPublicKey(fromBase58String(F)))
157+ else toBase58String(C.caller.bytes)
158+ let K = j(k)
159+ if ((H != "NONE"))
139160 then throw("This entry already exist")
140- else if ((E != "NONE"))
161+ else if ((I != "NONE"))
141162 then throw("This uuid already exist")
142163 else if ((size(f) > 36))
143164 then throw("Uuid is too long")
144- else if ((F > 0))
145- then ScriptResult(WriteSet([DataEntry(f, toBase58String(C)), DataEntry((K + f), toBase58String(C)), DataEntry(("addr_WHITELISTED_" + k), (F - 1)), DataEntry(((("data_ec_" + toBase58String(C)) + "_") + k), v)]), TransferSet([ScriptTransfer(z.caller, 500000, unit)]))
146- else {
147- let G = extract(z.payment)
148- let H = extract(G.amount)
149- let I = if (isDefined(G.assetId))
150- then extract(G.assetId)
151- else throw("Waves is not accepted as payment")
152- let J = getIntegerValue(a, ("certification_fee_" + toBase58String(extract(I))))
153- if ((c != I))
154- then throw("This token is not accepted at the moment")
155- else if (if ((H != J))
156- then (0 >= F)
157- else false)
158- then throw("The price is wrong")
159- else ScriptResult(WriteSet([DataEntry(f, toBase58String(C)), DataEntry((K + f), toBase58String(C)), DataEntry(((("data_ec_" + toBase58String(C)) + "_") + k), v)]), TransferSet([ScriptTransfer(addressFromStringValue(b), H, G.assetId)]))
160- }
165+ else if ((size(P) > 64))
166+ then throw("Message-id is too long")
167+ else if ((size(E) > 64))
168+ then throw("Title is too long")
169+ else if ((K > 0))
170+ then ScriptResult(WriteSet([DataEntry(f, toBase58String(G)), DataEntry((P + f), toBase58String(G)), DataEntry((E + f), toBase58String(G)), DataEntry(("addr_WHITELISTED_" + k), (K - 1)), DataEntry(((("data_ec_" + toBase58String(G)) + "_") + k), v)]), TransferSet([ScriptTransfer(addressFromStringValue(k), 0, c)]))
171+ else if (!(J))
172+ then {
173+ let L = extract(C.payment)
174+ let M = extract(L.amount)
175+ let N = if (isDefined(L.assetId))
176+ then extract(L.assetId)
177+ else throw("Waves is not accepted as payment")
178+ let O = getIntegerValue(a, ("certification_fee_" + toBase58String(extract(N))))
179+ if ((c != N))
180+ then throw("This token is not accepted at the moment")
181+ else if (if ((M != O))
182+ then (0 >= K)
183+ else false)
184+ then throw("The price is wrong")
185+ else ScriptResult(WriteSet([DataEntry(f, toBase58String(G)), DataEntry((P + f), toBase58String(G)), DataEntry((E + f), toBase58String(G)), DataEntry(((("data_ec_" + toBase58String(G)) + "_") + k), v)]), TransferSet([ScriptTransfer(addressFromStringValue(b), M, L.assetId)]))
186+ }
187+ else throw("You are not allowed to do that")
161188 }
162189
163190
164191
165-@Callable(z)
166-func createAgreement (A,B,L) = {
167- let C = extract(z.transactionId)
168- let k = toBase58String(z.caller.bytes)
169- let F = j(k)
170- let M = ((((x(L, "creator") + "\"") + toBase58String(z.caller.bytes)) + "\"") + y(L, "creator"))
171- let N = [t(L, "address1"), t(L, "address2"), t(L, "address3"), t(L, "address4"), t(L, "address5"), t(L, "address6")]
172- let O = {
173- let P = N
174- let Q = size(P)
175- let R = 0
176- if ((Q == 0))
177- then R
178- else {
179- let S = n(R, P[0])
180- if ((Q == 1))
181- then S
182- else {
183- let T = n(S, P[1])
184- if ((Q == 2))
185- then T
186- else {
187- let U = n(T, P[2])
188- if ((Q == 3))
189- then U
190- else {
191- let V = n(U, P[3])
192- if ((Q == 4))
193- then V
194- else {
195- let W = n(V, P[4])
196- if ((Q == 5))
197- then W
198- else {
199- let X = n(W, P[5])
200- if ((Q == 6))
201- then X
202- else {
203- let Y = n(X, P[6])
204- throw("List size exceed 6")
205- }
206- }
207- }
208- }
209- }
210- }
211- }
212- }
213- let Z = DataEntry(("title_MA_" + toBase58String(C)), B)
214- let aa = DataEntry(("hash_MA_" + toBase58String(C)), A)
215- let ab = DataEntry(((("data_MA_" + toBase58String(C)) + "_") + k), M)
216- let ac = DataEntry(((k + "_MA_") + toBase58String(C)), ("SIGNED_" + toBase58String(C)))
217- let ad = DataEntry(("addr_WHITELISTED_" + k), (F - (O + 1)))
218- if ((O == 1))
219- then if ((F > 0))
220- then if (((O + 1) > F))
221- then throw("You don't have enough certification credit")
222- else ScriptResult(WriteSet([Z, aa, ab, ac, ad, DataEntry(((N[0] + "_MA_") + toBase58String(C)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(N[0]), 0, c)]))
223- else {
224- let G = extract(z.payment)
225- let H = if (isDefined(G.amount))
226- then extract(G.amount)
227- else 0
228- let I = if (isDefined(G.assetId))
229- then extract(G.assetId)
230- else c
231- let J = getIntegerValue(a, ("certification_fee_" + toBase58String(extract(I))))
232- if (((J * (O + 1)) > H))
233- then throw(("The price is wrong, it should be " + toString((J * (O + 1)))))
234- else ScriptResult(WriteSet([Z, aa, ab, ac, DataEntry(((N[0] + "_MA_") + toBase58String(C)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(b), H, c), ScriptTransfer(addressFromStringValue(N[0]), 0, c)]))
235- }
236- else if ((O == 2))
237- then if ((F > 0))
238- then if (((O + 1) > F))
239- then throw("You don't have enough certification credit")
240- else ScriptResult(WriteSet([Z, aa, ab, ac, ad, DataEntry(((N[0] + "_MA_") + toBase58String(C)), "PENDING"), DataEntry(((N[1] + "_MA_") + toBase58String(C)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(N[0]), 0, c), ScriptTransfer(addressFromStringValue(N[1]), 0, c)]))
241- else {
242- let G = extract(z.payment)
243- let H = if (isDefined(G.amount))
244- then extract(G.amount)
245- else 0
246- let I = if (isDefined(G.assetId))
247- then extract(G.assetId)
248- else c
249- let J = getIntegerValue(a, ("certification_fee_" + toBase58String(extract(I))))
250- if (((J * (O + 1)) > H))
251- then throw(("The price is wrong, it should be " + toString((J * (O + 1)))))
252- else ScriptResult(WriteSet([Z, aa, ab, ac, DataEntry(((N[0] + "_MA_") + toBase58String(C)), "PENDING"), DataEntry(((N[1] + "_MA_") + toBase58String(C)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(b), H, c), ScriptTransfer(addressFromStringValue(N[0]), 0, c), ScriptTransfer(addressFromStringValue(N[1]), 0, c)]))
253- }
254- else if ((O == 3))
255- then if ((F > 0))
256- then if (((O + 1) > F))
257- then throw("You don't have enough certification credit")
258- else ScriptResult(WriteSet([Z, aa, ab, ac, ad, DataEntry(((N[0] + "_MA_") + toBase58String(C)), "PENDING"), DataEntry(((N[1] + "_MA_") + toBase58String(C)), "PENDING"), DataEntry(((N[2] + "_MA_") + toBase58String(C)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(N[0]), 0, c), ScriptTransfer(addressFromStringValue(N[1]), 0, c), ScriptTransfer(addressFromStringValue(N[2]), 0, c)]))
259- else {
260- let G = extract(z.payment)
261- let H = if (isDefined(G.amount))
262- then extract(G.amount)
263- else 0
264- let I = if (isDefined(G.assetId))
265- then extract(G.assetId)
266- else c
267- let J = getIntegerValue(a, ("certification_fee_" + toBase58String(extract(I))))
268- if (((J * (O + 1)) > H))
269- then throw(("The price is wrong, it should be " + toString((J * (O + 1)))))
270- else ScriptResult(WriteSet([Z, aa, ab, ac, DataEntry(((N[0] + "_MA_") + toBase58String(C)), "PENDING"), DataEntry(((N[1] + "_MA_") + toBase58String(C)), "PENDING"), DataEntry(((N[2] + "_MA_") + toBase58String(C)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(b), H, c), ScriptTransfer(addressFromStringValue(N[0]), 0, c), ScriptTransfer(addressFromStringValue(N[1]), 0, c), ScriptTransfer(addressFromStringValue(N[2]), 0, c)]))
271- }
272- else if ((O == 4))
273- then if ((F > 0))
274- then if (((O + 1) > F))
275- then throw("You don't have enough certification credit")
276- else ScriptResult(WriteSet([Z, aa, ab, ac, ad, DataEntry(((N[0] + "_MA_") + toBase58String(C)), "PENDING"), DataEntry(((N[1] + "_MA_") + toBase58String(C)), "PENDING"), DataEntry(((N[2] + "_MA_") + toBase58String(C)), "PENDING"), DataEntry(((N[3] + "_MA_") + toBase58String(C)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(N[0]), 0, c), ScriptTransfer(addressFromStringValue(N[1]), 0, c), ScriptTransfer(addressFromStringValue(N[2]), 0, c), ScriptTransfer(addressFromStringValue(N[3]), 0, c)]))
277- else {
278- let G = extract(z.payment)
279- let H = if (isDefined(G.amount))
280- then extract(G.amount)
281- else 0
282- let I = if (isDefined(G.assetId))
283- then extract(G.assetId)
284- else c
285- let J = getIntegerValue(a, ("certification_fee_" + toBase58String(extract(I))))
286- if (((J * (O + 1)) > H))
287- then throw(("The price is wrong, it should be " + toString((J * (O + 1)))))
288- else ScriptResult(WriteSet([Z, aa, ab, ac, DataEntry(((N[0] + "_MA_") + toBase58String(C)), "PENDING"), DataEntry(((N[1] + "_MA_") + toBase58String(C)), "PENDING"), DataEntry(((N[2] + "_MA_") + toBase58String(C)), "PENDING"), DataEntry(((N[3] + "_MA_") + toBase58String(C)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(b), H, c), ScriptTransfer(addressFromStringValue(N[0]), 0, c), ScriptTransfer(addressFromStringValue(N[1]), 0, c), ScriptTransfer(addressFromStringValue(N[2]), 0, c), ScriptTransfer(addressFromStringValue(N[3]), 0, c)]))
289- }
290- else if ((O == 5))
291- then if ((F > 0))
292- then if (((O + 1) > F))
192+@Callable(C)
193+func createAgreement (D,E,Q,R,F,f) = {
194+ let G = extract(C.transactionId)
195+ let H = d(D, f)
196+ let I = i(f)
197+ let J = (this == C.caller)
198+ let k = if (J)
199+ then toString(addressFromPublicKey(fromBase58String(F)))
200+ else toBase58String(C.caller.bytes)
201+ let K = j(k)
202+ let S = ((((x(Q, "creator") + "\"") + k) + "\"") + y(Q, "creator"))
203+ let T = [t(Q, "address1"), t(Q, "address2"), t(Q, "address3"), t(Q, "address4"), t(Q, "address5"), t(Q, "address6")]
204+ let U = R
205+ let V = DataEntry((E + f), toBase58String(G))
206+ let W = DataEntry((D + f), toBase58String(G))
207+ let X = DataEntry(((("data_MA_" + toBase58String(G)) + "_") + k), S)
208+ let Y = DataEntry(((k + "_MA_") + toBase58String(G)), ("SIGNED_" + toBase58String(G)))
209+ let Z = DataEntry(("addr_WHITELISTED_" + k), (K - (U + 1)))
210+ if ((H != "NONE"))
211+ then throw("This entry already exist")
212+ else if ((I != "NONE"))
213+ then throw("This uuid already exist")
214+ else if ((size(f) > 36))
215+ then throw("Uuid is too long")
216+ else if ((size(D) > 64))
217+ then throw("Message-id is too long")
218+ else if ((size(E) > 64))
219+ then throw("Title is too long")
220+ else if ((K > 0))
221+ then if (((U + 1) > K))
293222 then throw("You don't have enough certification credit")
294- else ScriptResult(WriteSet([Z, aa, ab, ac, ad, DataEntry(((N[0] + "_MA_") + toBase58String(C)), "PENDING"), DataEntry(((N[1] + "_MA_") + toBase58String(C)), "PENDING"), DataEntry(((N[2] + "_MA_") + toBase58String(C)), "PENDING"), DataEntry(((N[3] + "_MA_") + toBase58String(C)), "PENDING"), DataEntry(((N[4] + "_MA_") + toBase58String(C)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(N[0]), 0, c), ScriptTransfer(addressFromStringValue(N[1]), 0, c), ScriptTransfer(addressFromStringValue(N[2]), 0, c), ScriptTransfer(addressFromStringValue(N[3]), 0, c), ScriptTransfer(addressFromStringValue(N[4]), 0, c)]))
295- else {
296- let G = extract(z.payment)
297- let H = if (isDefined(G.amount))
298- then extract(G.amount)
299- else 0
300- let I = if (isDefined(G.assetId))
301- then extract(G.assetId)
302- else c
303- let J = getIntegerValue(a, ("certification_fee_" + toBase58String(extract(I))))
304- if (((J * (O + 1)) > H))
305- then throw(("The price is wrong, it should be " + toString((J * (O + 1)))))
306- else ScriptResult(WriteSet([Z, aa, ab, ac, DataEntry(((N[0] + "_MA_") + toBase58String(C)), "PENDING"), DataEntry(((N[1] + "_MA_") + toBase58String(C)), "PENDING"), DataEntry(((N[2] + "_MA_") + toBase58String(C)), "PENDING"), DataEntry(((N[3] + "_MA_") + toBase58String(C)), "PENDING"), DataEntry(((N[4] + "_MA_") + toBase58String(C)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(b), H, c), ScriptTransfer(addressFromStringValue(N[0]), 0, c), ScriptTransfer(addressFromStringValue(N[1]), 0, c), ScriptTransfer(addressFromStringValue(N[2]), 0, c), ScriptTransfer(addressFromStringValue(N[3]), 0, c), ScriptTransfer(addressFromStringValue(N[4]), 0, c)]))
307- }
308- else if ((O == 6))
309- then if ((F > 0))
310- then if (((O + 1) > F))
311- then throw("You don't have enough certification credit")
312- else ScriptResult(WriteSet([Z, aa, ab, ac, ad, DataEntry(((N[0] + "_MA_") + toBase58String(C)), "PENDING"), DataEntry(((N[1] + "_MA_") + toBase58String(C)), "PENDING"), DataEntry(((N[2] + "_MA_") + toBase58String(C)), "PENDING"), DataEntry(((N[3] + "_MA_") + toBase58String(C)), "PENDING"), DataEntry(((N[4] + "_MA_") + toBase58String(C)), "PENDING"), DataEntry(((N[5] + "_MA_") + toBase58String(C)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(N[0]), 0, c), ScriptTransfer(addressFromStringValue(N[1]), 0, c), ScriptTransfer(addressFromStringValue(N[2]), 0, c), ScriptTransfer(addressFromStringValue(N[3]), 0, c), ScriptTransfer(addressFromStringValue(N[4]), 0, c), ScriptTransfer(addressFromStringValue(N[5]), 0, c)]))
313- else {
314- let G = extract(z.payment)
315- let H = if (isDefined(G.amount))
316- then extract(G.amount)
223+ else if ((U == 6))
224+ then ScriptResult(WriteSet([V, W, X, Y, Z, DataEntry(((T[0] + "_MA_") + toBase58String(G)), "PENDING"), DataEntry(((T[1] + "_MA_") + toBase58String(G)), "PENDING"), DataEntry(((T[2] + "_MA_") + toBase58String(G)), "PENDING"), DataEntry(((T[3] + "_MA_") + toBase58String(G)), "PENDING"), DataEntry(((T[4] + "_MA_") + toBase58String(G)), "PENDING"), DataEntry(((T[5] + "_MA_") + toBase58String(G)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(k), 0, c), ScriptTransfer(addressFromStringValue(T[0]), 0, c), ScriptTransfer(addressFromStringValue(T[1]), 0, c), ScriptTransfer(addressFromStringValue(T[2]), 0, c), ScriptTransfer(addressFromStringValue(T[3]), 0, c), ScriptTransfer(addressFromStringValue(T[4]), 0, c), ScriptTransfer(addressFromStringValue(T[5]), 0, c)]))
225+ else if ((U == 5))
226+ then ScriptResult(WriteSet([V, W, X, Y, Z, DataEntry(((T[0] + "_MA_") + toBase58String(G)), "PENDING"), DataEntry(((T[1] + "_MA_") + toBase58String(G)), "PENDING"), DataEntry(((T[2] + "_MA_") + toBase58String(G)), "PENDING"), DataEntry(((T[3] + "_MA_") + toBase58String(G)), "PENDING"), DataEntry(((T[4] + "_MA_") + toBase58String(G)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(k), 0, c), ScriptTransfer(addressFromStringValue(T[0]), 0, c), ScriptTransfer(addressFromStringValue(T[1]), 0, c), ScriptTransfer(addressFromStringValue(T[2]), 0, c), ScriptTransfer(addressFromStringValue(T[3]), 0, c), ScriptTransfer(addressFromStringValue(T[4]), 0, c)]))
227+ else if ((U == 4))
228+ then ScriptResult(WriteSet([V, W, X, Y, Z, DataEntry(((T[0] + "_MA_") + toBase58String(G)), "PENDING"), DataEntry(((T[1] + "_MA_") + toBase58String(G)), "PENDING"), DataEntry(((T[2] + "_MA_") + toBase58String(G)), "PENDING"), DataEntry(((T[3] + "_MA_") + toBase58String(G)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(k), 0, c), ScriptTransfer(addressFromStringValue(T[0]), 0, c), ScriptTransfer(addressFromStringValue(T[1]), 0, c), ScriptTransfer(addressFromStringValue(T[2]), 0, c), ScriptTransfer(addressFromStringValue(T[3]), 0, c)]))
229+ else if ((U == 3))
230+ then ScriptResult(WriteSet([V, W, X, Y, Z, DataEntry(((T[0] + "_MA_") + toBase58String(G)), "PENDING"), DataEntry(((T[1] + "_MA_") + toBase58String(G)), "PENDING"), DataEntry(((T[2] + "_MA_") + toBase58String(G)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(k), 0, c), ScriptTransfer(addressFromStringValue(T[0]), 0, c), ScriptTransfer(addressFromStringValue(T[1]), 0, c), ScriptTransfer(addressFromStringValue(T[2]), 0, c)]))
231+ else if ((U == 2))
232+ then ScriptResult(WriteSet([V, W, X, Y, Z, DataEntry(((T[0] + "_MA_") + toBase58String(G)), "PENDING"), DataEntry(((T[1] + "_MA_") + toBase58String(G)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(k), 0, c), ScriptTransfer(addressFromStringValue(T[0]), 0, c), ScriptTransfer(addressFromStringValue(T[1]), 0, c)]))
233+ else if ((U == 1))
234+ then ScriptResult(WriteSet([V, W, X, Y, Z, DataEntry(((T[0] + "_MA_") + toBase58String(G)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(k), 0, c), ScriptTransfer(addressFromStringValue(T[0]), 0, c)]))
235+ else throw("Wrong number of participants")
236+ else if (!(J))
237+ then {
238+ let L = extract(C.payment)
239+ let M = if (isDefined(L.amount))
240+ then extract(L.amount)
317241 else 0
318- let I = if (isDefined(G.assetId))
319- then extract(G.assetId)
242+ let N = if (isDefined(L.assetId))
243+ then extract(L.assetId)
320244 else c
321- let J = getIntegerValue(a, ("certification_fee_" + toBase58String(extract(I))))
322- if (((J * (O + 1)) > H))
323- then throw(("The price is wrong, it should be " + toString((J * (O + 1)))))
324- else ScriptResult(WriteSet([Z, aa, ab, ac, DataEntry(((N[0] + "_MA_") + toBase58String(C)), "PENDING"), DataEntry(((N[1] + "_MA_") + toBase58String(C)), "PENDING"), DataEntry(((N[2] + "_MA_") + toBase58String(C)), "PENDING"), DataEntry(((N[3] + "_MA_") + toBase58String(C)), "PENDING"), DataEntry(((N[4] + "_MA_") + toBase58String(C)), "PENDING"), DataEntry(((N[5] + "_MA_") + toBase58String(C)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(b), H, c), ScriptTransfer(addressFromStringValue(N[0]), 0, c), ScriptTransfer(addressFromStringValue(N[1]), 0, c), ScriptTransfer(addressFromStringValue(N[2]), 0, c), ScriptTransfer(addressFromStringValue(N[3]), 0, c), ScriptTransfer(addressFromStringValue(N[4]), 0, c), ScriptTransfer(addressFromStringValue(N[5]), 0, c)]))
245+ let O = getIntegerValue(a, ("certification_fee_" + toBase58String(extract(N))))
246+ if (((O * (U + 1)) > M))
247+ then throw(("The price is wrong, it should be " + toString((O * (U + 1)))))
248+ else if ((U == 6))
249+ then ScriptResult(WriteSet([V, W, X, Y, DataEntry(((T[0] + "_MA_") + toBase58String(G)), "PENDING"), DataEntry(((T[1] + "_MA_") + toBase58String(G)), "PENDING"), DataEntry(((T[2] + "_MA_") + toBase58String(G)), "PENDING"), DataEntry(((T[3] + "_MA_") + toBase58String(G)), "PENDING"), DataEntry(((T[4] + "_MA_") + toBase58String(G)), "PENDING"), DataEntry(((T[5] + "_MA_") + toBase58String(G)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(b), M, c), ScriptTransfer(addressFromStringValue(T[0]), 0, c), ScriptTransfer(addressFromStringValue(T[1]), 0, c), ScriptTransfer(addressFromStringValue(T[2]), 0, c), ScriptTransfer(addressFromStringValue(T[3]), 0, c), ScriptTransfer(addressFromStringValue(T[4]), 0, c), ScriptTransfer(addressFromStringValue(T[5]), 0, c)]))
250+ else if ((U == 5))
251+ then ScriptResult(WriteSet([V, W, X, Y, DataEntry(((T[0] + "_MA_") + toBase58String(G)), "PENDING"), DataEntry(((T[1] + "_MA_") + toBase58String(G)), "PENDING"), DataEntry(((T[2] + "_MA_") + toBase58String(G)), "PENDING"), DataEntry(((T[3] + "_MA_") + toBase58String(G)), "PENDING"), DataEntry(((T[4] + "_MA_") + toBase58String(G)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(b), M, c), ScriptTransfer(addressFromStringValue(T[0]), 0, c), ScriptTransfer(addressFromStringValue(T[1]), 0, c), ScriptTransfer(addressFromStringValue(T[2]), 0, c), ScriptTransfer(addressFromStringValue(T[3]), 0, c), ScriptTransfer(addressFromStringValue(T[4]), 0, c)]))
252+ else if ((U == 4))
253+ then ScriptResult(WriteSet([V, W, X, Y, DataEntry(((T[0] + "_MA_") + toBase58String(G)), "PENDING"), DataEntry(((T[1] + "_MA_") + toBase58String(G)), "PENDING"), DataEntry(((T[2] + "_MA_") + toBase58String(G)), "PENDING"), DataEntry(((T[3] + "_MA_") + toBase58String(G)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(b), M, c), ScriptTransfer(addressFromStringValue(T[0]), 0, c), ScriptTransfer(addressFromStringValue(T[1]), 0, c), ScriptTransfer(addressFromStringValue(T[2]), 0, c), ScriptTransfer(addressFromStringValue(T[3]), 0, c)]))
254+ else if ((U == 3))
255+ then ScriptResult(WriteSet([V, W, X, Y, DataEntry(((T[0] + "_MA_") + toBase58String(G)), "PENDING"), DataEntry(((T[1] + "_MA_") + toBase58String(G)), "PENDING"), DataEntry(((T[2] + "_MA_") + toBase58String(G)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(b), M, c), ScriptTransfer(addressFromStringValue(T[0]), 0, c), ScriptTransfer(addressFromStringValue(T[1]), 0, c), ScriptTransfer(addressFromStringValue(T[2]), 0, c)]))
256+ else if ((U == 2))
257+ then ScriptResult(WriteSet([V, W, X, Y, DataEntry(((T[0] + "_MA_") + toBase58String(G)), "PENDING"), DataEntry(((T[1] + "_MA_") + toBase58String(G)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(b), M, c), ScriptTransfer(addressFromStringValue(T[0]), 0, c), ScriptTransfer(addressFromStringValue(T[1]), 0, c)]))
258+ else if ((U == 1))
259+ then ScriptResult(WriteSet([V, W, X, Y, DataEntry(((T[0] + "_MA_") + toBase58String(G)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(b), M, c), ScriptTransfer(addressFromStringValue(T[0]), 0, c)]))
260+ else throw(("Needs 1 to 6 recipient addresses, currently sent: " + toString(U)))
325261 }
326- else throw(("Needs 1 to 6 recipient addresses, currently sent: " + toString(O)))
262+ else throw("You are not allowed to do that")
327263 }
328264
329265
330266
331-@Callable(z)
332-func signAgreement (A,ae) = {
333- let G = extract(z.payment)
334- let H = extract(G.amount)
335- let C = extract(z.transactionId)
336- let af = toBase58String(z.caller.bytes)
337- let ag = p(((af + "_MA_") + ae))
338- if (!(ag))
267+@Callable(C)
268+func signAgreement (D,aa,F) = {
269+ let L = extract(C.payment)
270+ let M = extract(L.amount)
271+ let G = extract(C.transactionId)
272+ let J = (this == C.caller)
273+ let ab = if (J)
274+ then toString(addressFromPublicKey(fromBase58String(F)))
275+ else toBase58String(C.caller.bytes)
276+ let ac = p(((ab + "_MA_") + aa))
277+ if (!(ac))
339278 then throw("Sorry there is no pending signature")
340- else ScriptResult(WriteSet([DataEntry(((af + "_MA_") + ae), ("SIGNED_" + toBase58String(C)))]), TransferSet([ScriptTransfer(addressFromStringValue(af), 500000, unit)]))
279+ else ScriptResult(WriteSet([DataEntry(((ab + "_MA_") + aa), ("SIGNED_" + toBase58String(G)))]), TransferSet([ScriptTransfer(addressFromStringValue(ab), 0, c)]))
341280 }
342281
282+
283+
284+@Callable(C)
285+func usdnSignCredits () = {
286+ let L = extract(C.payment)
287+ let k = toBase58String(C.caller.bytes)
288+ let ad = extract(L.assetId)
289+ let M = extract(L.amount)
290+ let ae = ((M * 2) / 1000000)
291+ let K = j(k)
292+ if ((toBase58String(ad) != "3KFXBGGLCjA5Z2DuW4Dq9fDDrHjJJP1ZEkaoajSzuKsC"))
293+ then throw("Only USDN can be exchanged")
294+ else if (if (((M % 1000000) != 0))
295+ then ((M % 1000000) != 500000)
296+ else false)
297+ then throw(((("You can only exchange multiple of 0.5, you sent:" + dropRight(toString(M), 6)) + ".") + takeRight(toString(M), 6)))
298+ else ScriptResult(WriteSet([DataEntry(("addr_WHITELISTED_" + k), (K + ae))]), TransferSet([ScriptTransfer(addressFromStringValue(b), M, ad)]))
299+ }
300+
301+
302+@Verifier(af)
303+func ag () = {
304+ let g = af
305+ if ($isInstanceOf(g, "InvokeScriptTransaction"))
306+ then {
307+ let ah = g
308+ if (if (if ((ah.function == "fileCertification"))
309+ then true
310+ else (ah.function == "emailCertification"))
311+ then true
312+ else (ah.function == "createAgreement"))
313+ then sigVerify(af.bodyBytes, af.proofs[0], fromBase58String(z(ah.args[4])))
314+ else if ((ah.function == "signAgreement"))
315+ then sigVerify(af.bodyBytes, af.proofs[0], fromBase58String(z(ah.args[2])))
316+ else sigVerify(af.bodyBytes, af.proofs[0], af.senderPublicKey)
317+ }
318+ else sigVerify(af.bodyBytes, af.proofs[0], af.senderPublicKey)
319+ }
343320
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 3 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = extract(addressFromString("3N2s5RtaHPBenCsx2ECcoFRbYHx3noZhXW1"))
55
66 let b = "3N1E6tXddRoVaRfQ9dQ3vg5LaW2fsd8HKub"
77
88 let c = base58'Gf9t8FA4H3ssoZPCwrg3KwUFCci8zuUFP9ssRsUY3s6a'
99
1010 func d (e,f) = {
1111 let g = getString(this, (e + f))
1212 if ($isInstanceOf(g, "String"))
1313 then {
1414 let h = g
1515 h
1616 }
1717 else "NONE"
1818 }
1919
2020
2121 func i (f) = {
2222 let g = getString(this, f)
2323 if ($isInstanceOf(g, "String"))
2424 then {
2525 let h = g
2626 h
2727 }
2828 else "NONE"
2929 }
3030
3131
3232 func j (k) = {
3333 let g = getInteger(this, ("addr_WHITELISTED_" + k))
3434 if ($isInstanceOf(g, "Int"))
3535 then {
3636 let h = g
3737 h
3838 }
3939 else 0
4040 }
4141
4242
43-func l (m) = if (if ((size(m) == 35))
44- then (take(m, 2) == "3N")
43+func l (m) = if (if (if ((size(m) == 35))
44+ then (take(m, 2) == "3P")
4545 else false)
46+ then true
47+ else (take(m, 2) == "3N"))
4648 then true
4749 else (take(m, 2) == "3M")
4850
4951
5052 func n (o,m) = if ((size(m) > 0))
5153 then (o + 1)
5254 else (o + 0)
5355
5456
5557 func p (q) = {
5658 let g = getString(this, q)
5759 if ($isInstanceOf(g, "String"))
5860 then {
5961 let h = g
6062 if ((h == "PENDING"))
6163 then true
6264 else false
6365 }
6466 else false
6567 }
6668
6769
6870 func r (s) = take(drop(s, 1), value(indexOf(drop(s, 1), "\"")))
6971
7072
7173 func t (s,q) = {
7274 let u = value(indexOf(s, (("\"" + q) + "\":")))
7375 let v = drop(s, ((u + size(q)) + 3))
7476 let w = r(v)
7577 w
7678 }
7779
7880
7981 func x (s,q) = {
8082 let u = value(indexOf(s, (("\"" + q) + "\":")))
8183 let v = take(s, ((u + size(q)) + 3))
8284 v
8385 }
8486
8587
8688 func y (s,q) = {
8789 let u = value(indexOf(s, (("\"" + q) + "\":")))
8890 let v = takeRight(s, (size(s) - ((((u + size(q)) + 3) + 0) + 2)))
8991 v
9092 }
9193
9294
93-@Callable(z)
94-func fileCertification (A,B,f,v) = {
95- let C = extract(z.transactionId)
96- let D = d(A, f)
97- let E = i(f)
98- let k = toBase58String(z.caller.bytes)
99- let F = j(k)
100- if ((D != "NONE"))
95+func z (A) = {
96+ let g = A
97+ if ($isInstanceOf(g, "String"))
98+ then {
99+ let B = g
100+ B
101+ }
102+ else throw("Sponsored Public Key String expected")
103+ }
104+
105+
106+@Callable(C)
107+func fileCertification (D,E,f,v,F) = {
108+ let G = extract(C.transactionId)
109+ let H = d(D, f)
110+ let I = i(f)
111+ let J = (this == C.caller)
112+ let k = if (J)
113+ then toString(addressFromPublicKey(fromBase58String(F)))
114+ else toBase58String(C.caller.bytes)
115+ let K = j(k)
116+ if ((H != "NONE"))
101117 then throw("This entry already exist")
102- else if ((E != "NONE"))
118+ else if ((I != "NONE"))
103119 then throw("This uuid already exist")
104120 else if ((size(f) > 36))
105121 then throw("Uuid is too long")
106- else if ((size(A) > 64))
122+ else if ((size(D) > 64))
107123 then throw("Hash is too long")
108- else if ((size(B) > 64))
124+ else if ((size(E) > 64))
109125 then throw("Title is too long")
110- else if ((F > 0))
111- then ScriptResult(WriteSet([DataEntry(f, toBase58String(C)), DataEntry((A + f), toBase58String(C)), DataEntry((B + f), toBase58String(C)), DataEntry(("addr_WHITELISTED_" + k), (F - 1)), DataEntry(((("data_fc_" + toBase58String(C)) + "_") + k), v)]), TransferSet([ScriptTransfer(z.caller, 500000, unit)]))
112- else {
113- let G = extract(z.payment)
114- let H = extract(G.amount)
115- let I = if (isDefined(G.assetId))
116- then extract(G.assetId)
117- else throw("Waves is not accepted as payment")
118- let J = getIntegerValue(a, ("certification_fee_" + toBase58String(extract(I))))
119- if ((c != I))
120- then throw("This token is not accepted at the moment")
121- else if (if ((H != J))
122- then (0 >= F)
123- else false)
124- then throw("The price is wrong")
125- else ScriptResult(WriteSet([DataEntry(f, toBase58String(C)), DataEntry((A + f), toBase58String(C)), DataEntry((B + f), toBase58String(C)), DataEntry(((("data_fc_" + toBase58String(C)) + "_") + k), v)]), TransferSet([ScriptTransfer(addressFromStringValue(b), H, G.assetId)]))
126- }
126+ else if ((K > 0))
127+ then ScriptResult(WriteSet([DataEntry(f, toBase58String(G)), DataEntry((D + f), toBase58String(G)), DataEntry((E + f), toBase58String(G)), DataEntry(("addr_WHITELISTED_" + k), (K - 1)), DataEntry(((("data_fc_" + toBase58String(G)) + "_") + k), v)]), TransferSet([ScriptTransfer(addressFromStringValue(k), 0, c)]))
128+ else if (!(J))
129+ then {
130+ let L = extract(C.payment)
131+ let M = extract(L.amount)
132+ let N = if (isDefined(L.assetId))
133+ then extract(L.assetId)
134+ else throw("Waves is not accepted as payment")
135+ let O = getIntegerValue(a, ("certification_fee_" + toBase58String(extract(N))))
136+ if ((c != N))
137+ then throw("This token is not accepted at the moment")
138+ else if (if ((M != O))
139+ then (0 >= K)
140+ else false)
141+ then throw("The price is wrong")
142+ else ScriptResult(WriteSet([DataEntry(f, toBase58String(G)), DataEntry((D + f), toBase58String(G)), DataEntry((E + f), toBase58String(G)), DataEntry(((("data_fc_" + toBase58String(G)) + "_") + k), v)]), TransferSet([ScriptTransfer(addressFromStringValue(b), M, L.assetId)]))
143+ }
144+ else throw("You are not allowed to do that")
127145 }
128146
129147
130148
131-@Callable(z)
132-func emailCertification (K,f,v) = {
133- let C = extract(z.transactionId)
134- let D = d(K, f)
135- let E = i(f)
136- let k = toBase58String(z.caller.bytes)
137- let F = j(k)
138- if ((D != "NONE"))
149+@Callable(C)
150+func emailCertification (P,f,v,E,F) = {
151+ let G = extract(C.transactionId)
152+ let H = d(P, f)
153+ let I = i(f)
154+ let J = (this == C.caller)
155+ let k = if (J)
156+ then toString(addressFromPublicKey(fromBase58String(F)))
157+ else toBase58String(C.caller.bytes)
158+ let K = j(k)
159+ if ((H != "NONE"))
139160 then throw("This entry already exist")
140- else if ((E != "NONE"))
161+ else if ((I != "NONE"))
141162 then throw("This uuid already exist")
142163 else if ((size(f) > 36))
143164 then throw("Uuid is too long")
144- else if ((F > 0))
145- then ScriptResult(WriteSet([DataEntry(f, toBase58String(C)), DataEntry((K + f), toBase58String(C)), DataEntry(("addr_WHITELISTED_" + k), (F - 1)), DataEntry(((("data_ec_" + toBase58String(C)) + "_") + k), v)]), TransferSet([ScriptTransfer(z.caller, 500000, unit)]))
146- else {
147- let G = extract(z.payment)
148- let H = extract(G.amount)
149- let I = if (isDefined(G.assetId))
150- then extract(G.assetId)
151- else throw("Waves is not accepted as payment")
152- let J = getIntegerValue(a, ("certification_fee_" + toBase58String(extract(I))))
153- if ((c != I))
154- then throw("This token is not accepted at the moment")
155- else if (if ((H != J))
156- then (0 >= F)
157- else false)
158- then throw("The price is wrong")
159- else ScriptResult(WriteSet([DataEntry(f, toBase58String(C)), DataEntry((K + f), toBase58String(C)), DataEntry(((("data_ec_" + toBase58String(C)) + "_") + k), v)]), TransferSet([ScriptTransfer(addressFromStringValue(b), H, G.assetId)]))
160- }
165+ else if ((size(P) > 64))
166+ then throw("Message-id is too long")
167+ else if ((size(E) > 64))
168+ then throw("Title is too long")
169+ else if ((K > 0))
170+ then ScriptResult(WriteSet([DataEntry(f, toBase58String(G)), DataEntry((P + f), toBase58String(G)), DataEntry((E + f), toBase58String(G)), DataEntry(("addr_WHITELISTED_" + k), (K - 1)), DataEntry(((("data_ec_" + toBase58String(G)) + "_") + k), v)]), TransferSet([ScriptTransfer(addressFromStringValue(k), 0, c)]))
171+ else if (!(J))
172+ then {
173+ let L = extract(C.payment)
174+ let M = extract(L.amount)
175+ let N = if (isDefined(L.assetId))
176+ then extract(L.assetId)
177+ else throw("Waves is not accepted as payment")
178+ let O = getIntegerValue(a, ("certification_fee_" + toBase58String(extract(N))))
179+ if ((c != N))
180+ then throw("This token is not accepted at the moment")
181+ else if (if ((M != O))
182+ then (0 >= K)
183+ else false)
184+ then throw("The price is wrong")
185+ else ScriptResult(WriteSet([DataEntry(f, toBase58String(G)), DataEntry((P + f), toBase58String(G)), DataEntry((E + f), toBase58String(G)), DataEntry(((("data_ec_" + toBase58String(G)) + "_") + k), v)]), TransferSet([ScriptTransfer(addressFromStringValue(b), M, L.assetId)]))
186+ }
187+ else throw("You are not allowed to do that")
161188 }
162189
163190
164191
165-@Callable(z)
166-func createAgreement (A,B,L) = {
167- let C = extract(z.transactionId)
168- let k = toBase58String(z.caller.bytes)
169- let F = j(k)
170- let M = ((((x(L, "creator") + "\"") + toBase58String(z.caller.bytes)) + "\"") + y(L, "creator"))
171- let N = [t(L, "address1"), t(L, "address2"), t(L, "address3"), t(L, "address4"), t(L, "address5"), t(L, "address6")]
172- let O = {
173- let P = N
174- let Q = size(P)
175- let R = 0
176- if ((Q == 0))
177- then R
178- else {
179- let S = n(R, P[0])
180- if ((Q == 1))
181- then S
182- else {
183- let T = n(S, P[1])
184- if ((Q == 2))
185- then T
186- else {
187- let U = n(T, P[2])
188- if ((Q == 3))
189- then U
190- else {
191- let V = n(U, P[3])
192- if ((Q == 4))
193- then V
194- else {
195- let W = n(V, P[4])
196- if ((Q == 5))
197- then W
198- else {
199- let X = n(W, P[5])
200- if ((Q == 6))
201- then X
202- else {
203- let Y = n(X, P[6])
204- throw("List size exceed 6")
205- }
206- }
207- }
208- }
209- }
210- }
211- }
212- }
213- let Z = DataEntry(("title_MA_" + toBase58String(C)), B)
214- let aa = DataEntry(("hash_MA_" + toBase58String(C)), A)
215- let ab = DataEntry(((("data_MA_" + toBase58String(C)) + "_") + k), M)
216- let ac = DataEntry(((k + "_MA_") + toBase58String(C)), ("SIGNED_" + toBase58String(C)))
217- let ad = DataEntry(("addr_WHITELISTED_" + k), (F - (O + 1)))
218- if ((O == 1))
219- then if ((F > 0))
220- then if (((O + 1) > F))
221- then throw("You don't have enough certification credit")
222- else ScriptResult(WriteSet([Z, aa, ab, ac, ad, DataEntry(((N[0] + "_MA_") + toBase58String(C)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(N[0]), 0, c)]))
223- else {
224- let G = extract(z.payment)
225- let H = if (isDefined(G.amount))
226- then extract(G.amount)
227- else 0
228- let I = if (isDefined(G.assetId))
229- then extract(G.assetId)
230- else c
231- let J = getIntegerValue(a, ("certification_fee_" + toBase58String(extract(I))))
232- if (((J * (O + 1)) > H))
233- then throw(("The price is wrong, it should be " + toString((J * (O + 1)))))
234- else ScriptResult(WriteSet([Z, aa, ab, ac, DataEntry(((N[0] + "_MA_") + toBase58String(C)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(b), H, c), ScriptTransfer(addressFromStringValue(N[0]), 0, c)]))
235- }
236- else if ((O == 2))
237- then if ((F > 0))
238- then if (((O + 1) > F))
239- then throw("You don't have enough certification credit")
240- else ScriptResult(WriteSet([Z, aa, ab, ac, ad, DataEntry(((N[0] + "_MA_") + toBase58String(C)), "PENDING"), DataEntry(((N[1] + "_MA_") + toBase58String(C)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(N[0]), 0, c), ScriptTransfer(addressFromStringValue(N[1]), 0, c)]))
241- else {
242- let G = extract(z.payment)
243- let H = if (isDefined(G.amount))
244- then extract(G.amount)
245- else 0
246- let I = if (isDefined(G.assetId))
247- then extract(G.assetId)
248- else c
249- let J = getIntegerValue(a, ("certification_fee_" + toBase58String(extract(I))))
250- if (((J * (O + 1)) > H))
251- then throw(("The price is wrong, it should be " + toString((J * (O + 1)))))
252- else ScriptResult(WriteSet([Z, aa, ab, ac, DataEntry(((N[0] + "_MA_") + toBase58String(C)), "PENDING"), DataEntry(((N[1] + "_MA_") + toBase58String(C)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(b), H, c), ScriptTransfer(addressFromStringValue(N[0]), 0, c), ScriptTransfer(addressFromStringValue(N[1]), 0, c)]))
253- }
254- else if ((O == 3))
255- then if ((F > 0))
256- then if (((O + 1) > F))
257- then throw("You don't have enough certification credit")
258- else ScriptResult(WriteSet([Z, aa, ab, ac, ad, DataEntry(((N[0] + "_MA_") + toBase58String(C)), "PENDING"), DataEntry(((N[1] + "_MA_") + toBase58String(C)), "PENDING"), DataEntry(((N[2] + "_MA_") + toBase58String(C)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(N[0]), 0, c), ScriptTransfer(addressFromStringValue(N[1]), 0, c), ScriptTransfer(addressFromStringValue(N[2]), 0, c)]))
259- else {
260- let G = extract(z.payment)
261- let H = if (isDefined(G.amount))
262- then extract(G.amount)
263- else 0
264- let I = if (isDefined(G.assetId))
265- then extract(G.assetId)
266- else c
267- let J = getIntegerValue(a, ("certification_fee_" + toBase58String(extract(I))))
268- if (((J * (O + 1)) > H))
269- then throw(("The price is wrong, it should be " + toString((J * (O + 1)))))
270- else ScriptResult(WriteSet([Z, aa, ab, ac, DataEntry(((N[0] + "_MA_") + toBase58String(C)), "PENDING"), DataEntry(((N[1] + "_MA_") + toBase58String(C)), "PENDING"), DataEntry(((N[2] + "_MA_") + toBase58String(C)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(b), H, c), ScriptTransfer(addressFromStringValue(N[0]), 0, c), ScriptTransfer(addressFromStringValue(N[1]), 0, c), ScriptTransfer(addressFromStringValue(N[2]), 0, c)]))
271- }
272- else if ((O == 4))
273- then if ((F > 0))
274- then if (((O + 1) > F))
275- then throw("You don't have enough certification credit")
276- else ScriptResult(WriteSet([Z, aa, ab, ac, ad, DataEntry(((N[0] + "_MA_") + toBase58String(C)), "PENDING"), DataEntry(((N[1] + "_MA_") + toBase58String(C)), "PENDING"), DataEntry(((N[2] + "_MA_") + toBase58String(C)), "PENDING"), DataEntry(((N[3] + "_MA_") + toBase58String(C)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(N[0]), 0, c), ScriptTransfer(addressFromStringValue(N[1]), 0, c), ScriptTransfer(addressFromStringValue(N[2]), 0, c), ScriptTransfer(addressFromStringValue(N[3]), 0, c)]))
277- else {
278- let G = extract(z.payment)
279- let H = if (isDefined(G.amount))
280- then extract(G.amount)
281- else 0
282- let I = if (isDefined(G.assetId))
283- then extract(G.assetId)
284- else c
285- let J = getIntegerValue(a, ("certification_fee_" + toBase58String(extract(I))))
286- if (((J * (O + 1)) > H))
287- then throw(("The price is wrong, it should be " + toString((J * (O + 1)))))
288- else ScriptResult(WriteSet([Z, aa, ab, ac, DataEntry(((N[0] + "_MA_") + toBase58String(C)), "PENDING"), DataEntry(((N[1] + "_MA_") + toBase58String(C)), "PENDING"), DataEntry(((N[2] + "_MA_") + toBase58String(C)), "PENDING"), DataEntry(((N[3] + "_MA_") + toBase58String(C)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(b), H, c), ScriptTransfer(addressFromStringValue(N[0]), 0, c), ScriptTransfer(addressFromStringValue(N[1]), 0, c), ScriptTransfer(addressFromStringValue(N[2]), 0, c), ScriptTransfer(addressFromStringValue(N[3]), 0, c)]))
289- }
290- else if ((O == 5))
291- then if ((F > 0))
292- then if (((O + 1) > F))
192+@Callable(C)
193+func createAgreement (D,E,Q,R,F,f) = {
194+ let G = extract(C.transactionId)
195+ let H = d(D, f)
196+ let I = i(f)
197+ let J = (this == C.caller)
198+ let k = if (J)
199+ then toString(addressFromPublicKey(fromBase58String(F)))
200+ else toBase58String(C.caller.bytes)
201+ let K = j(k)
202+ let S = ((((x(Q, "creator") + "\"") + k) + "\"") + y(Q, "creator"))
203+ let T = [t(Q, "address1"), t(Q, "address2"), t(Q, "address3"), t(Q, "address4"), t(Q, "address5"), t(Q, "address6")]
204+ let U = R
205+ let V = DataEntry((E + f), toBase58String(G))
206+ let W = DataEntry((D + f), toBase58String(G))
207+ let X = DataEntry(((("data_MA_" + toBase58String(G)) + "_") + k), S)
208+ let Y = DataEntry(((k + "_MA_") + toBase58String(G)), ("SIGNED_" + toBase58String(G)))
209+ let Z = DataEntry(("addr_WHITELISTED_" + k), (K - (U + 1)))
210+ if ((H != "NONE"))
211+ then throw("This entry already exist")
212+ else if ((I != "NONE"))
213+ then throw("This uuid already exist")
214+ else if ((size(f) > 36))
215+ then throw("Uuid is too long")
216+ else if ((size(D) > 64))
217+ then throw("Message-id is too long")
218+ else if ((size(E) > 64))
219+ then throw("Title is too long")
220+ else if ((K > 0))
221+ then if (((U + 1) > K))
293222 then throw("You don't have enough certification credit")
294- else ScriptResult(WriteSet([Z, aa, ab, ac, ad, DataEntry(((N[0] + "_MA_") + toBase58String(C)), "PENDING"), DataEntry(((N[1] + "_MA_") + toBase58String(C)), "PENDING"), DataEntry(((N[2] + "_MA_") + toBase58String(C)), "PENDING"), DataEntry(((N[3] + "_MA_") + toBase58String(C)), "PENDING"), DataEntry(((N[4] + "_MA_") + toBase58String(C)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(N[0]), 0, c), ScriptTransfer(addressFromStringValue(N[1]), 0, c), ScriptTransfer(addressFromStringValue(N[2]), 0, c), ScriptTransfer(addressFromStringValue(N[3]), 0, c), ScriptTransfer(addressFromStringValue(N[4]), 0, c)]))
295- else {
296- let G = extract(z.payment)
297- let H = if (isDefined(G.amount))
298- then extract(G.amount)
299- else 0
300- let I = if (isDefined(G.assetId))
301- then extract(G.assetId)
302- else c
303- let J = getIntegerValue(a, ("certification_fee_" + toBase58String(extract(I))))
304- if (((J * (O + 1)) > H))
305- then throw(("The price is wrong, it should be " + toString((J * (O + 1)))))
306- else ScriptResult(WriteSet([Z, aa, ab, ac, DataEntry(((N[0] + "_MA_") + toBase58String(C)), "PENDING"), DataEntry(((N[1] + "_MA_") + toBase58String(C)), "PENDING"), DataEntry(((N[2] + "_MA_") + toBase58String(C)), "PENDING"), DataEntry(((N[3] + "_MA_") + toBase58String(C)), "PENDING"), DataEntry(((N[4] + "_MA_") + toBase58String(C)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(b), H, c), ScriptTransfer(addressFromStringValue(N[0]), 0, c), ScriptTransfer(addressFromStringValue(N[1]), 0, c), ScriptTransfer(addressFromStringValue(N[2]), 0, c), ScriptTransfer(addressFromStringValue(N[3]), 0, c), ScriptTransfer(addressFromStringValue(N[4]), 0, c)]))
307- }
308- else if ((O == 6))
309- then if ((F > 0))
310- then if (((O + 1) > F))
311- then throw("You don't have enough certification credit")
312- else ScriptResult(WriteSet([Z, aa, ab, ac, ad, DataEntry(((N[0] + "_MA_") + toBase58String(C)), "PENDING"), DataEntry(((N[1] + "_MA_") + toBase58String(C)), "PENDING"), DataEntry(((N[2] + "_MA_") + toBase58String(C)), "PENDING"), DataEntry(((N[3] + "_MA_") + toBase58String(C)), "PENDING"), DataEntry(((N[4] + "_MA_") + toBase58String(C)), "PENDING"), DataEntry(((N[5] + "_MA_") + toBase58String(C)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(N[0]), 0, c), ScriptTransfer(addressFromStringValue(N[1]), 0, c), ScriptTransfer(addressFromStringValue(N[2]), 0, c), ScriptTransfer(addressFromStringValue(N[3]), 0, c), ScriptTransfer(addressFromStringValue(N[4]), 0, c), ScriptTransfer(addressFromStringValue(N[5]), 0, c)]))
313- else {
314- let G = extract(z.payment)
315- let H = if (isDefined(G.amount))
316- then extract(G.amount)
223+ else if ((U == 6))
224+ then ScriptResult(WriteSet([V, W, X, Y, Z, DataEntry(((T[0] + "_MA_") + toBase58String(G)), "PENDING"), DataEntry(((T[1] + "_MA_") + toBase58String(G)), "PENDING"), DataEntry(((T[2] + "_MA_") + toBase58String(G)), "PENDING"), DataEntry(((T[3] + "_MA_") + toBase58String(G)), "PENDING"), DataEntry(((T[4] + "_MA_") + toBase58String(G)), "PENDING"), DataEntry(((T[5] + "_MA_") + toBase58String(G)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(k), 0, c), ScriptTransfer(addressFromStringValue(T[0]), 0, c), ScriptTransfer(addressFromStringValue(T[1]), 0, c), ScriptTransfer(addressFromStringValue(T[2]), 0, c), ScriptTransfer(addressFromStringValue(T[3]), 0, c), ScriptTransfer(addressFromStringValue(T[4]), 0, c), ScriptTransfer(addressFromStringValue(T[5]), 0, c)]))
225+ else if ((U == 5))
226+ then ScriptResult(WriteSet([V, W, X, Y, Z, DataEntry(((T[0] + "_MA_") + toBase58String(G)), "PENDING"), DataEntry(((T[1] + "_MA_") + toBase58String(G)), "PENDING"), DataEntry(((T[2] + "_MA_") + toBase58String(G)), "PENDING"), DataEntry(((T[3] + "_MA_") + toBase58String(G)), "PENDING"), DataEntry(((T[4] + "_MA_") + toBase58String(G)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(k), 0, c), ScriptTransfer(addressFromStringValue(T[0]), 0, c), ScriptTransfer(addressFromStringValue(T[1]), 0, c), ScriptTransfer(addressFromStringValue(T[2]), 0, c), ScriptTransfer(addressFromStringValue(T[3]), 0, c), ScriptTransfer(addressFromStringValue(T[4]), 0, c)]))
227+ else if ((U == 4))
228+ then ScriptResult(WriteSet([V, W, X, Y, Z, DataEntry(((T[0] + "_MA_") + toBase58String(G)), "PENDING"), DataEntry(((T[1] + "_MA_") + toBase58String(G)), "PENDING"), DataEntry(((T[2] + "_MA_") + toBase58String(G)), "PENDING"), DataEntry(((T[3] + "_MA_") + toBase58String(G)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(k), 0, c), ScriptTransfer(addressFromStringValue(T[0]), 0, c), ScriptTransfer(addressFromStringValue(T[1]), 0, c), ScriptTransfer(addressFromStringValue(T[2]), 0, c), ScriptTransfer(addressFromStringValue(T[3]), 0, c)]))
229+ else if ((U == 3))
230+ then ScriptResult(WriteSet([V, W, X, Y, Z, DataEntry(((T[0] + "_MA_") + toBase58String(G)), "PENDING"), DataEntry(((T[1] + "_MA_") + toBase58String(G)), "PENDING"), DataEntry(((T[2] + "_MA_") + toBase58String(G)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(k), 0, c), ScriptTransfer(addressFromStringValue(T[0]), 0, c), ScriptTransfer(addressFromStringValue(T[1]), 0, c), ScriptTransfer(addressFromStringValue(T[2]), 0, c)]))
231+ else if ((U == 2))
232+ then ScriptResult(WriteSet([V, W, X, Y, Z, DataEntry(((T[0] + "_MA_") + toBase58String(G)), "PENDING"), DataEntry(((T[1] + "_MA_") + toBase58String(G)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(k), 0, c), ScriptTransfer(addressFromStringValue(T[0]), 0, c), ScriptTransfer(addressFromStringValue(T[1]), 0, c)]))
233+ else if ((U == 1))
234+ then ScriptResult(WriteSet([V, W, X, Y, Z, DataEntry(((T[0] + "_MA_") + toBase58String(G)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(k), 0, c), ScriptTransfer(addressFromStringValue(T[0]), 0, c)]))
235+ else throw("Wrong number of participants")
236+ else if (!(J))
237+ then {
238+ let L = extract(C.payment)
239+ let M = if (isDefined(L.amount))
240+ then extract(L.amount)
317241 else 0
318- let I = if (isDefined(G.assetId))
319- then extract(G.assetId)
242+ let N = if (isDefined(L.assetId))
243+ then extract(L.assetId)
320244 else c
321- let J = getIntegerValue(a, ("certification_fee_" + toBase58String(extract(I))))
322- if (((J * (O + 1)) > H))
323- then throw(("The price is wrong, it should be " + toString((J * (O + 1)))))
324- else ScriptResult(WriteSet([Z, aa, ab, ac, DataEntry(((N[0] + "_MA_") + toBase58String(C)), "PENDING"), DataEntry(((N[1] + "_MA_") + toBase58String(C)), "PENDING"), DataEntry(((N[2] + "_MA_") + toBase58String(C)), "PENDING"), DataEntry(((N[3] + "_MA_") + toBase58String(C)), "PENDING"), DataEntry(((N[4] + "_MA_") + toBase58String(C)), "PENDING"), DataEntry(((N[5] + "_MA_") + toBase58String(C)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(b), H, c), ScriptTransfer(addressFromStringValue(N[0]), 0, c), ScriptTransfer(addressFromStringValue(N[1]), 0, c), ScriptTransfer(addressFromStringValue(N[2]), 0, c), ScriptTransfer(addressFromStringValue(N[3]), 0, c), ScriptTransfer(addressFromStringValue(N[4]), 0, c), ScriptTransfer(addressFromStringValue(N[5]), 0, c)]))
245+ let O = getIntegerValue(a, ("certification_fee_" + toBase58String(extract(N))))
246+ if (((O * (U + 1)) > M))
247+ then throw(("The price is wrong, it should be " + toString((O * (U + 1)))))
248+ else if ((U == 6))
249+ then ScriptResult(WriteSet([V, W, X, Y, DataEntry(((T[0] + "_MA_") + toBase58String(G)), "PENDING"), DataEntry(((T[1] + "_MA_") + toBase58String(G)), "PENDING"), DataEntry(((T[2] + "_MA_") + toBase58String(G)), "PENDING"), DataEntry(((T[3] + "_MA_") + toBase58String(G)), "PENDING"), DataEntry(((T[4] + "_MA_") + toBase58String(G)), "PENDING"), DataEntry(((T[5] + "_MA_") + toBase58String(G)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(b), M, c), ScriptTransfer(addressFromStringValue(T[0]), 0, c), ScriptTransfer(addressFromStringValue(T[1]), 0, c), ScriptTransfer(addressFromStringValue(T[2]), 0, c), ScriptTransfer(addressFromStringValue(T[3]), 0, c), ScriptTransfer(addressFromStringValue(T[4]), 0, c), ScriptTransfer(addressFromStringValue(T[5]), 0, c)]))
250+ else if ((U == 5))
251+ then ScriptResult(WriteSet([V, W, X, Y, DataEntry(((T[0] + "_MA_") + toBase58String(G)), "PENDING"), DataEntry(((T[1] + "_MA_") + toBase58String(G)), "PENDING"), DataEntry(((T[2] + "_MA_") + toBase58String(G)), "PENDING"), DataEntry(((T[3] + "_MA_") + toBase58String(G)), "PENDING"), DataEntry(((T[4] + "_MA_") + toBase58String(G)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(b), M, c), ScriptTransfer(addressFromStringValue(T[0]), 0, c), ScriptTransfer(addressFromStringValue(T[1]), 0, c), ScriptTransfer(addressFromStringValue(T[2]), 0, c), ScriptTransfer(addressFromStringValue(T[3]), 0, c), ScriptTransfer(addressFromStringValue(T[4]), 0, c)]))
252+ else if ((U == 4))
253+ then ScriptResult(WriteSet([V, W, X, Y, DataEntry(((T[0] + "_MA_") + toBase58String(G)), "PENDING"), DataEntry(((T[1] + "_MA_") + toBase58String(G)), "PENDING"), DataEntry(((T[2] + "_MA_") + toBase58String(G)), "PENDING"), DataEntry(((T[3] + "_MA_") + toBase58String(G)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(b), M, c), ScriptTransfer(addressFromStringValue(T[0]), 0, c), ScriptTransfer(addressFromStringValue(T[1]), 0, c), ScriptTransfer(addressFromStringValue(T[2]), 0, c), ScriptTransfer(addressFromStringValue(T[3]), 0, c)]))
254+ else if ((U == 3))
255+ then ScriptResult(WriteSet([V, W, X, Y, DataEntry(((T[0] + "_MA_") + toBase58String(G)), "PENDING"), DataEntry(((T[1] + "_MA_") + toBase58String(G)), "PENDING"), DataEntry(((T[2] + "_MA_") + toBase58String(G)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(b), M, c), ScriptTransfer(addressFromStringValue(T[0]), 0, c), ScriptTransfer(addressFromStringValue(T[1]), 0, c), ScriptTransfer(addressFromStringValue(T[2]), 0, c)]))
256+ else if ((U == 2))
257+ then ScriptResult(WriteSet([V, W, X, Y, DataEntry(((T[0] + "_MA_") + toBase58String(G)), "PENDING"), DataEntry(((T[1] + "_MA_") + toBase58String(G)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(b), M, c), ScriptTransfer(addressFromStringValue(T[0]), 0, c), ScriptTransfer(addressFromStringValue(T[1]), 0, c)]))
258+ else if ((U == 1))
259+ then ScriptResult(WriteSet([V, W, X, Y, DataEntry(((T[0] + "_MA_") + toBase58String(G)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(b), M, c), ScriptTransfer(addressFromStringValue(T[0]), 0, c)]))
260+ else throw(("Needs 1 to 6 recipient addresses, currently sent: " + toString(U)))
325261 }
326- else throw(("Needs 1 to 6 recipient addresses, currently sent: " + toString(O)))
262+ else throw("You are not allowed to do that")
327263 }
328264
329265
330266
331-@Callable(z)
332-func signAgreement (A,ae) = {
333- let G = extract(z.payment)
334- let H = extract(G.amount)
335- let C = extract(z.transactionId)
336- let af = toBase58String(z.caller.bytes)
337- let ag = p(((af + "_MA_") + ae))
338- if (!(ag))
267+@Callable(C)
268+func signAgreement (D,aa,F) = {
269+ let L = extract(C.payment)
270+ let M = extract(L.amount)
271+ let G = extract(C.transactionId)
272+ let J = (this == C.caller)
273+ let ab = if (J)
274+ then toString(addressFromPublicKey(fromBase58String(F)))
275+ else toBase58String(C.caller.bytes)
276+ let ac = p(((ab + "_MA_") + aa))
277+ if (!(ac))
339278 then throw("Sorry there is no pending signature")
340- else ScriptResult(WriteSet([DataEntry(((af + "_MA_") + ae), ("SIGNED_" + toBase58String(C)))]), TransferSet([ScriptTransfer(addressFromStringValue(af), 500000, unit)]))
279+ else ScriptResult(WriteSet([DataEntry(((ab + "_MA_") + aa), ("SIGNED_" + toBase58String(G)))]), TransferSet([ScriptTransfer(addressFromStringValue(ab), 0, c)]))
341280 }
342281
282+
283+
284+@Callable(C)
285+func usdnSignCredits () = {
286+ let L = extract(C.payment)
287+ let k = toBase58String(C.caller.bytes)
288+ let ad = extract(L.assetId)
289+ let M = extract(L.amount)
290+ let ae = ((M * 2) / 1000000)
291+ let K = j(k)
292+ if ((toBase58String(ad) != "3KFXBGGLCjA5Z2DuW4Dq9fDDrHjJJP1ZEkaoajSzuKsC"))
293+ then throw("Only USDN can be exchanged")
294+ else if (if (((M % 1000000) != 0))
295+ then ((M % 1000000) != 500000)
296+ else false)
297+ then throw(((("You can only exchange multiple of 0.5, you sent:" + dropRight(toString(M), 6)) + ".") + takeRight(toString(M), 6)))
298+ else ScriptResult(WriteSet([DataEntry(("addr_WHITELISTED_" + k), (K + ae))]), TransferSet([ScriptTransfer(addressFromStringValue(b), M, ad)]))
299+ }
300+
301+
302+@Verifier(af)
303+func ag () = {
304+ let g = af
305+ if ($isInstanceOf(g, "InvokeScriptTransaction"))
306+ then {
307+ let ah = g
308+ if (if (if ((ah.function == "fileCertification"))
309+ then true
310+ else (ah.function == "emailCertification"))
311+ then true
312+ else (ah.function == "createAgreement"))
313+ then sigVerify(af.bodyBytes, af.proofs[0], fromBase58String(z(ah.args[4])))
314+ else if ((ah.function == "signAgreement"))
315+ then sigVerify(af.bodyBytes, af.proofs[0], fromBase58String(z(ah.args[2])))
316+ else sigVerify(af.bodyBytes, af.proofs[0], af.senderPublicKey)
317+ }
318+ else sigVerify(af.bodyBytes, af.proofs[0], af.senderPublicKey)
319+ }
343320

github/deemru/w8io/169f3d6 
109.75 ms