60806040523480156200001157600080fd5b506040518060e0016040528060ba815260200162003cff60ba91396200003d81620000bd60201b60201c565b50620000536000801b33620000d960201b60201c565b620000857f7804d923f43a17d325d77e781528e0793b2edd9890ab45fc64efd7b4b427744c33620000d960201b60201c565b620000b77f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a633620000d960201b60201c565b62000353565b8060029080519060200190620000d59291906200023e565b5050565b620000eb8282620001cb60201b60201c565b620001c75760016003600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200016c6200023660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b60006003600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600033905090565b8280546200024c906200031d565b90600052602060002090601f016020900481019282620002705760008555620002bc565b82601f106200028b57805160ff1916838001178555620002bc565b82800160010185558215620002bc579182015b82811115620002bb5782518255916020019190600101906200029e565b5b509050620002cb9190620002cf565b5090565b5b80821115620002ea576000816000905550600101620002d0565b5090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200033657607f821691505b602082108114156200034d576200034c620002ee565b5b50919050565b61399c80620003636000396000f3fe608060405234801561001057600080fd5b50600436106101205760003560e01c80634e1273f4116100ad578063a22cb46511610071578063a22cb46514610329578063d539139314610345578063d547741f14610363578063e985e9c51461037f578063f242432a146103af57610120565b80634e1273f414610271578063731133e9146102a15780637f345710146102bd57806391d14854146102db578063a217fddf1461030b57610120565b80631f7fdffa116100f45780631f7fdffa146101d1578063248a9ca3146101ed5780632eb2c2d61461021d5780632f2ff15d1461023957806336568abe1461025557610120565b8062fdd58e1461012557806301ffc9a71461015557806302fe5305146101855780630e89341c146101a1575b600080fd5b61013f600480360381019061013a919061220b565b6103cb565b60405161014c919061225a565b60405180910390f35b61016f600480360381019061016a91906122cd565b610494565b60405161017c9190612315565b60405180910390f35b61019f600480360381019061019a9190612476565b6104a6565b005b6101bb60048036038101906101b691906124bf565b6104dd565b6040516101c89190612574565b60405180910390f35b6101eb60048036038101906101e691906126ff565b610571565b005b610207600480360381019061020291906127f0565b6105ae565b604051610214919061282c565b60405180910390f35b61023760048036038101906102329190612847565b6105ce565b005b610253600480360381019061024e9190612916565b61066f565b005b61026f600480360381019061026a9190612916565b610690565b005b61028b60048036038101906102869190612a19565b610713565b6040516102989190612b4f565b60405180910390f35b6102bb60048036038101906102b69190612b71565b61082c565b005b6102c5610869565b6040516102d2919061282c565b60405180910390f35b6102f560048036038101906102f09190612916565b61088d565b6040516103029190612315565b60405180910390f35b6103136108f8565b604051610320919061282c565b60405180910390f35b610343600480360381019061033e9190612c20565b6108ff565b005b61034d610915565b60405161035a919061282c565b60405180910390f35b61037d60048036038101906103789190612916565b610939565b005b61039960048036038101906103949190612c60565b61095a565b6040516103a69190612315565b60405180910390f35b6103c960048036038101906103c49190612ca0565b6109ee565b005b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561043c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043390612da9565b60405180910390fd5b60008083815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600061049f82610a8f565b9050919050565b7f7804d923f43a17d325d77e781528e0793b2edd9890ab45fc64efd7b4b427744c6104d081610b09565b6104d982610b1d565b5050565b6060600280546104ec90612df8565b80601f016020809104026020016040519081016040528092919081815260200182805461051890612df8565b80156105655780601f1061053a57610100808354040283529160200191610565565b820191906000526020600020905b81548152906001019060200180831161054857829003601f168201915b50505050509050919050565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a661059b81610b09565b6105a785858585610b37565b5050505050565b600060036000838152602001908152602001600020600101549050919050565b6105d6610d64565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16148061061c575061061b85610616610d64565b61095a565b5b61065b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161065290612e9c565b60405180910390fd5b6106688585858585610d6c565b5050505050565b610678826105ae565b61068181610b09565b61068b838361108e565b505050565b610698610d64565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610705576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fc90612f2e565b60405180910390fd5b61070f828261116f565b5050565b60608151835114610759576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075090612fc0565b60405180910390fd5b6000835167ffffffffffffffff8111156107765761077561234b565b5b6040519080825280602002602001820160405280156107a45781602001602082028036833780820191505090505b50905060005b8451811015610821576107f18582815181106107c9576107c8612fe0565b5b60200260200101518583815181106107e4576107e3612fe0565b5b60200260200101516103cb565b82828151811061080457610803612fe0565b5b6020026020010181815250508061081a9061303e565b90506107aa565b508091505092915050565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a661085681610b09565b61086285858585611251565b5050505050565b7f7804d923f43a17d325d77e781528e0793b2edd9890ab45fc64efd7b4b427744c81565b60006003600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000801b81565b61091161090a610d64565b8383611402565b5050565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b610942826105ae565b61094b81610b09565b610955838361116f565b505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6109f6610d64565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480610a3c5750610a3b85610a36610d64565b61095a565b5b610a7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7290612e9c565b60405180910390fd5b610a88858585858561156f565b5050505050565b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610b025750610b018261180b565b5b9050919050565b610b1a81610b15610d64565b6118ed565b50565b8060029080519060200190610b339291906120c0565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415610ba7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9e906130f9565b60405180910390fd5b8151835114610beb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be29061318b565b60405180910390fd5b6000610bf5610d64565b9050610c0681600087878787611972565b60005b8451811015610cbf57838181518110610c2557610c24612fe0565b5b6020026020010151600080878481518110610c4357610c42612fe0565b5b6020026020010151815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610ca591906131ab565b925050819055508080610cb79061303e565b915050610c09565b508473ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051610d37929190613201565b60405180910390a4610d4e8160008787878761197a565b610d5d81600087878787611982565b5050505050565b600033905090565b8151835114610db0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da79061318b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415610e20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e17906132aa565b60405180910390fd5b6000610e2a610d64565b9050610e3a818787878787611972565b60005b8451811015610feb576000858281518110610e5b57610e5a612fe0565b5b602002602001015190506000858381518110610e7a57610e79612fe0565b5b60200260200101519050600080600084815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610f1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f129061333c565b60405180910390fd5b81810360008085815260200190815260200160002060008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160008085815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610fd091906131ab565b9250508190555050505080610fe49061303e565b9050610e3d565b508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051611062929190613201565b60405180910390a461107881878787878761197a565b611086818787878787611982565b505050505050565b611098828261088d565b61116b5760016003600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611110610d64565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b611179828261088d565b1561124d5760006003600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506111f2610d64565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156112c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b8906130f9565b60405180910390fd5b60006112cb610d64565b905060006112d885611b69565b905060006112e585611b69565b90506112f683600089858589611972565b8460008088815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461135591906131ab565b925050819055508673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6289896040516113d392919061335c565b60405180910390a46113ea8360008985858961197a565b6113f983600089898989611be3565b50505050505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611471576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611468906133f7565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516115629190612315565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156115df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d6906132aa565b60405180910390fd5b60006115e9610d64565b905060006115f685611b69565b9050600061160385611b69565b9050611613838989858589611972565b600080600088815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050858110156116aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a19061333c565b60405180910390fd5b85810360008089815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508560008089815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461175f91906131ab565b925050819055508773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628a8a6040516117dc92919061335c565b60405180910390a46117f2848a8a86868a61197a565b611800848a8a8a8a8a611be3565b505050505050505050565b60007fd9b67a26000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806118d657507f0e89341c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806118e657506118e582611dca565b5b9050919050565b6118f7828261088d565b61196e5761190481611e34565b6119128360001c6020611e61565b6040516020016119239291906134eb565b6040516020818303038152906040526040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119659190612574565b60405180910390fd5b5050565b505050505050565b505050505050565b6119a18473ffffffffffffffffffffffffffffffffffffffff1661209d565b15611b61578373ffffffffffffffffffffffffffffffffffffffff1663bc197c8187878686866040518663ffffffff1660e01b81526004016119e7959493929190613589565b602060405180830381600087803b158015611a0157600080fd5b505af1925050508015611a3257506040513d601f19601f82011682018060405250810190611a2f9190613606565b60015b611ad857611a3e613640565b806308c379a01415611a9b5750611a53613662565b80611a5e5750611a9d565b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a929190612574565b60405180910390fd5b505b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611acf9061376a565b60405180910390fd5b63bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614611b5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b56906137fc565b60405180910390fd5b505b505050505050565b60606000600167ffffffffffffffff811115611b8857611b8761234b565b5b604051908082528060200260200182016040528015611bb65781602001602082028036833780820191505090505b5090508281600081518110611bce57611bcd612fe0565b5b60200260200101818152505080915050919050565b611c028473ffffffffffffffffffffffffffffffffffffffff1661209d565b15611dc2578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b8152600401611c4895949392919061381c565b602060405180830381600087803b158015611c6257600080fd5b505af1925050508015611c9357506040513d601f19601f82011682018060405250810190611c909190613606565b60015b611d3957611c9f613640565b806308c379a01415611cfc5750611cb4613662565b80611cbf5750611cfe565b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cf39190612574565b60405180910390fd5b505b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d309061376a565b60405180910390fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614611dc0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611db7906137fc565b60405180910390fd5b505b505050505050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6060611e5a8273ffffffffffffffffffffffffffffffffffffffff16601460ff16611e61565b9050919050565b606060006002836002611e749190613876565b611e7e91906131ab565b67ffffffffffffffff811115611e9757611e9661234b565b5b6040519080825280601f01601f191660200182016040528015611ec95781602001600182028036833780820191505090505b5090507f300000000000000000000000000000000000000000000000000000000000000081600081518110611f0157611f00612fe0565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110611f6557611f64612fe0565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060006001846002611fa59190613876565b611faf91906131ab565b90505b600181111561204f577f3031323334353637383961626364656600000000000000000000000000000000600f861660108110611ff157611ff0612fe0565b5b1a60f81b82828151811061200857612007612fe0565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c945080612048906138d0565b9050611fb2565b5060008414612093576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208a90613946565b60405180910390fd5b8091505092915050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b8280546120cc90612df8565b90600052602060002090601f0160209004810192826120ee5760008555612135565b82601f1061210757805160ff1916838001178555612135565b82800160010185558215612135579182015b82811115612134578251825591602001919060010190612119565b5b5090506121429190612146565b5090565b5b8082111561215f576000816000905550600101612147565b5090565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006121a282612177565b9050919050565b6121b281612197565b81146121bd57600080fd5b50565b6000813590506121cf816121a9565b92915050565b6000819050919050565b6121e8816121d5565b81146121f357600080fd5b50565b600081359050612205816121df565b92915050565b600080604083850312156122225761222161216d565b5b6000612230858286016121c0565b9250506020612241858286016121f6565b9150509250929050565b612254816121d5565b82525050565b600060208201905061226f600083018461224b565b92915050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6122aa81612275565b81146122b557600080fd5b50565b6000813590506122c7816122a1565b92915050565b6000602082840312156122e3576122e261216d565b5b60006122f1848285016122b8565b91505092915050565b60008115159050919050565b61230f816122fa565b82525050565b600060208201905061232a6000830184612306565b92915050565b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6123838261233a565b810181811067ffffffffffffffff821117156123a2576123a161234b565b5b80604052505050565b60006123b5612163565b90506123c1828261237a565b919050565b600067ffffffffffffffff8211156123e1576123e061234b565b5b6123ea8261233a565b9050602081019050919050565b82818337600083830152505050565b6000612419612414846123c6565b6123ab565b90508281526020810184848401111561243557612434612335565b5b6124408482856123f7565b509392505050565b600082601f83011261245d5761245c612330565b5b813561246d848260208601612406565b91505092915050565b60006020828403121561248c5761248b61216d565b5b600082013567ffffffffffffffff8111156124aa576124a9612172565b5b6124b684828501612448565b91505092915050565b6000602082840312156124d5576124d461216d565b5b60006124e3848285016121f6565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561252657808201518184015260208101905061250b565b83811115612535576000848401525b50505050565b6000612546826124ec565b61255081856124f7565b9350612560818560208601612508565b6125698161233a565b840191505092915050565b6000602082019050818103600083015261258e818461253b565b905092915050565b600067ffffffffffffffff8211156125b1576125b061234b565b5b602082029050602081019050919050565b600080fd5b60006125da6125d584612596565b6123ab565b905080838252602082019050602084028301858111156125fd576125fc6125c2565b5b835b81811015612626578061261288826121f6565b8452602084019350506020810190506125ff565b5050509392505050565b600082601f83011261264557612644612330565b5b81356126558482602086016125c7565b91505092915050565b600067ffffffffffffffff8211156126795761267861234b565b5b6126828261233a565b9050602081019050919050565b60006126a261269d8461265e565b6123ab565b9050828152602081018484840111156126be576126bd612335565b5b6126c98482856123f7565b509392505050565b600082601f8301126126e6576126e5612330565b5b81356126f684826020860161268f565b91505092915050565b600080600080608085870312156127195761271861216d565b5b6000612727878288016121c0565b945050602085013567ffffffffffffffff81111561274857612747612172565b5b61275487828801612630565b935050604085013567ffffffffffffffff81111561277557612774612172565b5b61278187828801612630565b925050606085013567ffffffffffffffff8111156127a2576127a1612172565b5b6127ae878288016126d1565b91505092959194509250565b6000819050919050565b6127cd816127ba565b81146127d857600080fd5b50565b6000813590506127ea816127c4565b92915050565b6000602082840312156128065761280561216d565b5b6000612814848285016127db565b91505092915050565b612826816127ba565b82525050565b6000602082019050612841600083018461281d565b92915050565b600080600080600060a086880312156128635761286261216d565b5b6000612871888289016121c0565b9550506020612882888289016121c0565b945050604086013567ffffffffffffffff8111156128a3576128a2612172565b5b6128af88828901612630565b935050606086013567ffffffffffffffff8111156128d0576128cf612172565b5b6128dc88828901612630565b925050608086013567ffffffffffffffff8111156128fd576128fc612172565b5b612909888289016126d1565b9150509295509295909350565b6000806040838503121561292d5761292c61216d565b5b600061293b858286016127db565b925050602061294c858286016121c0565b9150509250929050565b600067ffffffffffffffff8211156129715761297061234b565b5b602082029050602081019050919050565b600061299561299084612956565b6123ab565b905080838252602082019050602084028301858111156129b8576129b76125c2565b5b835b818110156129e157806129cd88826121c0565b8452602084019350506020810190506129ba565b5050509392505050565b600082601f830112612a00576129ff612330565b5b8135612a10848260208601612982565b91505092915050565b60008060408385031215612a3057612a2f61216d565b5b600083013567ffffffffffffffff811115612a4e57612a4d612172565b5b612a5a858286016129eb565b925050602083013567ffffffffffffffff811115612a7b57612a7a612172565b5b612a8785828601612630565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612ac6816121d5565b82525050565b6000612ad88383612abd565b60208301905092915050565b6000602082019050919050565b6000612afc82612a91565b612b068185612a9c565b9350612b1183612aad565b8060005b83811015612b42578151612b298882612acc565b9750612b3483612ae4565b925050600181019050612b15565b5085935050505092915050565b60006020820190508181036000830152612b698184612af1565b905092915050565b60008060008060808587031215612b8b57612b8a61216d565b5b6000612b99878288016121c0565b9450506020612baa878288016121f6565b9350506040612bbb878288016121f6565b925050606085013567ffffffffffffffff811115612bdc57612bdb612172565b5b612be8878288016126d1565b91505092959194509250565b612bfd816122fa565b8114612c0857600080fd5b50565b600081359050612c1a81612bf4565b92915050565b60008060408385031215612c3757612c3661216d565b5b6000612c45858286016121c0565b9250506020612c5685828601612c0b565b9150509250929050565b60008060408385031215612c7757612c7661216d565b5b6000612c85858286016121c0565b9250506020612c96858286016121c0565b9150509250929050565b600080600080600060a08688031215612cbc57612cbb61216d565b5b6000612cca888289016121c0565b9550506020612cdb888289016121c0565b9450506040612cec888289016121f6565b9350506060612cfd888289016121f6565b925050608086013567ffffffffffffffff811115612d1e57612d1d612172565b5b612d2a888289016126d1565b9150509295509295909350565b7f455243313135353a2061646472657373207a65726f206973206e6f742061207660008201527f616c6964206f776e657200000000000000000000000000000000000000000000602082015250565b6000612d93602a836124f7565b9150612d9e82612d37565b604082019050919050565b60006020820190508181036000830152612dc281612d86565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612e1057607f821691505b60208210811415612e2457612e23612dc9565b5b50919050565b7f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60008201527f6572206f7220617070726f766564000000000000000000000000000000000000602082015250565b6000612e86602e836124f7565b9150612e9182612e2a565b604082019050919050565b60006020820190508181036000830152612eb581612e79565b9050919050565b7f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560008201527f20726f6c657320666f722073656c660000000000000000000000000000000000602082015250565b6000612f18602f836124f7565b9150612f2382612ebc565b604082019050919050565b60006020820190508181036000830152612f4781612f0b565b9050919050565b7f455243313135353a206163636f756e747320616e6420696473206c656e67746860008201527f206d69736d617463680000000000000000000000000000000000000000000000602082015250565b6000612faa6029836124f7565b9150612fb582612f4e565b604082019050919050565b60006020820190508181036000830152612fd981612f9d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613049826121d5565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561307c5761307b61300f565b5b600182019050919050565b7f455243313135353a206d696e7420746f20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b60006130e36021836124f7565b91506130ee82613087565b604082019050919050565b60006020820190508181036000830152613112816130d6565b9050919050565b7f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060008201527f6d69736d61746368000000000000000000000000000000000000000000000000602082015250565b60006131756028836124f7565b915061318082613119565b604082019050919050565b600060208201905081810360008301526131a481613168565b9050919050565b60006131b6826121d5565b91506131c1836121d5565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156131f6576131f561300f565b5b828201905092915050565b6000604082019050818103600083015261321b8185612af1565b9050818103602083015261322f8184612af1565b90509392505050565b7f455243313135353a207472616e7366657220746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006132946025836124f7565b915061329f82613238565b604082019050919050565b600060208201905081810360008301526132c381613287565b9050919050565b7f455243313135353a20696e73756666696369656e742062616c616e636520666f60008201527f72207472616e7366657200000000000000000000000000000000000000000000602082015250565b6000613326602a836124f7565b9150613331826132ca565b604082019050919050565b6000602082019050818103600083015261335581613319565b9050919050565b6000604082019050613371600083018561224b565b61337e602083018461224b565b9392505050565b7f455243313135353a2073657474696e6720617070726f76616c2073746174757360008201527f20666f722073656c660000000000000000000000000000000000000000000000602082015250565b60006133e16029836124f7565b91506133ec82613385565b604082019050919050565b60006020820190508181036000830152613410816133d4565b9050919050565b600081905092915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b6000613458601783613417565b915061346382613422565b601782019050919050565b6000613479826124ec565b6134838185613417565b9350613493818560208601612508565b80840191505092915050565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b60006134d5601183613417565b91506134e08261349f565b601182019050919050565b60006134f68261344b565b9150613502828561346e565b915061350d826134c8565b9150613519828461346e565b91508190509392505050565b61352e81612197565b82525050565b600081519050919050565b600082825260208201905092915050565b600061355b82613534565b613565818561353f565b9350613575818560208601612508565b61357e8161233a565b840191505092915050565b600060a08201905061359e6000830188613525565b6135ab6020830187613525565b81810360408301526135bd8186612af1565b905081810360608301526135d18185612af1565b905081810360808301526135e58184613550565b90509695505050505050565b600081519050613600816122a1565b92915050565b60006020828403121561361c5761361b61216d565b5b600061362a848285016135f1565b91505092915050565b60008160e01c9050919050565b600060033d111561365f5760046000803e61365c600051613633565b90505b90565b600060443d1015613672576136f5565b61367a612163565b60043d036004823e80513d602482011167ffffffffffffffff821117156136a25750506136f5565b808201805167ffffffffffffffff8111156136c057505050506136f5565b80602083010160043d0385018111156136dd5750505050506136f5565b6136ec8260200185018661237a565b82955050505050505b90565b7f455243313135353a207472616e7366657220746f206e6f6e2d4552433131353560008201527f526563656976657220696d706c656d656e746572000000000000000000000000602082015250565b60006137546034836124f7565b915061375f826136f8565b604082019050919050565b6000602082019050818103600083015261378381613747565b9050919050565b7f455243313135353a204552433131353552656365697665722072656a6563746560008201527f6420746f6b656e73000000000000000000000000000000000000000000000000602082015250565b60006137e66028836124f7565b91506137f18261378a565b604082019050919050565b60006020820190508181036000830152613815816137d9565b9050919050565b600060a0820190506138316000830188613525565b61383e6020830187613525565b61384b604083018661224b565b613858606083018561224b565b818103608083015261386a8184613550565b90509695505050505050565b6000613881826121d5565b915061388c836121d5565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156138c5576138c461300f565b5b828202905092915050565b60006138db826121d5565b915060008214156138ef576138ee61300f565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b60006139306020836124f7565b915061393b826138fa565b602082019050919050565b6000602082019050818103600083015261395f81613923565b905091905056fea26469706673582212202b437a133d2ffbe06e98f1a9787921dccfb1c15f5fc80e0d22cbc84aea4e779e64736f6c6343000809003368747470733a2f2f676174657761792e70696e6174612e636c6f75642f697066732f516d62546a4e6f576e34526d4d6164735055584d3779443675376b7978796133325a467a456f35425055484b784b3f5f676c3d312a6831697a7a642a5f67612a4d5467774f4445794e4451784c6a45324f446b774d446b304e44672e2a5f67615f35524d505847313454452a4d5459344f5445354d6a6b7a4e5334784c6a41754d5459344f5445354d6a6b304d7934314d6934774c6a412e