60806040525f60075f6101000a81548160ff02191690831515021790555034801562000029575f80fd5b50604051620041d3380380620041d383398181016040528101906200004f9190620004be565b8360405180602001604052805f8152506200007081620001e160201b60201c565b505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603620000e4575f6040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401620000db91906200053e565b60405180910390fd5b620000f581620001f660201b60201c565b5060016004819055506200010f84620002b960201b60201c565b8360055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508260068190555081600760016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505062000898565b8060029081620001f29190620007b4565b5050565b5f60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620002c96200035060201b60201c565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036200033c575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016200033391906200053e565b60405180910390fd5b6200034d81620001f660201b60201c565b50565b62000360620003f260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1662000386620003f960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620003f057620003b2620003f260201b60201c565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401620003e791906200053e565b60405180910390fd5b565b5f33905090565b5f60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f620004508262000425565b9050919050565b620004628162000444565b81146200046d575f80fd5b50565b5f81519050620004808162000457565b92915050565b5f819050919050565b6200049a8162000486565b8114620004a5575f80fd5b50565b5f81519050620004b8816200048f565b92915050565b5f805f8060808587031215620004d957620004d862000421565b5b5f620004e88782880162000470565b9450506020620004fb87828801620004a8565b93505060406200050e8782880162000470565b9250506060620005218782880162000470565b91505092959194509250565b620005388162000444565b82525050565b5f602082019050620005535f8301846200052d565b92915050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680620005d557607f821691505b602082108103620005eb57620005ea62000590565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026200064f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000612565b6200065b868362000612565b95508019841693508086168417925050509392505050565b5f819050919050565b5f6200069c62000696620006908462000486565b62000673565b62000486565b9050919050565b5f819050919050565b620006b7836200067c565b620006cf620006c682620006a3565b8484546200061e565b825550505050565b5f90565b620006e5620006d7565b620006f2818484620006ac565b505050565b5b8181101562000719576200070d5f82620006db565b600181019050620006f8565b5050565b601f82111562000768576200073281620005f1565b6200073d8462000603565b810160208510156200074d578190505b620007656200075c8562000603565b830182620006f7565b50505b505050565b5f82821c905092915050565b5f6200078a5f19846008026200076d565b1980831691505092915050565b5f620007a4838362000779565b9150826002028217905092915050565b620007bf8262000559565b67ffffffffffffffff811115620007db57620007da62000563565b5b620007e78254620005bd565b620007f48282856200071d565b5f60209050601f8311600181146200082a575f841562000815578287015190505b62000821858262000797565b86555062000890565b601f1984166200083a86620005f1565b5f5b8281101562000863578489015182556001820191506020850194506020810190506200083c565b868310156200088357848901516200087f601f89168262000779565b8355505b6001600288020188555050505b505050505050565b61392d80620008a65f395ff3fe60806040526004361061011d575f3560e01c80638da5cb5b1161009f578063cce7ec1311610063578063cce7ec13146103ce578063de74e57b146103ea578063e985e9c514610428578063f242432a14610464578063f2fde38b1461048c5761011d565b80638da5cb5b14610304578063964bc33f1461032e5780639fe9f62314610356578063a22cb4651461037e578063a9059cbb146103a65761011d565b80632eb2c2d6116100e65780632eb2c2d61461023a5780634e1273f41461026257806361ba27da1461029e578063715018a6146102c657806377097fc8146102dc5761011d565b8062fdd58e1461012157806301ffc9a71461015d5780630e89341c1461019957806326b3a954146101d55780632a55205a146101fd575b5f80fd5b34801561012c575f80fd5b50610147600480360381019061014291906122bf565b6104b4565b604051610154919061230c565b60405180910390f35b348015610168575f80fd5b50610183600480360381019061017e919061237a565b610509565b60405161019091906123bf565b60405180910390f35b3480156101a4575f80fd5b506101bf60048036038101906101ba91906123d8565b6105ea565b6040516101cc919061248d565b60405180910390f35b3480156101e0575f80fd5b506101fb60048036038101906101f691906124d0565b61067c565b005b348015610208575f80fd5b50610223600480360381019061021e9190612520565b6107c9565b60405161023192919061256d565b60405180910390f35b348015610245575f80fd5b50610260600480360381019061025b9190612784565b610825565b005b34801561026d575f80fd5b506102886004803603810190610283919061290f565b6108cc565b6040516102959190612a3c565b60405180910390f35b3480156102a9575f80fd5b506102c460048036038101906102bf91906123d8565b6109d3565b005b3480156102d1575f80fd5b506102da6109e5565b005b3480156102e7575f80fd5b5061030260048036038101906102fd9190612afa565b6109f8565b005b34801561030f575f80fd5b50610318610a49565b6040516103259190612b54565b60405180910390f35b348015610339575f80fd5b50610354600480360381019061034f91906123d8565b610a71565b005b348015610361575f80fd5b5061037c60048036038101906103779190612b97565b610b4c565b005b348015610389575f80fd5b506103a4600480360381019061039f9190612bc2565b610b70565b005b3480156103b1575f80fd5b506103cc60048036038101906103c791906122bf565b610b86565b005b6103e860048036038101906103e391906122bf565b610bf9565b005b3480156103f5575f80fd5b50610410600480360381019061040b91906123d8565b610f85565b60405161041f93929190612c73565b60405180910390f35b348015610433575f80fd5b5061044e60048036038101906104499190612ca8565b610fc4565b60405161045b91906123bf565b60405180910390f35b34801561046f575f80fd5b5061048a60048036038101906104859190612ce6565b611052565b005b348015610497575f80fd5b506104b260048036038101906104ad9190612d79565b6110b4565b005b5f805f8381526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f7fd9b67a26000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806105d357507f0e89341c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806105e357506105e282611138565b5b9050919050565b6060600280546105f990612dd1565b80601f016020809104026020016040519081016040528092919081815260200182805461062590612dd1565b80156106705780601f1061064757610100808354040283529160200191610670565b820191905f5260205f20905b81548152906001019060200180831161065357829003601f168201915b50505050509050919050565b610685816111a1565b6106c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106bb90612e4b565b60405180910390fd5b5f6106cf33856104b4565b1161070f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161070690612ed9565b60405180910390fd5b6040518060600160405280610735670de0b6b3a76400008561122d90919063ffffffff16565b815260200182600281111561074d5761074c612c00565b5b81526020016001151581525060095f8581526020019081526020015f205f820151815f01556020820151816001015f6101000a81548160ff0219169083600281111561079c5761079b612c00565b5b021790555060408201518160010160016101000a81548160ff021916908315150217905550905050505050565b5f805f6107f460646107e66006548761122d90919063ffffffff16565b61124290919063ffffffff16565b905060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168192509250509250929050565b5f61082e611257565b90508073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161415801561087357506108718682610fc4565b155b156108b75780866040517fe237d9220000000000000000000000000000000000000000000000000000000081526004016108ae929190612ef7565b60405180910390fd5b6108c4868686868661125e565b505050505050565b6060815183511461091857815183516040517f5b05999100000000000000000000000000000000000000000000000000000000815260040161090f929190612f1e565b60405180910390fd5b5f835167ffffffffffffffff81111561093457610933612598565b5b6040519080825280602002602001820160405280156109625781602001602082028036833780820191505090505b5090505f5b84518110156109c85761099e610986828761135290919063ffffffff16565b610999838761136590919063ffffffff16565b6104b4565b8282815181106109b1576109b0612f45565b5b602002602001018181525050806001019050610967565b508091505092915050565b6109db611378565b8060068190555050565b6109ed611378565b6109f65f6113ff565b565b610a00611378565b610a3c60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683600160405180602001604052805f8152506114c2565b610a4581611557565b5050565b5f60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60095f8281526020019081526020015f2060010160019054906101000a900460ff16610ad2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ac990612fbc565b60405180910390fd5b5f610add33836104b4565b11610b1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b149061304a565b60405180910390fd5b5f60095f8381526020019081526020015f2060010160016101000a81548160ff02191690831515021790555050565b610b54611378565b8060075f6101000a81548160ff02191690831515021790555050565b610b82610b7b611257565b838361156a565b5050565b610b8e611378565b5f610b9933836104b4565b11610bd9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd0906130d8565b60405180910390fd5b610bf5338383600160405180602001604052805f8152506116d3565b5050565b610c016117d9565b60095f8281526020019081526020015f2060010160019054906101000a900460ff16610c62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5990613140565b60405180910390fd5b5f60095f8381526020019081526020015f206040518060600160405290815f8201548152602001600182015f9054906101000a900460ff166002811115610cac57610cab612c00565b5b6002811115610cbe57610cbd612c00565b5b81526020016001820160019054906101000a900460ff16151515158152505090505f60095f8481526020019081526020015f205f015490505f60095f8581526020019081526020015f206001015f9054906101000a900460ff1690505f60016002811115610d2f57610d2e612c00565b5b826002811115610d4257610d41612c00565b5b03610d8557610d7e610d52611828565b610d70670de0b6b3a7640000875f015161122d90919063ffffffff16565b61124290919063ffffffff16565b9050610e2b565b600280811115610d9857610d97612c00565b5b826002811115610dab57610daa612c00565b5b03610e26575f610de8610dbc6118dd565b610dda670de0b6b3a7640000885f015161122d90919063ffffffff16565b61124290919063ffffffff16565b9050610e1e610df5611828565b610e10670de0b6b3a76400008461122d90919063ffffffff16565b61124290919063ffffffff16565b915050610e2a565b8290505b5b803414610e6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e64906131a8565b60405180910390fd5b5f610e966064610e886006548561122d90919063ffffffff16565b61124290919063ffffffff16565b90505f610eac828461199190919063ffffffff16565b905060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8390811502906040515f60405180830381858888f19350505050158015610f12573d5f803e3d5ffd5b508773ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015610f56573d5f803e3d5ffd5b50610f73883389600160405180602001604052805f8152506116d3565b505050505050610f816119a6565b5050565b6009602052805f5260405f205f91509050805f015490806001015f9054906101000a900460ff16908060010160019054906101000a900460ff16905083565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b60075f9054906101000a900460ff166110a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109790613210565b60405180910390fd5b6110ad85858585856119b0565b5050505050565b6110bc611378565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361112c575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016111239190612b54565b60405180910390fd5b611135816113ff565b50565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f8060028111156111b5576111b4612c00565b5b8260028111156111c8576111c7612c00565b5b14806111f85750600160028111156111e3576111e2612c00565b5b8260028111156111f6576111f5612c00565b5b145b80611226575060028081111561121157611210612c00565b5b82600281111561122457611223612c00565b5b145b9050919050565b5f818361123a919061325b565b905092915050565b5f818361124f91906132c9565b905092915050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036112ce575f6040517f57f447ce0000000000000000000000000000000000000000000000000000000081526004016112c59190612b54565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff160361133e575f6040517f01a835140000000000000000000000000000000000000000000000000000000081526004016113359190612b54565b60405180910390fd5b61134b8585858585611a57565b5050505050565b5f60208202602084010151905092915050565b5f60208202602084010151905092915050565b611380611257565b73ffffffffffffffffffffffffffffffffffffffff1661139e610a49565b73ffffffffffffffffffffffffffffffffffffffff16146113fd576113c1611257565b6040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016113f49190612b54565b60405180910390fd5b565b5f60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611532575f6040517f57f447ce0000000000000000000000000000000000000000000000000000000081526004016115299190612b54565b60405180910390fd5b5f8061153e8585611b03565b9150915061154f5f87848487611a57565b505050505050565b80600290816115669190613496565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036115da575f6040517fced3e1000000000000000000000000000000000000000000000000000000000081526004016115d19190612b54565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516116c691906123bf565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611743575f6040517f57f447ce00000000000000000000000000000000000000000000000000000000815260040161173a9190612b54565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036117b3575f6040517f01a835140000000000000000000000000000000000000000000000000000000081526004016117aa9190612b54565b60405180910390fd5b5f806117bf8585611b03565b915091506117d08787848487611a57565b50505050505050565b60026004540361181e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611815906135af565b60405180910390fd5b6002600481905550565b5f80600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa158015611895573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118b99190613653565b5050509150506118d76402540be4008261122d90919063ffffffff16565b91505090565b5f8060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa158015611949573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061196d9190613653565b50505091505061198b6402540be4008261122d90919063ffffffff16565b91505090565b5f818361199e91906136ca565b905092915050565b6001600481905550565b5f6119b9611257565b90508073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16141580156119fe57506119fc8682610fc4565b155b15611a425780866040517fe237d922000000000000000000000000000000000000000000000000000000008152600401611a39929190612ef7565b60405180910390fd5b611a4f86868686866116d3565b505050505050565b611a6385858585611b33565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614611afc575f611a9f611257565b90506001845103611aeb575f611abe5f8661136590919063ffffffff16565b90505f611ad45f8661136590919063ffffffff16565b9050611ae4838989858589611ec3565b5050611afa565b611af9818787878787612072565b5b505b5050505050565b60608060405191506001825283602083015260408201905060018152826020820152604081016040529250929050565b8051825114611b7d57815181516040517f5b059991000000000000000000000000000000000000000000000000000000008152600401611b74929190612f1e565b60405180910390fd5b5f611b86611257565b90505f5b8351811015611d82575f611ba7828661136590919063ffffffff16565b90505f611bbd838661136590919063ffffffff16565b90505f73ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614611ce0575f805f8481526020019081526020015f205f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015611c8c57888183856040517f03dee4c5000000000000000000000000000000000000000000000000000000008152600401611c8394939291906136fd565b60405180910390fd5b8181035f808581526020019081526020015f205f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614611d7557805f808481526020019081526020015f205f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611d6d9190613740565b925050819055505b5050806001019050611b8a565b506001835103611e3d575f611da05f8561136590919063ffffffff16565b90505f611db65f8561136590919063ffffffff16565b90508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628585604051611e2e929190612f1e565b60405180910390a45050611ebc565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8686604051611eb3929190613773565b60405180910390a45b5050505050565b5f8473ffffffffffffffffffffffffffffffffffffffff163b111561206a578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b8152600401611f239594939291906137fa565b6020604051808303815f875af1925050508015611f5e57506040513d601f19601f82011682018060405250810190611f5b9190613866565b60015b611fdf573d805f8114611f8c576040519150601f19603f3d011682016040523d82523d5f602084013e611f91565b606091505b505f815103611fd757846040517f57f447ce000000000000000000000000000000000000000000000000000000008152600401611fce9190612b54565b60405180910390fd5b805181602001fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161461206857846040517f57f447ce00000000000000000000000000000000000000000000000000000000815260040161205f9190612b54565b60405180910390fd5b505b505050505050565b5f8473ffffffffffffffffffffffffffffffffffffffff163b1115612219578373ffffffffffffffffffffffffffffffffffffffff1663bc197c8187878686866040518663ffffffff1660e01b81526004016120d2959493929190613891565b6020604051808303815f875af192505050801561210d57506040513d601f19601f8201168201806040525081019061210a9190613866565b60015b61218e573d805f811461213b576040519150601f19603f3d011682016040523d82523d5f602084013e612140565b606091505b505f81510361218657846040517f57f447ce00000000000000000000000000000000000000000000000000000000815260040161217d9190612b54565b60405180910390fd5b805181602001fd5b63bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161461221757846040517f57f447ce00000000000000000000000000000000000000000000000000000000815260040161220e9190612b54565b60405180910390fd5b505b505050505050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61225b82612232565b9050919050565b61226b81612251565b8114612275575f80fd5b50565b5f8135905061228681612262565b92915050565b5f819050919050565b61229e8161228c565b81146122a8575f80fd5b50565b5f813590506122b981612295565b92915050565b5f80604083850312156122d5576122d461222a565b5b5f6122e285828601612278565b92505060206122f3858286016122ab565b9150509250929050565b6123068161228c565b82525050565b5f60208201905061231f5f8301846122fd565b92915050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61235981612325565b8114612363575f80fd5b50565b5f8135905061237481612350565b92915050565b5f6020828403121561238f5761238e61222a565b5b5f61239c84828501612366565b91505092915050565b5f8115159050919050565b6123b9816123a5565b82525050565b5f6020820190506123d25f8301846123b0565b92915050565b5f602082840312156123ed576123ec61222a565b5b5f6123fa848285016122ab565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561243a57808201518184015260208101905061241f565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61245f82612403565b612469818561240d565b935061247981856020860161241d565b61248281612445565b840191505092915050565b5f6020820190508181035f8301526124a58184612455565b905092915050565b600381106124b9575f80fd5b50565b5f813590506124ca816124ad565b92915050565b5f805f606084860312156124e7576124e661222a565b5b5f6124f4868287016122ab565b9350506020612505868287016122ab565b9250506040612516868287016124bc565b9150509250925092565b5f80604083850312156125365761253561222a565b5b5f612543858286016122ab565b9250506020612554858286016122ab565b9150509250929050565b61256781612251565b82525050565b5f6040820190506125805f83018561255e565b61258d60208301846122fd565b9392505050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6125ce82612445565b810181811067ffffffffffffffff821117156125ed576125ec612598565b5b80604052505050565b5f6125ff612221565b905061260b82826125c5565b919050565b5f67ffffffffffffffff82111561262a57612629612598565b5b602082029050602081019050919050565b5f80fd5b5f61265161264c84612610565b6125f6565b905080838252602082019050602084028301858111156126745761267361263b565b5b835b8181101561269d578061268988826122ab565b845260208401935050602081019050612676565b5050509392505050565b5f82601f8301126126bb576126ba612594565b5b81356126cb84826020860161263f565b91505092915050565b5f80fd5b5f67ffffffffffffffff8211156126f2576126f1612598565b5b6126fb82612445565b9050602081019050919050565b828183375f83830152505050565b5f612728612723846126d8565b6125f6565b905082815260208101848484011115612744576127436126d4565b5b61274f848285612708565b509392505050565b5f82601f83011261276b5761276a612594565b5b813561277b848260208601612716565b91505092915050565b5f805f805f60a0868803121561279d5761279c61222a565b5b5f6127aa88828901612278565b95505060206127bb88828901612278565b945050604086013567ffffffffffffffff8111156127dc576127db61222e565b5b6127e8888289016126a7565b935050606086013567ffffffffffffffff8111156128095761280861222e565b5b612815888289016126a7565b925050608086013567ffffffffffffffff8111156128365761283561222e565b5b61284288828901612757565b9150509295509295909350565b5f67ffffffffffffffff82111561286957612868612598565b5b602082029050602081019050919050565b5f61288c6128878461284f565b6125f6565b905080838252602082019050602084028301858111156128af576128ae61263b565b5b835b818110156128d857806128c48882612278565b8452602084019350506020810190506128b1565b5050509392505050565b5f82601f8301126128f6576128f5612594565b5b813561290684826020860161287a565b91505092915050565b5f80604083850312156129255761292461222a565b5b5f83013567ffffffffffffffff8111156129425761294161222e565b5b61294e858286016128e2565b925050602083013567ffffffffffffffff81111561296f5761296e61222e565b5b61297b858286016126a7565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6129b78161228c565b82525050565b5f6129c883836129ae565b60208301905092915050565b5f602082019050919050565b5f6129ea82612985565b6129f4818561298f565b93506129ff8361299f565b805f5b83811015612a2f578151612a1688826129bd565b9750612a21836129d4565b925050600181019050612a02565b5085935050505092915050565b5f6020820190508181035f830152612a5481846129e0565b905092915050565b5f67ffffffffffffffff821115612a7657612a75612598565b5b612a7f82612445565b9050602081019050919050565b5f612a9e612a9984612a5c565b6125f6565b905082815260208101848484011115612aba57612ab96126d4565b5b612ac5848285612708565b509392505050565b5f82601f830112612ae157612ae0612594565b5b8135612af1848260208601612a8c565b91505092915050565b5f8060408385031215612b1057612b0f61222a565b5b5f612b1d858286016122ab565b925050602083013567ffffffffffffffff811115612b3e57612b3d61222e565b5b612b4a85828601612acd565b9150509250929050565b5f602082019050612b675f83018461255e565b92915050565b612b76816123a5565b8114612b80575f80fd5b50565b5f81359050612b9181612b6d565b92915050565b5f60208284031215612bac57612bab61222a565b5b5f612bb984828501612b83565b91505092915050565b5f8060408385031215612bd857612bd761222a565b5b5f612be585828601612278565b9250506020612bf685828601612b83565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b60038110612c3e57612c3d612c00565b5b50565b5f819050612c4e82612c2d565b919050565b5f612c5d82612c41565b9050919050565b612c6d81612c53565b82525050565b5f606082019050612c865f8301866122fd565b612c936020830185612c64565b612ca060408301846123b0565b949350505050565b5f8060408385031215612cbe57612cbd61222a565b5b5f612ccb85828601612278565b9250506020612cdc85828601612278565b9150509250929050565b5f805f805f60a08688031215612cff57612cfe61222a565b5b5f612d0c88828901612278565b9550506020612d1d88828901612278565b9450506040612d2e888289016122ab565b9350506060612d3f888289016122ab565b925050608086013567ffffffffffffffff811115612d6057612d5f61222e565b5b612d6c88828901612757565b9150509295509295909350565b5f60208284031215612d8e57612d8d61222a565b5b5f612d9b84828501612278565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680612de857607f821691505b602082108103612dfb57612dfa612da4565b5b50919050565b7f496e76616c69642063757272656e6379207479706500000000000000000000005f82015250565b5f612e3560158361240d565b9150612e4082612e01565b602082019050919050565b5f6020820190508181035f830152612e6281612e29565b9050919050565b7f596f75206d757374206f776e2074686520746f6b656e20746f206c69737420695f8201527f7400000000000000000000000000000000000000000000000000000000000000602082015250565b5f612ec360218361240d565b9150612ece82612e69565b604082019050919050565b5f6020820190508181035f830152612ef081612eb7565b9050919050565b5f604082019050612f0a5f83018561255e565b612f17602083018461255e565b9392505050565b5f604082019050612f315f8301856122fd565b612f3e60208301846122fd565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f546f6b656e206973206e6f74206c6973746564000000000000000000000000005f82015250565b5f612fa660138361240d565b9150612fb182612f72565b602082019050919050565b5f6020820190508181035f830152612fd381612f9a565b9050919050565b7f596f75206d757374206f776e2074686520746f6b656e20746f2064656c6973745f8201527f2069740000000000000000000000000000000000000000000000000000000000602082015250565b5f61303460238361240d565b915061303f82612fda565b604082019050919050565b5f6020820190508181035f83015261306181613028565b9050919050565b7f596f75206d757374206f776e2074686520746f6b656e20746f207472616e73665f8201527f6572206974000000000000000000000000000000000000000000000000000000602082015250565b5f6130c260258361240d565b91506130cd82613068565b604082019050919050565b5f6020820190508181035f8301526130ef816130b6565b9050919050565b7f546f6b656e206e6f74206c697374656420666f722073616c65000000000000005f82015250565b5f61312a60198361240d565b9150613135826130f6565b602082019050919050565b5f6020820190508181035f8301526131578161311e565b9050919050565b7f496e636f72726563742045544820616d6f756e742073656e74000000000000005f82015250565b5f61319260198361240d565b915061319d8261315e565b602082019050919050565b5f6020820190508181035f8301526131bf81613186565b9050919050565b7f5472616e7366657273206172652063757272656e746c792064697361626c65645f82015250565b5f6131fa60208361240d565b9150613205826131c6565b602082019050919050565b5f6020820190508181035f830152613227816131ee565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6132658261228c565b91506132708361228c565b925082820261327e8161228c565b915082820484148315176132955761329461322e565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6132d38261228c565b91506132de8361228c565b9250826132ee576132ed61329c565b5b828204905092915050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026133557fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261331a565b61335f868361331a565b95508019841693508086168417925050509392505050565b5f819050919050565b5f61339a6133956133908461228c565b613377565b61228c565b9050919050565b5f819050919050565b6133b383613380565b6133c76133bf826133a1565b848454613326565b825550505050565b5f90565b6133db6133cf565b6133e68184846133aa565b505050565b5b81811015613409576133fe5f826133d3565b6001810190506133ec565b5050565b601f82111561344e5761341f816132f9565b6134288461330b565b81016020851015613437578190505b61344b6134438561330b565b8301826133eb565b50505b505050565b5f82821c905092915050565b5f61346e5f1984600802613453565b1980831691505092915050565b5f613486838361345f565b9150826002028217905092915050565b61349f82612403565b67ffffffffffffffff8111156134b8576134b7612598565b5b6134c28254612dd1565b6134cd82828561340d565b5f60209050601f8311600181146134fe575f84156134ec578287015190505b6134f6858261347b565b86555061355d565b601f19841661350c866132f9565b5f5b828110156135335784890151825560018201915060208501945060208101905061350e565b86831015613550578489015161354c601f89168261345f565b8355505b6001600288020188555050505b505050505050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c005f82015250565b5f613599601f8361240d565b91506135a482613565565b602082019050919050565b5f6020820190508181035f8301526135c68161358d565b9050919050565b5f69ffffffffffffffffffff82169050919050565b6135eb816135cd565b81146135f5575f80fd5b50565b5f81519050613606816135e2565b92915050565b5f819050919050565b61361e8161360c565b8114613628575f80fd5b50565b5f8151905061363981613615565b92915050565b5f8151905061364d81612295565b92915050565b5f805f805f60a0868803121561366c5761366b61222a565b5b5f613679888289016135f8565b955050602061368a8882890161362b565b945050604061369b8882890161363f565b93505060606136ac8882890161363f565b92505060806136bd888289016135f8565b9150509295509295909350565b5f6136d48261228c565b91506136df8361228c565b92508282039050818111156136f7576136f661322e565b5b92915050565b5f6080820190506137105f83018761255e565b61371d60208301866122fd565b61372a60408301856122fd565b61373760608301846122fd565b95945050505050565b5f61374a8261228c565b91506137558361228c565b925082820190508082111561376d5761376c61322e565b5b92915050565b5f6040820190508181035f83015261378b81856129e0565b9050818103602083015261379f81846129e0565b90509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f6137cc826137a8565b6137d681856137b2565b93506137e681856020860161241d565b6137ef81612445565b840191505092915050565b5f60a08201905061380d5f83018861255e565b61381a602083018761255e565b61382760408301866122fd565b61383460608301856122fd565b818103608083015261384681846137c2565b90509695505050505050565b5f8151905061386081612350565b92915050565b5f6020828403121561387b5761387a61222a565b5b5f61388884828501613852565b91505092915050565b5f60a0820190506138a45f83018861255e565b6138b1602083018761255e565b81810360408301526138c381866129e0565b905081810360608301526138d781856129e0565b905081810360808301526138eb81846137c2565b9050969550505050505056fea2646970667358221220e4eb5de54d849892733c833c2d1d2909009b3766b41d02e064c658031488d06b64736f6c63430008180033000000000000000000000000fd8cd1da32884e57bc5196d421318fbf9c3e0d4a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000694aa1769357215de4fac081bf1f309adc3253060000000000000000000000001a81afb8146aeffcfc5e50e8479e826e7d55b910