123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836(*****************************************************************************)(* *)(* Open Source License *)(* Copyright (c) 2018 Dynamic Ledger Solutions, Inc. <contact@tezos.com> *)(* Copyright (c) 2020 Metastate AG <hello@metastate.dev> *)(* Copyright (c) 2022 DaiLambda, Inc. <contact@dailambda,jp> *)(* *)(* Permission is hereby granted, free of charge, to any person obtaining a *)(* copy of this software and associated documentation files (the "Software"),*)(* to deal in the Software without restriction, including without limitation *)(* the rights to use, copy, modify, merge, publish, distribute, sublicense, *)(* and/or sell copies of the Software, and to permit persons to whom the *)(* Software is furnished to do so, subject to the following conditions: *)(* *)(* The above copyright notice and this permission notice shall be included *)(* in all copies or substantial portions of the Software. *)(* *)(* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR*)(* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, *)(* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL *)(* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER*)(* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING *)(* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER *)(* DEALINGS IN THE SOFTWARE. *)(* *)(*****************************************************************************)openMichelinetypeerror+=Unknown_primitive_nameofstringtypeerror+=Invalid_caseofstringtypeerror+=|Invalid_primitive_nameofstringMicheline.canonical*Micheline.canonical_locationtypeprim=|K_parameter|K_storage|K_code|K_view|D_False|D_Elt|D_Left|D_None|D_Pair|D_Right|D_Some|D_True|D_Unit|D_Lambda_rec|I_PACK|I_UNPACK|I_BLAKE2B|I_SHA256|I_SHA512|I_ABS|I_ADD|I_AMOUNT|I_AND|I_BALANCE|I_CAR|I_CDR|I_CHAIN_ID|I_CHECK_SIGNATURE|I_COMPARE|I_CONCAT|I_CONS|I_CREATE_ACCOUNT|I_CREATE_CONTRACT|I_IMPLICIT_ACCOUNT|I_DIP|I_DROP|I_DUP|I_VIEW|I_EDIV|I_EMPTY_BIG_MAP|I_EMPTY_MAP|I_EMPTY_SET|I_EQ|I_EXEC|I_APPLY|I_FAILWITH|I_GE|I_GET|I_GET_AND_UPDATE|I_GT|I_HASH_KEY|I_IF|I_IF_CONS|I_IF_LEFT|I_IF_NONE|I_INT|I_LAMBDA|I_LAMBDA_REC|I_LE|I_LEFT|I_LEVEL|I_LOOP|I_LSL|I_LSR|I_LT|I_MAP|I_MEM|I_MUL|I_NEG|I_NEQ|I_NIL|I_NONE|I_NOT|I_NOW|I_MIN_BLOCK_TIME|I_OR|I_PAIR|I_UNPAIR|I_PUSH|I_RIGHT|I_SIZE|I_SOME|I_SOURCE|I_SENDER|I_SELF|I_SELF_ADDRESS|I_SLICE|I_STEPS_TO_QUOTA|I_SUB|I_SUB_MUTEZ|I_SWAP|I_TRANSFER_TOKENS|I_SET_DELEGATE|I_UNIT|I_UPDATE|I_XOR|I_ITER|I_LOOP_LEFT|I_ADDRESS|I_CONTRACT|I_ISNAT|I_CAST|I_RENAME|I_SAPLING_EMPTY_STATE|I_SAPLING_VERIFY_UPDATE|I_DIG|I_DUG|I_NEVER|I_VOTING_POWER|I_TOTAL_VOTING_POWER|I_KECCAK|I_SHA3|I_PAIRING_CHECK|I_TICKET|I_TICKET_DEPRECATED|I_READ_TICKET|I_SPLIT_TICKET|I_JOIN_TICKETS|I_OPEN_CHEST|I_EMIT|I_BYTES|I_NAT|T_bool|T_contract|T_int|T_key|T_key_hash|T_lambda|T_list|T_map|T_big_map|T_nat|T_option|T_or|T_pair|T_set|T_signature|T_string|T_bytes|T_mutez|T_timestamp|T_unit|T_operation|T_address|T_tx_rollup_l2_address|T_sapling_transaction|T_sapling_transaction_deprecated|T_sapling_state|T_chain_id|T_never|T_bls12_381_g1|T_bls12_381_g2|T_bls12_381_fr|T_ticket|T_chest_key|T_chest|H_constant(* Auxiliary types for error documentation.
All the prim constructor prefixes must match their namespace. *)typenamespace=|(* prefix "T" *)Type_namespace|(* prefix "D" *)Constant_namespace|(* prefix "I" *)Instr_namespace|(* prefix "K" *)Keyword_namespace|(* prefix "H" *)Constant_hash_namespaceletnamespace=function|K_code|K_view|K_parameter|K_storage->Keyword_namespace|D_Elt|D_False|D_Left|D_None|D_Pair|D_Right|D_Some|D_True|D_Unit|D_Lambda_rec->Constant_namespace|I_ABS|I_ADD|I_ADDRESS|I_AMOUNT|I_AND|I_APPLY|I_BALANCE|I_BLAKE2B|I_CAR|I_CAST|I_CDR|I_CHAIN_ID|I_CHECK_SIGNATURE|I_COMPARE|I_CONCAT|I_CONS|I_CONTRACT|I_CREATE_ACCOUNT|I_CREATE_CONTRACT|I_DIG|I_DIP|I_DROP|I_DUG|I_DUP|I_VIEW|I_EDIV|I_EMPTY_BIG_MAP|I_EMPTY_MAP|I_EMPTY_SET|I_EQ|I_EXEC|I_FAILWITH|I_GE|I_GET|I_GET_AND_UPDATE|I_GT|I_HASH_KEY|I_IF|I_IF_CONS|I_IF_LEFT|I_IF_NONE|I_IMPLICIT_ACCOUNT|I_INT|I_ISNAT|I_ITER|I_JOIN_TICKETS|I_KECCAK|I_LAMBDA|I_LAMBDA_REC|I_LE|I_LEFT|I_LEVEL|I_LOOP|I_LOOP_LEFT|I_LSL|I_LSR|I_LT|I_MAP|I_MEM|I_MUL|I_NEG|I_NEQ|I_NEVER|I_NIL|I_NONE|I_NOT|I_NOW|I_MIN_BLOCK_TIME|I_OR|I_PACK|I_PAIR|I_PAIRING_CHECK|I_PUSH|I_READ_TICKET|I_RENAME|I_RIGHT|I_SAPLING_EMPTY_STATE|I_SAPLING_VERIFY_UPDATE|I_SELF|I_SELF_ADDRESS|I_SENDER|I_SET_DELEGATE|I_SHA256|I_SHA512|I_SHA3|I_SIZE|I_SLICE|I_SOME|I_SOURCE|I_SPLIT_TICKET|I_STEPS_TO_QUOTA|I_SUB|I_SUB_MUTEZ|I_SWAP|I_TICKET|I_TICKET_DEPRECATED|I_TOTAL_VOTING_POWER|I_TRANSFER_TOKENS|I_UNIT|I_UNPACK|I_UNPAIR|I_UPDATE|I_VOTING_POWER|I_XOR|I_OPEN_CHEST|I_EMIT|I_BYTES|I_NAT->Instr_namespace|T_address|T_tx_rollup_l2_address|T_big_map|T_bool|T_bytes|T_chain_id|T_contract|T_int|T_key|T_key_hash|T_lambda|T_list|T_map|T_mutez|T_nat|T_never|T_operation|T_option|T_or|T_pair|T_sapling_state|T_sapling_transaction|T_sapling_transaction_deprecated|T_set|T_signature|T_string|T_timestamp|T_unit|T_bls12_381_fr|T_bls12_381_g1|T_bls12_381_g2|T_ticket|T_chest_key|T_chest->Type_namespace|H_constant->Constant_hash_namespaceletvalid_casename=letis_lower=function'_'|'a'..'z'->true|_->falseinletis_upper=function'_'|'A'..'Z'->true|_->falseinletrecfor_allabf=Compare.Int.(a>b)||(fa&&for_all(a+1)bf)inletlen=String.lengthnameinCompare.Int.(len<>0)&&Compare.Char.(name.[0]<>'_')&&((is_uppername.[0]&&for_all1(len-1)(funi->is_uppername.[i]))||(is_uppername.[0]&&for_all1(len-1)(funi->is_lowername.[i]))||(is_lowername.[0]&&for_all1(len-1)(funi->is_lowername.[i])))letstring_of_prim=function|K_parameter->"parameter"|K_storage->"storage"|K_code->"code"|K_view->"view"|D_False->"False"|D_Elt->"Elt"|D_Left->"Left"|D_None->"None"|D_Pair->"Pair"|D_Right->"Right"|D_Some->"Some"|D_True->"True"|D_Unit->"Unit"|D_Lambda_rec->"Lambda_rec"|I_PACK->"PACK"|I_UNPACK->"UNPACK"|I_BLAKE2B->"BLAKE2B"|I_SHA256->"SHA256"|I_SHA512->"SHA512"|I_ABS->"ABS"|I_ADD->"ADD"|I_AMOUNT->"AMOUNT"|I_AND->"AND"|I_BALANCE->"BALANCE"|I_CAR->"CAR"|I_CDR->"CDR"|I_CHAIN_ID->"CHAIN_ID"|I_CHECK_SIGNATURE->"CHECK_SIGNATURE"|I_COMPARE->"COMPARE"|I_CONCAT->"CONCAT"|I_CONS->"CONS"|I_CREATE_ACCOUNT->"CREATE_ACCOUNT"|I_CREATE_CONTRACT->"CREATE_CONTRACT"|I_IMPLICIT_ACCOUNT->"IMPLICIT_ACCOUNT"|I_DIP->"DIP"|I_DROP->"DROP"|I_DUP->"DUP"|I_EDIV->"EDIV"|I_EMPTY_BIG_MAP->"EMPTY_BIG_MAP"|I_EMPTY_MAP->"EMPTY_MAP"|I_EMPTY_SET->"EMPTY_SET"|I_EQ->"EQ"|I_EXEC->"EXEC"|I_APPLY->"APPLY"|I_FAILWITH->"FAILWITH"|I_GE->"GE"|I_GET->"GET"|I_GET_AND_UPDATE->"GET_AND_UPDATE"|I_GT->"GT"|I_HASH_KEY->"HASH_KEY"|I_IF->"IF"|I_IF_CONS->"IF_CONS"|I_IF_LEFT->"IF_LEFT"|I_IF_NONE->"IF_NONE"|I_INT->"INT"|I_LAMBDA->"LAMBDA"|I_LAMBDA_REC->"LAMBDA_REC"|I_LE->"LE"|I_LEFT->"LEFT"|I_LEVEL->"LEVEL"|I_LOOP->"LOOP"|I_LSL->"LSL"|I_LSR->"LSR"|I_LT->"LT"|I_MAP->"MAP"|I_MEM->"MEM"|I_MUL->"MUL"|I_NEG->"NEG"|I_NEQ->"NEQ"|I_NIL->"NIL"|I_NONE->"NONE"|I_NOT->"NOT"|I_NOW->"NOW"|I_MIN_BLOCK_TIME->"MIN_BLOCK_TIME"|I_OR->"OR"|I_PAIR->"PAIR"|I_PUSH->"PUSH"|I_RIGHT->"RIGHT"|I_SIZE->"SIZE"|I_SOME->"SOME"|I_SOURCE->"SOURCE"|I_SENDER->"SENDER"|I_SELF->"SELF"|I_SELF_ADDRESS->"SELF_ADDRESS"|I_SLICE->"SLICE"|I_STEPS_TO_QUOTA->"STEPS_TO_QUOTA"|I_SUB->"SUB"|I_SUB_MUTEZ->"SUB_MUTEZ"|I_SWAP->"SWAP"|I_TRANSFER_TOKENS->"TRANSFER_TOKENS"|I_SET_DELEGATE->"SET_DELEGATE"|I_UNIT->"UNIT"|I_UNPAIR->"UNPAIR"|I_UPDATE->"UPDATE"|I_XOR->"XOR"|I_ITER->"ITER"|I_LOOP_LEFT->"LOOP_LEFT"|I_ADDRESS->"ADDRESS"|I_CONTRACT->"CONTRACT"|I_ISNAT->"ISNAT"|I_CAST->"CAST"|I_RENAME->"RENAME"|I_SAPLING_EMPTY_STATE->"SAPLING_EMPTY_STATE"|I_SAPLING_VERIFY_UPDATE->"SAPLING_VERIFY_UPDATE"|I_DIG->"DIG"|I_DUG->"DUG"|I_NEVER->"NEVER"|I_VOTING_POWER->"VOTING_POWER"|I_TOTAL_VOTING_POWER->"TOTAL_VOTING_POWER"|I_KECCAK->"KECCAK"|I_SHA3->"SHA3"|I_PAIRING_CHECK->"PAIRING_CHECK"|I_TICKET->"TICKET"|I_TICKET_DEPRECATED->"TICKET_DEPRECATED"|I_READ_TICKET->"READ_TICKET"|I_SPLIT_TICKET->"SPLIT_TICKET"|I_JOIN_TICKETS->"JOIN_TICKETS"|I_OPEN_CHEST->"OPEN_CHEST"|I_EMIT->"EMIT"|I_VIEW->"VIEW"|I_BYTES->"BYTES"|I_NAT->"NAT"|T_bool->"bool"|T_contract->"contract"|T_int->"int"|T_key->"key"|T_key_hash->"key_hash"|T_lambda->"lambda"|T_list->"list"|T_map->"map"|T_big_map->"big_map"|T_nat->"nat"|T_option->"option"|T_or->"or"|T_pair->"pair"|T_set->"set"|T_signature->"signature"|T_string->"string"|T_bytes->"bytes"|T_mutez->"mutez"|T_timestamp->"timestamp"|T_unit->"unit"|T_operation->"operation"|T_address->"address"|T_tx_rollup_l2_address->"tx_rollup_l2_address"|T_sapling_state->"sapling_state"|T_sapling_transaction->"sapling_transaction"|T_sapling_transaction_deprecated->"sapling_transaction_deprecated"|T_chain_id->"chain_id"|T_never->"never"|T_bls12_381_g1->"bls12_381_g1"|T_bls12_381_g2->"bls12_381_g2"|T_bls12_381_fr->"bls12_381_fr"|T_ticket->"ticket"|T_chest_key->"chest_key"|T_chest->"chest"|H_constant->"constant"letprim_of_string=function|"parameter"->okK_parameter|"storage"->okK_storage|"code"->okK_code|"view"->okK_view|"False"->okD_False|"Elt"->okD_Elt|"Left"->okD_Left|"None"->okD_None|"Pair"->okD_Pair|"Right"->okD_Right|"Some"->okD_Some|"True"->okD_True|"Unit"->okD_Unit|"Lambda_rec"->okD_Lambda_rec|"PACK"->okI_PACK|"UNPACK"->okI_UNPACK|"BLAKE2B"->okI_BLAKE2B|"SHA256"->okI_SHA256|"SHA512"->okI_SHA512|"ABS"->okI_ABS|"ADD"->okI_ADD|"AMOUNT"->okI_AMOUNT|"AND"->okI_AND|"BALANCE"->okI_BALANCE|"CAR"->okI_CAR|"CDR"->okI_CDR|"CHAIN_ID"->okI_CHAIN_ID|"CHECK_SIGNATURE"->okI_CHECK_SIGNATURE|"COMPARE"->okI_COMPARE|"CONCAT"->okI_CONCAT|"CONS"->okI_CONS|"CREATE_ACCOUNT"->okI_CREATE_ACCOUNT|"CREATE_CONTRACT"->okI_CREATE_CONTRACT|"IMPLICIT_ACCOUNT"->okI_IMPLICIT_ACCOUNT|"DIP"->okI_DIP|"DROP"->okI_DROP|"DUP"->okI_DUP|"VIEW"->okI_VIEW|"EDIV"->okI_EDIV|"EMPTY_BIG_MAP"->okI_EMPTY_BIG_MAP|"EMPTY_MAP"->okI_EMPTY_MAP|"EMPTY_SET"->okI_EMPTY_SET|"EQ"->okI_EQ|"EXEC"->okI_EXEC|"APPLY"->okI_APPLY|"FAILWITH"->okI_FAILWITH|"GE"->okI_GE|"GET"->okI_GET|"GET_AND_UPDATE"->okI_GET_AND_UPDATE|"GT"->okI_GT|"HASH_KEY"->okI_HASH_KEY|"IF"->okI_IF|"IF_CONS"->okI_IF_CONS|"IF_LEFT"->okI_IF_LEFT|"IF_NONE"->okI_IF_NONE|"INT"->okI_INT|"KECCAK"->okI_KECCAK|"LAMBDA"->okI_LAMBDA|"LAMBDA_REC"->okI_LAMBDA_REC|"LE"->okI_LE|"LEFT"->okI_LEFT|"LEVEL"->okI_LEVEL|"LOOP"->okI_LOOP|"LSL"->okI_LSL|"LSR"->okI_LSR|"LT"->okI_LT|"MAP"->okI_MAP|"MEM"->okI_MEM|"MUL"->okI_MUL|"NEG"->okI_NEG|"NEQ"->okI_NEQ|"NIL"->okI_NIL|"NONE"->okI_NONE|"NOT"->okI_NOT|"NOW"->okI_NOW|"MIN_BLOCK_TIME"->okI_MIN_BLOCK_TIME|"OR"->okI_OR|"PAIR"->okI_PAIR|"UNPAIR"->okI_UNPAIR|"PAIRING_CHECK"->okI_PAIRING_CHECK|"PUSH"->okI_PUSH|"RIGHT"->okI_RIGHT|"SHA3"->okI_SHA3|"SIZE"->okI_SIZE|"SOME"->okI_SOME|"SOURCE"->okI_SOURCE|"SENDER"->okI_SENDER|"SELF"->okI_SELF|"SELF_ADDRESS"->okI_SELF_ADDRESS|"SLICE"->okI_SLICE|"STEPS_TO_QUOTA"->okI_STEPS_TO_QUOTA|"SUB"->okI_SUB|"SUB_MUTEZ"->okI_SUB_MUTEZ|"SWAP"->okI_SWAP|"TRANSFER_TOKENS"->okI_TRANSFER_TOKENS|"SET_DELEGATE"->okI_SET_DELEGATE|"UNIT"->okI_UNIT|"UPDATE"->okI_UPDATE|"XOR"->okI_XOR|"ITER"->okI_ITER|"LOOP_LEFT"->okI_LOOP_LEFT|"ADDRESS"->okI_ADDRESS|"CONTRACT"->okI_CONTRACT|"ISNAT"->okI_ISNAT|"CAST"->okI_CAST|"RENAME"->okI_RENAME|"SAPLING_EMPTY_STATE"->okI_SAPLING_EMPTY_STATE|"SAPLING_VERIFY_UPDATE"->okI_SAPLING_VERIFY_UPDATE|"DIG"->okI_DIG|"DUG"->okI_DUG|"NEVER"->okI_NEVER|"VOTING_POWER"->okI_VOTING_POWER|"TOTAL_VOTING_POWER"->okI_TOTAL_VOTING_POWER|"TICKET"->okI_TICKET|"TICKET_DEPRECATED"->okI_TICKET_DEPRECATED|"READ_TICKET"->okI_READ_TICKET|"SPLIT_TICKET"->okI_SPLIT_TICKET|"JOIN_TICKETS"->okI_JOIN_TICKETS|"OPEN_CHEST"->okI_OPEN_CHEST|"EMIT"->okI_EMIT|"BYTES"->okI_BYTES|"NAT"->okI_NAT|"bool"->okT_bool|"contract"->okT_contract|"int"->okT_int|"key"->okT_key|"key_hash"->okT_key_hash|"lambda"->okT_lambda|"list"->okT_list|"map"->okT_map|"big_map"->okT_big_map|"nat"->okT_nat|"option"->okT_option|"or"->okT_or|"pair"->okT_pair|"set"->okT_set|"signature"->okT_signature|"string"->okT_string|"bytes"->okT_bytes|"mutez"->okT_mutez|"timestamp"->okT_timestamp|"unit"->okT_unit|"operation"->okT_operation|"address"->okT_address|"tx_rollup_l2_address"->okT_tx_rollup_l2_address|"sapling_state"->okT_sapling_state|"sapling_transaction"->okT_sapling_transaction|"sapling_transaction_deprecated"->okT_sapling_transaction_deprecated|"chain_id"->okT_chain_id|"never"->okT_never|"bls12_381_g1"->okT_bls12_381_g1|"bls12_381_g2"->okT_bls12_381_g2|"bls12_381_fr"->okT_bls12_381_fr|"ticket"->okT_ticket|"chest_key"->okT_chest_key|"chest"->okT_chest|"constant"->okH_constant|n->ifvalid_casenthenerror(Unknown_primitive_namen)elseerror(Invalid_casen)letprims_of_stringsexpr=letrecconvert=function|(Int_|String_|Bytes_)asexpr->okexpr|Prim(loc,prim,args,annot)->Error_monad.record_trace(Invalid_primitive_name(expr,loc))(prim_of_stringprim)>>?funprim->List.map_econvertargs>|?funargs->Prim(loc,prim,args,annot)|Seq(loc,args)->List.map_econvertargs>|?funargs->Seq(loc,args)inconvert(rootexpr)>|?funexpr->strip_locationsexprletstrings_of_primsexpr=letrecconvert=function|(Int_|String_|Bytes_)asexpr->expr|Prim(loc,prim,args,annot)->letprim=string_of_primpriminletargs=List.mapconvertargsinPrim(loc,prim,args,annot)|Seq(loc,args)->letargs=List.mapconvertargsinSeq(loc,args)instrip_locations(convert(rootexpr))letprim_encoding=letopenData_encodingindef"michelson.v1.primitives"@@string_enum(* Add the comment below every 10 lines *)[(* /!\ NEW INSTRUCTIONS MUST BE ADDED AT THE END OF THE STRING_ENUM, FOR BACKWARD COMPATIBILITY OF THE ENCODING. *)("parameter",K_parameter);("storage",K_storage);("code",K_code);("False",D_False);("Elt",D_Elt);("Left",D_Left);("None",D_None);("Pair",D_Pair);("Right",D_Right);("Some",D_Some);(* /!\ NEW INSTRUCTIONS MUST BE ADDED AT THE END OF THE STRING_ENUM, FOR BACKWARD COMPATIBILITY OF THE ENCODING. *)("True",D_True);("Unit",D_Unit);("PACK",I_PACK);("UNPACK",I_UNPACK);("BLAKE2B",I_BLAKE2B);("SHA256",I_SHA256);("SHA512",I_SHA512);("ABS",I_ABS);("ADD",I_ADD);("AMOUNT",I_AMOUNT);(* /!\ NEW INSTRUCTIONS MUST BE ADDED AT THE END OF THE STRING_ENUM, FOR BACKWARD COMPATIBILITY OF THE ENCODING. *)("AND",I_AND);("BALANCE",I_BALANCE);("CAR",I_CAR);("CDR",I_CDR);("CHECK_SIGNATURE",I_CHECK_SIGNATURE);("COMPARE",I_COMPARE);("CONCAT",I_CONCAT);("CONS",I_CONS);("CREATE_ACCOUNT",I_CREATE_ACCOUNT);("CREATE_CONTRACT",I_CREATE_CONTRACT);(* /!\ NEW INSTRUCTIONS MUST BE ADDED AT THE END OF THE STRING_ENUM, FOR BACKWARD COMPATIBILITY OF THE ENCODING. *)("IMPLICIT_ACCOUNT",I_IMPLICIT_ACCOUNT);("DIP",I_DIP);("DROP",I_DROP);("DUP",I_DUP);("EDIV",I_EDIV);("EMPTY_MAP",I_EMPTY_MAP);("EMPTY_SET",I_EMPTY_SET);("EQ",I_EQ);("EXEC",I_EXEC);("FAILWITH",I_FAILWITH);(* /!\ NEW INSTRUCTIONS MUST BE ADDED AT THE END OF THE STRING_ENUM, FOR BACKWARD COMPATIBILITY OF THE ENCODING. *)("GE",I_GE);("GET",I_GET);("GT",I_GT);("HASH_KEY",I_HASH_KEY);("IF",I_IF);("IF_CONS",I_IF_CONS);("IF_LEFT",I_IF_LEFT);("IF_NONE",I_IF_NONE);("INT",I_INT);("LAMBDA",I_LAMBDA);(* /!\ NEW INSTRUCTIONS MUST BE ADDED AT THE END OF THE STRING_ENUM, FOR BACKWARD COMPATIBILITY OF THE ENCODING. *)("LE",I_LE);("LEFT",I_LEFT);("LOOP",I_LOOP);("LSL",I_LSL);("LSR",I_LSR);("LT",I_LT);("MAP",I_MAP);("MEM",I_MEM);("MUL",I_MUL);("NEG",I_NEG);(* /!\ NEW INSTRUCTIONS MUST BE ADDED AT THE END OF THE STRING_ENUM, FOR BACKWARD COMPATIBILITY OF THE ENCODING. *)("NEQ",I_NEQ);("NIL",I_NIL);("NONE",I_NONE);("NOT",I_NOT);("NOW",I_NOW);("OR",I_OR);("PAIR",I_PAIR);("PUSH",I_PUSH);("RIGHT",I_RIGHT);("SIZE",I_SIZE);(* /!\ NEW INSTRUCTIONS MUST BE ADDED AT THE END OF THE STRING_ENUM, FOR BACKWARD COMPATIBILITY OF THE ENCODING. *)("SOME",I_SOME);("SOURCE",I_SOURCE);("SENDER",I_SENDER);("SELF",I_SELF);("STEPS_TO_QUOTA",I_STEPS_TO_QUOTA);("SUB",I_SUB);("SWAP",I_SWAP);("TRANSFER_TOKENS",I_TRANSFER_TOKENS);("SET_DELEGATE",I_SET_DELEGATE);("UNIT",I_UNIT);(* /!\ NEW INSTRUCTIONS MUST BE ADDED AT THE END OF THE STRING_ENUM, FOR BACKWARD COMPATIBILITY OF THE ENCODING. *)("UPDATE",I_UPDATE);("XOR",I_XOR);("ITER",I_ITER);("LOOP_LEFT",I_LOOP_LEFT);("ADDRESS",I_ADDRESS);("CONTRACT",I_CONTRACT);("ISNAT",I_ISNAT);("CAST",I_CAST);("RENAME",I_RENAME);("bool",T_bool);(* /!\ NEW INSTRUCTIONS MUST BE ADDED AT THE END OF THE STRING_ENUM, FOR BACKWARD COMPATIBILITY OF THE ENCODING. *)("contract",T_contract);("int",T_int);("key",T_key);("key_hash",T_key_hash);("lambda",T_lambda);("list",T_list);("map",T_map);("big_map",T_big_map);("nat",T_nat);("option",T_option);(* /!\ NEW INSTRUCTIONS MUST BE ADDED AT THE END OF THE STRING_ENUM, FOR BACKWARD COMPATIBILITY OF THE ENCODING. *)("or",T_or);("pair",T_pair);("set",T_set);("signature",T_signature);("string",T_string);("bytes",T_bytes);("mutez",T_mutez);("timestamp",T_timestamp);("unit",T_unit);("operation",T_operation);(* /!\ NEW INSTRUCTIONS MUST BE ADDED AT THE END OF THE STRING_ENUM, FOR BACKWARD COMPATIBILITY OF THE ENCODING. *)("address",T_address);(* Alpha_002 addition *)("SLICE",I_SLICE);(* Alpha_005 addition *)("DIG",I_DIG);("DUG",I_DUG);("EMPTY_BIG_MAP",I_EMPTY_BIG_MAP);("APPLY",I_APPLY);("chain_id",T_chain_id);("CHAIN_ID",I_CHAIN_ID);(* /!\ NEW INSTRUCTIONS MUST BE ADDED AT THE END OF THE STRING_ENUM, FOR BACKWARD COMPATIBILITY OF THE ENCODING. *)(* Alpha_008 addition *)("LEVEL",I_LEVEL);("SELF_ADDRESS",I_SELF_ADDRESS);("never",T_never);("NEVER",I_NEVER);("UNPAIR",I_UNPAIR);("VOTING_POWER",I_VOTING_POWER);("TOTAL_VOTING_POWER",I_TOTAL_VOTING_POWER);("KECCAK",I_KECCAK);("SHA3",I_SHA3);(* /!\ NEW INSTRUCTIONS MUST BE ADDED AT THE END OF THE STRING_ENUM, FOR BACKWARD COMPATIBILITY OF THE ENCODING. *)(* Alpha_008 addition *)("PAIRING_CHECK",I_PAIRING_CHECK);("bls12_381_g1",T_bls12_381_g1);("bls12_381_g2",T_bls12_381_g2);("bls12_381_fr",T_bls12_381_fr);("sapling_state",T_sapling_state);("sapling_transaction_deprecated",T_sapling_transaction_deprecated);("SAPLING_EMPTY_STATE",I_SAPLING_EMPTY_STATE);("SAPLING_VERIFY_UPDATE",I_SAPLING_VERIFY_UPDATE);("ticket",T_ticket);(* /!\ NEW INSTRUCTIONS MUST BE ADDED AT THE END OF THE STRING_ENUM, FOR BACKWARD COMPATIBILITY OF THE ENCODING. *)(* Alpha_008 addition *)("TICKET_DEPRECATED",I_TICKET_DEPRECATED);("READ_TICKET",I_READ_TICKET);("SPLIT_TICKET",I_SPLIT_TICKET);("JOIN_TICKETS",I_JOIN_TICKETS);("GET_AND_UPDATE",I_GET_AND_UPDATE);(* Alpha_011 addition *)("chest",T_chest);("chest_key",T_chest_key);("OPEN_CHEST",I_OPEN_CHEST);(* /!\ NEW INSTRUCTIONS MUST BE ADDED AT THE END OF THE STRING_ENUM, FOR BACKWARD COMPATIBILITY OF THE ENCODING. *)("VIEW",I_VIEW);("view",K_view);("constant",H_constant);(* Alpha_012 addition *)("SUB_MUTEZ",I_SUB_MUTEZ);(* Alpha_013 addition *)("tx_rollup_l2_address",T_tx_rollup_l2_address);("MIN_BLOCK_TIME",I_MIN_BLOCK_TIME);("sapling_transaction",T_sapling_transaction);(* /!\ NEW INSTRUCTIONS MUST BE ADDED AT THE END OF THE STRING_ENUM, FOR BACKWARD COMPATIBILITY OF THE ENCODING. *)(* Alpha_014 addition *)("EMIT",I_EMIT);(* Alpha_015 addition *)("Lambda_rec",D_Lambda_rec);("LAMBDA_REC",I_LAMBDA_REC);("TICKET",I_TICKET);("BYTES",I_BYTES);("NAT",I_NAT)(* New instructions must be added here, for backward compatibility of the encoding. *)(* Keep the comment above at the end of the list *);]let()=register_error_kind`Permanent~id:"michelson_v1.unknown_primitive_name"~title:"Unknown primitive name"~description:"In a script or data expression, a primitive was unknown."~pp:(funppfn->Format.fprintfppf"Unknown primitive %s."n)Data_encoding.(obj1(req"wrong_primitive_name"@@stringPlain))(functionUnknown_primitive_namegot->Somegot|_->None)(fungot->Unknown_primitive_namegot);register_error_kind`Permanent~id:"michelson_v1.invalid_primitive_name_case"~title:"Invalid primitive name case"~description:"In a script or data expression, a primitive name is neither uppercase, \
lowercase or capitalized."~pp:(funppfn->Format.fprintfppf"Primitive %s has invalid case."n)Data_encoding.(obj1(req"wrong_primitive_name"@@stringPlain))(functionInvalid_casename->Somename|_->None)(funname->Invalid_casename);register_error_kind`Permanent~id:"michelson_v1.invalid_primitive_name"~title:"Invalid primitive name"~description:"In a script or data expression, a primitive name is unknown or has a \
wrong case."~pp:(funppf_->Format.fprintfppf"Invalid primitive.")Data_encoding.(obj2(req"expression"(Micheline.canonical_encoding~variant:"generic"@@stringPlain))(req"location"Micheline.canonical_location_encoding))(function|Invalid_primitive_name(expr,loc)->Some(expr,loc)|_->None)(fun(expr,loc)->Invalid_primitive_name(expr,loc))letstring_of_namespace=function|Type_namespace->"T"|Constant_namespace->"D"|Instr_namespace->"I"|Keyword_namespace->"K"|Constant_hash_namespace->"H"