diff --git a/README.md b/README.md index 3a19432a..87154d28 100644 --- a/README.md +++ b/README.md @@ -4,8 +4,6 @@ W3bstream is a key Layer-2 solution within the IoTeX ecosystem, designed to support verifiable data processing for Decentralized Physical Infrastructure Networks (*DePINs*). It operates through a network of *Sequencer nodes* and *Prover nodes*. -## Workflow -

@@ -17,25 +15,33 @@ W3bstream is a key Layer-2 solution within the IoTeX ecosystem, designed to supp The chain of tasks and their ZK-proofs are recorded **on the IoTeX blockchain**, making them accessible for dApps. The actual data, uniquely referenced by the on-chain tasks, remains available for full off-chain verification. This architecture ensures secure, reliable, and scalable data processing, allowing DePIN dApps to act on verified real-world facts to trigger blockchain-based incentives. + + +## Getting Started + +### For Embedded Developer + +[ioID-SDK](https://github.com/iotexproject/ioID-SDK) repo provides SDK for DePIN hardwares to connect W3bstream and IoTeX ecosystem + + +### For Project Builder + +[Build a custom zk prover for W3bstream](./docs/DEVELOPER_GUIDE.md) -## Running nodes - > ⓘ **Note**: Joining the W3bstream network as a sequencer or prover node is currently unavailable. Stay tuned for updates in future releases. [Follow us on X](https://x.com/iotex_dev). -## Get Started for Builders +[Deploy the zk prover to W3bstream](./docs/QUICK_START.md) -[Deploy a simple zk prover to W3bstream →](./docs/QUICK_START.md) +### For Node operator -[Build your custom zk prover for W3bstream →](./docs/DEVELOPER_GUIDE.md) -## Docker images +> ⓘ **Note**: Joining the W3bstream network as a sequencer or prover node is currently unavailable. Stay tuned for updates in future releases. [Follow us on X](https://x.com/iotex_dev). -[Sequencer Node →](https://github.com/iotexproject/w3bstream/pkgs/container/w3bstream-sequencer) +### For Module Integrator -[Prover Node →](https://github.com/iotexproject/w3bstream/pkgs/container/w3bstream-prover) + - Storage: [./datasource](./datasource/) folder contains [documentation](./datasource/README.md) and existing implementations W3bstream can suppport. -## Contract Deployments + - ZK Engine: ZK Service needs to support [Protobuf interface](./vm/proto/vm.proto) to communication with ZK Node - [smartcontracts/README.md](./smartcontracts/README.md#deployment) ## Contributing diff --git a/examples/nft-bytecode.hex b/examples/nft-bytecode.hex deleted file mode 100644 index e6241540..00000000 --- a/examples/nft-bytecode.hex +++ /dev/null @@ -1 +0,0 @@ -6080604052348015600e575f80fd5b506133168061001c5f395ff3fe608060405234801561000f575f80fd5b5060043610610171575f3560e01c80636a627842116100dc578063a22cb46511610095578063b88d4fde1161006f578063b88d4fde14610443578063c87b56dd1461045f578063e985e9c51461048f578063f2fde38b146104bf57610171565b8063a22cb465146103db578063a327039a146103f7578063aa271e1a1461041357610171565b80636a6278421461030557806370a0823114610335578063715018a6146103655780638a6db9c31461036f5780638da5cb5b1461039f57806395d89b41146103bd57610171565b80633092afd51161012e5780633092afd51461024957806342842e0e146102655780634cd88b76146102815780634e44d9561461029d57806355f804b3146102b95780636352211e146102d557610171565b806301ffc9a71461017557806306fdde03146101a5578063081812fc146101c3578063095ea7b3146101f357806323b872dd1461020f5780632ddbd13a1461022b575b5f80fd5b61018f600480360381019061018a91906123c8565b6104db565b60405161019c919061240d565b60405180910390f35b6101ad6105bc565b6040516101ba9190612496565b60405180910390f35b6101dd60048036038101906101d891906124e9565b610659565b6040516101ea9190612553565b60405180910390f35b61020d60048036038101906102089190612596565b610674565b005b610229600480360381019061022491906125d4565b61068a565b005b610233610789565b6040516102409190612633565b60405180910390f35b610263600480360381019061025e919061264c565b61078f565b005b61027f600480360381019061027a91906125d4565b610872565b005b61029b600480360381019061029691906127a3565b610891565b005b6102b760048036038101906102b29190612596565b610a3b565b005b6102d360048036038101906102ce9190612876565b610b2b565b005b6102ef60048036038101906102ea91906124e9565b610b82565b6040516102fc9190612553565b60405180910390f35b61031f600480360381019061031a919061264c565b610b93565b60405161032c9190612633565b60405180910390f35b61034f600480360381019061034a919061264c565b610cfa565b60405161035c9190612633565b60405180910390f35b61036d610dbe565b005b6103896004803603810190610384919061264c565b610dd1565b6040516103969190612633565b60405180910390f35b6103a7610e17565b6040516103b49190612553565b60405180910390f35b6103c5610e4c565b6040516103d29190612496565b60405180910390f35b6103f560048036038101906103f091906128eb565b610eea565b005b610411600480360381019061040c9190612596565b610f00565b005b61042d6004803603810190610428919061264c565b61108e565b60405161043a919061240d565b60405180910390f35b61045d600480360381019061045891906129c7565b6110df565b005b610479600480360381019061047491906124e9565b611104565b6040516104869190612496565b60405180910390f35b6104a960048036038101906104a49190612a47565b61116a565b6040516104b6919061240d565b60405180910390f35b6104d960048036038101906104d4919061264c565b611206565b005b5f7f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806105a557507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806105b557506105b48261128a565b5b9050919050565b60605f6105c76112f3565b9050805f0180546105d790612ab2565b80601f016020809104026020016040519081016040528092919081815260200182805461060390612ab2565b801561064e5780601f106106255761010080835404028352916020019161064e565b820191905f5260205f20905b81548152906001019060200180831161063157829003601f168201915b505050505091505090565b5f6106638261131a565b5061066d826113a0565b9050919050565b61068682826106816113e7565b6113ee565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036106fa575f6040517f64a0ae920000000000000000000000000000000000000000000000000000000081526004016106f19190612553565b60405180910390fd5b5f61070d83836107086113e7565b611400565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610783578382826040517f64283d7b00000000000000000000000000000000000000000000000000000000815260040161077a93929190612ae2565b60405180910390fd5b50505050565b60035481565b61079761161d565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508073ffffffffffffffffffffffffffffffffffffffff167fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669260405160405180910390a250565b61088c83838360405180602001604052805f8152506110df565b505050565b5f61089a6116a4565b90505f815f0160089054906101000a900460ff161590505f825f015f9054906101000a900467ffffffffffffffff1690505f808267ffffffffffffffff161480156108e25750825b90505f60018367ffffffffffffffff1614801561091557505f3073ffffffffffffffffffffffffffffffffffffffff163b145b905081158015610923575080155b1561095a576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001855f015f6101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555083156109a7576001855f0160086101000a81548160ff0219169083151502179055505b6109b0336116cb565b6109ba87876116df565b60405180602001604052805f815250600290816109d79190612cb4565b508315610a32575f855f0160086101000a81548160ff0219169083151502179055507fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d26001604051610a299190612dcf565b60405180910390a15b50505050505050565b610a4361161d565b60015f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff167f46980fca912ef9bcdbd36877427b6b90e860769f604e89c0e67720cece530d2082604051610b1f9190612633565b60405180910390a25050565b610b3361161d565b818160029182610b44929190612df2565b507ff4246bde4c2b35ca1266f5ec0cafe5d0dbb2cc6b2c339a541fb710b700e60a2a8282604051610b76929190612eeb565b60405180910390a15050565b5f610b8c8261131a565b9050919050565b5f8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610c02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf990612f57565b60405180910390fd5b5f60015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f8111610c85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7c90612fbf565b60405180910390fd5b6001805f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825403925050819055505f60035f8154610cde9061300a565b9190508190559050610cf084826116f5565b8092505050919050565b5f80610d046112f3565b90505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610d76575f6040517f89c62b64000000000000000000000000000000000000000000000000000000008152600401610d6d9190612553565b60405180910390fd5b806003015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054915050919050565b610dc661161d565b610dcf5f6117e8565b565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f80610e216118b9565b9050805f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505090565b60605f610e576112f3565b9050806001018054610e6890612ab2565b80601f0160208091040260200160405190810160405280929190818152602001828054610e9490612ab2565b8015610edf5780601f10610eb657610100808354040283529160200191610edf565b820191905f5260205f20905b815481529060010190602001808311610ec257829003601f168201915b505050505091505090565b610efc610ef56113e7565b83836118e0565b5050565b610f0861161d565b5f8111610f4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f419061309b565b60405180910390fd5b5f808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16610fd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc990613103565b60405180910390fd5b8060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461101e9190613121565b925050819055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f07c0d62ae316652e5119c300b4d28642974938bc9dc91861999a4c778431f93c836040516110829190612633565b60405180910390a35050565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b6110ea84848461068a565b6110fe6110f56113e7565b85858585611a57565b50505050565b606061110f8261131a565b505f611119611c03565b90505f8151116111375760405180602001604052805f815250611162565b8061114184611c93565b60405160200161115292919061318e565b6040516020818303038152906040525b915050919050565b5f806111746112f3565b9050806005015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1691505092915050565b61120e61161d565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361127e575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016112759190612553565b60405180910390fd5b611287816117e8565b50565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f7f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079300905090565b5f8061132583611d5d565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361139757826040517f7e27328900000000000000000000000000000000000000000000000000000000815260040161138e9190612633565b60405180910390fd5b80915050919050565b5f806113aa6112f3565b9050806004015f8481526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915050919050565b5f33905090565b6113fb8383836001611da4565b505050565b5f8061140a6112f3565b90505f61141685611d5d565b90505f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161461145757611456818587611f71565b5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146114e4576114965f865f80611da4565b6001826003015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825403925050819055505b5f73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614611565576001826003015f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b85826002015f8781526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550848673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a480925050509392505050565b6116256113e7565b73ffffffffffffffffffffffffffffffffffffffff16611643610e17565b73ffffffffffffffffffffffffffffffffffffffff16146116a2576116666113e7565b6040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016116999190612553565b60405180910390fd5b565b5f7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00905090565b6116d3612034565b6116dc81612074565b50565b6116e7612034565b6116f182826120f8565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611765575f6040517f64a0ae9200000000000000000000000000000000000000000000000000000000815260040161175c9190612553565b60405180910390fd5b5f61177183835f611400565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146117e3575f6040517f73c6ac6e0000000000000000000000000000000000000000000000000000000081526004016117da9190612553565b60405180910390fd5b505050565b5f6117f16118b9565b90505f815f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905082825f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3505050565b5f7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300905090565b5f6118e96112f3565b90505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361195b57826040517f5b08ba180000000000000000000000000000000000000000000000000000000081526004016119529190612553565b60405180910390fd5b81816005015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3184604051611a49919061240d565b60405180910390a350505050565b5f8373ffffffffffffffffffffffffffffffffffffffff163b1115611bfc578273ffffffffffffffffffffffffffffffffffffffff1663150b7a02868685856040518563ffffffff1660e01b8152600401611ab59493929190613203565b6020604051808303815f875af1925050508015611af057506040513d601f19601f82011682018060405250810190611aed9190613261565b60015b611b71573d805f8114611b1e576040519150601f19603f3d011682016040523d82523d5f602084013e611b23565b606091505b505f815103611b6957836040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600401611b609190612553565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614611bfa57836040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600401611bf19190612553565b60405180910390fd5b505b5050505050565b606060028054611c1290612ab2565b80601f0160208091040260200160405190810160405280929190818152602001828054611c3e90612ab2565b8015611c895780601f10611c6057610100808354040283529160200191611c89565b820191905f5260205f20905b815481529060010190602001808311611c6c57829003601f168201915b5050505050905090565b60605f6001611ca184612133565b0190505f8167ffffffffffffffff811115611cbf57611cbe61267f565b5b6040519080825280601f01601f191660200182016040528015611cf15781602001600182028036833780820191505090505b5090505f82602001820190505b600115611d52578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8581611d4757611d4661328c565b5b0494505f8503611cfe575b819350505050919050565b5f80611d676112f3565b9050806002015f8481526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915050919050565b5f611dad6112f3565b90508180611de757505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611f19575f611df68561131a565b90505f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611e6057508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b8015611e735750611e71818561116a565b155b15611eb557836040517fa9fbf51f000000000000000000000000000000000000000000000000000000008152600401611eac9190612553565b60405180910390fd5b8215611f1757848673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b84816004015f8681526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050565b611f7c838383612284565b61202f575f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611ff057806040517f7e273289000000000000000000000000000000000000000000000000000000008152600401611fe79190612633565b60405180910390fd5b81816040517f177e802f0000000000000000000000000000000000000000000000000000000081526004016120269291906132b9565b60405180910390fd5b505050565b61203c612344565b612072576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b61207c612034565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036120ec575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016120e39190612553565b60405180910390fd5b6120f5816117e8565b50565b612100612034565b5f6121096112f3565b905082815f01908161211b9190612cb4565b508181600101908161212d9190612cb4565b50505050565b5f805f90507a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000831061218f577a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083816121855761218461328c565b5b0492506040810190505b6d04ee2d6d415b85acef810000000083106121cc576d04ee2d6d415b85acef810000000083816121c2576121c161328c565b5b0492506020810190505b662386f26fc1000083106121fb57662386f26fc1000083816121f1576121f061328c565b5b0492506010810190505b6305f5e1008310612224576305f5e100838161221a5761221961328c565b5b0492506008810190505b612710831061224957612710838161223f5761223e61328c565b5b0492506004810190505b6064831061226c57606483816122625761226161328c565b5b0492506002810190505b600a831061227b576001810190505b80915050919050565b5f8073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561233b57508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806122fc57506122fb848461116a565b5b8061233a57508273ffffffffffffffffffffffffffffffffffffffff16612322836113a0565b73ffffffffffffffffffffffffffffffffffffffff16145b5b90509392505050565b5f61234d6116a4565b5f0160089054906101000a900460ff16905090565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6123a781612373565b81146123b1575f80fd5b50565b5f813590506123c28161239e565b92915050565b5f602082840312156123dd576123dc61236b565b5b5f6123ea848285016123b4565b91505092915050565b5f8115159050919050565b612407816123f3565b82525050565b5f6020820190506124205f8301846123fe565b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61246882612426565b6124728185612430565b9350612482818560208601612440565b61248b8161244e565b840191505092915050565b5f6020820190508181035f8301526124ae818461245e565b905092915050565b5f819050919050565b6124c8816124b6565b81146124d2575f80fd5b50565b5f813590506124e3816124bf565b92915050565b5f602082840312156124fe576124fd61236b565b5b5f61250b848285016124d5565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61253d82612514565b9050919050565b61254d81612533565b82525050565b5f6020820190506125665f830184612544565b92915050565b61257581612533565b811461257f575f80fd5b50565b5f813590506125908161256c565b92915050565b5f80604083850312156125ac576125ab61236b565b5b5f6125b985828601612582565b92505060206125ca858286016124d5565b9150509250929050565b5f805f606084860312156125eb576125ea61236b565b5b5f6125f886828701612582565b935050602061260986828701612582565b925050604061261a868287016124d5565b9150509250925092565b61262d816124b6565b82525050565b5f6020820190506126465f830184612624565b92915050565b5f602082840312156126615761266061236b565b5b5f61266e84828501612582565b91505092915050565b5f80fd5b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6126b58261244e565b810181811067ffffffffffffffff821117156126d4576126d361267f565b5b80604052505050565b5f6126e6612362565b90506126f282826126ac565b919050565b5f67ffffffffffffffff8211156127115761271061267f565b5b61271a8261244e565b9050602081019050919050565b828183375f83830152505050565b5f612747612742846126f7565b6126dd565b9050828152602081018484840111156127635761276261267b565b5b61276e848285612727565b509392505050565b5f82601f83011261278a57612789612677565b5b813561279a848260208601612735565b91505092915050565b5f80604083850312156127b9576127b861236b565b5b5f83013567ffffffffffffffff8111156127d6576127d561236f565b5b6127e285828601612776565b925050602083013567ffffffffffffffff8111156128035761280261236f565b5b61280f85828601612776565b9150509250929050565b5f80fd5b5f80fd5b5f8083601f84011261283657612835612677565b5b8235905067ffffffffffffffff81111561285357612852612819565b5b60208301915083600182028301111561286f5761286e61281d565b5b9250929050565b5f806020838503121561288c5761288b61236b565b5b5f83013567ffffffffffffffff8111156128a9576128a861236f565b5b6128b585828601612821565b92509250509250929050565b6128ca816123f3565b81146128d4575f80fd5b50565b5f813590506128e5816128c1565b92915050565b5f80604083850312156129015761290061236b565b5b5f61290e85828601612582565b925050602061291f858286016128d7565b9150509250929050565b5f67ffffffffffffffff8211156129435761294261267f565b5b61294c8261244e565b9050602081019050919050565b5f61296b61296684612929565b6126dd565b9050828152602081018484840111156129875761298661267b565b5b612992848285612727565b509392505050565b5f82601f8301126129ae576129ad612677565b5b81356129be848260208601612959565b91505092915050565b5f805f80608085870312156129df576129de61236b565b5b5f6129ec87828801612582565b94505060206129fd87828801612582565b9350506040612a0e878288016124d5565b925050606085013567ffffffffffffffff811115612a2f57612a2e61236f565b5b612a3b8782880161299a565b91505092959194509250565b5f8060408385031215612a5d57612a5c61236b565b5b5f612a6a85828601612582565b9250506020612a7b85828601612582565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680612ac957607f821691505b602082108103612adc57612adb612a85565b5b50919050565b5f606082019050612af55f830186612544565b612b026020830185612624565b612b0f6040830184612544565b949350505050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302612b737fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82612b38565b612b7d8683612b38565b95508019841693508086168417925050509392505050565b5f819050919050565b5f612bb8612bb3612bae846124b6565b612b95565b6124b6565b9050919050565b5f819050919050565b612bd183612b9e565b612be5612bdd82612bbf565b848454612b44565b825550505050565b5f90565b612bf9612bed565b612c04818484612bc8565b505050565b5b81811015612c2757612c1c5f82612bf1565b600181019050612c0a565b5050565b601f821115612c6c57612c3d81612b17565b612c4684612b29565b81016020851015612c55578190505b612c69612c6185612b29565b830182612c09565b50505b505050565b5f82821c905092915050565b5f612c8c5f1984600802612c71565b1980831691505092915050565b5f612ca48383612c7d565b9150826002028217905092915050565b612cbd82612426565b67ffffffffffffffff811115612cd657612cd561267f565b5b612ce08254612ab2565b612ceb828285612c2b565b5f60209050601f831160018114612d1c575f8415612d0a578287015190505b612d148582612c99565b865550612d7b565b601f198416612d2a86612b17565b5f5b82811015612d5157848901518255600182019150602085019450602081019050612d2c565b86831015612d6e5784890151612d6a601f891682612c7d565b8355505b6001600288020188555050505b505050505050565b5f819050919050565b5f67ffffffffffffffff82169050919050565b5f612db9612db4612daf84612d83565b612b95565b612d8c565b9050919050565b612dc981612d9f565b82525050565b5f602082019050612de25f830184612dc0565b92915050565b5f82905092915050565b612dfc8383612de8565b67ffffffffffffffff811115612e1557612e1461267f565b5b612e1f8254612ab2565b612e2a828285612c2b565b5f601f831160018114612e57575f8415612e45578287013590505b612e4f8582612c99565b865550612eb6565b601f198416612e6586612b17565b5f5b82811015612e8c57848901358255600182019150602085019450602081019050612e67565b86831015612ea95784890135612ea5601f891682612c7d565b8355505b6001600288020188555050505b50505050505050565b5f612eca8385612430565b9350612ed7838584612727565b612ee08361244e565b840190509392505050565b5f6020820190508181035f830152612f04818486612ebf565b90509392505050565b7f7a65726f206164647265737300000000000000000000000000000000000000005f82015250565b5f612f41600c83612430565b9150612f4c82612f0d565b602082019050919050565b5f6020820190508181035f830152612f6e81612f35565b9050919050565b7f65786365656473206d696e746572416c6c6f77616e63650000000000000000005f82015250565b5f612fa9601783612430565b9150612fb482612f75565b602082019050919050565b5f6020820190508181035f830152612fd681612f9d565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613014826124b6565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361304657613045612fdd565b5b600182019050919050565b7f7a65726f20616d6f756e740000000000000000000000000000000000000000005f82015250565b5f613085600b83612430565b915061309082613051565b602082019050919050565b5f6020820190508181035f8301526130b281613079565b9050919050565b7f6e6f74206d696e746572000000000000000000000000000000000000000000005f82015250565b5f6130ed600a83612430565b91506130f8826130b9565b602082019050919050565b5f6020820190508181035f83015261311a816130e1565b9050919050565b5f61312b826124b6565b9150613136836124b6565b925082820190508082111561314e5761314d612fdd565b5b92915050565b5f81905092915050565b5f61316882612426565b6131728185613154565b9350613182818560208601612440565b80840191505092915050565b5f613199828561315e565b91506131a5828461315e565b91508190509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f6131d5826131b1565b6131df81856131bb565b93506131ef818560208601612440565b6131f88161244e565b840191505092915050565b5f6080820190506132165f830187612544565b6132236020830186612544565b6132306040830185612624565b818103606083015261324281846131cb565b905095945050505050565b5f8151905061325b8161239e565b92915050565b5f602082840312156132765761327561236b565b5b5f6132838482850161324d565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6040820190506132cc5f830185612544565b6132d96020830184612624565b939250505056fea26469706673582212202ddc96ed214c2cb923348421678f59edb0a714892bcb6dcefb71e217ad011f2764736f6c634300081a0033 \ No newline at end of file