#pragma version 6 intcblock 1 0 127 2 1000 86400 128 255 bytecblock 0x 0x0008 0x677561726469616e 0x63757272656e74477561726469616e536574496e646578 0x6e6f70 0x76657269667953696773 0x4d657373616765466565 0x76616c6964557064617465417070726f766548617368 0x767068617368 0x766572696679564141 0x7075626c6973684d657373616765 0x0001 0x0000000000000000000000000000000000000000000000000000000000000004 0x00000000000000000000000000000000000000000000000000000000436f7265 0x0000 0x626f6f746564 0x50726f6772616d 0x6d657461 txn ApplicationID intc_1 // 0 == bnz main_l75 txn OnCompletion pushint 4 // UpdateApplication == bnz main_l74 txn OnCompletion pushint 5 // DeleteApplication == bnz main_l73 txn OnCompletion intc_0 // OptIn == bnz main_l72 txn OnCompletion intc_1 // NoOp == bnz main_l6 err main_l6: txna ApplicationArgs 0 bytec 10 // "publishMessage" == bnz main_l69 txna ApplicationArgs 0 bytec 4 // "nop" == bnz main_l68 txna ApplicationArgs 0 pushbytes 0x696e6974 // "init" == bnz main_l52 txna ApplicationArgs 0 bytec 5 // "verifySigs" == bnz main_l51 txna ApplicationArgs 0 bytec 9 // "verifyVAA" == bnz main_l29 txna ApplicationArgs 0 pushbytes 0x676f7665726e616e6365 // "governance" == bnz main_l13 err main_l13: callsub checkForDuplicate_11 txn GroupIndex intc_0 // 1 - gtxns TypeEnum pushint 6 // appl == txn GroupIndex intc_0 // 1 - gtxns ApplicationID txn ApplicationID == && txn GroupIndex intc_0 // 1 - gtxnsa ApplicationArgs 0 bytec 9 // "verifyVAA" == && txn GroupIndex intc_0 // 1 - gtxns Sender txn Sender == && txn GroupIndex intc_0 // 1 - gtxns RekeyTo global ZeroAddress == && txn GroupIndex intc_0 // 1 - gtxns OnCompletion intc_1 // NoOp == && txn GroupIndex intc_0 // 1 - gtxnsa ApplicationArgs 1 txna ApplicationArgs 1 == && txn GroupIndex gtxns RekeyTo global ZeroAddress == && txn GroupIndex gtxns Sender txn Sender == && txn GroupIndex intc_0 // 1 - gtxnsa Accounts 0 txna Accounts 0 == && txn GroupIndex intc_0 // 1 - gtxnsa Accounts 1 txna Accounts 1 == && txn GroupIndex intc_0 // 1 - gtxnsa Accounts 2 txna Accounts 2 == && assert bytec_3 // "currentGuardianSetIndex" app_global_get store 26 load 26 intc_1 // 0 != bnz main_l28 main_l14: txna ApplicationArgs 1 extract 5 1 btoi pushint 66 // 66 * pushint 14 // 14 + store 21 txna ApplicationArgs 1 load 21 intc_3 // 2 extract3 bytec 11 // 0x0001 == assert txna ApplicationArgs 1 load 21 intc_3 // 2 + pushint 32 // 32 extract3 bytec 12 // 0x0000000000000000000000000000000000000000000000000000000000000004 == assert load 21 pushint 43 // 43 + store 21 txna ApplicationArgs 1 load 21 pushint 32 // 32 extract3 bytec 13 // 0x00000000000000000000000000000000000000000000000000000000436f7265 == assert load 21 pushint 32 // 32 + store 21 txna ApplicationArgs 1 load 21 intc_0 // 1 + intc_3 // 2 extract3 store 28 txna ApplicationArgs 1 load 21 intc_0 // 1 extract3 btoi store 22 load 22 intc_0 // 1 == bnz main_l27 load 22 intc_3 // 2 == bnz main_l22 load 22 pushint 3 // 3 == bnz main_l21 load 22 pushint 4 // 4 == bnz main_l19 err main_l19: load 21 intc_0 // 1 + store 21 load 28 bytec_1 // 0x0008 == assert load 21 pushint 26 // 26 + store 21 txna ApplicationArgs 1 load 21 pushint 8 // 8 extract3 btoi store 24 load 21 pushint 8 // 8 + store 21 txna ApplicationArgs 1 load 21 pushint 32 // 32 extract3 store 23 itxn_begin intc_0 // pay itxn_field TypeEnum load 23 itxn_field Receiver load 24 itxn_field Amount intc_1 // 0 itxn_field Fee itxn_submit main_l20: intc_0 // 1 return intc_0 // 1 return main_l21: load 21 intc_0 // 1 + store 21 load 28 bytec_1 // 0x0008 == assert load 21 intc_3 // 2 + pushint 24 // 24 + store 21 txna ApplicationArgs 1 load 21 pushint 8 // 8 extract3 btoi store 24 bytec 6 // "MessageFee" load 24 app_global_put b main_l20 main_l22: load 28 bytec_1 // 0x0008 == load 28 bytec 14 // 0x0000 == || assert load 21 pushint 3 // 3 + store 21 txna ApplicationArgs 1 load 21 pushint 4 // 4 extract3 btoi store 25 txna Accounts 3 load 25 bytec_2 // "guardian" callsub getsigaddress_9 == assert intc_1 // 0 intc_1 // 0 == bnz main_l26 main_l23: bytec_3 // "currentGuardianSetIndex" load 25 app_global_put load 21 pushint 4 // 4 + store 21 txna ApplicationArgs 1 load 21 intc_0 // 1 extract3 btoi store 27 load 27 intc_1 // 0 > assert pushint 3 // 3 intc_1 // 0 txna ApplicationArgs 1 load 21 intc_0 // 1 pushint 20 // 20 load 27 * + extract3 callsub write_7 pop txna Accounts 3 txna Accounts 2 != bnz main_l25 main_l24: pushint 3 // 3 bytec_2 // "guardian" callsub meta_5 b main_l20 main_l25: intc_3 // 2 intc 4 // 1000 global LatestTimestamp intc 5 // 86400 + itob callsub write_7 pop b main_l24 main_l26: txna Accounts 3 txna Accounts 2 != assert load 25 load 26 intc_0 // 1 + == assert b main_l23 main_l27: load 28 bytec_1 // 0x0008 == assert load 21 pushint 3 // 3 + store 21 bytec 7 // "validUpdateApproveHash" txna ApplicationArgs 1 load 21 pushint 32 // 32 extract3 app_global_put b main_l20 main_l28: txna ApplicationArgs 1 extract 1 4 store 25 load 25 btoi load 26 == assert b main_l14 main_l29: txna Accounts 2 txna ApplicationArgs 1 extract 1 4 btoi bytec_2 // "guardian" callsub getsigaddress_9 == assert intc_3 // 2 bytec_2 // "guardian" callsub checkMeta_6 intc_3 // 2 intc_1 // 0 callsub getbyte_2 store 12 load 12 intc_1 // 0 > assert intc_3 // 2 intc_0 // 1 intc_0 // 1 pushint 20 // 20 load 12 * + callsub read_4 store 13 intc_3 // 2 intc 4 // 1000 pushint 1008 // 1008 callsub read_4 btoi store 18 load 18 intc_1 // 0 != bnz main_l50 main_l30: pushbytes 0x00000000 // 0x00000000 store 17 txna ApplicationArgs 1 extract 5 1 btoi store 14 pushint 6 // 6 load 14 pushint 66 // 66 * + store 15 txna ApplicationArgs 1 load 15 txna ApplicationArgs 1 len load 15 - extract3 keccak256 keccak256 store 16 load 12 intc_1 // 0 > load 14 load 12 <= && load 14 load 12 intc_3 // 2 * pushint 3 // 3 / > && assert pushint 6 // 6 store 15 txn GroupIndex intc_1 // 0 > assert txn GroupIndex intc_0 // 1 - store 10 load 10 gtxns NumAppArgs intc_1 // 0 > assert load 10 gtxnsa ApplicationArgs 0 store 11 main_l31: load 10 intc_1 // 0 > load 11 bytec 5 // "verifySigs" == load 11 bytec 4 // "nop" == || && bnz main_l47 main_l32: load 11 bytec 5 // "verifySigs" != load 11 bytec 4 // "nop" != && bnz main_l46 main_l33: load 10 txn GroupIndex <= bnz main_l35 load 15 pushint 6 // 6 load 14 pushint 66 // 66 * + == assert intc_0 // 1 return main_l35: load 10 gtxns TypeEnum pushint 6 // appl == load 10 gtxns RekeyTo global ZeroAddress == && load 10 gtxns ApplicationID txn ApplicationID == && load 10 gtxnsa Accounts 1 txna Accounts 1 == && load 10 gtxnsa Accounts 2 txna Accounts 2 == && assert load 10 gtxnsa ApplicationArgs 0 store 11 load 11 bytec 5 // "verifySigs" == bnz main_l42 load 11 bytec 4 // "nop" == bnz main_l41 load 11 bytec 9 // "verifyVAA" == bnz main_l41 intc_0 // 1 intc_0 // 1 == bnz main_l40 err main_l40: intc_1 // 0 return main_l41: load 10 intc_0 // 1 + store 10 b main_l33 main_l42: load 10 gtxnsa ApplicationArgs 1 store 18 load 18 len intc_1 // 0 > assert txna ApplicationArgs 1 load 15 load 18 len extract3 load 18 == assert load 15 load 18 len + store 19 bytec_0 // "" store 18 main_l43: load 15 load 19 < bnz main_l45 load 10 gtxnsa ApplicationArgs 2 load 18 == load 10 gtxns Sender bytec 8 // "vphash" app_global_get == && load 10 gtxnsa ApplicationArgs 3 load 16 == && assert b main_l41 main_l45: txna ApplicationArgs 1 load 15 intc_0 // 1 extract3 btoi store 20 load 17 load 20 getbit intc_1 // 0 == assert load 17 load 20 intc_0 // 1 setbit store 17 load 18 load 13 load 20 pushint 20 // 20 * pushint 20 // 20 extract3 concat store 18 load 15 pushint 66 // 66 + store 15 b main_l43 main_l46: load 10 intc_0 // 1 + store 10 b main_l33 main_l47: load 10 intc_0 // 1 - store 10 load 10 gtxns NumAppArgs intc_1 // 0 > bnz main_l49 bytec_0 // "" store 11 b main_l32 main_l49: load 10 gtxnsa ApplicationArgs 0 store 11 b main_l31 main_l50: global LatestTimestamp load 18 < assert b main_l30 main_l51: txn Sender bytec 8 // "vphash" app_global_get == return main_l52: bytec 8 // "vphash" txna ApplicationArgs 2 app_global_put txn Sender global CreatorAddress == assert bytec 15 // "booted" app_global_get intc_1 // 0 == assert bytec 15 // "booted" pushbytes 0x74727565 // "true" app_global_put callsub checkForDuplicate_11 bytec_3 // "currentGuardianSetIndex" app_global_get store 7 load 7 intc_1 // 0 != bnz main_l67 main_l53: txna ApplicationArgs 1 extract 5 1 btoi pushint 66 // 66 * pushint 14 // 14 + store 2 txna ApplicationArgs 1 load 2 intc_3 // 2 extract3 bytec 11 // 0x0001 == assert txna ApplicationArgs 1 load 2 intc_3 // 2 + pushint 32 // 32 extract3 bytec 12 // 0x0000000000000000000000000000000000000000000000000000000000000004 == assert load 2 pushint 43 // 43 + store 2 txna ApplicationArgs 1 load 2 pushint 32 // 32 extract3 bytec 13 // 0x00000000000000000000000000000000000000000000000000000000436f7265 == assert load 2 pushint 32 // 32 + store 2 txna ApplicationArgs 1 load 2 intc_0 // 1 + intc_3 // 2 extract3 store 9 txna ApplicationArgs 1 load 2 intc_0 // 1 extract3 btoi store 3 load 3 intc_0 // 1 == bnz main_l66 load 3 intc_3 // 2 == bnz main_l61 load 3 pushint 3 // 3 == bnz main_l60 load 3 pushint 4 // 4 == bnz main_l58 err main_l58: load 2 intc_0 // 1 + store 2 load 9 bytec_1 // 0x0008 == assert load 2 pushint 26 // 26 + store 2 txna ApplicationArgs 1 load 2 pushint 8 // 8 extract3 btoi store 5 load 2 pushint 8 // 8 + store 2 txna ApplicationArgs 1 load 2 pushint 32 // 32 extract3 store 4 itxn_begin intc_0 // pay itxn_field TypeEnum load 4 itxn_field Receiver load 5 itxn_field Amount intc_1 // 0 itxn_field Fee itxn_submit main_l59: intc_0 // 1 return main_l60: load 2 intc_0 // 1 + store 2 load 9 bytec_1 // 0x0008 == assert load 2 intc_3 // 2 + pushint 24 // 24 + store 2 txna ApplicationArgs 1 load 2 pushint 8 // 8 extract3 btoi store 5 bytec 6 // "MessageFee" load 5 app_global_put b main_l59 main_l61: load 9 bytec_1 // 0x0008 == load 9 bytec 14 // 0x0000 == || assert load 2 pushint 3 // 3 + store 2 txna ApplicationArgs 1 load 2 pushint 4 // 4 extract3 btoi store 6 txna Accounts 3 load 6 bytec_2 // "guardian" callsub getsigaddress_9 == assert intc_0 // 1 intc_1 // 0 == bnz main_l65 main_l62: bytec_3 // "currentGuardianSetIndex" load 6 app_global_put load 2 pushint 4 // 4 + store 2 txna ApplicationArgs 1 load 2 intc_0 // 1 extract3 btoi store 8 load 8 intc_1 // 0 > assert pushint 3 // 3 intc_1 // 0 txna ApplicationArgs 1 load 2 intc_0 // 1 pushint 20 // 20 load 8 * + extract3 callsub write_7 pop txna Accounts 3 txna Accounts 2 != bnz main_l64 main_l63: pushint 3 // 3 bytec_2 // "guardian" callsub meta_5 b main_l59 main_l64: intc_3 // 2 intc 4 // 1000 global LatestTimestamp intc 5 // 86400 + itob callsub write_7 pop b main_l63 main_l65: txna Accounts 3 txna Accounts 2 != assert load 6 load 7 intc_0 // 1 + == assert b main_l62 main_l66: load 9 bytec_1 // 0x0008 == assert load 2 pushint 3 // 3 + store 2 bytec 7 // "validUpdateApproveHash" txna ApplicationArgs 1 load 2 pushint 32 // 32 extract3 app_global_put b main_l59 main_l67: txna ApplicationArgs 1 extract 1 4 store 6 load 6 btoi load 7 == assert b main_l53 main_l68: intc_0 // 1 return main_l69: txna Accounts 1 intc_1 // 0 txn Sender callsub getsigaddress_9 == assert bytec 6 // "MessageFee" app_global_get store 1 load 1 intc_1 // 0 > bnz main_l71 main_l70: intc_0 // 1 intc_1 // 0 pushint 8 // 8 callsub read_4 btoi intc_0 // 1 + itob store 0 intc_0 // 1 intc_1 // 0 load 0 callsub write_7 pop load 0 log intc_0 // 1 bytec 10 // "publishMessage" callsub meta_5 intc_0 // 1 return main_l71: txn GroupIndex intc_0 // 1 - gtxns TypeEnum intc_0 // pay == txn GroupIndex intc_0 // 1 - gtxns Amount load 1 >= && txn GroupIndex intc_0 // 1 - gtxns Receiver global CurrentApplicationAddress == && txn GroupIndex intc_0 // 1 - gtxns RekeyTo global ZeroAddress == && assert b main_l70 main_l72: callsub optin_10 return main_l73: intc_1 // 0 return main_l74: bytec 16 // "Program" txn ApprovalProgram concat sha512_256 bytec 7 // "validUpdateApproveHash" app_global_get == assert txn ClearStateProgram len pushint 4 // 4 == txn ClearStateProgram extract 1 3 pushbytes 0x810143 // 0x810143 == && assert intc_0 // 1 return main_l75: bytec 6 // "MessageFee" intc_1 // 0 app_global_put bytec 8 // "vphash" bytec_0 // "" app_global_put bytec_3 // "currentGuardianSetIndex" intc_1 // 0 app_global_put bytec 7 // "validUpdateApproveHash" bytec_0 // "" app_global_put intc_0 // 1 return // intkey intkey_0: itob extract 7 1 retsub // zero zero_1: store 51 intc_1 // 0 store 52 zero_1_l1: load 52 pushint 15 // 15 < bz zero_1_l3 load 51 load 52 callsub intkey_0 intc_2 // 127 bzero app_local_put load 52 intc_0 // 1 + store 52 b zero_1_l1 zero_1_l3: retsub // get_byte getbyte_2: store 29 load 29 intc_2 // 127 / callsub intkey_0 app_local_get load 29 intc_2 // 127 % getbyte retsub // set_byte setbyte_3: store 60 store 59 store 58 load 58 load 59 intc_2 // 127 / callsub intkey_0 load 58 load 59 intc_2 // 127 / callsub intkey_0 app_local_get load 59 intc_2 // 127 % load 60 setbyte app_local_put retsub // read read_4: store 32 store 31 store 30 bytec_0 // "" store 34 load 31 intc_2 // 127 / store 33 read_4_l1: load 33 load 32 intc_2 // 127 / <= bz read_4_l9 load 33 load 31 intc_2 // 127 / == bnz read_4_l8 intc_1 // 0 read_4_l4: store 35 load 33 load 32 intc_2 // 127 / == bnz read_4_l7 intc_2 // 127 read_4_l6: store 36 load 34 load 30 load 33 callsub intkey_0 app_local_get load 35 load 36 substring3 concat store 34 load 33 intc_0 // 1 + store 33 b read_4_l1 read_4_l7: load 32 intc_2 // 127 % b read_4_l6 read_4_l8: load 31 intc_2 // 127 % b read_4_l4 read_4_l9: load 34 retsub // meta meta_5: store 37 bytec 17 // "meta" load 37 app_local_put retsub // checkMeta checkMeta_6: store 38 bytec 17 // "meta" app_local_get load 38 == pushint 145 // 145 && assert retsub // write write_7: store 41 store 40 store 39 intc_1 // 0 store 45 load 40 intc_2 // 127 / store 42 write_7_l1: load 42 load 40 load 41 len + intc_2 // 127 / <= bz write_7_l12 load 42 load 40 intc_2 // 127 / == bnz write_7_l11 intc_1 // 0 write_7_l4: store 43 load 42 load 40 load 41 len + intc_2 // 127 / == bnz write_7_l10 intc_2 // 127 write_7_l6: store 44 load 39 load 42 callsub intkey_0 load 44 intc_2 // 127 != load 43 intc_1 // 0 != || bnz write_7_l9 intc_2 // 127 store 46 load 41 load 45 intc_2 // 127 extract3 write_7_l8: app_local_put load 45 load 46 + store 45 load 42 intc_0 // 1 + store 42 b write_7_l1 write_7_l9: load 44 load 43 - store 46 load 39 load 42 callsub intkey_0 app_local_get intc_1 // 0 load 43 substring3 load 41 load 45 load 46 extract3 concat load 39 load 42 callsub intkey_0 app_local_get load 44 intc_2 // 127 substring3 concat b write_7_l8 write_7_l10: load 40 load 41 len + intc_2 // 127 % b write_7_l6 write_7_l11: load 40 intc_2 // 127 % b write_7_l4 write_7_l12: load 45 retsub // encode_uvarint encodeuvarint_8: store 50 store 49 load 50 load 49 intc 6 // 128 >= bnz encodeuvarint_8_l2 load 49 intc 7 // 255 & itob extract 7 1 b encodeuvarint_8_l3 encodeuvarint_8_l2: load 49 pushint 7 // 7 shr load 49 intc 7 // 255 & intc 6 // 128 | itob extract 7 1 load 49 load 50 uncover 3 uncover 3 callsub encodeuvarint_8 cover 2 store 50 store 49 encodeuvarint_8_l3: concat retsub // get_sig_address getsigaddress_9: store 48 store 47 bytec 16 // "Program" pushbytes 0x0620010181 // 0x0620010181 concat load 47 bytec_0 // "" callsub encodeuvarint_8 concat pushbytes 0x4880 // 0x4880 concat load 48 len bytec_0 // "" callsub encodeuvarint_8 concat load 48 concat pushbytes 0x483110810612443119221244311881 // 0x483110810612443119221244311881 concat global CurrentApplicationID bytec_0 // "" callsub encodeuvarint_8 concat pushbytes 0x1244312080 // 0x1244312080 concat global CurrentApplicationAddress len bytec_0 // "" callsub encodeuvarint_8 concat global CurrentApplicationAddress concat pushbytes 0x124431018100124431093203124431153203124422 // 0x124431018100124431093203124431153203124422 concat sha512_256 retsub // optin optin_10: gtxn 0 TypeEnum intc_0 // pay == gtxn 0 Amount pushint 1002000 // 1002000 == && gtxn 0 Receiver gtxn 1 Sender == && gtxn 1 TypeEnum pushint 6 // appl == && gtxn 1 OnCompletion intc_0 // OptIn == && gtxn 1 ApplicationID global CurrentApplicationID == && gtxn 1 RekeyTo global CurrentApplicationAddress == && gtxn 1 NumAppArgs intc_1 // 0 == && assert intc_1 // 0 callsub zero_1 intc_0 // 1 retsub // checkForDuplicate checkForDuplicate_11: txna ApplicationArgs 1 extract 0 1 btoi intc_0 // 1 == assert txna ApplicationArgs 1 extract 5 1 btoi pushint 66 // 66 * pushint 14 // 14 + store 53 txna ApplicationArgs 1 load 53 pushint 34 // 34 extract3 store 54 txna ApplicationArgs 1 load 53 pushint 34 // 34 + pushint 8 // 8 extract3 btoi store 55 load 55 pushint 15240 // 15240 / store 57 txna Accounts 1 load 57 load 54 callsub getsigaddress_9 == assert load 55 pushint 8 // 8 / pushint 1905 // 1905 % store 57 intc_0 // 1 load 57 callsub getbyte_2 store 56 load 56 load 55 pushint 8 // 8 % getbit intc_1 // 0 == assert intc_0 // 1 load 57 load 56 load 55 pushint 8 // 8 % intc_0 // 1 setbit callsub setbyte_3 intc_0 // 1 pushbytes 0x6475706c6963617465 // "duplicate" callsub meta_5 retsub