UNPKG

blocklock-js

Version:

A library for encrypting and decrypting data for the future

630 lines (628 loc) 154 kB
/* Autogenerated file. Do not edit manually. */ /* tslint:disable */ /* eslint-disable */ import { Contract, ContractFactory, ContractTransactionResponse, Interface, } from "ethers"; import type { Signer, ContractDeployTransaction, ContractRunner } from "ethers"; import type { NonPayableOverrides } from "../../common"; import type { BlocklockTest, BlocklockTestInterface, } from "../../Blocklock.t.sol/BlocklockTest"; const _abi = [ { type: "function", name: "ADMIN_ROLE", inputs: [], outputs: [ { name: "", type: "bytes32", internalType: "bytes32", }, ], stateMutability: "view", }, { type: "function", name: "IS_TEST", inputs: [], outputs: [ { name: "", type: "bool", internalType: "bool", }, ], stateMutability: "view", }, { type: "function", name: "excludeArtifacts", inputs: [], outputs: [ { name: "excludedArtifacts_", type: "string[]", internalType: "string[]", }, ], stateMutability: "view", }, { type: "function", name: "excludeContracts", inputs: [], outputs: [ { name: "excludedContracts_", type: "address[]", internalType: "address[]", }, ], stateMutability: "view", }, { type: "function", name: "excludeSelectors", inputs: [], outputs: [ { name: "excludedSelectors_", type: "tuple[]", internalType: "struct StdInvariant.FuzzSelector[]", components: [ { name: "addr", type: "address", internalType: "address", }, { name: "selectors", type: "bytes4[]", internalType: "bytes4[]", }, ], }, ], stateMutability: "view", }, { type: "function", name: "excludeSenders", inputs: [], outputs: [ { name: "excludedSenders_", type: "address[]", internalType: "address[]", }, ], stateMutability: "view", }, { type: "function", name: "failed", inputs: [], outputs: [ { name: "", type: "bool", internalType: "bool", }, ], stateMutability: "view", }, { type: "function", name: "setUp", inputs: [], outputs: [], stateMutability: "nonpayable", }, { type: "function", name: "targetArtifactSelectors", inputs: [], outputs: [ { name: "targetedArtifactSelectors_", type: "tuple[]", internalType: "struct StdInvariant.FuzzArtifactSelector[]", components: [ { name: "artifact", type: "string", internalType: "string", }, { name: "selectors", type: "bytes4[]", internalType: "bytes4[]", }, ], }, ], stateMutability: "view", }, { type: "function", name: "targetArtifacts", inputs: [], outputs: [ { name: "targetedArtifacts_", type: "string[]", internalType: "string[]", }, ], stateMutability: "view", }, { type: "function", name: "targetContracts", inputs: [], outputs: [ { name: "targetedContracts_", type: "address[]", internalType: "address[]", }, ], stateMutability: "view", }, { type: "function", name: "targetInterfaces", inputs: [], outputs: [ { name: "targetedInterfaces_", type: "tuple[]", internalType: "struct StdInvariant.FuzzInterface[]", components: [ { name: "addr", type: "address", internalType: "address", }, { name: "artifacts", type: "string[]", internalType: "string[]", }, ], }, ], stateMutability: "view", }, { type: "function", name: "targetSelectors", inputs: [], outputs: [ { name: "targetedSelectors_", type: "tuple[]", internalType: "struct StdInvariant.FuzzSelector[]", components: [ { name: "addr", type: "address", internalType: "address", }, { name: "selectors", type: "bytes4[]", internalType: "bytes4[]", }, ], }, ], stateMutability: "view", }, { type: "function", name: "targetSenders", inputs: [], outputs: [ { name: "targetedSenders_", type: "address[]", internalType: "address[]", }, ], stateMutability: "view", }, { type: "function", name: "test_CallsToBlocklockSender_ShouldRevert_IfBlocklockSenderAddressIsIncorrect", inputs: [], outputs: [], stateMutability: "nonpayable", }, { type: "function", name: "test_Deployment_Configurations", inputs: [], outputs: [], stateMutability: "view", }, { type: "function", name: "test_Update_SignatureScheme", inputs: [], outputs: [], stateMutability: "nonpayable", }, { type: "event", name: "log", inputs: [ { name: "", type: "string", indexed: false, internalType: "string", }, ], anonymous: false, }, { type: "event", name: "log_address", inputs: [ { name: "", type: "address", indexed: false, internalType: "address", }, ], anonymous: false, }, { type: "event", name: "log_array", inputs: [ { name: "val", type: "uint256[]", indexed: false, internalType: "uint256[]", }, ], anonymous: false, }, { type: "event", name: "log_array", inputs: [ { name: "val", type: "int256[]", indexed: false, internalType: "int256[]", }, ], anonymous: false, }, { type: "event", name: "log_array", inputs: [ { name: "val", type: "address[]", indexed: false, internalType: "address[]", }, ], anonymous: false, }, { type: "event", name: "log_bytes", inputs: [ { name: "", type: "bytes", indexed: false, internalType: "bytes", }, ], anonymous: false, }, { type: "event", name: "log_bytes32", inputs: [ { name: "", type: "bytes32", indexed: false, internalType: "bytes32", }, ], anonymous: false, }, { type: "event", name: "log_int", inputs: [ { name: "", type: "int256", indexed: false, internalType: "int256", }, ], anonymous: false, }, { type: "event", name: "log_named_address", inputs: [ { name: "key", type: "string", indexed: false, internalType: "string", }, { name: "val", type: "address", indexed: false, internalType: "address", }, ], anonymous: false, }, { type: "event", name: "log_named_array", inputs: [ { name: "key", type: "string", indexed: false, internalType: "string", }, { name: "val", type: "uint256[]", indexed: false, internalType: "uint256[]", }, ], anonymous: false, }, { type: "event", name: "log_named_array", inputs: [ { name: "key", type: "string", indexed: false, internalType: "string", }, { name: "val", type: "int256[]", indexed: false, internalType: "int256[]", }, ], anonymous: false, }, { type: "event", name: "log_named_array", inputs: [ { name: "key", type: "string", indexed: false, internalType: "string", }, { name: "val", type: "address[]", indexed: false, internalType: "address[]", }, ], anonymous: false, }, { type: "event", name: "log_named_bytes", inputs: [ { name: "key", type: "string", indexed: false, internalType: "string", }, { name: "val", type: "bytes", indexed: false, internalType: "bytes", }, ], anonymous: false, }, { type: "event", name: "log_named_bytes32", inputs: [ { name: "key", type: "string", indexed: false, internalType: "string", }, { name: "val", type: "bytes32", indexed: false, internalType: "bytes32", }, ], anonymous: false, }, { type: "event", name: "log_named_decimal_int", inputs: [ { name: "key", type: "string", indexed: false, internalType: "string", }, { name: "val", type: "int256", indexed: false, internalType: "int256", }, { name: "decimals", type: "uint256", indexed: false, internalType: "uint256", }, ], anonymous: false, }, { type: "event", name: "log_named_decimal_uint", inputs: [ { name: "key", type: "string", indexed: false, internalType: "string", }, { name: "val", type: "uint256", indexed: false, internalType: "uint256", }, { name: "decimals", type: "uint256", indexed: false, internalType: "uint256", }, ], anonymous: false, }, { type: "event", name: "log_named_int", inputs: [ { name: "key", type: "string", indexed: false, internalType: "string", }, { name: "val", type: "int256", indexed: false, internalType: "int256", }, ], anonymous: false, }, { type: "event", name: "log_named_string", inputs: [ { name: "key", type: "string", indexed: false, internalType: "string", }, { name: "val", type: "string", indexed: false, internalType: "string", }, ], anonymous: false, }, { type: "event", name: "log_named_uint", inputs: [ { name: "key", type: "string", indexed: false, internalType: "string", }, { name: "val", type: "uint256", indexed: false, internalType: "uint256", }, ], anonymous: false, }, { type: "event", name: "log_string", inputs: [ { name: "", type: "string", indexed: false, internalType: "string", }, ], anonymous: false, }, { type: "event", name: "log_uint", inputs: [ { name: "", type: "uint256", indexed: false, internalType: "uint256", }, ], anonymous: false, }, { type: "event", name: "logs", inputs: [ { name: "", type: "bytes", indexed: false, internalType: "bytes", }, ], anonymous: false, }, ] as const; const _bytecode = "0x600c8054600160ff199182168117909255601f8054909116909117905560c0604052601360809081527f424e3235342d424c532d424c4f434b4c4f434b0000000000000000000000000060a0526023906100599082610234565b50604080516080810182527f2691d39ecc380bfa873911a0b848c77556ee948fb8ab649137d3d3e78153f6ca8183019081527f2863e20a5125b098108a5061b31f405e16a069e9ebff60022f57f4c4fd0237bf6060830152815281518083019092527f193513dbe180d700b189c529754f650b7b7882122c8a1e242a938d23ea9f765c82527f11c939ea560caf31f552c9c4879b15865d38ba1dfb0f7a7d2ac46a4f0cae25ba6020838101919091528101919091528051602490610120908290600261014a565b506020820151610136906002808401919061014a565b505050348015610144575f5ffd5b506102ee565b8260028101928215610178579160200282015b8281111561017857825182559160200191906001019061015d565b50610184929150610188565b5090565b5b80821115610184575f8155600101610189565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806101c457607f821691505b6020821081036101e257634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561022f57805f5260205f20601f840160051c8101602085101561020d5750805b601f840160051c820191505b8181101561022c575f8155600101610219565b50505b505050565b81516001600160401b0381111561024d5761024d61019c565b6102618161025b84546101b0565b846101e8565b6020601f821160018114610293575f831561027c5750848201515b5f19600385901b1c1916600184901b17845561022c565b5f84815260208120601f198516915b828110156102c257878501518255602094850194600190920191016102a2565b50848210156102df57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b62010f9e80620002fd5f395ff3fe608060405234801561000f575f5ffd5b5060043610610106575f3560e01c806385226c811161009e578063ba414fa61161006e578063ba414fa6146101e3578063e20c9f71146101fb578063edf06c3814610203578063fa7626d41461020b578063fcf6760e14610218575f5ffd5b806385226c81146101a9578063916a17c6146101be578063b0464fdc146101d3578063b5508aa9146101db575f5ffd5b80633f7286f4116100d95780633f7286f41461014f578063658e17261461015757806366d9a9a01461015f57806375b238fc14610174575f5ffd5b80630a9254e41461010a5780631ed7831c146101145780632ade3880146101325780633e5e3c2314610147575b5f5ffd5b610112610220565b005b61011c6102bf565b60405161012991906126f2565b60405180910390f35b61013a61031f565b604051610129919061276b565b61011c61045b565b61011c6104b9565b610112610517565b6101676108bc565b6040516101299190612878565b61019b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177581565b604051908152602001610129565b6101b1610a20565b60405161012991906128f6565b6101c6610aeb565b604051610129919061294d565b6101c6610bcc565b6101b1610cad565b6101eb610d78565b6040519015158152602001610129565b61011c610e12565b610112610e70565b601f546101eb9060ff1681565b610112611505565b6102286116f2565b6102306116fa565b602c80546001600160a01b03199081166001600160a01b0393841617909155602b8054821693831693909317909255602a8054831693821693909317909255602980548216938316939093179092556028805490921692169190911790556207a12062061a80620f4240622dc6c0620c3500600a6113886102b687878787878787611e08565b50505050505050565b6060601680548060200260200160405190810160405280929190818152602001828054801561031557602002820191905f5260205f20905b81546001600160a01b031681526001909101906020018083116102f7575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020015f905b82821015610452575f84815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b8282101561043b578382905f5260205f200180546103b0906129c4565b80601f01602080910402602001604051908101604052809291908181526020018280546103dc906129c4565b80156104275780601f106103fe57610100808354040283529160200191610427565b820191905f5260205f20905b81548152906001019060200180831161040a57829003601f168201915b505050505081526020019060010190610393565b505050508152505081526020019060010190610342565b50505050905090565b6060601880548060200260200160405190810160405280929190818152602001828054801561031557602002820191905f5260205f209081546001600160a01b031681526001909101906020018083116102f7575050505050905090565b6060601780548060200260200160405190810160405280929190818152602001828054801561031557602002820191905f5260205f209081546001600160a01b031681526001909101906020018083116102f7575050505050905090565b602a54601f54604051632474521560e21b81527fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177560048201526101009091046001600160a01b0390811660248301526105b99216906391d1485490604401602060405180830381865afa158015610590573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105b491906129fc565b611f0a565b6028546001600160a01b03166105d1576105d1612a22565b6029546001600160a01b03166105e9576105e9612a22565b602a546001600160a01b031661060157610601612a22565b602b546001600160a01b031661061957610619612a22565b602c546001600160a01b031661063157610631612a22565b602a546040805163e6b3ca7160e01b815290515f926001600160a01b03169163e6b3ca719160048083019260209291908290030181865afa158015610678573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061069c9190612a4a565b6001600160a01b0316036106b2576106b2612a22565b60295460408051632fbe3a9160e11b81529051610726926001600160a01b031691635f7c7522916004808301925f9291908290030181865afa1580156106fa573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526107219190810190612a79565b611f60565b60295460408051632fbe3a9160e11b8152905161079a926001600160a01b031691635f7c7522916004808301925f9291908290030181865afa15801561076e573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526107959190810190612a79565b611fa6565b602b546040805163235296f760e01b815290516107e2926001600160a01b03169163235296f7916004808301925f9291908290030181865afa15801561076e573d5f5f3e3d5ffd5b602b5460408051631c613e8960e11b8152905161082a926001600160a01b0316916338c27d12916004808301925f9291908290030181865afa15801561076e573d5f5f3e3d5ffd5b602b54604080516339a87a2b60e11b81529051610872926001600160a01b031691637350f456916004808301925f9291908290030181865afa15801561076e573d5f5f3e3d5ffd5b602b54604080516367b276af60e01b815290516108ba926001600160a01b0316916367b276af916004808301925f9291908290030181865afa15801561076e573d5f5f3e3d5ffd5b565b6060601b805480602002602001604051908101604052809291908181526020015f905b82821015610452578382905f5260205f2090600202016040518060400160405290815f8201805461090f906129c4565b80601f016020809104026020016040519081016040528092919081815260200182805461093b906129c4565b80156109865780601f1061095d57610100808354040283529160200191610986565b820191905f5260205f20905b81548152906001019060200180831161096957829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015610a0857602002820191905f5260205f20905f905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116109ca5790505b505050505081525050815260200190600101906108df565b6060601a805480602002602001604051908101604052809291908181526020015f905b82821015610452578382905f5260205f20018054610a60906129c4565b80601f0160208091040260200160405190810160405280929190818152602001828054610a8c906129c4565b8015610ad75780601f10610aae57610100808354040283529160200191610ad7565b820191905f5260205f20905b815481529060010190602001808311610aba57829003601f168201915b505050505081526020019060010190610a43565b6060601d805480602002602001604051908101604052809291908181526020015f905b82821015610452575f8481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015610bb457602002820191905f5260205f20905f905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411610b765790505b50505050508152505081526020019060010190610b0e565b6060601c805480602002602001604051908101604052809291908181526020015f905b82821015610452575f8481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015610c9557602002820191905f5260205f20905f905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411610c575790505b50505050508152505081526020019060010190610bef565b60606019805480602002602001604051908101604052809291908181526020015f905b82821015610452578382905f5260205f20018054610ced906129c4565b80601f0160208091040260200160405190810160405280929190818152602001828054610d19906129c4565b8015610d645780601f10610d3b57610100808354040283529160200191610d64565b820191905f5260205f20905b815481529060010190602001808311610d4757829003601f168201915b505050505081526020019060010190610cd0565b6008545f9060ff1615610d8f575060085460ff1690565b604051630667f9d760e41b81525f51602062010e3c5f395f51905f52600482018190526519985a5b195960d21b60248301525f9163667f9d7090604401602060405180830381865afa158015610de7573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e0b9190612b2c565b1415905090565b6060601580548060200260200160405190810160405280929190818152602001828054801561031557602002820191905f5260205f209081546001600160a01b031681526001909101906020018083116102f7575050505050905090565b60408051808201909152600581526410938c8d4d60da1b60208201525f610e9682611fe9565b9050610ed05f6001600160a01b0316826001600160a01b0316141560405180606001604052806025815260200162010ebf60259139611ffa565b610eff816001600160a01b03163b5f1460405180606001604052806023815260200162010e5c60239139611ffa565b601f5460405163ca669fa760e01b81526101009091046001600160a01b031660048201525f51602062010e3c5f395f51905f529063ca669fa7906024015f604051808303815f87803b158015610f53575f5ffd5b505af1158015610f65573d5f5f3e3d5ffd5b505060405163f28dceb360e01b81525f51602062010e3c5f395f51905f52925063f28dceb39150610f9890600401612b43565b5f604051808303815f87803b158015610faf575f5ffd5b505af1158015610fc1573d5f5f3e3d5ffd5b5050602854604051635d5c33ed60e11b81526001600160a01b03909116925063bab867da9150610ff79085908590600401612b8d565b5f604051808303815f87803b15801561100e575f5ffd5b505af1158015611020573d5f5f3e3d5ffd5b50506029546040805160608101909152602d8082526001600160a01b03909216945061105b935084151592509062010f3c6020830139611ffa565b61108a5f826001600160a01b03163b1160405180606001604052806023815260200162010ee460239139611ffa565b601f5460405163ca669fa760e01b81526101009091046001600160a01b031660048201525f51602062010e3c5f395f51905f529063ca669fa7906024015f604051808303815f87803b1580156110de575f5ffd5b505af11580156110f0573d5f5f3e3d5ffd5b5050602854604051635d5c33ed60e11b81526001600160a01b03909116925063bab867da91506111269085908590600401612b8d565b5f604051808303815f87803b15801561113d575f5ffd5b505af115801561114f573d5f5f3e3d5ffd5b5050602854604051630b76139f60e31b81526111d993506001600160a01b03858116935090911690635bb09cf89061118b908790600401612bb6565b602060405180830381865afa1580156111a6573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111ca9190612a4a565b6001600160a01b031614611f0a565b50602b54601f5460405163ca669fa760e01b81526001600160a01b03610100909204821660048201529116905f51602062010e3c5f395f51905f529063ca669fa7906024015f604051808303815f87803b158015611235575f5ffd5b505af1158015611247573d5f5f3e3d5ffd5b505060405163f28dceb360e01b815260206004820152602160248201527f536368656d6520616c726561647920616464656420666f7220736368656d65496044820152601160fa1b60648201525f51602062010e3c5f395f51905f52925063f28dceb391506084015f604051808303815f87803b1580156112c6575f5ffd5b505af11580156112d8573d5f5f3e3d5ffd5b5050602854604051635d5c33ed60e11b81526001600160a01b03909116925063bab867da915061130e9085908590600401612b8d565b5f604051808303815f87803b158015611325575f5ffd5b505af1158015611337573d5f5f3e3d5ffd5b5050602854604051630b76139f60e31b81526113dc93506001600160a01b03858116935090911690635bb09cf890611373908790600401612bb6565b602060405180830381865afa15801561138e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113b29190612a4a565b6001600160a01b0316141560405180606001604052806035815260200162010f0760359139611ffa565b601f5460405163ca669fa760e01b81526101009091046001600160a01b031660048201525f51602062010e3c5f395f51905f529063ca669fa7906024015f604051808303815f87803b158015611430575f5ffd5b505af1158015611442573d5f5f3e3d5ffd5b505060405163f28dceb360e01b81525f51602062010e3c5f395f51905f52925063f28dceb3915061147590600401612b43565b5f604051808303815f87803b15801561148c575f5ffd5b505af115801561149e573d5f5f3e3d5ffd5b5050602854604051635d5c33ed60e11b81526001600160a01b03909116925063bab867da91506114d49085905f90600401612b8d565b5f604051808303815f87803b1580156114eb575f5ffd5b505af11580156114fd573d5f5f3e3d5ffd5b505050505050565b60205460405163ca669fa760e01b81526001600160a01b0390911660048201525f51602062010e3c5f395f51905f529063ca669fa7906024015f604051808303815f87803b158015611555575f5ffd5b505af1158015611567573d5f5f3e3d5ffd5b50505050601f60019054906101000a90046001600160a01b031660405161158d9061264c565b6001600160a01b039091168152602001604051809103905ff0801580156115b6573d5f5f3e3d5ffd5b50602c80546001600160a01b0319166001600160a01b0392831617905560205460405163ca669fa760e01b8152911660048201525f51602062010e3c5f395f51905f529063ca669fa7906024015f604051808303815f87803b15801561161a575f5ffd5b505af115801561162c573d5f5f3e3d5ffd5b505050505f51602062010e3c5f395f51905f526001600160a01b031663f48448146040518163ffffffff1660e01b81526004015f604051808303815f87803b158015611676575f5ffd5b505af1158015611688573d5f5f3e3d5ffd5b50505050602c5f9054906101000a90046001600160a01b03166001600160a01b031663b96dbba75f6040518263ffffffff1660e01b81526004015f604051808303818588803b1580156116d9575f5ffd5b505af11580156116eb573d5f5f3e3d5ffd5b5050505050565b6108ba612055565b601f5460405163ca669fa760e01b81526101009091046001600160a01b031660048201525f9081908190819081905f51602062010e3c5f395f51905f529063ca669fa7906024015f604051808303815f87803b158015611758575f5ffd5b505af115801561176a573d5f5f3e3d5ffd5b505050505f60405161177b9061265a565b604051809103905ff080158015611794573d5f5f3e3d5ffd5b50601f5460405163ca669fa760e01b81526101009091046001600160a01b031660048201529091505f51602062010e3c5f395f51905f529063ca669fa7906024015f604051808303815f87803b1580156117ec575f5ffd5b505af11580156117fe573d5f5f3e3d5ffd5b505050505f8160405161181090612668565b6001600160a01b0390911681526040602082018190525f90820152606001604051809103905ff080158015611847573d5f5f3e3d5ffd5b50601f5460405163ca669fa760e01b81526101009091046001600160a01b031660048201529095508591505f51602062010e3c5f395f51905f529063ca669fa7906024015f604051808303815f87803b1580156118a2575f5ffd5b505af11580156118b4573d5f5f3e3d5ffd5b505050505f6040516118c590612676565b604051809103905ff0801580156118de573d5f5f3e3d5ffd5b50601f5460405163ca669fa760e01b81526101009091046001600160a01b031660048201529091505f51602062010e3c5f395f51905f529063ca669fa7906024015f604051808303815f87803b158015611936575f5ffd5b505af1158015611948573d5f5f3e3d5ffd5b505050505f8160405161195a90612668565b6001600160a01b0390911681526040602082018190525f90820152606001604051809103905ff080158015611991573d5f5f3e3d5ffd5b5060205460405163ca669fa760e01b81526001600160a01b0390911660048201529096508691505f51602062010e3c5f395f51905f529063ca669fa7906024015f604051808303815f87803b1580156119e8575f5ffd5b505af11580156119fa573d5f5f3e3d5ffd5b5050505080604051611a0b9061264c565b6001600160a01b039091168152602001604051809103905ff080158015611a34573d5f5f3e3d5ffd5b50601f5460405163ca669fa760e01b81526101009091046001600160a01b031660048201529095505f51602062010e3c5f395f51905f529063ca669fa7906024015f604051808303815f87803b158015611a8c575f5ffd5b505af1158015611a9e573d5f5f3e3d5ffd5b50505050601f60019054906101000a90046001600160a01b0316604051611ac490612684565b6001600160a01b039091168152602001604051809103905ff080158015611aed573d5f5f3e3d5ffd5b50601f5460405163ca669fa760e01b81526101009091046001600160a01b031660048201529099505f51602062010e3c5f395f51905f529063ca669fa7906024015f604051808303815f87803b158015611b45575f5ffd5b505af1158015611b57573d5f5f3e3d5ffd5b50506040516024925060269150611b6d90612692565b611b78929190612bf0565b604051809103905ff080158015611b91573d5f5f3e3d5ffd5b50601f5460405163ca669fa760e01b81526101009091046001600160a01b031660048201529098505f51602062010e3c5f395f51905f529063ca669fa7906024015f604051808303815f87803b158015611be9575f5ffd5b505af1158015611bfb573d5f5f3e3d5ffd5b5050604051635d5c33ed60e11b81526001600160a01b038c16925063bab867da9150611c2e906023908c90600401612c0b565b5f604051808303815f87803b158015611c45575f5ffd5b505af1158015611c57573d5f5f3e3d5ffd5b5050601f5460405163ca669fa760e01b81526101009091046001600160a01b031660048201525f51602062010e3c5f395f51905f52925063ca669fa791506024015f604051808303815f87803b158015611caf575f5ffd5b505af1158015611cc1573d5f5f3e3d5ffd5b5050601f5460405163485cc95560e01b81526101009091046001600160a01b0390811660048301528c811660248301528a16925063485cc95591506044015f604051808303815f87803b158015611d16575f5ffd5b505af1158015611d28573d5f5f3e3d5ffd5b5050601f5460405163ca669fa760e01b81526101009091046001600160a01b031660048201525f51602062010e3c5f395f51905f52925063ca669fa791506024015f604051808303815f87803b158015611d80575f5ffd5b505af1158015611d92573d5f5f3e3d5ffd5b5050601f5460405163485cc95560e01b81526101009091046001600160a01b0390811660048301528a811660248301528916925063485cc95591506044015f604051808303815f87803b158015611de7575f5ffd5b505af1158015611df9573d5f5f3e3d5ffd5b50505050505050509091929394565b601f5460405163ca669fa760e01b81526101009091046001600160a01b031660048201525f51602062010e3c5f395f51905f529063ca669fa7906024015f604051808303815f87803b158015611e5c575f5ffd5b505af1158015611e6e573d5f5f3e3d5ffd5b5050602b5460405163117e90d560e21b815263ffffffff808c166004830152808b166024830152808a1660448301528089166064830152808816608483015260ff871660a4830152851660c48201526001600160a01b0390911692506345fa4354915060e4015f604051808303815f87803b158015611eeb575f5ffd5b505af1158015611efd573d5f5f3e3d5ffd5b5050505050505050505050565b604051630c9fd58160e01b815281151560048201525f51602062010e3c5f395f51905f5290630c9fd581906024015f6040518083038186803b158015611f4e575f5ffd5b505afa1580156116eb573d5f5f3e3d5ffd5b611fa381604051602401611f749190612bb6565b60408051601f198184030181529190526020810180516001600160e01b03166305f3bfab60e11b17905261228e565b50565b611fa381604051602401611fba9190612bb6565b60408051601f198184030181529190526020810180516001600160e01b031663104c13eb60e21b17905261228e565b5f611ff382612297565b5092915050565b60405163a34edc0360e01b81525f51602062010e3c5f395f51905f529063a34edc039061202d9085908590600401612ca0565b5f6040518083038186803b158015612043575f5ffd5b505afa1580156114fd573d5f5f3e3d5ffd5b61207b6040518060400160405280600581526020016430b236b4b760d91b815250611fe9565b601f60016101000a8154816001600160a01b0302191690836001600160a01b031602179055506120c760405180604001604052806005815260200164616c69636560d81b815250611fe9565b60205f6101000a8154816001600160a01b0302191690836001600160a01b03160217905550612110604051806040016040528060038152602001623137b160e91b815250611fe9565b602180546001600160a01b0319166001600160a01b03928316179055601f5460405163c88a5e6d60e01b81526101009091049091166004820152678ac7230489e8000060248201525f51602062010e3c5f395f51905f529063c88a5e6d906044015f604051808303815f87803b158015612188575f5ffd5b505af115801561219a573d5f5f3e3d5ffd5b505060205460405163c88a5e6d60e01b81526001600160a01b039091166004820152678ac7230489e8000060248201525f51602062010e3c5f395f51905f52925063c88a5e6d91506044015f604051808303815f87803b1580156121fc575f5ffd5b505af115801561220e573d5f5f3e3d5ffd5b505060215460405163c88a5e6d60e01b81526001600160a01b039091166004820152678ac7230489e8000060248201525f51602062010e3c5f395f51905f52925063c88a5e6d91506044015f604051808303815f87803b158015612270575f5ffd5b505af1158015612282573d5f5f3e3d5ffd5b505050506108ba612399565b611fa38161262d565b5f5f826040516020016122aa9190612cc2565b60408051808303601f190181529082905280516020909101206001625e79b760e01b031982526004820181905291505f51602062010e3c5f395f51905f529063ffa1864990602401602060405180830381865afa15801561230d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123319190612a4a565b6040516318caf8e360e31b81529092505f51602062010e3c5f395f51905f529063c657c718906123679085908790600401612cd8565b5f604051808303815f87803b15801561237e575f5ffd5b505af1158015612390573d5f5f3e3d5ffd5b50505050915091565b6040805160e0810182527f220c292a8d5482f0afc107989582021eb9d86fe3e75dbb7bcb749f30861c9f8f60a082019081527f14a3cdb4fec6d3ebb0ad2b5a943fdef4a458e6ac8bc6ff321afa898b4158ff5b60c08301526060808301918252835180850185527f269cdb66a4daaf03aeda655342cc38e431a83a914fcdf4daf73e4f6fde7729ac81527f2610ed6679d7a57287cf5d21045063efda28037e5b555d9103f60b83c5cee1ca6020828101919091526080850191909152918352835180850185528281527f54b744fa0514a42e8e8bf8a23a0c619e059fbc072d1774f5c4d389a218dce7f18184015282840152835180850185528281527fc0884030be948e1477202760f15f302c56fd9e22e39cb0afb21e9a2140d363d48184015283850152835190810184528381526729a2241af62c0000935f9262010e7f9083013990505f6040518060400160405280602081526020017f948918d64af8e911c98d62c282764bed2488a47797a31e711956a6e87846efa781525090506040518060a00160405280858152602001601260405160200161255891906040808252600190820152602160f91b6060820152602081019190915260800190565b60408051601f19818403018152918152908252602082810187905282820186905260609092018490525f8781526022835220825181559082015160018201906125a19082612d44565b506040820151805180516002808501929183916125bf9183916126a0565b5060208201516125d590600280840191906126a0565b505050602082015160048201906125ec9082612d44565b50604082015160058201906126019082612d44565b505050606082015160088201906126189082612d44565b50608082015160098201906102b69082612d44565b5f6a636f6e736f6c652e6c6f6790505f5f835160208501845afa505050565b611ae48062002e0083390190565b6132f380620048e483390190565b61042b8062007bd783390190565b615c73806200800283390190565b6109e0806200dc7583390190565b6127e7806200e65583390190565b82600281019282156126ce579160200282015b828111156126ce5782518255916020019190600101906126b3565b506126da9291506126de565b5090565b5b808211156126da575f81556001016126df565b602080825282518282018190525f918401906040840190835b818110156127325783516001600160a01b031683526020938401939092019160010161270b565b509095945050505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b8281101561282857603f19878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b8801810191908801905f5b8181101561280e57605f198a85030183526127f884865161273d565b60209586019590945092909201916001016127dc565b509197505050602094850194929092019150600101612791565b50929695505050505050565b5f8151808452602084019350602083015f5b8281101561286e5781516001600160e01b031916865260209586019590910190600101612846565b5093949350505050565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b8281101561282857603f1987860301845281518051604087526128c4604088018261273d565b90506020820151915086810360208801526128df8183612834565b96505050602093840193919091019060010161289e565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b8281101561282857603f1987860301845261293885835161273d565b9450602093840193919091019060010161291c565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b8281101561282857868503603f19018452815180516001600160a01b031686526020908101516040918701829052906129ae90870182612834565b9550506020938401939190910190600101612973565b600181811c908216806129d857607f821691505b6020821081036129f657634e487b7160e01b5f52602260045260245ffd5b50919050565b5f60208284031215612a0c575f5ffd5b81518015158114612a1b575f5ffd5b9392505050565b634e487b7160e01b5f52600160045260245ffd5b6001600160a01b0381168114611fa3575f5ffd5b5f60208284031215612a5a575f5ffd5b8151612a1b81612a36565b634e487b7160e01b5f52604160045260245ffd5b5f60208284031215612a89575f5ffd5b815167ffffffffffffffff811115612a9f575f5ffd5b8201601f81018413612aaf575f5ffd5b805167ffffffffffffffff811115612ac957612ac9612a65565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715612af857612af8612a65565b604052818152828201602001861015612b0f575f5ffd5b8160208401602083015e5f91810160200191909152949350505050565b5f60208284031215612b3c575f5ffd5b5051919050565b6020808252602a908201527f496e76616c696420636f6e7472616374206164647265737320666f7220736368604082015269656d654164647265737360b01b606082015260800190565b604081525f612b9f604083018561273d565b905060018060a01b03831660208301529392505050565b602081525f612a1b602083018461273d565b805f5b6002811015612bea578154845260209093019260019182019101612bcb565b50505050565b60808101612bfe8285612bc8565b612a1b6040830184612bc8565b604081525f5f8454612c1c816129c4565b806040860152600182165f8114612c3a5760018114612c5657612c87565b60ff1983166060870152606082151560051b8701019350612c87565b875f5260205f205f5b83811015612c7e57815488820160600152600190910190602001612c5f565b87016060019450505b5050506001600160a01b03841660208401529050612a1b565b8215158152604060208201525f612cba604083018461273d565b949350505050565b5f82518060208501845e5f920191825250919050565b6001600160a01b03831681526040602082018190525f90612cba9083018461273d565b601f821115612d3f57805f5260205f20601f840160051c81016020851015612d205750805b601f840160051c820191505b818110156116eb575f8155600101612d2c565b505050565b815167ffffffffffffffff811115612d5e57612d5e612a65565b612d7281612d6c84546129c4565b84612cfb565b6020601f821160018114612da4575f8315612d8d5750848201515b5f19600385901b1c1916600184901b1784556116eb565b5f84815260208120601f198516915b82811015612dd35787850151825560209485019460019092019101612db3565b5084821015612df057868401515f19600387901b60f8161c191681555b50505050600190811b0190555056fe608060405234801561000f575f5ffd5b50604051611ae4380380611ae483398101604081905261002e91610186565b8033805f816100845760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420736574206f776e657220746f207a65726f000000000000000060448201526064015b60405180910390fd5b5f80546001600160a01b0319166001600160a01b03848116919091179091558116156100b3576100b3816100de565b5050600280546001600160a01b0319166001600160a01b039390931692909217909155506101b39050565b336001600160a01b038216036101365760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c66000000000000000000604482015260640161007b565b600180546001600160a01b0319166001600160a01b038381169182179092555f8054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b5f60208284031215610196575f5ffd5b81516001600160a01b03811681146101ac575f5ffd5b9392505050565b611924806101c05f395ff3fe60806040526004361061011d575f3560e01c8063809800431161009d57806397a9c2851161006257806397a9c28514610321578063b8ca8dd814610336578063b96dbba714610355578063e64a66ea1461035d578063f2fde38b14610365575f5ffd5b8063809800431461027157806386e560be146102905780638da5cb5b146102b357806393b9740a146102e357806393d81d5814610302575f5ffd5b80634d3de353116100e35780634d3de353146101d85780634fa26d40146101eb57806359608fda1461020a5780635d9418021461023e57806379ba50971461025d575f5ffd5b80626d6cae1461016057806309c1ba2e1461018857806312065fe01461019d5780631d2b2afd146101af57806336bfffed146101b9575f5ffd5b3661015c57604080513381523460208201527f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874910160405180910390a1005b5f5ffd5b34801561016b575f5ffd5b5061017560045481565b6040519081526020015b60405180910390f35b348015610193575f5ffd5b5061017560035481565b3480156101a8575f5ffd5b5047610175565b6101b7610384565b005b3480156101c4575f5ffd5b506101b76101d33660046111c2565b61042b565b6101756101e6366004611278565b610528565b3480156101f6575f5ffd5b506101b761020536600461131b565b61058b565b348015610215575f5ffd5b50610229610224366004611278565b610615565b6040805192835260208301919091520161017f565b348015610249575f5ffd5b506101b761025836600461133b565b610680565b348015610268575f5ffd5b506101b76106e5565b34801561027c575f5ffd5b506101b761028b366004611383565b61078e565b34801561029b575f5ffd5b506102a46107c8565b60405161017f9392919061140d565b3480156102be575f5ffd5b505f546001600160a01b03165b6040516001600160a01b03909116815260200161017f565b3480156102ee575f5ffd5b506002546102cb906001600160a01b031681565b34801561030d575f5ffd5b506101b761031c36600461131b565b610954565b34801561032c575f5ffd5b50610175600b5481565b348015610341575f5ffd5b506101b7610350366004611448565b610968565b6101b7610a3b565b6101b7610a82565b348015610370575f5ffd5b506101b761037f36600461131b565b610b01565b6003545f036103c85760405162461bcd60e51b815260206004820152600b60248201526a1cdd58881b9bdd081cd95d60aa1b60448201526064015b60405180910390fd5b60025460035460405163256d573f60e21b815260048101919091526001600160a01b03909116906395b55cfc9034906024015b5f604051808303818588803b158015610412575f5ffd5b505af1158015610424573d5f5f3e3d5ffd5b5050505050565b610433610b12565b6003545f036104745760405162461bcd60e51b815260206004820152600d60248201526c1cdd589251081b9bdd081cd95d609a1b60448201526064016103bf565b5f5b81811015610523576002546003546001600160a01b039091169063bec4c08c908585858181106104a8576104a8611472565b90506020020160208101906104bd919061131b565b6040516001600160e01b031960e085901b16815260048101929092526001600160a01b031660248201526044015f604051808303815f87803b158015610501575f5ffd5b505af1158015610513573d5f5f3e3d5ffd5b5050600190920191506104769050565b505050565b5f5f61056b8686868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250889250610b66915050565b6004819055905082600561057f8282611613565b50909695505050505050565b610593610b12565b6001600160a01b0381166105f35760405162461bcd60e51b815260206004820152602160248201527f43616e6e6f7420736574207a65726f20616464726573732061732073656e64656044820152603960f91b60648201526084016103bf565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b5f5f5f5f61065a8888888080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508a9250610be4915050565b600482905590925090508460056106718282611613565b50919890975095505050505050565b6002546001600160a01b031633146106da5760405162461bcd60e51b815260206004820181905260248201527f4f6e6c7920626c6f636b6c6f636b20636f6e74726163742063616e2063616c6c60448201526064016103bf565b610523838383610cda565b6001546001600160a01b031633146107385760405162461bcd60e51b815260206004820152601660248201527526bab9ba10313290383937b837b9b2b21037bbb732b960511b60448201526064016103bf565b5f8054336001600160a01b0319808316821784556001805490911690556040516001600160a01b0390921692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a350565b610796610b12565b600381905560405181907f5f479ac993925efae23839aa1c813b6ecb2fe1bbd14dc78295ab267d2fca4368905f90a250565b604080516080810180835260059283918391820190839060029082845b8154815260200190600101908083116107e557505050918352505060408051808201918290526020909201919060028481019182845b81548152602001906001019080831161081b5750505050508152505090806004018054610847906114dd565b80601f0160208091040260200160405190810160405280929190818152602001828054610873906114dd565b80156108be5780601f10610895576101008083540402835291602001916108be565b820191905f5260205f20905b8154815290600101906020018083116108a157829003601f168201915b5050505050908060050180546108d3906114dd565b80601f01602080910402602001604051908101604052809291908181526020018280546108ff906114dd565b801561094a5780601f106109215761010080835404028352916020019161094a565b820191905f5260205f20905b81548152906001019060200180831161092d57829003601f168201915b5050505050905083565b61095c610b12565b61096581610ee2565b50565b610970610b12565b814710156109c05760405162461bcd60e51b815260206004820152601e60248201527f496e73756666696369656e742066756e647320696e20636f6e7472616374000060448201526064016103bf565b6040516001600160a01b0382169083156108fc029084905f818181858888f193505050501580156109f3573d5f5f3e3d5ffd5b50806001600160a01b03167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d583604051610a2f91815260200190565b60405180910390a25050565b610a43610b12565b610a4b610f7a565b600381905560025460405163256d573f60e21b815260048101929092526001600160a01b0316906395b55cfc9034906024016103fb565b5f3411610aca5760405162461bcd60e51b81526020600482015260166024820152750b2deea40daeae6e840e6cadcc840e6dedaca408aa8960531b60448201526064016103bf565b60405134815233907f5af8184bef8e4b45eb9f6ed7734d04da38ced226495548f46e0c8ff8d7d9a5249060200160405180910390a2565b610b09610b12565b610965816110a4565b5f546001600160a01b03163314610b645760405162461bcd60e51b815260206004820152601660248201527527b7363c9031b0b63630b1363290313c9037bbb732b960511b60448201526064016103bf565b565b6002546003546040516262b1d960e41b81525f926001600160a01b03169163062b1d9091610b9c91889188908890600401611754565b6020604051808303815f875af1158015610bb8573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bdc9190611795565b949350505050565b600254604051634b16093560e01b815263ffffffff851660048201525f9182916001600160a01b0390911690634b16093590602401602060405180830381865afa158015610c34573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c589190611795565b600254604051637909dc7b60e01b81529192506001600160a01b031690637909dc7b908390610c8f908990899089906004016117ac565b60206040518083038185885af1158015610cab573d5f5f3e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610cd09190611795565b9150935093915050565b8260045414610d215760405162461bcd60e51b815260206004820152601360248201527224b73b30b634b2103932b8bab2b9ba1034b21760691b60448201526064016103bf565b6040805160e08101909152610ec79060058160608101828160a084018260028282826020028201915b815481526020019060010190808311610d4a57505050918352505060408051808201918290526020909201919060028481019182845b815481526020019060010190808311610d80575050505050815250508152602001600482018054610db0906114dd565b80601f0160208091040260200160405190810160405280929190818152602001828054610ddc906114dd565b8015610e275780601f10610dfe57610100808354040283529160200191610e27565b820191905f5260205f20905b815481529060010190602001808311610e0a57829003601f168201915b50505050508152602001600582018054610e40906114dd565b80601f0160208091040260200160405190810160405280929190818152602001828054610e6c906114dd565b8015610eb75780601f10610e8e57610100808354040283529160200191610eb7565b820191905f5260205f20905b815481529060010190602001808311610e9a57829003601f168201915b505050505081525050838361114c565b806020019051810190610eda9190611795565b600b55505050565b6003545f03610f2c5760405162461bcd60e51b8152602060048201526016602482015275537562736372697074696f6e4964206973207a65726f60501b60448201526064016103bf565b600254600354604051622b825560e61b815260048101919091526001600160a01b03838116602483015290911690630ae09540906044015f604051808303815f87803b158015610412575f5ffd5b5f6003545f14610fcc5760405162461bcd60e51b815260206004820152601a60248201527f537562736372697074696f6e4964206973206e6f74207a65726f00000000000060448201526064016103bf565b60025f9054906101000a90046001600160a01b03166001600160a01b031663a21a23e46040518163ffffffff1660e01b81526004016020604051808303815f875af115801561101d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110419190611795565b600254604051632fb1302360e21b8152600481018390523060248201529192506001600160a01b03169063bec4c08c906044015f604051808303815f87803b15801561108b575f5ffd5b505af115801561109d573d5f5f3e3d5ffd5b5050505090565b336001600160a01b038216036110fc5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c6600000000000000000060448201526064016103bf565b600180546001600160a01b0319166001600160a01b038381169182179092555f8054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b60025460405163326f063160e21b81526060916001600160a01b03169063c9bc18c490611181908790879087906004016117dc565b5f60405180830381865afa15801561119b573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610bdc919081019061183b565b5f5f602083850312156111d3575f5ffd5b823567ffffffffffffffff8111156111e9575f5ffd5b8301601f810185136111f9575f5ffd5b803567ffffffffffffffff81111561120f575f5ffd5b8560208260051b8401011115611223575f5ffd5b6020919091019590945092505050565b5f5f83601f840112611243575f5ffd5b50813567ffffffffffffffff81111561125a575f5ffd5b602083019150836020828501011115611271575f5ffd5b9250929050565b5f5f5f5f6060858703121561128b575f5ffd5b843563ffffffff8116811461129e575f5ffd5b9350602085013567ffffffffffffffff8111156112b9575f5ffd5b6112c587828801611233565b909450925050604085013567ffffffffffffffff8111156112e4575f5ffd5b850160c081880312156112f5575f5ffd5b939692955090935050565b80356001600160a01b0381168114611316575f5ffd5b919050565b5f6020828403121561132b575f5ffd5b61133482611300565b9392505050565b5f5f5f6040848603121561134d575f5ffd5b83359250602084013567ffffffffffffffff81111561136a575f5ffd5b61137686828701611233565b9497909650939450505050565b5f60208284031215611393575f5ffd5b5035919050565b805f5b60028110156113bc57815184526020938401939091019060010161139d565b50505050565b6113cd82825161139a565b6020810151610523604084018261139a565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b61141781856113c2565b60c060808201525f61142c60c08301856113df565b82810360a084015261143e81856113df565b9695505050505050565b5f5f60408385031215611459575f5ffd5b8235915061146960208401611300565b90509250929050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52604160045260245ffd5b5f5f8335601e198436030181126114af575f5ffd5b83018035915067ffffffffffffffff8211156114c9575f5ffd5b602001915036819003821315611271575f5ffd5b600181811c908216806114f157607f821691505b60208210810361150f57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561052357805f5260205f20601f840160051c8101602085101561153a5750805b601f840160051c820191505b81811015610424575f8155600101611546565b67ffffffffffffffff83111561157157611571611486565b6115858361157f83546114dd565b83611515565b5f601f8411600181146115b6575f851561159f5750838201355b5f19600387901b1c1916600186901b178355610424565b5f83815260208120601f198716915b828110156115e557868501358255602094850194600190920191016115c5565b5086821015611601575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b815f5b600281101561163357813583820155602090910190600101611616565b5050604082015f5b600281101561165b5781358382016002015560209091019060010161163b565b505061166a608083018361149a565b611678818360048601611559565b505061168760a083018361149a565b6113bc818360058601611559565b5f5f8335601e198436030181126116aa575f5ffd5b830160208101925035905067ffffffffffffffff8111156116c9575f5ffd5b803603821315611271575f5ffd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b6040818337604080820160408401375f61171c6080830183611695565b60c0608086015261173160c0860182846116d7565b91505061174160a0840184611695565b85830360a087015261143e8382846116d7565b63ffffffff85168152836020820152608060408201525f61177860808301856113df565b828103606084015261178a81856116ff565b979650505050505050565b5f602082840312156117a5575f5ffd5b5051919050565b63ffffffff84168152606060208201525f6117ca60608301856113df565b828103604084015261143e81856116ff565b604081526117ee6040820185516113c2565b5f602085015160c0808401526118086101008401826113df565b90506040860151603f198483030160e085015261182582826113df565b915050828103602084015261143e8185876