0x608060405234801561001057600080fd5b50600080546001600160a01b03191633179055613715806100326000396000f3fe60806040526004361061012d5760003560e01c80636809fedd116100a5578063b4feb8af11610074578063d46bb83511610059578063d46bb835146102d6578063d7edf01a146102f6578063fa461e331461019b57600080fd5b8063b4feb8af14610296578063b63ae6ee146102ab57600080fd5b80636809fedd1461023b578063813d92ba1461025b578063938e8c1114610263578063a34fdd0b1461027657600080fd5b80632c8958f6116100fc5780633a82f2bb116100e15780633a82f2bb146101db57806351cff8d9146101fb5780635a43d9a71461021b57600080fd5b80632c8958f61461019b578063321e1bd8146101bb57600080fd5b806301f47471146101395780631002dc341461015b5780631a7187011461017b57806323a69e751461019b57600080fd5b3661013457005b600080fd5b34801561014557600080fd5b50610159610154366004612e84565b610309565b005b34801561016757600080fd5b50610159610176366004612ed3565b610491565b34801561018757600080fd5b50610159610196366004612f0c565b610568565b3480156101a757600080fd5b506101596101b6366004612f89565b610930565b3480156101c757600080fd5b506101596101d6366004612f0c565b6109f7565b3480156101e757600080fd5b506101596101f6366004612f0c565b610c64565b34801561020757600080fd5b50610159610216366004613009565b610f6c565b34801561022757600080fd5b5061015961023636600461302d565b6111f1565b34801561024757600080fd5b50610159610256366004613009565b611342565b61015961140a565b6101596102713660046131ee565b6115f9565b34801561028257600080fd5b5061015961029136600461302d565b611d55565b3480156102a257600080fd5b50610159611ea6565b3480156102b757600080fd5b506102c0611fdb565b6040516102cd919061320b565b60405180910390f35b3480156102e257600080fd5b506101596102f1366004612f0c565b612098565b6101596103043660046131ee565b612346565b3360009081526001602081905260409091205460ff1615151461038d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600160248201527f760000000000000000000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301526024820183905284169063a9059cbb906044016020604051808303816000875af1158015610402573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104269190613265565b61048c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f5472616e73666572206661696c656400000000000000000000000000000000006044820152606401610384565b505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610512576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600160248201527f6f000000000000000000000000000000000000000000000000000000000000006044820152606401610384565b73ffffffffffffffffffffffffffffffffffffffff91909116600090815260016020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b3360009081526001602081905260409091205460ff161515146105e7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600160248201527f76000000000000000000000000000000000000000000000000000000000000006044820152606401610384565b4263ffffffff602083901c16101561065b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600160248201527f74000000000000000000000000000000000000000000000000000000000000006044820152606401610384565b60008060006040517f0902f1ac0000000000000000000000000000000000000000000000000000000081526060816004838c5afa91508161069b57600080fd5b80519350602081015192507f0dfe16810000000000000000000000000000000000000000000000000000000081526020816004838c5afa9150816106de57600080fd5b898151146001811461070b576127109390930263ffffffff86168802908101908502049260009250610727565b63ffffffff861688026127108602810194029390930492600192505b508286111561078c577f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f61000000000000000000000000000000000000000000000000000000000000006044820152606481fd5b5060405192507f23b872dd000000000000000000000000000000000000000000000000000000008352600054600484015287602484015285604484015260208360648560008d5af16107dd57600080fd5b80156108865773ffffffffffffffffffffffffffffffffffffffff881663022c0d9f6000848a825b6040519080825280601f01601f19166020018201604052801561082f576020820181803683370190505b506040518563ffffffff1660e01b815260040161084f94939291906132f0565b600060405180830381600087803b15801561086957600080fd5b505af115801561087d573d6000803e3d6000fd5b50505050610925565b73ffffffffffffffffffffffffffffffffffffffff881663022c0d9f8360008a815b6040519080825280601f01601f1916602001820160405280156108d2576020820181803683370190505b506040518563ffffffff1660e01b81526004016108f294939291906132f0565b600060405180830381600087803b15801561090c57600080fd5b505af1158015610920573d6000803e3d6000fd5b505050505b505050505050505050565b3360009081526002602052604090205460ff166109a9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f56500000000000000000000000000000000000000000000000000000000000006044820152606401610384565b60008413806109b85750600083135b6109c157600080fd5b60006109cf82840184613009565b905060008086136109e057846109e2565b855b90506109ef8233836129ae565b505050505050565b3360009081526001602081905260409091205460ff16151514610a76576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600160248201527f76000000000000000000000000000000000000000000000000000000000000006044820152606401610384565b4263ffffffff602083901c161015610aea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600160248201527f74000000000000000000000000000000000000000000000000000000000000006044820152606401610384565b60008060006040517f0902f1ac0000000000000000000000000000000000000000000000000000000081526060816004838c5afa915081610b2a57600080fd5b80519350602081015192507f0dfe16810000000000000000000000000000000000000000000000000000000081526020816004838c5afa915081610b6d57600080fd5b8981511460018114610b9a576127109390930263ffffffff86168802908101908502049260009250610bb6565b63ffffffff861688026127108602810194029390930492600192505b5082861115610c1b577f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f61000000000000000000000000000000000000000000000000000000000000006044820152606481fd5b5060405192507fa9059cbb00000000000000000000000000000000000000000000000000000000835287600484015285602484015260208360448560008d5af16107dd57600080fd5b3360009081526001602081905260409091205460ff16151514610ce3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600160248201527f76000000000000000000000000000000000000000000000000000000000000006044820152606401610384565b4263ffffffff602083901c161015610d57576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600160248201527f74000000000000000000000000000000000000000000000000000000000000006044820152606401610384565b60008060006040517f0902f1ac0000000000000000000000000000000000000000000000000000000081526060816004838c5afa915081610d9757600080fd5b80519350602081015192507f0dfe16810000000000000000000000000000000000000000000000000000000081526020816004838c5afa915081610dda57600080fd5b8981511460018114610e0b5781519a5060019250600188850363ffffffff881602866127108b020204019350610e64565b7fd21220a70000000000000000000000000000000000000000000000000000000082526020826004848d5afa925082610e4357600080fd5b81519a5060009250600188860363ffffffff881602856127108b0202040193505b5085831115610ec9577f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f61000000000000000000000000000000000000000000000000000000000000006044820152606481fd5b5060405192507f23b872dd000000000000000000000000000000000000000000000000000000008352600054600484015287602484015281604484015260208360648560008d5af1610f1a57600080fd5b8015610f465773ffffffffffffffffffffffffffffffffffffffff881663022c0d9f6000888a82610805565b73ffffffffffffffffffffffffffffffffffffffff881663022c0d9f8760008a816108a8565b60005473ffffffffffffffffffffffffffffffffffffffff163314610fed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600160248201527f6f000000000000000000000000000000000000000000000000000000000000006044820152606401610384565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009073ffffffffffffffffffffffffffffffffffffffff8316906370a0823190602401602060405180830381865afa15801561105a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061107e9190613335565b9050600081116110ea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f302042616c616e636500000000000000000000000000000000000000000000006044820152606401610384565b6000546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182166004820152602481018390529083169063a9059cbb906044016020604051808303816000875af1158015611163573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111879190613265565b6111ed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f5472616e73666572206661696c656400000000000000000000000000000000006044820152606401610384565b5050565b60005473ffffffffffffffffffffffffffffffffffffffff163314611272576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f6f700000000000000000000000000000000000000000000000000000000000006044820152606401610384565b60005b8181101561048c576001600260008585858181106112955761129561334e565b90506020020160208101906112aa9190613009565b73ffffffffffffffffffffffffffffffffffffffff168152602081019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001691151591909117905561132f8383838181106113125761131261334e565b90506020020160208101906113279190613009565b600390612b3d565b508061133a816133ac565b915050611275565b60005473ffffffffffffffffffffffffffffffffffffffff1633146113c3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600160248201527f6f000000000000000000000000000000000000000000000000000000000000006044820152606401610384565b600580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff16331461148b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600160248201527f6f000000000000000000000000000000000000000000000000000000000000006044820152606401610384565b60055473ffffffffffffffffffffffffffffffffffffffff1661150a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4d54206e6f7420736574000000000000000000000000000000000000000000006044820152606401610384565b60004711611574576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f302042616c616e636500000000000000000000000000000000000000000000006044820152606401610384565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0476040518263ffffffff1660e01b81526004016000604051808303818588803b1580156115de57600080fd5b505af11580156115f2573d6000803e3d6000fd5b5050505050565b3360009081526001602081905260409091205460ff16151514611678576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600160248201527f76000000000000000000000000000000000000000000000000000000000000006044820152606401610384565b42816060015163ffffffff1610156116ec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600160248201527f74000000000000000000000000000000000000000000000000000000000000006044820152606401610384565b608081015181516040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa15801561175e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117829190613335565b10156117ea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600160248201527f62000000000000000000000000000000000000000000000000000000000000006044820152606401610384565b6000808260200151905060008173ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015611841573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061186591906133e4565b73ffffffffffffffffffffffffffffffffffffffff16846000015173ffffffffffffffffffffffffffffffffffffffff161461190f578173ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061190a91906133e4565b61197e565b8173ffffffffffffffffffffffffffffffffffffffff1663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa15801561195a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061197e91906133e4565b8451602086015191925073ffffffffffffffffffffffffffffffffffffffff808416911610906119ad90612b68565b15611a3a5760008560200151905060008173ffffffffffffffffffffffffffffffffffffffff16633850c7bd6040518163ffffffff1660e01b815260040160e060405180830381865afa158015611a08573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a2c9190613413565b602001519550611acf915050565b611a478560200151612c30565b15611acf576000856020015190508073ffffffffffffffffffffffffffffffffffffffff1663e76c01e46040518163ffffffff1660e01b815260040160e060405180830381865afa158015611aa0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ac49190613503565b509399505050505050505b8015611b5d578460e0015160020b848660c00151611aed9190613592565b60020b1315611b58576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f74760000000000000000000000000000000000000000000000000000000000006044820152606401610384565b611be0565b8460e0015160020b8560c0015185611b759190613592565b60020b1315611be0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f74760000000000000000000000000000000000000000000000000000000000006044820152606401610384565b6000808473ffffffffffffffffffffffffffffffffffffffff1663128acb088860400151858a6080015187611c295773fffd8963efd1fc6a506488495d951d5263988d24611c30565b6401000276a55b8c516040805173ffffffffffffffffffffffffffffffffffffffff9092166020830152016040516020818303038152906040526040518663ffffffff1660e01b8152600401611c839594939291906135d3565b60408051808303816000875af1158015611ca1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cc59190613625565b915091508660a0015183611cd95782611cdb565b815b611ce490613649565b1015611d4c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600160248201527f61000000000000000000000000000000000000000000000000000000000000006044820152606401610384565b50505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314611dd6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f6f700000000000000000000000000000000000000000000000000000000000006044820152606401610384565b60005b8181101561048c57600060026000858585818110611df957611df961334e565b9050602002016020810190611e0e9190613009565b73ffffffffffffffffffffffffffffffffffffffff168152602081019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055611e93838383818110611e7657611e7661334e565b9050602002016020810190611e8b9190613009565b600390612cae565b5080611e9e816133ac565b915050611dd9565b60005473ffffffffffffffffffffffffffffffffffffffff163314611f27576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600160248201527f6f000000000000000000000000000000000000000000000000000000000000006044820152606401610384565b60004711611f91576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f302042616c616e636500000000000000000000000000000000000000000000006044820152606401610384565b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116914780156108fc02929091818181858888f19350505050158015611fd8573d6000803e3d6000fd5b50565b60606000611fe96003612cd0565b905060008167ffffffffffffffff811115612006576120066130a2565b60405190808252806020026020018201604052801561202f578160200160208202803683370190505b50905060005b8281101561209157612048600382612cda565b82828151811061205a5761205a61334e565b73ffffffffffffffffffffffffffffffffffffffff9092166020928302919091019091015280612089816133ac565b915050612035565b5092915050565b3360009081526001602081905260409091205460ff16151514612117576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600160248201527f76000000000000000000000000000000000000000000000000000000000000006044820152606401610384565b4263ffffffff602083901c16101561218b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600160248201527f74000000000000000000000000000000000000000000000000000000000000006044820152606401610384565b60008060006040517f0902f1ac0000000000000000000000000000000000000000000000000000000081526060816004838c5afa9150816121cb57600080fd5b80519350602081015192507f0dfe16810000000000000000000000000000000000000000000000000000000081526020816004838c5afa91508161220e57600080fd5b898151146001811461223f5781519a5060019250600188850363ffffffff881602866127108b020204019350612298565b7fd21220a70000000000000000000000000000000000000000000000000000000082526020826004848d5afa92508261227757600080fd5b81519a5060009250600188860363ffffffff881602856127108b0202040193505b50858311156122fd577f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f61000000000000000000000000000000000000000000000000000000000000006044820152606481fd5b5060405192507fa9059cbb00000000000000000000000000000000000000000000000000000000835287600484015281602484015260208360448560008d5af1610f1a57600080fd5b3360009081526001602081905260409091205460ff161515146123c5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600160248201527f76000000000000000000000000000000000000000000000000000000000000006044820152606401610384565b42816060015163ffffffff161015612439576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600160248201527f74000000000000000000000000000000000000000000000000000000000000006044820152606401610384565b6000808260200151905060008173ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015612490573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124b491906133e4565b73ffffffffffffffffffffffffffffffffffffffff16846000015173ffffffffffffffffffffffffffffffffffffffff161461255e578173ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015612535573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061255991906133e4565b6125cd565b8173ffffffffffffffffffffffffffffffffffffffff1663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125cd91906133e4565b90506000846000015173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161090506126138560200151612b68565b156126a05760008560200151905060008173ffffffffffffffffffffffffffffffffffffffff16633850c7bd6040518163ffffffff1660e01b815260040160e060405180830381865afa15801561266e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126929190613413565b602001519550612735915050565b6126ad8560200151612c30565b15612735576000856020015190508073ffffffffffffffffffffffffffffffffffffffff1663e76c01e46040518163ffffffff1660e01b815260040160e060405180830381865afa158015612706573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061272a9190613503565b509399505050505050505b80156127c3578460e0015160020b848660c001516127539190613592565b60020b13156127be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f74760000000000000000000000000000000000000000000000000000000000006044820152606401610384565b612846565b8460e0015160020b8560c00151856127db9190613592565b60020b1315612846576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f74760000000000000000000000000000000000000000000000000000000000006044820152606401610384565b6000808473ffffffffffffffffffffffffffffffffffffffff1663128acb088860400151858a6080015161287990613649565b876128985773fffd8963efd1fc6a506488495d951d5263988d2461289f565b6401000276a55b6040805173ffffffffffffffffffffffffffffffffffffffff8c166020820152016040516020818303038152906040526040518663ffffffff1660e01b81526004016128ef9594939291906135d3565b60408051808303816000875af115801561290d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129319190613625565b915091508660a00151836129455781612947565b825b10611d4c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600160248201527f61000000000000000000000000000000000000000000000000000000000000006044820152606401610384565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790529151600092839290871691612a459190613681565b6000604051808303816000865af19150503d8060008114612a82576040519150601f19603f3d011682016040523d82523d6000602084013e612a87565b606091505b5091509150818015612ab1575080511580612ab1575080806020019051810190612ab19190613265565b6115f2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f5472616e7366657248656c7065723a3a736166655472616e736665723a20747260448201527f616e73666572206661696c6564000000000000000000000000000000000000006064820152608401610384565b6000612b5f8373ffffffffffffffffffffffffffffffffffffffff8416612ce6565b90505b92915050565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f3850c7bd000000000000000000000000000000000000000000000000000000001790529051600091829173ffffffffffffffffffffffffffffffffffffffff851691612be691613681565b600060405180830381855afa9150503d8060008114612c21576040519150601f19603f3d011682016040523d82523d6000602084013e612c26565b606091505b5090949350505050565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe76c01e4000000000000000000000000000000000000000000000000000000001790529051600091829173ffffffffffffffffffffffffffffffffffffffff851691612be691613681565b6000612b5f8373ffffffffffffffffffffffffffffffffffffffff8416612d35565b6000612b62825490565b6000612b5f8383612e28565b6000818152600183016020526040812054612d2d57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155612b62565b506000612b62565b60008181526001830160205260408120548015612e1e576000612d5960018361369d565b8554909150600090612d6d9060019061369d565b9050808214612dd2576000866000018281548110612d8d57612d8d61334e565b9060005260206000200154905080876000018481548110612db057612db061334e565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080612de357612de36136b0565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050612b62565b6000915050612b62565b6000826000018281548110612e3f57612e3f61334e565b9060005260206000200154905092915050565b73ffffffffffffffffffffffffffffffffffffffff81168114611fd857600080fd5b8035612e7f81612e52565b919050565b600080600060608486031215612e9957600080fd5b8335612ea481612e52565b92506020840135612eb481612e52565b929592945050506040919091013590565b8015158114611fd857600080fd5b60008060408385031215612ee657600080fd5b8235612ef181612e52565b91506020830135612f0181612ec5565b809150509250929050565b60008060008060008060c08789031215612f2557600080fd5b8635612f3081612e52565b95506020870135612f4081612e52565b94506040870135612f5081612e52565b9350606087013592506080870135915060a087013567ffffffffffffffff81168114612f7b57600080fd5b809150509295509295509295565b60008060008060608587031215612f9f57600080fd5b8435935060208501359250604085013567ffffffffffffffff80821115612fc557600080fd5b818701915087601f830112612fd957600080fd5b813581811115612fe857600080fd5b886020828501011115612ffa57600080fd5b95989497505060200194505050565b60006020828403121561301b57600080fd5b813561302681612e52565b9392505050565b6000806020838503121561304057600080fd5b823567ffffffffffffffff8082111561305857600080fd5b818501915085601f83011261306c57600080fd5b81358181111561307b57600080fd5b8660208260051b850101111561309057600080fd5b60209290920196919550909350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b63ffffffff81168114611fd857600080fd5b8035612e7f816130d1565b8060020b8114611fd857600080fd5b8035612e7f816130ee565b600061010080838503121561311c57600080fd5b6040519081019067ffffffffffffffff82118183101715613166577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b816040528092508335915061317a82612e52565b81815261318960208501612e74565b602082015261319a60408501612e74565b60408201526131ab606085016130e3565b60608201526080840135608082015260a084013560a08201526131d060c085016130fd565b60c08201526131e160e085016130fd565b60e0820152505092915050565b6000610100828403121561320157600080fd5b612b5f8383613108565b6020808252825182820181905260009190848201906040850190845b8181101561325957835173ffffffffffffffffffffffffffffffffffffffff1683529284019291840191600101613227565b50909695505050505050565b60006020828403121561327757600080fd5b815161302681612ec5565b60005b8381101561329d578181015183820152602001613285565b50506000910152565b600081518084526132be816020860160208601613282565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b84815283602082015273ffffffffffffffffffffffffffffffffffffffff8316604082015260806060820152600061332b60808301846132a6565b9695505050505050565b60006020828403121561334757600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036133dd576133dd61337d565b5060010190565b6000602082840312156133f657600080fd5b815161302681612e52565b805161ffff81168114612e7f57600080fd5b600060e0828403121561342557600080fd5b60405160e0810181811067ffffffffffffffff8211171561346f577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604052825161347d81612e52565b8152602083015161348d816130ee565b602082015261349e60408401613401565b60408201526134af60608401613401565b60608201526134c060808401613401565b608082015260a08301516134d3816130d1565b60a082015260c08301516134e681612ec5565b60c08201529392505050565b805160ff81168114612e7f57600080fd5b600080600080600080600060e0888a03121561351e57600080fd5b875161352981612e52565b602089015190975061353a816130ee565b955061354860408901613401565b945061355660608901613401565b9350613564608089016134f2565b925061357260a089016134f2565b915060c088015161358281612ec5565b8091505092959891949750929550565b600282810b9082900b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000008112627fffff82131715612b6257612b6261337d565b600073ffffffffffffffffffffffffffffffffffffffff8088168352861515602084015285604084015280851660608401525060a0608083015261361a60a08301846132a6565b979650505050505050565b6000806040838503121561363857600080fd5b505080516020909101519092909150565b60007f8000000000000000000000000000000000000000000000000000000000000000820361367a5761367a61337d565b5060000390565b60008251613693818460208701613282565b9190910192915050565b81810381811115612b6257612b6261337d565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea264697066735822122082e1eab8df8616e2726767851146c739389e862668fdd04d20047742cea5d0f064736f6c63430008130033