summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSam Whited <sam@samwhited.com>2022-03-11 13:50:17 -0500
committerSam Whited <sam@samwhited.com>2022-03-15 09:32:05 -0400
commita0f8afb97d2218b4f987779c5b2bb247ead1c66e (patch)
treefcadcf56c6de186d30c9a9a09f5c045c9f2ccde7
parent2d95d4d069124df4a4e2473fc23ad3feed19905d (diff)
Remove dependency on statik and use go:embed
This removes a dependency by using the built-in go:embed functionality introduce in Go 1.16 instead of statik for embedding files. This means that Go 1.16+ would now be required to build the VPN. Signed-off-by: Sam Whited <sam@samwhited.com>
-rw-r--r--go.mod50
-rw-r--r--go.sum16
-rw-r--r--pkg/pickle/helpers.go28
-rw-r--r--pkg/pickle/helpers/bitmask-root (renamed from helpers/bitmask-root)0
-rw-r--r--pkg/pickle/helpers/se.leap.bitmask.policy (renamed from helpers/se.leap.bitmask.policy)0
-rw-r--r--pkg/pickle/helpers/se.leap.bitmask.snap.policy (renamed from helpers/se.leap.bitmask.snap.policy)0
-rw-r--r--pkg/pickle/statik/statik.go14
7 files changed, 55 insertions, 53 deletions
diff --git a/go.mod b/go.mod
index 5546621..662d700 100644
--- a/go.mod
+++ b/go.mod
@@ -1,26 +1,60 @@
module 0xacab.org/leap/bitmask-vpn
-go 1.14
+go 1.17
require (
0xacab.org/leap/shapeshifter v0.0.0-20191029173606-85d3e8ac43e2
git.torproject.org/pluggable-transports/goptlib.git v1.1.0
git.torproject.org/pluggable-transports/snowflake.git v1.1.0
- github.com/OperatorFoundation/obfs4 v0.0.0-20161108041644-17f2cb99c264 // indirect
- github.com/OperatorFoundation/shapeshifter-ipc v0.0.0-20170814234159-11746ba927e0 // indirect
- github.com/OperatorFoundation/shapeshifter-transports v0.0.0-20191101030951-7a751b0500f4 // indirect
github.com/ProtonMail/go-autostart v0.0.0-20181114175602-c5272053443a
- github.com/agl/ed25519 v0.0.0-20170116200512-5312a6153412 // indirect
github.com/apparentlymart/go-openvpn-mgmt v0.0.0-20161009010951-9a305aecd7f2
github.com/cretz/bine v0.2.0
- github.com/dchest/siphash v1.2.1 // indirect
- github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0 // indirect
github.com/keybase/go-ps v0.0.0-20190827175125-91aafc93ba19
github.com/pion/webrtc/v3 v3.0.15
- github.com/rakyll/statik v0.1.7
github.com/sevlyar/go-daemon v0.1.5
github.com/smartystreets/goconvey v1.6.4
github.com/xtaci/kcp-go/v5 v5.6.1
github.com/xtaci/smux v1.5.15
golang.org/x/sys v0.0.0-20210423082822-04245dca01da
)
+
+require (
+ github.com/OperatorFoundation/obfs4 v0.0.0-20161108041644-17f2cb99c264 // indirect
+ github.com/OperatorFoundation/shapeshifter-ipc v0.0.0-20170814234159-11746ba927e0 // indirect
+ github.com/OperatorFoundation/shapeshifter-transports v0.0.0-20191101030951-7a751b0500f4 // indirect
+ github.com/agl/ed25519 v0.0.0-20170116200512-5312a6153412 // indirect
+ github.com/dchest/siphash v1.2.1 // indirect
+ github.com/google/uuid v1.2.0 // indirect
+ github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 // indirect
+ github.com/jtolds/gls v4.20.0+incompatible // indirect
+ github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0 // indirect
+ github.com/klauspost/cpuid v1.3.1 // indirect
+ github.com/klauspost/reedsolomon v1.9.9 // indirect
+ github.com/mmcloughlin/avo v0.0.0-20200803215136-443f81d77104 // indirect
+ github.com/pion/datachannel v1.4.21 // indirect
+ github.com/pion/dtls/v2 v2.0.8 // indirect
+ github.com/pion/ice/v2 v2.0.15 // indirect
+ github.com/pion/interceptor v0.0.10 // indirect
+ github.com/pion/logging v0.2.2 // indirect
+ github.com/pion/mdns v0.0.4 // indirect
+ github.com/pion/randutil v0.1.0 // indirect
+ github.com/pion/rtcp v1.2.6 // indirect
+ github.com/pion/rtp v1.6.2 // indirect
+ github.com/pion/sctp v1.7.11 // indirect
+ github.com/pion/sdp/v3 v3.0.4 // indirect
+ github.com/pion/srtp/v2 v2.0.2 // indirect
+ github.com/pion/stun v0.3.5 // indirect
+ github.com/pion/transport v0.12.3 // indirect
+ github.com/pion/turn/v2 v2.0.5 // indirect
+ github.com/pion/udp v0.1.0 // indirect
+ github.com/pkg/errors v0.9.1 // indirect
+ github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d // indirect
+ github.com/templexxx/cpu v0.0.7 // indirect
+ github.com/templexxx/xorsimd v0.4.1 // indirect
+ github.com/tjfoc/gmsm v1.3.2 // indirect
+ golang.org/x/crypto v0.0.0-20210513164829-c07d793c2f9a // indirect
+ golang.org/x/mod v0.3.0 // indirect
+ golang.org/x/net v0.0.0-20210525063256-abc453219eb5 // indirect
+ golang.org/x/tools v0.0.0-20200808161706-5bf02b21f123 // indirect
+ golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 // indirect
+)
diff --git a/go.sum b/go.sum
index 07b1a13..917f762 100644
--- a/go.sum
+++ b/go.sum
@@ -57,8 +57,8 @@ github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:ma
github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY=
github.com/cretz/bine v0.2.0 h1:8GiDRGlTgz+o8H9DSnsl+5MeBK4HsExxgl6WgzOCuZo=
github.com/cretz/bine v0.2.0/go.mod h1:WU4o9QR9wWp8AVKtTM1XD5vUHkEqnf2vVSo6dBqbetI=
-github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/dchest/siphash v1.2.1 h1:4cLinnzVJDKxTCl9B01807Yiy+W7ZzVHj/KIroQRvT4=
github.com/dchest/siphash v1.2.1/go.mod h1:q+IRvb2gOSrUnYoPqHiyHXS0FOBBOdl6tONBlVnOnt4=
@@ -309,8 +309,6 @@ github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsT
github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A=
github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU=
github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA=
-github.com/rakyll/statik v0.1.7 h1:OF3QCZUuyPxuGEP7B4ypUa7sB/iHtqOTDYZXGM8KOdQ=
-github.com/rakyll/statik v0.1.7/go.mod h1:AlZONWzMtEnMs7W4e/1LURLiI49pIMmp6V9Unghqrcc=
github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4=
github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg=
github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
@@ -339,11 +337,11 @@ github.com/streadway/handy v0.0.0-20190108123426-d5acb3125c2a/go.mod h1:qNTQ5P5J
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
-github.com/stretchr/testify v1.3.0 h1:TivCn/peBQ7UY8ooIcPgZFpTNSz0Q2U6UrFlUfqbe0Q=
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
+github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY=
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/templexxx/cpu v0.0.1/go.mod h1:w7Tb+7qgcAlIyX4NhLuDKt78AHA5SzPmq0Wj6HiEnnk=
github.com/templexxx/cpu v0.0.7 h1:pUEZn8JBy/w5yzdYWgx+0m0xL9uk6j4K91C5kOViAzo=
@@ -358,6 +356,7 @@ github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtX
github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU=
github.com/xtaci/kcp-go/v5 v5.6.1 h1:Pwn0aoeNSPF9dTS7IgiPXn0HEtaIlVb6y5UKWPsx8bI=
github.com/xtaci/kcp-go/v5 v5.6.1/go.mod h1:W3kVPyNYwZ06p79dNwFWQOVFrdcBpDBsdyvK8moQrYo=
+github.com/xtaci/lossyconn v0.0.0-20190602105132-8df528c0c9ae h1:J0GxkO96kL4WF+AIT3M4mfUVinOCPgf2uUWYFUzN0sM=
github.com/xtaci/lossyconn v0.0.0-20190602105132-8df528c0c9ae/go.mod h1:gXtu8J62kEgmN++bm9BVICuT/e8yiLI2KFobd/TRFsE=
github.com/xtaci/smux v1.5.15 h1:6hMiXswcleXj5oNfcJc+DXS8Vj36XX2LaX98udog6Kc=
github.com/xtaci/smux v1.5.15/go.mod h1:OMlQbT5vcgl2gb49mFkYo6SMf+zP3rcjcwQz7ZU7IGY=
@@ -382,14 +381,11 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk
golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
-golang.org/x/crypto v0.0.0-20191105034135-c7e5f84aec59 h1:PyXRxSVbvzDGuqYXjHndV7xDzJ7w2K8KD9Ef8GB7KOE=
-golang.org/x/crypto v0.0.0-20191105034135-c7e5f84aec59/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20191219195013-becbf705a915/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20201016220609-9e8e0b390897/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I=
-golang.org/x/crypto v0.0.0-20210317152858-513c2a44f670 h1:gzMM0EjIYiRmJI3+jBdFuoynZlpxa2JQZsolKu09BXo=
golang.org/x/crypto v0.0.0-20210317152858-513c2a44f670/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4=
golang.org/x/crypto v0.0.0-20210513164829-c07d793c2f9a h1:kr2P4QFmQr29mSLA43kwrOcgcReGTfbE9N577tCTuBc=
golang.org/x/crypto v0.0.0-20210513164829-c07d793c2f9a/go.mod h1:P+XmwS30IXTQdn5tA2iutPOUgjI07+tq3H3K9MVA1s8=
@@ -421,7 +417,6 @@ golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLL
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20191126235420-ef20fe5d7933/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-golang.org/x/net v0.0.0-20200226121028-0de0cce0169b h1:0mm1VjtFUOIlE1SbDlwjYaDxZVDP2S5ou6y0gSgXHu8=
golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
@@ -431,7 +426,6 @@ golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwY
golang.org/x/net v0.0.0-20201201195509-5d6afe98e0b7/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
-golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4 h1:b0LrWgu8+q7z4J+0Y3Umo5q1dL7NXBkKBWkaVkAq17E=
golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc=
golang.org/x/net v0.0.0-20210525063256-abc453219eb5 h1:wjuX4b5yYQnEQHzd+CBcrcC6OVR2J1CN6mUy0oSxIPo=
golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
@@ -465,8 +459,6 @@ golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7w
golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191220142924-d4481acd189f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4 h1:sfkvUWPNGwSV+8/fNqctR5lS2AqCSqYwXdrjCxp/dXo=
-golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
@@ -477,7 +469,6 @@ golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7w
golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210309074719-68d13333faf2/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20210317225723-c4fcb01b228e h1:XNp2Flc/1eWQGk5BLzqTAN7fQIwIbfyVTuVxXxZh73M=
golang.org/x/sys v0.0.0-20210317225723-c4fcb01b228e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210423082822-04245dca01da h1:b3NXsE2LusjYGGjL5bxEVZZORm/YEFFrWFjR8eFrw/c=
golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
@@ -552,6 +543,7 @@ gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
diff --git a/pkg/pickle/helpers.go b/pkg/pickle/helpers.go
index 69d0e87..c0bd024 100644
--- a/pkg/pickle/helpers.go
+++ b/pkg/pickle/helpers.go
@@ -1,5 +1,3 @@
-//go:generate statik -src=../../helpers -include=*
-
// Copyright (C) 2020 LEAP
//
// This program is free software: you can redistribute it and/or modify
@@ -18,17 +16,19 @@
package pickle
import (
+ "embed"
"fmt"
- "io/ioutil"
+ "io"
"log"
"os"
"os/exec"
+ "path"
"runtime"
-
- _ "0xacab.org/leap/bitmask-vpn/pkg/pickle/statik"
- "github.com/rakyll/statik/fs"
)
+//go:embed helpers
+var helpers embed.FS
+
const (
bitmaskRoot = "/usr/sbin/bitmask-root"
// TODO parametrize this with config.appName
@@ -96,27 +96,17 @@ func dumpHelper(fname, dest string, isExec bool) {
fmt.Println("Only linux supported for now")
return
}
- stFS, err := fs.New()
- if err != nil {
- log.Fatal(err)
- }
-
- r, err := stFS.Open("/" + fname)
- if err != nil {
- log.Fatal(err)
- }
- defer r.Close()
- c, err := ioutil.ReadAll(r)
+ fd, err := helpers.Open(path.Join("helpers", fname))
if err != nil {
log.Fatal(err)
}
- tmpfile, err := ioutil.TempFile("/dev/shm", "*")
+ tmpfile, err := os.CreateTemp("/dev/shm", "*")
check(err)
defer os.Remove(tmpfile.Name())
- _, err = tmpfile.Write(c)
+ _, err = io.Copy(tmpfile, fd)
check(err)
copyAsRoot(tmpfile.Name(), dest, isExec)
}
diff --git a/helpers/bitmask-root b/pkg/pickle/helpers/bitmask-root
index d33091c..d33091c 100644
--- a/helpers/bitmask-root
+++ b/pkg/pickle/helpers/bitmask-root
diff --git a/helpers/se.leap.bitmask.policy b/pkg/pickle/helpers/se.leap.bitmask.policy
index c1def93..c1def93 100644
--- a/helpers/se.leap.bitmask.policy
+++ b/pkg/pickle/helpers/se.leap.bitmask.policy
diff --git a/helpers/se.leap.bitmask.snap.policy b/pkg/pickle/helpers/se.leap.bitmask.snap.policy
index cac56b4..cac56b4 100644
--- a/helpers/se.leap.bitmask.snap.policy
+++ b/pkg/pickle/helpers/se.leap.bitmask.snap.policy
diff --git a/pkg/pickle/statik/statik.go b/pkg/pickle/statik/statik.go
deleted file mode 100644
index 5cf32ff..0000000
--- a/pkg/pickle/statik/statik.go
+++ /dev/null
@@ -1,14 +0,0 @@
-// Code generated by statik. DO NOT EDIT.
-
-package statik
-
-import (
- "github.com/rakyll/statik/fs"
-)
-
-
-func init() {
- data := "PK\x03\x04\x14\x00\x08\x00\x08\x004\x8a\x86P\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0c\x00 \x00bitmask-rootUT\x05\x00\x015d\x8b^\xe4}\x7fw\xdb6\xb2\xe8\xff\xfa\x14Sz{,%\x12m'\xa9\xf7\xae\xefu\xefS\x1c9\xd5]\xc7\xf6\xcar\xbb}\xae\xab@$$\xa1\xa1\x00.\x00\xdaV\xb7\xfb\xdd\xdf\xc1\x00\xfcM\xc9r\x9aMs\xcf\xd39\x89%\x123\x18\xcc\x0c\x06\x83\x99!\xb8\xf3\xd5^\xa2\xe4\xde\x94\xf1=\xca\xef ^\xe9\x85\xe0/[;\xd0{\xd6\x83@\x84\x8c\xcf\x8f \xd1\xb3\xde\x7f\x98+\xad\x9d\xd6\x0e\x9c\x88x%\xd9|\xa1\xa1}\xd2\x81\x17\xfb\x07\xafz/\xf6\x0f\xfe\x02g\x83\xfe%6\x18/\x98\x82X\x8a\xb9$K`\nf\x92RPb\xa6\xef\x89\xa4G\xb0\x12 \x04\x84\x83\xa4!SZ\xb2i\xa2)0\x0d\x84\x87{B\xc2R\x84l\xb6j\xed\x98K \x0f\xa9\x04\xbd\xa0\xa0\xa9\\*\x103\xfc\xf1\xf6\xfc\x1a\xdeRN%\x89\xe02\x99F,\x803\x16P\xae(\x10\x05\xb1\xb9\xa2\x164\x84\xa9Ac\x00N\x0d\x05W\x8e\x028\x15 \x0f\x89f\x82w\x812\xbd\xa0\x12\xee\xa8TLpx\x99v\xe1\xf0uA\xc8\xd6\x0e\xb4\x896dK\x10\xb1\x01\xeb\x00\xe1+\x88\x88\xce!\xfd\xc6\x91\xe7\x03\x0c\x81qD\xbc\x101\x05\xbd \xda\x8c\xef\x9eE\x11L)$\x8a\xce\x92\xa8\xdb\xda\x81i\xa2\xe1\x87\xe1\xf8\xbb\x8b\xeb1\xf4\xcf\x7f\x84\x1f\xfa\xa3Q\xff|\xfc\xe3\x7f\xc2=\xd3\x0b\x91h\xa0w\xd4bb\xcb8b4\x84{\"%\xe1z\x05b\xd6\xda\x81w\x83\xd1\xc9w\xfd\xf3q\xff\xf5\xf0l8\xfe\x11\x84\x84\xd3\xe1\xf8|pu\x05\xa7\x17#\xe8\xc3e\x7f4\x1e\x9e\\\x9f\xf5Gpy=\xba\xbc\xb8\x1a\xf8\x00W\xd4\x10E[;\x9bx;C\xe9H\n!\xd5\x84E\xca\x8e\xf9G\x91\x80Z\x88$\naA\xee(H\x1aPvGC \x10\x88x\xf5\xb8\xccZ;@\"\xc1\xe78B\xd0\x05\x16\xfa\x00\xc3\x19p\xa1\xbb\xa0(\x85\xffZh\x1d\x1f\xed\xed\xdd\xdf\xdf\xfbs\x9e\xf8B\xce\xf7\"\x8bC\xed}k\xa8\xf1<\xaf\x852`\n\x08\xc4\x92\xdd\xb1\x88\xcei\x08\x0b\x1a\xc5T\x82\n$\x8b5\x0eD\x91\x19\x8dV \x13\xce\x19\x9fC@\xa5&\x8cC \x96K\xc2Ce\x14I\n\xa1\xfd\xd6P\xa7\xc3\x13<Z\x19i\x05$\x8aP\xbbp`\xaf\x99^\x12\xf5\x01H\x1cG,@\xb5\xf2[\xad\xc1CL\x03#\xf6\x98\xe8\x85:j\xb5\x00~XP\x0e\x8c+\x9d\x81\xa3z\x08lr\xd4\x02\x00\xc0\xb9\xa8\xccd\x9cZ\xac=CC3\xf04\xe1aD\x8d|gR,a\xcet\x01G$\x02\x12m\x8bIq\x12;X\xf3\x15\x8d\x81d\x8a&q\xef.\xe6~\x19\xc1\xf5U\xff\xed\xc0\xb4.^\x86\x19\x93\xf4\x9eD\x11(-\xe2\x0d7\x89\xd4p#)~\xb9\x85\xb7\xfd\xf1\xe0\x87\xfe\x8f\x07\xe9\x97\x17\xe0\xfb~\x15Z\xc4\x94\xdf\xc5\xbc\x11s~\xcf >\xb98?\x1d\xbe=\xc8\xfe6 \x9b\xdd\xf7\xe8\x92\xb05t\xe67\x0d\xba\x84\x85\xadV?\x8a\x80\x04F\xa8\n$\xd5\x89\xe4@\x1f\x986\xa6\x91\xc2\xbe\xd5\xa4$\x08\xa8R]\xe0\x82\xf7~\xa5R\x8006\xe5\x9e)\xea\xb7Z\xe3\x05\x85\xf7%:\xdf;\x84FIUL\x03F\xa2#c\x0c\x8cZ)\xa0\x0f4\x00\xc1\xb3\xa1\x11\x1e\x82\xa4qD\x02\xaaZF\xdf\x82DJ\xca\xb5\x99#\xa6[\xdfL\x11s\xfd\xbdc\xeb{\x88\x89$Kj\x8c\x93\x99JD)\x1av\xb1I&\x08cwZ\\h\xa3\xcd\x9a\x12IC\x08\xc5=OmT@\x145\xf3\x96p\xa0R\n a\"\xcd$\x89H\xc2\x83\x85\x8f\xd3\x8c-c!5\x08\x95~\x934\xfd\xa6\xd8\x9c\x93(\xfb%\x82\x0fTg\xbfV*\x12\xf3\xecW2u\xc3(\xdc\xcf\xbej\x92\x81iI\x02:%\xc1\x87V+X\x86\xc1\x82\x06\x1f\xe0\xb8\x00\xee\xe3\xa5\x89Ht\x9c\xe8\x96]\xa6.\xce\xaf\xc6\xfd\xf3\xf1U\xab\xd5\n\xe9\x0c\xe6TO\xb8\x98\xcc\xa5H\xe2 'K\xda\xeeX\xa57\xa31\x7fGV\xbc\x86\x01vy\xc3\xa6`\x9a\x82\x16\xc6F\xa3\xb8\x8b2\xb8\xb8\xf2\x11t\xf0@\x96qD\x95Eh>=\xb8\x9e&\\'G\xc0\x05\xe2)\xdc\xe9\xcb`a\xaeOE\xb8j\xe1\xf5#\xa9W1=\x02\xa5\xa5\x99\xd0\xe7\x82\xd3\x12i\x8e\x0bsi\xd1h\xb9\xca{\x9a\xcb\xd8\x9fS=\x97\x9c,\xdb\xbb\x16\xebn'\xbb\xed\x946\xbd\x81\xd7\xe9C@c\x0d\x7f\xa5\xab\x81\x11o\x8e\xab\x84\xb8 9\x0e\xa5\x80\xbd\xdc\x83\xbd\x9b\xdd\\\xdbM\x01\n\x87j\x05\xa4\x85\xd2\xb2\xad\x9cT\xdc}\xe5\x87\xd4\xcc\xb5\xf6.:!\xbb\x9dV\xeb\xfb\xc1\xe8jxq\x0e\xc7\xe0\x1d\x1cx\xad\xab\x93\xd1\xf0rl~\x15'\xb3\xd7:\xef\xbf\x1b\\\x0dF\xdf\x0fF\x93\xf1\xc9%\xb6\xde\xf7_\x1d\xf8\xfb\xfeA\xe9\xe6\xf5\x9b\xec\xe6\x0b{s'\x93\xb3fK\nS\xca\xf8\xbc\x0b\xf7tWRX\x10\x19Z\xb7\x08t\x10\x9b\x89\x1a\x08\xce\xa9\x9d\xd08\xf1\x94_\xc0\x0e\xc7P\xa6\xa3\xf5z8~\xd7\xbf\xfa\xeb\xe4\xe4\xbb\xfe\xf0\xbc@\xb5W\xbe39\xef\x8f'\xc6 \xd8\xdc\xe2\xf2\xe2\xaa\xd8d\x12\x1b\x1e\x8aD3>\xaf6\x1f\xbc\xeb\x0f\xcf\x8am\xd1\xd65\xb6\xaatl[\xba\xc9\xe5\xb5\xce.N\xfag\x93\xe1\xf9x0:\xed\x9f\x0cL\xc3Hx\xad\xe1\xbb\xfe\xe5\xe4\xf2b\x84\x90\x07\x7f\xf9\x8fW^\xeb\xea\xdd8\xbf\xf4b\xff\xe0\xa5g%\xad\xee\x17,X\xb4\xa7\x8c\x13\xb9\xaa\xcc\xc2S\xc6C\xe4\xbdY\x15\xcd\xbc\xb3\xad\x8ci2\xcbYm\xbe\x94\x80\x8d\xdcf\"2N#\xe3p\xe3\xe1\n\xe8u\xc1\xcb\x16\xd6\xecG\xbeBz\xb7\xb9fb\xa7\xc7 \x94o\xbe\xf9\xbf\x08\xc6\xdb\x16a\xd7\x11\x92\xeb>\x9be\xed\x98\x9a\xb1\x88\xb6\xcd\xf7N\xa3\x9a\x9b;\x96tI\x98\xa20\xc0\xa9\xc1\x04o{'\x84\xef\x9a5\x92\x87\xf0\xb5\xf2\xe0kp|\xe9v:\xad\xd6\xd0\xe8\xa6c\x97\xc7b\xaf\xd3\x1a^\x8e\xfb\xaf\xcf\x06W\xa5\xeb\x9aL#\xaa\xf0\xeea\xc3\xed\xc3\xec\xfe\xd5\x8fW'\xe3\xb3\xc2M\xb5R\x81\x8e\xbcN\xabuq98\xff\xfe\xf2|r}\x85j\xebY\x83\xe1e\xd7\xdf\x8e.\xae\x0d5\x0dv\xb4e\\\x7f\xd7\xce\x80\x16~\xe6\xf0W?^\x8d\x07\xef&\xaf\xad\xd6\xe7\x9e\x8e[\xe8<\x80\x1dxC\xa7\x8cp0\xb21\xcc\xc9`\x0d\xc2\x12d\xc1\xbf\x89(\x89{E$\x0d^RN\xc4y\x01Q\x93\xb3\xb3\x16\x91i\xdcj\x9d\x0e\xff>x39=\xeb\xbf5\x1c\xbe\xb1\xca\xd7\xeb)\xaa)\xbf3\xbaU\x1cz\x17\xbc\x03\xaf\x9b\xb6\xe1b\xcax\x98\xff\x0e\"F\xb9\xce\x7f\x87\x14\x11\xe8\x84\xe7\xd7t\xa4j\xed$]\nM{\xc6a5\xf7\x0d\x8c\xa2\xf2\x8e\xca\xbc\xc9\x92p2\xa7K\xcau\xcf\xae\xc5\xf9-\xeb\x01\xf7\x14\x0d\x12\xc9\xf4\xaaBc\xa2\x0c\x9aL\xf6\xd9\xf5\xd8lr\x94\xee}\xa0\x0d\x17Q\x16=\x16\x97\xc9v\xfb\xa2\xde\xd2\xce\xb9\x03\x7f\xdf\xeb\xb6n[-6\x83\xb2F1e<|\\\x08\xec\xd4)\xf0\xd8\xa7\x0f\x9a\xf2\xb0}\xe3\xf5z\xa8p^\xb7\x0c}\xdbi\xb5\xfagg\x17?\x14\xa4\xf2\xcf2\xa7\xbc#\xb8\xf1\x86\x97\x86\x88\xf3\xebw\xaf\x07#\xf3\xedrt1\xbe\xf0n\xcb\x8cf\xf1\x82Jl~2\xbc\xfcn0*\xdc\xdft\x8f$z\xd1|'\x97\x03\xde\x7f3\x1c\xfd\xf6\x9b\xa5\xe4\xfa|\xf8\xf7\xab\x8b\x93\xbf\x0e\xc6\xbf\xfd\xe6\xa8j\x02s\xc2\xb7r1(\xcc\xe4,\x92E\xa5E}:<\x1b\x14\xae\x1b95\\\x0eH\xd3\xd5\x99$\xf3\x8c\xc6\x1a1\x1f(\x8dI\xc4\xeeh\xf1v\xce\xcb\xbc\xe1\x1d\x95\xd3f\x14\xb5\xf1\x98f\x05\xde'\xbc\xc7\xe2\xbbCw\xf5_\xad\xd6e\x7f\xd4\x7f79\xbd\x18\xbd\xeb\x8f\x0b\x12u\x88\x8f \"\xcbiH@\x1d\x81\xa4\xfe\x92hc\xc8~\xfe)|\xfe'\xaf\x0b\xaa\xe3\x10[\x11\xafi\xdc\xd6A\xfc[\x12\xc6\xbf\xe9 ~e\xbe\xbc\xea\x94\x80\x87\x97%H\xa6&w$b\xe1\x84\x84\xa1\xa4J\xb5\xb3\x86N\xe6k\xba\xb9\xe9\xf7\xfe\xef~\xef/\xbd\xdb2i(\xc5F\x10\xbc\x8fm~\xbe!\xbd_-\xf8\xe4'\xff\xa7\xffs[\xfc\xdd\xc3+\xcf~\xfa\xd3\x7f;\xbc\xc6\\\x0d\x07\x83\x01\\\xe9\x10\x0e\xf6\xf7_\xfa\x07\xbd\x17\xfb\xfb\x07\xb6?\x14x\xb1\xbf\xca\xba\x95\x11\xf6f8Z\xd3.d\xb2\x9d\xfeRq\xc4t[un\xf6o\xb3\x11e\xfa\\\x82Wp|\x0c^\xc2\xd9Cj\x1c\xae\x87o\xd62+\x1b`\xca.\xa3\x0bfQ\xd0T.\x19\xa7\xf0\xb7dJ\x15\\\\\xa5A\x97\xaeY\x83 _\xb5\xfev\xfdzp5\xb9\x1c]\xfc\xfd\xc7\xc2\xeaM\x1f\x98\xd2\xaa\xed\xed\xdd\x11\xb9'\x13\xbe\xf7\x0f\x03\xbf\xa7\x17L\xf5\x98\xea\xc5R<\xac\xee\x96^\xa7UZ\xc9\xcdH\xbd=\xaa\x03\xdb\xdcs\x0b\xba\xed\xe2\xe4\xf4-.\x1d\xf2~/\x10|\xc6\xe6{^\xe1\xee\xf0\xf2\xbb\x8b\x8b\xbf\xc2q\xa1\xf1s\xf0\x10M\x8f\xc5\xbd`A\xf8\x9c\xf6\x16B|(B\x9d\xfe0\xc9|\xd8\x06\xc0t\xd3\x86F\xc0\xd9o\xb7+\x98\x95v@$\x8a\xda7\xa9{\xd053+bJ\x9b\xb9\xfa\xb7\xd7W\xbd\xd3\x8b\xd1\x0f\xfd\xd1\x1b\xef\xb6cd\xb2\x9f{)\xb6K\xeb\xab\xbe\xc2\xab4R\xb4\xf9\xfe\xcbV~o\x07\xcd6qBQ+\xa5\xe9\xb2U\x05\xd8o\xb5Zo\x06\xaf\xaf\xdfZ\xb1\xccq\x9dl{x\xc9\xeb\xb4\xc6\x03t_\x0bw\xcc\x15\xe3\x8d\xb0\x19`#\xdb\x97\xdb\xffDb>g|\x8e\x97fB.\x896\x9b\xdc\xe3\xf4\xba\x7f\x9a^+\xcc\xa3\xaf\xdbD\x05\xc6\x8f\xef(\xe8\xc1\xd7m\xe3\xb1\xb8\xaf\x11\xbd\xa3Q\xe1\xf7\x92*E\xe6\xb4c\x1c%\x03\x1b,\n\xb8\xaf\xb4\xa4d\xf9\x1d1\xee\x84l\xa7\x0d|E\xf5\x99A\xd3N\xdb!\xd5\xc5\xdb9Q\x19\xc9\xf6\xb6\x81(\x91?\xa7\xfa\x0c\xaf\xb5'\xe8XM&\xc5\x86\x1b\xbbrMH\x18\xa6\x14\x06\x8bN\xabew\xdb\xe8\xd4Db\xde\xb6j\xd6\xb1\xfb\xe3\xeb1\x06\x08[;n\xfbU\xb3qw$Jh\xc5;\xff\xde\xb4 \xdaE0\xad\x9b\xae\x14\x0d\x81\xc56\xe6\x86(`x \x0e\x8b\xef\x1cv\xdc\x1a\x01\xa2<B8\xfc\x8a\xfe=\xb5@D\xd3\xd0\xb65\xbe}\xda4\xf5\xf0S\x8f\x7f*DT\xa2\xa8\xb4e\xb5\xb1\x06\x9fq\xaa'D\x0b\xee\xc6\x90\xddw\xde\xf8X&v\x7f\xedv\xa8\x997\x9ec2\xec\xf2\xbeVG0\x18\x8d.FG\xf0\xae\x7ff\xd6\xa3\xc1\x1b\x18^\x1e\xc1\xd7\xea+\xf4\xd4-C\xbb\x96\xd8N\xad\x9fS\x12\xa9tw\x8bFsbfd\x1b\xff\xef\x82\xa4s\xfaP\xe1\xef\x95i\x05\x04L\x0b\x98\x12\xc3Y\xc1\x81\xd8\xb6\xb6)\xf5\xe7~\x11\xdb\x8d\xf7\xf0`&\xf9\n\x9d\xb9\x87\x03\xf3\xff\xaf\xbfz\xb7]\xf0~~\xf0:p\xfc-\xdc\x14\xda\xdcv\xe1\x06[\xd9~M\xcb\xdb\x92\x8c\x10\xab\x95\x11RaE\x84\x1d\xfa\x05\xf9\xb8f\xe6\xff\"\xb4%\xd4\x06Q\xccW\xa0\x0f\xb1\xd1\x03\xb3=\xd6\x02f,2S\xf6\x9e\xe9E\x11\x99\x832\xc2.I;\xc3\x9e\x05B0\x1c\x0c\x0b\xa2\x88\xd6\xb2\x8dp]\xf0p \xf1\n[/\xdb\xf7\xb1Y^\x02\xb1\x8c\xcd\"g\xd9\xdd\xb2wU\x12i\xe3\xc0\xdfZ\xach\xa9\n\xf8\xed\xe0\xaa\xe2\xb4`x\xf5~\xc1\"\x8az\x94\xb7b3\xdb\xad[\xd0\x10\xc7\x0d\xbb\xadm\x08\x0d\x12\x9f\xc41:\xb6\xb7\xe5XJ\x13\xde2\xe4M\xef\xe06\x85\xce\xba\xa8\xb5e\xf0\xfc\x18\x0e\xea\x97g\xc0\xe0\xdbc\x88(\xb7\xc0\x1d\x10r\x1b\xaa\xd3\xcfTR\xf2!\xbbS^(\xa0\xdeo\xbd\xbfr\xf3\x1c]\x99\xc5y\xc4\xce\xadnV\xd5+\x93\xe5-\xd5\x18\xe5\xc7\x16n\xca\xac@R\x82\xe1\x99\xf7{\xe6\xce{\xa3r\xd4\xaeN\xa9-\xb2}\x1d\xa5\xd3L\xcc@'qDU\x17( \x16\x10\x08\xae \xc3\xac@\xccB\x0c\xc0\xba\xac\x80QPcxK:\x8a\xb0f\xa4\x06\x99*\x11(\xa9\xca\x95,f!\xfe28gB\"n\xc6\xcd\xdag\x00\x8d\xd7\xb1\x8b\x14\xefv\x0c\xb2\x98\x85\xe8\x8b\xcc\x99nw\xdc\x04-@\x19d\x1b\xc2v\x92\xaaTG\xda1\x0b\xbb\x18Mn\xd7$Z\ns4\xca\xdb\x91\xd4\x05\xc4\xb2\x1b,\xc3\x88q\xba\xdb\xe9\xc2\xae\x9c\xeev|\xc3\xecv\xa7`\xf9\x9cE\x1d^\xd8\x90\x9fq\x13\x0c\x063c\x81D\xa6\xf9\n\xac;\x97\xd9\xfb\xf4c\xf8\xce\xb8\xb3\xccN\x1f\xac\xbdh\x9b\xcd\xa11\x98\xaa\xe3TC&\xbc\xed\x84\xd2\x85gD\xceU\x17\x9e=\xb3\xd99U\x8d\xeb&\x1c#\xd9\x0f\x9aJN\xa2T\x98N\x1b.,\xccQ\xcb\xd1\xf2\x1e#\xc9\xef\x8f`8\xc3y\xd8\x05\x1bm\xc6\xb0\xaf\x85\xdcU`ca>L \x8b\xac\xd1\xb0\xa1\x7f\x1f\xdazA\xab\xac\x0c\xe9\x8c\x18\x83\xc3\x14h\x99PHxd46\xa4\xda\xe8\x9b\x90\xc0x\x9cd\xb7Sf\xbe\xa7\x0fL\x07\"\xa4\xef\x8d!\xfc@S\xd2\xba\x98$,$#0\x17\xc1\xb8\xd2\x94\x84F\x9b\x0dQ\x99\x9a\x02\xbc\xb7\xfd\x14\x87$\x13\x8c\xf5\xdb\x1b4\xccr )\x04\xd2S\x040\xfa\x93\xcd\x02\xa3\x87\xf7\x92i3C\x14\xbaE\xa0E\xd7Q\x84\x91\xd1\x05\x85K\x03Re\x84\x98\xfeB\x03\x9du\xa3\x17R\xdc\x97\xe8\xc2\xe0\x18\n\xcb\xad\xc8\x86\xb9zA%E\xf7\"\xcdG\xb8\xc1\xd6\xd0W\xc6\x9ej@L\xa4\xc6\xb9\xe7Fp\x9b_M#\x0cF\x85,\xe3C:Mp\xed7\\2K=\x94\x96z\x0f<;_\x10\xdc\xa8>BM\xd2\x9c\x84\xd3A\xe3\xcc\xb5=\xbc\xe8uqt\x16\xfb\xc4 \xbd\xd2\xd0^\xf5\xba\xd6epM\xadVTZ\xe2\xc5J\xc3L *m\xd3\xeb\x95\xe6\xc8\xf6j[\xbc\x987\xc4\x96n5l\xbb\xc1 \xe9`q\xd5\x98\xe4\xeak)-\xad\x84\xd5KP\x08\xe9\xe7{\x16T\x12\xcb\xc9.\x18#\xc8\x8f\x8bw\x87\x97\x83\x82e\xa9-6\xcd\x88\x1a\x93\x13YF\xa5\x8c\xa5f8Cz\xc7\x93(B\xe6P\xde\xde\xdd\x0b\xe9\xdd\x9e\xb9\xb2\xdb\x85\xdd\xfbJ\xe2\xa3\x96~\xc2-X>\x1a\x91\xe8c\x87\x10\x7fS)\xd3\xdf\x8dD\xee\xe7c\xb5V\xb4\xd0\xc1 \x06\"/\xed/\xb4\xad@\x94iWY\x7fg\xb96\xd4Wp63\x10\xbe\xed\x0e\x15\xe6\xabc8h^\xe9w`\xdf\x88\xf6\x00\xad\x12\xba\x80\xd4\xa5\xb4\xad\xfd!|\xa5\x17f\xb2\x1b\x8e\xae\xc1\xe0\xf2\xe6Sj\xf7'\xa1\xdf\xd8\xceM8\xe7h\x9f \x88Q;c\xa4\x8c\x07\x8eQ\xf1FH\xfbi\x9b1\x05\xcb\xb0\x8b\x83\xb3\x96\xb9\xd3\xcdM\xc81}\x08\xea\x1eRf?\x8b\xfc(\xb5\xa2\x91\xe1&*|\x833\x86\x96\x8a>\x04\x15\x90\xaa\x8e\x9a\x8f\xb1I\x8f\x8do\xcd(\x9a\x87]\x19\x9a]\x12\xcd\x8ee\xa9\xe6\xc7v\xad\xcc\x9b\xd8\xdf\xb1dB2\xbd:v[\xc2\xb3\x8b\xb7\x93\xe1\xf9\xe9Ee\xad\x8c%\xe3X\x89c\xd0\xc1=\xb1\xf6\xdcm\x8c\x8d>dx\xcb\x1b\xbb\xa5\x9a\x1f9{B\"g\xa4\x1dT\xd1\xcf\xc7f\xd9\x96\xae\x114\xc7_\x01\xcb6i5`;$\xc0\xed|\x15Jp\xccd\x9b\xe1\x0e\xde\x0dFo\xbb\xf8\xb5\x7f6\x18\x8d\xed\xd7\x93\xd1\xd0}\x1b\x8cF5~\x9b\xeb?\xf4G\xe7\xc3s\x07y~1\x1e\x9e\x0c\xecw\xc3?\xfb\x0dw\xe2%F\xb2\x99\xe9\xbf\x1e\xdc\xce\x98lw\x97N\xf6\xe9\xe2\xb2T\xf3\x82/\xe5De\xff\xb4S \xdaVi'\x85\x85\xb2\xa9+6\x03\x8c\xb1\x08Y\x0c\xa7\xa4\x9f,\xab\xee#I\x13\xfa\x10\xb4\x1f\xef>\x87\xb2\x01\x0d\x0b\x96\xaa\xa1\x9d\xcd\xeb\x14\xb1\xa2n\xff\x93(m}\x9bH\xcc\xad]a\n\xd4\x07\x16\xc74L\xdd$$\xdc\x87kE\xa1\xa2\xbc\x88\x03\xeb\xa1\x8cK\x82=\xa7Z\xa7\xa0}O!\x14|W\xc3=\xe1\xb8\x8d]2\xa5\x8c3\xb1\xec\xf8UY\xada\x92\x9bS\x85Q\xa4\xc3\xc49\xbd\xe5(\xc9\x94\x1bFE\xe8\xac\xf9\xd9x\xdb\x1d;bsU\xd9\xe2';q\x94&:QXbR&\xb4\x89\x1cd\xc1\x03\xd3\xed\x03\x17\xd7q\xf9\x91,\xaecvQ.\xab5\x992\xbe\xa1\xea\x01\x93\x9f\x86\x93\xae(\xce\\\xb3;\xa7\xac\x1a\xc5\xe5\xc5\xcd\xacJ\xfd\\W\x87\xb4\xc0\xca;m\x9d\xb5\x1a\x7f\x85\xf2)\xbfcRp\xf46v\xaf\xce\xfb\x97\xbb\x1d44\x95Xt5SW\xd81\xdaZ>\xc5I\xec\xecEa\x81\x91t)\xeehhk\xa1L\xb3\xd0\xa6\x12c\x12|\xc8\x8c\x10\xe4v\xbf\xdaM\xab@i#9Y\xf6\xb2S\x8b\x0b\xd4\xdbXl\x96\xde\xb4N\xabD1\x89\x94\xd8@\xb6\xff\x085i>t=-i\x0b\xa7\x041\x91\x8afj0\x8b\xc8\\Y\x97\xb7\xac\x0cc\xf2\x81\x02\x91\xf3dI\xb9\xb6\xbb\xe3\x8c\xb2\xd4\xfb7\x1b@\x14\x1c\xe2\x04\xa6\xbb\xb60\x8eD\x91\xb8\xc7-\x81XZ\xcd\xb0\x11\xf2Db.\x17\xb0\xd3t\xd5@\x03m\x08h\x88\xf1T\xa33%'\x0d3\xfc\x11\x99c=@\x1e\x04\xb3;@\xef\xe7^\xcf\xab\x84\x18Lc\x8c\xa6\xc21~\xbf\xd9\xbf-\xddg\xb3B\x13\xc6\xa1\x94M\\\x17\x84I7\xd7\x19d\x93\x7f\xf1\x8f\x84I\x1aNlQ\x08\x1c\x971\xdfd\xa0\xb75P\x0c$\x95\xa0\xd7\xb9h\xb3\x88hMq\x93\xa4\xa8i\xaa]\xb2:\xc6r\xb1& \xec7\xa3\xe9\x86\xb9\x12\xb6)\n\x9bqX\x92\xb89\x14`>\x85\xcc\x8e\xcb\x02u\xba\x96\xab\x07G\xb7\x1dD\xc5P2\x16_}h`\x87\x17Q\xde.\x10\xd21~\xa8\xb9V\x19\xf6\x9a \x144\xc4g\xcd\xd2G\xb9H\xe6\x0bW\x85\x83\xc4<\xe6:B\xbe\xf4\xe6\xa2\xac\xcb2\xfdT7\x13\xd5\x0f\x06hL\xef]\xfbg\x82j\xce8\xfc\xca\xe2\xe2x\xbbU\xf9n\x18(\x96\"Y,9N\xc7|\xef\xb7\xdf\xaa\xea^\xfd\xb0\x19\x94\xb2\xa97:\xa6\xb7m\xc4\xf4\x08$\xd4\xb4\xddB=\nT\x8e\x11V?\xcd.r\xf1S\x15\xedk\x12\xe66\xe9q\x89BQ\xaa\x96\xe4\xcd4\xaf\x93j3\xa5H\x9ds \x8f \xe1\x92\x06b\xce\xd9\xaf4\xcc\x16I\xb4O\xd6\xb3k0\x10\xf5`r5\x0bQ\xdb\xd9\x959b\x04z5<\x7f\x0b\xd6DU}H\xb3%\xc8{+\xe7\xd1\n\x08\xe7T\xfa\x99\x1b\xd1.m\x91\xea\xa5y\xe9\xc2\x81\x05\xa6M\x0b\xc7\x19V\x86\xa6\xed\xba\xa0\x08g\x9a\xfdj\x96\x03\x0c\x04t\x0bu\xaci\x84\xa8R\xc8\x8a\x1e\x10\"C\x0f\xc3\xf12\x8bL\xe1\x1d\xe7\xf5\xdb\x85#\xd5\x89t\x7f\xea2QZ\xa4\xc0\x16d\xd3RSZ\x10\xe1x\xfd2\xd9r\xbc,\xdd\xcay\x9a\xd7>\xd5\xbc\xad\xacM\xda\xc7\x8dk|\x0b\xcf\x8b\xa5.\xf0\xbc\x8c\xfcq Z\x95H\x0b\xd8S\x86\xa1\x1fi\xc9+\xaaEe\x0e\x18pl\x94_\xc6|.=\x82\x19\x93J\xe7\x13N\x8bl\xe5g\n\xd8\x9c\x0b\x99\x86\x00\x82Di\xb1$\x92E+P\xd44- +\xb8\x0c\xb9\xf3e\xdc\xc0\x07\x1a\xdc\xa5\x8e\x8c5\xbb\x8e\x88\xf2|C\x07{\xd7\x99\x80 \xdb4[\xa7#sGm\x04k\xb7S\xd3S\x117\xa9\xe9\x95\x16qI\xbd0\x8di\\W\xe3\x94cu?\xe5\xae\xcc\xd9\xd5\x8f\xd9\x12\xc8G\xf5ok\x95\x8bq\xa1=nHn\xe0m\x17\xe3\xef\xda\xa8\xb91\xfa\xe5T\x14\x9b\xc1t\xa5\xa9j{i\xa5Z\x17\xd2\xd2Xln\xc0\x8c\xb0l\xabB9Z\xbd]Y\xa3\x84\xf2?\xb0(j\x9b\xbdi\xcc\xc2N\xd7\xd5q\xfbW\xc3\xb7\xe3\xc1\xe8]Y\x81\xac\x91\xc7\x0d\xc7\xe9p4\xf8\xa1\x7fvV\xdaq\xcc\x89\xa6\xf7d\xa5\xda\xe9\x97Z\x99'&\x02I:k\x15\xfdGBy\x80\x9b\xf5\x14\xa4\x18RF\x17\xd3\xe5\x8dYh6 \x15\x9b\x90\x02\x1d\x01iD\x96g\x1f\x8b\x91\x85\x1c\x8ai*\xc94\xb2K@\x9a\xdb)]\xac\xf9\xa7.9QM\x9cw3\xac\x99\xd9\xc0p\x0f\x82U\x14<\x8d\n\x9d\x0b7\xb0\x8c\\|2`\xc6h\xe85\xcd\x8eu\xe92\x97i\x98\x84\xf4\x8e\x05M\x15\xee\x92\xd1;Z2\xbfir\x82S}/\xe4\x07\xb0\xa0\xfe\xe6B[)\x12\x8d\xc9\xad5%\xf8\xed\x9b\xe1e\x17<l\x86\x15\x8a\x0bq\xef\xb9<%&\x1amnVQ\"\x83E[N\xbd\x9fS2\xfcg!\xbd\x83\xf6\xcd\xcf?\xa9\xdbg\x1d\xf0\x9f\xfd\xc9\xeb\xba\xee\x9c\xb58\x96\xd4\x7f\x97\xb1\xd6b3\x1a\x8f\xdf|,\x13T\xed\xfa\xce\xc8\x96\x97\x17\x1a\xb5\x0f:k\x0d\x8f\x97\x87\xe9\xb027\xa5\xce2\xc7\xeb\x14X\x8e\xe5\x8f\x13\xc7\xbd \x8b\xef^\xb5m\xab\x86l%&\xd5M{0\xed\\\x8d\x04\xcey\x02svGy\x85\xfbV\xb5\xed\xb5\xa3\x82\xda\xba+5\xb18\x0dD\xc9\xa4\xcfI8Q\xf4\x84\x91\x83k\x90\x89\xa4\x0b\x9e\xad;\xb5\x187J\xc8\x7f\xc68\xd5F4\x90K&\xeb\xf1\xf3\x08\xa7\xee\x9a4\x8a\xe0pK\x11\x1c\xfe\xaf\x14\xc1\xe1\x97&\x03\x99\xf0\x89+B\x9f\x18\xff\xc3\xe6\x8b\xda\x18\xcd\xde.9\x9b\x96\xb0g\xbe\x06b@OQ\xe0\xb3\x7fl\x06,}\x10/%\xc5\x08\xad\xd7\xb3\x9b\x13t\x84\xec*a\xb6\xcfID!\x14\xd4\x86D\xd3\xbc3\xd6\x03\xfa%`\xc6\x15\x95\xfa#\x81C\x1aQ\xe315\x03\x17\x00\xf0y\xb0\xc2\xa3\x85\x92\"\x8c\x8d\nF\xabZ\xb4\xccK \xf3\xccR\x8d\x8eD\xc6}ke\xcd5\xe3K\x129\xf7\xdd\xd3a\xed\x1c\n\x8b\xffl\xee\xd1n\xca\x89\x9c\xa7\x98n+\x98\\\xde\x10\x13\xea(\xaf\xbc\x83n\x96]>\x1e\xcbb\x19\x15\x9b\x15\x81\xbf*\x95\x13\x9aO\x8e\xac*|\xa7Nv\x8cVrO\x1d\xa3\x83\xfa_2F\xab#O\x1d\xa3\x83\xfa\xbcc<~\xfa\x18Kfa}cW`\xe8\xe6x{\x0b\x93\x90\xb6}\x85\x86+\xfduX\x99)\xf1\xabu\x18\xdd\xfd\xc3\xb5\xf7S\x92\xd6b\xd8D\x13\xee\xb1\x90s\xaaL\xd1\x1aC\x98\x17\xe5\xae'd-\xa9\xeb 9\xfc\x08B\x0e\x1f\xa3D\x8b\xf9<\xa2v\x11\xb5\x89\x88\xe3\xdd\x90)\x83i\xd7\xd1\xc2fi\x8a\xe2\xf8\x18\xb2\x9b\xb9&\x18-M\xab\xc0p\x1e\x14ZS\xde\xd8x\xbfI\xa1p\x9d\xc1\x9f\xf9Bj\x1f`\xea\xc2n\xef~\xb7\x0b\xbb\x9cj\xdf\x90\xea\x07\x82\xcf|\x12E\xbe#\x07\x07p\xfc\xb5\xda\x85\xafM\x17\xb7fxf\xb3r~1\x1e`y\xa2\xa2\xa0\xa9\xb2\x9b7\xb7\xc0\x10\x08\x16\x84qk\xb9\x15,\xf1!P\xc6\x03!%\x0dt\xb4\xca\x8a\x92H\xa4\xa8\x9f>\xee\xbf@\x83\xa4\xe0~a\x9f\xcb\xaf\x95\xaa\xe0\x83\xbdX\x91\x96\xadr\xb64;\xdd\\\xbe\xb7\x0f\xd2\x9fbr\x85)\x90\x94(\xc1\xbb\x16\xa3\xd9\xca\xc6i\xc8$\xad\x05\xef\x02&\xb7p\x81\xd22Q\xe8\xd6\xb4v\\Y\x92\xd9\xf6\xb0\xf8\xeea\x82\xc3\x99\xb82\xf8\x8eM\xaf\xb92!\x12\xe1.\x83hM\x971\xee\xf2\xad\xcdq\x07& \xa4\x9f\xd7\x06\xc7w\xaf\xca\xd8\xf0G\x17p<M9\xaf\x13\xac\x18A\xa6Z\xaf\xaa\xc8Z\x1f.x\xc6NW\x13e\x17x\x12\xe8\xc4,\x89\xae\xa1\xcd\xc7\x1a\xba\xad0\x8a\x02p\x10NXE3\x013\xc2\"\x1b \x92I%Q\x8dd\x1c\xe5c\xc4\xf8\x06\xd2J\xe6\xc40\xc76F\x17\xcf\xb5}\xb4\x04\x99\xcd,\x1f\x9aS\xb0\x05\xc3\\,\xce7\xab4B5\xe6\xf8\xf3\xe2}\xc7h\xaf\xd7\xe3\xc9\x92J\x16x\x8d\xe6\xbc<u\xd6\xf4\xf9D\x9cfy\xa8/\x0c\xb5\x1a\xea\xa8\xd0\xee\xa0\xd6\xce\xd6@\xd7I\xc4\x00V\xad&\"\xcc\x9e\xf506\x83ZM\xb6\xccE\xa2\xbdZ\x94\xb2Xcm\xe6|\x83\x9aVT\x13g{M\xa1;\xffv5) \xe5\xf0\xff\x1f\xa9X\x93?a\xf1d&\xe4=\x91!\xe3\xf3jd\x02o\xba{\xb04\x06mJ\x1d`\x98=\x8d\x9d\x1d_\xa0\x05\x98\x9d^y\xc9\xc3\xb5\xd0Um\xc5R\x04{j\xa5\xf68\xd5{F\xd6{y\xef\xae\x92\x0b\x88\x82Y>\xf0\x99\x7f/\x99\xa6\xed\xdd\x83\x9fx\x16NL;\\\x1f\xf7~\x8d\xe7\"$q\x89\xbe\xa6`aZi\x9c\xc7\xb6\\]\xbd\x0d\x94\xa7\xb5Q\x1bC\x87\xe5\xe0\x8e\x8b!V#>-+\xc6jL\xc2\xb5n\x0cV\x14\x11\xac\x81?\\\x07\x7f\xd8\x08\x9fE\xb1\x8e\xcb\xc1@\x1bK\xc7&;f\xdb\xeaB\xc8n\x8ee\x0f\xbac\xacN\n\x8e\x1c\xbb\xb8\x1e_^\x8f]\x13\xa3\nS\xe1\xf2\x04v\xa9\xda\xb5a\xb8]\\\x02\xf0\x02'z\xd7\xdaV\x95%\xd2\x8d\x1a\xd7'}\xe9\xd9\xf7\xc2\x8e8\xf7\x0b\xcdl\xa4\xf7=\xab\xe6](\x03<\x01y\xfa<\x7f\xd7\x92\xb7\xae/\xfc\x86O\xe0\x12\xb7\x8d[\xdb{\x8a\xf1\xc9T\\^\\}j2\x0c\xca*\x1d\x87\xdb\xb2\xfap{Vo\xa61\xdf\xfdZ\x9d\xf1\xaaK\xab\xd7\xeb\xfd\x92,\xe3G8\xb9m'f\xd0\xa3\x8b\xeb\xf1\xf0\xfc\xed\x93z*0+\xce{\xaa\x13\xbf\x0eI6\x810*\n\xc6 \xe2\x0c\x7fs~\x05\xe2\x8eJ\xf8\xfe\xf2\xdc\xb5h\xdb\x94\xcey\x7f\x9c\x0740\xc8\x8b\xc6\x12\xe7u\xc25\x8b\xe0\x03\x95\x9cF\xf0\xd2\xff\xb3s'\x1amv*\xe1\xe2\xe3\x96f\xd6\xe5O\xfc}{\x0c/s\xd9\xee\x80\xa4hV\x91\xb6\x98\x04\x1f\xa8\xb6\xb1\xb6\xef/\xcf\xcd\xb5\xfftO\x0f\xc6\x92\xa6\xc5\"T\xc1\x92\xa8\x7f$T\x92B=fQ(\xba$\x8fY\x94\xa8\x85}\xa4\xbb\xf7\xb7\xd7W\x85\xa5h=L\x1eBp@\xe6\xaa\xe1\xb3\x97\x84qM\x96`\xe5\x19\xc6\xc2\xca\xe7\x9b\x97%\xd9xo\xce\xfbNZZ4\x02\x17\x8e\x03y\x0e\xde\xd17/\x7f'\x91:\xf8\x8cD\x96\xfd\x83\x1d[\xe6\x03!\xc7\x8d\x13.\x07\x0b\xe1\xd6)\xd8n<%e\xc6[\xb1\x14Z\x04\"zL\x02\xd4>\xcez\xf0\xe2\xcf\xfe\xbe\x7f\xe0\x1ft\xed\xb7\xfd\xc2\xb7t\xdc%F4\xa3KY\xd3?9\x19\\\x8e\x0b2\xc9\xd5\xd6\xcc-\x91\xe8\xb9\xc0\x87\x81\x9c\xfe\xba\xb3\x80\x9c\n\x83=|\xa1\x00\xdc6Wq\xba)\xb1\xa4\x9a-\xa9B\x80\xf1\xc9\xe5WO\x12\xfc\x9a\x05\xe4\x0bV\xd5\xcd\x14\x7fV\xbd\x05\x94\x85\xb5c\xb9E\xc1\x93|\x94\xb0y\xdf\xa2Q\xb2\x12\xd7\x94\xc3t\x05\xa6S{FV\x8e \xcf\xb6\xb3Im\x0c\x07\x80\x12\x89\x0c(\x0c/\x95\x0f\xfd8\x8eV\x05\xbb\xe5\xd2\x95\x02\x01r\n\xbb\x05|\xb5\xeaT\x828\x98N\xc1\xb2\xb9\x85\x93MR%\xa2\xbb4y \x1f+\x0e\\\xfb7\xce\xae&jK\xedj\x93u\xa3\xfc\xde\xf5\xaf\xfev=\x18\xf5\xdf\x0c~\xaf&}b\xd2Q\x19\xb7'\x1d\x11\xa6\xd6\xcf\xe6\x8f\xd2\x84\xa9\x96d6cA\xba8\xd6]\xec\xba\xf9,#0\xe43\x8eU\x92\xaa\x91G\xebl\xe7zn8t^\xb7\x81\x9c\xae\xcbD\x95\x1d\xf7\xa7\x1b\xc9\xa6\xa1\xd8Ia\xd7\xf87\xe7WE\xab\x98\x96\xbc\xa1\xae7\x80\x9a\xd9\x88\xd3r^\x9b\x8f\xe7\xfdq\x01\x93A0\xa7:\xab\xf7YH,\xfbKgu.6<eTQ]\x9f\xb2\xcd\xaa\xf846[d\xbf\x9b\xc3\xf1v\xf3\xa8\xc6\xff/\x83\xf0\xc7g\xd1Z\xc5Y&\x91f\x01Q\x1a\xae\xd82\x8e(\\Q\x89\xfb\xda7L\x05\xc6\x8f]\xc1\xa5\x9b\xaf\x9f`\xd0Op1\xf2\xb9\xe3\xbdx\xf9\x17\xff\xc57\xdf\xb8\x7f\xfb\x95\xa1\x1e\xfce\x7f\x7f\x0d\xa2\x06&\x16\x992\x1a\x8c\xafG\xe7\x1b\x99\xf2Z\xf0_D\"\xf7\x96\xc5i\xf4\xd9\xc7\xff\xe2\x15zU/\xbe9\xa8\x89y\xadc\xf5\x94\xb17\xd9\xcb\xc35\x9b\xc3'\x8d\xf7\x11#x\xf8\x14M\xffw\xe9\xf2\xc7\x8e\xed\xe3dyz\xba\xff\xcd\xd1\xd1\xc9\x17\xa0\xc3\x9f}\xdc/\x8e\x8eN_\x7fz\x05F\xe0t\xd4\xb8\x05w\xae\x00\xaeP.\xe6\x85\x8d\xccr\xe8.\x00\xe3y\xd5\xd9\x93&v}l\x0e\xcfG\x8d\"\xd3e7\x8aH\xccA\xd2_\xd2C\x8b\xb3\xad\x8e;\xb0\x15\xa0\xa9\x12\xb5\x18\xc0XO\xf5V\xf3\xac@\xda\xd9\xc5[+\xacH\xcc{\xb1\xa43\x86\x87\x97d\xe9\x9d\x90rF\xc3#h\x12\x9f\x83\xc2g\x01\x0d\xd0\x9f\xf3\x11\x1a!pq\xdf\x05\xcaU\"\xdd\xe6\x0e+30\x10\x92\x8e\xd9\xb8\x16\x19#\xda\x92\xce\x89\x0c\xf1941s\x88\\\xa4\xd3\xc7p\n\xa2\xba_\xaclI\xac\xd7\x8b\x81\xf0\x95\x87\xfb?\xf4\xee\xb38\xf56z_[Vs\x9d\xfb\x9f\xc1Ijy\x9e\x82)\xf3,j\x98\xdc`\xecP\xcb\xccx\x05\x8arm\x83I\xf6\xa1\xa4b\xf5\x9b\xa3a+\x85\xad\xef\xd96N\xac2i\x17<;\xf1\x0b\x8b\x9c\x80p\xcdz\x11%\x1f\xb0\xcc\xc6z\x99x\x8a\xd7\xf7\xef\xa0|X\x96\xaf\xac\x01v\x98\xde%\n\xcf\x13^\x81\xe0\xb0\xabE\xbc\x0bbfC\xca_\xa5\xaa\xbd9\xa8e\xeb\xd7\x13\xde\xf6\xe6\x92\"\xb5\xd9\xe9\x90?\xc1t\xf5\x13x\xf0\xbca\x1an\xfa\xa4\x05\xfb\x95S\xc0\x9af\xf3\xa6O9ET\xa9T\xc9\x93\"\xd5^`i`\xbc{\x0f3!\xff\x98\xb1\xa8\xe1a\x07\xbc\xec2#\xde\xceWxX\xa6Z\xfcTL\xf847\x85~ET\xa5\xb34=x\xeeFo\xf6\xec\xe0m\x1c\xf1sH\x0f\xfc}\x0e\xde\xe3]\x17r\xec6\xa4\n\xee\xe43\xe81\xa0z\xb1\x0f\xbd_\xe0\xcd\xe8\xe2\xf2w\xa1\x12OFu\xf8 \xc9Z\x8f\xeb\xe9tUQ\x0d\xcf/\xaf\xc7\x86(\x9d\xf0\xe7OAT#\xeaqLB\xf9\xc1b)\xc2\xbar*M\xb4\x7f5\x19\x8e~\xf8\xfbua\xcfc\x93\x0b\x95\xf3\xfd\x8ag\xefU\x9ei\x12\xcaW\xabe\xc4\xf8\x87z\x17%\xb0b\x17\x85\xf3\xeb\x8e\xe1U\x19\xa1\xb1\x00\x15L9,\xe6\\K\xd0/\xeb\xd0\x9e}\xa26\xd0\xb8<\xb93\xdb\xcd\xd7f\x03\x96[\xc3baN^\x91S\xcfT\x8a\xb8\x9a\\\xcd\x9ez\xc8\x90\xc3k\x1a\x90DQ\xb8\xa7 )\x16\\\xb8?\xae.\xc4\x06\xa5\xca9W\xc45\xa5\xb6\"\x85\x86X\xdca\x17\x8eX(\xc5\xa6\x11\xed\xda\xfa\x95Y\xc2\xb3\x03\xee\x03\x92h&\x12\xe5\x8eQ\xc2\x93\x95\x14\x10\xc4\x15 {\xf8\x92\\\xd9\xdb\xf6q\xa4\xb4\xae\x7f\x98\x1e\xfcro\xfe#|eL\xfd4\xa2K\x85\xd5/\x0dG\xc5\xb8\x13\xe9(\x0f}[\x9a\x83\x9e\x99\xf5\xc00r\xe7\xeap0-\xae\x05H\xaa\xe5\xaa\xb9\xc0\xc6G\xa6\xd5.#\xaa\x80p\xac0\xc1\x02\x94t\xfe0e\xcf \xc7\xc2\xce\xe9\n\x08\xb7\xabi\xfapS\x1b#\x82\x82\xd3\x0c\xc4\xe2J\xcb] \xc7\xc7\x81\x13\x1c\x05\xc1\x83\xc7+O\xa9\x8b\x0fpl\xf3\xfbN!z:=N\xad\xf7&\xcd\x92\xf6~I\x8b\x8a\xec\xa8\x8b\x8f\xce\x16\x9d\xb5\xbc\xc0\xf0\xb1lS\x17\x03,\xf7\xc5R\x93\x8f9\x9c\xc4\x1d\xf21<?\xbd\xb0\x0fkb\\\x16\x85\xb0\x14w4\xa5:\xd77|\xee\xb8\x94\xfb\xad.\x13^{IVS|u\x0c\xcb\x0f\x97rOT\xffw\xc7\xb3\x8f\xc2\xe5\xc6\xc6\xf0\xcf\xd5%d\x0c\xe4Do\xcd\xbdu1\xcb:/k\xa6\x12\xd6q7\x8f\x91\x7f\xb1\\f\xbc\x98Q\x87O\xc7\xf4B\xfe\xb4\xc0\xf9\xe2\x11\xf6\x1f'\x85MyYxD\x1467\xfe\x07\xca\xa2\xc8\x94\x9a(\xac\x84>\xbd@R3\xe2\x98hS\xf0\xdbM\x85,\xff\xfa\x88\xd1\xa8\xc1\x15\xbbz\x1c\xfc\xd3J\x00i\xc6%\xc7R\x91\xc9\x02\xf7>\x99@\xd6\xf0\xbf\x91\xe1fc.\xc5jk\x96\xe3\x1c\xf8\x08~\x97\x95\xbe\x91\xf9\xebm\xcafde\x894L\x9c-{\xf9\x92d\xb5\xcd\\\xf9t\xa2\xfbX\xdb\xb5^\x8c\xcd\xf6h3\xb6\x8f\x90\xe3\xe70{_\x9e 7\x9a=h\x1bO\xbb\xd3$\xc6\xc3\x8f\xb4~\x87_\xbe\xf5;|T\x10\xbf\x9f\xf3\xa5\x8d\x8c{\x1e\xa0r\xe0\xa0\xc0\xc3\x06k\xc5l\xeeb\xb9\xb2\xac\xf8 [\xf5\xdd*\xd9`l\xf9\xb8\xd2\xee}{\x11\x9diHb\x7fC\xe8\xc1\xbb\x8c(Q\xd4\xc8\x1e\xde\x97^o\xf6\xde\xd6\x00\xfb\xd9S\xa0\xb3{\xf7\x86\x9c\xed\xcaD\xed;\xc66\x15\x8b\x9aV\x89\xa2\x12\x12\x16\xa6\xef\xcfK\x85\x94\xbe/\x0b\x1e\xab\x16\xddP`\xe9^\xfdS*\xb3\xb4\xbbulW\x14\xc5c\x05\x85\xf8\xbe\xa0'WN:\xb0JG\x9b*\x06\x1b:\xda\xa6n\xb0\xd4Qc\xb5\x1d\x8e{\xfd\xf6'E\xb0\x1dK\xd3w$\xad-`}2k\xb1.\xf1\xe3\xd8\xdbT\x1c\xfa8\x8bk\x1dn\xcf\xe6b\x0de\x13\xab\x1f\xdbj\x16\xb18~\xbf\xb1q\x0e\x9c\x01\x04_\xb3gX\xcb\x96$F\x03\xa6\x96:\xb6~\xb3H\xb4b!\xad\xf5\xbe\xa6\xa0\x04{\xaa\xac\x8dHk\x8fqM\xe5\x8c`\x82\xbc\xf2\xa6\xabn5 \xd5P\xd0TH1e/\xc4Z\x9f\x0f\xffB(\xcd\xde\xd3\xf5\xef\xa0tc\xd1M3\x8f*\xd9\x8e\x7fK\xcf\xcdc.\xa7 \xdc\xbc\xc1\x8741y\xa4+\x87)\xe1\xebLn\xd1\xe2\xdf\xec\xdfnZ\x89\xce\x05\x1as|\x16\xca\x0d\xcc\xfc>\x06\x07\x9b\xe7<\xdc9\x17 g\x0f\xb0\x9b\xb0p\xd7\x96\x9e\xe5\xda\x9f\xaf!\xe5y`\x06\xa6\x9e\xc42\xf4\xdfkl\x13\x89\xde\xa8[5\x00{\xfa~\x17<q\xcf\xed\xfb\xa3z\xbd\x84\x85\xbd\xf4g\xc2\xc2'*\xe4'\x9c:_\xec\x18?\xe1\xa4\xfbDc\xfc\\3\xf5s\x90\xfb\xd8\xf4\xae:n\x1b\xa2\xe6U\x7f\x0d\xd6\x07e\xb7\x88\xb7n\xe5o4\xec\xda\xfe\xbd{\x82JL\xaa<d\xbb\xc2Z\x07\xf1)\xbb\x82\xad\x83P[\xb0m{\xdf\xe1K\xe4\x9ds\x01?\x07\xf3\x1e\x0b\xcd9\x05{4\xa6\xb0q\x8b\xba\x0e\xc9\xa7e\xec\xe6\x88A\x85\xcfO\xe1\xed\x13\xb6\xabO\xdc\xfao\xe6\xee\x96\x01\x80?\x9e\xbb\x87\x7f\x0cw\xb7\xd3\xdd\xedb\x9b[p\xf8\x8f\x0f_\xfe!\\\xdeN\x877q\xf9Iz\xfcGs\xf9s\xe9\xf2\xa7\x8e]U\xa8\xfe\xbd\x11\xac\xe2\x8b\xefK\x11\xac\x9d\xd6\x0e\xbc\xeb\x0f\xf1\xc0p|\xb9?\x1c\xa3{\x83\x19t\xa6\xca\xaf\xc8w/^\x84\x7f\xba\x9a\x9c\x7f\xb5l\xbbX\x8a9\x9e\xc7O8\x8b\x93\x88h\x8a'\xad\xc3\xebJ\x92\xcb\x87!\xf2\xf7\x19\x17\xfa\x19\x18w\x8fk\xfbH\xc0\x14C^akIxb\x0fEj\x9d\xb8\x03\x93\x8eZ\xad\x7f\xdaZ\x8b\x7f\xa5\x04\xe4\x17\\\x05E~A\x14\xdf\xb5\x0f\xffe\xf6W\xdf6\xdd\x15q~\xb5\x10\xdfk\x02*\x85\xff\x1a.3\x95\x14/\xe7\xac.\x11V\x12A\xc3e\xc4\xe2y\x9e;V\xdf\x9d\xdcy\x9c\xd6\xab8\x8e\x1f\xbb\xbf\xa9\x0f\xbb$\xf53\xdd\x07\xdc\xc8<\x16\x8ck\xac\x91s\xafm\x02\xfa@\x83Dg/W\xc8#\x85\xe3\x8b7\x17\xf8\x8c\x1a\x91sw\xac\xb7;'$F\x1d\xf23\x15\x8f(o\xab\x95\xf2\x89\x9c\xdfu\xe0\xdbcx\x91\xabpZ\xccp\x0c\xde\xc4\xbd$'mzsp\xf4\xb2\xf0\x9a2w\xecQv\xf7\xe5\x91\xdb\x00c/j\xe2\x84Z\x9e`\x8e\x82\xac\x97c\xd8]\xd0(\xde53\xabx\xb1\xb7(\x1c/\x03\xd9\xfb\x16P\xb7;\xa5\x1bxn\xfe~\xa7\x84\x1eI3\xa8\xdc\xc6\x1cQ:z*xK\x84f'/\xa4\x1f\x03\xef[/\xae\x9d!\xe8\xac\x1b\x8a\xe7\x14\xdbk\"=\x13y\xf1V\x13\xf1\xf6E\x9a \x0b\xdb\xd5B@\xa8\x9e8\x99\x1e\xb2\x80%'\n\xf0\x9d\xf9\xeb\xa9+\x1d\x00\\\xa1\xb1\xe1p\xe0\x1c\x8f;\x87\xa2 \x93\x88\xd7\"JOo\xdd\x80\xa7|6C\x05S\xed\xbd>\xe6\xd3t\x9aC\x85\xa3M\xe70\xd7\x11\xa5\xe1\xd4L\xfc\xf5&P\xee\xcf\xec.kmJ\xe2\xc8O\xb8\xb5\n\x95\x02\xe3\xaa\xb3%\x1fj\x0c}\x8c\x0d5\xb2\xb6\xe5\xc0Z\xd2E\xfc\x11\x94\x1b\xc3W\xa1\x9c5\x9d9Tr.:u\xaav@\x0baV\x88\xa9P\x14\x14\xe3A!m\"\xa2HayZ\x0d,&\xaa|q\xd3[|\xac\xefQ\xab\xdd`\nBq\xcf\xbd\x8d\xe3u\x86\xfe \x1a\xdb\x90X\xfa(ym\xab\xb1\xe5x\xc8\xf6b7\x1a[\xf6W\x1e\x97~\xce\x8d-\xf5v\x03q\xdb\xf2a\x93\xde~,\xfd\x1f\xa5\xbd\xb5tV\xfa\xc9\xce\xf5.+Z\xc5\x19d\n\x92x\xc3\xf1\xde\xdbkp\x1dq]\x8f\xab\xb8\xaa'\x17\xab\x04\xdf\x9ai\xcf\xfa\x86\xb1\\\x95}F\xb3H7\x1e&\xf0qx\xf0\xdd\xd0\xe9\x0b\x92Q\x14\x93\x89q\x82&\x13'\x05\xb7K\x80\x8a\x0b\xe2Xd\xfd%K\x8d[A\xff_\x00\x00\x00\xff\xffPK\x07\x08/\x1c\xa5\x87\xb7#\x00\x00\x04\x8f\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\xb4\x037P\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x16\x00 \x00se.leap.bitmask.policyUT\x05\x00\x01\xf4\xe8(^|\x93\xcbn\xdb<\x10\x85\xf7z\x8a\xf9\xb9\xb7\x98\xec~\x04\xb4\x82\\\\\xa0h\xd0\x1aE\xb2\xe8*\x98\x90c\x991=\x14\xc8\x91m\xe5\xe9\x0b\xc979\x01\xba\xb3\xc93\xdf9\x9c\x19\x99\xdb\xdd:\xc0\x86R\xf6\x91\xa7\xea\xba\xbcR@l\xa3\xf3\\O\xd5\xcb\xf3\xb7\xc9\xff\xea\xb6*\xcc\x7f\x8f\xbf\x1e\x9e\xff\xccg\xd0\xc4\xe0mg#/|\x0d\xf3\x97\xfb\xa7\xef\x0f\x05\xa8\x89\xd6\x8bD\xe4(\xaf$6Z?>?\xc2|P\xfe\xf0r\xf8\x05\x0fCQ\x9bP|d\xb8.\xaf\xb4\x9e\xfdT\x05\xa8\xa5Hs\xa3\xf5v\xbb-G\x942\xa6ZgAv\x98\\\xd6'\x9c\xbe\xd6\xe3\x10\xa5\x13\xa7\xaa\xc2\x8c\xcf\xaa\xa2\x000\x1bb\x17S\xf54\xbb\x9b\xc3\x8cm\xea\x9a\xc1\xf8\xceZ\xca\x19\xe6)\xbe\x93\x15\xa3\x0f\xb2s\xc5k\x9bBu\xc8\x14\x08\x9b2\x93>\xca\x86\xbb\x81\x8ev\xa0y7U\x99\xcaA\xf7\xe6e\x8dyU\xee\xa3\xa8\x1e `\x1ce\x9b\xfc\xe0]\xfdn9\xc3A\x06K\n\x0d%\x90\x08\x01[\xb6KX\xf8D[\x0c\x01\x90\x1d\xc4\x86x\xd3\xb0\xd1\xe3\xfa/D\xd8\xad\xc3M\xc0~X\x94U5{'\xdb\n\x02\x05\xc0\xec\xb3\x10\x0b\x81\xa3\x93e\x83 ! \x7f`\xea5'\xc3\xee_vk\xca\x19k\xaa\xee\x0f\x10&r\x19d\x89\x02]l\x01[Y\x12\x8b\xb7(\xd4?&\x0b&1\xfaXu\xc1\xf8\x14\xf7L\xb4\x94\xbd`\xcf\x8a\xc9\x7f\xa0\xed\x9f6\x84\xb5qM}\xdc\xcf@o#\xbf2\xae\xa9j\xd0\xae\xb0\xa6\xc9nR\x13S\xf2\xd6\xe8\xf3%\x1c;\xb6\xc06H\xde\x17\xf7\xd3\x0b!n_\x91\xbb\xaa\xa3l\xf4\xf9\xef\xa5\xc0s?\xe6\x0d\x8dU\xa7\xb3O\xac/\xc2\xb1\xac\xef\xeb8\x82A\xe6(}\xc7V\xd4MUL\xf5\xc5\xea\xef7h\xe5\xa5\xa4\x1d\xd9\xb2AY\xaaJ\xb79\xe9\xfc\xe6Y\x1f\xc69I1\x8a\xd1G\xd4\xb0\xc2z\xbf\x97Ua\xf4\xe5\x17\xf17\x00\x00\xff\xffPK\x07\x08\xdf\x04|\xcb\xf7\x01\x00\x00\xea\x03\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\xb4\x037P\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1b\x00 \x00se.leap.bitmask.snap.policyUT\x05\x00\x01\xf4\xe8(^\x94\x93Oo\xdb<\x0c\xc6\xef\xfe\x14|\x85\x1e\xde\x1db\xb5\xb7\xa1P\\tm\x06\x0c+\xba`h\x0f;\x15\xac\xcc\xd8jdJ\x90\xe4$n\xb1\xef>\xd8\xf9S\xa7\xd9e'\xdb\xd2\xc3\x1f\x1f\xd2\xa4\xba\xda4\x16V\x14\xa2q<\x15\x17\xf9\xb9\x00b\xedJ\xc3\xd5T<>|\x9d|\x16WE\xa6\xfe\xbb\xfdq\xf3\xf0k>\x03\xef\xac\xd1\x9dv\xbc0\x15\xcc\x1f\xbf\xdc}\xbb\xc9@L\xa4\\\x04\xa2\x92\xe229/\xe5\xed\xc3-\xcc\x07\xe5w\x93vop3\x04\xb5\x01\x93q\x0c\x17\xf9\xb9\x94\xb3{\x91\x81\xa8S\xf2\x97R\xae\xd7\xeb|D\xc9]\xa8dL\xc8%\x862\xca\x03N^\xc8\xb1\x89\xbcL\xa5(25>+\xb2\x0c@\xad\x88K\x17\x8a\xbb\xd9\xf5\x1cf\xacC\xe7\x87\xc4\xd7ZS\x8c0\x0f\xee\x85t\xda?\x95\xdc\xc9\xdf#\x9f\xda`\x8b\x9d7K\xe8\xf3Hr/\x1b\xee\x86,\xa8\x07\xaa)\xa7\"R>\xe8\x9eMj0.\xf3\xb37\xf4\xde\x1a=\x14|\x8f\x0d\xfd\xce\xb7.E\x9f\x05@\x95\x14u0\x83\xad\xe2g\xcb\x11v\x91P\x93\xf5\x14 9\xb0\xd8\xb2\xaeaa\x02\xad\xd1Z@.\xc1y\xe2\x95g\xf8\xff4\xc1'%\xc7\xd0\x934\xb0i\xec\xa5\xc5\xfe\xe7R\x14\xc5\xec\x85t\x9b\x10\xc8\x02F\x13\x13q\"(\xe9\xe0\xc3c@\xb0\xc8\xaf\x18z\xcd\xc1E\xf7\xcf\x1e\x1a\x8a\x11+*N\xe5\xc0De\x84Tc\x82\xce\xb5\x80m\xaa\x89S/\xa1\xbe\x031aHJ\xee\x01G\xb8\x0f\xe5\xfc\x15\xae)\x9a\x84=\xd6\x05\xf3\x8a\xba\xef\xc2P\x97v\x0d\xf5\x95}d\x1b\xed\xf8\x89\xb1\xa1\xc2\xa3^bE\x93\xcd\xa4\"\xa6`\xb4\x92\xef\x97\xb0o\xee\x02[\x9b\xe26\xb8\x1f\x08k\xdd\xfa \xb9+:\x8aJ\xbe\x7f\x1e\x0b\x0c\xf7\x93\xb3\xa2\xb1\xeap\xf6\x81u\"\x1c\xcb\xfan\x8f-(dv\xa9o\xde\x92\xba\xa9p\xa1:\xda\xaa\xed\x04.M\xcaiC:\xf7\x98jQ\xc8\xc8\xe8\xe5\xb3ay\xf6\xf6l\x18C\xb7\x1d\xd7\xdd\x1cL\x82sI\xc9=x\xd8\x11\xb9\x1d\xfc\"S\xf2x\xf5\xfe\x04\x00\x00\xff\xffPK\x07\x08\x01\xb4\xa1\xf7\x1a\x02\x00\x00S\x04\x00\x00PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x004\x8a\x86P/\x1c\xa5\x87\xb7#\x00\x00\x04\x8f\x00\x00\x0c\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81\x00\x00\x00\x00bitmask-rootUT\x05\x00\x015d\x8b^PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\xb4\x037P\xdf\x04|\xcb\xf7\x01\x00\x00\xea\x03\x00\x00\x16\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81\xfa#\x00\x00se.leap.bitmask.policyUT\x05\x00\x01\xf4\xe8(^PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\xb4\x037P\x01\xb4\xa1\xf7\x1a\x02\x00\x00S\x04\x00\x00\x1b\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81>&\x00\x00se.leap.bitmask.snap.policyUT\x05\x00\x01\xf4\xe8(^PK\x05\x06\x00\x00\x00\x00\x03\x00\x03\x00\xe2\x00\x00\x00\xaa(\x00\x00\x00\x00"
- fs.Register(data)
- }
- \ No newline at end of file