witnet-solidity-bridge
Version:
Witnet Solidity Bridge contracts for EVM-compatible chains
13 lines (12 loc) • 52.5 kB
TypeScript
// This file was autogenerated by Hardhat, do not edit it.
// prettier-ignore
// tslint:disable
// eslint-disable
// biome-ignore format: see above
export interface WitPriceFeedsLegacyDataLib$Type {
readonly _format: "hh3-artifact-1";
readonly contractName: "WitPriceFeedsLegacyDataLib";
readonly sourceName: "contracts/data/WitPriceFeedsLegacyDataLib.sol";
readonly abi: [{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"range","type":"uint256"}],"name":"IndexOutOfBounds","type":"error"},{"inputs":[{"internalType":"uint256","name":"length","type":"uint256"}],"name":"InvalidLengthEncoding","type":"error"},{"inputs":[{"internalType":"uint256","name":"read","type":"uint256"},{"internalType":"uint256","name":"expected","type":"uint256"}],"name":"UnexpectedMajorType","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"caption","type":"string"},{"indexed":false,"internalType":"bytes4","name":"feedId","type":"bytes4"}],"name":"WitFeedDeleted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"caption","type":"string"},{"indexed":false,"internalType":"bytes4","name":"feedId","type":"bytes4"},{"indexed":false,"internalType":"bytes32","name":"radHash","type":"bytes32"}],"name":"WitFeedSettled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"caption","type":"string"},{"indexed":false,"internalType":"bytes4","name":"feedId","type":"bytes4"},{"indexed":false,"internalType":"address","name":"solver","type":"address"}],"name":"WitFeedSolverSettled","type":"event"},{"inputs":[{"internalType":"bytes","name":"initcode","type":"bytes"},{"internalType":"bytes","name":"constructorParams","type":"bytes"}],"name":"determinePriceSolverAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IWitOracleQueriable","name":"witOracle","type":"IWitOracleQueriable"},{"internalType":"bytes4","name":"feedId","type":"bytes4"}],"name":"latestPrice","outputs":[{"components":[{"internalType":"uint64","name":"value","type":"uint64"},{"internalType":"Witnet.Timestamp","name":"timestamp","type":"uint64"},{"internalType":"Witnet.TransactionHash","name":"drTxHash","type":"bytes32"},{"internalType":"enum IWitPriceFeedsLegacySolver.LatestUpdateStatus","name":"latestStatus","type":"IWitPriceFeedsLegacySolver.LatestUpdateStatus"}],"internalType":"struct IWitPriceFeedsLegacySolver.Price","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"supportedFeeds","outputs":[{"internalType":"bytes4[]","name":"_ids","type":"bytes4[]"},{"internalType":"string[]","name":"_captions","type":"string[]"},{"internalType":"bytes32[]","name":"_solvers","type":"bytes32[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"caption","type":"string"}],"name":"validateCaption","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"}];
readonly bytecode: "0x612f87610034600b8282823980515f1a607314602857634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100a6575f3560e01c806386ac03e01161006e57806386ac03e01461015e578063a55b471c1461017d578063e1c9e3c0146101b4578063e6f3e35d146101c8578063ff75890f146101ed575f5ffd5b80630306732e146100aa57806303f3813d146100ca57806307f11202146100eb57806384292f071461011f57806384ee24111461013e575b5f5ffd5b6100b2610200565b6040516100c1939291906121e4565b60405180910390f35b8180156100d5575f5ffd5b506100e96100e43660046122f9565b610456565b005b8180156100f6575f5ffd5b5061010a61010536600461243e565b6107be565b604080519283526020830191909152016100c1565b81801561012a575f5ffd5b506100e96101393660046124ea565b610ae3565b61015161014c366004612531565b610c67565b6040516100c1919061257c565b818015610169575f5ffd5b506100e96101783660046125db565b610ebd565b818015610188575f5ffd5b5061019c610197366004612619565b6110f5565b6040516001600160a01b0390911681526020016100c1565b8180156101bf575f5ffd5b506100e9611211565b6101db6101d63660046125db565b61142d565b60405160ff90911681526020016100c1565b61019c6101fb366004612619565b6115cc565b5f516020612f325f395f51905f528054604080516020808402820181019092528281526060938493849383018282801561028357602002820191905f5260205f20905f905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116102455790505b5050505050925082516001600160401b038111156102a3576102a36123bb565b6040519080825280602002602001820160405280156102d657816020015b60608152602001906001900390816102c15790505b50915082516001600160401b038111156102f2576102f26123bb565b60405190808252806020026020018201604052801561031b578160200160208202803683370190505b5090505f5b8351811015610450575f61034c85838151811061033f5761033f612683565b6020026020010151611651565b9050805f01805461035c90612697565b80601f016020809104026020016040519081016040528092919081815260200182805461038890612697565b80156103d35780601f106103aa576101008083540402835291602001916103d3565b820191905f5260205f20905b8154815290600101906020018083116103b657829003601f168201915b50505050508483815181106103ea576103ea612683565b602090810291909101015260068101546001600160a01b03161561042457600681015460601b6bffffffffffffffffffffffff191661042a565b80600501545b83838151811061043c5761043c612683565b602090810291909101015250600101610320565b50909192565b5f61049586868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061168a92505050565b90505f6104a182611651565b905080600201545f0361056d57806104ba87898361271b565b506104c5878761142d565b60018201805460ff191660ff929092169190911790555f516020612f125f395f51905f526001908101546104f8916127e8565b60028201556006810180546001600160a01b0319166001600160a01b0387161790555f516020612f125f395f51905f526001908101805491820181555f908152602090206008820401805463ffffffff60079093166004026101000a928302191660e085901c929092029190911790556105a8565b60068101546001600160a01b038681169116146105a8575f60058201556006810180546001600160a01b0319166001600160a01b0387161790555b5f5f866001600160a01b031663e6f8715860e01b8588886040516024016105d193929190612823565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161060f91906128ea565b5f60405180830381855af49150503d805f8114610647576040519150601f19603f3d011682016040523d82523d5f602084013e61064c565b606091505b5091509150816106af57600481019050808060200190518101906106709190612971565b60405160200161068091906129b5565b60408051601f198184030181529082905262461bcd60e51b82526106a6916004016129e6565b60405180910390fd5b5050604080516001600160e01b0319841660248083019190915282518083039091018152604490910182526020810180516001600160e01b031663e0d20f7360e01b17905290515f9182913091610705916128ea565b5f60405180830381855afa9150503d805f811461073d576040519150601f19603f3d011682016040523d82523d5f602084013e610742565b606091505b50915091508161077657600481019050808060200190518101906107669190612971565b60405160200161068091906129f8565b50507f286a3bf658fa39c74919afa81990860b8526693c9e7de41f8160a973a5c6d052878784886040516107ad9493929190612a1f565b60405180910390a150505050505050565b5f5f5f6107ca86611651565b9050806004015492505f6107de8888611695565b90506107fa8160ff8111156107f5576107f5612568565b611724565b156108fc576040516337ed55bf60e11b8152600481018590525f906001600160a01b038a1690636fdaab7e90602401602060405180830381865afa158015610844573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108689190612a5d565b90508068ffffffffffffffffff168611156108f25761089268ffffffffffffffffff821687612a85565b60405163ec5946db60e01b8152600481018790529094506001600160a01b038a169063ec5946db9086906024015f604051808303818588803b1580156108d6575f5ffd5b505af11580156108e8573d5f5f3e3d5ffd5b50505050506108f6565b5f93505b50610ad8565b5f8160ff81111561090f5761090f612568565b036109b0576003820154156109a4576003820154604051637c1fbda360e01b815260048101919091526001600160a01b03891690637c1fbda3906024016020604051808303815f875af1925050508015610986575060408051601f3d908101601f1916820190925261098391810190612a5d565b60015b156109a4576109a068ffffffffffffffffff8216876127e8565b9550505b60038201849055610a30565b604051637c1fbda360e01b8152600481018590526001600160a01b03891690637c1fbda3906024016020604051808303815f875af1925050508015610a12575060408051601f3d908101601f19168201909252610a0f91810190612a5d565b60015b15610a3057610a2c68ffffffffffffffffff8216876127e8565b9550505b60058201546040805163a58f680360e01b81526004810192909252875161ffff908116602484015260208901511660448301528701516001600160401b031660648201528593506001600160a01b0389169063a58f680390859060840160206040518083038185885af1158015610aa9573d5f5f3e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610ace9190612a98565b6004830181905593505b505094509492505050565b5f610b2284848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061168a92505050565b90505f610b2e82611651565b905080600201545f03610bfe5780610b4785878361271b565b50610b52858561142d565b60018201805460ff191660ff929092169190911790555f516020612f125f395f51905f52600190810154610b85916127e8565b6002820155600581018390555f516020612f325f395f51905f5280546001810182555f919091527fb7ef506da7909f25321b247725840c95fced7275a59588a4236c0671ab1d82216008820401805463ffffffff60079093166004026101000a928302191660e085901c92909202919091179055610c23565b82816005015414610c2357600581018390556006810180546001600160a01b03191690555b7f56660980158f15674b73c4dcec7f3314e2500517420e16306c40a07dad09f10185858486604051610c589493929190612aaf565b60405180910390a15050505050565b610c8e604080516080810182525f8082526020820181905291810182905290606082015290565b5f610c99848461175b565b90508015610d7c576040516359209b3960e01b8152600481018290525f906001600160a01b038616906359209b39906024015f60405180830381865afa158015610ce5573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610d0c9190810190612bee565b90506040518060800160405280610d2283611808565b6001600160401b0316815260200182608001516001600160401b0316815260200182604001518152602001610d5f610d5a8888611695565b6118e3565b6003811115610d7057610d70612568565b81525092505050610eb7565b5f610d8684611651565b600601546001600160a01b031690508015610e8857604080516001600160e01b0319861660248083019190915282518083039091018152604490910182526020810180516001600160e01b031663e0d20f7360e01b17905290515f9182913091610def916128ea565b5f60405180830381855afa9150503d805f8114610e27576040519150601f19603f3d011682016040523d82523d5f602084013e610e2c565b606091505b509150915081610e695760048101905080806020019051810190610e509190612971565b60405162461bcd60e51b81526004016106a691906129e6565b80806020019051810190610e7d9190612ca4565b945050505050610eb7565b604080516080810182525f808252602082018190529181019190915260608101610d5f610d5a8888611695565b505b92915050565b5f610efc83838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061168a92505050565b90505f516020612f325f395f51905f525f610f1683611651565b60028101549091505f819003610f5d5760405162461bcd60e51b815260206004820152600c60248201526b1d5b9adb9bdddb881999595960a21b60448201526064016106a6565b82545f908490610f6f90600190612a85565b81548110610f7f57610f7f612683565b5f918252602090912060088204015460079091166004026101000a900460e01b90508084610fae600185612a85565b81548110610fbe57610fbe612683565b905f5260205f2090600891828204019190066004026101000a81548163ffffffff021916908360e01c021790555083805480610ffc57610ffc612d22565b5f8281526020902060085f1990920191820401805463ffffffff600460078516026101000a021916905590558161103282611651565b600201556001600160e01b031985165f9081527fe36ea87c48340f2c23c9e1c9f72f5c5165184e75683a4d2a19148e5964c1d2016020526040812090611078828261212a565b5060018101805460ff191690555f600282018190556003820181905560048201819055600582018190556006820180546001600160a01b0319169055600782018190556008909101556040517f69afe750a424a45bbe19fdde185259ba3a79671c6e4f40a783d355704a022921906107ad90899089908990612d36565b5f611102858585856115cc565b9050806001600160a01b03163b5f03611209575f61112286868686611931565b90505f5f8251602084015ff59050809250636d7f4b0b60e11b6001600160e01b031916836001600160a01b031663adb7c3f76040518163ffffffff1660e01b8152600401602060405180830381865afa158015611181573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111a59190612d62565b6001600160e01b031916146112065760405162461bcd60e51b815260206004820152602160248201527f756e636f6d706c69616e7420736f6c76657220696d706c656d656e746174696f6044820152603760f91b60648201526084016106a6565b50505b949350505050565b5f516020612f325f395f51905f5280545b8015611429575f82611235600184612a85565b8154811061124557611245612683565b5f9182526020822060088204015460079091166004026101000a900460e01b91505f516020612f125f395f51905f526001600160e01b031983165f90815260029190910160205260409020805461129b90612697565b80601f01602080910402602001604051908101604052809291908181526020018280546112c790612697565b80156113125780601f106112e957610100808354040283529160200191611312565b820191905f5260205f20905b8154815290600101906020018083116112f557829003601f168201915b5050505050905061132d5f516020612f125f395f51905f5290565b6001600160e01b031983165f9081526002919091016020526040812090611354828261212a565b5060018101805460ff191690555f600282018190556003820181905560048201819055600582018190556006820180546001600160a01b03191690556007820181905560089091015583548490806113ae576113ae612d22565b5f8281526020902060085f1990920191820401805463ffffffff600460078516026101000a021916905590556040517f69afe750a424a45bbe19fdde185259ba3a79671c6e4f40a783d355704a0229219061140c9083908590612d7d565b60405180910390a15050808061142190612da7565b915050611222565b5050565b5f5f61146d84848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061196392505050565b60408051808201825260018152602d60f81b6020808301918252835180850185525f808252908201819052845180860190955292518452830152919250906114b5838361198f565b6114c09060016127e8565b6001600160401b038111156114d7576114d76123bb565b60405190808252806020026020018201604052801561150a57816020015b60608152602001906001900390816114f55790505b5090505f5b815181101561154f5761152a6115258585611a23565b611a41565b82828151811061153c5761153c612683565b602090810291909101015260010161150f565b505f5f61158183600185516115649190612a85565b8151811061157457611574612683565b6020026020010151611aa5565b91509150806115c15760405162461bcd60e51b815260206004820152600c60248201526b62616420646563696d616c7360a01b60448201526064016106a6565b509695505050505050565b5f6001600160f81b031930826115e488888888611931565b805160209182012060405161163095949392016001600160f81b031994909416845260609290921b6bffffffffffffffffffffffff191660018401526015830152603582015260550190565b60408051601f19818403018152919052805160209091012095945050505050565b6001600160e01b0319165f9081527fe36ea87c48340f2c23c9e1c9f72f5c5165184e75683a4d2a19148e5964c1d2016020526040902090565b805160209091012090565b5f5f6116a083611651565b600401549050801561171b57604051634cddf61560e01b8152600481018290526001600160a01b03851690634cddf61590602401602060405180830381865afa1580156116ef573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117139190612dbc565b915050610eb7565b5f915050610eb7565b5f60f08260ff81111561173957611739612568565b1480610eb7575060f18260ff81111561175457611754612568565b1492915050565b5f61176582611651565b6004015490508015806117ef57505f604051634cddf61560e01b8152600481018390526001600160a01b03851690634cddf61590602401602060405180830381865afa1580156117b7573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117db9190612dbc565b60ff8111156117ec576117ec612568565b14155b15610eb7576117fd82611651565b600301549392505050565b5f81600461181582611b51565b158015611847575080601381111561182f5761182f612568565b8260200151601381111561184557611845612568565b145b6118935760405162461bcd60e51b815260206004820152601760248201527f63626f723a2063616e6e6f74206665746368206461746100000000000000000060448201526064016106a6565b6118a08460a00151611b5e565b92506118af8260a00151611bad565b826020019060138111156118c5576118c5612568565b908160138111156118d8576118d8612568565b815250505050919050565b5f6118f98260ff8111156107f5576107f5612568565b611929576119178260ff81111561191257611912612568565b611c74565b611922576002610eb7565b6003610eb7565b600192915050565b60608484848460405160200161194a9493929190612dd5565b6040516020818303038152906040529050949350505050565b6040805180820182525f8082526020918201528151808301909252825182529182019181019190915290565b5f5f825f01516119af855f01518660200151865f01518760200151611ca1565b6119b991906127e8565b90505b835160208501516119cd91906127e8565b8111610eb557816119dd81612df4565b925050825f0151611a128560200151836119f79190612a85565b8651611a039190612a85565b83865f01518760200151611ca1565b611a1c91906127e8565b90506119bc565b604080518082019091525f8082526020820152610eb5838383611dbd565b60605f825f01516001600160401b03811115611a5f57611a5f6123bb565b6040519080825280601f01601f191660200182016040528015611a89576020820181803683370190505b5090505f602082019050610eb5818560200151865f0151611e63565b5f80805b8351811015611b46575f6030858381518110611ac757611ac7612683565b016020015160f81c0360ff161080611afe575060096030858381518110611af057611af0612683565b016020015160f81c0360ff16115b15611b0e57505f93849350915050565b60018185510303600a0a6030858381518110611b2c57611b2c612683565b016020015160f81c0360ff16029290920191600101611aa9565b509092600192509050565b5f610eb7825f0151611724565b5f815f8060ff16826040015160ff1614611b9c57604080830151905161800560e51b815260ff918216600482015290821660248201526044016106a6565b611209845f01518560600151611edc565b5f611bc18251805151602090910151101590565b611c6f576006826040015160ff1611611c095760408201516502020183808360d11b9060ff1660078110611bf757611bf7612683565b1a6013811115610eb757610eb7612568565b816040015160ff16600703611c6f57816060015160ff1660141480611c355750816060015160ff166015145b15611c4257506002919050565b6019826060015160ff1610158015611c625750601b826060015160ff1611155b15611c6f57506005919050565b919050565b5f808260ff811115611c8857611c88612568565b14158015610eb75750611c9a82611724565b1592915050565b5f8381868511611da85760208511611d58575f8515611ceb576001611cc7876020612a85565b611cd2906008612e0c565b611cdd906002612f06565b611ce79190612a85565b1990505b845181165f87611cfb8b8b6127e8565b611d059190612a85565b855190915083165b828114611d4a57818610611d3257611d258b8b6127e8565b9650505050505050611209565b85611d3c81612df4565b965050838651169050611d0d565b859650505050505050611209565b508383205f905b611d698689612a85565b8211611da657858320808203611d855783945050505050611209565b611d906001856127e8565b9350508180611d9e90612df4565b925050611d5f565b505b611db287876127e8565b979650505050505050565b604080518082019091525f80825260208201525f611deb855f01518660200151865f01518760200151611ca1565b602080870180519186019190915251909150611e079082612a85565b835284516020860151611e1a91906127e8565b8103611e28575f8552611e5a565b83518351611e3691906127e8565b85518690611e45908390612a85565b9052508351611e5490826127e8565b60208601525b50909392505050565b60208110611e9b5781518352611e7a6020846127e8565b9250611e876020836127e8565b9150611e94602082612a85565b9050611e63565b5f198115611ec9576001611eb0836020612a85565b611ebc90610100612f06565b611ec69190612a85565b90505b9151835183169219169190911790915250565b5f60188260ff161015611ef3575060ff8116610eb7565b8160ff16601803611f1157611f0783611fa3565b60ff169050610eb7565b8160ff16601903611f3057611f2583612003565b61ffff169050610eb7565b8160ff16601a03611f5157611f448361206e565b63ffffffff169050610eb7565b8160ff16601b03611f6c57611f65836120cc565b9050610eb7565b8160ff16601f03611f8557506001600160401b03610eb7565b604051636d785b1360e01b815260ff831660048201526024016106a6565b5f8160200151825f01515180821115611fd9576040516363a056dd60e01b815260048101839052602481018290526044016106a6565b8351602085018051808301600101519550908190611ff682612df4565b8152505050505050919050565b5f8160200151600261201591906127e8565b82515180821115612043576040516363a056dd60e01b815260048101839052602481018290526044016106a6565b835160208501805160028184018101519650909161206182846127e8565b9052509395945050505050565b5f8160200151600461208091906127e8565b825151808211156120ae576040516363a056dd60e01b815260048101839052602481018290526044016106a6565b835160208501805160048184018101519650909161206182846127e8565b5f816020015160086120de91906127e8565b8251518082111561210c576040516363a056dd60e01b815260048101839052602481018290526044016106a6565b835160208501805160088184018101519650909161206182846127e8565b50805461213690612697565b5f825580601f10612145575050565b601f0160209004905f5260205f20908101906121619190612164565b50565b5b80821115612178575f8155600101612165565b5090565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b5f8151808452602084019350602083015f5b828110156121da5781518652602095860195909101906001016121bc565b5093949350505050565b606080825284519082018190525f9060208601906080840190835b818110156122275783516001600160e01b0319168352602093840193909201916001016121ff565b50508381036020850152809150855180825260208201925060208160051b830101602088015f5b8381101561228057601f1985840301865261226a83835161217c565b602096870196909350919091019060010161224e565b5050858103604087015261229481886121aa565b9998505050505050505050565b5f5f83601f8401126122b1575f5ffd5b5081356001600160401b038111156122c7575f5ffd5b6020830191508360208285010111156122de575f5ffd5b9250929050565b6001600160a01b0381168114612161575f5ffd5b5f5f5f5f5f6060868803121561230d575f5ffd5b85356001600160401b03811115612322575f5ffd5b61232e888289016122a1565b9096509450506020860135612342816122e5565b925060408601356001600160401b0381111561235c575f5ffd5b8601601f8101881361236c575f5ffd5b80356001600160401b03811115612381575f5ffd5b8860208260051b8401011115612395575f5ffd5b959894975092955050506020019190565b6001600160e01b031981168114612161575f5ffd5b634e487b7160e01b5f52604160045260245ffd5b60405160c081016001600160401b03811182821017156123f1576123f16123bb565b60405290565b604080519081016001600160401b03811182821017156123f1576123f16123bb565b803561ffff81168114611c6f575f5ffd5b6001600160401b0381168114612161575f5ffd5b5f5f5f5f84860360c0811215612452575f5ffd5b853561245d816122e5565b9450602086013561246d816123a6565b93506060603f1982011215612480575f5ffd5b50604051606081016001600160401b03811182821017156124a3576124a36123bb565b80604052506124b460408701612419565b81526124c260608701612419565b602082015260808601356124d58161242a565b60408201529396929550929360a00135925050565b5f5f5f604084860312156124fc575f5ffd5b83356001600160401b03811115612511575f5ffd5b61251d868287016122a1565b909790965060209590950135949350505050565b5f5f60408385031215612542575f5ffd5b823561254d816122e5565b9150602083013561255d816123a6565b809150509250929050565b634e487b7160e01b5f52602160045260245ffd5b5f6080820190506001600160401b0383511682526001600160401b036020840151166020830152604083015160408301526060830151600481106125ce57634e487b7160e01b5f52602160045260245ffd5b8060608401525092915050565b5f5f602083850312156125ec575f5ffd5b82356001600160401b03811115612601575f5ffd5b61260d858286016122a1565b90969095509350505050565b5f5f5f5f6040858703121561262c575f5ffd5b84356001600160401b03811115612641575f5ffd5b61264d878288016122a1565b90955093505060208501356001600160401b0381111561266b575f5ffd5b612677878288016122a1565b95989497509550505050565b634e487b7160e01b5f52603260045260245ffd5b600181811c908216806126ab57607f821691505b6020821081036126c957634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561271657805f5260205f20601f840160051c810160208510156126f45750805b601f840160051c820191505b81811015612713575f8155600101612700565b50505b505050565b6001600160401b03831115612732576127326123bb565b612746836127408354612697565b836126cf565b5f601f841160018114612777575f85156127605750838201355b5f19600387901b1c1916600186901b178355612713565b5f83815260208120601f198716915b828110156127a65786850135825560209485019460019092019101612786565b50868210156127c2575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610eb757610eb76127d4565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b6001600160e01b03198416815260406020820181905281018290525f6060600584901b830181019083018583601e1936839003015b878210156128c557868503605f190184528235818112612876575f5ffd5b89016020810190356001600160401b03811115612891575f5ffd5b80360382131561289f575f5ffd5b6128aa8782846127fb565b96505050602083019250602084019350600182019150612858565b509298975050505050505050565b5f81518060208401855e5f93019283525090919050565b5f6128f582846128d3565b9392505050565b5f5f6001600160401b03841115612915576129156123bb565b50604051601f19601f85018116603f011681018181106001600160401b0382111715612943576129436123bb565b60405283815290508082840185101561295a575f5ffd5b8383602083015e5f60208583010152509392505050565b5f60208284031215612981575f5ffd5b81516001600160401b03811115612996575f5ffd5b8201601f810184136129a6575f5ffd5b611209848251602084016128fc565b7f736f6c7665722076616c69646174696f6e206661696c65643a2000000000000081525f6128f5601a8301846128d3565b602081525f6128f5602083018461217c565b72039b6b7b5b296ba32b9ba103330b4b632b21d1606d1b81525f6128f560138301846128d3565b606081525f612a326060830186886127fb565b6001600160e01b0319949094166020830152506001600160a01b039190911660409091015292915050565b5f60208284031215612a6d575f5ffd5b815168ffffffffffffffffff811681146128f5575f5ffd5b81810381811115610eb757610eb76127d4565b5f60208284031215612aa8575f5ffd5b5051919050565b606081525f612ac26060830186886127fb565b6001600160e01b0319949094166020830152506040015292915050565b80516101008110611c6f575f5ffd5b8051611c6f8161242a565b805160ff81168114611c6f575f5ffd5b5f60c08284031215612b19575f5ffd5b612b216123cf565b905081516001600160401b03811115612b38575f5ffd5b820160408185031215612b49575f5ffd5b612b516123f7565b81516001600160401b03811115612b66575f5ffd5b8201601f81018613612b76575f5ffd5b612b85868251602084016128fc565b825250602091820151828201528252612b9f908301612af9565b6020820152612bb060408301612af9565b6040820152612bc160608301612af9565b6060820152612bd260808301612aee565b6080820152612be360a08301612aee565b60a082015292915050565b5f60208284031215612bfe575f5ffd5b81516001600160401b03811115612c13575f5ffd5b820160c08185031215612c24575f5ffd5b612c2c6123cf565b612c3582612adf565b8152602082015160148110612c48575f5ffd5b60208201526040828101519082015260608083015190820152612c6d60808301612aee565b608082015260a08201516001600160401b03811115612c8a575f5ffd5b612c9686828501612b09565b60a083015250949350505050565b5f6080828403128015612cb5575f5ffd5b50604051608081016001600160401b0381118282101715612cd857612cd86123bb565b6040528251612ce68161242a565b81526020830151612cf68161242a565b602082015260408381015190820152606083015160048110612d16575f5ffd5b60608201529392505050565b634e487b7160e01b5f52603160045260245ffd5b604081525f612d496040830185876127fb565b905063ffffffff60e01b83166020830152949350505050565b5f60208284031215612d72575f5ffd5b81516128f5816123a6565b604081525f612d8f604083018561217c565b905063ffffffff60e01b831660208301529392505050565b5f81612db557612db56127d4565b505f190190565b5f60208284031215612dcc575f5ffd5b6128f582612adf565b838582375f8482015f8152838582375f93019283525090949350505050565b5f60018201612e0557612e056127d4565b5060010190565b8082028115828204841417610eb757610eb76127d4565b6001815b6001841115612e5e57808504811115612e4257612e426127d4565b6001841615612e5057908102905b60019390931c928002612e27565b935093915050565b5f82612e7457506001610eb7565b81612e8057505f610eb7565b8160018114612e965760028114612ea057612ebc565b6001915050610eb7565b60ff841115612eb157612eb16127d4565b50506001821b610eb7565b5060208310610133831016604e8410600b8410161715612edf575081810a610eb7565b612eeb5f198484612e23565b805f1904821115612efe57612efe6127d4565b029392505050565b5f6128f58383612e6656fee36ea87c48340f2c23c9e1c9f72f5c5165184e75683a4d2a19148e5964c1d1ffe36ea87c48340f2c23c9e1c9f72f5c5165184e75683a4d2a19148e5964c1d200a2646970667358221220fd72ee38e483f297d3b5d1f51b10a8bde24dede16dc66e87a45ccb61a0d12c1b64736f6c634300081e0033";
readonly deployedBytecode: "0x73000000000000000000000000000000000000000030146080604052600436106100a6575f3560e01c806386ac03e01161006e57806386ac03e01461015e578063a55b471c1461017d578063e1c9e3c0146101b4578063e6f3e35d146101c8578063ff75890f146101ed575f5ffd5b80630306732e146100aa57806303f3813d146100ca57806307f11202146100eb57806384292f071461011f57806384ee24111461013e575b5f5ffd5b6100b2610200565b6040516100c1939291906121e4565b60405180910390f35b8180156100d5575f5ffd5b506100e96100e43660046122f9565b610456565b005b8180156100f6575f5ffd5b5061010a61010536600461243e565b6107be565b604080519283526020830191909152016100c1565b81801561012a575f5ffd5b506100e96101393660046124ea565b610ae3565b61015161014c366004612531565b610c67565b6040516100c1919061257c565b818015610169575f5ffd5b506100e96101783660046125db565b610ebd565b818015610188575f5ffd5b5061019c610197366004612619565b6110f5565b6040516001600160a01b0390911681526020016100c1565b8180156101bf575f5ffd5b506100e9611211565b6101db6101d63660046125db565b61142d565b60405160ff90911681526020016100c1565b61019c6101fb366004612619565b6115cc565b5f516020612f325f395f51905f528054604080516020808402820181019092528281526060938493849383018282801561028357602002820191905f5260205f20905f905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116102455790505b5050505050925082516001600160401b038111156102a3576102a36123bb565b6040519080825280602002602001820160405280156102d657816020015b60608152602001906001900390816102c15790505b50915082516001600160401b038111156102f2576102f26123bb565b60405190808252806020026020018201604052801561031b578160200160208202803683370190505b5090505f5b8351811015610450575f61034c85838151811061033f5761033f612683565b6020026020010151611651565b9050805f01805461035c90612697565b80601f016020809104026020016040519081016040528092919081815260200182805461038890612697565b80156103d35780601f106103aa576101008083540402835291602001916103d3565b820191905f5260205f20905b8154815290600101906020018083116103b657829003601f168201915b50505050508483815181106103ea576103ea612683565b602090810291909101015260068101546001600160a01b03161561042457600681015460601b6bffffffffffffffffffffffff191661042a565b80600501545b83838151811061043c5761043c612683565b602090810291909101015250600101610320565b50909192565b5f61049586868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061168a92505050565b90505f6104a182611651565b905080600201545f0361056d57806104ba87898361271b565b506104c5878761142d565b60018201805460ff191660ff929092169190911790555f516020612f125f395f51905f526001908101546104f8916127e8565b60028201556006810180546001600160a01b0319166001600160a01b0387161790555f516020612f125f395f51905f526001908101805491820181555f908152602090206008820401805463ffffffff60079093166004026101000a928302191660e085901c929092029190911790556105a8565b60068101546001600160a01b038681169116146105a8575f60058201556006810180546001600160a01b0319166001600160a01b0387161790555b5f5f866001600160a01b031663e6f8715860e01b8588886040516024016105d193929190612823565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161060f91906128ea565b5f60405180830381855af49150503d805f8114610647576040519150601f19603f3d011682016040523d82523d5f602084013e61064c565b606091505b5091509150816106af57600481019050808060200190518101906106709190612971565b60405160200161068091906129b5565b60408051601f198184030181529082905262461bcd60e51b82526106a6916004016129e6565b60405180910390fd5b5050604080516001600160e01b0319841660248083019190915282518083039091018152604490910182526020810180516001600160e01b031663e0d20f7360e01b17905290515f9182913091610705916128ea565b5f60405180830381855afa9150503d805f811461073d576040519150601f19603f3d011682016040523d82523d5f602084013e610742565b606091505b50915091508161077657600481019050808060200190518101906107669190612971565b60405160200161068091906129f8565b50507f286a3bf658fa39c74919afa81990860b8526693c9e7de41f8160a973a5c6d052878784886040516107ad9493929190612a1f565b60405180910390a150505050505050565b5f5f5f6107ca86611651565b9050806004015492505f6107de8888611695565b90506107fa8160ff8111156107f5576107f5612568565b611724565b156108fc576040516337ed55bf60e11b8152600481018590525f906001600160a01b038a1690636fdaab7e90602401602060405180830381865afa158015610844573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108689190612a5d565b90508068ffffffffffffffffff168611156108f25761089268ffffffffffffffffff821687612a85565b60405163ec5946db60e01b8152600481018790529094506001600160a01b038a169063ec5946db9086906024015f604051808303818588803b1580156108d6575f5ffd5b505af11580156108e8573d5f5f3e3d5ffd5b50505050506108f6565b5f93505b50610ad8565b5f8160ff81111561090f5761090f612568565b036109b0576003820154156109a4576003820154604051637c1fbda360e01b815260048101919091526001600160a01b03891690637c1fbda3906024016020604051808303815f875af1925050508015610986575060408051601f3d908101601f1916820190925261098391810190612a5d565b60015b156109a4576109a068ffffffffffffffffff8216876127e8565b9550505b60038201849055610a30565b604051637c1fbda360e01b8152600481018590526001600160a01b03891690637c1fbda3906024016020604051808303815f875af1925050508015610a12575060408051601f3d908101601f19168201909252610a0f91810190612a5d565b60015b15610a3057610a2c68ffffffffffffffffff8216876127e8565b9550505b60058201546040805163a58f680360e01b81526004810192909252875161ffff908116602484015260208901511660448301528701516001600160401b031660648201528593506001600160a01b0389169063a58f680390859060840160206040518083038185885af1158015610aa9573d5f5f3e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610ace9190612a98565b6004830181905593505b505094509492505050565b5f610b2284848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061168a92505050565b90505f610b2e82611651565b905080600201545f03610bfe5780610b4785878361271b565b50610b52858561142d565b60018201805460ff191660ff929092169190911790555f516020612f125f395f51905f52600190810154610b85916127e8565b6002820155600581018390555f516020612f325f395f51905f5280546001810182555f919091527fb7ef506da7909f25321b247725840c95fced7275a59588a4236c0671ab1d82216008820401805463ffffffff60079093166004026101000a928302191660e085901c92909202919091179055610c23565b82816005015414610c2357600581018390556006810180546001600160a01b03191690555b7f56660980158f15674b73c4dcec7f3314e2500517420e16306c40a07dad09f10185858486604051610c589493929190612aaf565b60405180910390a15050505050565b610c8e604080516080810182525f8082526020820181905291810182905290606082015290565b5f610c99848461175b565b90508015610d7c576040516359209b3960e01b8152600481018290525f906001600160a01b038616906359209b39906024015f60405180830381865afa158015610ce5573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610d0c9190810190612bee565b90506040518060800160405280610d2283611808565b6001600160401b0316815260200182608001516001600160401b0316815260200182604001518152602001610d5f610d5a8888611695565b6118e3565b6003811115610d7057610d70612568565b81525092505050610eb7565b5f610d8684611651565b600601546001600160a01b031690508015610e8857604080516001600160e01b0319861660248083019190915282518083039091018152604490910182526020810180516001600160e01b031663e0d20f7360e01b17905290515f9182913091610def916128ea565b5f60405180830381855afa9150503d805f8114610e27576040519150601f19603f3d011682016040523d82523d5f602084013e610e2c565b606091505b509150915081610e695760048101905080806020019051810190610e509190612971565b60405162461bcd60e51b81526004016106a691906129e6565b80806020019051810190610e7d9190612ca4565b945050505050610eb7565b604080516080810182525f808252602082018190529181019190915260608101610d5f610d5a8888611695565b505b92915050565b5f610efc83838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061168a92505050565b90505f516020612f325f395f51905f525f610f1683611651565b60028101549091505f819003610f5d5760405162461bcd60e51b815260206004820152600c60248201526b1d5b9adb9bdddb881999595960a21b60448201526064016106a6565b82545f908490610f6f90600190612a85565b81548110610f7f57610f7f612683565b5f918252602090912060088204015460079091166004026101000a900460e01b90508084610fae600185612a85565b81548110610fbe57610fbe612683565b905f5260205f2090600891828204019190066004026101000a81548163ffffffff021916908360e01c021790555083805480610ffc57610ffc612d22565b5f8281526020902060085f1990920191820401805463ffffffff600460078516026101000a021916905590558161103282611651565b600201556001600160e01b031985165f9081527fe36ea87c48340f2c23c9e1c9f72f5c5165184e75683a4d2a19148e5964c1d2016020526040812090611078828261212a565b5060018101805460ff191690555f600282018190556003820181905560048201819055600582018190556006820180546001600160a01b0319169055600782018190556008909101556040517f69afe750a424a45bbe19fdde185259ba3a79671c6e4f40a783d355704a022921906107ad90899089908990612d36565b5f611102858585856115cc565b9050806001600160a01b03163b5f03611209575f61112286868686611931565b90505f5f8251602084015ff59050809250636d7f4b0b60e11b6001600160e01b031916836001600160a01b031663adb7c3f76040518163ffffffff1660e01b8152600401602060405180830381865afa158015611181573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111a59190612d62565b6001600160e01b031916146112065760405162461bcd60e51b815260206004820152602160248201527f756e636f6d706c69616e7420736f6c76657220696d706c656d656e746174696f6044820152603760f91b60648201526084016106a6565b50505b949350505050565b5f516020612f325f395f51905f5280545b8015611429575f82611235600184612a85565b8154811061124557611245612683565b5f9182526020822060088204015460079091166004026101000a900460e01b91505f516020612f125f395f51905f526001600160e01b031983165f90815260029190910160205260409020805461129b90612697565b80601f01602080910402602001604051908101604052809291908181526020018280546112c790612697565b80156113125780601f106112e957610100808354040283529160200191611312565b820191905f5260205f20905b8154815290600101906020018083116112f557829003601f168201915b5050505050905061132d5f516020612f125f395f51905f5290565b6001600160e01b031983165f9081526002919091016020526040812090611354828261212a565b5060018101805460ff191690555f600282018190556003820181905560048201819055600582018190556006820180546001600160a01b03191690556007820181905560089091015583548490806113ae576113ae612d22565b5f8281526020902060085f1990920191820401805463ffffffff600460078516026101000a021916905590556040517f69afe750a424a45bbe19fdde185259ba3a79671c6e4f40a783d355704a0229219061140c9083908590612d7d565b60405180910390a15050808061142190612da7565b915050611222565b5050565b5f5f61146d84848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061196392505050565b60408051808201825260018152602d60f81b6020808301918252835180850185525f808252908201819052845180860190955292518452830152919250906114b5838361198f565b6114c09060016127e8565b6001600160401b038111156114d7576114d76123bb565b60405190808252806020026020018201604052801561150a57816020015b60608152602001906001900390816114f55790505b5090505f5b815181101561154f5761152a6115258585611a23565b611a41565b82828151811061153c5761153c612683565b602090810291909101015260010161150f565b505f5f61158183600185516115649190612a85565b8151811061157457611574612683565b6020026020010151611aa5565b91509150806115c15760405162461bcd60e51b815260206004820152600c60248201526b62616420646563696d616c7360a01b60448201526064016106a6565b509695505050505050565b5f6001600160f81b031930826115e488888888611931565b805160209182012060405161163095949392016001600160f81b031994909416845260609290921b6bffffffffffffffffffffffff191660018401526015830152603582015260550190565b60408051601f19818403018152919052805160209091012095945050505050565b6001600160e01b0319165f9081527fe36ea87c48340f2c23c9e1c9f72f5c5165184e75683a4d2a19148e5964c1d2016020526040902090565b805160209091012090565b5f5f6116a083611651565b600401549050801561171b57604051634cddf61560e01b8152600481018290526001600160a01b03851690634cddf61590602401602060405180830381865afa1580156116ef573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117139190612dbc565b915050610eb7565b5f915050610eb7565b5f60f08260ff81111561173957611739612568565b1480610eb7575060f18260ff81111561175457611754612568565b1492915050565b5f61176582611651565b6004015490508015806117ef57505f604051634cddf61560e01b8152600481018390526001600160a01b03851690634cddf61590602401602060405180830381865afa1580156117b7573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117db9190612dbc565b60ff8111156117ec576117ec612568565b14155b15610eb7576117fd82611651565b600301549392505050565b5f81600461181582611b51565b158015611847575080601381111561182f5761182f612568565b8260200151601381111561184557611845612568565b145b6118935760405162461bcd60e51b815260206004820152601760248201527f63626f723a2063616e6e6f74206665746368206461746100000000000000000060448201526064016106a6565b6118a08460a00151611b5e565b92506118af8260a00151611bad565b826020019060138111156118c5576118c5612568565b908160138111156118d8576118d8612568565b815250505050919050565b5f6118f98260ff8111156107f5576107f5612568565b611929576119178260ff81111561191257611912612568565b611c74565b611922576002610eb7565b6003610eb7565b600192915050565b60608484848460405160200161194a9493929190612dd5565b6040516020818303038152906040529050949350505050565b6040805180820182525f8082526020918201528151808301909252825182529182019181019190915290565b5f5f825f01516119af855f01518660200151865f01518760200151611ca1565b6119b991906127e8565b90505b835160208501516119cd91906127e8565b8111610eb557816119dd81612df4565b925050825f0151611a128560200151836119f79190612a85565b8651611a039190612a85565b83865f01518760200151611ca1565b611a1c91906127e8565b90506119bc565b604080518082019091525f8082526020820152610eb5838383611dbd565b60605f825f01516001600160401b03811115611a5f57611a5f6123bb565b6040519080825280601f01601f191660200182016040528015611a89576020820181803683370190505b5090505f602082019050610eb5818560200151865f0151611e63565b5f80805b8351811015611b46575f6030858381518110611ac757611ac7612683565b016020015160f81c0360ff161080611afe575060096030858381518110611af057611af0612683565b016020015160f81c0360ff16115b15611b0e57505f93849350915050565b60018185510303600a0a6030858381518110611b2c57611b2c612683565b016020015160f81c0360ff16029290920191600101611aa9565b509092600192509050565b5f610eb7825f0151611724565b5f815f8060ff16826040015160ff1614611b9c57604080830151905161800560e51b815260ff918216600482015290821660248201526044016106a6565b611209845f01518560600151611edc565b5f611bc18251805151602090910151101590565b611c6f576006826040015160ff1611611c095760408201516502020183808360d11b9060ff1660078110611bf757611bf7612683565b1a6013811115610eb757610eb7612568565b816040015160ff16600703611c6f57816060015160ff1660141480611c355750816060015160ff166015145b15611c4257506002919050565b6019826060015160ff1610158015611c625750601b826060015160ff1611155b15611c6f57506005919050565b919050565b5f808260ff811115611c8857611c88612568565b14158015610eb75750611c9a82611724565b1592915050565b5f8381868511611da85760208511611d58575f8515611ceb576001611cc7876020612a85565b611cd2906008612e0c565b611cdd906002612f06565b611ce79190612a85565b1990505b845181165f87611cfb8b8b6127e8565b611d059190612a85565b855190915083165b828114611d4a57818610611d3257611d258b8b6127e8565b9650505050505050611209565b85611d3c81612df4565b965050838651169050611d0d565b859650505050505050611209565b508383205f905b611d698689612a85565b8211611da657858320808203611d855783945050505050611209565b611d906001856127e8565b9350508180611d9e90612df4565b925050611d5f565b505b611db287876127e8565b979650505050505050565b604080518082019091525f80825260208201525f611deb855f01518660200151865f01518760200151611ca1565b602080870180519186019190915251909150611e079082612a85565b835284516020860151611e1a91906127e8565b8103611e28575f8552611e5a565b83518351611e3691906127e8565b85518690611e45908390612a85565b9052508351611e5490826127e8565b60208601525b50909392505050565b60208110611e9b5781518352611e7a6020846127e8565b9250611e876020836127e8565b9150611e94602082612a85565b9050611e63565b5f198115611ec9576001611eb0836020612a85565b611ebc90610100612f06565b611ec69190612a85565b90505b9151835183169219169190911790915250565b5f60188260ff161015611ef3575060ff8116610eb7565b8160ff16601803611f1157611f0783611fa3565b60ff169050610eb7565b8160ff16601903611f3057611f2583612003565b61ffff169050610eb7565b8160ff16601a03611f5157611f448361206e565b63ffffffff169050610eb7565b8160ff16601b03611f6c57611f65836120cc565b9050610eb7565b8160ff16601f03611f8557506001600160401b03610eb7565b604051636d785b1360e01b815260ff831660048201526024016106a6565b5f8160200151825f01515180821115611fd9576040516363a056dd60e01b815260048101839052602481018290526044016106a6565b8351602085018051808301600101519550908190611ff682612df4565b8152505050505050919050565b5f8160200151600261201591906127e8565b82515180821115612043576040516363a056dd60e01b815260048101839052602481018290526044016106a6565b835160208501805160028184018101519650909161206182846127e8565b9052509395945050505050565b5f8160200151600461208091906127e8565b825151808211156120ae576040516363a056dd60e01b815260048101839052602481018290526044016106a6565b835160208501805160048184018101519650909161206182846127e8565b5f816020015160086120de91906127e8565b8251518082111561210c576040516363a056dd60e01b815260048101839052602481018290526044016106a6565b835160208501805160088184018101519650909161206182846127e8565b50805461213690612697565b5f825580601f10612145575050565b601f0160209004905f5260205f20908101906121619190612164565b50565b5b80821115612178575f8155600101612165565b5090565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b5f8151808452602084019350602083015f5b828110156121da5781518652602095860195909101906001016121bc565b5093949350505050565b606080825284519082018190525f9060208601906080840190835b818110156122275783516001600160e01b0319168352602093840193909201916001016121ff565b50508381036020850152809150855180825260208201925060208160051b830101602088015f5b8381101561228057601f1985840301865261226a83835161217c565b602096870196909350919091019060010161224e565b5050858103604087015261229481886121aa565b9998505050505050505050565b5f5f83601f8401126122b1575f5ffd5b5081356001600160401b038111156122c7575f5ffd5b6020830191508360208285010111156122de575f5ffd5b9250929050565b6001600160a01b0381168114612161575f5ffd5b5f5f5f5f5f6060868803121561230d575f5ffd5b85356001600160401b03811115612322575f5ffd5b61232e888289016122a1565b9096509450506020860135612342816122e5565b925060408601356001600160401b0381111561235c575f5ffd5b8601601f8101881361236c575f5ffd5b80356001600160401b03811115612381575f5ffd5b8860208260051b8401011115612395575f5ffd5b959894975092955050506020019190565b6001600160e01b031981168114612161575f5ffd5b634e487b7160e01b5f52604160045260245ffd5b60405160c081016001600160401b03811182821017156123f1576123f16123bb565b60405290565b604080519081016001600160401b03811182821017156123f1576123f16123bb565b803561ffff81168114611c6f575f5ffd5b6001600160401b0381168114612161575f5ffd5b5f5f5f5f84860360c0811215612452575f5ffd5b853561245d816122e5565b9450602086013561246d816123a6565b93506060603f1982011215612480575f5ffd5b50604051606081016001600160401b03811182821017156124a3576124a36123bb565b80604052506124b460408701612419565b81526124c260608701612419565b602082015260808601356124d58161242a565b60408201529396929550929360a00135925050565b5f5f5f604084860312156124fc575f5ffd5b83356001600160401b03811115612511575f5ffd5b61251d868287016122a1565b909790965060209590950135949350505050565b5f5f60408385031215612542575f5ffd5b823561254d816122e5565b9150602083013561255d816123a6565b809150509250929050565b634e487b7160e01b5f52602160045260245ffd5b5f6080820190506001600160401b0383511682526001600160401b036020840151166020830152604083015160408301526060830151600481106125ce57634e487b7160e01b5f52602160045260245ffd5b8060608401525092915050565b5f5f602083850312156125ec575f5ffd5b82356001600160401b03811115612601575f5ffd5b61260d858286016122a1565b90969095509350505050565b5f5f5f5f6040858703121561262c575f5ffd5b84356001600160401b03811115612641575f5ffd5b61264d878288016122a1565b90955093505060208501356001600160401b0381111561266b575f5ffd5b612677878288016122a1565b95989497509550505050565b634e487b7160e01b5f52603260045260245ffd5b600181811c908216806126ab57607f821691505b6020821081036126c957634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561271657805f5260205f20601f840160051c810160208510156126f45750805b601f840160051c820191505b81811015612713575f8155600101612700565b50505b505050565b6001600160401b03831115612732576127326123bb565b612746836127408354612697565b836126cf565b5f601f841160018114612777575f85156127605750838201355b5f19600387901b1c1916600186901b178355612713565b5f83815260208120601f198716915b828110156127a65786850135825560209485019460019092019101612786565b50868210156127c2575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610eb757610eb76127d4565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b6001600160e01b03198416815260406020820181905281018290525f6060600584901b830181019083018583601e1936839003015b878210156128c557868503605f190184528235818112612876575f5ffd5b89016020810190356001600160401b03811115612891575f5ffd5b80360382131561289f575f5ffd5b6128aa8782846127fb565b96505050602083019250602084019350600182019150612858565b509298975050505050505050565b5f81518060208401855e5f93019283525090919050565b5f6128f582846128d3565b9392505050565b5f5f6001600160401b03841115612915576129156123bb565b50604051601f19601f85018116603f011681018181106001600160401b0382111715612943576129436123bb565b60405283815290508082840185101561295a575f5ffd5b8383602083015e5f60208583010152509392505050565b5f60208284031215612981575f5ffd5b81516001600160401b03811115612996575f5ffd5b8201601f810184136129a6575f5ffd5b611209848251602084016128fc565b7f736f6c7665722076616c69646174696f6e206661696c65643a2000000000000081525f6128f5601a8301846128d3565b602081525f6128f5602083018461217c565b72039b6b7b5b296ba32b9ba103330b4b632b21d1606d1b81525f6128f560138301846128d3565b606081525f612a326060830186886127fb565b6001600160e01b0319949094166020830152506001600160a01b039190911660409091015292915050565b5f60208284031215612a6d575f5ffd5b815168ffffffffffffffffff811681146128f5575f5ffd5b81810381811115610eb757610eb76127d4565b5f60208284031215612aa8575f5ffd5b5051919050565b606081525f612ac26060830186886127fb565b6001600160e01b0319949094166020830152506040015292915050565b80516101008110611c6f575f5ffd5b8051611c6f8161242a565b805160ff81168114611c6f575f5ffd5b5f60c08284031215612b19575f5ffd5b612b216123cf565b905081516001600160401b03811115612b38575f5ffd5b820160408185031215612b49575f5ffd5b612b516123f7565b81516001600160401b03811115612b66575f5ffd5b8201601f81018613612b76575f5ffd5b612b85868251602084016128fc565b825250602091820151828201528252612b9f908301612af9565b6020820152612bb060408301612af9565b6