Warning! Contract bytecode has been changed and doesn't match the verified one. Therefore, interaction with this smart contract may be risky.
- Contract name:
- PeggedToken
- Optimization enabled
- false
- Compiler version
- v0.8.26+commit.8a97fa7a
- EVM Version
- paris
- Verified at
- 2025-03-02T17:17:10.998692Z
Contract source code
// SPDX-License-Identifier: MIT pragma solidity ^0.8.26; //fortct interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer( address recipient, uint256 amount ) external returns (bool); function allowance( address owner, address spender ) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval( address indexed owner, address indexed spender, uint256 value ); } contract ERC20 is IERC20 { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } function name() public view virtual returns (string memory) { return _name; } function symbol() public view virtual returns (string memory) { return _symbol; } function decimals() public view virtual returns (uint8) { return 18; } function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } function balanceOf( address account ) public view virtual override returns (uint256) { return _balances[account]; } function transfer( address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(msg.sender, recipient, amount); return true; } function allowance( address owner, address spender ) public view virtual override returns (uint256) { return _allowances[owner][spender]; } function approve( address spender, uint256 amount ) public virtual override returns (bool) { _approve(msg.sender, spender, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(sender, recipient, amount); uint256 currentAllowance = _allowances[sender][msg.sender]; require( currentAllowance >= amount, "ERC20: transfer amount exceeds allowance" ); unchecked { _approve(sender, msg.sender, currentAllowance - amount); } return true; } function increaseAllowance( address spender, uint256 addedValue ) public virtual returns (bool) { _approve( msg.sender, spender, _allowances[msg.sender][spender] + addedValue ); return true; } function decreaseAllowance( address spender, uint256 subtractedValue ) public virtual returns (bool) { uint256 currentAllowance = _allowances[msg.sender][spender]; require( currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero" ); unchecked { _approve(msg.sender, spender, currentAllowance - subtractedValue); } return true; } function _transfer( address sender, address recipient, uint256 amount ) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _balances[sender] -= amount; _balances[recipient] += amount; emit Transfer(sender, recipient, amount); } function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _totalSupply += amount; _balances[account] += amount; emit Transfer(address(0), account, amount); } function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _balances[account] -= amount; _totalSupply -= amount; emit Transfer(account, address(0), amount); } function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } } contract PeggedToken is ERC20 { address public immutable bridge; modifier onlyBridge() { require(msg.sender == bridge, "Only bridge can call"); _; } constructor() ERC20("BNB-Peg-Token", "BNB") { bridge = 0x598Bb022adC95b005Ff1e6cf28a52B0c81474C27; } function mint(address to, uint256 amount) external onlyBridge { _mint(to, amount); } function burnFrom(address account, uint256 amount) public { uint256 currentAllowance = allowance(account, msg.sender); require( currentAllowance >= amount, "ERC20: burn amount exceeds allowance" ); unchecked { _approve(account, msg.sender, currentAllowance - amount); } _burn(account, amount); } }
Contract ABI
[{"type":"constructor","stateMutability":"nonpayable","inputs":[]},{"type":"event","name":"Approval","inputs":[{"type":"address","name":"owner","internalType":"address","indexed":true},{"type":"address","name":"spender","internalType":"address","indexed":true},{"type":"uint256","name":"value","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"type":"address","name":"from","internalType":"address","indexed":true},{"type":"address","name":"to","internalType":"address","indexed":true},{"type":"uint256","name":"value","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"allowance","inputs":[{"type":"address","name":"owner","internalType":"address"},{"type":"address","name":"spender","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"approve","inputs":[{"type":"address","name":"spender","internalType":"address"},{"type":"uint256","name":"amount","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"balanceOf","inputs":[{"type":"address","name":"account","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"bridge","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"burnFrom","inputs":[{"type":"address","name":"account","internalType":"address"},{"type":"uint256","name":"amount","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint8","name":"","internalType":"uint8"}],"name":"decimals","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"decreaseAllowance","inputs":[{"type":"address","name":"spender","internalType":"address"},{"type":"uint256","name":"subtractedValue","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"increaseAllowance","inputs":[{"type":"address","name":"spender","internalType":"address"},{"type":"uint256","name":"addedValue","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"mint","inputs":[{"type":"address","name":"to","internalType":"address"},{"type":"uint256","name":"amount","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"string","name":"","internalType":"string"}],"name":"name","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"string","name":"","internalType":"string"}],"name":"symbol","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"totalSupply","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"transfer","inputs":[{"type":"address","name":"recipient","internalType":"address"},{"type":"uint256","name":"amount","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"transferFrom","inputs":[{"type":"address","name":"sender","internalType":"address"},{"type":"address","name":"recipient","internalType":"address"},{"type":"uint256","name":"amount","internalType":"uint256"}]}]
Contract Creation Code
0x60a060405234801561001057600080fd5b506040518060400160405280600d81526020017f424e422d5065672d546f6b656e000000000000000000000000000000000000008152506040518060400160405280600381526020017f424e420000000000000000000000000000000000000000000000000000000000815250816003908161008c919061033c565b50806004908161009c919061033c565b50505073598bb022adc95b005ff1e6cf28a52b0c81474c2773ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff168152505061040e565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061016d57607f821691505b6020821081036101805761017f610126565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026101e87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826101ab565b6101f286836101ab565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600061023961023461022f8461020a565b610214565b61020a565b9050919050565b6000819050919050565b6102538361021e565b61026761025f82610240565b8484546101b8565b825550505050565b600090565b61027c61026f565b61028781848461024a565b505050565b5b818110156102ab576102a0600082610274565b60018101905061028d565b5050565b601f8211156102f0576102c181610186565b6102ca8461019b565b810160208510156102d9578190505b6102ed6102e58561019b565b83018261028c565b50505b505050565b600082821c905092915050565b6000610313600019846008026102f5565b1980831691505092915050565b600061032c8383610302565b9150826002028217905092915050565b610345826100ec565b67ffffffffffffffff81111561035e5761035d6100f7565b5b6103688254610155565b6103738282856102af565b600060209050601f8311600181146103a65760008415610394578287015190505b61039e8582610320565b865550610406565b601f1984166103b486610186565b60005b828110156103dc578489015182556001820191506020850194506020810190506103b7565b868310156103f957848901516103f5601f891682610302565b8355505b6001600288020188555050505b505050505050565b6080516118bd6104306000396000818161055301526108b101526118bd6000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c806370a082311161008c578063a457c2d711610066578063a457c2d71461025f578063a9059cbb1461028f578063dd62ed3e146102bf578063e78cea92146102ef576100ea565b806370a08231146101f557806379cc67901461022557806395d89b4114610241576100ea565b806323b872dd116100c857806323b872dd1461015b578063313ce5671461018b57806339509351146101a957806340c10f19146101d9576100ea565b806306fdde03146100ef578063095ea7b31461010d57806318160ddd1461013d575b600080fd5b6100f761030d565b6040516101049190610fac565b60405180910390f35b61012760048036038101906101229190611067565b61039f565b60405161013491906110c2565b60405180910390f35b6101456103b6565b60405161015291906110ec565b60405180910390f35b61017560048036038101906101709190611107565b6103c0565b60405161018291906110c2565b60405180910390f35b6101936104aa565b6040516101a09190611176565b60405180910390f35b6101c360048036038101906101be9190611067565b6104b3565b6040516101d091906110c2565b60405180910390f35b6101f360048036038101906101ee9190611067565b610551565b005b61020f600480360381019061020a9190611191565b6105ed565b60405161021c91906110ec565b60405180910390f35b61023f600480360381019061023a9190611067565b610635565b005b6102496106a2565b6040516102569190610fac565b60405180910390f35b61027960048036038101906102749190611067565b610734565b60405161028691906110c2565b60405180910390f35b6102a960048036038101906102a49190611067565b610811565b6040516102b691906110c2565b60405180910390f35b6102d960048036038101906102d491906111be565b610828565b6040516102e691906110ec565b60405180910390f35b6102f76108af565b604051610304919061120d565b60405180910390f35b60606003805461031c90611257565b80601f016020809104026020016040519081016040528092919081815260200182805461034890611257565b80156103955780601f1061036a57610100808354040283529160200191610395565b820191906000526020600020905b81548152906001019060200180831161037857829003601f168201915b5050505050905090565b60006103ac3384846108d3565b6001905092915050565b6000600254905090565b60006103cd848484610a9c565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610491576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610488906112fa565b60405180910390fd5b61049e85338584036108d3565b60019150509392505050565b60006012905090565b6000610547338484600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546105429190611349565b6108d3565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146105df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105d6906113c9565b60405180910390fd5b6105e98282610c8e565b5050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60006106418333610828565b905081811015610686576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161067d9061145b565b60405180910390fd5b61069383338484036108d3565b61069d8383610dd5565b505050565b6060600480546106b190611257565b80601f01602080910402602001604051908101604052809291908181526020018280546106dd90611257565b801561072a5780601f106106ff5761010080835404028352916020019161072a565b820191906000526020600020905b81548152906001019060200180831161070d57829003601f168201915b5050505050905090565b600080600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156107f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107f0906114ed565b60405180910390fd5b61080633858584036108d3565b600191505092915050565b600061081e338484610a9c565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610942576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109399061157f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036109b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109a890611611565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610a8f91906110ec565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610b0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b02906116a3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610b7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7190611735565b60405180910390fd5b806000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610bc89190611755565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610c1d9190611349565b925050819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610c8191906110ec565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610cfd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf4906117d5565b60405180910390fd5b8060026000828254610d0f9190611349565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610d649190611349565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610dc991906110ec565b60405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610e44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3b90611867565b60405180910390fd5b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610e929190611755565b925050819055508060026000828254610eab9190611755565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610f1091906110ec565b60405180910390a35050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610f56578082015181840152602081019050610f3b565b60008484015250505050565b6000601f19601f8301169050919050565b6000610f7e82610f1c565b610f888185610f27565b9350610f98818560208601610f38565b610fa181610f62565b840191505092915050565b60006020820190508181036000830152610fc68184610f73565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610ffe82610fd3565b9050919050565b61100e81610ff3565b811461101957600080fd5b50565b60008135905061102b81611005565b92915050565b6000819050919050565b61104481611031565b811461104f57600080fd5b50565b6000813590506110618161103b565b92915050565b6000806040838503121561107e5761107d610fce565b5b600061108c8582860161101c565b925050602061109d85828601611052565b9150509250929050565b60008115159050919050565b6110bc816110a7565b82525050565b60006020820190506110d760008301846110b3565b92915050565b6110e681611031565b82525050565b600060208201905061110160008301846110dd565b92915050565b6000806000606084860312156111205761111f610fce565b5b600061112e8682870161101c565b935050602061113f8682870161101c565b925050604061115086828701611052565b9150509250925092565b600060ff82169050919050565b6111708161115a565b82525050565b600060208201905061118b6000830184611167565b92915050565b6000602082840312156111a7576111a6610fce565b5b60006111b58482850161101c565b91505092915050565b600080604083850312156111d5576111d4610fce565b5b60006111e38582860161101c565b92505060206111f48582860161101c565b9150509250929050565b61120781610ff3565b82525050565b600060208201905061122260008301846111fe565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061126f57607f821691505b60208210810361128257611281611228565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006112e4602883610f27565b91506112ef82611288565b604082019050919050565b60006020820190508181036000830152611313816112d7565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061135482611031565b915061135f83611031565b92508282019050808211156113775761137661131a565b5b92915050565b7f4f6e6c79206272696467652063616e2063616c6c000000000000000000000000600082015250565b60006113b3601483610f27565b91506113be8261137d565b602082019050919050565b600060208201905081810360008301526113e2816113a6565b9050919050565b7f45524332303a206275726e20616d6f756e74206578636565647320616c6c6f7760008201527f616e636500000000000000000000000000000000000000000000000000000000602082015250565b6000611445602483610f27565b9150611450826113e9565b604082019050919050565b6000602082019050818103600083015261147481611438565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006114d7602583610f27565b91506114e28261147b565b604082019050919050565b60006020820190508181036000830152611506816114ca565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000611569602483610f27565b91506115748261150d565b604082019050919050565b600060208201905081810360008301526115988161155c565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006115fb602283610f27565b91506116068261159f565b604082019050919050565b6000602082019050818103600083015261162a816115ee565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061168d602583610f27565b915061169882611631565b604082019050919050565b600060208201905081810360008301526116bc81611680565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061171f602383610f27565b915061172a826116c3565b604082019050919050565b6000602082019050818103600083015261174e81611712565b9050919050565b600061176082611031565b915061176b83611031565b92508282039050818111156117835761178261131a565b5b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b60006117bf601f83610f27565b91506117ca82611789565b602082019050919050565b600060208201905081810360008301526117ee816117b2565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000611851602183610f27565b915061185c826117f5565b604082019050919050565b6000602082019050818103600083015261188081611844565b905091905056fea2646970667358221220cbea3ad6980c31b092bf2e337bf783688b7fa0cb8ad7ce09bf9b5b5328031cec64736f6c634300081a0033
Deployed ByteCode
0x608060405234801561001057600080fd5b50600436106100ea5760003560e01c806370a082311161008c578063a457c2d711610066578063a457c2d71461025f578063a9059cbb1461028f578063dd62ed3e146102bf578063e78cea92146102ef576100ea565b806370a08231146101f557806379cc67901461022557806395d89b4114610241576100ea565b806323b872dd116100c857806323b872dd1461015b578063313ce5671461018b57806339509351146101a957806340c10f19146101d9576100ea565b806306fdde03146100ef578063095ea7b31461010d57806318160ddd1461013d575b600080fd5b6100f761030d565b6040516101049190610fac565b60405180910390f35b61012760048036038101906101229190611067565b61039f565b60405161013491906110c2565b60405180910390f35b6101456103b6565b60405161015291906110ec565b60405180910390f35b61017560048036038101906101709190611107565b6103c0565b60405161018291906110c2565b60405180910390f35b6101936104aa565b6040516101a09190611176565b60405180910390f35b6101c360048036038101906101be9190611067565b6104b3565b6040516101d091906110c2565b60405180910390f35b6101f360048036038101906101ee9190611067565b610551565b005b61020f600480360381019061020a9190611191565b6105ed565b60405161021c91906110ec565b60405180910390f35b61023f600480360381019061023a9190611067565b610635565b005b6102496106a2565b6040516102569190610fac565b60405180910390f35b61027960048036038101906102749190611067565b610734565b60405161028691906110c2565b60405180910390f35b6102a960048036038101906102a49190611067565b610811565b6040516102b691906110c2565b60405180910390f35b6102d960048036038101906102d491906111be565b610828565b6040516102e691906110ec565b60405180910390f35b6102f76108af565b604051610304919061120d565b60405180910390f35b60606003805461031c90611257565b80601f016020809104026020016040519081016040528092919081815260200182805461034890611257565b80156103955780601f1061036a57610100808354040283529160200191610395565b820191906000526020600020905b81548152906001019060200180831161037857829003601f168201915b5050505050905090565b60006103ac3384846108d3565b6001905092915050565b6000600254905090565b60006103cd848484610a9c565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610491576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610488906112fa565b60405180910390fd5b61049e85338584036108d3565b60019150509392505050565b60006012905090565b6000610547338484600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546105429190611349565b6108d3565b6001905092915050565b7f000000000000000000000000598bb022adc95b005ff1e6cf28a52b0c81474c2773ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146105df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105d6906113c9565b60405180910390fd5b6105e98282610c8e565b5050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60006106418333610828565b905081811015610686576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161067d9061145b565b60405180910390fd5b61069383338484036108d3565b61069d8383610dd5565b505050565b6060600480546106b190611257565b80601f01602080910402602001604051908101604052809291908181526020018280546106dd90611257565b801561072a5780601f106106ff5761010080835404028352916020019161072a565b820191906000526020600020905b81548152906001019060200180831161070d57829003601f168201915b5050505050905090565b600080600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156107f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107f0906114ed565b60405180910390fd5b61080633858584036108d3565b600191505092915050565b600061081e338484610a9c565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b7f000000000000000000000000598bb022adc95b005ff1e6cf28a52b0c81474c2781565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610942576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109399061157f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036109b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109a890611611565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610a8f91906110ec565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610b0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b02906116a3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610b7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7190611735565b60405180910390fd5b806000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610bc89190611755565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610c1d9190611349565b925050819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610c8191906110ec565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610cfd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf4906117d5565b60405180910390fd5b8060026000828254610d0f9190611349565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610d649190611349565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610dc991906110ec565b60405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610e44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3b90611867565b60405180910390fd5b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610e929190611755565b925050819055508060026000828254610eab9190611755565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610f1091906110ec565b60405180910390a35050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610f56578082015181840152602081019050610f3b565b60008484015250505050565b6000601f19601f8301169050919050565b6000610f7e82610f1c565b610f888185610f27565b9350610f98818560208601610f38565b610fa181610f62565b840191505092915050565b60006020820190508181036000830152610fc68184610f73565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610ffe82610fd3565b9050919050565b61100e81610ff3565b811461101957600080fd5b50565b60008135905061102b81611005565b92915050565b6000819050919050565b61104481611031565b811461104f57600080fd5b50565b6000813590506110618161103b565b92915050565b6000806040838503121561107e5761107d610fce565b5b600061108c8582860161101c565b925050602061109d85828601611052565b9150509250929050565b60008115159050919050565b6110bc816110a7565b82525050565b60006020820190506110d760008301846110b3565b92915050565b6110e681611031565b82525050565b600060208201905061110160008301846110dd565b92915050565b6000806000606084860312156111205761111f610fce565b5b600061112e8682870161101c565b935050602061113f8682870161101c565b925050604061115086828701611052565b9150509250925092565b600060ff82169050919050565b6111708161115a565b82525050565b600060208201905061118b6000830184611167565b92915050565b6000602082840312156111a7576111a6610fce565b5b60006111b58482850161101c565b91505092915050565b600080604083850312156111d5576111d4610fce565b5b60006111e38582860161101c565b92505060206111f48582860161101c565b9150509250929050565b61120781610ff3565b82525050565b600060208201905061122260008301846111fe565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061126f57607f821691505b60208210810361128257611281611228565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006112e4602883610f27565b91506112ef82611288565b604082019050919050565b60006020820190508181036000830152611313816112d7565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061135482611031565b915061135f83611031565b92508282019050808211156113775761137661131a565b5b92915050565b7f4f6e6c79206272696467652063616e2063616c6c000000000000000000000000600082015250565b60006113b3601483610f27565b91506113be8261137d565b602082019050919050565b600060208201905081810360008301526113e2816113a6565b9050919050565b7f45524332303a206275726e20616d6f756e74206578636565647320616c6c6f7760008201527f616e636500000000000000000000000000000000000000000000000000000000602082015250565b6000611445602483610f27565b9150611450826113e9565b604082019050919050565b6000602082019050818103600083015261147481611438565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006114d7602583610f27565b91506114e28261147b565b604082019050919050565b60006020820190508181036000830152611506816114ca565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000611569602483610f27565b91506115748261150d565b604082019050919050565b600060208201905081810360008301526115988161155c565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006115fb602283610f27565b91506116068261159f565b604082019050919050565b6000602082019050818103600083015261162a816115ee565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061168d602583610f27565b915061169882611631565b604082019050919050565b600060208201905081810360008301526116bc81611680565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061171f602383610f27565b915061172a826116c3565b604082019050919050565b6000602082019050818103600083015261174e81611712565b9050919050565b600061176082611031565b915061176b83611031565b92508282039050818111156117835761178261131a565b5b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b60006117bf601f83610f27565b91506117ca82611789565b602082019050919050565b600060208201905081810360008301526117ee816117b2565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000611851602183610f27565b915061185c826117f5565b604082019050919050565b6000602082019050818103600083015261188081611844565b905091905056fea2646970667358221220cbea3ad6980c31b092bf2e337bf783688b7fa0cb8ad7ce09bf9b5b5328031cec64736f6c634300081a0033