From d68ad891591844ba7e6f54ced10d41577676f4e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Oliveirinha?= Date: Wed, 27 Apr 2022 14:34:11 +0100 Subject: [PATCH] TUN-6142: Add tunnel details support to RPC This commit adds the tunnel details to RPC register connection response so we can have access to some of the details associacted to the tunnel that only the edge knows. Currently this is limited to knowing if the tunnel is remotely managed or not. In the future we could extend this with more information. --- tunnelrpc/pogs/connectionrpc.go | 7 +- tunnelrpc/tunnelrpc.capnp | 2 + tunnelrpc/tunnelrpc.capnp.go | 463 ++++++++++++++++---------------- 3 files changed, 243 insertions(+), 229 deletions(-) diff --git a/tunnelrpc/pogs/connectionrpc.go b/tunnelrpc/pogs/connectionrpc.go index 788a67a8..d713edc6 100644 --- a/tunnelrpc/pogs/connectionrpc.go +++ b/tunnelrpc/pogs/connectionrpc.go @@ -224,8 +224,9 @@ func (a *TunnelAuth) UnmarshalCapnproto(s tunnelrpc.TunnelAuth) error { } type ConnectionDetails struct { - UUID uuid.UUID - Location string + UUID uuid.UUID + Location string + TunnelIsRemotelyManaged bool } func (details *ConnectionDetails) MarshalCapnproto(s tunnelrpc.ConnectionDetails) error { @@ -235,6 +236,7 @@ func (details *ConnectionDetails) MarshalCapnproto(s tunnelrpc.ConnectionDetails if err := s.SetLocationName(details.Location); err != nil { return err } + s.SetTunnelIsRemotelyManaged(details.TunnelIsRemotelyManaged) return nil } @@ -252,6 +254,7 @@ func (details *ConnectionDetails) UnmarshalCapnproto(s tunnelrpc.ConnectionDetai if err != nil { return err } + details.TunnelIsRemotelyManaged = s.TunnelIsRemotelyManaged() return err } diff --git a/tunnelrpc/tunnelrpc.capnp b/tunnelrpc/tunnelrpc.capnp index c1d56d6e..3d2d1dd3 100644 --- a/tunnelrpc/tunnelrpc.capnp +++ b/tunnelrpc/tunnelrpc.capnp @@ -121,6 +121,8 @@ struct ConnectionDetails { uuid @0 :Data; # airport code of the colo where this connection landed locationName @1 :Text; + # tells if the tunnel is remotely managed + tunnelIsRemotelyManaged @2: Bool; } struct TunnelAuth { diff --git a/tunnelrpc/tunnelrpc.capnp.go b/tunnelrpc/tunnelrpc.capnp.go index 4d1af72f..a198ca15 100644 --- a/tunnelrpc/tunnelrpc.capnp.go +++ b/tunnelrpc/tunnelrpc.capnp.go @@ -1410,12 +1410,12 @@ type ConnectionDetails struct{ capnp.Struct } const ConnectionDetails_TypeID = 0xb5f39f082b9ac18a func NewConnectionDetails(s *capnp.Segment) (ConnectionDetails, error) { - st, err := capnp.NewStruct(s, capnp.ObjectSize{DataSize: 0, PointerCount: 2}) + st, err := capnp.NewStruct(s, capnp.ObjectSize{DataSize: 8, PointerCount: 2}) return ConnectionDetails{st}, err } func NewRootConnectionDetails(s *capnp.Segment) (ConnectionDetails, error) { - st, err := capnp.NewRootStruct(s, capnp.ObjectSize{DataSize: 0, PointerCount: 2}) + st, err := capnp.NewRootStruct(s, capnp.ObjectSize{DataSize: 8, PointerCount: 2}) return ConnectionDetails{st}, err } @@ -1462,12 +1462,20 @@ func (s ConnectionDetails) SetLocationName(v string) error { return s.Struct.SetText(1, v) } +func (s ConnectionDetails) TunnelIsRemotelyManaged() bool { + return s.Struct.Bit(0) +} + +func (s ConnectionDetails) SetTunnelIsRemotelyManaged(v bool) { + s.Struct.SetBit(0, v) +} + // ConnectionDetails_List is a list of ConnectionDetails. type ConnectionDetails_List struct{ capnp.List } // NewConnectionDetails creates a new list of ConnectionDetails. func NewConnectionDetails_List(s *capnp.Segment, sz int32) (ConnectionDetails_List, error) { - l, err := capnp.NewCompositeList(s, capnp.ObjectSize{DataSize: 0, PointerCount: 2}, sz) + l, err := capnp.NewCompositeList(s, capnp.ObjectSize{DataSize: 8, PointerCount: 2}, sz) return ConnectionDetails_List{l}, err } @@ -4525,230 +4533,231 @@ func CloudflaredServer_Methods(methods []server.Method, s CloudflaredServer_Serv return methods } -const schema_db8274f9144abc7e = "x\xda\xccZ{\x94\x14\xe5\x95\xbf\xb7\xaa{\xaa\x07\xa7" + - "\xa9)\xaaa\xa0\x0f\xb3\xb3\xe10\xebB\x82\x0a,Y" + - "\xc3\xc6\xcc\x0c\x0e\xc4\x19yLuC\x8eG1\xc7\x9a" + - "\xeeofj\xb6\xbb\xaa\xad\xaa\x1e\x81hx\x04D<" + - "j\xc4\x80\x0f\x126\x80\xeb\xee\x09\xc6\xacD\xdc,{" + - "tWvc\x8c\x1a\x89\xe4h\x16\x83\xd9lB\xd8]" + - "9\xb8\xae\xa8\x9b\xc3n\xb4\xf6\xdc\xaa\xae\xc7t73" + - "\x8c\xe4\x8f\xfc\xd7s\xeb{\xdc\xfb\xfb~\xf7\xf1\xddo" + - "\xae2\x1b;\xb9\xf9\xf1\x8d\"\x80r8\xde\xe0\xb0\xb9" + - "?\xd9\xb0\xaf\xfd\x9f\xb7\x80\x92Ft\xbe\xfcLo\xea" + - "\xbc\xbd\xe5$\xc4y\x01`\xe1c\xc2\x06\x94\x8f\x08\x02" + - "\x80\xfc\xb4\xf0\x1f\x80\xce\x9d\xd3\x9e\xfc\xe6cKw}" + - "\x05\xa44\x1f\x0e\x06\\\xf8H\xa2\x17\xe5'\x124\xf2" + - "[\x89\xedrc\xa3\x00\xe0\\/]yS\xea\xd5c" + - "4:\xbat\x8c\x96~71\x17e\xa4a\xf2\x87\x09" + - "Z\xfa\xb3\xc5\x1f\x1f\xf8\xf4\xee\x97\xb7\x82\x94\xe6F-" + - "\xfdV\xe3\x06\x94?tG\x9eo\\\x05\xe8\xbc\xb7k" + - "\xfa\xe3\xfb\x8f\xfdp\x1bH\x97#T4\x95&\xfd\x0c" + - "\x01\xe5\xf6I\x7f\x03\xe8\xbc\xf2\xc1M\xef\x1f\xfe\xc1\xa2" + - ";A\x9aC\x03\x90\x06\x9c\x94\xa6\x11S/#m:\x96\xbd" + - "r$\xbd\xf0\xc1]U\xaa\xbb\x03?\xb8l.\xca\xf1" + - "&R\x08\x9bn\x03t>\xf7\xa7O\xdd\xd7\xfd\xe0\xa6" + - "\xdd ]\x19\xec\xc7\x9an\xa4\xd567\xd1~\xff3" + - "\xf9\xeb\xc7\xca\xd7~\xef\xc1\x8aB\xee*\xfb\x9b\xe6\xd2" + - "\x80#\xee\x0a\xb3F\xdao\xf9\xa7\xe7\x9fz\x08\x94y" + - "\x88\xce\x9b\xfd\x9f|\x9d\xdf{\xf0$\xacA\x81\xf4[" + - "8#y\x80\xac\x9b\x93\xa4\xb1?\xfe\xd43\x7f\x7f\xff" + - "S\xdb\xbf\x0e\xca\xe5\x88\x00.\x9a\xf7&\xff\x97\x06\xec" + - "O\xd2n\xbbN<\xbb\xb2\xb8s\xcf\x01\x0f\x1f\xf7\xfb" + - "\x8bI\x8e\x83\x98\xb3\xb5\xe77\xc55\x8ff\x1f\xad " + - "\x17\xa7O\xcf&\xcf!\xe0\xc2\xe3\xc96\x04t\x16\xfd" + - "\xec\xf4\xaa\x15\xdf\x1d\xf8\xeb\xc8\xdc\xb7'o\xa0\xb9\xdb" + - "\x07\xce\x1dm\xce\x14\x1f\xafB\xc45\xf6\xad\xc9\x07Q" + - "F\xd1=\xcc\xc9\xa4\xc2\x13\x7fp}\xe3\xba\xd3\xcb\x9e" + - "\x04i\x9e\xbfL\xab\x98\xa1eF^z\xf4\x8f\xda_" + - "\xba\xed\x10(Wb\x00\xd6\x0c\xfa\x86\xf2\"\x91\xec\x8b" + - "\x9dl?\xf8\xec/\xee;\\\xc3\xb1\x9d\xe2\x06\x94\x1f" + - "sw\xd9/~^>N\xbf\x9c\xd8\xcd\xfcG\xea\xc3" + - "\xffx\xb8\x9a\xbf.\xc6G\xc4~\x94_\x11]\x04D" + - "\xd7\xbe\xbb\x8f\xee\xf9d\xe2\x9b\xef=]\xef\\\xdfm" + - "\xeeG9.\xb9\xe7*\x91&S{\xf0\xcd\xe7\xe6\xc7" + - "\xbe\x17%\x9a*\x9d!\xa4\xcb\x12\x11\xad\xf5\xed%I" + - "\xfd\x9d-\xcfU\xad\xe6\x0e\x9c:\xa5\x17\xe59Sh" + - "\xb5\xf6)48\xf6\xe9\xe1\xed\xd2\xa9\x9f>\xefa\xe2" + - "\x19~t\xca\xb0\xcb\xca)\x04Z\xefM_{ ~" + - "\xfak/\x90)\x11\x17\x88'\\vN1Q\x96d" + - "\xfa\x99\x94[x@'\xfd\xe4\x9f}gI\xfe\x8d\x97" + - "\xeb\x98\"\xdf;\xed\x9c\xfc\xc84\xfa\xb5{\x1aYr" + - "j\xde\xa1/\xbdu\xef\xf1\xd7*\x96\xb8{\xbf;\xcd" + - "\xe5L\xbc\x85\xf6>\xbfv\xdf\xf5\x9as\xc3\xc9j\x18" + - "\xdd\x91\xed-\xdfE\xf9\x9a\x16Z\xee3-\xb4\\@" + - "\xd0z\xa3\xf7\xb6\x0c\xa3|\xc8\x1d\xfd\x84\xbb6wZ" + - "\x9d\xb1\xe9\xa7\x9f{3\xc2\xa9C-\xbfB\x889+" + - "\xbfp\xd3p\xe3\x1d\xa7NE\xd5z\xac\xc5\x05\xf8\x88" + - ";\xf5\x1f\xfe\xe5\xa1\xa1\x9b\xbfs\xect\x84Go\xb4" + - "\x98\xc4\xa3\xff\xfa\xab3_=[\xcc\xff\xbb\xeb1\xfe" + - "\xe1\xbc\xde\xb2\x98\xe0|\xbb\x85\\\xb8\xa5-\xb9t\xd6" + - "\x89\xbe3Q\xbc_\x9c\xbe\x84\x06\xfcr:-\xbe\xe8" + - "\x96.\xb6\xf6\xea\x1b\xce\xd4\x10\x0dg,FY\x9a\xe1" + - "b=c;\xca\xed\xe9\x16\x00g\xe4ow\xde\xf0\xf8" + - "\xf7W\x9e\xf3\x9c\xd8\xd5ejz\x01\xe9r\xdf\x97\xbb" + - "W}f\xd6\xd1sQ3\x92ir+\xf9\x13i\xda" + - "i\xe0\xea\xb3\x9fo\xbf\xef\x07\xe7\xea\xf9NWz." + - "\xcaJ\x9a\xe0ZA\x83\xdfY\xf6\x17\xaf\xa5\xc5\xf4\xfb" + - "U\xd06\xd0\xd8[\xd3\xc3(o\xa3\xb1\x0b7\xa7_" + - " >\xef\xff\xcb\x03\xffz\xfe\xd8u\x1f\xd4\xd8P\x9e" + - "\xd9\x8f\xf2\x8e\x99\xb4\xec\xb6\x99\x82\xbcm\xe6\xe5\x00\xce" + - "\x9d'\xbf\xb8\xee'_y\xef\x83j\x86\xb9\x8a\xdc1" + - "3\x83\xf2Nw\xc6\xbd3\x89\xb0\x0f\xad\xfe\xcf\x8dg" + - "wO\xfbM\xcd\xda\xf3Z\x87Q\xeej\xa5\x91\xd7\xb4" + - "\xbe \x1f\xa7_\xce\xab\xc2\xa3\xf3\xbb7\xbe|>r" + - "TGZ{\x09\x9e\x07\x85o\x9c\xda\xf4\x8b/\xfe6" + - "\x0a\xcf\xd3\xad\xbf\"x^l%xn\x7f\xe7\x91\xeb" + - "\xbe\xba\xf6\xdb\x1fE\x08\xf2V\xeb\x16\x9aj\x97u\x9d" + - "\x15\xccR,w\xa5\xff3wEN-\xe9\xa5\xc5]" + - "e{\x88\xe9\xb6\x96Sm\x96a\x1dV\xc9\xd0-\xd6" + - "\x87\xa84\xf31\x80\x18\x02H\xea0\x80r\x0b\x8fJ" + - "\x81C\x091ED\x914\x12\x0e\xf1\xa8\xd8\x1cJ\x1c" + - "\x97\xa2\x00+\xdd:\x0b@)\xf0\xa8\xac\xe3\x10\xf9\x14" + - "\xf2\x00R\xf9\x01\x00e\x1d\x8f\xcaV\x0e\x9d\x123\x8b" + - "\xaa\xcet\x10\xed\xa5\xa6\x89M\xc0a\x13\xa0c2\xdb" + - "\\\xaf\xf6\x17@d\x11\xb10|\x9b\x8dI\xe00\x09" + - "\xe8\x0c\x19e\xd3Z\xa3\xdb\xa8\x152l\xc0d\x16\x0e" + - "a\x03p\xd8\x008\x96yYfY\x9a\xa1\xafPu" + - "u\x90\x99\x00dY\x82\x8f\x03\x04\xc9\x0b\xfd4'\xcd" + - "\xdf\x03\x9c4O\xc00\xd1\xa0OV\xe9\x13\x07\x81\x93" + - "Z\x05\xc7d\x83\x9ae3\x13\xd7\xe4K\xee\xda\xbc\xa1" + - "w\xa2S\xd6\xbd\x0f\xc8L\xef\x83H\xbbvb\x1f\x86" + - "\xda\xf1\xb5\xda][\xd0\x98n\x8b=\xfa\x80Q\x05y" + - "o=\xc8{+\x90o\x8d@\xbey\x09\x80r;\x8f" + - "\xca]\x1cJ|\x05\xf3ms\x01\x94M<*\xf7p" + - "\xe8\xe4\xdcMz\xf2\x00\x10\xa09\xc0T\xbbl2\x8b" + - "d\x93\x01\xfbxtA\x9f\x0c\xb8q\x84\x99\xa4\xbb\x7f" + - "\x08\xa2j\xe6\x86\x82\x83\x1a\x03\xe9\xa5\xeb4\xcb\xd6\xf4" + - "\xc1\xd5\xae\xbc\xa3\xcf(h\xb9\xf5dU\x93\xabg\xeb" + - "b\x00Di\xea\x8d\x00\xc8I\xd2\x12\x80\x0emP7" + - "L\xe6\xe45+g\xe8:\x03>go\xecW\x0b\xaa" + - "\x9ec\xc1F\x0d\xb5\x1by\x1bd\x999\xc2\xcc+\xd4" + - "\x08}g\xf7\xa9\xa6\xca\x17-\xa5)\xc0q\xe9\x8d\x00" + - "J7\x8fJ_\x04\xc7\x15\x84\xe3r\x1e\x95\x1b\"8" + - "\xae!\x1c\xfbxT\xd6r\xe8\x18\xa66\xa8\xe9\xd72" + - "\xe0\xcd(\x03-[W\x8b\x8c0\xab\xe0\xb1\xd1(\xd9" + - "\x9a\xa1[\xd8\x1cf\x1d@l\x8e %\x8c\xc7\xc9+" + - "|J\xf9\x8c2\xf4\xd9\x19f\x95\x85\x82m)\xb1\xc0" + - "\x92\xe4b\x00%\xc1\xa3\x92\xe2\xb0\xc3dV\xb9`c" + - "sXM\xfc.v\xf5\xe1\x8b\xd00S\x8f\x86\x0b\x00" + - "\x94<\x8fJ\x89C\xac\xa0W\\\x12\x89\x06\xa2my\xcb\xee)\xf9\x7fm\xcc[v\x9fa\xda" + - "(\x00\x87\x02\x10o\x0d\x8bu\x0d\x90O\xf5\xe4\x0b\xec" + - ":\x8d\xd7m\x8c\x03\x87q\x18\xd3\xa9<~\x88\x14\xd8" + - "g?2" + - "U\x9d\xb4h\xaaE+\x8aM\xa6\x1e6t\xaa\x9f\xe2" + - "Q\xb9\xba\xfe\x01n,2\xcbR\x07YMx\x88\xd7" + - "\xc5Dg9\xb2:\xc3\xbc$s\x85\xc9,\xa1\\\xb0" + - "I\x8b&\xc7\xf1\xd4 n\xcd\xe6Q\xb9\x8a\xc3$~" + - "\xe4xz\xcc{ <\xa36f\x9a\x86\x89\xcda\x12" + - "\xae@\x92\xabl\x80\x86\xde\xcdlU+ \xb9eP" + - "\xa8V\x017^\\\x09a\xf3\xc4\xb3;\xc8;\x8a\xa3" + - "N\x8a\xe8\xdd\xcc\xa32\x93Cg\xd0Ts\xac\x8f\x99" + - "\xa8\x19\xf9\x95\xaandy\x96\xab!\xeb\xe4\x89n\xea" + - "\xf2\xc3\xb6 \x985\xf6|\x93U@\xa8L\xefk\xf3" + - "tN\x05:\xdf1+L\xc6\xc11o\xee\x0f\xb3E" + - "\x10\x0fw\x90\xb3\xdc\xc5\xa3\xb2+\x92WvR\xe4\xbc" + - "\x9fG\xe5\x1b\x1cJ\xb1X\x0ac\x00\xd2#\xc4\x92]" + - "<*\xfb\xb8\xd1)\x9b\x8d0\xdd\xee\xd6\x06A`V" + - "(%\x15\xbb\xb5A\x06\xbcu\xa9\xb151\x0e\x1eF" + - "\xbfe\x14\x98\xcd\xbaY\xae\xa0\x92\xcb\x8d0\xef{\x85" + - "\x8c\xfe\xa1\x8e\xc5\xdbL\x8d\xf7\x10\x7fE\xbfJ\x8a\xd0" + - "aV\xe8\xb8\x02\x8b\x147ch\xeb-\xee\x05\x83\x1a" + - "\x0e\x84\x1eS\xe1\x01Z\xbf\x93\xa0\xe3\xda\x8c\xa3\x9c\x7f" + - "I\xe8u>)\xe6-\x0e\x03BP\x13\xc4\x80\xc3\x18" + - "`G\xce]\xb0&\x14\xc6\xc6\xd3\xaa\xc3S\xcb\x03\x8e" + - "\x8a0\xff\x1a\x8b\xfe\xdd_\x92\x0e\x00'%\x05\xc7\xd7" + - "\x1c\xfd\xf9BMA\x15\x1b+\xca\xac*\xd9\x9a`\xe8" + - "\x16\xed\x15\xe1\xff\xe2z\xfc7C\xfe\xfb\x09m\xc7\x96" + - "(\xfd+\x09m\xe7\x9e\x90\xe9R\x8c\xf3\xe8\xbf\xf7\x00" + - "\x80\xb2\x8fG\xe5\xdb\x1cvx\xb5\x166\x87=\x9b\x0a" + - "e\xbd\x8ab\xb9\x01m9\xb5\x10&=\xc7d\xa5\x82" + - "\x9acK\xb1R=\x01\"p\x88\xae\x9f\x14K&\xb3" + - ",\xd4\x0c])\xab\x05\x8d\xb7\xd7\x07\x15\xaf^.\xf6" + - "\x99lDC\xa3lu\xd96+\x0a%\xdb\xba\x98z" + - "8\x04\x88\x82\xa4\xa0\x15\xac\xaa\x1c97\xa4B\x00\xd0" + - "\xbc\xe10\x0f\x88\xe5\xb2\x16$\x00\xa7`\xe4\xdc\x93\x05" + - "q\xa5Z\xac\xcd\x03\x0d\xe3\x06\xacQ\xe1\xceOK\xbf" + - "O\xf5\xdb\xd8W&2\xdd\xbdSDT\xa68\xd0\xc9" + - "\xa3\xb2<\xa2r\xcf\x82\x88\x1d\xbe\xca+\xfaC;\x84" + - "?g\xeb}\xad\xdaX\x91\xd2\x97\x0ff\xc5\x98.\x10" + - "\xae\x0f\xc7L4\xaa\xb8\xde\xb4\xdc\xc8\xa9\x85\xea` " + - "V\xa7\xb5h\x01r\xf1\x8e\x1e\xddtU\xa9\xcd\x85\x95" + - "\x80\xb9\xda_X^\x8f\xbd\x00\xd9u\xc8cv+\x86" + - "\xd8\xc8\x9bq\x09@\xf6v\x92\xdf\x85!<\xf26L" + - "\x03d7\x91\xfc\x1e\x0c\xee\x93\xf2\x0e<\x08\x90\xbd\x87" + - "\xc4\x0f\xd3\xf0\x18\xef\xfa\xa1\xbc\xdb]~\x17\xc9\xf7\x91" + - "<\x1eKa\x1c@\xde\x8bs\x01\xb2\x0f\x93\xfc0\xc9" + - "\x1b\xb8\x146\x00\xc8\x87p\x18 \xfb$\xc9\x9f!\xb9" + - "\x10O\xd1\x95Z>\x82&@\xf6\xefH\xfe}\x92'" + - "\xa6\xa70\x01 \x1fu\xe5\xcf\x91\xfcG$o\x9c\x91" + - "\xc2F\x00\xf9E\xdc\x02\x90\xfd!\xc9_#\xf9$L" + - "\xe1$\x00\xf98\xee\x01\xc8\xbeF\xf2\x7f#\xf9e\x0d" + - ")\xbc\x0c@\xfe\xb9\xab\xcf\x09\x92\xff\x9a\xe4M\xb1\x14" + - "6\x01\xc8\xbf\xc4\x03\x00\xd9_\x93\xfc\xbfI\x9e\x14R" + - "\x98\x04\x90\xdfv\xed:K\xf2\x04Wu\x9d\xf3i\\" + - "ug\xe3\x0d+\xe0\x09\xab\x04\x16\xf4|\xac\xcf\x10\xe9" + - "^\x86b\xd8(\x06D\x11\xd0)\x19Fa\xe5h\xf7" + - "\x10mu\xd0\xf2\xef\x87\xcda\xa7\x0c\x90\x84A\xc5\x05" + - "\xa2\xa1\xf7\xe4\x83\xe8S\x1d\xea|M4\xab\xabl\x1b" + - "\xe5\x12\xb4\x11\x17\xf3A\xa03\xcb\xfa2\xd3(\xaeF" + - "f\x165]-\x8c\x13\x02\x1b\x81\xc3F\xa8\xc4!\x7f" + - "\xed\xb1\xe3\xe1\x85o\xbb\x01\xa3\xb9jF\xb7\x95\x16\xaf" + - "V\x07/&8.\x08\x13\xa5\xa8G\xa2`\xdb\x88Z" + - "(\x7f\x9c\x988\xba\x88\xcbtxE\xe0xw\x04\xbf" + - "\xe1U\x15\xbf\xea\x944kj\x8b\x82\x0c\xb3\xda\x82\xce" + - "O\xc4\xe0\x83a\xe0\xf7\xed]4+ra*\xa86" + - "\xb3\xec\xae\x12\x96\x0a\x1a\xcb\x7f\x81\x99b\xb4N\xa8[" + - "\x06\xc5\xc6\xbb\x1b\x8c\xae\xad0\xd2\xd5'\xc3\xb9\x8a\xc1" + - "\x17\x8d\xe7 \xb3\xbd_=\xfa\x80A\xc5\x8f\x10\xad\xf8" + - "&6;\xc3,\xf1b\xce\"\xecT\x8e_\xb1N$" + - "ZgX\x9b\xcb\x85\xb1\xee\x7fu\xd6\xabSQ\xfa\xd7" + - "\x99\xc8]\x9f\xc8\xbd\x96Ge(Bn\xd6[\xe7\xae" + - "\x9f\x09\x9b|\x12\xcfU\xba|\x94~K<*\xb7s" + - "(\xaae{\x08\x9b\xc3\xc7\x9fQ \x8cnD\x11\xd7" + - "{\xf4<\x03\\\xe7\xbbk$)\x07\xaf\x12\x1f\x0b\xc6" + - "\x0b\x16\xd2\x16\x8c{\x80Ak\xbej\xe7\x0b\xf6\x1b:" + - "\xbcM\x89\xb7\xd3\xdd\xd2\xd6\x7f\xf5@\xbf\xad-\x1d\xda" + - "\x00\x9c\xf4-\x01\xc3V>\xfa\x9d{i\xaf\x09\x9c\xb4" + - "[@.x\x97B\xff\xfdI\xdaq7p\xd26\x01" + - "\xf9\xe0Y\x09\xfdV\xef\xfc\xf5\x93\x108\xe9\x0e\x01c" + - "\xc1{\x1e\xfa\x8db\xe9\xd6a\xe0$M\xc0x\xf0b" + - "\x85\xfe\x0b\x86t\xf3\x16\xe0\xa45aC\x13:<;" + - ":\xd1\xf19\x0fm.\xebG\xb77\xbdQ\x00\x9d\xe8" + - "\xf8\xd7+\xfeB\xf7+w\x94\xdf\xa1\x031\xa7\xda\xac" + - "\x93J^/\xc0a%\xc2A'*1\x8c\xf4\xc9\x01" + - ".\xb5\xbfQ\xe3'\x13,D\xfd\xf9\x1f3\xe6\xf2\xf5" + - "\xb4\xa6}\x82Nod]\xaa\xad\x9bxT\xa6s\xe3" + - "\x96\xd3\xb1\x0bY\xe1\x93_\xa4\xc9\xb4\xfe\x1f\x06\xeb\x1f" + - "\xa7p\xfd#\x1e\x95\x13\x11\xb7~\x9d\x84\xaf\xf2\xa8\xbc" + - "\x19)G\xdf _?\xc1\xa3\xf2~\xd8\xbc\x7f\xf7n" + - "\x00\xe5}\x1e3\x91JK\xfa\x90\x06\xfe\x96\xea\x11\xb7" + - "\xceB\xaf\xce\x8a\xe3\x03\x00\xd9\x04\xd5))\xb7\xce\x8a" + - "yu\x96\x84\xfd\x00\xd9f\x92\xcf\x8c\xd6Y3\xf0F" + - "\x80\xect\x92\xcf\xc6\xd1Wf\xa1l\x86\xe5o\xc1\x18" + - "\\\xae\xe9u\x93\xb7\xff\x9a\x80\xf62U+\x94M\x06" + - "a\xedP\x096\xdd\x91r\xc6{f\xf0:\x8aY\"" + - "a\x1e\xad\xa0\xdb8\x81f\xc5X\x99\xac`\x94\xf3\x03" + - "\x05\xd5d\xf9,3\x05/ \xf4\xf1q%\x81\x91W" + - "\x7f\x80\xf0u6B\xf613\xe3R\xd34\xd0\xac\xba" + - "j,\x08\xaf\x1a\xc1M\x83nL\xd7\xf1\xa8\xac\xa6\xa3" + - "\xed\xf4\x8eV\xe9\x0f/Gm9\xb5l\xb1\x1aL\x80" + - "gf\xd0\xb0\xb2\x86\x8cr!\x9fa \xd8\xe6\xfa*" + - "H\xc7\xad\xfe\xb3L\xf4#a\x93\x1b\x09\xfd7F\xf4" + - "\x9f\x12%e\x0fp\xd2\x0a\x8a\x84\xfes\x17\xfaO\xdd" + - "R\xd7A\xe0\xa4k(\x12\xfa/\xbd\xe8?_J\xf3" + - "_\x02N\x9a\x1fy\x85\xf1\xf1\xa9y\x85\xf1>\xb8\xfe" + - "@\x1f*\x09\x95\xab\xce\xa8\x14\xa1\xa2-\x85K\xe8\xd1" + - "x\x095r\x9c\x13z\xba\xb8\xe8\x8e\x7f\xf0\x8f&U" + - "1\xa7\xf1R{a~j\xfc\xff\x00\x00\x00\xff\xff\xe5" + - "\xf9\xce\x8f" +const schema_db8274f9144abc7e = "x\xda\xccZ}t\x1c\xd5u\xbfwfW#\x19\xad" + + "G\xc3,\x96\xb5\xc7B\x8d\x8e]j'\x06d\xd7)" + + "u\xd3H2\xb2\x83\x84?4\xbbV\x0e1&\x87\xd1" + + "\xee\x934\xea\xee\xcc23+l\x07\xe2\x0fl\x0c\x1c" + + "B0\xb1\xf9pBc\x9b\xd2\x9e\x98$\x85`\x9a\xba" + + "\x07Z\x9c\x86\x10Cpp\x0e\xa4&\x86\xa6\x89\xe3\xb6" + + "\xf8\x98R\x0cn\x8e\xdb\x98\xe9\xb93;\x1f\xda]$" + + "+\xce\x1f\xf9ou\xe7\xbe\xf7\xee\xfb\xbd\xdf\xfdx\xf7" + + "\xe9\xea;\x1a\xba\xb8\x8e\xf8F\x11@9\x10\xafs\xd8" + + "\xbc\x9fl\xd83\xe7\x9f\xb7\x80\x92Bt\xbe\xf8l_" + + "\xf2\x9c\xbd\xe58\xc4y\x01`\xe1\xe3\xc2\x06\x94\x0f\x0a" + + "\x02\x80\xfc\x8c\xf0\x1f\x80\xce\x9d3\x9e\xfc\xfa\xe3Kw" + + "\xde\x01R\x8a\x0f\x95\x01\x17>R\xdf\x87\xf2\xb7\xeaI" + + "\xf3\x1b\xf5\xdb\xe5\x86\x06\x01\xc0\xb9^\xba\xea\xc6\xe4\xab" + + "GH;:u\x8c\xa6~\xaf~\x1e\xcaHj\xf2\xf9" + + "z\x9a\xfaS\x85\x1f\xef\xfb\xe4\xae\x97\xb7\x82\x94\xe2\xc6" + + "M\xfdv\xc3\x06\x94\xcf\xbb\x9a\xe7\x1aV\x01:\xef\xef" + + "\x9c\xf9\xc4\xde#?\xdc\x06\xd2\x15\x08eK\xa5i?" + + "C@y\xce\xb4\xbf\x05t^9{\xe3\x07\x07~\xb0" + + "\xe8N\x90\xe6\x92\x02\x92\xc2\x0b\xd3\xda9@\xf9\xadi" + + "\x9d\x80\xce\xa9\xd3\xff\xb7\xfd\x0bsW\xde\x0f\xca\\\xe4" + + "\x00\xe2\x1ci\x9c\x9f\x96\"\x8d\xcb.!k:\x97\xbd" + + "r0\xb5\xf0\xc1\x9d\x15\xa6\xbb\x8ag/\x99\x87r\xbc" + + "\x91\x0c\xc2\xc6[\x01\x9dO\xff\xc9\xd3\xf7\xf5<\xb8i" + + "\x17HW\x05\xeb\xb1\xc654\xdb\xe6FZ\xef\x7f\xa6" + + "\x7f\xf5H\xe9\xda\xef>X6\xc8\x9deo\xe36\xe7\xe6\xef\xbd\xf0\xf4C\xa0\xccG" + + "t\xde\x1c\xfc\xf8\xeb\xfc\xa3\xfb\x8f\xc3\x00\x0ad\xdf\xc2" + + "\x96\xc4>\xda\xdd\xdc\x04\xe9\xfe\xf8\x13\xcf\xfe\xc3\xfdO" + + "o\xff*(W \x02\xb8h~)\xf1\xbf\xa4\xb07" + + "A\xab\xed<\xf6\xdc\xca\xc2\x8e\xdd\xfb<|\xdc\xef\x87" + + "\x13\x1c\x071gk\xef\xaf\x0b\x03\x8fe\x1e+#\x17" + + "\xa7O\xcf%\xce \xe0\xc2\xa3\x896\x04t\x16\xfd\xec" + + "\xe4\xaa\x15\xdf\x19\xfa\x9b\xc8\xd8w\xa6o\xa0\xb1\xdb\x87" + + "\xce\x1cjJ\x17\x9e\xa8@\xc4\xdd\xec\xdb\xd3\xf7\xa3\x8c" + + "\xa2{\x98\xd3\xc9\x84o]~}\xc3\xba\x93\xcb\x9e\x04" + + "i\xbe?M\xab\x98\xa6i\xc6^z\xec\x0f\xe7\xbct" + + "\xebS\xa0\\\x85\x01X-\xf4\x0d\xe5E\"\xed/v" + + "|\xce\xfe\xe7~~\xdf\x81*\x8e\xed\x107\xa0\xfc\xb8" + + "\xbb\xca^\xf13\xf2Q\xfa\xe5\xc4n\xe2?T\x1f\xfe" + + "\xa7\x03\x95\xfcu1>(\x0e\xa2\xfc\x8a\xe8\" \xba" + + "\xfb\xbb\xe7\xd0\xee\x8f\xd7\x7f\xfd\xfdgj\xaa\xbf\xd74" + + "\x88r\\r\x0fV\"\"]\xd6\x8bo>\xdf\x11\xfb" + + "n\x94i\x8fK\xa7\x08\xea\x83\xaeB\xeb;K\x12\xfa" + + "\xbb[\x9e\xaf\x00\xc5U\xfc\xdc\xa5}(\x17.\xa5\xd9" + + "\xb4KI9\xf6\xc9\xd1\xed\xd2\x89\x9f\xbe\xe0\x81\xe2\xed" + + "<.\x8f\xd2\xce?&\x13j}7~\xe5\x81\xf8\xc9" + + "\xaf\xbcH\xc6E| Nn\xb5\xb0[6Q\x1e\x90" + + "\xe9\xa7\"7\xf3\x80N\xea\xc9?\xfb\xf6\x92\xdc\x1b/" + + "\xd7\xe0\xa8|t\xc6\x19\xf9\xad\x19\xf4\xeb\x8d\x19\x04\xea" + + "\x89\xf9O}\xe1\xed/\x1d}\xad\xbc\x13w\xedE\xcd" + + ".iz\x9bi\xedsk\xf7\\\xaf97\x1c\xaf\x04" + + "\xc6\xd5\xd4\x9a\xbf\x83\xf2\xe6f\x9a\xee\xf6f\x9a.`" + + "h-\xed_4\x8f\xa2|\xd6\xd5~\xcf\x9d\x9b;\xa9" + + "\xb6l\xfa\xe9\xa7\xdf\x8c\x90\xeal\xf3/\x11b\xce\xca" + + "\xcf\xde8\xdap\xfb\x89\x13Q\xb3\xdenv\x01>\xef" + + "\x0e\xfd\xc7\x7fyh\xe4\xa6o\x1f9\x19%\xd2L\x93" + + "\x88\xf4_\x7f}\xea\xcb\xa7\x0b\xb9\x7fw]\xc6?\x9c" + + "\x96\x99\x8b\x09\xce\x8e\x99\xe4\xc3\xcdm\x89\xa5\xed\xc7\xfa" + + "OE\xf1N\xb4,!\x859-4\xf9\xa2\x9b\xbb\xd9" + + "\xdakn8U\xc5\xb4\xa5-\x8bQ\x1ehq\xb1n" + + "\xd9\x8e\xb2\x96j\x06p\xc6\xfen\xc7\x0dO|\x7f\xe5" + + "\x19\xcf\x8b][>\x97Z@\xb6\xdc\xf7\xc5\x9eU\x7f" + + "\xda~\xe8Lt\x1bJ\x8a\xfcJf)Zi\xe8\x9a" + + "\xd3\x9f\x99s\xdf\x0f\xce\xd4r\x9em\xa9y(\xefJ" + + "\x11\\;H\xf9\xdde\x7f\xf9ZJL}P\x01m" + + "\x1d\xe9>\x93\x1aE\xf9p\xca\x0dh\xa9\x17\x89\xd0{" + + "\xffj\xdf\xbf\x9e;r\xdd\xd9\xaa=\x1c\x9cE\xdc\x9f" + + "E\xd3\x1e\x9e%\xc8\x87g]\x01\xe0\xdcy\xfc\xf3\xeb" + + "~r\xc7\xfbg+\x19\xe6\x1arhV\x1a\xe5\xd7\xdd" + + "\x11Gg\x11a\x1fZ\xfd\x9f\x1bO\xef\x9a\xf1\xeb\xaa" + + "\xb9oi\x1dEy[+inn}Q\xbe\xecr" + + "\xf2\xc4W\x85\xc7:z6\xbe|.rT\xe7[\xfb" + + "\x08\x9e\x07\x85\xaf\x9d\xd8\xf4\xf3\xcf\xff&\x0a\xcf\xb9\xd6" + + "_\x12<\x89\xcb\x09\x9e\xdb\xde}\xe4\xba/\xaf\xfd\xe6" + + "\x87\x11\x82\xcc\xbf|\x0b\x0d\xb5K\xba\xce\xf2f1\x96" + + "\xbd\xca\xff\x99\xbd2\xab\x16\xf5\xe2\xe2\xee\x92=\xc2t" + + "[\xcb\xaa6K\xb3N\xabh\xe8\x16\xebGT\x9a\xf8" + + "\x18@\x0c\x01$u\x14@\xb9\x99G%\xcf\xa1\x84\x98" + + "$\xa2H\x1a\x09GxTl\x0e%\x8eKR\x84\x95" + + "ni\x07P\xf2<*\xeb8D>\x89<\x80Tz" + + "\x00@Y\xc7\xa3\xb2\x95C\xa7\xc8\xcc\x82\xaa3\x1dD" + + "{\xa9ib#p\xd8\x08\xe8\x98\xcc6\xd7\xab\x83y" + + "\x10YD,\x8c\xdejc\x028L\x00:#F\xc9" + + "\xb4\x06t\x1b\xb5|\x9a\x0d\x99\xcc\xc2\x11\xac\x03\x0e\xeb" + + "\x00'\xda^\x86Y\x96f\xe8+T]\x1df&\x00" + + "\xed\xac\x9e\x8f\x03\x04\xd9\x0b\xfd<'u\xec\x06N\x9a" + + "/`\x98i\xd0'\xab\xf4\xb1\xfd\xc0I\xad\x82c\xb2" + + "a\xcd\xb2\x99\x89\x03\xb9\xa2;7o\xe8]\xe8\x94t" + + "\xef\x032\xd3\xfb \xd2\xaa]\xd8\x8f\xa1u|\xb5u" + + "\xd7\xe65\xa6\xdbb\xaf>dT@\xdeW\x0b\xf2\xbe" + + "2\xe4[#\x90o^\x02\xa0\xdc\xc6\xa3r\x17\x87\x12" + + "_\xc6|\xdb<\x00e\x13\x8f\xca\xbd\x1c:Yw\x91" + + "\xde\x1c\x00\x04h\x0e1\xd5.\x99\xcc\"\xd9t\xc0~" + + "\x1e]\xd0\xa7\x03n\x1cc&\xd9\xee\x1f\x82\xa8\x9a\xd9" + + "\x91\xe0\xa0&@z\xe9:\xcd\xb25}x\xb5+\xef" + + "\xec7\xf2Zv=\xed\xaa\xd1\xb5\xb3u1\x00\xa2t" + + "\xd9\x1a\x00\xe4$i\x09@\xa76\xac\x1b&sr\x9a" + + "\x955t\x9d\x01\x9f\xb57\x0e\xaayU\xcf\xb2`\xa1" + + "\xba\xea\x85\xbc\x052\xcc\x1cc\xe6\x95j\x84\xbe\xb3\xfb" + + "US\xe5\x0b\x96\xd2\x18\xe0\xb8t\x0d\x80\xd2\xc3\xa3\xd2" + + "\x1f\xc1q\x05\xe1\xb8\x9cG\xe5\x86\x08\x8e\x03\x84c?" + + "\x8f\xcaZ\x0e\x1d\xc3\xd4\x865\xfdZ\x06\xbc\x19e\xa0" + + "e\xebj\x81\x11fe<6\x1aE[3t\x0b\x9b" + + "\xc2\xac\x03\x88M\x11\xa4\x84\xc98y\xa5O)\x9fQ" + + "\x86>;\xcd\xac\x92\x90\xb7-%\x16\xec$\xb1\x18@" + + "\xa9\xe7QIr\xd8i2\xab\x94\xb7\xb1),'~" + + "\x17\xab\xfa\xf0Eh\x98\xaeE\xc3\x05\x00J\x8eG\xa5" + + "\xc8!\x96\xd1+,\x89D\x03\x1e=\x16\xde\xb2\x1b@" + + "\xb1yT6q\xe8X\xde\"\xbd\x809\x1f\xd1\xb6\x9c" + + "e\xf7\x16\xfd\xbf6\xe6,\xbb\xdf0m\x14\x80C\x01" + + "\x88\xb7\x86\xc5\xba\x87\xc8\xa7zsyv\x9d\xc6\xeb6" + + "\xc6\x81\xc38L\xe8T\x1e?D\x0al\x9e\xb7\xfb\xbb" + + "\x99Kd\xf8#\x1e\x95?\x8e\xec\xa6\x83\xe2\xd8\xd5<" + + "*\x9f\xe2\xd0Q\xb3Y\xa3\xa4\xdb\xab\x81W\x87+8" + + "\x9fa fM\x16\xd2\xc1_\xb6\xbe\x86[\x1b\xfa\x90" + + "6\\2U;\x02x\xa9\x98Sm6\xee\x93{\xce" + + "y\xfe\x02\xce9\xa8+\xa6|\xce~d\xaa8i\xd1" + + "T\x0bV\x14\x9bt-l\xe8T?\xc1\xa3rM\xed" + + "\x03\xdcX`\x96\xa5\x0e\xb3\xaa\xf0\x10\xaf\x89\x89\xce\xb2" + + "\xb4\xeb4\xf3\x92\xcc\x95&\xb3\x84R\xde&+\x1a\x1d" + + "\xc73\x83\xb85\x9bG\xe5j\x0e\x13\xf8\xa1\xe3\xd91" + + "\xff\x81\xf0\x8c\xda\x98i\x1a&6\x85I\xb8\x0cI\xb6" + + "\xbc\x00\x1az\x0f\xb3U-\x8f\xe4\x96A\xa5Z\x01\xdc" + + "dq%\x84\xcd\x13\xcf\xee$\xef(\x8c;)\xa2w" + + "\x13\x8f\xca,\x0e\x9daS\xcd\xb2~f\xa2f\xe4V" + + "\xaa\xba\x91\xe1Y\xb6\x8a\xac\xd3\xa7\xba\xa8\xcb\x0f\xdb\x82" + + "`\xd4\xc4\xe3MV\x06\xa1<\xbc\xbf\xcd\xb39\x19\xd8" + + "|{{\x98\x8c\x83c\xde<\x18f\x8b \x1e\xdeM" + + "\xcer\x17\x8f\xca\xceH^\xd9A\x91\xf3~\x1e\x95\xaf" + + "q(\xc5bI\x8c\x01H\x8f\x10Kv\xf2\xa8\xec\xe1" + + "\xc6\xa7l6\xc6t\xbbG\x1b\x06\x81Y\xa1\x94L\xec" + + "\xd1\x86\x19\xf0\xd6\xc5\xc6\xd6\xfaI\xf00\x06-#\xcf" + + "l\xd6\xc3\xb2y\x95\\n\x8cy\xdf\xcbd\xf4\x0fu" + + "\"\xde\xa6\xab\xbc\x87\xf8+\xfaUR\x84\x0e\xed\xa1\xe3" + + "\x0a,R\xdcL`\xad7\xb9\x17\x0c\xaa8\x10zL" + + "\x99\x07h\xfdN\x82\x8e\xbbg\x1c\xe7\xfcKB\xaf\xf3" + + "I1\x7fq\x18\x10\x82\x9a \x06\x1c\xc6\x00;\xb3\xee" + + "\x84U\xa106\x99U\x9d\x9eY\x1epT\x84\xf9\xf7" + + "X\xf4/\xff\x92\xb4\x0f8)!8\xbe\xe5\xe8\x8f\x17" + + "\xaa\x0a\xaa\xd8DQfU\xd1\xd6\x04C\xb7h\xad\x08" + + "\xff\x17\xd7\xe2\xbf\x19\xf2\xdfOhwo\x89\xd2\xbf\x9c" + + "\xd0v\xec\x0e\x99.\xc58\x8f\xfe\x8f\xee\x03P\xf6\xf0" + + "\xa8|\x93\xc3N\xaf\xd6\xc2\xa6\xb0iS\xa6\xacWQ" + + ",7\xa0-\xab\xe6\xc3\xa4\xe7\x98\xac\x98W\xb3l)" + + "\x96\xab'@\x04\x0e\xd1\xf5\x93B\xd1d\x96\x85\x9a\xa1" + + "+%5\xaf\xf1\xf6\xfa\xa0\xe2\xd5K\x85~\x93\x8di" + + "h\x94\xacn\xdbf\x05\xa1h[\x17R\x0f\x87\x00Q" + + "\x90\x14\xb4\xbc\x0bP\xa4`\xa2\xca\xb1\x8bGey\x04" + + "\xa0^\xca\x91\xd7\xf1\xa8\xac\x0e\x01R\xbe\x07\xa0\xac\xe6" + + "Q\xb9\x99C\xb1T\xd2\x82\xa4\xe0\xe4\x8d\xac{\xda " + + "\xaeT\x0b\x95\xb9\xa1\xd7\xe2\xd2\xac`\xd8,\xbf\xde\xe3" + + "h.\xdc\xf1\x85\xc6\xe6\x8a \xe9'\xb3\xdf\xa7\xaao" + + "\xe2\x8b\x16\x81\x03\x15\xb8\xb7\xd7\xc2}Ad\x1f\xbe\xc9" + + "+\x06\xc3}\x08\x7f\xc1\xd6\xfbV\xb5\xb1\x02%=\x1f" + + "\xee\xf2f\xbaA\xb8>\xd4\x99j,r}p\xb9\x91" + + "U\xf3\x95!D\xacL\x86\xd1\xb2\xe5\xc2\xc3Ct\xd1" + + "U\xc56\x17V\x02\xe6\x1a\x7fby=\xf6\x01d\xd6" + + "!\x8f\x99\xad\x18b#o\xc6%\x00\x99\xdbH~\x17" + + "\x86\xf0\xc8\xdb0\x05\x90\xd9D\xf2{1\xb8\x85\xcaw" + + "\xe3~\x80\xcc\xbd$~\x98\xd4c\xbc\xeb\xbd\xf2.w" + + "\xfa\x9d$\xdfC\xf2x,\x89q\x00\xf9Q\x9c\x07\x90" + + "y\x98\xe4\x07H^\xc7%\xb1\x0e@~\x0aG\x012" + + "O\x92\xfcY\x92\x0b\xf1$]\xc4\xe5\x83h\x02d\xfe" + + "\x9e\xe4\xdf'y\xfd\xcc$\xd6\x03\xc8\x87\\\xf9\xf3$" + + "\xff\x11\xc9\x1bZ\x92\xd8\x00 \x1f\xc6-\x00\x99\x1f\x92" + + "\xfc5\x92O\xc3$N\x03\x90\x8f\xe2n\x80\xcck$" + + "\xff7\x92_R\x97\xc4K\x00\xe4\xb7\\{\x8e\x91\xfc" + + "W$o\x8c%\xb1\x11@\xfe\x05\xee\x03\xc8\xfc\x8a\xe4" + + "\xffM\xf2\x84\x90\xc4\x04\x80\xfc\x8e\xbb\xaf\xd3$\xaf\xe7" + + "*.\x81>\x8d+nz\xbca\x05dP\xc9$D\xeb\xc4\xa9\x8d" + + "N3K\xbc\x90\xb3\x08\xfb\x9b\x93\xd7\xb9S\x89\xd6i" + + "\xd6\xe6ra\xa2[c\x8d\xf9j\xd4\xa1\xfe%(\xd2" + + "! r\xaf\xe5Q\x19\x89\x90\x9b\xf5\xd5\xe8\x10\xa4\xc3" + + "\xd6\xa0\xc4s\xe5\xde \xa5\xdf\"\x8f\xcam\x1c\x8aj" + + "\xc9\x1e\xc1\xa6\xf0\xcdh\x1c\x08\xe3\xdbW\xc4\xf5^=" + + "\xc7\x00\xd7\xf9\xee\x1aI\xca\xc1c\xc6o\x05\xe3G\x96" + + "\xdf\x16Lz\x80AC\xbfb\xe5\x8f\xecRtz\x8b" + + "\x12og\xba\x05\xb1\xffV\x82~3\\zj\x03p" + + "\xd27\x04\x0c\x1f\x00\xd0\xef\xf7K\x8f\x9a\xc0I\xbb\x04" + + "\xe4\x82\xe7,\xf4\x9f\xad\xa4\xbb\xef\x01N\xda& \x1f" + + "\xbcF\xa1\xdf \xeeX?\x0d\x81\x93n\x170\x16<" + + "\x03\xa2\xdf^\x96n\x19\x05N\xd2\x04\x8c\x07\x0f]\xe8" + + "\xbf{H7m\x01N\x1a\x08\xdb\xa0\xd0\xe9\xed\xa3\x0b" + + "\x1d\x9f\xf3\xd0\xe6\xb2~|S\xd4\xd3\x02\xe8B\xc7\xbf" + + "\x94\xf1\x1fu+s\xb5\xfc\xbe\x1e\x88Y\xd5f]T" + + "({\x01\x0e\xcb\x11\x0e\xbaP\x89a\xa4\xbb\x0ep\xb1" + + "]\x91*?\x99b!\xea\x8f\xff-c._\xcbj" + + "Z'\xe8\x0fG\xe6\xa5\x8a\xbc\x91Ge&7I\xc1" + + "]3tz\x06\xfb\xe4\x17i0\xcd\xff\x07\xc1\xfcG" + + ")\\\xff\x88G\xe5X\xc4\xad_'\xe1\xab<*o" + + "F\xca\xd17\xc8\xd7\x8f\xf1\xa8|\x10\xb6\xfc\xdf\xbb\x07" + + "@\xf9\x80\xc7t\xa4\xd2\x92\xce\x93\xe2o\xa8\x1eq\xeb" + + ",\xf4\xea\xac8>\x00\x90\xa9\xa7:%\xe9\xd6Y1" + + "\xaf\xce\x92p\x10 \xd3D\xf2Y\xd1:\xab\x05\xd7\x00" + + "df\x92|6\x8e\xbfh\x0b%3,\x7f\xf3\xc6\xf0" + + "rM\xaf\x99\xbc\xfd7\x08\xb4\x97\xa9Z\xbed2\xa8" + + "\xbc\x82\xf4\xf6D\xca\x19\xefq\xc2\xebCf\x88\x849" + + "\xb4\x82\x1e\xe5\x14Z\x1c\x13e\xb2\xbcQ\xca\x0d\xe5U" + + "\x93\xe52\xcc\x14\xbc\x80\xd0\xcf\xc7\x95z\x8c\xfc\xb3\x00" + + "@\xf8\xa8\x1b!\xfb\x84\x99q\xa9i\x1ahV\\5" + + "\x16\x84W\x8d\xe0\xa6\xb1&\xbc\xe1I\\W\xf9\x8a7" + + "\x18^\x8e\xda\xb2j\xc9bU\x98\x00\xcf\xcc\xa0\xcde" + + "\x8d\x18\xa5|.\xcd@\xb0\xcd\xf5U\xb7\xba\xd8d\xd1" + + "W\xf4#a\xa3\x1b\x09\xfd\x97I\xf4\x1f %e7" + + "p\xd2\x0a\x8a\x84\xfe#\x19\xfa/\xe4R\xf7~\xe0\xa4" + + "?\xa7H\xe8\xbf\x0f\xa3\xff\xe8)u\xbc\x04\x9c\xd4\x11" + + "y\xbb\xf1\xf1\xa9z\xbb\xf1>\xb8\xfe@\x1f\xca\x09\x95" + + "\xab\xcc\xa8\x14\xa1\xa2\x8d\x88\x8b\xe8\xecx\x095r\x9c" + + "Sz\xf0\xb8\xe0w\x82\xe0\xffS*bN\xc3\xc5v" + + "\xd0\xfc\xd4\xf8\xff\x01\x00\x00\xff\xff|\xba\xdf\xe8" func init() { schemas.Register(schema_db8274f9144abc7e,