Loading
6080604052612710600b556000600c60006101000a81548160ff0219169083151502179055506000600c60016101000a81548160ff0219169083151502179055503480156200004d57600080fd5b506040518060400160405280601781526020017f506f726e204e465420436f6d6d756e697479205061636b0000000000000000008152506040518060400160405280600481526020017f504f524e000000000000000000000000000000000000000000000000000000008152508160009080519060200190620000d2929190620001e2565b508060019080519060200190620000eb929190620001e2565b5050506200010e620001026200011460201b60201c565b6200011c60201b60201c565b620002f7565b600033905090565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b828054620001f09062000292565b90600052602060002090601f01602090048101928262000214576000855562000260565b82601f106200022f57805160ff191683800117855562000260565b8280016001018555821562000260579182015b828111156200025f57825182559160200191906001019062000242565b5b5090506200026f919062000273565b5090565b5b808211156200028e57600081600090555060010162000274565b5090565b60006002820490506001821680620002ab57607f821691505b60208210811415620002c257620002c1620002c8565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6143e580620003076000396000f3fe6080604052600436106101e35760003560e01c80637ff9b59611610102578063c87b56dd11610095578063eb8d244411610064578063eb8d2444146106f7578063f2fde38b14610722578063f47c84c51461074b578063f759867a14610776576101e3565b8063c87b56dd14610617578063d031370b14610654578063e547e6931461067d578063e985e9c5146106ba576101e3565b80639c5fc4e6116100d15780639c5fc4e614610580578063a22cb4651461059c578063b88d4fde146105c5578063be75d318146105ee576101e3565b80637ff9b596146104d45780638da5cb5b146104ff57806393777fb31461052a57806395d89b4114610555576101e3565b806330f72cd41161017a57806355f804b31161014957806355f804b31461041a5780636352211e1461044357806370a0823114610480578063715018a6146104bd576101e3565b806330f72cd4146103725780633ccfd60b1461039d57806342842e0e146103b45780634f6ccce7146103dd576101e3565b806309aa3dcf116101b657806309aa3dcf146102b657806318160ddd146102e157806323b872dd1461030c5780632f745c5914610335576101e3565b806301ffc9a7146101e857806306fdde0314610225578063081812fc14610250578063095ea7b31461028d575b600080fd5b3480156101f457600080fd5b5061020f600480360381019061020a91906130c6565b610792565b60405161021c9190613bca565b60405180910390f35b34801561023157600080fd5b5061023a6107a4565b6040516102479190613be5565b60405180910390f35b34801561025c57600080fd5b5061027760048036038101906102729190613159565b610836565b6040516102849190613b41565b60405180910390f35b34801561029957600080fd5b506102b460048036038101906102af919061304e565b6108bb565b005b3480156102c257600080fd5b506102cb6109d3565b6040516102d89190613ee7565b60405180910390f35b3480156102ed57600080fd5b506102f66109d8565b6040516103039190613ee7565b60405180910390f35b34801561031857600080fd5b50610333600480360381019061032e9190612f48565b6109e5565b005b34801561034157600080fd5b5061035c6004803603810190610357919061304e565b610a45565b6040516103699190613ee7565b60405180910390f35b34801561037e57600080fd5b50610387610aea565b6040516103949190613bca565b60405180910390f35b3480156103a957600080fd5b506103b2610afd565b005b3480156103c057600080fd5b506103db60048036038101906103d69190612f48565b610c35565b005b3480156103e957600080fd5b5061040460048036038101906103ff9190613159565b610c55565b6040516104119190613ee7565b60405180910390f35b34801561042657600080fd5b50610441600480360381019061043c9190613118565b610cec565b005b34801561044f57600080fd5b5061046a60048036038101906104659190613159565b610d82565b6040516104779190613b41565b60405180910390f35b34801561048c57600080fd5b506104a760048036038101906104a29190612ee3565b610e34565b6040516104b49190613ee7565b60405180910390f35b3480156104c957600080fd5b506104d2610eec565b005b3480156104e057600080fd5b506104e9610f74565b6040516104f69190613ee7565b60405180910390f35b34801561050b57600080fd5b50610514610f7f565b6040516105219190613b41565b60405180910390f35b34801561053657600080fd5b5061053f610fa9565b60405161054c9190613ee7565b60405180910390f35b34801561056157600080fd5b5061056a610fb4565b6040516105779190613be5565b60405180910390f35b61059a60048036038101906105959190613159565b611046565b005b3480156105a857600080fd5b506105c360048036038101906105be9190613012565b6111d0565b005b3480156105d157600080fd5b506105ec60048036038101906105e79190612f97565b611351565b005b3480156105fa57600080fd5b506106156004803603810190610610919061308a565b6113b3565b005b34801561062357600080fd5b5061063e60048036038101906106399190613159565b611467565b60405161064b9190613be5565b60405180910390f35b34801561066057600080fd5b5061067b60048036038101906106769190613159565b61150e565b005b34801561068957600080fd5b506106a4600480360381019061069f9190612ee3565b61162c565b6040516106b19190613ba8565b60405180910390f35b3480156106c657600080fd5b506106e160048036038101906106dc9190612f0c565b6117b8565b6040516106ee9190613bca565b60405180910390f35b34801561070357600080fd5b5061070c61184c565b6040516107199190613bca565b60405180910390f35b34801561072e57600080fd5b5061074960048036038101906107449190612ee3565b61185f565b005b34801561075757600080fd5b50610760611957565b60405161076d9190613ee7565b60405180910390f35b610790600480360381019061078b9190613159565b61195d565b005b600061079d82611ae7565b9050919050565b6060600080546107b3906141da565b80601f01602080910402602001604051908101604052809291908181526020018280546107df906141da565b801561082c5780601f106108015761010080835404028352916020019161082c565b820191906000526020600020905b81548152906001019060200180831161080f57829003601f168201915b5050505050905090565b600061084182611b61565b610880576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161087790613dc7565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006108c682610d82565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610937576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092e90613e67565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610956611bcd565b73ffffffffffffffffffffffffffffffffffffffff16148061098557506109848161097f611bcd565b6117b8565b5b6109c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109bb90613d27565b60405180910390fd5b6109ce8383611bd5565b505050565b601381565b6000600880549050905090565b6109f66109f0611bcd565b82611c8e565b610a35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2c90613ea7565b60405180910390fd5b610a40838383611d6c565b505050565b6000610a5083610e34565b8210610a91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8890613c07565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b600c60019054906101000a900460ff1681565b610b05611bcd565b73ffffffffffffffffffffffffffffffffffffffff16610b23610f7f565b73ffffffffffffffffffffffffffffffffffffffff1614610b79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7090613de7565b60405180910390fd5b734a0b9fe60630e05952d7ffca38aa7613196dc9fb73ffffffffffffffffffffffffffffffffffffffff166108fc6064600547610bb69190614096565b610bc09190614065565b9081150290604051600060405180830381858888f19350505050158015610beb573d6000803e3d6000fd5b503373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610c32573d6000803e3d6000fd5b50565b610c5083838360405180602001604052806000815250611351565b505050565b6000610c5f6109d8565b8210610ca0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9790613ec7565b60405180910390fd5b60088281548110610cda577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001549050919050565b610cf4611bcd565b73ffffffffffffffffffffffffffffffffffffffff16610d12610f7f565b73ffffffffffffffffffffffffffffffffffffffff1614610d68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5f90613de7565b60405180910390fd5b80600d9080519060200190610d7e929190612d07565b5050565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610e2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2290613d67565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610ea5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9c90613d47565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610ef4611bcd565b73ffffffffffffffffffffffffffffffffffffffff16610f12610f7f565b73ffffffffffffffffffffffffffffffffffffffff1614610f68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5f90613de7565b60405180910390fd5b610f726000611fc8565b565b6683185ac036400081565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b66626900d447400081565b606060018054610fc3906141da565b80601f0160208091040260200160405190810160405280929190818152602001828054610fef906141da565b801561103c5780601f106110115761010080835404028352916020019161103c565b820191906000526020600020905b81548152906001019060200180831161101f57829003601f168201915b5050505050905090565b600c60009054906101000a900460ff16611095576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108c90613ce7565b60405180910390fd5b60138111156110d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d090613e87565b60405180910390fd5b600b54816110e56109d8565b6110ef919061400f565b1115611130576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112790613d87565b60405180910390fd5b34816683185ac03640006111449190614096565b1115611185576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117c90613cc7565b60405180910390fd5b60005b818110156111cc57600061119a6109d8565b9050600b546111a76109d8565b10156111b8576111b7338261208e565b5b5080806111c49061420c565b915050611188565b5050565b6111d8611bcd565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611246576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123d90613ca7565b60405180910390fd5b8060056000611253611bcd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16611300611bcd565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516113459190613bca565b60405180910390a35050565b61136261135c611bcd565b83611c8e565b6113a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139890613ea7565b60405180910390fd5b6113ad848484846120ac565b50505050565b6113bb611bcd565b73ffffffffffffffffffffffffffffffffffffffff166113d9610f7f565b73ffffffffffffffffffffffffffffffffffffffff161461142f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142690613de7565b60405180910390fd5b81600c60016101000a81548160ff02191690831515021790555080600c60006101000a81548160ff0219169083151502179055505050565b606061147282611b61565b6114b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a890613e27565b60405180910390fd5b60006114bb612108565b905060008151116114db5760405180602001604052806000815250611506565b806114e58461219a565b6040516020016114f6929190613b1d565b6040516020818303038152906040525b915050919050565b611516611bcd565b73ffffffffffffffffffffffffffffffffffffffff16611534610f7f565b73ffffffffffffffffffffffffffffffffffffffff161461158a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158190613de7565b60405180910390fd5b600b54816115966109d8565b6115a0919061400f565b11156115e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d890613d87565b60405180910390fd5b60005b818110156116285760006115f66109d8565b9050600b546116036109d8565b101561161457611613338261208e565b5b5080806116209061420c565b9150506115e4565b5050565b6060600061163983610e34565b905060008114156116bc57600067ffffffffffffffff811115611685577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156116b35781602001602082028036833780820191505090505b509150506117b3565b60008167ffffffffffffffff8111156116fe577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405190808252806020026020018201604052801561172c5781602001602082028036833780820191505090505b5090506000805b838110156117ab576117458682610a45565b83838151811061177e577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101818152505081806117959061420c565b92505080806117a39061420c565b915050611733565b829450505050505b919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600c60009054906101000a900460ff1681565b611867611bcd565b73ffffffffffffffffffffffffffffffffffffffff16611885610f7f565b73ffffffffffffffffffffffffffffffffffffffff16146118db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d290613de7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561194b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194290613c47565b60405180910390fd5b61195481611fc8565b50565b600b5481565b600c60019054906101000a900460ff166119ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a390613e47565b60405180910390fd5b60138111156119f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e790613e87565b60405180910390fd5b600b54816119fc6109d8565b611a06919061400f565b1115611a47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3e90613d87565b60405180910390fd5b348166626900d4474000611a5b9190614096565b1115611a9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9390613cc7565b60405180910390fd5b60005b81811015611ae3576000611ab16109d8565b9050600b54611abe6109d8565b1015611acf57611ace338261208e565b5b508080611adb9061420c565b915050611a9f565b5050565b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611b5a5750611b5982612347565b5b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16611c4883610d82565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000611c9982611b61565b611cd8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ccf90613d07565b60405180910390fd5b6000611ce383610d82565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611d5257508373ffffffffffffffffffffffffffffffffffffffff16611d3a84610836565b73ffffffffffffffffffffffffffffffffffffffff16145b80611d635750611d6281856117b8565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16611d8c82610d82565b73ffffffffffffffffffffffffffffffffffffffff1614611de2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dd990613e07565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611e52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4990613c87565b60405180910390fd5b611e5d838383612429565b611e68600082611bd5565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611eb891906140f0565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611f0f919061400f565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6120a8828260405180602001604052806000815250612439565b5050565b6120b7848484611d6c565b6120c384848484612494565b612102576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f990613c27565b60405180910390fd5b50505050565b6060600d8054612117906141da565b80601f0160208091040260200160405190810160405280929190818152602001828054612143906141da565b80156121905780601f1061216557610100808354040283529160200191612190565b820191906000526020600020905b81548152906001019060200180831161217357829003601f168201915b5050505050905090565b606060008214156121e2576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612342565b600082905060005b600082146122145780806121fd9061420c565b915050600a8261220d9190614065565b91506121ea565b60008167ffffffffffffffff811115612256577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f1916602001820160405280156122885781602001600182028036833780820191505090505b5090505b6000851461233b576001826122a191906140f0565b9150600a856122b09190614255565b60306122bc919061400f565b60f81b8183815181106122f8577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856123349190614065565b945061228c565b8093505050505b919050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061241257507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061242257506124218261262b565b5b9050919050565b612434838383612695565b505050565b61244383836127a9565b6124506000848484612494565b61248f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161248690613c27565b60405180910390fd5b505050565b60006124b58473ffffffffffffffffffffffffffffffffffffffff16612977565b1561261e578373ffffffffffffffffffffffffffffffffffffffff1663150b7a026124de611bcd565b8786866040518563ffffffff1660e01b81526004016125009493929190613b5c565b602060405180830381600087803b15801561251a57600080fd5b505af192505050801561254b57506040513d601f19601f8201168201806040525081019061254891906130ef565b60015b6125ce573d806000811461257b576040519150601f19603f3d011682016040523d82523d6000602084013e612580565b606091505b506000815114156125c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125bd90613c27565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612623565b600190505b949350505050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6126a083838361298a565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156126e3576126de8161298f565b612722565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146127215761272083826129d8565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156127655761276081612b45565b6127a4565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146127a3576127a28282612c88565b5b5b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612819576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161281090613da7565b60405180910390fd5b61282281611b61565b15612862576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161285990613c67565b60405180910390fd5b61286e60008383612429565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546128be919061400f565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b600080823b905060008111915050919050565b505050565b6008805490506009600083815260200190815260200160002081905550600881908060018154018082558091505060019003906000526020600020016000909190919091505550565b600060016129e584610e34565b6129ef91906140f0565b9050600060076000848152602001908152602001600020549050818114612ad4576000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816007600083815260200190815260200160002081905550505b6007600084815260200190815260200160002060009055600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b60006001600880549050612b5991906140f0565b9050600060096000848152602001908152602001600020549050600060088381548110612baf577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020015490508060088381548110612bf7577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020018190555081600960008381526020019081526020016000208190555060096000858152602001908152602001600020600090556008805480612c6c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6001900381819060005260206000200160009055905550505050565b6000612c9383610e34565b905081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806007600084815260200190815260200160002081905550505050565b828054612d13906141da565b90600052602060002090601f016020900481019282612d355760008555612d7c565b82601f10612d4e57805160ff1916838001178555612d7c565b82800160010185558215612d7c579182015b82811115612d7b578251825591602001919060010190612d60565b5b509050612d899190612d8d565b5090565b5b80821115612da6576000816000905550600101612d8e565b5090565b6000612dbd612db884613f33565b613f02565b905082815260208101848484011115612dd557600080fd5b612de0848285614198565b509392505050565b6000612dfb612df684613f63565b613f02565b905082815260208101848484011115612e1357600080fd5b612e1e848285614198565b509392505050565b600081359050612e3581614353565b92915050565b600081359050612e4a8161436a565b92915050565b600081359050612e5f81614381565b92915050565b600081519050612e7481614381565b92915050565b600082601f830112612e8b57600080fd5b8135612e9b848260208601612daa565b91505092915050565b600082601f830112612eb557600080fd5b8135612ec5848260208601612de8565b91505092915050565b600081359050612edd81614398565b92915050565b600060208284031215612ef557600080fd5b6000612f0384828501612e26565b91505092915050565b60008060408385031215612f1f57600080fd5b6000612f2d85828601612e26565b9250506020612f3e85828601612e26565b9150509250929050565b600080600060608486031215612f5d57600080fd5b6000612f6b86828701612e26565b9350506020612f7c86828701612e26565b9250506040612f8d86828701612ece565b9150509250925092565b60008060008060808587031215612fad57600080fd5b6000612fbb87828801612e26565b9450506020612fcc87828801612e26565b9350506040612fdd87828801612ece565b925050606085013567ffffffffffffffff811115612ffa57600080fd5b61300687828801612e7a565b91505092959194509250565b6000806040838503121561302557600080fd5b600061303385828601612e26565b925050602061304485828601612e3b565b9150509250929050565b6000806040838503121561306157600080fd5b600061306f85828601612e26565b925050602061308085828601612ece565b9150509250929050565b6000806040838503121561309d57600080fd5b60006130ab85828601612e3b565b92505060206130bc85828601612e3b565b9150509250929050565b6000602082840312156130d857600080fd5b60006130e684828501612e50565b91505092915050565b60006020828403121561310157600080fd5b600061310f84828501612e65565b91505092915050565b60006020828403121561312a57600080fd5b600082013567ffffffffffffffff81111561314457600080fd5b61315084828501612ea4565b91505092915050565b60006020828403121561316b57600080fd5b600061317984828501612ece565b91505092915050565b600061318e8383613aff565b60208301905092915050565b6131a381614124565b82525050565b60006131b482613fa3565b6131be8185613fd1565b93506131c983613f93565b8060005b838110156131fa5781516131e18882613182565b97506131ec83613fc4565b9250506001810190506131cd565b5085935050505092915050565b61321081614136565b82525050565b600061322182613fae565b61322b8185613fe2565b935061323b8185602086016141a7565b61324481614342565b840191505092915050565b600061325a82613fb9565b6132648185613ff3565b93506132748185602086016141a7565b61327d81614342565b840191505092915050565b600061329382613fb9565b61329d8185614004565b93506132ad8185602086016141a7565b80840191505092915050565b60006132c6602b83613ff3565b91507f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008301527f74206f6620626f756e64730000000000000000000000000000000000000000006020830152604082019050919050565b600061332c603283613ff3565b91507f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008301527f63656976657220696d706c656d656e74657200000000000000000000000000006020830152604082019050919050565b6000613392602683613ff3565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006133f8601c83613ff3565b91507f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006000830152602082019050919050565b6000613438602483613ff3565b91507f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061349e601983613ff3565b91507f4552433732313a20617070726f766520746f2063616c6c6572000000000000006000830152602082019050919050565b60006134de601f83613ff3565b91507f45746865722076616c75652073656e74206973206e6f7420636f7272656374006000830152602082019050919050565b600061351e602283613ff3565b91507f53616c65206d7573742062652061637469766520746f206d696e7420546f6b6560008301527f6e730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613584602c83613ff3565b91507f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008301527f697374656e7420746f6b656e00000000000000000000000000000000000000006020830152604082019050919050565b60006135ea603883613ff3565b91507f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008301527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006020830152604082019050919050565b6000613650602a83613ff3565b91507f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008301527f726f2061646472657373000000000000000000000000000000000000000000006020830152604082019050919050565b60006136b6602983613ff3565b91507f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008301527f656e7420746f6b656e00000000000000000000000000000000000000000000006020830152604082019050919050565b600061371c602a83613ff3565b91507f507572636861736520776f756c6420657863656564206d617820737570706c7960008301527f206f6620746f6b656e73000000000000000000000000000000000000000000006020830152604082019050919050565b6000613782602083613ff3565b91507f4552433732313a206d696e7420746f20746865207a65726f20616464726573736000830152602082019050919050565b60006137c2602c83613ff3565b91507f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008301527f697374656e7420746f6b656e00000000000000000000000000000000000000006020830152604082019050919050565b6000613828602083613ff3565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b6000613868602983613ff3565b91507f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960008301527f73206e6f74206f776e00000000000000000000000000000000000000000000006020830152604082019050919050565b60006138ce602f83613ff3565b91507f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008301527f6e6578697374656e7420746f6b656e00000000000000000000000000000000006020830152604082019050919050565b6000613934602583613ff3565b91507f50726553616c65206d7573742062652061637469766520746f206d696e74205460008301527f6f6b656e730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061399a602183613ff3565b91507f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008301527f72000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613a00601b83613ff3565b91507f4578636565646564206d617820746f6b656e20707572636861736500000000006000830152602082019050919050565b6000613a40603183613ff3565b91507f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008301527f776e6572206e6f7220617070726f7665640000000000000000000000000000006020830152604082019050919050565b6000613aa6602c83613ff3565b91507f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008301527f7574206f6620626f756e647300000000000000000000000000000000000000006020830152604082019050919050565b613b088161418e565b82525050565b613b178161418e565b82525050565b6000613b298285613288565b9150613b358284613288565b91508190509392505050565b6000602082019050613b56600083018461319a565b92915050565b6000608082019050613b71600083018761319a565b613b7e602083018661319a565b613b8b6040830185613b0e565b8181036060830152613b9d8184613216565b905095945050505050565b60006020820190508181036000830152613bc281846131a9565b905092915050565b6000602082019050613bdf6000830184613207565b92915050565b60006020820190508181036000830152613bff818461324f565b905092915050565b60006020820190508181036000830152613c20816132b9565b9050919050565b60006020820190508181036000830152613c408161331f565b9050919050565b60006020820190508181036000830152613c6081613385565b9050919050565b60006020820190508181036000830152613c80816133eb565b9050919050565b60006020820190508181036000830152613ca08161342b565b9050919050565b60006020820190508181036000830152613cc081613491565b9050919050565b60006020820190508181036000830152613ce0816134d1565b9050919050565b60006020820190508181036000830152613d0081613511565b9050919050565b60006020820190508181036000830152613d2081613577565b9050919050565b60006020820190508181036000830152613d40816135dd565b9050919050565b60006020820190508181036000830152613d6081613643565b9050919050565b60006020820190508181036000830152613d80816136a9565b9050919050565b60006020820190508181036000830152613da08161370f565b9050919050565b60006020820190508181036000830152613dc081613775565b9050919050565b60006020820190508181036000830152613de0816137b5565b9050919050565b60006020820190508181036000830152613e008161381b565b9050919050565b60006020820190508181036000830152613e208161385b565b9050919050565b60006020820190508181036000830152613e40816138c1565b9050919050565b60006020820190508181036000830152613e6081613927565b9050919050565b60006020820190508181036000830152613e808161398d565b9050919050565b60006020820190508181036000830152613ea0816139f3565b9050919050565b60006020820190508181036000830152613ec081613a33565b9050919050565b60006020820190508181036000830152613ee081613a99565b9050919050565b6000602082019050613efc6000830184613b0e565b92915050565b6000604051905081810181811067ffffffffffffffff82111715613f2957613f28614313565b5b8060405250919050565b600067ffffffffffffffff821115613f4e57613f4d614313565b5b601f19601f8301169050602081019050919050565b600067ffffffffffffffff821115613f7e57613f7d614313565b5b601f19601f8301169050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600061401a8261418e565b91506140258361418e565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561405a57614059614286565b5b828201905092915050565b60006140708261418e565b915061407b8361418e565b92508261408b5761408a6142b5565b5b828204905092915050565b60006140a18261418e565b91506140ac8361418e565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156140e5576140e4614286565b5b828202905092915050565b60006140fb8261418e565b91506141068361418e565b92508282101561411957614118614286565b5b828203905092915050565b600061412f8261416e565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b838110156141c55780820151818401526020810190506141aa565b838111156141d4576000848401525b50505050565b600060028204905060018216806141f257607f821691505b60208210811415614206576142056142e4565b5b50919050565b60006142178261418e565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561424a57614249614286565b5b600182019050919050565b60006142608261418e565b915061426b8361418e565b92508261427b5761427a6142b5565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b61435c81614124565b811461436757600080fd5b50565b61437381614136565b811461437e57600080fd5b50565b61438a81614142565b811461439557600080fd5b50565b6143a18161418e565b81146143ac57600080fd5b5056fea264697066735822122001acaf77ec6a58c356a02166c812cf7da9895ee66d2139a91e8742178405354364736f6c63430008000033