diff --git a/changelogs/unreleased/4628-shubham-pampattiwar b/changelogs/unreleased/4628-shubham-pampattiwar new file mode 100644 index 000000000..acb92c908 --- /dev/null +++ b/changelogs/unreleased/4628-shubham-pampattiwar @@ -0,0 +1 @@ +Add existingResourcePolicy to Restore API \ No newline at end of file diff --git a/config/crd/v1/bases/velero.io_restores.yaml b/config/crd/v1/bases/velero.io_restores.yaml index 09df605e5..508988801 100644 --- a/config/crd/v1/bases/velero.io_restores.yaml +++ b/config/crd/v1/bases/velero.io_restores.yaml @@ -53,6 +53,11 @@ spec: type: string nullable: true type: array + existingResourcePolicy: + description: ExistingResourcePolicy specifies the restore behaviour + for the kubernetes resource to be restored + nullable: true + type: string hooks: description: Hooks represent custom behaviors that should be executed during or post restore. diff --git a/config/crd/v1/crds/crds.go b/config/crd/v1/crds/crds.go index ebf635075..c3df834a2 100644 --- a/config/crd/v1/crds/crds.go +++ b/config/crd/v1/crds/crds.go @@ -36,7 +36,7 @@ var rawCRDs = [][]byte{ []byte("\x1f\x8b\b\x00\x00\x00\x00\x00\x00\xff\xc4YKs#\xb7\x11\xbe\xf3Wt\xad\x0f\x8a\xab\x96C\xdbI%)\xdev\xa58\xa5\xc4֪č.[{\x00\a\xcd!\xac\x19\x00\x010\xe42.\xff\xf7T\xe31\x9c\aHJ\xaa\xac3\x17\x89x4>4\xfa\xf150\x9b\xcf\xe73\xa6\xc5#\x1a+\x94\\\x02\xd3\x02\xbf8\x94\xf4\xcb\x16O\u007f\xb5\x85P\x8b\xdd\xf7\xb3'!\xf9\x12\xae[\xebT\xf3\x80V\xb5\xa6\xc4\x1b\xdc\b)\x9cPr֠c\x9c9\xb6\x9c\x010)\x95c\xd4l\xe9'@\xa9\xa43\xaa\xae\xd1\xcc+\x94\xc5S\xbb\xc6u+j\x8e\xc6\vOK\xef\xbe+\xfeR|7\x03(\r\xfa\xe9\x1fE\x83ֱF/A\xb6u=\x03\x90\xac\xc1%h\xc5w\xaan\x1b\\\xb3\xf2\xa9ն\xd8a\x8dF\x15Bͬƒ\x16\xad\x8cj\xf5\x12\x8e\x1dan\x04\x146s\xaf\xf8\xa3\x17\xf3ދ\xf1=\xb5\xb0\ue7f9ޟ\x84u~\x84\xae[\xc3\xea)\b\xdfi\x85\xacښ\x99I\xf7\f\xc0\x96J\xe3\x12\xee\b\x86f%\xf2\x19@ܻ\x875\aƹ\xd7&\xab\uf350\x0e\xcd5IHZ\x9c\x03G[\x1a\xa1\x9d\xd7ֽ\xe2\x10\x00B@\b\xd61\xd7Z\xb0m\xb9\x05f\xe1\x0e\xf7\x8b[yoTe\xd0\x06x\x00\xbfX%\xef\x99\xdb.\xa1\b\xc3\v\xbde\x16coP\xef\xcaw\xc4&w \xd0\xd6\x19!\xab\x1c\f:#\xd8oQ\x82\xdb\n\va\xb7\xb0g\x96\xe0\x18\xe7w\x99_\xd8\xf7wG<@pM\x06\xd0M\r\x108s\x98\x03\xd0\xe9\x13\xd4\x06\xdc\x16I\xf3\xde☐BV\xbe)\x9c\x048\x05k\xf4\x10\x91C\xab3\xc84\x96\x85V\xbc\x90I\xe8\x00\xd6ݨ\xf5\x92nh\xfc\xff\x1a\xd5\x00н⯀\xf2\xa2u\xc3\xe0\xc1\xaa\x8f\xfd\xa6K\v?\xa0u\xa2\x04\x83ZY\xe1\x949\x80\xe0(\x9d\xd8\b4\xb0Q\xa6o6' \xd0\xdc\xdbn\xd2\x00J\x94\xfe\x80Z\xbdB\x11\xd1oVN\x19V!\xfc\xa4J\x1fvȜ\r\x0e\xec\xd9nU[sX\xa7]\x03X\xa7Lָ\tq\x98\x15\xe5&\xb1#\x1f\x1b\xaey\x1a}Ov\n\xb2\xc5$@\x0ed\xbf\xab0\xef9\xa1{\xf7}\bU\xe5\x16\x1b\xb6\x8c#\x95F\xf9\xee\xfe\xf6\xf1\x8f\xabA3\x806J\xa3q\"\x85\xce\xf0\xf52F\xaf\x15\x86\xaa\xbe\"\x81a\x14pJ\x15h\x83\xfd\x856\xe4\x11C8\x0ea\xc9H\fZ\x94\xae\xaf\x92\xf4\xa9\r0\tj\xfd\v\x96\xae\x80\x15\x1a\x12\x93\x0e\xa6Tr\x87Ɓ\xc1RUR\xfc\xa7\x93m\xc9\xcciњ9\x8c\x11\xfc\xf8\xf9 +Y\r;V\xb7\xf8\x16\x98\xe4а\x03\x18\xa4U\xa0\x95=y~\x88-\xe0ge\x10\x84ܨ%l\x9d\xd3v\xb9XT¥LY\xaa\xa6i\xa5p\x87\x85Ozb\xdd:e\xec\x82\xe3\x0e\xeb\x85\x15՜\x99r+\x1c\x96\xae5\xb8`Z\xcc=t\xe9\xb3e\xd1\xf0oḼ\xf6j\x80ub\x18\xe1\xf3\x89\xec\xcc\tP*\x03a\x81ũa\x17GE\xa7P\xf4\xf0\xb7\xd5GHK\xfb\xc3\x18k\xdf\xeb\xfd8\xd1\x1e\x8f\x80\x14&\xe4\x06\xa3+o\x8cj\xbcL\x94\\+!\x9d\xffQ\xd6\x02\xe5X\xfd\xb6]7\xc2ѹ\xff\xbbE\xeb\xe8\xac\n\xb8\xf6\xf4\x81BS\xab\xc9ry\x01\xb7\x12\xaeY\x83\xf55\xb3\xf8\xd5\x0f\x804m\xe7\xa4\xd8\xe7\x1dA\x9f\xf9\x8c\a\a\xad\xf5:\x12=9q^#α\xd2X\xd2\xe9\x91\x02i\xa6؈\x18\xa1(p\xb2\xf1\xf0b 8\xef\xb8\xf4e\xa3\xd3x\xd0\b\xd9\xfbܜ\x84M\xf6bj\n\x98a\xe4D(@=\x8e\xb2d\x8e\x93\x1cac\x80-&\x12N\x1c\x03}Rq\xbc\xb0\x8f;\xc51\a\x9b\xa6\x82۲`\xadĭ(\x1e\xb5RNW\xa1O\xc9\x17\x01ӊ_\xc0\x15Wd`p\x83\x06e\x89)p\x9d#\x0e\x19d\xfd\x94>\xc5x\xda(\xe0LT\xcf\"~w\u007f\x9b\"yRb\xc4\xee\xa6\xeb^\xd0\x0f}\x1b\x815\xf7\x89\xee\xf2\xdaW\xb7\x9b\xb0\x98\x8fiN\x01\x03-0P\xc0.I\x80\x90\xd6!\xe3\xa06Y\x89T\xa8\x009\xbe\xc18\xe3m\x88`1T\x1eS\v\xe9\x1e\x18\xc5N\xc1\xe1\x1f\xab\x0fw\x8b\xbf\xe7T\xdf\xed\x02XY\xa2\xf5\f\xd8a\x83ҽ\xedH9G+\fr\xa2\xd8X4L\x8a\rZW\xc45\xd0\xd8O?|\xcek\x0f\xe0Ge\x00\xbf\xb0F\xd7\xf8\x16D\xd0x\x17\x96\x93\xd1\b\x1b\xd4\xd1I\x84\xbdp[1N\xa6\x9d\x06ȼ\xe2\xb6\xf7~\xbb\x8e=!\xa8\xb8\xdd\x16\xa1\x16O\xb8\x847\x9e\xd6\x1ca\xfeJ\xbe\xf3ۛ\x13R\xff\x10\\\xfb\r\rz\x13\xc0uy\xb8\xeftG\x90\xc1\xf3\x8c\xa8*<\xb2\xaa\xf1\xe7\x93\n\x85\xeaoA\x19ҀT=\x11^0\x9d^\b\x94\xc8'\xa0?\xfd\xf0\xf9$⡾@H\x8e_\xe0\a\x10\xb1\xacъ\u007f[\xc0Go\x1d\a\xe9\xd8\x17Z\xa9\xdc*\x8b\xa74\xabd}\xa0=o\xd9\x0e\xc1**\x92\xb0\xae\xe7\x81\aqس\x03i!\x1d\x1c\xd9\x1b\x03͌;k\xad\x89\xfd|\xfcp\xf3a\x19\x90\x91AU>\x12S\xd6\xdc\bb3DcB.\xf6\xd68I\xe6\xe9\xb3m0\x1f\xa7\xa0\xdc2Ya\xd8/¦\xa5\xecX\\\xbdƏ\xa7\x94$}\x19j2\x0e\x1c\xff\xb7\xe4\xfe\xcc\xcdy\x06\xfd\x8c\xcd\xf5\xab\x8c\xb3\x9b{j\xd7h$:\xf4\xfb㪴\xb4\xb5\x12\xb5\xb3\v\xb5C\xb3\x13\xb8_\xec\x95y\x12\xb2\x9a\x93i\u0383\r\u0605/Q\x17\xdf\xf8?\xafދ\xaff\x9f\xbb\xa1A\x95\xfd5wE\xeb\xd8ū6\x958\xec\xf3\xf3\xd8\xd5*2\xab\xf1\\r\x8b\xfdV\x94\xdbT\x9c\xc4\x18{\u0099\x041a\x1eB3\x93\x87\xafnʤ\xd0\xd6\x10\xa2\xc3<^\xb0͙\xe4\xf4\xbf\x15\xd6Q\xfb\xab4؊g\xb9\xef\xbfno~\x1f\x03oū|\xf5\x04\x01\x0f6ҿO\xb8@\xcc\x1e\x06\x83\x13u\xcc0\xd6n̋\x98\xa1cU\x86\x8a\xf5/\x02\xcf\x11\xb6\xb3\x1a\x18^ӱ\xca\x023\b\f\x1a\xa6\xe9\xe4\x9e\xf00\x0f)^3A\xf9\x99Rpw\xcf\x01L\xebZdSqL䑄F\xbeO\x856\xab쩽g\xcf!H\xb8\xa0\xffxř\xa1\xec\x11@\xe07\x1dm\xf7\xb7Z9^|\x9a\x14\x9f\xd4\"ե\xc4ֆ\x10\xe7\xf9\x02j4\x86\n\x8aQ\x93V|Ԓ\xbd\xd9J\x9d\x83\x9b\xb7\xb3\xca\f\x17\xaa/\xa8+\xc3Eq\xd4i\x88\".]\x1f\x13\x85~meY*b\xa7ë\xfb\xf3\xc7{=\x9d\xe1/q\f\x0f\xe0\x9ch\xc8f{\xd7\xcaq\x8d\\i\b=qa\xa6\x8f\xdb$\r\xb9\xa7\x8e\xc4l7L\xd4\xc8!\xbd\x1d\x8c\xe7d\xa4\xf6\xa5\xacqCA\xaeյb<\x15d\x11^GϨ^\xf7\xb7#W\xf6\x8c\xcc\xd6\"\xf7\x95|F\tSʶQ\xa6a.\xdc\xe6ͳBe[\xd7l]\xe3\x12\x9ci\xa7\xddg\x82E\x83ֲ\xea\x92+\xfe\x1cF\x85:5N\x01\xb6V\xad\xeb\n\xd5AP\xb8\xb2Ѧ^V+gK\xc0\xa193\xa2\xe86Rպ\xf6s\xfa\x81\xe0\xf8\xe0\xe4Q\xad1\x9f\xea^\x13\x13\x00\xfc\x83\xc9%\x844&\xe7`]\xf4:\xeba\xf4\xa1l\x9b\xe9*s\xb8\xc3}\xa6u\xf2\xd0\xd3\xef\xbcN.\x93\xe9\xfb\xd1{Ë\xf6\x1f\x17\xba\xa4\x828\f\xb6\xaaNά\x1c\xabA\xb6\xcd\x1a\r\xe9a}ph\x87\xe1n\xe6r\xd0\n53\xe4\xe9\xfe&\xfcz\xfcT\xf3\x16\xac\xf0\xd7{ķ\x02\x01\vŷ\xa5\xe4D\xc4R\x19̄L\x98\xa6\x95A\x12\x19\xc2\xff=\xf3G\xd6N&\x8d\x1e9\xefɎW\xc4\xfd\x96v\xdd=\u007f\xa4Ê\xdc\x06~\xfdmv\xa49\xac\xa4\x02\x02\xf9\xdd\xf8I\xffM\xb8\xe0Io\xf4\xfeg\xa9d`\xd3v\t\x9f>\xcf\xd2\xd3\xddczz\xa7\xc6\xff\x06\x00\x00\xff\xff\xb6\xe8a\xa8\a!\x00\x00"), []byte("\x1f\x8b\b\x00\x00\x00\x00\x00\x00\xff\xc4Y[s\x1b\xb7\x15~\xe7\xaf8\xe3<\xa8\x991\x97\x89\xdbi;|\xb3\xa5\xa6\xa36\x915\xa6\xaa\x17\x8f\x1f\xc0\xc5\xe1.\xa2]`\x8b\x83%\xcdf\xf2\xdf;\a\x17ro\x14%M\x94\xec\x8b-\\\x0e>|8w\xce\xe6\xf3\xf9L4\xea\x1e-)\xa3\x97 \x1a\x85_\x1dj\xfe\x8b\xb2\x87\xbfS\xa6\xccb\xfb\xfd\xecAi\xb9\x84˖\x9c\xa9?!\x99\xd6\xe6x\x85\x1b\xa5\x95SF\xcfjtB\n'\x963\x00\xa1\xb5q\x82\x87\x89\xff\x04ȍv\xd6T\x15\xday\x81:{h\u05f8nU%\xd1z\xe1\xe9\xe8\xedw\xd9߲\xeff\x00\xb9E\xbf\xfdN\xd5HN\xd4\xcd\x12t[U3\x00-j\\Bc\xe4\xd6Tm\x8d\x16\xc9\x19\x8b\x94m\xb1Bk2ef\xd4`Χ\x16ִ\xcd\x12\x8e\x13asD\x14nsk佗\xf3)\xc8\xf1S\x95\"\xf7\xef\xc9\xe9\x1f\x159\xbf\xa4\xa9Z+\xaa\t\x1c~\x96\x94.\xdaJ\xd8\xf1\xfc\f\x80r\xd3\xe0\x12n\x18J#r\x943\x80H\x80\x876\a!\xa5\xa7TT\xb7Vi\x87\xf6\x92E$*\xe7 \x91r\xab\x1a\xe7);\xc8\x01\xb3\x01W\"\x1f\xe9\xe9\x16J+]\xf8\xa1\x00\x01\x9c\x815BD\"\xbd0\x80\x9f\xc9\xe8[\xe1\xca%dL\\\xd6\x18\x99\xe9$3\xae\t\x9c\xdf\fFݞ\xefA\xce*]\x9cB\xf6\x1b\x83\xea\xe1\xb95\xf2\x05H\x9eslX\xdb;\xf4\xbe;t\xee\xdc[#\xe3\x06\x88\n\x04\xe4\x84k\t\xa8\xcdK\x10\x047\xb8[\\\xeb[k\n\x8bD\x130\xfc\xf2\xac)\x05\xf5q\xac\xfc\xc4\xeb\xe2\xd8\x18[\v\xb7\x04\xa5\xdd_\xffr\x1a[ܔ9\xe3D\xf5a\xef\x90zH\xef\x86\xc3\x01-+v\x81\xf6\x8f\x83\xbbfHWF\xf7y\xfd0\x18\x9d\x02\xdb\x11\x9a\x9c^6rX=\xa9\uf2fe<)\\\x18\b\xd3\xdb\xef\x83\xdb\xc8K\xac\xc52\xae4\r\xea\xf7\xb7\xd7\xf7\u007f^\xf5\x86\x01\x1ak\x1a\xb4N%O\x16\xbe\x8e\a\xef\x8cB\x9f\xd9\v\x16\x18V\x81d\u05cd\x14\x8c\"\x8c\xa1\x8c\x18\x82\xb1(\x02\x8b\x8dEB\x1d\x9cyO0\xf0\"\xa1\xc1\xac\u007f\xc6\xdce\xb0B\xcbb\x80J\xd3V\xdeڷh\x1dX\xccM\xa1\xd5\xff\x0e\xb2\x89m\x8f\x0f\xad\x84\xc3\xe8N\x8f\x9f\xf7wZT\xb0\x15U\x8boAh\t\xb5\u0603E>\x05Zݑ\xe7\x97P\x06?\xb1\x86(\xbd1K(\x9dkh\xb9X\x14ʥȕ\x9b\xban\xb5r\xfb\x85\x0fBj\xdd:ci!q\x8bՂT1\x176/\x95\xc3ܵ\x16\x17\xa2Qs\x0f]\xfb\xe8\x95\xd5\xf2\x1b\x1bc\x1d]\xf4\xb0\x8e\x8c.|>\xae<\xf2\x02\x1cX@\x11\x88\xb85\xdc\xe2Htr\x8f\x9f\xfe\xb1\xba\x83t\xb4\u007f\x8c!\xfb\x9e\xf7\xe3F:>\x01\x13\xa6\xf4\x06mxč5\xb5\x97\x89Z6Fi\xe7\xff\xc8+\x85zH?\xb5\xebZ9~\xf7\xff\xb6H\x8e\xdf*\x83K\x1f\xce\xd9_\xb6\rk\xae\xcc\xe0Zå\xa8\xb1\xba\x14\x84\xaf\xfe\x00\xcc4͙ا=A7\x13\x19.\x0e\xacu&R\xb6p⽆\x19\xc0\xaa\xc1\x9c\x9f\x8f\x19\xe4\xadj\xa3ro\x1b\xec~@\x8c\xd6g=\xd1Ӧ\xcb\xdfZ\xe4\x0fm\xb3rƊ\x02\u007f4A\xe6p\xd1\x00ۇ\xa9=\t\x9c\xeeļ \x1c(\xac\x1c\t\x05\xa8\xd2\xe6]\x89\x16\xfd\x1e\x0e\x8d*g\xf52\xa4\x9c\xb1{\x16\x1c\xa2e6\x92p\xe2!\xfc\x95\x8d\xde,\xfe9\xc5\xfc\xe1\x16 \xf2\x1c\x89|\xbc\xc6\x1a\xb5{{\x88\xd9\x12IY\x94\x9c\xb8`V\v\xad6H.\x8bg\xa0\xa5\xcf\xef\xbeL\xb3\a\xf0\x83\xb1\x80_E\xddT\xf8\x16T`\xfc\xe0\xfe\x92\xce(\nt\x1c$\xc2N\xb9R\r\x83ց\x01֮x흿\xae\x13\x0f\b&^\xb7E\xa8\xd4\x03.\xe1\x8d\xcf\x04\x8f0\u007fa\xc3\xfa\xf5\xcd\t\xa9\u007f\n\x06\xf4\x86\x17\xbd\t\xe0\x0e\xf1\xaek\x91G\x90\xae\x14\x0e\x9cUE\x81\xc7Dt\xf8y\xe7\xcd.\xf1[0\x96\x19Ц#\xc2\v\xe6\xd7\v\xfe\b\xe5\b\xf4\xe7w_N\"\xee\xf3\x05JK\xfc\n\xef@\xe9\xc0Mc\xe4\xb7\x19\xdcy\xed\xd8k'\xbe\xf2Iyi\bO1kt\xb5\xe7;\x97b\x8b@\xa6F\xd8aU\xcdC\xbe!a'\xf6\xccBz8\xd67\x01\x8d\xb0\xeeQmMY\xc6\xddǫ\x8fˀ\x8c\x15\xaa\xf0\xfe\x8e\xa3\xd3Fq\xd6\xc0\xe9B\x88y^\x1bGA3}\xd4\x06\xf5q\x06\xf2R\xe8\x02\xc3}\x116-G\xa1\xec\xe2%v<\x0e\xfd\xe9\x9bH\x01\x86\x8e\xe3\x0f\v\xa2O\xbc\x9c\xcfT\x9fp\xb9n\xad\xf5\xe8\xe5\x1e\xda5Z\x8d\x0e\xfd\xfd\xa4ɉ\xaf\x96c\xe3ha\xb6h\xb7\nw\x8b\x9d\xb1\x0fJ\x17sV\xcdy\xd0\x01Z\xf8\xf2t\xf1\x8d\xff\xe7\xc5w\xf1\x95\xecS/\xd4+\xb0_\xf3V|\x0e-^t\xa9\x94+>=\x8e]\xacb\x023\xdc\xcbf\xb1+U^\xa6\" \xfa\xd8\x13Ƥ8\xe3\x94\xc15\v\xbd\u007fuUfB[ˈ\xf6\xf3\xd8X\x9a\v-\xf9\xff\xa4\xc8\xf1\xf8\x8b\x18lՓ\xcc\xf7?\xd7W\xbf\x8f\x82\xb7\xeaE\xb6z\"\xd1\r:Ҙk\xc9Tn\x14\xda3y٧\xde\xe2\x94WN䅇5\xcfJ\fI\x8b\x86J㮯\xce\xe0X\x1d\x16&\f\xc7\a\x88\xe9`\x925h\xeb<\vO\x10u\x06KlKL\xe4\xd8\x11I\xc89\xfc\b\xe7\xb5\x1eϴ\xb1>\x17!\x97d\x9c@\xf5\x11Χ+\x87\xc1\x9a\xc6\xc8\xc1H_\x13\x06\x93ǧ\x19L\xf4\x1ab]\xbc\xe3\xb2\xcaw[\x9eSX\x85\x0eOd6طK}\x1fNn_\\Z\xe5\x86\x13\xc7~7\xf9\xf1W\xbe\x1c\xef\xf0}\f+\x03:\xa7j\xf4\xf5JhN\xed\x04\xa5C\xa6^\x14:\xf2\xc2V\xefSY\x1cJ\x9f\xd6qֹ\x11\xaaB\t\x87~6\xdcq\x85\xe9\v\xfa\x8b\xa9,&\tj\t\xa5\xaf='@\x8f\xf7\xa5\x1e\x19\x97\xf1s\x161Z\xa1۪\x12\xeb\n\x97\xe0l;\x9e~Āj$\x12\xc59\v\xfa)\xac\n\x15_\xdc\x02bmZw(\xf9\xa2)E*.(j\xc1\xf3\xca\xceR\xd09(\xb7\xbcfJ\xe3\x0eF\xfd\xb8\xca\U00047ead\xc7\xc7\xcc\xe1\x06w\x13\xa3\xa3\x9eew\xf22\xa9\xd0\xc4\xdc\x0f^;\x9eE@<\xe8\x1c\aq\x19\x94\xa6J\xdam\x9c\xa8@\xb7\xf5\x1a-\x13\xe1\x1b\xa5\x89\x91\xe4\x1a\xa6jh\x9f{\x1f\x99j\x92\xa8ѠG.;\xb2c߬;Ү\x0f]\xe1Dj\x8cx\xf0˯\xb3c\xf0\x139\xe7{(o\x86?<\xbe\t\xf5x\xfa\x1d\xd1\xff\x99\x1b\x1d~\xf8\xa3%|\xfe2\x83\xd8n\xbbO?\x0e\xf2\xe0\xff\x03\x00\x00\xff\xff\x8c\x89\xe8@\xae\x1d\x00\x00"), []byte("\x1f\x8b\b\x00\x00\x00\x00\x00\x00\xff\xb4WMo\xdc6\x13\xbe\xef\xaf\x18\xe4=\xe4\xf2J\x9b\xa0\x87\x16\xba\xa5n\v\x04\x8d\rc\x1d\xf8R\xf40\"gw\x19S$K\x0e\xd7\xdd\x16\xfd\xef\x05Iɫ\x95do\x1c\xa0\xbaq8\x9c\x8f\xe7\x99\x19R\xab\xaa\xaaV\xe8\xd4=\xf9\xa0\xaci\x00\x9d\xa2?\x99LZ\x85\xfa\xe1\x87P+\xbb>\xbc_=(#\x1b\xb8\x8a\x81m\xb7\xa1`\xa3\x17\xf4\x13m\x95Q\xac\xacYu\xc4(\x91\xb1Y\x01\xa01\x961\x89CZ\x02\bk\xd8[\xad\xc9W;2\xf5Cl\xa9\x8dJK\xf2\xd9\xf8\xe0\xfa\xf0\xae\xfe\xbe~\xb7\x02\x10\x9e\xf2\xf1Ϫ\xa3\xc0ع\x06L\xd4z\x05`\xb0\xa3\x06<\x05V\u0093\xb3A\xb1\xf5\x8aB} M\xde\xd6ʮ\x82#\x91\xdc\uef0d\xae\x81\xd3F9݇T\xd2\xd9dC\x9b\xc1\xd01oi\x15\xf8\xd7\xc5\xedO*pVq:z\xd4K\x81\xe4\xed\xa0\xcc.j\xf43\x85\xe4 \b먁\x9b\x14\x8bCAr\x05\xd0C\x90c\xab\x00\xa5̠\xa2\xbe\xf5\xca0\xf9+\xabc7\x80Y\xc1\x97`\xcd-\xf2\xbe\x81z\x80\xbd\x9eA\x96u\a\xc0>\xec\xa8_\xf319\x97\xc8EP\xb6\x0f\xefK\xd8bO\x1d6\xbd\xa6ud>\xdc~\xbc\xff\xee\xeeL\f\xe0\xbcu\xe4Y\rP\x96oTC#)\x80\xa4 \xbcr\x9c\x19~\x9b\f\x16-\x90\xa9x(\x00\xefiȟd\x1f\x03\xd8-\xf0^\x05\xf0\xe4<\x052\xa5\x9c\xce\fCRB\x03\xb6\xfdB\x82k\xb8#\x9f\xcc@\xd8ۨe\xaa\xb9\x03y\x06O\xc2\xee\x8c\xfa\xeb\xc9v\x00\xb6٩F\xa6\x9e\xcfӗ\xf16\xa8\xe1\x80:\xd2\xff\x01\x8d\x84\x0e\x8f\xe0)y\x81hF\xf6\xb2J\xa8\xe1\xdaz\x02e\xb6\xb6\x81=\xb3\v\xcdz\xbdS<\xf4\x8e\xb0]\x17\x8d\xe2\xe3:\xb7\x81j#[\x1f֒\x0e\xa4\xd7A\xed*\xf4b\xaf\x98\x04GOkt\xaaʡ\x9b\xdc?u'\xff\xe7\xfbn\vo\xcfb-L\x06\xf6\xca\xecF\x1b\xb9\xb0_` U6\xa8\x00\xd8\x1f-Y\x9c\x80N\xa2\x84\xce\xe6\xe7\xbb\xcf0\xb8\xcedL\xd1ϸ\x9f\x0e\x86\x13\x05\t0e\xb6\xe4\v\x89[o\xbbl\x93\x8ctV\x19\xce\v\xa1\x15\x99)\xfc!\xb6\x9d\xe2\xc4\xfb\x1f\x91\x02'\xaej\xb8\xca\x03\x05Z\x82\xe8R\xe5\xca\x1a>\x1a\xb8\u008e\xf4\x15\x06\xfa\xcf\tHH\x87*\x01\xfbu\x14\x8cg\xe1T\xb9\xa06\xda\x18\xc6\xd53|MGН#\x91\xe8K\b\xa6\xa3j\xabD\xee\r\xd8Z\x0f8ӯ\xcfL/\xb7n\xfaZ\x14\x0f\xd1ݱ\xf5\xb8\xa3O\xb6\u061c*Mb\xfbq\xe9\xcc\x10\\\x9a,\xa5\x8diYqf\x1b\x80\xf7ȣ\xfeeT\xe6i\f,\xe6\xf3\x02\t\x99\bL\xedl\xd0\b\xfa%W\x94\x11\xc7\v9]/\x1cI)\xed\xed#\xd8-\x93\x19\x1b\xedc]Ȥ%\xf0Ѽ*\xd8rU|\x94\xa9\xf0\xb6\x8a\xfc\x85@7\x13\xf5\x01\xf7mԺ\xb7U\t\xdb9d\xd5jZv\x99\xbeT6\xaaX9\x96\xde\xffv\xbc\x0f鞢\xa7\x9b\xedB\x06\xf7\xe7\xda\xe3\xc2)\x82>\x94\x94\n\xf8\xf3;\xfa\xfc\xebk%\x80\xb3\xb2\x0f\xa2/\xe8\x90\xf2{E\x0e\x89r\xe5i2A\xab\xe5\xf6\x98\xe8,U\xdbDe\xca\xf1d{\x82\xdfW\x8d\x0fF\x8e\xe15\x03$\x1f\x18\xc0\x16\xd1{2ܛ\xc97\xea7\x8f\x10\x8d\x81G\xed\x93^\"\x17*\xe0\xd3\xfc\xc4\x10X2\x06\x9c\x04\xe3~{\xc4\xe9-\x94I[괭\xf5\x1dry\xeaT\xc9\xd0L#=)\xb1\xd5\xd4\x00\xfb8\xdf~i\xaeP\b\xb8\xbb\x94\xddu\xd1*\x97m\u007f\x04\xb0\xb5\x91\x9f\x81\x9e\xf7\xf3(\xe0\x02\x1d\x17\"u{\f\x97\xe2\xbcM:K\x05\xf14\xbf/\x87@&vs7\x15\xdc\xd0\xe3\x82tC(\xe7}\\\xc1\x8d\xe5\xe5\xadg3\\슙0\xa4w\x89\x1c\xf1\x1cJ#\x8f%\xb1}zg\r\x89\xf4\xbd\x05\u007f\xff\xb3:\xb5\x19\nA\x8eI\xdeL\xff%\u07bc9\xfb5\xc8KaMyʇ\x06~\xfb}U\x1c\x93\xbc\x1f\x9e\xfbI\xf8o\x00\x00\x00\xff\xffW\xb1\xbaH\x82\r\x00\x00"), - []byte("\x1f\x8b\b\x00\x00\x00\x00\x00\x00\xff\xec\xbd}s#\xb7\x910\xfe\xbf?\x05Jq\xfd$]Dʛ\\\xf2\xbb\xdbJ=)eWvT\xf6jU+e\xfd\xa4\x1c\x9f\x0f\x9ci\x928\x81\xc0\x04\xc0P\xe2\x9d\xef\xbb?\x85\x060/\xe4\x90\"0Ծ\u0603\xab\xbax\xa9\x99\x1e\xa0\xd1\xe8wtӂ\xbd\a\xa5\x99\x14/\t-\x18<\x1a\x10\xf6_z|\xffoz\xcc\xe4\xf9\xf2\xc5\x17\xf7L\xe4/ɫR\x1b\xb9x\aZ\x96*\x83\xd70e\x82\x19&\xc5\x17\v04\xa7\x86\xbe\xfc\x82\x10*\x844\xd4\xfe\xac\xed?\tɤ0Jr\x0ej4\x031\xbe/'0)\x19\xcfA!\xf0\xf0\xe9\xe5W\xe3\xff\u007f\xfc\xd5\x17\x84d\n\xf0\xf5;\xb6\x00m\xe8\xa2xID\xc9\xf9\x17\x84\b\xba\x80\x97D\x816R\x81\x1e/\x81\x83\x92c&\xbf\xd0\x05d\xf6c3%\xcb\xe2%\xa9\xff\xe0\xde\xf1\x13q\x8bx\xe7^\xc7_8\xd3\xe6\xdb\xe6\xaf\xdf1m\xf0/\x05/\x15\xe5\xf5\xc7\xf0G\xcdĬ\xe4TU?\u007fA\x88\xced\x01/ɵ\xfdLA3ȿ į\t?;\xf2\xb3^\xbep \xb29,\xa8\x9b\x0f!\xb2\x00qqs\xf5\xfe\xf7\xb7\xad\x9f\t\xc9Ag\x8a\x15\x061\xe3\xe7F\x98&\x94\xbcǵ\xd9\t\xe0&\x103\xa7\x86((\x14h\x10F\x133\aB\x8b\x82\xb3\f\x91XA$DN\xab\xb74\x99*\xb9\xa8\xa1Mhv_\x16\xc4HB\x89\xa1j\x06\x86|[N@\t0\xa0I\xc6Km@\x8d+X\x85\x92\x05(\xc3\x02b\xddh\xd0Q\xe3\u05f5\xb5\x1c\xdb座Hn\t\bܔ=\xca \xf7\x18\xb2\xb35s\xa6륭/\xc7/\x89\n\"'\xff\x05\x99\x19\x93[P\x16\f\xd1sY\xf2\xdc\xd2\xdd\x12\x94EN&g\x82\xfdw\x05[ۅڏrj\xc0\xefw=\x980\xa0\x04\xe5dIy\tg\x84\x8a\x9c,\xe8\x8a(\xb0_!\xa5h\xc0\xc3G\xf4\x98\xbc\xc1\xed\x11S\xf9\x92̍)\xf4\xcb\xf3\xf3\x193\xe1\xfcdr\xb1(\x053\xabs<\nlR\x1a\xa9\xf4y\x0eK\xe0\xe7\x9a\xcdFTesf 3\xa5\x82sZ\xb0\x11N]\xe0\x19\x1a/\xf2\xdfT\xdbvܚ\xabYY\xca\xd3F11k\xfc\x01\xc9|\xc7\x0eX\x82w\xb4\xe4^u\xab\xa8\x11m\u007f\xb2\xd8ywy{פ3\xa6ױ\x8fxo\x10_\xbd\x05\x16aLLA\xb9MDj\xb30A\xe4\x85d\xc2\xe0?2\xce@\xac\xa3_\x97\x93\x053v\xdf\xffY\x82\xb6\x04-\xc7\xe4\x152\x152\x01R\x1695\x90\x8fɕ \xaf\xe8\x02\xf8+\xaa\xe1\xd97\xc0bZ\x8f,b\xf7ۂ&?\\\u007f\xd8a\xad\xf1\x87\xc0\xbc\xb6\xec\x97?\xfd\xb7\x05d\xad\x13c_cS\u007f\xcc\xc9T\xaa\x16s\xb0\xaf\x8c[@\xbb\x0f\xad\x1d\xee\xf4[\x0e\xb6\xfe\x97\xb5\xa9\xfc\xa5z\xd0ҏ\x9dD)\xd8?K@\x16\xe7N,l\xb0\x94\r\x90$\xcc\x0f\xc9b\xbc\xf1\xf7-8\xb5\x03\x1e3^\xe6\x90W\xdcvc-k3\xbe\xdcx\x01\xc5\x11e\xc2ҿe\xffvڢ\xfe\xabe\xa7\x1d3\xa6\n\x88\xa5@&\x1c<\xc2\x04.\xb6\x13\xd3v0\x03\x8b\x8e\xc9\xed\\\x1dA9G'\x1c^\x12\xa3J\u0602\x19\xaa\x14]mAL\x90\xcd\xfb\xe2\xa5z\xde3\x04\xce2h\n\n\x87\x1a'd\xa8ڜ\x11\xf9\xa4\xb12\x97\xf2\xfe)L\xfc\xd5>S\xf30\x92\xa1\x8eC&0\xa7K&\x95_\xbb\x17)\x13 \xf0\bYiP\xcco\xc0-\x91\x9dJE\n\xa9\xcdv,l?\x89\xc4\x1d\x8em[\xb8\x13\x85\x1b+\xf3\x8c#l\xb1]h\x8b\x89H\x01v\xae\v{\x12\xebg\x95,ݳ\xebܾ\x81\xf0n\x8c\x90\tՐ\x13\xe9i\xa0\xe4\xa0\xfd\xb7rdO\xf5);\xdb\n\xbaZ\xbc\x93\xbb\x9cN\x80\x13\r\x1c2#\xd5&&\xf7\xc1\xa7\x1b\xfbp\x8e-x\xec\xe0!\x9e\xf7zN\\/l\aHb\x95\x8e\x879\xcb\xe6N$Z\xdaD8$\x97\xa0\xf1\x18Y\xb5m\xb5m\x91䩽\xf7\x1f\xd9u\x90\xea\xf1đZ\x87\xd7u\xb8\xea\xb1\a\xf3\xa9\xc7\x13l\xa8\x8d\xd9Z_\xed\x94#\xf5\xf8e\"6\xf0\xd5\x04\xa2\xbd\xdax\xf5\xb0D\x8b&\x86U}\xaf\xa6\x04\x16\x85Y\x9d\x11f¯OA\xa4\x9c7\xbe\xff\x19oL<\xc5_\xad\xbfyP\x8a߹+OA\xb4\xbbR}\xfe3\xdc\x14\x14\x16\xb7^V\xec\xbd!\xdf5\xdf:#lZmH~F\xa6\x8c\x1bPk;\xd3\xeb\xbc\x1c\x02\x19\xfb\xc8;;\x16\xd4d\xf3\xcbG\xab\xd9\xe8\xda\x1d\xb3'^\xd6_v\nbИۂ\xf9\t\xb8\x04\x8d9\xa6`\xe1\x8c\xc4;\xc4f\xfd\vj\xd7\x17ׯ!߅\x1e\xb2\x1f\xe5m,\xe4bm\xb2\xcdO{\xadw\xdfexէ\xb2 \x9c\xf9\u007fF(\xb9\x87\x95\xd3X\xa8 vs\xa8\xfd\xd0\x16[b\x139\xe8\x87@\"\xbb\x87\x15\x82\xf1\x8e\x85'\xdfޗ\x14ܸ\x87\xd5>\x8f\xad!\xd0\xceɛ{\x0e\x93\xf6\aD\x04\x9a\xa1\xfb#\x8f\xa0\x93(\xf0\xa2\xa7\x17G\xf6g$a\x04\xdc',\xb3ڶ\x863\r7\xf6X\xbb-\xb2\xa7`Ί=\x17\x8a\xbe4\rxZ\x82\x9b\xe8=\xe5,\xaf>\xe4\xe8\xfeJl׆\xdb\xe3Z\x9a+qF.\x1f\x99\xb6S\x139y-A_K\x83\xbf<\v:\xdd\xc4\x13\x90\xe9^\xc4\xe3%\x1c۶xh\xfa\x9b\xf6 n7\xae\x9c[\xa1\xda\x1e\xa6ɕ\xb0\x86\x8b\xc7\az\x0f\xdd\xe7vˇ\xf6X\x94\x1a\x1dJB\x8a\x11\x8a\xcaqח\x1c\xb2\xf7\x04)UkG6\xa7V}\xd4}pO\xb0wV\x92\xb8\xf7\x9d?\x94\xd3\f\xf2`m\xa2\x17\x8f\x1a\x98\xb1\x8c,@\xcdv\t\x8e\xe6(,\u007f\xdfo\n{r]7\")l?\xd1\x1e\x86g\xdd\xf9ӓ\x19ٓ\xbb\xc7Sa\xb3\x9f|t\x8b\xf3n\xfb\xa3O\xaf\bE,\xea\x1fOb\x97\xe69FZ(\xbf\x89\xe0\xf8\x11{\xb1)\xfb\xddĜ\x84\\\xd0\u009e\xdf\xff\xb1b\x0e\t\xfa\u007fIA\x99\xda\xe3\f_`ЄC\xeb]\xef&j~\xc6~\x81ib\xf7wI\xf9\xa6[\xb8cq\xd2\xf2\x16\xe0N\x90\xcb\xe9\x86\xc6rF\x1e\xe6R;\x99:e\xc0\xbb\\6\xed\xc149\xba\x87\xd5\xd1\xd9\x06\x1f8\xba\x12GN\xc0G\xb3\x9bJ[\x90\x82\xaf\xc8\x11\xbe{\xd4G\tړ\x12\xf7zLt:}\xeb\xd1\"\x8b\xa6\xe3\xb7\xf6\xf8z5w\u05ec\xf7\xa2\xc3Bj\xf3\xd7n\x87ݖ\xf9܄7ںi\x87\xdf\xebI\x9d\xdd\xfb\xb0*\xa6j5\xb9\xa9\x01\xe5\x9dx\x8e\xd1\x06\v\xa0\xa7m\xf4\x94\x93\xaer\xd0\xd1\xcaQn\x11\xfc\x04U\xb8\x00\xc0>S\x8c\xd1\x1a-^\"\xf5\xed\xcbdž\x8fўP\xfb\xef\xe6B\x0e\xad\xd5fr\xb1\xa0\xeb!\xaf\xbd\xa6\xfaʽ\x19h\xda\x03r\xbb\xaff%\x9e\xcb\xfdս@C\x18\xecz`f\xce\x04\xa1\xe1\xf8\x83\xf2\x04EI!\x9f\xe6Dn̩&\x13\x00\x11\xd0\xf7$kp\xe3y\xe5\xf5\x82\x89+\xfc\x00yqp\xf9Njt%mg@u\xb5\xa1\xd5\x0f(q\xf6U\x8ddN\x1e栠E\x15\x9b\x0eo\xab1\xee\tRH\xd3\xf4+X\xb8\x85̏5\x992\xa5Ms\xa2\xfb\x12\\\xa9\xf7%\x87\xc8\x1d\xb6\xab\xbbc\v\x90\xa5I\u0603\xcb\xfa\xedV\xb4rA\x1f٢\\\x10\xba\x90\xe5\x1e\xc2\xdd\r+_آ\n)\xfa\x1dx\xa0\xcc \xbb\xb3p\xd1\xc3b\xa4ݥ\x82\x83\xd9w\x8b'0\xb5\xec(\x93B\xb3\x1cT\by\xbb\x9de\xd2\x1e\xdc)e\xbc\xec\n\xdft\x8dX3U\\*\x95d\xa5\xbeuo6\xbc\x86s\xf9\xd0F\xd0\xde(\x98\xd3%\x106%\xcc\x10\x10\x99\xdd\x17P\x8ee\xe3'<2\x105{\x93\xe5~\f\xde\x0e\x10\xe5b?\x04\x8c\xf0d3\xb1\xd3)\xd6|\xfck\xca\xf8sl\x9b\xa5\xbc\xf4\xa3\xf1}\xfd\xf6\a9\x1a\x15S\xd9_\x84M\x80\xbc\x03\x9a\xaf\xc2\xf9\xa0\xc6XS\x15i@\x12U\x8a&G|\x86\x93\x11c\xdf\xf9Y\x1c\xd2pc\x82\xed\xb1\xb1k\xfe|f\x9aڎ\x05\xf1\xacڎ\xfd@%\xe8R\\3W-\x00VT\x06\xc5\x19\xe7^QM\x84\xe63\x01k\xa0B\xee\x9c^V|z=\xda%\xf2l\t\x83w\xae.FuYs\xf3zC\xb3\x91\xfc\x16}\x04\xbc\x83w%K\xf2@\x85\tD_)s\x85ܓ\xeacw\xd5\r\xaaf\x11Ood\xd6\x05\x955\xa4\xb7\x810j\x85\xe9V\xfbN\xda\rk\x9a\xe62\xbb\xb7\xeaȂ\xce\xe0\xf8X\x93Wo^[R\xb1Z\x87\x15\x19\x11\x12\xc1\r\xe6\"\xb1\x85\x92K\x96[\xd5\xe9=U\x8cN\xb85\x82\xa7\xa0@d\xa0ɗ'\xef/\xde\xfdt}\xf1\xe6\xf24\n\xb85\x9dᱠ\xc2\xd2`\xa9\x834\xafv\xdf.\x00Ē)),\x82\xe2\xb0q5%\x94,\xc3l\xb3*\x13͚Z|鵹(\x88Պ\x83#\x84\x89\xa24\xc1;\xfa\xc08'\x938\x88\xa5\xc8\xe6T\xcc,^_\xcb\xd2\xce\xf3\xcb/\x11+\n\xf22\xf3\a3\n\xa2?L_\x9e\xf9p\x16\xe5\\>h\x94-\xa03Zx\x1cG\xc1ll/\xd1+a\xe8\xe3K\xc2\xc60&G_6\xfet\x14\x05\x13\xb1U(i\x97\xe9\xe2\x11\x0e\x8b\x9c\x19P\x94\x93\xa3&不\xbf\xb4넼I\xa0\xf85\x01KP\xce\x0ep$\xb7\xaf\x03\xdf\r\x053\xaar\x0eZ[\x9e\xfb0\a3\a\xe5\xddJ\x9e\xc8 \xc6\xeb\xec\x86T\xf6|ufJֹ\x91Q\x10C\x1e\xe5}\x95\b7T\xdf\xebs&\xacH\x1d\xe5\xd4\xd0Q\x83\xe9\x9e;i8\xf2\xf2y\x14,\xe9Qu\x1c\xcf\u007f\xa3J!\x98\x98\x8dh\xf5\x14\x13#:\xd2s\xe0\xfc8b\x96Q\xe2\u008dh{\xb7\xf9ZL\x80!\xd21\xe1F\x9b\xa3_V\f\xdc}yL\xae\xa5ٕ\x81\xb6}T\"\fq<\xee\xe4\xf1\x97\xd7w\xef\xfe~\xf3\xf6\xea\xfa.\x96\xb57\xc5\xc2vV\x9f\xc6$[b\xa1\x83\xd5\xc7\xed\xfe.\xb1\xd0f\xf5Qp\xb7\x88\x85\rV\x1f\x87\xd8\x0e\xb1\xb0\xc9\xea\xe3X\xf0\xa6X\xd8\xc2\xea\xa3\xc0\xae\x8b\x85\xad\xac>\nj[,lc\xf5Q \xbb\xc5B\a\xab\x8f\x17B\x9bb\xa1\xcd\xea\xe3 n\x17\vk\xac>\nl\xb7X\x18X}\xc7kq\xac\x1e\xc42\x99\xcd\u007f\xe7ͯ\x06+\xaa\xf6<\x8e\x0e\x8dČ\x03&\xda|\xaeK+x^̷]\x82b\xf9\x9e\xb6\xd3*Ds\xb1Q\x90I}\x1cB\xc66\x8a\xb5ʢ\x8dc1)V\x9a\x1bOEκ\xc7f<\xcdߚH\xc7\ai\xe0dL\xde\xf8\f\x03J^\xfdt\xf5\xfa\xf2\xfa\xee\xea\xeb\xab\xcbwqH!\xe9g\x87\x84\xa4\x91\x9e\xa89\xee0\x0f\x13\xf0\xb2[s\x88\x16\xc8n\x14\n\x96L\x96\x9a\xaf\xaa\xf4\xf6\xfeG\u05cd\xf5\x93\xebS\xcaVD\x83Z\xb2,e\xb6\x9dS\xeb\xa3\xea\xb8\xf1\xa4\u0093\xbe\xfa'Ԟ\x04\xc0\xdbmb\xaf\xfc\xa4\x90\xd6!-c\x0f\xf2\x19\xecc7\x9e\xb0\x92\x13 \x1eV\x81j\xccr\xa7\x1a\x95\x00t\xb7\x8dM\xf6N\\l\x0eT\xbf^Ô\x96\xdcyێ\x8e\xc61\xba\x8c\x1b}Y\xec\xd7J\xee\x19@i\x8e\x16\x9b\xbdu\x97\xbcB\xc4\xe00B\xe8\xd8'ƶ\xd4\x0e\x1di\xaf\xba\xc1|\xeed\xb0)\xa3\xf2\xe6\xea\x91.\xe5\x89\vIO\xd9\xec\r-\xbe\x85\xd5;\x98\xa6\x80XG;\xe6\xcc\xfa\xf4\xd2XӠ\x1e\xa8\xf5\xb8\xa9\xa5pžx!1\x19\xc5]\xa3\x85\x93;\x9f\xfd\x8c:\xacEOڒH\xbf\x83\x15F\x9av\x17F[\x95i\xa8y\xc9\x10+\u007f\x88\xd9\xd7pˤȠ0\xfa\\.\xad\xee\x00\x0f\xe7\x0fR\xdd[K쁙\xf9\xc8\xc5\xc3\xf49^\xc39\xff\r\xfeO\x8f\xd9ݽ}\xfd\xf6%\xb9\xc8s\"\x91Ֆ\x1a\xa6%wiw{g\xfav\x8d\xba\xa8\xc0\x19^l?#%\xcb\xff\x1c\xcfl\xc38\x00m\xc8\xc2eb\x1e\x88>n1\x92\xbf\nR\xaa\a\xae,\v\xaf8\x02\x91\n\xc3o\xfb\xa4\xc1n\x1f!a\xd9+\xba=\xd1>\x91\x92\x03]/\xe2\xb0\xdf\xd8?4\xdc5\xf6K\a\xee\x1a\x11\xe1㮁'\xe00R\xe3\xb8\x16\x1b\xfb\xa5\xb3v\x0fop\x162\u007fItY\x14R\x19]\x15,\x18[F\x10\x17ϨG\v\b\xde\xed;#\xffY\xfd\x88wG\xf4\x0f\xc7\xc7\u007f\xfa\xf6\xf2\xef\xff\xe7\xf8\xf8\xc7\xffL\xfdN\r\xb3Qk\xe6\x10\x80u\x01\xd9X\xc8\x1c,\xcb>s\xff\xf4\x96\xd7E\x86\t2\xd7=У\r5\xa5\x1eϥ6W7gៅ̯nz\x82D\x18:A\x05%\aQ\x02\xb6\x15~\x89\x19-J\x0f\x05bz\vM_K\xc6\xd2\xfb\xd7\xf6\xc8\xdcP3\xdf?Ůk<(f\f\b\xb4UA-4\x91\xd33\xcb\x1d\xd1\x14\xe8û%9Z\xbe\x88\x8cP\xb6\x00\xf4\x17lӀ\xa2\x03m#b۳\x9b>\x1c\x8b\x04צe\u007f\xc1KPeS\xf6\x00zqs\x15\n\x0f}D\xc4\xf7\x95lն}\f\xf9\x16\x12ο~\x169\x17\xa0\xf7\x13uuN\xb1\xbb\x83\xb1\xdfM\xde\xed\x833\xacPDE^W):q?\x8e\xb3\xa2Le\xe6\x1e\xc2\x02\x16R\xad\xce\xc2?\xa1\x98\xc3\x02\x14\xe5#m\xa4\xa2\xb3d\xf1\x13\xa6\x8aS\xac\xff\xe5>\x97\xca\xf9\x1b(\u061ci\\\x12O\x03\xaa\x02\x92\x95\xcaZ;|\x15t\x14\xc8?\x9a|\xab觻DҾ\xa3M\xe4u\xb2z?[\xb3\xe6\x1f\xe8\xc6YJ^.@\x9fUVJ\x0f\xc0\xe8\xd2\x14K\xb2\xa4J\u007fT\x8b+gK\xa6\xf7M\x97\xee\x1aT\xac\xde&\xb2&\x82<\xd6-\x82\t\x03\xb3\x1e&\xda\xe8\x10\xc8\xe84\x1f}\xf9\x88\x1e\x9b-KS\x94\x98<\xbc\xa0\xa6\x8aJ=\x162\xcds\x17F\xa3\xa0O\xdet\x98\xbeHqc\xbbQPc@\x89\x97\xe4?N\xfe\xf1۟G\xa7\u007f>9\xf9\xe1\xabѿ\xff\xf8ۓ\u007f\x8c\xf1?\xfe\xe5\xf4ϧ?\x87\u007f\xfc\xf6\xf4\xf4\xe4\xe4\x87o\xdf|sws\xf9#;\xfd\xf9\aQ.\xeeݿ~>\xf9\x01.\u007f\xdc\x13\xc8\xe9響L\x9e\xf2\xe3\xa8\xf6Ќ\x980#\xa9F\x8e\b\x9e,\xf6\xb0k\x04\xe4\x1e\x8a'\xbd\v\x9aH_\xc1K\x9a\x1a\xdbGd\x1d}U\xab^h\xe8\xa9Yi\xc8\x14\x98O\xcf\xe7\xec\xe6\x15\xd4pw\x8b\xa92\xf8\u007f1n\xe8\xfe\xa6\xa7CSm\xb7`\xb1C\x82\x01\xfa\x1e`1\xb4\xbf\xc4:\x12\xfe\v\xf7\x90\x10\x11\tcp\x95\x0f\xae\xf2m\xe3\x97\xee*\xbfu\xe7\xa7\xf6\x93\xa3\xb7\xbb\xdf\xd9\x1c\xfc\xe4I\xd2.\xf9\xe5\xb4պ\x9a\xdcQ\xaf$\xce01\x9706\xb4ߙOX\x17\x92#\x85,JN\xf7\xbe\x1d[\xcdc3sh3\xb90\n\xa6\x17\xafua\xd0:/ݥ\"D\x1f\xc1\xcd\\7r\xc19a\xc2\tI\xfc\xd8\x03\xe3qv0\xa659\xaf\x03\xa1._qi\xd1\xf00\a\x91t\xb7\xd2\r\xa6\x896T\x19&fc\xf2\xbd\x85\xe5\xb41\x9f\x8b\xc2\x04Y\x94ܰ\"2!\xa9\xb2\xb0\xaa\xda$\x84j-3F\x8d\xc7p\xb4@\xe5T\x9b\xb0%\x98\x96c\xe8=f\\f\x90\x83\xc8\x00kY\x95\x91r0\xec\xf9de1z)\x96nn\x94\xe4\xa5K)\x86h\xee\xd3=\xb7\x8f\x9d\xeej\x8f\xafO\xad\xa9\xb3^#\x99\"\xfa\xb8\x1d\f9\xadK\x89U\xf1\xdd8x\xe9*v\x95\xfd\x92d\x86l\xe8\xd6u|\xbaҌS\xa2\xaaJ.>p\x16P\xba\x9a\xbbUŭ\x15\xd5D}\xe1SSo\x9fE\xb5=\xa4Z\xdbS\xa5\xed\xa7\xce\xeeRe{X<\xf5\x89:D\xb2F?\x05\xb4\x87\x12X(\x98\xb2Ǟ\x1c\xe6BT{DX\x0e°)K\xb2\x13\xacΤ\xa0\x00\x81i\xc2@\xb3\xb9+\x83)\xdaI6)4\xfd\td\xe8;\xcf\xc1a\x18\xfa횟c\xe0\xe6\x037\xdf1\x06n\xbe{\xf8\xe3\xf4\x19\xb3\xf2\x0fh)\xe3\xcd\xe5\xf4\xebկ\x1b\xf7\x9f\x91#<\xc7]\xf9\xea\xbcօU\xce\xf1\x8bq\xc7\x12\x8b\xc0\xe2ѳVd%\xe4\\1}\xf9@\xe6l\x16\xeb\x11\xe3\xb0\x04\xee\xf5{\xb2\xa0\x82\xce\\)M#C\xa8.\xf6v\x84eI\x8a\xe5\xad\xc2k\xb8T+8-\x9b\xe2\x92\xc6\xd1r\xdd;N\x13\xce\ue07c\x86\x82˕\xaf\x98)rrk\xa8\xb1l\xe9\x16L\\\x02\\\x12\xf3\xc0\xd5ܔ\x9c\xdfHβ\xa8\x98C\x9b\xf4\xae\x90抒sR \xa81y+ 6,s\xc1\x1f\xe8J\x9f\x91kX\x82:#W\xd3kin\x9c\xb9Y\xdfO\x89;\xbc\xd2\x03%lJ^\xba\xfeh\xc4\xd0\x19\xba.\xaa\xfauqD\xa1Z\x13s\xc2\xe4\x81\xe9\xbevz\xb4\xc0\xdc8\x80\xbf\xc1\xafZ\xd1\xe9\xfe\xfd\xec\xe4\xc3\xd9\x14\xb2U\xc6\xd3y\xd6E\x86ɮu\xf9\xf5\xfa\xdcƹ\x8cV\xda\xc0\"\x94\rC\a\n\xc32\x93\x85\x14\x1a\\A\xbd\x14\x0fW\xb5B\xe70\xd3=\xf78U\xc9+\xa46\xb7\x86\xaa=˴գ}Jo\x02\x18K\xfe\x19\xe5\x1cr\xc2\x16\v\xc8\x195\xc0\xe3\xfd\xe4\xa1\x02h\xb3ܣkw\xe9\x8aI&\xe9\rs*r\x0e\n\xeb\x15z\x1f`\v\xbe\x01\xb5`\x82\xc6\x16\f!Uz\x17\xba,!'4ˤ\xca}-\xb8Pً\xaax\x8d\xbf\xe2x\xa8+5$\xcfz\xbe^4\xe4\t\x97ٽ&\xa50\x8c\xd7\xe5!CmHߨ1\x1aj\x12\x8b\xa9\xfesT\x9d\x89\x11\xf6#;\xffM\xfd'\xfc!V\xf9\xedc\xf9\xecW\xcfws\xacՠ\x04$\rL\xa6\x94\xf1b+\f\xcc\v\x96V}\xb1DU\xd7W\xad\x04M\x9a\x91\x81\x05\x88\xdb]u(\xb2M\xac\x8bF\xef#\xab\x90\xb8\xd17G!\xa1\x16Ps\xec([\x9c\x1ck\f\x85m9\x13Ь_̰&jz\b\xb3y\x82\x1d?\xf2\x16jz\x10\x98)\xec1\xb2jԶts\xef\x93̯\xa44\xe4\xe4\xf8\xfc\xf8t#\xa8u\x9c\x0eu\xca88\xe9\xea\x8a,e\xd5f%\x83\xd4lQ\xf0\x15\xee\xcfq\x8e\x1d\x9d\xfcuXU\xa6ň\t25\xbbˡ \xd4\x19ђ\x18EC\x97\x81\xf4\xb9Zh\x16\xb8Q\xa5\xd7UN\x8e\u007f>>#`\xb2\xd4|`B\x1e\xa486HFcr'I\xa9\xeb\x89'\xc3\\ɒ\bpu\x00\xe0\xb1\xe0,c\x86\xafP\xcc'Ô\xa5q\xc5\x17\xb1A\"\x16ں|d\xc6\xdf\xd3I\a;%_\xe1iw\xaa\x02\xa1\xd6\x18Z\xc2\xf9\x1c(7\xf3\xf4\xfb}\x96.\x85\x14\xa3\xff\x06%\xb1\x8c\x97\xf0\x10S\xbd;\t\xb1\xb3\xe68@\xc6I\x8a\x1ba\xfd\xed\xc4$\x06\xab |\x03\xd1*'\xd9\xe8Hzww\xf3\r\x98\xb6\bKB\x87\x9dQ\xc8\xcfG\x976\xa8\xa9T\x1d-w\x9f\x1e}\xe5\xdf\\\xea$̐\xcd~\xadڸ\xee\x13\xceH\x11i>g7\x8cl\xa7%\xfb\x8cFru\x93\x9e\x88\xf5wYZlM脯\xaa*\xb2\x1a\f9\xb2SOO{f\x02\xf7\xf3\xaf@s\xac\xdb+\xb4\x01\x9a\xa8\"\x1d\xe0\xa85\xe6r\x18\xa5\xc6\xf5ݝ;\x90=v\xb4Y\x02\xcb\xd3\xfe\x18\xcfT:\x9bt\x15^\x14\x14\x8e\xfd\xfa9~$&\xb9\xc1+\xdc.\xf8\xdf'\xbdr\x13ih\u007f\xec\x96\xe8k;'\x16\xef\b\x83\t\x9c&\x1e\x8a\x1e\xb3\xeb\x9f%Lzg\xab\x92\xae\b\x98\xc3U/\x98\xfe\xeee|Z\xda\xfa8\xc8\xfd\x92\xe4\x12^\xcd\xf1\x9ch\xc2\xe9}|<\xf5K\xb5$i\x89\x88\xed\xd7\xfba\xa2\xe7\r\x05\xd2[\xdf\xc2\xcb<\xc9\u05cd7/\x1b\x1bIh\x96\xa5\x15\x8ar\xc3w/G\x86\xa5A-c\x13\x1c\xebћ\xc4\n\x19\xef\xbf\f\xa3ׅ\xb7\xc3\\w;\xc8e\xb7\x8ez\x89\x8a\x88r1\xe9\xc1I\xaa\x02\x18\xca\xd4\x04\xe37\xbe\x873\xa5*\xb6y\x8d\xd3\v!\xdc>\xfa\x1e\xaa0T̀\xbc\xb03\xfd\xe3\x1f\xfe\xf0\xfb?\x8c\x11\r\xc9PC`\x99\nruq}\xf1\xd3\xed\xfbWX\xc4-\x95ʟ\xe5f\x1b\x96mH\x96?\xed\xc8<\x82\xb2\xd8+5\x16:\xeb\xb3\xc3\xd6\xd6\xf0\xfeo\xe7\\֩q\xb6\xe60\x12\xd9\xcdG\xe23}\x84\xd8\b\x0fч\xb6\xb3MV\xdc\xca\xec\xfe\x00\x96\xf6\xf1ݫ\x1b\a\xaa6\xb6\x93v\x81\x8a\xe0bfb)\xf9\xd2\xf5\v\xbc{u\x83\bJ\xdbY\xfb6\xc6\a\xd0շ\xb2s\f7\xe1]jN\x12T\xb6(|\xc7LJ\x14Pδa\x19~\xab\nS$\xda\xf7\xf2>%\x8b\xe7\x93\xf1+\x1c\xbf\r\xe9@\xe8bH>\xcdk\xae\x89\x96\x8b\xa1\x0f\x8bh\xb8&R\xaft\r\x1a\xc9\xc15\x12'\xea\xa5\xea\xa7\xc7\x0f\x1aɧ\xad\x91|n22\xf9\xd5B\xc1\xad\x91EϬ\t\a\xe4@9\x13\xa1\x13ݶ\xa4\x06\x92'l\xa9\xeb\x1d}qsUy\xc7e+\x11\x01\x93W\xa2\xa1\xea2\x9b\x87،\x00\xad\xcf1=\xa2,\x9c\xe7+4\x94\x8c\x8fX\x15\n\xb0\v\x9f\x14gUE\x02D\a\b\xf7#\x98,\xfe\xb4\xa0O\xc6\xe7\x8e\xf8xbخ\xbei\x18\x99\xa2z\x0eة\x02\x1e\x99ѡ\xdb5\xd5R\xb8\x10\xae\xdf>&\xe3\x03\x98L\x93\x82j\xed\x02w\xa6^\x84\xfbȍ̏\x13\xa2\xb7\x8d\t\x91\x99\xa2\x19\x90\x02\x14\x939\xc1\xaa\u007f\xb9|\x88\x9f\xe7\x04fL\xe8@\xbfv\xa2\xe1`X]\t\x92\"\xc2u\xe7\xd9w\xad.Rخ\xbc4\x99L\xe0\xc3\xfeu\x8f\xc5\xf5\x04\xa2諓8M{|J\xca\xf9\xaa>\xa8ᦧ9\xfc&mf\x12\xa5\"\xa1^\xf7z&Q|4\xb0\x95yd\x8fB\x9d\x95ԇ\xfc[\xd4ɴ=UټG\x9b/\x12\x9f\xbe<\xa46=9\x86Ԧ\xbdǐ\xda4\xa46\r\xa9MCjӐڴ\x17\x88!\xb5\xa9\x9aѐڴc\f\xa9MCj\xd3\xd3cHm\x1aR\x9b\xea1\xa46\xed5\x86Ԧ=Ɛ\xda4\xa46m\x1dC qHm\xfa5\x06\x12\x87Ԧ\xb8ׇԦ\x881\xa46\r\xa9Ma\f\xa9M\x91c\xd0H\x86Ԧ_\xa3F\xf2\xb9\xc9\xc8^\xd5\xc5\"_\vy<7JNz\x94\x19\xbb\xc1X=\xcb|\x1a\x90\x9c&\xd7\xd6q\xd3\x19\x93W\xad\xf4\f߄\xdfUi\x89\x82\xe8\x13}\xea\xf4\xa4\xbe\xf5z\xa2k2\x85\xa2`\xfa\xbc\x90\xee\xff\xd59\x05\x8dd\x02\xe7_\x8b\x11\x0e\xa9\xc27%\x8b\xe0\xa9\f\x82$^\xb7;{\x003\x01\xa2a\x1e2s\xa0\x8fv\xd3#c`G\xb6@\x00\x9b\xc4\\\xbb3\x05\xd6\"\xfeɩ >K`3\xda\xdf'\xe1\x02S\xe16\"\xfd\x89\x10\xab\xec\x80mQ\xfe4\x95\\\x1f>\xc2\xff\f\xd1\xfd\xc3G\xf6wD\xf5\xc9J\x96I0\xb7D\xf4}d>\x916;\xa3\xf9!*\x9f\x06\xb3;\x92ߊȧ\x12S\xaf(~\x8f\xe0TO\xe5:ݓ\x9c\xac)\xf9d㻹\x02=\x97<\x9a\u05f6\xf8\xec\x1b&آ\\X6\xa1-{d\xcb*\x9b9\x9eFB\x9e\x93\xd3:\\\x18\xce\x02f9`\x13K\xcaxJ\xa9:,\xad7\xa7\xe8\x9f\xd0e\x96\x01\xe4VN\xbe\xaeC\xe0\xd10\u007f?\xaeV\xee\xbaj0M^\xc4R\x9ek\xa8\x88\xf6\xdd\xef\u007f\x97\xb4\xfb)\x96ab\xc2\xc6\xd3\xc9\x1a\b9\x1a\x93\xfd\x135\xfa\xa8\x1b\xa9\x8e\x94\xe7I\xceؑ\x98A\xfe\x9e(\x1av$e\x10\x96&f\x0f\x94\x90ыs\xf6L\xc4ؑ\x84\xe1q\x94\xa8\x80l&`\xac'R\xa4\xa1<=\xf9\xa2\x87l{\xae\xa4\x8b\xed\t\x17\xa9$Iz'[\xf4O\xb48`\xb7\xc3:s\xa0ww\xfc^.\xba\x03x\x0e{&U<\x17Z\x0e\x91B\xf0\x11\xbb\xcf&\xefj\x9f䉞\x89\x13}\x92&R\x13&v$K\xf4\xf14\xf7L\x94\xe8E>\xa9\xe1\x88\xe4PD\xff0D\xef\x10Ď\x84\x88>=a;C\x0f\xa9\xfd\v\xc3h\x87\x1d\xd6\xc2\a\x89ja3\xe4p\xd0\xd0\xc1\xc1\xc3\x06\xe9I\f\xbb\x13\x18\x1a\x89\b\xa98\xdcL^蓄Ѓ\xa2S\x99\u007fRP%\x99i3\xc1\f\xa3\xfc5p\xba\xba\x85L\x8a\x13\xa2u\x1bsN}\xe7L\xc8Å\xda\x10\r\x89g\xad\xa8>\x12\x8aq\n\xbbzӾ=\xf9q\xe3\x16䣹\fܕ\xd2C\x10\xc1_\xe5\x03\x91S\x03\x82\x9c0\x11\xe8 ޏZ;\vj\u007fQu\xac\xed__|\x15Ϲ\xdcd>_\xc7\x0e\xba\xb6\xb4~>\xbf\x9e\xff\xc0\xe1\x1d{\x1e\xf0\xb4\x8c\xf7ѷ\x9c{\xceA\xd8\xe6\xefћW\xb7\xe1{\x81\xf3\x0e\xdc\x04\xbdԾlC\x02\xccϔ\xa8\x92\xd3ΞL9#\t\x9d\xc7v\xa5\x9bթc\xd1`\xb7\xa4\x9a\xd5ic\xf1\x13ݖf\x96\x942\xf6\xd1=\x9ckib\xe9\xe6\xe7\x96\x141\xaf\x9e%*\xf1\xc9\xe9a\x83\x1d\x169v\xa4\x81\rv\xd8'd\x87}\x1e\x16F\xa3\xd6\xc97\x8afps053\xb0+\x92\x97\x8az\x91\x11\x14\xbc${\xc32\x19\x01\x90;NU\x15\xae\xc1\x8a+Ӓ'\x14\xaf*\v)\xda՟\\NE\xb3\x88K4P\x9f\xedұj\xaf(\xa5\x9c\xd0BI\xa7\xf6\x11U\na\xa5\xae?K\x16)\xd6V\xd2i\x12\xb2Y\xb3G\xb3\x99\xdd.\xabba\x15\x1c\x96 _\x1e\xe6 \x82\x96\xe9'lg7\x95*c\x13\xbe\"s\xcaS\xc2/\x0f\xcc\xcc\t%\xf7\x8cs?\xcd1\xb9\x05C̜\xe9Dg*\x97b\x86\x9bA݄᱀̪\x1d\x19\a*\xca\"m\xfdVY]\xc9R\x85\xf5\xfb\xb6qa\x96)I\x1b\x82\xf1\xb3\xb0\xd5\xc7z\xf7\x81M@\xacKP,5\x84:M\x0fL\xc3Y\x1f̆6\xa3\xee\x1c\xb8u\x17J.Y\x0e9\x99\xac\xd2\xe8_樵\x8e\xc9{\x84\x17\xf8\xbe\x90b$`F\xadm\x14\u007fR\x9d\x10wg\xde\xcd\xd3գ\x109˨I\xb0\xb14\x16֫\xcb\xe9\x91%\xa3\x88\x85\x06\xe5F\x03=\x11\x92HT\x8aK\xc1\xcc\nc\xa3\xf3Ґ\\>\x88\xd31\xb6\x9eMaR\x94L\xc0P\u007f\xafյ\x12D\x81\xa5\t\b:\xe1)\xca\tf\xe2\xdeu\x12(\x99\x025eBw\xbf\x195\xd0\xe9\x0fp\xf4p\xd8\xe3\xc0\xb4\x8f\x80NI)4Dߟi؇\u007f\xfc\xd7\x0fg\x1f\xb2\x05\xc8\xd2|R\x0e\u00879\xcb\xe6M\u007f\x03[\x80&\xb2\xecsm\xcdH\xf2\xc2O\xab\x9b\"\x9e\xb9}\xe4/Ϋ\x98\xa45Ɔ\xd8;\xe2F\xeb\xd5\xfc\xaa\xc4\xe9\xa8uS\xcb\xc3^_\xdf\xfe\xf4\xdd\xc5_.\xbf\x1b\x93K\x9a͛eH\x05\xa1VnD\xc1D\xb92\xa7K \x94\x94\x82\xfd\xb3t\x9d\xc7\xc9I\xf5\x9dӐ\x83\x1f\x057-_?\xc9R\xb4\x82\"\x8a\t\xb46\xe8;\xa6\xb1\xd1+B\xf1\xe9\xacR\x03\x99*\xb9\x88cJ-\xeb\x91\\Z0\xce[\x84\x96\xe6\x1c\x14\x90\x19[F\nY\v\xd57G\xa6yH*\xc6#lO\x8f\xd5b\xe9D\x96\x91&\xd0\x1c\x88\x00cOw\x15\xe1\x92B\xb7jږ\x1at\\~\xf9\xa4\xc4T\xeaB\xb1\x05U\x8c\xaf\x9a\x93\xb4\xea\xeb\xb5\f~\xb8U\xac\xa8m\xa2\xf0\xf5\xdb\xcb[r\xfd\xf6\x8e\x14\n\xcbz\xba\x9c\xe1h\v\xd2n/\x99\x80\xdd \xb7\xe1\xf9\x98\\\x88\x95\xfb\x90\xe3\xe5\x91Z\x06g\xda\x00Z*ޕ\x10\x9a\xd6\x1f}5\xc6\xff;\xb2;\xa8bCDUzy\xb6q\xc9\xc6y.\xd8$\xf2\x1e).\xbdA\x03=\xef\xd8$\xa4z\xad]\x9a\xf0뺱\xa8WP\xb8\xbe\xec\xb1ҒV$\x8d[\x88\xccО?\x9e\xec\xd3Iw\x80f\xcd%\xc5{\xdd:\x1d^\xd3\xcaa\xe5\xe85\xc1\xdf#Eì\xba\xba\t\xe4\xe84j\x94\x04\t@-\x1dZ\x9d\x84\xe5n\x82.A\xe2\x8c|E\xfeD\x1eɟ\x12 \xfe\xf1\x0f\u007f\xf8\xfd\x1f\xe3\xfdY}\xf4\x89>ʨ\xf3v_\xdd\xf4\xdc\xe7\xef-\x1b\xb3\x90\xec\xce\x18I&,鎋\xb3\xec\r(+&<\xc5\xc4㲇\xc7\xd6.\xe1\x93${\x97\x85q5\xad\x95/g\xf4'@\xac\x9c\xb0[\b?\xc5\x17K\xfe\xe4\t\xdfN\xf1\xafR\x9bk\xcfΘn\xcc8\x89\"\xfc\xe1&\vj\xb2y\x9b\xdfZ\x13\"\xe9\xd8\xd7\xe5\x97I.1\x96\xe5\xae\x03\xcdYB\xbe\xf0\xc7;\xbai\xe9\xb3-Jݤ\xa8>\xactͭ\x8f~\n\xaf\x97\xbb\x82\xe5\x89<\xa1\x90\xb97\x18\xec\x92\U000c640c\xb5\x18\xdc\xd8b7\xf8(EZ\xf1\x97\xfab\xbe\xe5\x85\x19\x15\xee&\xf1\x14\x94\u009bf)(]a\xc6$\xcb \x81,{p\xc1BI#3\xc9Sh\v\xb5Ɨ\xe4\xeeU|\x19\xc5v機\x03\xfah]\xb4\xfaM2a\xfe\xed\xf5͙\x9d\xd2\x19\x91\x8aܾ\xba\xbb\xe9w\x95\x89\x90\xa3\xbbW7G\x1fpOҢS\xa3\xb6.\x17\xf9n\xa0\x828\xeb\xacOE\x81\xd8D\xe7V\b\xd0Z0\xa3\x05-F\xf7\xb0\x8a\xd2yӱ\x94\x84\xa3\xcdI\xbb\xc5/\xe8\xfe7\xc1\x14М}B\xc5\x14<\x97\xaa\xe7\xd5]Ua!\x97\x91N#\xb4\xf6\x02t\x10y!\x990\xba\xab\xd4B\x14\xd8M\x93\xf1\x93IY\x1cJ-t\x8c\xa1\xd4\xc2\xd61\x94Z\x18J-\f\xa5\x16\x86R\v\xddc(\xb50\x94Z\xf8\xac\x92\xa7\x87R\v\x8d1\x94ZH\x18C\xa9\x85mc(\xb5\xb0\xd7\x18J-l\x8e\xa1\xd4B\xe7\x18J-t\x8c\xa1\xd4¾c(\xb5P\x8d_\xce\x15\x9f\xa1\xd4§z\xc5g(\xb5\xb0\xcf\xf8<.B\r\xa5\x16\x86R\v\x01/C\xa9\x85\xa81\x94ZX\x1bC\xa9\x85ϕ\xa8\x86R\vC\xa9\x85\xa1\xd4B\xf7w\u007f\xedv\xd8Pj\xe1S\xb5\xc3>\x0f\vc(\xb50\x94Z\x18J-\f\xa5\x16\x86R\vC\xa9\x85\xa1\xd4\xc2Pja(\xb5\xf0+\xf2*&i\x8d\n\xb4,U\x16g\a\xb7\x89\xec\x95\\\x14\xa5\x01\xf2.\x80\xaa\x94娅\xa3,a\xbay\xa3\xff\xc3v\"̤\x98\xb2\x99W\xf4\xce\x17T\xd0\x19\x8c*\xfc\x8c\xea\xfbw\xe7\x1f\"7\x9e\xb3\x05\x8b+\xb2`G]\xb1ই\x87#Ѡ\xeekN\xf74\xa6\vj\f(\xf1\x92\xfc\xc7\xc9?~\xfb\xf3\xe8\xf4\xcf''?|5\xfa\xf7\x1f\u007f{\xf2\x8f1\xfeǿ\x9c\xfe\xf9\xf4\xe7\xf0\x8fߞ\x9e\x9e\x9c\xfc\xf0\xed\x9bo\xeen.\u007fd\xa7?\xff \xcaŽ\xfb\xd7\xcf'?\xc0\xe5\x8f{\x029=\xfd\xf3\x97\xd1S=\xb0q\xda>\x8f\xdf!\xe5\xd4)Eȷ\x17\xf4\xd12\xd8xRX\xc8R\x18w\xcb\xc6\x1d\xf3\xeaD\xb84\xac\xd8CI>\x95\x83I\xfa\x18\xda>\x1fm8\x9f\x11c8\x9f\xee|\xbe\xf3\xb4\xd3>\xa1\xd1s\\x\x95i\xc7\t\x8d\x86\x19\x047\x1a\xba\xd5<\x99&r\xc1\x8c5\xa7S\xae\x197\n\xa9\xe0\x95\x94\xa6\x8b\xda\xf1\xaax-o\xeanS0ݼ\xa0Ѹ\x14.\x83훢\x96RQ\xc7)\x90\xe7\x8cr\x982\x01\xb9SO\u007f}\xfc.\xe95\rY\xa9\x98Y\xbd\x92\xc2\xc0c\x94c\xbf}^nۀ\x88ی\xf8C\x13&Dd\xe1\xae\x1d\xadU\bÛ\u007fq*+\x10U\n\xf4g\xb9:\x17`\x9cs\a\xcdp\xbcٳ6\xf9(\xf0\xc1\xf5\xe2\xa8)\xb6\xe4\xaeO)\xd7ь<]\x1a[E\xe6\x8d5\xdf{\xedb\x05\x85\xe4 \xa4\xf1\x1e\xbf\xa4\xd3 \xa7\b\x8d8\x9fB\xe3\xb2@K\xe2%)\x99\xb50f:\xe0\xfc\xa6\x9a9F\x98\xe2S>4\xac\x9bq^\x18W^\x86\xa4\xa0\xbf\x02\x9acM\x99\x82\x9a\xb9\xcbS]P}\x0f\xb9\xfb!QǮB\xb2v\xc6\xd5\xd2\xefV\x05$\xc7SQ\xb7vٿ\x18\xe7\x8d\xf7\xc6\xf6(\xefE\U000f70af\xdeIi\xbe\xaeʘ\xf4\"\xe4オԎ\x03E#e\x8ee\xbb\xed\xfcF\xb8\x89X\xb6\xa5Yi\xc5S_\x8a\x95\xf0\x81\x19\x84*Ņ\xfeF\xc92Z\x15\xd8Pֿ\xb9z\x8d\xfc\xb2\xf4\x192¨\x15\x96\xa6Ja\x12\xed3W\xd9c\u007f\xf39MI\xd96\x15{\b\xe1z\xf2\x86\xae\b\xe5Zz\xc31!\x18\xdc\xe5!!\xdeU\x93r3z\"\xcd|ݧ\x83\xeca\xf3;\xf1\x05\x8c\xea\x04\x9bʓi\x97\xd0Dž\x84`\xe9=hR(\xc8 \a\x91ES\xef\xc7I\x83@ʿ\x96²\x97^\xb4\u007f\x15\xf2\u007f\x9c˸\x9fU\x8f\x99Jަ\xa7\x98\xaf\x84̥Ԡ\\r\x98*!m\xe3\xbf-'\xc0\xc18G\t\x16\xb9\xa5\xc6y\xfe\u0602\xce\xe2O\x135\x95(4\x92\x80Х\x02\xef47$\x97\tf\x80\xaf#e\x97\xfe\xb7\xab\xd7\xe4+rb\xd7~\x8a\xe4?\xa5\x8c\xa7T}\xc1\xdb\x1fk܄M\xc3\x14-J\xe3u\x02\x81ƾr\xac\xfa\x8c\bIt\x99\xcd\x03NS\xbcC\xc1y\xe5oH\xe1\x15\xb6\x815}\x02\xac\xa9\xa7`\xfd\x9b\x06\xd5[\xae\xfe\xed\x03\xc8\xd5>n0˛ڻ\x86\f\x85,\xc0М\x1a\x9a\x12|+E\xa3:\xe2\xdaQH\xa1\xdd\xddG\x01I;\x1a\xe6\xaf\xec(|\x1c)\xad\xe1;&\xcaGw;\xa0\xbfC\xf9\xf6\x12\xc1\x11\x1fJJ\x91(\x13 \xb4(8s\xe5\xfb\xd6Z\xc4\\\xb5H7m\xef7MM\x14\x0f\x94siՌ\x84\xf0\xb8\xa2\"\x97\x8b\x8d\xc5[C\x14h\x82U\xdcXp\xc7\xe1\xdcv\xd8\xe2ew}8\u007fm\x87\xad\x8f\xeb\x9e\xc3\x12\x12\xaa\x94\xaf7Q\xb2P\xacA\x1a\xa8\x06\xc1&y?9\x9d\x00w\xaa\xa1;9z\xf3\xe4${E\x13\x9d\xaaJ\xf2\xfe%/\xdeI\x0e.7> ɂ\xfd\xc5\xe0\b_\xee\x8b#\xf4>\xb5p\x94\xecE\xff\x14qT&hxd\x1dGVMl\xe3Ȃ\xfd\x85\xe0(9\x04\xa1!\xcb䢸Qr\xca\xe2\x0f\xeb\x86\xe8\xf7\xe0\xea\xe4\x9cx\xd1_j\xe8\xca\"G=\x12\x81\xc7k\xe4~2T5.=Q\xe3d\x9e\xbf\xc5\x15\r\xf4\xffk\xa8\x10ȵ\xcf\xd6\xf4\n\xff\xd5\xf8\xd96\xf3\x85\n\x99\a@\x1fT\xbaɌr\xecH\x94F\x17d\x9d6\xd6\x01\xf6\xb8\xcfE\\c;\x0f'\xe4\xf4aK\x16\xfc%\xc13@Bs?\x99C\xa3v\xbc\xbb\x80w\xe7\xee\xcbX\xd8I\x80õ8\xab\xa7\x84\xe4\xab<Į\xec\x17Ӧ+}\xa9\xec7UO%\x8bp\x10yj%\xa8\x82\x9a\xf9\x19Q\xc0\xf1\xe2^`h\xf7Ρu\x9c\xb6O\x8d\x05\a\xce\x106\x0e\xf5l&E\xda%v\\5\x86\x05\x82F\x947\xe5{\a.\x98Ιew\x86\x89YB\nF\xedQ\xa1\x9c\xb72\xf4\x0e\xe1R\t\x9c\xa0ꓺ\xe9:H\xf6\xd9;bn\xfb\x12{\xfb\x0f\xb6\xb87jwE\xbc3e\x87{ù+\xa2A~\x1c\xf7\xc6l\xa1\xe9+e\xbfk\x18\xe5\xb7E|\x87\x1f\xb2N\xcb\u07fc\xb9\xbdh\x83L\xe3\xec\x98\u05eb\x9czla\x12\x9a/\x98\xd6L\n\xf2\x00\x93\xb9\x94\xf7IpOB\xea\xfc\x8c\x99y9\x19gr\xd1Ȣ\x1fi6\xd3\xe7\xfed\x8f,vҚ\x9c0\xc1í\a\xe7!\x14F\x87\x88\x81]L\x9a\x96Ua\x15\t\xd0w*\xf4\t\xae\x9bh\xbfN-R\x857\x16>\xb8J\xb5I\x8a\u05c9\x05ş \xc7d\xbc\xf8\xea2\x8djO\x8e0\xeb}I\x13\xb7v/]\xe8\xe7÷\x11p\xa6Z\x06\xba\u007f\x1b\x81\xbfְH\x0e\xae8D\xa2\xddǦ\xad\x86\u07b5B\xe2\"ډ\xb6\xe41\xd6n\xf3S\xe5\xa2\x1f\x91\x1a\xb0o?\x8f%ی\f\xf16\x92\xb3\xe9\x14\xc2\r\xe7H\xb1WPE\x17\xd6p\xd0ħ\xfeN`\xc6\xdc5\xd3J\xb5\x8a\x8cPTE\xc2Μ\xba\xc7\fY\xb0\xd9\xdcyi\b\xc5R\x94\xf1\xe5&\x8d$\\Ҝ \x17\x97\x8a=4\x9f\xde{\fͧ\x87\xe6\xd3C\xf3\xe9\xd814\x9f\x1e\x9aO\xef=\x86\xe6\xd3C\xf3\xe9\xa1\xf9\xb4\x1bC\xf3\xe9\x8414\x9f\xde6\x86\xe6\xd3{\x8d\xa1\xf9\xf4\xe6\x18\x9aOw\x8e\xa1\xf9t\xc7\x18\x9aO\xef;\x86\xe6\xd3\xd5\xf8\xe54=\x1b\x9aO\u007f\xaaMφ\xe6\xd3\xfb\x8cϣ5\xdc\xd0|zh>\x1d\xf024\x9f\x8e\x1aC\xf3\xe9\xb514\x9f\xfe\\\x89jh>=4\x9f\x1e\x9aOw\u007f\xf7\xd7n\x87\rͧ?U;\xec\xf3\xb00\x86\xe6\xd3C\xf3\xe9\xa1\xf9\xf4\xd0|zh>=4\x9f\x1e\x9aO\x0fͧ\x87\xe6ӿ\"\xafb\xe2M\x91\x9cE\xb5lۣ[@J\xed\x93P\xbb\xd32\xb2r:\x05\x85\xc2\x17g\x17\x94\xa3\xb4K`\xa13T%\xba}F,6\nT@sW\xf3\"\xce/\xd89\xadP\x84\x14ۗ\xb9{\xa9\x91\xe1\x01r\xf9\xf6\xeb\xda\xe9\x9a\xd2\xea \xedv \xae\xe7\xad\xc8\xd2\xef\nՄ\xd0Q\x9d5\x0e\xb7.\x01?\xe3R\xfb{\xb2\x88\xeclN\x85\x00\xee\x95n\x16\x87\xd99\xd5d\x02 \x88,@8\xb5\x85\x12\xcdČ\x03\xa1\xc6\xd0l>\xb6+\x88\xf3\x9ey\"\xf0]\xeb\xea\x99j\xa3\x80.\x1c1(X\xc4\xf6\x19\xb4S$4SRk\xb2(\xb9aE5I\xa2\x01KeD&-]M\xeb\r\xc6$\xf1\xfa\x02\xeaY\xb5\x8a\xe89\xba2h\x8d3o\xa82g\xd8\x0evQ\x98\x95\xbbK\x15'\xf8\xb0k\xa7҆d\x9c\x810~ծ>#\xce\xf3\x8c\xc4\xe6\xc6\xe3\xf5]\xb7\vڣV\xe4\xe8\x15)\x8cv7}\xd2&꧘3\xed\xbdo\xfa\x8cP\x13\x04e4\xd1\aZB\xb2\x0f\n\x9c\x9b\xb5\xff)q\x9auI\u007f]_5\xab\x99\xe1\x94\xd38\xc500\xa5\xb3V-\x87\xda>\xc4$wd\xabQ`\xb1\xec\x90\xc3\x02\x1e\x1c\x01K\xcb? \x03\xb6D\u007f\x90\xe5\x8cQ\x10\u05f9\xe8\xb33ц\xee\xfa\x06\xb4\xa63\xb8\x89L\xb1\xd9\xe6 \xc6,\x9b\x9a\xb8\"\r.\xacFfdC\x87\xab/\xa0\xb4-\xd0(\xb0\v\xb7\xc6\xca\xe6|P\xcc\x18@\"\xc6\xceU\x98y\x18\x99\a\xbe1\xb9\xe6\xf5\x987\xe1\x83\xeeC\xb1Tk\xf5)\x91\xbbK\x1d\x13 \x13\xc5`J\xa6LP\xee\xefa\xc4]8\xc2~\x16T[ҤZ\x83B\x9f\x8bw;\x05\xdc\xc4\x11\xec\xf7\x1e\x91F\x95\"\xa3\x8d.\x97X\xfd\x8eM\xc9\f\xefzD\x1a\x13s*ȿ~\xf5\xef\u007f$\x93\x95Ղ\xd186\xd2P^m \a1\x8b\xac\xed\xef\xc5S\xbb\x0eYE\t\x9c-X\xac[\xc8\x1a\x03\xbf\xbb\x9f\xb4\x03\x8d\xe79,\xcf\x1b\xf49\xe2r\x16\x87\xd3W\xe1~eug2F\x91Or\xedw\xb0\x01\xc9Y\xb6Jf\x04\xa1y\x0e\x99\xcb\a\xe7\xca\xebyb\xeb+\x8e\x85,J\xeeR2\xbe\x0e\x95%\xa3@\x96\x1a6\xabau\xf2\xc1Xj\bS[\xef\x10\xee\xaeL\xf9\xa5\xc4)-\xbe\xf0\x9c\x0f\x8dW=s\xd0O\xfc5\xe5|B\xb3\xfb;\xf9\x9d\x9c\xe9\xb7\xe2R\xa9\xc86\xfbH\xfd\x01\x1f\x9cZ-f^\x8a{ly[\xd7\x1a\x96q\xd2V\x96\xa6(M\xb8\xe4\xddt\xef\x86͌\xae\aY)h\xc13\\\xcf\x0e\x1e\xed\xb9E\xf7l\x1c;\xf0\xc5w\x1cw\xe1rV\xcd[\af\x10{#\xe8w_\xfd\xeb\xbf9\x96E\xa4\"\xff\xf6\x15^\x19\xd5gN\x88\xa1n`\x15\xd9\x05\xe5<6\x98\xd5d0\x96\xe8\xc7\x1dL\xe2\xd9y\x84Ig\a\xcfbr\xdf\xdd\xfd\x1d\xedmf4\xf0陫=\x12<\x88Q@\x8fQ\x89;\xf6R\x16\x8b\xdc|\x04\x83v)y\xb9\x80װdY\\\x84\xbf\x85\xea\x16\x94\x10\t\xe2L\x1b\"\xe3\xaa@L\xb8\xcc\xeeI\xee\x015\xeef\xac\xf7\xb1\x8e\xc1L\xc2-\x94\xad\xab\xab\uf7d0\xd8fD\vZ\x14U-\aE\x1fZ\x8bE^\x12}\x01\x85\xa6\x06\xaaӳ:\xdctc\x15\xf6\xf0n\x03\xab5\xa0@0E\xac\xf4s\xc3\u07fc\xdehH\x15:\xe8%\xe5\x1a\xf8=qz\x9a\xdd9\xe4\xcc\xf1\xe1\xf5\x1eI\x0fiwzZ8\x16U\xae\xc0\x82\x1ao\xd3$\xe6\xcf \xd5\x16\xa04\xd3V\x81y\x8fg\xe2\x15\xa7l\x91~\xc3?\xa5!A\x8f\x16\xb0)y\t\xa3\x06\x9dF\xbe\x18\x8d\xe8^u\x8f\xe2\xee\xb68\x96\x86-}ӹ\xfe\x8d\xcc= dծ\r\xb35e\xa3\xc9a[\xa1\x87^\nG_\xb6\xff\xbe\xc6Q\x93\xeb\xbbu\xc6\x1fg<@\x0e\xa6g\xf6\x1f\x83}\xe3\xe4\x0f\xc0\xbd\x91o\xfbe\xf4\xad;\xd7t\xd8x\x82j\x98^\xdeG2v\xb9\xb1\t\xe0-\x05\xf9\xe9\x91\xe3\x97\xc7\x1f\x94\x87;t+Y\xd0\x19Z#=\xb1\xbe\x0e\xae_\xa1Yk&#Īg\f\u0085\xbc\xaam\x9e\x04\xd4]\xa8\xaf\xe5p0\x9f\xb0\xf2X\x02\xc4\a\xba\"T\xc9R\xe4.\xf6P\a\xa5ެ\xa1\xe3Z\x8a\x94)\xfb路4Uմ\xc54\x01&ȋ\xf1\x8b\xaf>7\xc1\x8f+Y\x13\xfc\x89\x85\x9f\x1b|\xeb\x83b!\xb4l\uf2497\xde\xc5ZwXO*;\xe9b@\b\xe4A1\xe3\xa9\xf9\x81i '\xb1^\xf30\xa4jֲ\x0e\xfc{\xd8\xe9\xfbj\xa1\xe3\x1eVU\xd8\x1d\xf1b\u007f\b\x01\xd0\x1a\x15\xbe\x8d\xfbnٿ3ʹ\x97\xbe\x11\xb0\xb6\xf7\xf4+4+\xb0\xc4\xe7HŮ\xe1X\xfbV\xcdR\xe89+\x9eJ\x8e\xa1\x98\xb2-\xa7\x01\xfbU\xf3^\a\xde\xd1ߕ8#\xd7\xd2\xd8\xff\xb9|d\xfa\x89\v9v/_K\xd0\xd7\xd2\xe0ӽ\x91㦶7j\xdc\xe3H\xd2\xc2\xf1H\xbc\xa4\x84ߨ\x96y\xf5\xf4\xfd\xf7\n\xc5L\x93+a\x19\x95\xc7AuYQ{\xf0\xcd;\x86\xc8\xd5vk\xa2\xee\xdb-\xf8\x0e\xad\xf6\x1bM\xcc5?\xb5\x1b\xe5\xadi\xb8)8\x8f\xb6\xfb\v&h\x17\x9cf\x90\xfb>\x13v㍢\x06flw\xfb\x81\x05\xa8\x19&\x1ad\xf3]\xab\xda#t\xb8\xa7\xe2}\b\x15y;\xab\x19Uh\u007f\x0e\x15\xda\xcb\x10\x14\x9f[\xb0\x11:\x89Q~\xf3$G{\x12c\x9b\xb2\xc8}\xda\vsZX\xca\xff\x1f˞\x91\x88\xfe\x97\x14\x94)=&\x17\xfe\x86ʖ\xef6\xdf\xf0\xbaN\x13\xb8\x85\xcb4\xb1\xbb\xb0\xa4\x1c\\\xa1b*\b\xec,\xbf\"\xa7\x1b\xd2\xf2\x8c<̥F\xc9P\a\x91\x8e\xeeaut\xd6:![ ڇ\xaf\xc4\xd1Y\x15/k\x1d\xcaJNa\b\xe3\b\xffv4\xde\x10\xb0[`?!vwRɎ?VZ\xf7\x1b\x97ڴ\xb9\xf3\xfb\xd2\xc7N\xdaب\xc0\xd8\xfcf\x8b8\x9a\xcaqˬ\xe8\xfa$U30]&\x88ט1\x95aL.\xc4j\x03.^\x8c\xebT\xb9\xbd\x11W\xd1Y\xd1j_\x84--1C\xa2\x01\xca'.\xe9nC\xd8>\xb8\xb9k;6\x05\x05\xa8Zµ\xcc\xe1F\xaa\xae\xfc\x8ev\xbcf\xfd\xf9\x0e\x8b\xb6\x81\x14\xc9s̳\xc7G;拺\xb1\u05cb\x0fi|\xfa\xef\u07fc\u007fj=\xef\xaa\aw/\x84bo\r\xb7_\x1d\xeb\xb0ﻻ6\x82\x16z.\r9\t\x97\xda3.\xcb\xdc\xdf\xecW\x1d\xf1\x9e\x1e\xab\xd4\xd9\x1c\xf2\x92Cw\xd3\xc1\x8d2\x95\xe1Ѡ\xfb\x95\x82\xfd\xb3l\xb7\xe8\r\x1e*\xfft\xd7A\xa8qR\x99\xd6\r\x8f\xaaeG\u007f\xc1\xfd\f_\xf2V\xa4\x87\xbc%\x15\xbe\tҝ\x05\xa9\r\xdeS\x12\xa6Qt-\x98\x9d\x99o\xcf\xe1\x1f\xef\xbcf\x17ְ\xed8t\xb0\x8fn\xe1:\xf2_݈\x88o9V.\x97\xbe\r\xa3\x8b\xe6n]\xce}F\vS\xaa\xd0\xfe\xbaT\xd8\x0f\xacnaB\x03\xe6<\x8aZ`\xb7\x1b\x06\xde/Ȥ\xb8c\vІ.\x8a'(\xe4\xd5\xe6\x1bv\x03\xa4\xcauU\xe9\xa4\xe9\"\xa8\x9bnuYŴn\xf5\x96\x8f\x1b\xb0\x1d\x18\xd4\xc9,h\xc8\t,A\x10\u007f\xc9\a#\xef\xce\x01\xd1\x01\xf4\x0e\x8d\x13\xb5\xc4X@\x80\x83\xf9\xbeS\xa9\bvի\xa6\xbeI\x11\xe1\xeaxN\r\x8c:o\x12\xeeu\x12;\xa5\x8e\xeb\x91\xfb\x04\x82/]#]\x94@\x19\xe6\x89\xd9\xed\xe5ܽ\x1dn\x1e\xf8\xab~\x0f\xa0\x80\xcc@X\x14wr\x1c\xafʺVO\x16\xb1\xfe\x04W\x0e\x9c;\xd7\x1d\xab\xa4<\xb4\xf0\xc5\n8A\xaalu\x99\xe1#\x9d\xb7\xacv]\xa0\xf77>\xde\x01\xd5]yK-D|\xdd|\xd6\xdb*\x0e\a\xb8\xf4\x8c\xba>y\xaec)S\xd0I\xfa~J\x12\xbf\x1cq\xc6\t)\xe6T?\xc5.o\xec3UK\xaeơ\xac8\xe5\xbb-s\x02Q.6\x81\x8f\xc85\xccr\v\x1e;\xd8f\x9b\xfe\xeb\x85\xed\x00I,\x99?\xccY6wZ\x80\xa5M\x84Cr\t\x1a9\x87\xd5TW\xdb\x16I\x9e\xda{\xff\x91]\xbc\xa3\x1eO\x9c\xa9ux]\xfc\xa4\x1e{\xf0\xdbz<\xc1y78\x8b\xff\xbdSt\xd6㗉\xd8 J\x12\x88\xf6j\xe3\xd5\xc3\x12-ZUVۿ\x9a\x12X\x14fuF\x98\t\xbf>\x05\x91r\xde\xf8\xfeg\xbc1\xf1\x14\u007f\xb5\xfe\xe6A)~\xe7\xae<\x05\xd1\xeeJ\xf5\xf9\xcfpSPX\xdczY\xb1\xf7\x86|\xd7|댰i\xb5!\xf9\x19\x992n@\xad\xedL\xaf\xf3r\bd\xec#\xef\xecXP\x93\xcd/\x1f\xadf\xa3k\x0fԞxY\u007f\xd9\xe9\xc4\xc1Hh\v\xe6'\xe0\x12\xb4_\x99\x82\x85\xb3\x8b\xef\x10\x9b\xf5/hP\\\\\xbf\x86|\x17z\xc8~\x94\xb7\xb1\x90\x8b\xb5\xc96?\xed\x15\xfd}\x97\xe1U\x9f\xcahr\x1e\x8f3B\xc9=\xac\x9c\xc6B\x05\xb1\x9bC\r껝\xe6\xd3&r\xd0\xf5\xe2\xd4cX!\x18\xefKy\xf2\xed}I\xc1\x8d{\xe8\xd0\xf7\xbbF\v\x81vN\xde\xc2u\x98\xb4? \"\xd0\xf2\xde\x1fy\x04\xfdb\x81\x17=\xbd8\xb2?#\t#\xe0>a\x99ն5\xfc\x87\xb8\xb1\xc7\xdam\x91=\x05sV\xec\xb9Pt\x1fj\xc0\xd3\x12h\x94-\xa03Zx\x1cG\xc1ll/\xd1+a\xe8\xe3K\xc2\xc60&G_6\xfet\x14\x05\x13\xb1U(i\x97\xe9\xe2\x11\x0e\x8b\x9c\x19P\x94\x93\xa3&不\xbf\xb4넼I\xa0\xf85\x01KP\xce\x0ep$\xb7\xaf\x03\xdf\r\x053\xaar\x0eZ[\x9e\xfb0\a3\a\xe5\xddJ\x9e\xc8 \xc6\xeb\xec\x86T\xf6|u&\x87\xd6\xe9\xa0Q\x10C\xeah\x9d\xb15f\xf2<\x97\x99>7T\xdf\xebs&\xacH\x1d\xe5\xd4\xd0Q\x83\xe9\x9e;i8\xf2\xf2y\x14,\xe9Qu\x1c\xcf\u007f\xa3J!\x98\x98\x8dh\xf5\x14\x13#:\xd2s\xe0\xfc8b\x96Q\xe2\u008dh{\xb7\xf9ZL\x80!\xd21\xe1F\x9b\xa3_V\f\xdc}yL\xae\xa5ٕ\x81\xb6}T\"\fq<\xee\xe4\xf1\x97\xd7w\xef\xfe~\xf3\xf6\xea\xfa.\x96\xb57\xc5\xc2vV\x9f\xc6$[b\xa1\x83\xd5\xc7\xed\xfe.\xb1\xd0f\xf5Qp\xb7\x88\x85\rV\x1f\x87\xd8\x0e\xb1\xb0\xc9\xea\xe3X\xf0\xa6X\xd8\xc2\xea\xa3\xc0\xae\x8b\x85\xad\xac>\nj[,lc\xf5Q \xbb\xc5B\a\xab\x8f\x17B\x9bb\xa1\xcd\xea\xe3 n\x17\vk\xac>\nl\xb7X\x18X}\xc7kq\xac\x1e\xc42\x99\xcd\u007f\xe7ͯ\x06+\xaa\xf6<\x8e\x0e\x8dČ\x03&\xda|\xaeK+x^̷]\x82b\xf9\x9e\xb6\xd3*Ds\xb1Q\x90I}\x1cB\xc66\x8a\xb5ʢ\x8dc1)V\x9a\x1bOEκ\xc7f<\xcd_\x14I\xc7\ai\xe0dL\xde\xf8\f\x03J^\xfdt\xf5\xfa\xf2\xfa\xee\xea\xeb\xab\xcbwqH!\xe9g\x87\x84\xa4\x91\x9e\xa89\xee0\x0f\x13\xf0\xb2[s\x88\x16\xc8n\x14\n\x96L\x96\x9a\xaf\xaa\xf4\xf6\xfeG\u05cd\xf5\x93\xebS\xcaVD\x83Z\xb2,e\xb6\x9dS\xeb\xa3\xea\xb8\xf1\xa4\u0093\xbe\xfa'Ԟ\x04\xc0\xdbmb\xaf\xfc\xa4\x90\xd6!-c\x0f\xf2\x19\xecc7\x9e\xb0\x92\x13 \x1eV\x81j\xccr\xa7\x1a\x95\x00t\xb7\x8dM\xf6N\\l\x0eT\xbf^Ô\x96\xdcyێ\x8e\xc61\xba\x8c\x1b}Y\xec\xd7J\xee\x19@i\x8e\x16\x9b\xbdu\x17\xb0B\xc4\xe00B\xe8\xd8'ƶ\xd4\x0e\x1di\xaf\xba\xc1|\xeed\xb0)\xa3\xf2\xe6\xea\x91.\xe5\x89\vIO\xd9\xec\r-\xbe\x85\xd5;\x98\xa6\x80XG;\xe6\xcc\xfa\xf4\xd2XӠ\x1e\xa8\xf5\xb8\xa9\xa5pžx!1\x19\xc5]\xa3\x85\x93;\x9f\xfd\x8c:\xacEOڒH\xbf\x83\x15F\x9av\x17F[\x95i\xa8y\xc9\x10+\u007f\x88\xd9\xd7pˤȠ0\xfa\\.\xad\xee\x00\x0f\xe7\x0fR\xdd[K쁙\xf9\xc8\xc5\xc3\xf49^\xc39\xff\r\xfeO\x8f\xd9ݽ}\xfd\xf6%\xb9\xc8s\"\x91Ֆ\x1a\xa6%wiw{g\xfav\x8d\xba\x8e\xc2\x19\xde\xe5?#%\xcb\xff\x1c\xcfl\xc38\x00m\xc8\xc2eb\x1e\x88>n1\x92\xbf\nR\xaa\a\xae,\v\xaf8\x02\x91\n\xc3o\xfb\xa4\xc1n\x1f!a\xd9+\xba=\xd1>\x91\x92\x03]\xaf[\xb1\xdf\xd8?4\xdc5\xf6K\a\xee\x1a\x11\xe1㮁'\xe00R\xe3\xb8\x16\x1b\xfb\xa5\xb3v\x0fop\x162\u007fItY\x14R\x19]\xd5h\x18[F\x10\x17ϨG\v\b\xde\xed;#\xffY\xfd\x88wG\xf4\x0f\xc7\xc7\u007f\xfa\xf6\xf2\xef\xff\xe7\xf8\xf8\xc7\xffL\xfdN\r\xb3Q^\xe7\x10\x80u\x01\xd9X\xc8\x1c,\xcb>s\xff\xf4\x96\xd7E\x86\t2\xd7=У\r5\xa5\x1eϥ6W7gៅ̯nz\x82D\x18:A\x05%\aQ\x02\xb6պ\x89\x19-J\x0f5qz\vM_>\xc7\xd2\xfb\xd7\xf6\xc8\xdcP3\xdf?Ůk<(f\f\b\xb4UA-4\x91\xd33\xcb\x1d\xd1\x14\xe8û%9Z\xbe\x88\x8cP\xb6\x00\xf4\x17lӀ\xa2\x03m#b۳\x9b>\x1c\x8b\x04צe\u007f\xc1KPeS\xf6\x00zqs\x15j-}D\xc4\xf7\x95lն}\f\xf9\x16\x12ο~\x169\x17\xa0\xf7\x13uuN\xb1\xbb\x83\xb1\xdfM\xde\xed\x833,\xcaDE^\x17f:q?\x8e\xb3\xa2Le\xe6\x1e\xc2\x02\x16R\xad\xce\xc2?\xa1\x98\xc3\x02\x14\xe5#m\xa4\xa2\xb3d\xf1\x13\xa6\x8aS\xac\xff\xe5>\x97\xca\xf9\x1b(\u061ci\\\x12O\x03\xaa\x02\x92\x95\xcaZ;|\x15t\x14\xc8?\x9a|\xab觻*Ծ\xa3M\xe4u\xb2z?[\xb3\xe6\x1f\xe8\xc6YJ^.@\x9fUVJ\x0f\xc0\xe8\xd2\x14K\xb2\xa4J\u007fT\x8b+gK\xa6\xf7M\x97\xee\x1aT\xac\xde&\xb2&\x82<\xd6-\x82\t\x03\xb3\x1e&\xda\xe8\x10\xc8\xe84\x1f}\xf9\x88\x1e\x9b-KS\x94\x98<\xbc\xa0\xa6\x8aJ=\x162\xcds\x17F\xa3\xa0O\xdet\x98\xbeHqc\xbbQPc@\x89\x97\xe4?N\xfe\xf1۟G\xa7\u007f>9\xf9\xe1\xabѿ\xff\xf8ۓ\u007f\x8c\xf1?\xfe\xe5\xf4ϧ?\x87\u007f\xfc\xf6\xf4\xf4\xe4\xe4\x87o\xdf|sws\xf9#;\xfd\xf9\aQ.\xeeݿ~>\xf9\x01.\u007f\xdc\x13\xc8\xe9響L\x9e\xf2\xe3\xa8\xf6Ќ\x980#\xa9F\x8e\b\x9e,\xf6\xb0k\x04\xe4\x1e\x8a'\xbd\v\x9aH_\xc1K\x9a\x1a\xdbGd\x1d}U\xab^h\xe8\xa9Yi\xc8\x14\x98O\xcf\xe7\xec\xe6\x15\xd4pw\x8b\xa92\xf8\u007f1n\xe8\xfe\xa6\xa7CSm\xb7`}G\x82\x01\xfa\x1e`1\xb4\xbf\xc4:\x12\xfe\v\xf7\x90\x10\x11\tcp\x95\x0f\xae\xf2m\xe3\x97\xee*\xbfu\xe7\xa7\xf6\x93\xa3\xb7\xbb\xdf\xd9\x1c\xfc\xe4I\xd2.\xf9\xe5\xb4պ2\xe4Q\xaf$\xce01\x9706\xb4ߙOX\x17\x92#\x85,JN\xf7\xbe\x1d[\xcdc3sh3\xb90\n\xa6\x17\xafua\xd0:/ݥ\"D\x1f\xc1\xcd\\7r\xc19a\xc2\tI\xfc\xd8\x03\xe3qv0\xa659\xaf\x03\xa1._qi\xd1\xf00\a\x91t\xb7\xd2\r\xa6\x896T\x19&fc\xf2\xbd\x85\xe5\xb41\x9f\x8b\xc2\x04Y\x94ܰ\"2!\xa9\xb2\xb0\xaa\xda$\x84j-3F\x8d\xc7p\xb4@\xe5T\x9b\xb0%\x98\x96c\xe8=f\\f\x90\x83\xc8\x00kY\x95\x91r0\xec\xf9de1z)\x96nn\x94\xe4\xa5K)\x86h\xee\xd3=\xb7\x8f\x9d\xeej\x8f\xafO\xad\xa9\xb3^#\x99\"\xfa\xb8\x1d\f9\xadK\x89U\xf1\xdd8x\xe9*v\x95\xfd\x92d\x86l\xe8\xd6u|\xbaҌS\xa2\xaaJ.>p\x16P\xba\x9a\xbbUŭ\x15\xd5D}\xe1SSo\x9fE\xb5=\xa4Z\xdbS\xa5\xed\xa7\xce\xeeRe{X<\xf5\x89:D\xb2F?\x05\xb4\x87\x12X(\x98\xb2Ǟ\x1c\xe6BT{DX\x0e°)K\xb2\x13\xacΤ\xa0\x00\x81i\xc2@\xb3\xb9+\x83)\xdaI6)4\xfd\td\xe8;\xcf\xc1a\x18\xfa횟c\xe0\xe6\x037\xdf1\x06n\xbe{\xf8\xe3\xf4\x19\xb3\xf2\x0fh)\xe3\xcd\xe5\xf4\xebկ\x1b\xf7\x9f\x91#<\xc7]\xf9\xea\xbcօU\xce\xf1\x8bq\xc7\x12\x8b\xc0\xe2ѳVd%\xe4\\1}\xf9@\xe6l\x16\xeb\x11\xe3\xb0\x04\xee\xf5{\xb2\xa0\x82\xce\\)M#C\xa8.\xf6v\x84eI\x8a\xe5\xad\xc2k\xb8T+8-\x9b\xe2\x92\xc6\xd1r\xdd.O\x13\xce\ue07c\x86\x82˕\xaf\x98)rrk\xa8\xb1l\xe9\x16L\\\x02\\\x12\xf3\xc0\xd5ܔ\x9cok\x9e\xb3}\xb4I\xef\ni\xae(9'\x05\x82\x1a\x93\xb7\x02b\xc32\x17\xfc\x81\xae\xf4\x19\xb9\x86%\xa83r5\xbd\x96\xe6ƙ\x9b\xf5\xfd\x94\xb8\xc3+=P¦\xe4\xa5k\tG\f\x9d\xa1뢪_\x17G\x14\xaa51'L\x1e\x98\xeek\xa7G\v̍\x03\xf8\x1b\xfc\xaa\x15\x9d\xee\xdf\xcfN>\x9cM![e<\x9dg]d\x98\xecZ\x97_\xaf\xcfm\x9c\xcbh\xa5\r,B\xd90t\xa00,3YH\xa1\xc1\x15\xd4K\xf1pU+t\x0e3\xdds\x8fS\x95\xbcBjsk\xa8ڳL[=ڧ\xf4&\x80\xb1\xe4\x9fQ\xce!'l\xb1\x80\x9cQ\x03<\xdeO\x1e*\x806\xcb=\xba\x0e\x9f\xae\x98d\x92\xde0\xa7\"砰^\xa1\xf7\x01\xb6\xe0\x1bP\v&hl\xc1\x10R\xa5w\xa1\xcb\x12rB\xb3L\xaa\xdcׂ\v\x95\xbd\xa8\x8a\xd7\xf8+\x8e\x87\xbaRC\xf2\xac\xe7\xebEC\x9ep\x99\xddkR\n\xc3x]\x1e2Ԇ\xf4\xbd)\xa3\xa1&\xb1\x98\xea?Gՙ\x18a?\xb2\xf3\xdf\xd4\u007f\xc2\x1fb\x95\xdf>\x96\xcf~\xf5|7\xc7Z\rJ@\xd2\xc0dJ\x19/\xb6\xc2\xc0\xbc`i\xd5\x17KTu}\xd5JФ\x19\x19X\x80\xb8\xddU\x87\"\xdbĺh\xf4>\xb2\n\x89\x1b}s\x14\x12j\x015ǎ\xb2\xc5ɱ\xc6Pؖ3\x01\xcd\xfa\xc5\fk\xa2\xa6\x870\x9b'\xd8\xf1#o\xa1\xa6\a\x81\x99\xc2\x1e#\xabFmK7\xf7>\xc9\xfcJJCN\x8eϏO7\x82Z\xc7\xe9P\xa7\x8c\x83\x93\xae\xae\xc8RVmV2H\xcd\x16\x05_\xe1\xfe\x1c\xe7\xd8\xd1\xc9_\x87UeZ\x8c\x98 S\xb3\xbb\x1c\nB\x9d\x11-\x89Q4t\x19H\x9f\xab\x85f\x81\x1bUz]\xe5\xe4\xf8\xe7\xe33\x02&K\xcd\a&\xe4A\x8ac\x83d4&w\x92\x94\xba\x9ex2̕,\x89\x00W\a\x00\x1e\v\xce2f\xf8\n\xc5|2LY\x1aW|\x11\x1b$b\xa1\xad\xcbGf\xfc=\x9dt\xb0S\xf2\x15\x9ev\xa7*\x10j\x8d\xa1%\x9cρr3O\xbf\xdfg\xe9RH1\xfaoP\x12\xcbx\t\x0f1ջ\x93\x10;k\x8e\x03d\x9c\xa4\xb8\x11\xd6\xdfNLb\xb0\n\xc27\x10\xadr\x92\x8d\x8e\xa4ww7߀i\x8b\xb0$t\xd8\x19\x85\xfc|ti\x83\x9aJ\xd5\xd1e\xf8\xe9\xd1W\xfeͥN\xc2\f\xd9\xecת\x8d\xeb>\xe1\x8c\x14\x91\xe6sv\xc3\xc8vZ\xb2\xcfh$W7\xe9\x89X\u007f\x97\xa5\xc5քN\xf8\xaa\xaa\"\xab\xc1\x90#;\xf5\xf4\xb4g&p?\xff\n4Ǻ\xbdB\x1b\xa0\x89*\xd2\x01\x8eZc.\x87Qj\\\xdfݹ\x03\xd9cG\x9b%\xb0<\xed\x8f\xf1L\xa5\xb3IW\xe1EA\xe1د\x9f\xe3Gb\x92\x1b\xbc\xc2\xed\x82\xff}\xd2+7\x91\x86\xf6\xc7n\x89\xbe\xb6sb\xf1\x8e0\x98\xc0i\xe2\xa1\xe81\xbb\xfeY¤w\xb6*銀9\\\xf5\x82\xe9\xef^Ƨ\xa5\xad\x8f\x83\xdc/I.\xe1\xd5\x1cω&\x9c\xde\xc7\xc7S\xbfTK\x92\x96\x88\xd8~\xbd\x1f&z\xdeP \xbd\xf5-\xbc̓|\xddx\U000f2c51\x84fYZ\xa1(7|\xf7rdX\x1a\xd426\xc1\xb1\x1e\xbdI\xac\x90\xf1\xfe\xcb0z]x;\xccu\xb7\x83\\v먗\xa8\x88(\x17\x93\x1e\x9c\xa4*\x80\xa1LM0~\xe3{8S\xaab\x9b\xd78\xbd\x10\xc2\xed\xa3\xef\xa1\nC\xc5\f\xc8\v;\xd3?\xfe\xe1\x0f\xbf\xff\xc3\x18ѐ\f5\x04\x96\xa9 W\x17\xd7\x17?ݾ\u007f\x85E\xdcR\xa9\xfcYn\xb6aنd\xf9ӎ\xcc#(\x8b\xbdRc\xa1\xb3>;lm\r\xef\xffv\xcee\x9d\x1agk\x0e#\x91\xdd|$>\xd3G\x88\x8d\xf0\x10}h;\xdbdŭ\xcc\xee\x0f`i\x1f߽\xbaq\xa0jc;i\x17\xa8\b.f&\x96\x92/]\xbf\xc0\xbbW7\x88\xa0\xb4\x9d\xb5oc|\x00]}+;\xc7p\x13ޥ\xe6$Ae\x8b\xc2w̤D\x01\xe5L\x1b\x96ᷪ0E\xa2}/\xefS\xb2x>\x19\xbf\xc2\xf1ې\x0e\x84.\x86\xe4Ӽ\xe6\x9ah\xb9\x18\xfa\xb0\x88\x86k\"\xf5Jנ\x91\x1c\\#q\xa2^\xaa~z\xfc\xa0\x91|\xda\x1a\xc9\xe7&#\x93_-\x14\xdc\x1aY\xf4̚p@\x0e\x943\x11:\xd1mKj y\u0096\xba\xde\xd1\x177W\x95w\\\xb6\x12\x110y%\x1a\xaa.\xb3y\x88\xcd\b\xd0\xfa\x1c\xd3#\xca\xc2y\xbeBC\xc9\xf8\x88U\xa1\x00\xbb\xf0IqVU$@t\x80p?\x82\xc9\xe2O\v\xfad|\ue20f'\x86\xedꛆ\x91)\xaa瀝*\xe0\x91\x19\x1d\xba]S-\x85\v\xe1\xfa\xedc2>\x80\xc94)\xa8\xd6.pg\xeaE\xb8\x8f\xdc\xc8\xfc8!zۘ\x10\x99)\x9a\x01)@1\x99\x13\xac\xfa\x97ˇ\xf8yN`Ƅ\x0e\xf4k'\x1a\x0e\x86Օ )\"\\w\x9e}\xd7\xea\"\x85\xed\xcaK\x93\xc9\x04>\xec_\xf7X\\O \x8a\xbe:\x89Ӵǧ\xa4\x9c\xaf\xea\x83\x1anz\x9a\xc3o\xd2f&Q*\x12\xeau\xafg\x12\xc5G\x03[\x99G\xf6(\xd4YI}ȿE\x9dL\xdbS\x95\xcd{\xb4\xf9\"\xf1\xe9\xcbCjӓcHm\xda{\f\xa9MCjӐ\xda4\xa46\r\xa9M{\x81\x18R\x9b\xaa\x19\r\xa9M;Ɛ\xda4\xa46==\x86Ԧ!\xb5\xa9\x1eCj\xd3^cHm\xdac\f\xa9MCj\xd3\xd61\x04\x12\x87Ԧ_c qHm\x8a{}Hm\x8a\x18CjӐ\xda\x14Ɛ\xda\x149\x06\x8ddHm\xfa5j$\x9f\x9b\x8c\xecU],\xf2\xb5\x90\xc7s\xa3\xe4\xa4G\x99\xb1\x1b\x8cճ̧\x01\xc9irm\x1d7\x9d1y\xd5J\xcf\xf0M\xf8]\x95\x96(\x88>ѧNO\xea[\xaf'\xba&S(\n\xa6\xcf\v\xe9\xfe_\x9dS\xd0H&p\xfe\xb5\x18\xe1\x90*|S\xb2\b\x9e\xca H\xe2u\xbb\xb3\a0\x13 \x1a\xe6!3\a\xfah7=2\x06vd\v\x04\xb0I̵;S`-⟜\n\xe2\xb3\x046\xa3\xfd}\x12.0\x15n#ҟ\b\xb1\xca\x0e\xd8\x16\xe5OS\xc9\xf5\xe1#\xfc\xcf\x10\xdd?|d\u007fGT\x9f\xacd\x99\x04sKD\xdfG\xe6\x13i\xb33\x9a\x1f\xa2\xf2i0\xbb#\xf9\xad\x88|*1\xf5\x8a\xe2\xf7\bN\xf5T\xae\xd3=\xc9ɚ\x92O6\xbe\x9b+\xd0sɣym\x8bϾa\x82-ʅe\x13ڲG\xb6\xac\xb2\x99\xe3i$\xe499\xadÅ\xe1,`\x96\x036\xb1\xa4\x8c\xa7\x94\xaa\xc3\xd2zs\x8a\xfe\t]f\x19@n\xe5\xe4\xeb:\x04\x1e\r\xf3\xf7\xe3j宫\x06\xd3\xe4E,幆\x8ah\xdf\xfd\xfewI\xbb\x9fb\x19&&l<\x9d\xac\x81\x90\xa31\xd9?Q\xa3\x8f\xba\x91\xeaHy\x9e\xe4\x8c\x1d\x89\x19\xe4\uf262aGR\x06aib\xf6@\t\x19\xbd8g\xcfD\x8c\x1dI\x18\x1eG\x89\n\xc8f\x02\xc6z\"E\x1a\xcaӓ/zȶ\xe7J\xba؞p\x91J\x92\xa4w\xb2E\xffD\x8b\x03v;\xac3\azw\xc7\xef\xe5\xa2;\x80\xe7\xb0gR\xc5s\xa1\xe5\x10)\x04\x1f\xb1\xfbl\xf2\xae\xf6I\x9e\xe8\x998\xd1'i\"5abG\xb2D\x1fOs\xcfD\x89^\xe4\x93\x1a\x8eH\x0eE\xf4\x0fC\xf4\x0eA\xecH\x88\xe8\xd3\x13\xb63\xf4\x90ڿ0\x8cv\xd8a-|\x90\xa8\x166C\x0e\a\r\x1d\x1cI\b=(:\x95\xf9'\x05U\x92\x996\x13\xcc0\xca_\x03\xa7\xab[Ȥȣ5\xa3\xb5\x86H\xd5y\xd5\x0e\x9c\xb3\xcc\xe33!Z\xb71\xe7\xd4w΄<\\\xa8\rѐx֊\xea#\xa1\x18\xa7\xb0\xab7\xedۓ\x1f7nA>\x9a\xcb\xc0])=\x04\x11\xfcU>\x1095 \xc8\t\x13\x81\x0e\xe2\xfd\xa8\xb5\xb3\xa0\xf6\x17U\xc7\xda\xfe\xf5\xc5W\xf1\x9c\xcbM\xe6\xf3u\xec\xa0kK\xeb\xe7\xf3\xeb\xf9\x0f\x1cޱ\xe7\x01O\xcbx\x1f}˹\xe7\x1c\x84m\xfe\x1e\xbdyu\x1b\xbe\x178\xef\xc0M\xd0K\xed\xcb6$\xc0\xfcL\x89*9\xed\xecɔ3\x92\xd0ylW\xbaY\x9d:\x16\rvK\xaaY\x9d6\x16?\xd1mifI)c\x1f\xddù\x96&\x96n~nI\x11\xf3\xeaY\xa2\x12\x9f\x9c\x1e6\xd8a\x91cG\x1a\xd8`\x87}Bv\xd8\xe7aa4j\x9d|\xa3h\x067\aS3\x03\xbb\"y\xa9\xa8\x17\x19A\xc1K\xb27,\x93\x11\x00\xb9\xe3TU\xe1\x1a\xac\xb82-yB\U0006ac90\xa2]\xfd\xc9\xe5T4\x8b\xb8D\x03\xf5\xd9.\x1d\xab\xf6\x8aR\xca\t-\x94tj\x1fQ\xa5\x10V\xea\xfa\xb3d\x91bm%\x9d&!\x9b5{4\x9b\xd9\xed\xb2*\x16V\xc1a\t\xf2\xe5a\x0e\"h\x99~\xc2vvS\xa926\xe1+2\xa7<%\xfc\xf2\xc0̜Pr\xcf8\xf7\xd3\x1c\x93[0\xc4̙Nt\xa6r)f\xb8\x19\xd4M\x18\x1e\vȬڑq\xa0\xa2,\xd2\xd6o\x95Օ,UX\xbfo\x1b\x17f\x99\x92\xb4!\x18?\v[}\xacw\x1f\xd8\x04ĺ\x04\xc5RC\xa8\xd3\xf4\xc04\x9c\xf5\xc1lh3\xea\u0381[w\xa1\xe4\x92吓\xc9*\x8d\xfee\x8eZ똼Gx\x81\xef\v)F\x02f\xd4\xdaF\xf1'\xd5\tqw\xe6\xdd<]=\n\x91\xb3\x8c\x9a\x04\x1bKca\xbd\xba\x9c\x1eY2\x8aXhPn4\xd0\x13!\x89D\xa5\xb8\x14̬06:/\r\xc9\xe5\x838\x1dc\xeb\xd9\x14&E\xc9\x04\f\xf5\xf7Z]+A\x14X\x9a\x80\xa0\x13\x9e\xa2\x9c`&\xee]'\x81\x92)PS&t\xf7\x9bQ\x03\x9d\xfe\x00G\x0f\x87=\x0eL\xfb\b蔔BC\xf4\xfd\x99\x86}\xf8\xc7\u007f\xfdp\xf6![\x80,\xcd'\xe5 |\x98\xb3l\xde\xf47\xb0\x05h\"\xcb>\xd7\u058c$/\xfc\xb4\xba)\xe2\x99\xdbG\xfe⼊IZcl\x88\xbd#n\xb4^ͯJ\x9c\x8eZ7\xb5<\xec\xf5\xf5\xedO\xdf]\xfc\xe5\xf2\xbb1\xb9\xa4ټY\x86T\x10j\xe5F\x14L\x94+s\xba\x04BI)\xd8?K\xd7y\x9c\x9cT\xdf9\r9\xf8Qp\xd3\xf2\xf5\x93,E+(\xa2\x98@k\x83\xbec\x1a\x1b\xbd\"\x14\x9f\xce*5\x90\xa9\x92\x8b8\xa6Բ\x1eɥ\x05\xe3\xbcEhi\xceA\x01\x99\xb1e\xa4\x90\xb5P}sd\x9a\x87\xa4b<\xc2\xf6\xf4X-\x96Nd\x19i\x02́\b0\xf6tW\x11.)t\xab\xa6m\xa9A\xc7\xe5\x97OJL\xa5.\x14[P\xc5\xf8\xaa9I\xab\xbe^\xcb\xe0\x87[Ŋ\xda&\n_\xbf\xbd\xbc%\xd7o\xefH\xa1\xb0\xac\xa7\xcb\x19\x8e\xb6 \xed\xf6\x92\t\xd8\rr\x1b\x9e\x8fɅX\xb9\x0f9^\x1e\xa9ep\xa6\r\xa0\xa5\xe2]\t\xa1i\xfd\xd1Wc\xfc\xbf#\xbb\x83*6DT\xa5\x97g\x1b\x97l\x9c\xe7\x82M\"\xef\x91\xe2\xd2\x1b4\xd0\xf3\x8eMB\xaa\xd7ڥ\t\xbf\xae\x1b\x8bz\x05\x85\xeb\xcb\x1e+-iEҸ\x85\xc8\f\xed\xf9\xe3\xc9>\x9dt\ah\xd6\\R\xbc\u05ed\xd3\xe15\xad\x1cV\x8e^\x13\xfc=R4̪\xab\x9b@\x8eN\xa3FI\x90\x00\xd4ҡ\xd5IX\xee&\xe8\x12$\xce\xc8W\xe4O\xe4\x91\xfc)\x01\xe2\x1f\xff\xf0\x87\xdf\xff1ޟ\xd5G\x9f裌:o\xf7\xd5M\xcf}\xfe\u07b21\v\xc9\ue311d\u0092\xee\xb88\xcbހ\xb2b\xc2SL<.{xl\xed\x12>I\xb2wY\x18W\xd3Z\xf9rF\u007f\x02\xc4\xca\t\xbb\x85\xf0S|\xb1\xe4O\x9e\xf0\xed\x14\xff*\xb5\xb9\xf6\xec\x8c\xe9ƌ\x93(\xc2\x1fn\xb2\xa0&\x9b\xb7\xf9\xad5!\x92\x8e}]~\x99\xe4\x12cY\xee:М%\xe4\v\u007f\xbc\xa3\x9b\x96>ۢ\xd4M\x8a\xea\xc3J\xd7\xdc\xfa\xe8\xa7\xf0z\xb9+X\x9e\xc8\x13\n\x99{\x83\xc1.9o\b\xc9X\x8b\xc1\x8d-v\x83\x8fR\xa4\x15\u007f\xa9/\xe6[^\x98Q\xe1n\x12OA)\xbci\x96\x82\xd2\x15fL\xb2\f\x12Ȳ\a\x17,\x9442\x93<\x85\xb6Pk|I\xee^ŗQlg\x9e\xfa9\xa0\x8f\xd6E\xab\xdf$\x13\xe6\xdf^ߜ\xd9)\x9d\x11\xa9\xc8\xed\xab\xbb\x9b~W\x99\b9\xba{us\xf4\x01\xf7$-:5j\xebr\x91\xef\x06*\x88\xb3\xce\xfaT\x14\x88Mtn\x85\x00\xad\x053Z\xd0bt\x0f\xab(\x9d7\x1dKI8ڜ\xb4[\xfc\x82\xee\u007f\x13L\x01\xcd\xd9'TL\xc1s\xa9z^\xddU\x15\x16r\x19\xe94Bk/@\a\x91\x17\x92\t\xa3\xbbJ-D\x81\xdd4\x19?\x99\x94š\xd4B\xc7\x18J-l\x1dC\xa9\x85\xa1\xd4\xc2Pja(\xb5\xd0=\x86R\vC\xa9\x85\xcf*yz(\xb5\xd0\x18C\xa9\x85\x841\x94Z\xd86\x86R\v{\x8d\xa1\xd4\xc2\xe6\x18J-t\x8e\xa1\xd4B\xc7\x18J-\xec;\x86R\v\xd5\xf8\xe5\\\xf1\x19J-|\xaaW|\x86R\v\xfb\x8c\xcf\xe3\"\xd4Pja(\xb5\x10\xf02\x94Z\x88\x1aC\xa9\x85\xb51\x94Z\xf8\\\x89j(\xb50\x94Z\x18J-t\u007f\xf7\xd7n\x87\r\xa5\x16>U;\xec\xf3\xb00\x86R\vC\xa9\x85\xa1\xd4\xc2Pja(\xb50\x94Z\x18J-\f\xa5\x16\x86R\v\xbf\"\xafb\x92֨@\xcbReqvp\x9b\xc8^\xc9EQ\x1a \xef\x02\xa8JY\x8eZ8\xca\x12\xa6\x9b7\xfa?l'\xc2L\x8a)\x9byE\xef|A\x05\x9d\xc1\xa8\xc2Ϩ\xbe\u007fw\xfe!r\xe39[\xb0\xb8\"\vv\xd4\x15\vnzx8\x12\r\xea\xbe\xe6tOc\xba\xa0ƀ\x12/\xc9\u007f\x9c\xfc\xe3\xb7?\x8fN\xff|r\xf2\xc3W\xa3\u007f\xff\xf1\xb7'\xff\x18\xe3\u007f\xfc\xcb\xe9\x9fO\u007f\x0e\xff\xf8\xed\xe9\xe9\xc9\xc9\x0f߾\xf9\xe6\xee\xe6\xf2Gv\xfa\xf3\x0f\xa2\\ܻ\u007f\xfd|\xf2\x03\\\xfe\xb8'\x90\xd3\xd3?\u007f\x19=\xd5\x03\x1b\xa7\xed\xf3\xf8\x1dRN\x9dR\x84|{A\x1f-\x83\x8d'\x85\x85,\x85q\xb7l\xdc1\xafN\x84KÊ=\x94\xe4S9\x98\xa4\x8f\xa1\xed\xf3ц\xf3\x191\x86\xf3\xe9\xce\xe7;O;\xed\x13\x1a=DžW\x99v\x9c\xd0h\x98Ap\xa3\xa1[͓i\"\x17\xccXs:\xe5\x9aq\xa3\x90\n^Ii\xba\xa8\x1d\xaf\x8a\xd7\xf2\xa6\xee6\x05\xd3\xcd\v\x1a\x8dK\xe12ؾ)j)\x15u\x9c\x02y\xce(\x87)\x13\x90;\xf5\xf4\xd7\xc7\xef\x92^Ӑ\x95\x8a\x99\xd5+)\f\xe5Cú\x19\xe7\x85q\xe5eH\n\xfa+\xa09֔)\xa8\x99\xbb<\xd5\x05\xd5\xf7\x90\xbb\x1f\x12u\xec*$kg\\-\xfdnU@r<\x15uk\x97\xfd\x8bq\xdexol\x8f\xf2^4\u007f+\xf8Ꝕ\xe6몌I/B\xfe\xde[K\xed8P4R\xe6X\xb6\xdb\xceo\x84\x9b\x88e[\x9a\x95V<\xf5\xa5X\t\x1f\x98A\xa8R\\\xe8o\x94,\xa3U\x81\re\xfd\x9b\xab\xd7\xc8/K\x9f!#\x8cZai\xaa\x14&\xd1>s\x95=\xf67\x9fӔ\x94mS\xb1\x87\x10\xae'o\xe8\x8aP\xae\xa57\x1c\x13\x82\xc1]\x1e\x12\xe2]5)7\xa3'\xd2\xcc\xd7}:\xc8\x1e6\xbf\x13_\xc0\xa8N\xb0\xa9<\x99v\t}\\H\b\x96ރ&\x85\x82\fr\x10Y4\xf5~\x9c4\b\xa4\xfck),{\xe9E\xfbW!\xffǹ\x8c\xfbY\xf5\x98\xa9\xe4mz\x8a\xf9J\xc8\\J\r\xca%\x87\xa9\x12\xd26\xfe\xdbr\x02\x1c\x8cs\x94`\x91[j\x9c\xe7\x8f-\xe8,\xfe4QS\x89B#\t\b]*\xf0NsCr\x99`\x06\xf8:Rv\xe9\u007f\xbbzM\xbe\"'v\xed\xa7H\xfeS\xcaxJ\xd5\x17\xbc\xfd\xb1\xc6M\xd84LѢ4^'\x10h\xec+Ǫψ\x90D\x97\xd9<\xe04\xc5;\x14\x9cW\xfe\x86\x14^a\x1bX\xd3'\xc0\x9az\nֿiP\xbd\xe5\xea\xdf>\x80\\\xed\xe3\x06\xb3\xbc\xa9\xbdk\xc8P\xc8\x02\fͩ\xa1)\xc1\xb7R4\xaa#\xae\x1d\x85\x14\xda\xdd}\x14\x90\xb4\xa3a\xfeʎ\xc2Ǒ\xd2\x1a\xbec\xa2|t\xb7\x03\xfa;\x94o/\x11\x1c\xf1\xa1\xa4\x14\x892\x01B\x8b\x823W\xbeo\xadE\xccU\x8bt\xd3\xf6~\xd3\xd4D\xf1@9\x97V\xcdH\b\x8f+*r\xb9\xd8X\xbc5D\x81&Xō\x05w\x1c\xcem\x87-^vׇ\xf3\xd7v\xd8\xfa\xb8\xee9,!\xa1J\xf9z\x13%\v\xc5\x1a\xa4\x81j\x10l\x92\xf7\x93\xd3\tp\xa7\x1a\xba\x93\xa37ON\xb2W4ѩ\xaa$\xef_\xf2\xe2\x9d\xe4\xe0r\xe3\x03\x92,\xd8_\f\x8e\xf0\xe5\xbe8B\xefS\vG\xc9^\xf4O\x11Ge\x82\x86G\xd6qd\xd5\xc46\x8e,\xd8_\b\x8e\x92C\x10\x1a\xb2L.\x8a\x1b%\xa7,\xfe\xb0n\x88~\x0f\xaeNΉ\x17\xfd\xa5\x86\xae,r\xd4#\x11x\xbcF\xee'CU\xe3\xd2\x135N\xe6\xf9[\\\xd1@\xff\xbf\x86\n\x81\\\xfblM\xaf\xf0_\x8d\x9fm3_\xa8\x90y\x00\xf4A\xa5\x9b\xcc(ǎDitA\xd6ic\x1d`\x8f\xfb\\\xc45\xb6\xf3pBN\x1f\xb6d\xc1_\x12<\x03$4\xf7\x9394jǻ\vxw\uef8c\x85\x9d\x048\\\x8b\xb3zJH\xbe\xcaC\xec\xca~1m\xbaҗ\xca~S\xf5T\xb2\b\a\x91\xa7V\x82*\xa8\x99\x9f\x11\x05\x1c/\xee\x05\x86v\xef\x1cZ\xc7i\xfb\xd4Xp\xe0\fa\xe3P\xcffR\xa4]b\xc7UcX h\xc4S䁖\xc1\x1f}\x17\x88-\xa1Oʧ ͏\xdcJ*\x8fgZT͎{&r\u007fo\xac\x85|\xef\nK;{\xce.\xc3[\x9f,o2ח\xe4\x1fig\xaf\xda02\xda<\xdaI\x10\x9b\xec\xa0\xe3h'\xc1t\xec\xe0\x9d3\x17CM\xa5QOW4q^\xacf\xb0\xb3B@B.k\x18\x15\xf7\xfa\x9b\xc03hY\xe4\x88\bً\x93՜1\xd0\xc0ч=_\xe9\xe5\x1b\x12\xd4\xe1d\x95ꁉ\\>\xe8CyS\xbew\xe0\x82\xe9\x9cYvg\x98\x98%\xa4`\xd4\x1e\x15\xcay+C\xef\x10.\x95\xc0\t\xaa>\xa9\x9b\xae\x83d\x9f\xbd#\xe6\xb6/\xb1\xb7\xff`\x8b{\xa3vW\xc4;Sv\xb87\x9c\xbb\"\x1a\xe4\xc7qo\xcc\x16\x9a\xbeR\xf6\xbb\x86Q~[\xc4w\xf8!\xeb\xb4\xfc͛ۋ6\xc84Ύy\xbdʩ\xc7\x16&\xa1\xf9\x82iͤ \x0f0\x99Ky\x9f\x04\xf7$\xa4\xceϘ\x99\x97\x93q&\x17\x8d,\xfa\x91f3}\xeeO\xf6\xc8b'\xad\xc9\t\x13<\xdczp\x1eBat\x88\x18\xd8ŤiY\x15V\x91\x00}\xa7B\x9fຉ\xf6\xeb\xd4\"UxcძT\x9b\xa4x\x9dXP\xfc\trLƋ\xaf.Ө\xf6\xe4\b\xb3ޗ4qk\xf7҅~>|\x1b\x01g\xaae\xa0\xfb\xb7\x11\xf8k\r\x8b\xe4\xe0\x8aC$\xda}l\xdaj\xe8]+$.\xa2\x9dhK\x1ec\xed6?\xc5\xe3\xa6\xd3!\xa9\x8e\a\tG\x05\xbdM\xbc\x98\xd3\x11:\bP\xdeX\x81\x96\x041\x18;s)\xa4r\xc7۪\xf4R$\xf4\xfcv\x03\xfdW.\xdf\fi\xd6+\x1a\x8d\xedz\x95\x9e\xeei\x87O\x87\xc3\xf46\xac\rd\xd5\x16\xe7\xd8I/S\xff\xc0\xcc\x1c\xdb7͡\xf5\x81t\xcc*И\xb0$\b(%\x95\xbf7\x12\x12\rR\xeb*;\xfd\a/\xb7X\xa6@\xed\xbf\x8eu\x9f\fZ\xd2j\x1fk?\xa0-ǁ\xe9\x1424\xd9\x1b;\x97\x04܅hN\xea~c\xfej\xb8eB\xf6\x9b\x89\xc7k\xc1\x1e-\x06\x9al\xa0'\x16B_\xacn\x90\xa7cB\xae\xd2\f\xd1p\xb1\xfb\xccr\x9a&t\u007f\xb3(\x95\x14D\xab35n\xa2\x0f\xe7\xa5I\x06\xc0\xac^;\xa3tɐ\x92oA\x9a9\x17\a\x11Ø{\xe1\x81\xd9#\xe8\x99P\xaaOl3\u007fc#\x1f#\xcd9\xb6\x9e\xc3\x11\xfcc\xc91\x84\x1d\xb9\x1c\x84Ňq\x89˙:h>\aْӑ\x9e\xddD\x9e;É<_\xb4\x99\x1c \xe2L>J\x94'\xedⷫ\xe8ܳ\xcd\xefm\x03JãiU\x8f\xa8\xb5{q\xea\xaa\xdaWU\xb1\xf9*T\xe3g\xff\x1d\x9b3\xdfn?/\xa4+6\xd0,u\xef\xfb\x9aƩ)\xa50\x8c\x87\xe0բ\xe0\xd6xl\xcd8:\x1b\x12a5\xfa\r\x9fUȨ\xdb\x1b\xfbB\xffq\xe7\xe5\xbfP\fU-\x8dC=\xef\x9b\xeaS.\xfa\x11\xa9\x01\xfb\xf6\xf3X\xb2\xcd\xc8\x10o#9\x9bN!\xdcp\x8e\x14{\x05Uta\r\aM|\xea\xef\x04f\xcc]3\xadT\xab\xc8\bEU$\xec̩{̐\x05\x9b͝\x97\x86P,E\x19_n\xd2H\xc2%\xcd\trq\xa9\xc8\x03U\vk\xb1\xd0l\x8e\xf5\x1b\xa9 y\x19}\xf0\xb1\x93\xdcj\xa4\r5@d\x01\xae\xa4\x84\xdb\x1b\x8boW]+\x8eL\x87\xe6\xd3C\xf3\xe9\xbd\xc7\xd0|zh>=4\x9f\x8e\x1dC\xf3\xe9\xa1\xf9\xf4\xdech>=4\x9f\x1e\x9aO\xbb14\x9fN\x18C\xf3\xe9mch>\xbd\xd7\x18\x9aOo\x8e\xa1\xf9t\xe7\x18\x9aOw\x8c\xa1\xf9\xf4\xbech>]\x8d_Nӳ\xa1\xf9\xf4\xa7\xda\xf4lh>\xbd\xcf\xf8\x0f\vch>=4\x9f\x1e\x9aO\x0fͧ\x87\xe6\xd3C\xf3\xe9\xa1\xf9\xf4\xd0|zh>\xfd+\xf2*&\xde\x14\xc9YT˶=\xba\x05\xa4\xd4>\t\xb5;-#+\xa7SP(|qvA9J\xbb\x04\x16:CU\xa2\xdbg\xc4b\xa3@\x054w5/\xe2\xfc\x82\x9d\xd3\nEH\xb1}\x99\xbb\x97\x1a\x19\x1e \x97o\xbf\xae\x9d\xae)\xad\x0e\xd2n\a\xe2zފ,\xfd\xaePM\b\x1d\xd5Y\xe3p\xeb\x12\xf03.\xb5\xbf'\x8b\xc8\xce\xe6T\b\xe0^\xe9fq\x98\x9dSM&\x00\x82\xc8\x02\x84S[(\xd1L\xcc8\x10j\f\xcd\xe6c\xbb\x828\xef\x99'\x02ߵ\xae\x9e\xa96\n\xe8\xc2\x11\x83\x82El\x9fA;EB3%\xb5&\x8b\x92\x1bVT\x93$\x1a\xb0TFd\xd2\xd2մ\xde`L\x12\xaf/\xa0\x9eU\xab\x88\x9e\xa3+\x83\xd68\xf3\x86*s\x86\xed`\x17\x85Y\xb9\xbbTq\x82\x0f\xbbv*mH\xc6\x19\b\xe3W\xed\xea3\xe2<\xcfHln<^\xdfu\xbb\xa0=jE\x8e^\x91\xc2hw\xd3'm\xa2~\x8a9\xd3\xde\xfb\xa6\xcf\b5APF\x13}\xa0%$\xfb\xa0\xc0\xb9Y\xfb\x9f\x12\xa7Y\x97\xf4\xd7\xf5U\xb3\x9a\x19N9\x8dS\f\x03S:k\xd5r\xa8\xedCLrG\xb6\x1a\x05\x16\xcb\x0e9,\xe0\xc1\x11\xb0\xb4\xfc\x032`K\xf4\aY\xce\x18\x05q\x9d\x8b>;\x13m\xe8\xaeo@k:\x83\x9b\xc8\x14\x9bm\x0eb̲\xa9\x89+\xd2\xe0\xc2jdF6t\xb8\xfa\x02J\xdb\x02\x8d\x02\xbbpk\xacl\xce\aŌ\x01$b\xec\\\x85\x99\x87\x91y\xe0\x1b\x93k^\x8fy\x13>\xe8>\x14K\xb5V\x9f\x12\xb9\xbb\xd41\x012Q\f\xa6d\xca\x04\xe5\xfe\x1eF܅#\xecgA\xb5%M\xaa5(\xf4\xb9x\xb7S\xc0M\x1c\xc1~\xef\x11iT)2\xda\xe8r\x89\xd5\xefؔ\xcc\xf0\xaeG\xa411\xa7\x82\xfc\xebW\xff\xfeG2YY-\x18\x8dc#\r\xe5\xd5\x06r\x10\xb3\xc8\xda\xfe^<\xb5\xeb\x90U\x94\xc0قź\x85\xac1\xf0\xbb\xfbI;\xd0x\x9e\xc3\xf2\xbcA\x9f#.gq8}\x15\xeeWVw&c\x14\xf9$\xd7~\a\x1b\x90\x9ce\xabdF\x10\x9a琹|p\xae\xbc\x9e'\xb6\xbe\xe2XȢ\xe4.%\xe3\xebPY2\nd\xa9a\xb3\x1aV'\x1f\x8c\xa5\x860\xb5\xf5\x0e\xe1\xeeʔ_J\x9c\xd2\xe2\v\xcf\xf9\xd0x\xd53\a\xfd\xc4_S\xce'4\xbb\xbf\x93\xdfə~+.\x95\x8al\xb3\x8f\xd4\x1f\xf0\xc1\xa9\xd5b楸ǖ\xb7u\xada\x19'mei\x8a҄K\xdeM\xf7n\xd8\xcc\xe8z\x90\x95\x82\x16<\xc3\xf5\xec\xe0ў[t\xcfƱ\x03_|\xc7q\x17.gռu`\x06\xb17\x82~\xf7տ\xfe\x9bcYD*\xf2o_\xe1\x95Q}\xe6\x84\x18\xea\x06V\x91]P\xcec\x83YM\x06c\x89~\xdc\xc1$\x9e\x9dG\x98tv\xf0,&\xf7\xdd\xdd\xdf\xd1\xdefF\x03\x9f\x9e\xb9\xda#\xc1\x83\x18\x05\xf4\x18\x95\xb8c/e\xb1\xc8\xcdG0h\x97\x92\x97\vx\rK\x96\xc5E\xf8[\xa8nA\t\x91 δ!2\xae\nĄ\xcb\xec\x9e\xe4\x1eP\xe3n\xc6z\x1f\xeb\x18\xcc$\xdcBٺ\xba\xfa\xfe\t\x89mF\xb4\xa0EQ\xd5rP\xf4\xa1\xb5X\xe4%\xd1\x17Phj\xa0:=\xab\xc3M7Va\x0f\xef6\xb0Z\x03\n\x04S\xc4J?7\xfc\xcd덆T\xa1\x83^R\xae\x81\xdf\x13\xa7\xa7ٝC\xce\x1c\x1f^\xef\x91\xf4\x90v\xa7\xa7\x85cQ\xe5\n,\xa8\xf16Mb\xfe\fRm\x01J3m\x15\x98\xf7x&^q\xca\x16\xe97\xfcS\x1a\x12\xf4h\x01\x9b\x92\x970j\xd0i\xe4\x8bш\xeeU\xf7(\xeen\x8bci\xd8\xd27\x9d\xeb\xdf\xc8\xdc\x03BV\xed\xda0[S6\x9a\x1c\xb6\x15z\xe8\xa5p\xf4e\xfb\xefk\x1c5\xb9\xbe[g\xfcq\xc6\x03\xe4`zf\xff1\xd87N\xfe\x00\xdc\x1b\xf9\xb6_FߺsM\x87\x8d'\xa8\x86\xe9\xe5}$c\x97\x1b\x9b\x00\xdeR\x90\x9f\x1e9~y\xfcAy\xb8C\xb7\x92\x05\x9d\xa15\xd2\x13\xeb\xeb\xe0\xfa\x15\x9a\xb5f2B\xacz\xc6 \\ȫ\xda\xe6I@݅\xfaZ\x0e\a\xf3\t+\x8f%@|\xa0+B\x95,E\xeeb\x0fuP\xea\xcd\x1a:\xae\xa5H\x99\xb2\x8f~\xfbJSUM[L\x13`\x82\xbc\x18\xbf\xf8\xeas\x13\xfc\xb8\x925\xc1\x9fX\xf8\xb9\xc1\xb7>(\x16B\xcb\xf6\x9e\x98x\xe3]\xacu\x87\xf5\xa4\xb2\x93.\x06\x84@\x1e\x143\x9e\x9a\x1f\x98\x06r\x12\xeb5\x0fC\xaaf-\xcbӶK/\xa9w{\xbf\xa2\xa7\xba\x9c<\x83dp\f=\x01=Ȅ\xba|\xf1:\x1df\x87Xi\"\xfd(\xa5\xd3lj\x9bͱ\xabzu\xfaA\x0f\x89߲\xcb\xc7\"\xa1s\\k\xdb.\x1f\v\x8a^\xff\xa2\u07bf\x94sR\x8b\xf0\xed\xfb\x97\x00w\xbbZ\xf0\x17\x98\xd3e\x92\xfc\xd3l\xc18U\x1cS\xcbn\x1d&ɤ4\x04Ē))\x92n_\x10\xb2\xa4\x8aa\xb5q\x05X\v2\x03M\xbe\xf8\x80S\xe6\x1e\x19\xe9L\x16\x9d\xecA\xd5/W\xfa\x8c\x9fT\x1e\nN\xe0\xfd\xe4\xea&\x8d\xab쥍T\xb0\xa5\xb2\xb6(9_\xbb\xd4\xd8\xd97\xc1>g\xb5\x93-w\xbbv\xd9\x0fa\x8a\u0590\xd4\x05\xdd\x1be\x8d\x17\\\x02\xbe\xe6,C\x87\xbd\b\u007fp\xffeg\xed?ұB\xb7\x97.\t\x15\xf3\xb20:{\x86\xc9\x15\xa2\xfe\x82\xab\xa0\xe0>\xbc\xb9\xfc\xadN\xc1\x9d\ai/\xa4u\xd1a\x98H$\x91\xd5ϯ!,P\xce>\xf8\xda$\x9b&\xc6j\x1a\xf4\xcfMhv_\x16\x9f\x16\xfa\xb0\x03\xf5-p\xd4\r\x9e@\xddw\xcdg\x1d\xda\x16`\xe8\xf2Ÿ\xfd\x17k[3n0\v\xb9S5{p\x99\x90\x16k\xee\xc2YΖ,/)oQ`\x03g5j\xf1B*\xe3]\tRX\x12\u05ff\xdf\xc2qua0\xfa\xac\xee\xf6\x02\xa3\xe3Ǫ\xdf>\x15\xb6\x9b\x05\xb7\u074bk\xaf8,\xfa8\xaeo\a\xae\x03\x1e=k\xb7\xf6\xc3\xd64\xdb;_\x900<\x87+\xbf\xb8~\xbdM\xbd\xd9\xe9\xb2oM\xf5b\xc7t\xfc\x99\xa96|W\x17\x06\xaf\x88\xf9;_\xfa\x8cPr\x0f\xab3\x97\xfc*|\x19z\x0f\xc4u\r\xf6j\xc3=lWU\xec\xcb\x0e\xde6\xc4\xec\xe3\xc0\xbf\x87\x9d\xbe\xaf\x16:\xeeaU\x85\xdd\x11/\xf6\x87\x10\x00\xadQ\xe1۸\xef\x96\xfd;\xa3\x9c{\xe9\x1b\x01k{O\xbfB\xb3\x02K|\x8eT\xec\x1a\x8e\xb5o\xd5,\x85\x9e\xb3\xe2\xa9\xe4\x18\x8a)\xdbr\x1a\xb0_5\xefu\xe0\x1d\xfd]\x893r-\x8d\xfd\x9f\xcbG\xa6\x9f\xb8\x90c\xf7\xf2\xb5\x04}-\r>\xdd\x1b9nj{\xa3\xc6=\x8e$-\x1c\x8f\xc4KJ\xf8\x8dj\x99WO\xdf\u007f\xafP\xcc4\xb9\x12\x96Qy\x1cT\x97\x15\xb5\a\u07fcc\x88\\m\xb7&\xea\xbe݂\xef\xd0j\xbf\xd1\xc4\\\xf3S\xbbQޚ\x86\x9b\x82\xf3h\xbb\xbf`\x82v\xc1i\x06\xb9\xef3a7\xde(j`\xc6v\xb7\x1fX\x80\x9aa\xa2A6ߵ\xaa=B\x87{*އP\x91\xb7\xb3\x9aQ\x85\xf6\xe7P\xa1\xbd\fA\xf1\xb9\x05\x1b\xa1\x93\x18\xe57Or\xb4'1\xb6)\x8bܧ\xbd0\xa7\x85\xa5\xfc\xff\xb1\xec\x19\x89\xe8\u007fIA\x99\xd2cr\xe1o\xa8l\xf9n\xf3\r\xaf\xeb4\x81[\xb8L\x13\xbb\vK\xca\xc1\x15*\xa6\x82\xc0\xce\xf2+r\xba!-\xcf\xc8\xc3\\j\x94\fu\x10\xe9\xe8\x1eVGg\xad\x13\xb2\x05\xa2}\xf8J\x1c\x9dU\xf1\xb2֡\xac\xe4\x14\x860\x8e\xf0oG\xe3\r\x01\xbb\x05\xf6\x13bw'\x95\xec\xf8c\xa5u\xbfq\xa9M\x9b;\xbf/}줍\x8d\n\x8c\xcdo\xb6\x88\xa3\xa9\x1c\xb7̊\xaeOR5\x03\xd3e\x82x\x8d\x19S\x19\xc6\xe4B\xac6\xe0\xe2ŸN\x95\xdb\x1bq\x15\x9d\x15\xad\xf6E\xd8\xd2\x123$\x1a\xa0|\xe2\x92\xee6\x84탛\xbb\xb6cSP\x80\xaa%\\\xcb\x1cn\xa4\xea\xca\xefh\xc7k֟\xef\xb0h\x1bH\x91<\xc7<{|\xb4c\xbe\xa8\x1b{\xbd\xf8\x90Ƨ\xff\xfe\xcd\xfb\xa7\xd6\xf3\xaezp\xf7B(\xf6\xd6p\xfbձ\x0e\xfb\xbe\xbbk#h\xa1\xe7Ґ\x93p\xa9=\xe3\xb2\xcc\xfd\xcd~\xd5\x11\xef\xe9\xb1J\x9d\xcd!/9t7\x1d\xdc(S\x19\x1e\r\xba_)\xd8?\xcbv\x8b\xde\xe0\xa1\xf2Ow\x1d\x84\x1a'\x95i\xdd\xf0\xa8Zv\xf4\x17\xdc\xcf\xf0%oEz\xc8[R\xe1\x9b \xddY\x90\xda\xe0=%a\x1aEׂٙ\xf9\xf6\x1c\xfe\xf1\xcekva\rێC\a\xfb\xe8\x16\xae#\xffՍ\x88\xf8\x96c\xe5r\xe9\xdb0\xbah\xee\xd6\xe5\xdcg\xb40\xa5\n\xed\xafK\x85\xfd\xc0\xea\x16&4`Σ\xa8\x05v\xbba\xe0\xfd\x82L\x8a;\xb6\x00m\xe8\xa2x\x82B^m\xbea7@\xaa\\W\x95N\x9a.\x82\xba\xe9V\x97UL\xebVo\xf9\xb8\x01ہA\x9d̂\x86\x9c\xc0\x12\x04\xf1\x97|0\xf2\xee\x1c\x10\x1d@\xef\xd08QK\x8c\x05\x048\x98\xef;\x95\x8a`W\xbdj\xea\x9b\x14\x11\xae\x8e\xe7\xd4\xc0\xa8\xf3&\xe1^'\xb1S\xea\xb8\x1e\xb9O \xf8\xd25\xd2E\t\x94a\x9e\x98\xdd^\xce\xdd\xdb\xe1恿\xea\xf7\x00\n\xc8\f\x84Eq'\xc7\xf1\xaa\xack\xf5d\x11\xebOp\xe5\xc0\xb9sݱJ\xcaC\v_\xac\x80\x13\xa4\xcaV\x97\x19>\xd2y\xcbj\xd7\x05z\u007f\xe3\xe3\x1dPݕ\xb7\xd4B\xc4\xd7\xcdg\xbd\xad\xe2p\x80KϨ\xeb\x93\xe7:\x962\x05\x9d\xa4\xef\xa7$\xf1\xcb\x11g\x9c\x90bN\xf5S\xec\xf2\xc6>S\xb5\xe4j\x1cʊS\xbe\xdb2'\x10\xe5b\x13\xf8\x88\\\xc3Cǯ_#ѿ\xf7m\x95;\x8e҈\\\x89\x1b%g\xaa\xabJ\xec(\x1c\xac\x0e\n\x19\x91\x1b\xaa\f\xa3\x9c\xaf\xbe\xee\xeeF\x13\xbe\x1e\x85;?\x95'\xb5\x04\xf7X\xad\x882\xe1Ο\xa5T:\t\xbd\xaa\xfd\xc6\x1e뚎;69|tl\x8dP\b\x8e\n\xd6\x06\x8a)Xڌ`:\x95\xca8\xc5w4\"l\xea\xf9g\x97\xf2A\x19G\x15\xce\x05\xd1\b3\xb5\x81X\t$\xa9\b\x15+\xa2\x90X\xb1\xf5ׂ\xae\x9c\v\x9efYi\x8f\xe7\xb96\xb4K\xce\xf4rȡQ\xe9\x89l\x8b\xb5\xd7\xf6\x057\x9f\xaf\xba\xefWuJ\x10\x9cC\x1dv\xcav\x9cak50\xbc\xd5_\xe9\xa0ڞ\xb2nK䩢\x1ax'\xf2j\xbb\x81\xdc\x0e\xb8U\x0f\x87\x05\xb8+\x95\x1bːM\x15y\xbb;\x91\xe9\xf0\xaaݳl\x8e\x15\xf5\xcc\\\xc9rV\xb5K\xdf\xc6@\xb7\xb9\x15K\xbc\xf4[\xf0rf\xc9\xda;\xfaL\xa9D\xc3z\U0006effc\x9e\xee.\xa0\xbbQ\xb8Cw\xd7-\x89\xf7\x94\x02\xd8z\xb8\x9fd\xaf\xae\xbb\u007f\xba\x12yY\xb1\xd4\xcb}d\xf3\xfb\xb5\xc7\xd7\x02)VJ\xd7\x10\xbd<\xed@\xce\t\x9b:\xafifg\xbd\x99\xbc\xf3\x81\x03\"\x0fT\t&fO-\xfe{\xffX\x87j\xe2!t('\x1d\x8b\xa8ԕ(\xe5$LrK\xaeO\xa5\xb0\xf4PO:\xcf\xd0ƏH\xc8y\x03\xc9\xfeK\xfe\x97Z\xadwe.|\xa0\xd2\xe1\xf6\x9e\x89\xfceH\b,x\xa9(\xf7\xff̤plA\xbf$?\xfc\xf8EX\xd0{P\xba\xfa\xf1\xff\x05\x00\x00\xff\xff\x14\x93\x06\u0098\xed\x01\x00"), []byte("\x1f\x8b\b\x00\x00\x00\x00\x00\x00\xff\xec\x1c]oܸ\xf1ݿb\xe0>\xa4\x05\xbc\xeb\v\xfa\xd0\xc2o9LJ\x1a\x97\xe6\x82\xd8\xf5K\xd1\a\xae4k\xf1,\x91*I\xad\xb3=\xdc\u007f/f(\xeak\xa5\x15\xb5q\xd0\xeb\xc1|I\xcc%\x87\xc3\xf9\xe6pij\xd5ju&J\xf9\x80\xc6J\xad\xae@\x94\x12\xbf8T\xf4\x97]?\xfdծ\xa5\xbeܽ={\x92*\xbd\x82\xeb\xca:]|F\xab+\x93\xe0{\xdcJ%\x9d\xd4\xea\xac@'R\xe1\xc4\xd5\x19\x80PJ;Aݖ\xfe\x04H\xb4rF\xe79\x9a\xd5#\xaa\xf5S\xb5\xc1M%\xf3\x14\r\x03\x0fK\xef\xbe[\xffe\xfd\xdd\x19@b\x90\xa7\xdf\xcb\x02\xad\x13Ey\x05\xaa\xca\xf33\x00%\n\xbc\x02\x9bd\x98V9\xda\xf5\x0es4z-\xf5\x99-1\xa1\xd5\x1e\x8d\xae\xca+h\u007f\xf0\x93jL\xfc.\xee\xea\xf9ܕK\xeb~\xecu\u007f\x90\xd6\xf1Oe^\x19\x91w\xd6\xe3^+\xd5c\x95\v\xd3\xf6\x9f\x01\xd8D\x97x\x05\x1fi\xa9R$\x98\x9e\x01\xd4\x1b\xe3\xa5W ҔI%\xf2OF*\x87\xe6Z\xe7U\x11H\xb4\x82\x14mbd\xe9\x98\x14wN\xb8ʂނ˰\xbb\x0e\xb5\x9f\xadV\x9f\x84ˮ`myܺ̄\r\xbfz\x12y\x00u\x97\xdb\x13n\xd6\x19\xa9\x1e\xc7V{\a\xd7F+\xc0/\xa5AK(CʜU\x8f\xf0\x9c\xa1\x02\xa7\xc1T\x8aQ\xf9^$OU9\x82H\x89\xc9z\x80g\x8dI\xbfs\x0e\x97\xfb\f!\x17ց\x93\x05\x82\xa8\x17\x84ga\x19\x87\xad6\xe02i\xe7iB@z\xd8zt>\f\xbb=B\xa9pX\xa3\xd3\x01\x15\xa4z} \x91=\x98\xef\x1eq\x1c\x98\xffy\xf7\xd6\xcbM\x92a!\xaeꑺD\xf5\xee\xd3\xedß\xefz\xdd0\x90\x83z\x97 -\bx`\xa1\x06S\xab\x1f\xb8L80H\\C\xe5hDip\x15(\x936 \x01\xb4\x81\x12\x8dԩL\x02Ey\xb2\xcdt\x95\xa7\xb0A\"\uee99P\x1a]\xa2q2\xa8\x8do\x1d3\xd1\xe9\x1d`\xfc\x866\xe5Gy)B˂S+\x03\xa65\x1d\xbclK\xdb\xe2\xcf\x04\xee\x01\x06\x1a$\x14\xe8\xcdϘ\xb85ܡ!0\x01\xebD\xab\x1d\x1a\xa2@\xa2\x1f\x95\xfcO\x03ے\xc4:\x16$\x87\xb5.\xb7\x8d\x95O\x89\x1cv\"\xaf\xf0\x02\x84J\xa1\x10{0H\xab@\xa5:\xf0x\x88]\xc3ߵA\x90j\xab\xaf s\xae\xb4W\x97\x97\x8f\xd2\x05\xf3\x98袨\x94t\xfbK\xb6trS9m\xece\x8a;\xcc/\xad|\\\t\x93d\xd2a\xe2*\x83\x97\xa2\x94+F]\xb1\x89\\\x17\xe9\x1f\x02G\xed\x9b\x1e\xae\a\xba\xe2\x1b\x1b\xb1#\x1c k\xe6\x05\xc6O\xf5\xbbh\tM]D\x9d\xcf7w\xf7]a\x92vH}\xa6{G\xc2Z\x16\x10\xc1\xa4\xdab\xad\x8d[\xa3\v\x86\x89*-\xb5T\x8e\xffHr\x89jH~[m\n\xe9\x88\xef\xff\xae\xd0:\xe2\xd5\x1a\xae\xd9g\x90\x1cV%iO\xba\x86[\x05ע\xc0\xfcZX\xfc\xe6\f J\xdb\x15\x116\x8e\x05]w7\x1c\xec\xa9\xd6\xf9!\xb8\xa6\t~\x05\x1d\xbf+1\xe9\xa9\f͓[\x99\xb0b\xb0\xe5kL\xc0\xc0\xfa\xf96\xae\xb5P\x9b\x1e\x1a>\xec?jmb}\xc2\x01L\xa8M\xcc\xfa\xe0\x97\tj\xf2OX\x94\xa4\xae3(\xde\xd7\xc3\bE\xa2Qڄ \xc1Y\x06\xf3\xa6k\xab\x06\aF\x85\x97ː赓im5\x0e\xa8y\x9c\xa2\x1e\xb1\xad\xa8r\xf7@~\x1c\xed\xbd\xfe\x8c\xd6\xc9dl\xe4`\x13\xefG'\x06~\xa3%\n\xbb\f\r)'\xff\xc0\xf6n\x14.\xb0\xceXL\xd9\xe4\x89'r\x99\x1bO\x01\xb2\x9dy\x0e\xa5Na\xe7W\x82\xcd> }ț\x96?\x1b\xads\x14cT\xc3/I^\xa5\x986a\xce(]\x06\xbb\xbd9\x98\xc4\x01\xa1\x90\x8a\xa4\x8c\xc2/BU5\xbfN\xec\x93\xfd\x950\bd(\xa4\xf20A\xfa\xb0d3!pԤ\xc3b\x02ϣ\x12\xe9\x1b\x05\x9eb\x93\xe3\x158S\x8d\xc9z\x80!\x8c\x11\xfb#4\vA\xf3\x12\x925sjs\x9e\xcb\x04\x89X\x8d\xd1f\xaa1i&\xf6\xf7\u007fH\xb0L\xeb\xa7\x18\"\xfd\x8dƵ\xce\t\x12>\x9b\xc0\x063\xb1\x93\xda\xd8a\x84\x83_0\xa9\x1cN\xe9\x91p\x90\xca\xed\x16\r\xc1›\x89\xbf\x8f\x11븉\xa0f\x8e3\xfe`_-ӉyL\x8d\xa9\xad\xb0)\x9e\x84\n\x8c8Y\xec\xaa\x04\xa9R\xb9\x93i%r\x90\xca:\xa1\x12\xbf?\xd1\xe07\xbe?\x98\x13\x88\x03\xfc\xbd\x01\x0e\xbb .\xf5<\x9bVH\xe1h\xa1\u0378p\x84v\bf\x9a\f\x1bA\x16PO\xb9\xa3\xb6\x19:\xc5ը\xa4\xecR[\xbbs\xd1r\xca\a\x85\xb9\xd8`\x0e\x16sL\x9c6\xd3\xe4\x89\x11\x02\xdfb\xed\xe7\x04eG,i\xeb3HPg\x8dhۜ\x86\xe7L&\x99\x8f\xdfH\xca\x18\x16\xa4\x1a-[\fQ\x96\xf9\xfeئ!F2\xea\xc5\xe6\x8cF\xdb\"\xcc\xc7\x10\xee\x94!i[\xa4\rnی5\xeeS\xbd\x11\x9bW\xa2\xf7\xd0T_%\xec\xb7\a\xd3_^؉ܒ\xcew\xb7[\xc0\xa2t\xfb\v\x90.\xf4\xc6@\xa5\x00\xab\xc5\xe3wƸӴ\xe5v8\xfbŵ\xe5E\xb8֠\xf1;a\x1a;\xab\xbb\xdaW-b؇\xee\xcc\v\x90ۆa\xe9\x05le\xee\x90c\xa99D;\x81\xce,\xe7^\x92@\xb1\xbe\x97Z!\\\x92\xdd4Gڈ\x19\x03Z\r\x01\xf8\xb8<\x9ca\x98\a\x11 \xa1\t*8\v\"\r\x16>\xbbr\xcf\xfa\xd1\xf6p\x04\xf8\xee\xe3{L\xe7H\x06\xf1\x92z\xb0\xa9w\x83H\xa7\x8b\x02o0\ndgS\x1c\xa65g<\x9fC\xbb\x00\x01O\xb8\xf7\x91\xd5\xe8\xe1r\xac\x11kE\x03\xd2 '\xf4،<\xe1\x9eA\xd5\x19\xba(xKDŷ'\xdc\xc7\x0e\x1d\x10\x95\xf0\xabs\x14\x9e\xba\xd4\xc1\xbb\x88Q\xa5\xb65D\xadu\a\x9c\x8e\xdb,,3J\xa1\x05\x8a\x9f\xb8\xed\x86a\xbd\xb4\xf4\x13\xee\xdfX\xcf>ҚL\x96\v(@\x06\x1b,\xb2\x86\x85|\xec\x83\xc8e\xda,\xc6z\xb2\x00⭺\x80\x8f\xda\xd1?7_\xa4%\x14U\n\xef5ڏ\xdaq\xcf7%\xb1\xdfĉ\x04\xf6\x93Y-\x95w\vD\x97E\xeb\xb78\xb0\v%\x11m\xd8&-\xdc*:\x9fy\xfa,aS\x86\x019\x8fVQY\xce\xe8*\xadV\xec\xa6\xc3j\v\x80v\xf1\xaaY\xa5M\x8fS\x17\v!\x8e\xa2X\xa3wO\xde\xca\xffr\x90\v?\xd6\f\x96\xb9H0\x85\xb4\xe2|;'ޅ\xc3G\x99@\x81\xe6\x11\xa1$\xbf\x11/T\v,\xb9o'Ha|h\x11Z\xed\x16\xd28\xc4V\xa4\xf5\x91#\x03\x9b\xa3\x86Odُ\x0f\x8f\xdb%\xbbw\x8e\x87\xa2\xa8߽\xd2]\xe6Y\x16\xf2\xeb0\x06\xf1H\xfa\xf0\xa3\x10\x9c\xec\xfd\x85\xdc+\x8b\xf7\xafq\xdePHc\xd7\xf0\x8e/\xb4s\xec\xce\x0fY\xc2\xceRQ \t\x13i\x81\xe4d'r\n\x1f\xc8x+\xc0\xdc\a\x13z{\x10Ař\x98\xe7L[\xef\xf3\xb7\x12s\xbe\xdd:\u007f\xc2\xfd\xf9Ł\xf5:\xbfU\xe7q0\xc9\xe6\x1f\x18\xad&j\xd1*\xdf\xc39\xffv\u0381\xd9\x12\x159!x[ \xd5\xd1C\xf9\xfay\xc9Q\x80\xce\xda!j\xa1\xc9\xcd%-\x85\xf0s\xbb\x88\x96\xe9R[\xb7\b\xadO\xda:\x9f\x00\xec\x85\xdb#\x19\u0098\xd3_\x9d5\x04\xb1uh\xc0:m\u0085(\x99\xddA\x82\x9c8o\xe7yO\xacn\xb2\x91\x1e0\x1d2\xcf[\v\xe1m\xfa\xb9\xbf)\xa5\xff\xcf\xc3L8Xbإ\xd1\tZ;/J\x91\x9ec&a\xdb$k\x85?\xbcm\xa3LsL*9\xb4e\xa18\x91\xf6\x84\x83\xcd͗Nޙ\xcc\x10\xfd\x1d#ʧ\xe0\b\\\xe8T\x14bx9\x1f\x8d\ued5f\x1d\x14\xb0\x06\xe6\x0fL\xe6\xb1b\xa3\xb2,n\xaeE\xf2\xb7\x16x\x14R\xdd\xf2B\xf0\xf6\x9b\x05+\x10L9\x9ez\x94\xb9\x0e\xf3[\x864\x1d\xb1\xe7W\bW͚\xefj\f\xf68{x\x93\x11\xcf)\xa0`Zi\xd7M\xd6\xd4+\xbd\xb1\xb0\x95ƺ\x16\xe1\x05P\xa5\xe5\xeb\xe4o{\xc6T7Ɯ|\xc4\xfc\xc9\xcf\xee\xa4\x153\xfd\\\x17F,9X\a\xe2gb\x87 \xb7 \x1d\xa0Jt\xa58\xe1E悖Y\x00\xd13\xd1;\x93H\x9fٙ\xac\xaa\"\x9e +\x96N\xa9f\xb3c\xdd)?\b\x19\x97\x9d\x82\xd3\xd8\xead\x81\xba\x9au\xedm\xebWv\xf8ٽ\n\x98B|\x91EU\x80(\x88-K\u038d[_?\x18\xcae<\xaf\x9f\x85tu\x05\xa1\xbfX]fM\x13]\x949:\x84\rn\xb5a{`e\x8aM\xf8P\xf3\u007f\xb4\xded\xaa\t\xd8\n\x99Wf\x81\x8d^̙\xa5\xe7\xb6\xda<\xbd\xfca,\x1e\x91\x15\x1332\xe9\xbe h\x9e\xf7\x1f\xa5Y\x162\u007f2\xf8\xf2\xa1ii$I\xa9\x9e\x8bNgar\xf4ڏNk\xe1\x15j?\x15\x9e\xceBeL^\xc3Ӧ\xbd\x86\xa7\xaf\xe1\xe9kx:h\xaf\xe1\xe9kx\xfa\x1a\x9e\x8e\xb7\xd7\xf0\xb4\xd3^\xc3\xd3h\xff\x11\x83\xe1\x8a3\xb7G\x06Da\x15Y\x821\x87\xf6\xccZu\xa5\xd1u^Y\x87fI\x85\xf4\xed\xf8̑\x1a\xfa\xc4\x0fY\xf1\x17zSRӖ\xae\xb4N\xaf)\x99&\x95\f\xca\xe4\xbfň\x88£ˠ\xa7\xab\xedc\v\xe8\xe6\xca\xe6\xfa\xb5\xe3M\xb9\x9a\xff\xdf\x04A\x9c\x0e\xcb\xd7\xdc\xf3\xdf\xf8tk\xae\xfa\xb5o|\x0e\b\x18\xff&\xeb\xca#\xcb\xdaf\x8aَ\x17\xe2Oy\xf8@\xcb\xc1\xe5B\x9f\x98\xa6W\xf8\xfd\x9b\xa6eD\xb5\xd9t\x8dY}k\x89N\xecޮ\xfb\xbf8]W\x9cM\xec\xecY\xba\xcc\u007f\u007fDGW\xf5\xd8-k\x0frZ\u007f\xfb7\xa4\xf1\x04Dm@\xc9\xdc3 @\xe8\x91\x1f~*\xfd\x11\xf9d=\x9f?\xa8\xc5ץ-\xadFk\xea\x87\xe6\xbd\xcaWԠ-\xfb@`\xb6\xde,\x06i\x88\xa92\x1b\xaf\x1f\x9b\x81\xba\xa4\xb6,\xf6\f\x1eQG\x16_=\x16G\x1e\xe0/vckƢ\xa3\xb6\xd8\xfa\xb0oS\x15\x16Y\v֩\xf0\x9a\x05yb\x05X4\xc1⪽\xa2k\xbc:\x95[\xf3\xd4:R\xd95^\xaf5\vr\xac\x9e+\xa6J+\n\xd7\xe8ڬ\xa6\xe2j>\x93\xf8U\x15Y/_\xfb\xfd\x92q\xfe\xf1\xfa\xaa\xa8\xaa\xaa\xa8\xb3\xc0<\xceQuSK\xab\xa5\xa2\xa8\xba\xb42\xaa\xa9z:\xb2pT=\xd4a\xadӱ\xad\xccVAMW8\x1d\x03;V\xfb\x14Q\xd7t\x04d\xb7\xe2iq\x180+M3\x03ƿ\xaa\x0fm\xde\xd7\xe6\xff\v\t\xfc\xdaMk\x93\xa2\x99=\x95,A}\x16\xed~\xber\xb0\xfe\xe0s\x9d\xf019\x8d\xea\x9ex\xa6\xa2(\xdd|>\x92\xc0\x8fR\xa5^\x92HY:1\r\xbfP\xc1\x05fM\x985]q\xdbF\xb4\x83Ӗ\xc5R\x90QOa\xb3\xf7Y!\xbb\x86\x1b\x91d\xcd\xc0\t\x88\xbcr&,\x9d\xec\v\xe1\xe0\xbc9\xc6^\x86\x99\xd4s\xbe\x06\xf8A7\x19\x84\xce\xe7\xa1\x13p\xad,\xca|\x0f\x95E8\xef\x03\xfa\xbaSؤ\xecX%J\x9b\xe9\xf0\x92@\xc4A\xec\xae?c$_\x12\xde\x11Hr]\xa5\xcd\nG\xd8-\xd4\x1e>=p$\xc7_O'\xedW\xe6u\xa4\x16\xceU\x83\x8f\xd0'@N=\x1e\xb1\x88d\xd3Y\x15\xeb\xb4\x11\x8f\xf8A\xfbw5bh֟\xd1{Z\xa5\xb6\xab!\xc7Z\x17MNJ\xb2\xdf\xdb\x10`{\xf5Rk[\x9b\x84\"l\xa7L\ue31e;\x97Gl\xee\xfe\xfe\x83ߐ\x93\x05\xae\xdfW>õ*\x85\xb1H\x94\x0e\x1b\xf5\x936Ӗ0\xd3ϐ\xeb\x9a\x0e\xdf\x0f\xf7a\x90\xafz8\x99v\xd2n\xfc\x13\x16A|\x03\xe9bD\xfea|f\xe7\xb0\xdcaⱜ\x98\xdeN\xc2\x12\xd6\xeaD\xb2-\xe2\x14\x05߰|\xbb7\x16\x8eEdGLFe\xf1\xa7g\x85\xe6sPT{\xab<\xa7f^]\xf9\xc7\xc1\xc4\xc0\xe01\xf3A\xf6o0|\xcc署@ֿ\xf7\xe6\xcd8\x13.\xbcCsH\xba\x19\xfd\x9f\xd6\xfd\xf1\x88z5\xfe\xf4˪y\x8d\xe6,\x82\xb2\xfe\xbd\xb1\x98\a~\xfc\xa3n\x89(]ej\xf7\x9aT\x86\x1f\x9c \xe8\xdfc8퉟\xf6\xb9\xb3\x19^\xb6\x0f\xa0\xb5\x19\x86\xd9\xe7\xd6F\xf8\xd7<\x164\xf9z\x8e\xf7\xae\xfe9\xb4\x15\xc1?\x8d\x9d\xa3z\xc0\x0ft\xcc\xec\xf4\x13\x8din\xc7kB\xf3\xc4\xf0\xb0\xc7\xdd\x14\xea\xe3ם+\xf8\x88\xcf#\xbd7\x8a6qx\x18\xf5w\x9a\x98r\x86b\xecy\xb3\xa3[\xdc5\xb3\xf8By\xc4Z\xf4\xcd\xdc`\xf8 S-\xf2\xbc\x03\xd1_\x1e\x8f\xb1\xf5\x8fr\xeb\xd3F\t\xed\xe9O\a#&\r\xd7Q\xa35e\xb0FU\xea\xa0Ӣ\xd9a\xda\x11\x92ڇw{\xaa\xcd\xc1;+\xb5b\xc2/\xbf\x9e\xb5:*\x92\x04KWߏt\x1f\x859\xb8S\x1d\xda;\xc5\xf8\xbf' 2\xcde$\xf6m)\x98Nѹpfm\xf20\x8e\xb9\x1b\xf9Z\xe9\xeem\x8f:f0\x92\x18\xb5Mktj\x0fh=\x81ZS\xa9ބ$i\xfcK,\xc3$\xc9hf\xf3%\xf6\xe7\xebh\xd6\xc7Iz9(\xc6\xf9\xe5\f\xd3C\x94\x99\xfb\xb7\xa6E}\xd2\x16\xb3\x89N\xd64ׯύڀ\xfc\xbf\xd9\x1b\xb7\bw\x1eY\x96J\xff\xb0騞\f\xe8\xc1\x10Pp.\xf6\xedbB& \xf3I\xbe\x901\x82\xdd\n\x9aU<\x9f\\\xeb\xd3&\xa0\xa2c%\xb9\x9fpH\xf6\xe0'\xe3Z1x;\xd7\xf9,\x87כ\b\xcd'\xfdI\xff\x9br\x1c7\x86p\xd5w\x99P\xad>D\x8fk\x8c\xaf\xf7׀2X\xabv\x16k\x10\nK\xed\xac\xab\x88\xd4i^5c\xa9]\xf6\xa9W\nh\xa1\x10\xfb\xe4\xe5\x80\xeeV7\xc0\x8b\x9aO\xf9+ϰ;\xddR\xbd;/\x87˖ʥ[C\x9cݥ\x98\x15\xce\xdeD\xcaj\xf6rI\xafn\x1e\vB\xb6S\xd9qf\\\xb5Ƹ\x88,c\xb8\ta5ً\xcbd\xbe\x99\x84\xc7\xe2I\xed\xa7\x01s\u061d\xff\xf4c \xc3H\x86?\xff*.\xd39.s\xbd`s?߂߽\xbbZgӧ\xf6\xae1y\x89\x87\x9f\u007f)\xb2cl\x9e\xc6\x1d4^\xfe\x1d\x00\x00\xff\xff;,8\xce>\f\x00\x00"), []byte("\x1f\x8b\b\x00\x00\x00\x00\x00\x00\xff\xb4VM\x8f\xdb6\x10\xbd\xebW\f\xd2C.\x95\x9c\xa0\x87\x16\xba\x05n\x0fA\xd3`\x11\xa7\xbe\x14=\xd0\xe4Ȟ.E\xb2\x9c\xa1\xdb\xed\xaf/HQ돕\xb7Y\xa0э\xc3\xe1\x9b7o>\xec\xa6m\xdbF\x05\xdabd\xf2\xae\a\x15\b\xff\x16t\xf9\xc4\xdd\xfd\x0fܑ_\x1d\xdf6\xf7\xe4L\x0f\xeb\xc4\xe2\xc7O\xc8>E\x8d?\xe2@\x8e\x84\xbckF\x14e\x94\xa8\xbe\x01P\xceyQ\xd9\xcc\xf9\b\xa0\xbd\x93\xe8\xad\xc5\xd8\xee\xd1u\xf7i\x87\xbbD\xd6`,\xe0s\xe8\xe3\x9b\xee\xfb\xeeM\x03\xa0#\x96\xe7\x9fiD\x165\x86\x1e\\\xb2\xb6\x01pj\xc4\x1e\x8eަ\x11٩\xc0\a/\xd6\xeb)XwD\x8b\xd1w\xe4\x1b\x0e\xa8s\xec}\xf4)\xf4p\xba\x98 *\xaf)\xa7mA\xdbT\xb4\x0f\x15\xad8Xb\xf9\xf9\x19\xa7\x0f\xc4R\x1c\x83MQٛ̊\x0f\x93\xdb'\xab\xe2-\xaf\x06\x80\xb5\x0f\xd8\xc3\xc7L1(\x8d\xa6\x01\xa8\xf2\x14\xca\xed,\xc0\xdb\tQ\x1fpTS.\x00>\xa0{w\xf7~\xfb\xdd\xe6\xc2\f`\x90u\xa4 E\xe4\xe5D\x80\x18\x14\xccL\xe0\xaf\x03F\x84mQ\rX|D\xae\xa4\x1fA\x01f\xfe\xdc=\x1aC\xf4\x01\xa3\xd0,\xf0\xf4\x9d\xb5י\xf5\x8a\xd7\xebL}\xf2\x02\x93\xfb\n\x19\xe4\x80s\xfahj\xb6\xe0\a\x90\x031D\f\x11\x19\x9d\x9c\xcau\xfa\xfc\x00ʁ\xdf\xfd\x81Z:\xd8`\xcc0\xc0\a\x9f\xac\xc9\xedx\xc4(\x10Q\xfb\xbd\xa3\u007f\x1e\xb1\x19ė\xa0V\t\xd6ʞ>r\x82\xd1)\vGe\x13~\v\xca\x19\x18\xd5\x03D\xccQ \xb93\xbc\xe2\xc2\x1d\xfc\xe2#\x02\xb9\xc1\xf7p\x10\tܯV{\x92y\xac\xb4\x1f\xc7\xe4H\x1eVeBh\x97\xc4G^\x19<\xa2]1\xed[\x15\xf5\x81\x04\xb5\xa4\x88+\x15\xa8-\xd4\xdd\xd4\xed\xa3\xf9&\xd6A\xe4\xd7\x17\\\xe5!w\x11K$\xb7?\xbb(\xed\xfeL\x05r\xa7O\x8d0=\x9d\xb28\t\x9dMY\x9dO?m>\xc3\x1c\xba\x14\xe3Z\xfd\xa2\xfb\xe9!\x9fJ\x90\x05#7`\x9c\x8a8D?\x16Lt&xrR\x0e\xda\x12\xbak\xf99\xedF\x92\\\xf7?\x13\xb2\xe4Zu\xb0.\xbb\x06v\b)\x18%h:x\xef`\xadF\xb4k\xc5\xf8\xd5\v\x90\x95\xe66\v\xfbe%8_\x93\xd7Γj\xe7\x03V\x97؍z-O\xf2&\xa0\xbe\x18\xa0\x8cB\x03\xd5\xc9\x1e|\xbc\xd2U\xcds\xbe\x8c\xd7]\xb8/\x0f8L;~\xa0\xfd\xb5\x15@\x19S~!\x94\xbd\xbb\xf9\xf6\x19\xc1\x16\xf2^\x97H\xb9Q\a\x1f3\xa3#\x19\x8c\xed\x9cge\x92bM\x98\xd0\x1a\xee\x9e@\xdeм&Y \x9fҼ\xe0qW\xdd2\x93,\xf4\xfcl\xdaPX\x17fY\x9fj\x8f\xb7\x18,d\x9c;\x9c\"^\xcdj\xfb\x18\xe0\x8bzG\x94$~y\xf7\x94g\xd5sW;H\xa7\x18\xd1I\xc5\\ش\xffO\a\x85\x83b\xfc\x0f͗#\xdc\xe5\x97s\x19,\r\xa8\x1f\xb4\xc5\t\x10\xfc\xb0\xd0m/\xa2\x9c?ti|ʭ\x85wGEV\xed,.\xdc\xfd\xea\xd4\xcdۛ\xc5_\xac\xe7\x13#\xe7ujz\x90\x98&\xec\xdae\xd5r\xaa\xbe\xd2\x1a\x83\xa0\xf9x\xfd\xaf\xe7ի\x8b?.娽\x9b\x86\x95{\xf8\xed\xf7fBE\xb3\x9d\xff\x81d\xe3\xbf\x01\x00\x00\xff\xff\xbf\xca\xff\xa71\n\x00\x00"), diff --git a/pkg/apis/velero/v1/restore.go b/pkg/apis/velero/v1/restore.go index 73e2872f3..1b1b8c05a 100644 --- a/pkg/apis/velero/v1/restore.go +++ b/pkg/apis/velero/v1/restore.go @@ -92,6 +92,11 @@ type RestoreSpec struct { // Hooks represent custom behaviors that should be executed during or post restore. // +optional Hooks RestoreHooks `json:"hooks,omitempty"` + + // ExistingResourcePolicy specifies the restore behaviour for the kubernetes resource to be restored + // +optional + // +nullable + ExistingResourcePolicy PolicyType `json:"existingResourcePolicy,omitempty"` } // RestoreHooks contains custom behaviors that should be executed during or post restore. @@ -212,6 +217,14 @@ const ( // RestorePhaseFailed means the restore was unable to execute. // The failing error is recorded in status.FailureReason. RestorePhaseFailed RestorePhase = "Failed" + + // PolicyTypeNone means velero will not overwrite the resource + // in cluster with the one in backup whether changed/unchanged. + PolicyTypeNone PolicyType = "none" + + // PolicyTypeUpdate means velero will try to attempt a patch on + // the changed resources. + PolicyTypeUpdate PolicyType = "update" ) // RestoreStatus captures the current status of a Velero restore @@ -302,3 +315,6 @@ type RestoreList struct { Items []Restore `json:"items"` } + +// PolicyType helps specify the ExistingResourcePolicy +type PolicyType string diff --git a/pkg/builder/restore_builder.go b/pkg/builder/restore_builder.go index 7ea43e73e..4fa24ac35 100644 --- a/pkg/builder/restore_builder.go +++ b/pkg/builder/restore_builder.go @@ -95,6 +95,12 @@ func (b *RestoreBuilder) ExcludedResources(resources ...string) *RestoreBuilder return b } +// ExistingResourcePolicy sets the Restore's resource policy. +func (b *RestoreBuilder) ExistingResourcePolicy(policy string) *RestoreBuilder { + b.object.Spec.ExistingResourcePolicy = velerov1api.PolicyType(policy) + return b +} + // IncludeClusterResources sets the Restore's "include cluster resources" flag. func (b *RestoreBuilder) IncludeClusterResources(val bool) *RestoreBuilder { b.object.Spec.IncludeClusterResources = &val diff --git a/pkg/cmd/cli/restore/create.go b/pkg/cmd/cli/restore/create.go index 95f733209..caf94dc51 100644 --- a/pkg/cmd/cli/restore/create.go +++ b/pkg/cmd/cli/restore/create.go @@ -82,6 +82,7 @@ type CreateOptions struct { Labels flag.Map IncludeNamespaces flag.StringArray ExcludeNamespaces flag.StringArray + ExistingResourcePolicy string IncludeResources flag.StringArray ExcludeResources flag.StringArray NamespaceMappings flag.Map @@ -113,6 +114,7 @@ func (o *CreateOptions) BindFlags(flags *pflag.FlagSet) { flags.Var(&o.Labels, "labels", "Labels to apply to the restore.") flags.Var(&o.IncludeResources, "include-resources", "Resources to include in the restore, formatted as resource.group, such as storageclasses.storage.k8s.io (use '*' for all resources).") flags.Var(&o.ExcludeResources, "exclude-resources", "Resources to exclude from the restore, formatted as resource.group, such as storageclasses.storage.k8s.io.") + flags.StringVar(&o.ExistingResourcePolicy, "existing-resource-policy", "", "Restore Policy to be used during the restore workflow, can be - none or update") flags.VarP(&o.Selector, "selector", "l", "Only restore resources matching this label selector.") f := flags.VarPF(&o.RestoreVolumes, "restore-volumes", "", "Whether to restore volumes from snapshots.") // this allows the user to just specify "--restore-volumes" as shorthand for "--restore-volumes=true" @@ -172,6 +174,10 @@ func (o *CreateOptions) Validate(c *cobra.Command, args []string, f client.Facto return errors.New("Velero client is not set; unable to proceed") } + if len(o.ExistingResourcePolicy) > 0 && !isResourcePolicyValid(o.ExistingResourcePolicy) { + return errors.New("existing-resource-policy has invalid value, it accepts only none, update as value") + } + switch { case o.BackupName != "": if _, err := o.client.VeleroV1().Backups(f.Namespace()).Get(context.TODO(), o.BackupName, metav1.GetOptions{}); err != nil { @@ -264,6 +270,7 @@ func (o *CreateOptions) Run(c *cobra.Command, f client.Factory) error { ExcludedNamespaces: o.ExcludeNamespaces, IncludedResources: o.IncludeResources, ExcludedResources: o.ExcludeResources, + ExistingResourcePolicy: api.PolicyType(o.ExistingResourcePolicy), NamespaceMapping: o.NamespaceMappings.Data(), LabelSelector: o.Selector.LabelSelector, RestorePVs: o.RestoreVolumes.Value, @@ -351,3 +358,10 @@ func (o *CreateOptions) Run(c *cobra.Command, f client.Factory) error { return nil } + +func isResourcePolicyValid(resourcePolicy string) bool { + if resourcePolicy == string(api.PolicyTypeNone) || resourcePolicy == string(api.PolicyTypeUpdate) { + return true + } + return false +} diff --git a/pkg/cmd/util/output/restore_describer.go b/pkg/cmd/util/output/restore_describer.go index fac53f5cc..286467d03 100644 --- a/pkg/cmd/util/output/restore_describer.go +++ b/pkg/cmd/util/output/restore_describer.go @@ -148,6 +148,13 @@ func DescribeRestore(ctx context.Context, kbClient kbclient.Client, restore *vel describePodVolumeRestores(d, podVolumeRestores, details) } + d.Println() + s = "" + if restore.Spec.ExistingResourcePolicy != "" { + s = string(restore.Spec.ExistingResourcePolicy) + } + d.Printf("Existing Resource Policy: \t%s\n", s) + d.Println() d.Printf("Preserve Service NodePorts:\t%s\n", BoolPointerString(restore.Spec.PreserveNodePorts, "false", "true", "auto")) diff --git a/pkg/restore/restore.go b/pkg/restore/restore.go index 496b6cc57..63bb40255 100644 --- a/pkg/restore/restore.go +++ b/pkg/restore/restore.go @@ -1240,6 +1240,7 @@ func (ctx *restoreContext) restoreItem(obj *unstructured.Unstructured, groupReso // labels, so copy them from the object we attempted to restore. labels := obj.GetLabels() addRestoreLabels(fromCluster, labels[velerov1api.RestoreNameLabel], labels[velerov1api.BackupNameLabel]) + fromClusterWithLabels := fromCluster.DeepCopy() // saving the in-cluster object so that we can create label patch if overall patch fails if !equality.Semantic.DeepEqual(fromCluster, obj) { switch groupResource { @@ -1267,17 +1268,58 @@ func (ctx *restoreContext) restoreItem(obj *unstructured.Unstructured, groupReso _, err = resourceClient.Patch(name, patchBytes) if err != nil { warnings.Add(namespace, err) + // check if there is existingResourcePolicy and if it is set to update policy + if len(ctx.restore.Spec.ExistingResourcePolicy) > 0 && ctx.restore.Spec.ExistingResourcePolicy == velerov1api.PolicyTypeUpdate { + // remove restore labels so that we apply the latest backup/restore names on the object via patch + removeRestoreLabels(fromCluster) + //try patching just the backup/restore labels + warningsFromUpdate, errsFromUpdate := ctx.updateBackupRestoreLabels(fromCluster, fromClusterWithLabels, namespace, resourceClient) + warnings.Merge(&warningsFromUpdate) + errs.Merge(&errsFromUpdate) + } } else { ctx.log.Infof("ServiceAccount %s successfully updated", kube.NamespaceAndName(obj)) } default: - e := errors.Errorf("could not restore, %s %q already exists. Warning: the in-cluster version is different than the backed-up version.", - obj.GetKind(), obj.GetName()) - warnings.Add(namespace, e) + // check for the presence of existingResourcePolicy + if len(ctx.restore.Spec.ExistingResourcePolicy) > 0 { + resourcePolicy := ctx.restore.Spec.ExistingResourcePolicy + ctx.log.Infof("restore API has resource policy defined %s , executing restore workflow accordingly for changed resource %s %s", resourcePolicy, fromCluster.GroupVersionKind().Kind, kube.NamespaceAndName(fromCluster)) + + // existingResourcePolicy is set as none, add warning + if resourcePolicy == velerov1api.PolicyTypeNone { + e := errors.Errorf("could not restore, %s %q already exists. Warning: the in-cluster version is different than the backed-up version.", + obj.GetKind(), obj.GetName()) + warnings.Add(namespace, e) + // existingResourcePolicy is set as update, attempt patch on the resource and add warning if it fails + } else if resourcePolicy == velerov1api.PolicyTypeUpdate { + // processing update as existingResourcePolicy + warningsFromUpdateRP, errsFromUpdateRP := ctx.processUpdateResourcePolicy(fromCluster, fromClusterWithLabels, obj, namespace, resourceClient) + warnings.Merge(&warningsFromUpdateRP) + errs.Merge(&errsFromUpdateRP) + } + } else { + // Preserved Velero behavior when existingResourcePolicy is not specified by the user + e := errors.Errorf("could not restore, %s %q already exists. Warning: the in-cluster version is different than the backed-up version.", + obj.GetKind(), obj.GetName()) + warnings.Add(namespace, e) + } } return warnings, errs } + //update backup/restore labels on the unchanged resources if existingResourcePolicy is set as update + if ctx.restore.Spec.ExistingResourcePolicy == velerov1api.PolicyTypeUpdate { + resourcePolicy := ctx.restore.Spec.ExistingResourcePolicy + ctx.log.Infof("restore API has resource policy defined %s , executing restore workflow accordingly for unchanged resource %s %s ", resourcePolicy, obj.GroupVersionKind().Kind, kube.NamespaceAndName(fromCluster)) + // remove restore labels so that we apply the latest backup/restore names on the object via patch + removeRestoreLabels(fromCluster) + // try updating the backup/restore labels for the in-cluster object + warningsFromUpdate, errsFromUpdate := ctx.updateBackupRestoreLabels(fromCluster, obj, namespace, resourceClient) + warnings.Merge(&warningsFromUpdate) + errs.Merge(&errsFromUpdate) + } + ctx.log.Infof("Restore of %s, %v skipped: it already exists in the cluster and is the same as the backed up version", obj.GroupVersionKind().Kind, name) return warnings, errs } @@ -1831,3 +1873,81 @@ func (ctx *restoreContext) getSelectedRestoreableItems(resource, targetNamespace } return restorable, warnings, errs } + +// removeRestoreLabels removes the restore name and the +// restored backup's name. +func removeRestoreLabels(obj metav1.Object) { + labels := obj.GetLabels() + + if labels == nil { + labels = make(map[string]string) + } + + labels[velerov1api.BackupNameLabel] = "" + labels[velerov1api.RestoreNameLabel] = "" + + obj.SetLabels(labels) +} + +// updates the backup/restore labels +func (ctx *restoreContext) updateBackupRestoreLabels(fromCluster, fromClusterWithLabels *unstructured.Unstructured, namespace string, resourceClient client.Dynamic) (warnings, errs Result) { + patchBytes, err := generatePatch(fromCluster, fromClusterWithLabels) + if err != nil { + ctx.log.Errorf("error generating patch for %s %s: %v", fromCluster.GroupVersionKind().Kind, kube.NamespaceAndName(fromCluster), err) + errs.Add(namespace, err) + return warnings, errs + } + + if patchBytes == nil { + // In-cluster and desired state are the same, so move on to + // the next items + ctx.log.Errorf("skipped updating backup/restore labels for %s %s: in-cluster and desired state are the same along-with the labels", fromCluster.GroupVersionKind().Kind, kube.NamespaceAndName(fromCluster)) + return warnings, errs + } + + // try patching the in-cluster resource (with only latest backup/restore labels) + _, err = resourceClient.Patch(fromCluster.GetName(), patchBytes) + if err != nil { + ctx.log.Errorf("backup/restore label patch attempt failed for %s %s: %v", fromCluster.GroupVersionKind(), kube.NamespaceAndName(fromCluster), err) + errs.Add(namespace, err) + } else { + ctx.log.Infof("backup/restore labels successfully updated for %s %s", fromCluster.GroupVersionKind().Kind, kube.NamespaceAndName(fromCluster)) + } + return warnings, errs +} + +// function to process existingResourcePolicy as update, tries to patch the diff between in-cluster and restore obj first +// if the patch fails then tries to update the backup/restore labels for the in-cluster version +func (ctx *restoreContext) processUpdateResourcePolicy(fromCluster, fromClusterWithLabels, obj *unstructured.Unstructured, namespace string, resourceClient client.Dynamic) (warnings, errs Result) { + ctx.log.Infof("restore API has existingResourcePolicy defined as update , executing restore workflow accordingly for changed resource %s %s ", obj.GroupVersionKind().Kind, kube.NamespaceAndName(fromCluster)) + ctx.log.Infof("attempting patch on %s %q", fromCluster.GetKind(), fromCluster.GetName()) + // remove restore labels so that we apply the latest backup/restore names on the object via patch + removeRestoreLabels(fromCluster) + patchBytes, err := generatePatch(fromCluster, obj) + if err != nil { + ctx.log.Errorf("error generating patch for %s %s: %v", obj.GroupVersionKind().Kind, kube.NamespaceAndName(obj), err) + errs.Add(namespace, err) + return warnings, errs + } + + if patchBytes == nil { + // In-cluster and desired state are the same, so move on to + // the next items + ctx.log.Errorf("skipped updating %s %s: in-cluster and desired state are the same", fromCluster.GroupVersionKind().Kind, kube.NamespaceAndName(fromCluster)) + return warnings, errs + } + + // try patching the in-cluster resource (resource diff plus latest backup/restore labels) + _, err = resourceClient.Patch(obj.GetName(), patchBytes) + if err != nil { + ctx.log.Errorf("patch attempt failed for %s %s: %v", fromCluster.GroupVersionKind(), kube.NamespaceAndName(fromCluster), err) + warnings.Add(namespace, err) + // try just patching the labels + warningsFromUpdate, errsFromUpdate := ctx.updateBackupRestoreLabels(fromCluster, fromClusterWithLabels, namespace, resourceClient) + warnings.Merge(&warningsFromUpdate) + errs.Merge(&errsFromUpdate) + } else { + ctx.log.Infof("%s %s successfully updated", obj.GroupVersionKind().Kind, kube.NamespaceAndName(obj)) + } + return warnings, errs +} diff --git a/pkg/restore/restore_test.go b/pkg/restore/restore_test.go index dadf6bea5..5c1961163 100644 --- a/pkg/restore/restore_test.go +++ b/pkg/restore/restore_test.go @@ -967,6 +967,76 @@ func TestRestoreItems(t *testing.T) { test.ServiceAccounts(builder.ForServiceAccount("ns-1", "sa-1").Result()), }, }, + { + name: "update secret data and labels when secret exists in cluster and is not identical to the backed up one, existing resource policy is update", + restore: defaultRestore().ExistingResourcePolicy("update").Result(), + backup: defaultBackup().Result(), + tarball: test.NewTarWriter(t). + AddItems("secrets", builder.ForSecret("ns-1", "sa-1").Data(map[string][]byte{"key-1": []byte("value-1")}).Result()). + Done(), + apiResources: []*test.APIResource{ + test.Secrets(builder.ForSecret("ns-1", "sa-1").Data(map[string][]byte{"foo": []byte("bar")}).Result()), + }, + want: []*test.APIResource{ + test.Secrets(builder.ForSecret("ns-1", "sa-1").ObjectMeta(builder.WithLabels("velero.io/backup-name", "backup-1", "velero.io/restore-name", "restore-1")).Data(map[string][]byte{"key-1": []byte("value-1")}).Result()), + }, + }, + { + name: "update service account labels when service account exists in cluster and is identical to the backed up one, existing resource policy is update", + restore: defaultRestore().ExistingResourcePolicy("update").Result(), + backup: defaultBackup().Result(), + tarball: test.NewTarWriter(t). + AddItems("serviceaccounts", builder.ForServiceAccount("ns-1", "sa-1").Result()). + Done(), + apiResources: []*test.APIResource{ + test.ServiceAccounts(builder.ForServiceAccount("ns-1", "sa-1").ObjectMeta(builder.WithLabels("velero.io/backup-name", "foo", "velero.io/restore-name", "bar")).Result()), + }, + want: []*test.APIResource{ + test.ServiceAccounts(builder.ForServiceAccount("ns-1", "sa-1").ObjectMeta(builder.WithLabels("velero.io/backup-name", "backup-1", "velero.io/restore-name", "restore-1")).Result()), + }, + }, + { + name: "update pod labels when pod exists in cluster and is identical to the backed up one, existing resource policy is update", + restore: defaultRestore().ExistingResourcePolicy("update").Result(), + backup: defaultBackup().Result(), + tarball: test.NewTarWriter(t). + AddItems("pods", builder.ForPod("ns-1", "sa-1").Result()). + Done(), + apiResources: []*test.APIResource{ + test.Pods(builder.ForPod("ns-1", "sa-1").ObjectMeta(builder.WithLabels("velero.io/backup-name", "foo", "velero.io/restore-name", "bar")).Result()), + }, + want: []*test.APIResource{ + test.Pods(builder.ForPod("ns-1", "sa-1").ObjectMeta(builder.WithLabels("velero.io/backup-name", "backup-1", "velero.io/restore-name", "restore-1")).Result()), + }, + }, + { + name: "do not update pod labels when pod exists in cluster and is identical to the backed up one, existing resource policy is none", + restore: defaultRestore().ExistingResourcePolicy("none").Result(), + backup: defaultBackup().Result(), + tarball: test.NewTarWriter(t). + AddItems("pods", builder.ForPod("ns-1", "sa-1").Result()). + Done(), + apiResources: []*test.APIResource{ + test.Pods(builder.ForPod("ns-1", "sa-1").ObjectMeta(builder.WithLabels("velero.io/backup-name", "foo", "velero.io/restore-name", "bar")).Result()), + }, + want: []*test.APIResource{ + test.Pods(builder.ForPod("ns-1", "sa-1").ObjectMeta(builder.WithLabels("velero.io/backup-name", "foo", "velero.io/restore-name", "bar")).Result()), + }, + }, + { + name: "do not update pod labels when pod exists in cluster and is identical to the backed up one, existing resource policy is not specified, velero behavior is preserved", + restore: defaultRestore().Result(), + backup: defaultBackup().Result(), + tarball: test.NewTarWriter(t). + AddItems("pods", builder.ForPod("ns-1", "sa-1").Result()). + Done(), + apiResources: []*test.APIResource{ + test.Pods(builder.ForPod("ns-1", "sa-1").ObjectMeta(builder.WithLabels("velero.io/backup-name", "foo", "velero.io/restore-name", "bar")).Result()), + }, + want: []*test.APIResource{ + test.Pods(builder.ForPod("ns-1", "sa-1").ObjectMeta(builder.WithLabels("velero.io/backup-name", "foo", "velero.io/restore-name", "bar")).Result()), + }, + }, { name: "service account secrets and image pull secrets are restored when service account already exists in cluster", restore: defaultRestore().Result(), @@ -2168,7 +2238,7 @@ func TestRestorePersistentVolumes(t *testing.T) { ObjectMeta( builder.WithAnnotations("velero.io/original-pv-name", "source-pv"), builder.WithLabels("velero.io/backup-name", "backup-1", "velero.io/restore-name", "restore-1"), - // the namespace for this PV's claimRef should be the one that the PVC was remapped into. + // the namespace for this PV's claimRef should be the one that the PVC was remapped into. ).ClaimRef("target-ns", "pvc-1"). AWSEBSVolumeID("new-volume"). Result(), diff --git a/site/content/docs/main/api-types/restore.md b/site/content/docs/main/api-types/restore.md index 9663125f6..daa293e92 100644 --- a/site/content/docs/main/api-types/restore.md +++ b/site/content/docs/main/api-types/restore.md @@ -73,6 +73,9 @@ spec: # to restore from. If specified, and BackupName is empty, Velero will # restore from the most recent successful backup created from this schedule. scheduleName: my-scheduled-backup-name + # ExistingResourcePolicy specifies the restore behaviour + # for the kubernetes resource to be restored. Optional + existingResourcePolicy: none # Actions to perform during or post restore. The only hooks currently supported are # adding an init container to a pod before it can be restored and executing a command in a # restored pod's container. Optional.