diff --git a/.direnv/flake-inputs/6pakgwxwz07gifgrzgckj6730qmk9k1g-source b/.direnv/flake-inputs/6pakgwxwz07gifgrzgckj6730qmk9k1g-source
new file mode 120000
index 0000000..f4a8732
--- /dev/null
+++ b/.direnv/flake-inputs/6pakgwxwz07gifgrzgckj6730qmk9k1g-source
@@ -0,0 +1 @@
+/nix/store/6pakgwxwz07gifgrzgckj6730qmk9k1g-source
\ No newline at end of file
diff --git a/.direnv/flake-inputs/ffng591v1gyq3k1f2q43mxrlrsc5by00-source b/.direnv/flake-inputs/ffng591v1gyq3k1f2q43mxrlrsc5by00-source
new file mode 120000
index 0000000..f464892
--- /dev/null
+++ b/.direnv/flake-inputs/ffng591v1gyq3k1f2q43mxrlrsc5by00-source
@@ -0,0 +1 @@
+/nix/store/ffng591v1gyq3k1f2q43mxrlrsc5by00-source
\ No newline at end of file
diff --git a/.direnv/flake-inputs/zj9y21aivdlpzbjhlpqnf2cpnrffzpk7-source b/.direnv/flake-inputs/zj9y21aivdlpzbjhlpqnf2cpnrffzpk7-source
new file mode 120000
index 0000000..35ffb89
--- /dev/null
+++ b/.direnv/flake-inputs/zj9y21aivdlpzbjhlpqnf2cpnrffzpk7-source
@@ -0,0 +1 @@
+/nix/store/zj9y21aivdlpzbjhlpqnf2cpnrffzpk7-source
\ No newline at end of file
diff --git a/.direnv/flake-profile-a5d5b61aa8a61b7d9d765e1daf971a9a578f1cfa b/.direnv/flake-profile-a5d5b61aa8a61b7d9d765e1daf971a9a578f1cfa
new file mode 120000
index 0000000..a460e0f
--- /dev/null
+++ b/.direnv/flake-profile-a5d5b61aa8a61b7d9d765e1daf971a9a578f1cfa
@@ -0,0 +1 @@
+/nix/store/4nf54nsz3nfa9yaxv7lig5ra446577wx-nix-shell-env
\ No newline at end of file
diff --git a/.direnv/flake-profile-a5d5b61aa8a61b7d9d765e1daf971a9a578f1cfa.rc b/.direnv/flake-profile-a5d5b61aa8a61b7d9d765e1daf971a9a578f1cfa.rc
new file mode 100644
index 0000000..4b80f67
--- /dev/null
+++ b/.direnv/flake-profile-a5d5b61aa8a61b7d9d765e1daf971a9a578f1cfa.rc
@@ -0,0 +1,1997 @@
+unset shellHook
+nix_saved_PATH="$PATH"
+ANDROID_AVD_HOME='/nix/store/ffng591v1gyq3k1f2q43mxrlrsc5by00-source/.android/avd'
+export ANDROID_AVD_HOME
+ANDROID_HOME='/nix/store/jjr6xjlpcx19fbf0jjq2d0034j7aarnb-androidsdk/libexec/android-sdk'
+export ANDROID_HOME
+AR='ar'
+export AR
+AR_FOR_TARGET='ar'
+export AR_FOR_TARGET
+AS='as'
+export AS
+AS_FOR_TARGET='as'
+export AS_FOR_TARGET
+BASH='/nix/store/30j23057fqnnc1p4jqmq73p0gxgn0frq-bash-5.1-p16/bin/bash'
+CC='gcc'
+export CC
+CC_FOR_TARGET='clang'
+export CC_FOR_TARGET
+CLASSPATH=''
+export CLASSPATH
+CMAKE_INCLUDE_PATH='/nix/store/jybckv2y9wqjkv0p6y0j4p156lvblnq9-openjdk-11.0.12+7/include:/nix/store/2k141yqyyvm6rh3y6ssvcv3raw6w29d8-dart-2.17.0-266.1.beta/include:/nix/store/bvzpppawf2naqv3qhxqv66jxaq3iaxyj-python3-3.9.11/include:/nix/store/mncnjdqi1vmsfag6li4cvdp72gnxmmlw-jq-1.6-dev/include:/nix/store/wqj9imqj9in8fmxb31yq331sshv3d001-atk-2.36.0-dev/include:/nix/store/ay2530157fl2cmddbfhn232ay7q5smkh-glib-2.72.0-dev/include:/nix/store/ab2kkxrkwiliik3hi19r52m3b5lzwmpf-zlib-1.2.12-dev/include:/nix/store/arn7xxsxjfg04mpmdyr9yh23rbjpqrg2-libffi-3.4.2-dev/include:/nix/store/1ynaiiirnxqn8s62haws8i1b46b5v62j-gettext-0.21/include:/nix/store/3idrdw9wm55dapgfy9dqicpsfnl4zw08-glibc-iconv-2.34/include:/nix/store/j5brj48yd6fza2r3rdzzi9bni915v1ar-cairo-1.16.0-dev/include:/nix/store/1xghq8cvp3ikrj1xxadp65v3xrgp9m5a-fontconfig-2.13.94-dev/include:/nix/store/naxbqvpb0vkbzbp6si49fris5q38bdx2-freetype-2.11.1-dev/include:/nix/store/mr4p6sb833mgxlzwknmlhgfgz36y66sa-bzip2-1.0.6.0.2-dev/include:/nix/store/q5ksqnnkrfpraifgyrzas68lpjymm8kz-libpng-apng-1.6.37-dev/include:/nix/store/36z9b8dzzmbs0xl4sgs9immm7yidswzc-expat-2.4.7-dev/include:/nix/store/y5j645511d08hfzv0924nyhjqcin50kc-pixman-0.38.4/include:/nix/store/ysr42a1mzvj7na91pclfkscjcbyg7s4l-libXext-1.3.4-dev/include:/nix/store/mj3qh7prl1zdhh0kaw83n3gin0haj31r-xorgproto-2021.5/include:/nix/store/hbfs1j0w5d5brkkbg55d3xnybq1vqh6x-libXau-1.0.9-dev/include:/nix/store/bzvqvcad70dhhsvmxig3w80n94k2dm07-libXrender-0.9.10-dev/include:/nix/store/a2s8wi9lghg0ir5fckb1b1p69dwa9xva-libX11-1.7.2-dev/include:/nix/store/0bi9s80hzrm6isch4z6jkks09s8qb75r-libxcb-1.14-dev/include:/nix/store/jb1jjhk53nrzbm57k18v0zm1w710rgl9-xcb-util-0.4.0-dev/include:/nix/store/kf1dv3n0g4sq2fgs7s3zhvhx3gwj047d-libGL-1.4.0-dev/include:/nix/store/kmld4kwf5mlb5n45rs593cnbqs2a1z6v-libglvnd-1.4.0-dev/include:/nix/store/mgdicybndan57zsq6xv9g01zsrds8nqa-libepoxy-1.5.9-dev/include:/nix/store/pyxk0i29z4lhif5ys2zplf9rj2mkz13m-gdk-pixbuf-2.42.8-dev/include:/nix/store/2h963ndrnb0bik6bfh1krnf8a3m65sjh-libtiff-4.3.0-dev/include:/nix/store/xf7pp7h5s90i06a7g2fbdv4cqzyblm8k-libjpeg-turbo-2.1.3-dev/include:/nix/store/78l2dgfzx7nl9rhmv94xr6xhci68rm3c-xz-5.2.5-dev/include:/nix/store/hzwxfpp23dhl3w8bi3mg2dv3czaifhmk-gtk+3-3.24.33-dev/include:/nix/store/38g3xydr2nyp2cydaih9x48w2jim1mrc-at-spi2-atk-2.38.0/include:/nix/store/03y73n3p1h1ac9605ghswfqyr31pqzcn-fribidi-1.0.11/include:/nix/store/chywfp3sbcaglnj3q1fh7rk2krgim4kx-gsettings-desktop-schemas-42.0/include:/nix/store/z61nfm16mag6xkyvkdg4jx288m7pgdc3-libICE-1.0.10-dev/include:/nix/store/jy8h3cz74jxw9i3h3ja0mc0dwdxw5zja-libSM-1.2.3-dev/include:/nix/store/67w1mz9mac5a58zr0sm8spnbl9vfl1la-libXcomposite-0.4.5-dev/include:/nix/store/39n7g8mlvij2iws9gfd23w9v4pz96hsz-libXfixes-6.0.0-dev/include:/nix/store/gcbqi8f5w23rm2n9pm4m8pgg9cij10ci-libXcursor-1.2.0-dev/include:/nix/store/xh0d5220ig5vil572lsyrivm97limshv-libXi-1.8-dev/include:/nix/store/1qi9nj8ash2mwcf7pjwdancz6vscc3p9-libXrandr-1.5.2-dev/include:/nix/store/2iakkaflzzp3fg7c1hh09i4bl96fhsdh-pango-1.50.6-dev/include:/nix/store/fr8s7935ba0m8f5sw72cs4sgi8lh70f4-harfbuzz-3.3.2-dev/include:/nix/store/dqhrpw13q9wss7fsb20yj3c9xrf4rg8i-graphite2-1.3.14/include:/nix/store/i1h792658cvwz9bfhd47zmc948j3r78m-libXft-2.3.4-dev/include:/nix/store/glgkbz8g8719bby4sx28p34nk1dwyr8b-wayland-1.20.0-dev/include:/nix/store/0m1wqsbiry229gwczprwppb7p5pzni9c-libXinerama-1.1.4-dev/include:/nix/store/d57prf5almy1qnj5lr1biswh6fydb620-cups-2.4.1-dev/include:/nix/store/wgclqchs4pqgkn8fabb9smhz3nwhm2nh-gmp-with-cxx-6.2.1-dev/include:/nix/store/s2b221nhz0h7i7ndcp19d4yn5ydda4x4-pcre-8.45-dev/include:/nix/store/x8l8s0zzmzg7ydwzvndn81ir33z89gn6-compiler-rt-libc-11.1.0-dev/include:/nix/store/jybckv2y9wqjkv0p6y0j4p156lvblnq9-openjdk-11.0.12+7/include:/nix/store/2k141yqyyvm6rh3y6ssvcv3raw6w29d8-dart-2.17.0-266.1.beta/include:/nix/store/bvzpppawf2naqv3qhxqv66jxaq3iaxyj-python3-3.9.11/include:/nix/store/mncnjdqi1vmsfag6li4cvdp72gnxmmlw-jq-1.6-dev/include:/nix/store/wqj9imqj9in8fmxb31yq331sshv3d001-atk-2.36.0-dev/include:/nix/store/ay2530157fl2cmddbfhn232ay7q5smkh-glib-2.72.0-dev/include:/nix/store/ab2kkxrkwiliik3hi19r52m3b5lzwmpf-zlib-1.2.12-dev/include:/nix/store/arn7xxsxjfg04mpmdyr9yh23rbjpqrg2-libffi-3.4.2-dev/include:/nix/store/1ynaiiirnxqn8s62haws8i1b46b5v62j-gettext-0.21/include:/nix/store/3idrdw9wm55dapgfy9dqicpsfnl4zw08-glibc-iconv-2.34/include:/nix/store/j5brj48yd6fza2r3rdzzi9bni915v1ar-cairo-1.16.0-dev/include:/nix/store/1xghq8cvp3ikrj1xxadp65v3xrgp9m5a-fontconfig-2.13.94-dev/include:/nix/store/naxbqvpb0vkbzbp6si49fris5q38bdx2-freetype-2.11.1-dev/include:/nix/store/mr4p6sb833mgxlzwknmlhgfgz36y66sa-bzip2-1.0.6.0.2-dev/include:/nix/store/q5ksqnnkrfpraifgyrzas68lpjymm8kz-libpng-apng-1.6.37-dev/include:/nix/store/36z9b8dzzmbs0xl4sgs9immm7yidswzc-expat-2.4.7-dev/include:/nix/store/y5j645511d08hfzv0924nyhjqcin50kc-pixman-0.38.4/include:/nix/store/ysr42a1mzvj7na91pclfkscjcbyg7s4l-libXext-1.3.4-dev/include:/nix/store/mj3qh7prl1zdhh0kaw83n3gin0haj31r-xorgproto-2021.5/include:/nix/store/hbfs1j0w5d5brkkbg55d3xnybq1vqh6x-libXau-1.0.9-dev/include:/nix/store/bzvqvcad70dhhsvmxig3w80n94k2dm07-libXrender-0.9.10-dev/include:/nix/store/a2s8wi9lghg0ir5fckb1b1p69dwa9xva-libX11-1.7.2-dev/include:/nix/store/0bi9s80hzrm6isch4z6jkks09s8qb75r-libxcb-1.14-dev/include:/nix/store/jb1jjhk53nrzbm57k18v0zm1w710rgl9-xcb-util-0.4.0-dev/include:/nix/store/kf1dv3n0g4sq2fgs7s3zhvhx3gwj047d-libGL-1.4.0-dev/include:/nix/store/kmld4kwf5mlb5n45rs593cnbqs2a1z6v-libglvnd-1.4.0-dev/include:/nix/store/mgdicybndan57zsq6xv9g01zsrds8nqa-libepoxy-1.5.9-dev/include:/nix/store/pyxk0i29z4lhif5ys2zplf9rj2mkz13m-gdk-pixbuf-2.42.8-dev/include:/nix/store/2h963ndrnb0bik6bfh1krnf8a3m65sjh-libtiff-4.3.0-dev/include:/nix/store/xf7pp7h5s90i06a7g2fbdv4cqzyblm8k-libjpeg-turbo-2.1.3-dev/include:/nix/store/78l2dgfzx7nl9rhmv94xr6xhci68rm3c-xz-5.2.5-dev/include:/nix/store/hzwxfpp23dhl3w8bi3mg2dv3czaifhmk-gtk+3-3.24.33-dev/include:/nix/store/38g3xydr2nyp2cydaih9x48w2jim1mrc-at-spi2-atk-2.38.0/include:/nix/store/03y73n3p1h1ac9605ghswfqyr31pqzcn-fribidi-1.0.11/include:/nix/store/chywfp3sbcaglnj3q1fh7rk2krgim4kx-gsettings-desktop-schemas-42.0/include:/nix/store/z61nfm16mag6xkyvkdg4jx288m7pgdc3-libICE-1.0.10-dev/include:/nix/store/jy8h3cz74jxw9i3h3ja0mc0dwdxw5zja-libSM-1.2.3-dev/include:/nix/store/67w1mz9mac5a58zr0sm8spnbl9vfl1la-libXcomposite-0.4.5-dev/include:/nix/store/39n7g8mlvij2iws9gfd23w9v4pz96hsz-libXfixes-6.0.0-dev/include:/nix/store/gcbqi8f5w23rm2n9pm4m8pgg9cij10ci-libXcursor-1.2.0-dev/include:/nix/store/xh0d5220ig5vil572lsyrivm97limshv-libXi-1.8-dev/include:/nix/store/1qi9nj8ash2mwcf7pjwdancz6vscc3p9-libXrandr-1.5.2-dev/include:/nix/store/2iakkaflzzp3fg7c1hh09i4bl96fhsdh-pango-1.50.6-dev/include:/nix/store/fr8s7935ba0m8f5sw72cs4sgi8lh70f4-harfbuzz-3.3.2-dev/include:/nix/store/dqhrpw13q9wss7fsb20yj3c9xrf4rg8i-graphite2-1.3.14/include:/nix/store/i1h792658cvwz9bfhd47zmc948j3r78m-libXft-2.3.4-dev/include:/nix/store/glgkbz8g8719bby4sx28p34nk1dwyr8b-wayland-1.20.0-dev/include:/nix/store/0m1wqsbiry229gwczprwppb7p5pzni9c-libXinerama-1.1.4-dev/include:/nix/store/d57prf5almy1qnj5lr1biswh6fydb620-cups-2.4.1-dev/include:/nix/store/wgclqchs4pqgkn8fabb9smhz3nwhm2nh-gmp-with-cxx-6.2.1-dev/include:/nix/store/s2b221nhz0h7i7ndcp19d4yn5ydda4x4-pcre-8.45-dev/include:/nix/store/x8l8s0zzmzg7ydwzvndn81ir33z89gn6-compiler-rt-libc-11.1.0-dev/include'
+export CMAKE_INCLUDE_PATH
+CMAKE_LIBRARY_PATH='/nix/store/2k141yqyyvm6rh3y6ssvcv3raw6w29d8-dart-2.17.0-266.1.beta/lib:/nix/store/bvzpppawf2naqv3qhxqv66jxaq3iaxyj-python3-3.9.11/lib:/nix/store/vdyarq02kn92wvljax1m1gd092ryfli7-jq-1.6-lib/lib:/nix/store/j5jxw3iy7bbz4a57fh9g2xm2gxmyal8h-zlib-1.2.12/lib:/nix/store/zf2p161nx09fkd36g79b0xv7srcc1av1-libffi-3.4.2/lib:/nix/store/1ynaiiirnxqn8s62haws8i1b46b5v62j-gettext-0.21/lib:/nix/store/3ma88r781fvsjiakwyfh95mzy7k19jac-glib-2.72.0/lib:/nix/store/nar7gsyrshxv579gz0026wk7b2ysraac-atk-2.36.0/lib:/nix/store/vgw0mw7s490428lzgswl1cxj4xmlf5gn-bzip2-1.0.6.0.2/lib:/nix/store/hyh1whmci39mv1hd6gr8nnhxva0c2rvm-libpng-apng-1.6.37/lib:/nix/store/9kpdwg8rjdizjkqbf6jj96w2jmcfhcad-freetype-2.11.1/lib:/nix/store/zcjja5yd97dgnnh3qwanbsra8xsavcgw-fontconfig-2.13.94-lib/lib:/nix/store/sw3dj5k1sas1jckb750z3rd9ay8pxq2h-expat-2.4.7/lib:/nix/store/y5j645511d08hfzv0924nyhjqcin50kc-pixman-0.38.4/lib:/nix/store/b38zsh4qgfj60fjlpg6m9v29bcp09abk-libXau-1.0.9/lib:/nix/store/fmbay7w2i0qg57jcdzij3v0lzr4gpcyk-libXext-1.3.4/lib:/nix/store/3jch9iknmlz6r3m2fhhnvaqryzlh3zq4-libxcb-1.14/lib:/nix/store/0np4qysvv5v05w49bs3ii123gckd4n0b-libX11-1.7.2/lib:/nix/store/cs3m5r3f7x6ghf9xwgnmg1bzb12lqi19-libXrender-0.9.10/lib:/nix/store/cqhhah8c6rgms9wmxr9pa1wghh2smki3-xcb-util-0.4.0/lib:/nix/store/q796xg0x515ajdly44iqdvacxnprj6qx-libGL-1.4.0/lib:/nix/store/hrl51nkr7dszlwcs29wmyxq0jsqlaszn-libglvnd-1.4.0/lib:/nix/store/jr22pv60hyl16n9fqsbjsqyq0rknjphj-cairo-1.16.0/lib:/nix/store/s9lnvpdcphaxkvlm97sd18bcsxghjgq8-libepoxy-1.5.9/lib:/nix/store/3jcj0v2a0pjfi3ydscabrv532dsg43kf-libjpeg-turbo-2.1.3/lib:/nix/store/xmhqvwkhmvc6grldj5vq43ffsahskfq0-xz-5.2.5/lib:/nix/store/nl0km2rshc71svq137kx2bv2fdjmqv56-libtiff-4.3.0/lib:/nix/store/mg7gw8a5lmhqc34lbw2n2kk4vj42pwwy-gdk-pixbuf-2.42.8/lib:/nix/store/38g3xydr2nyp2cydaih9x48w2jim1mrc-at-spi2-atk-2.38.0/lib:/nix/store/03y73n3p1h1ac9605ghswfqyr31pqzcn-fribidi-1.0.11/lib:/nix/store/hs258jqx4blnk6b8zncy8k0y6l2fqkl3-libICE-1.0.10/lib:/nix/store/n7pzh8k7h5axpiqp0nvn49df4k5qqz3l-libSM-1.2.3/lib:/nix/store/dvch1l6v4gczrsgb01y3p2lpgsw36aa4-libXfixes-6.0.0/lib:/nix/store/x6332d0bxzbkscshyri8z7if4j8lrz0d-libXcomposite-0.4.5/lib:/nix/store/jg8q74faxp8xbqw5dcdw7i63h9mjkjgz-libXcursor-1.2.0/lib:/nix/store/8r67k5yn6ic2vmj5dq0d0hm4lc2br0vj-libXi-1.8/lib:/nix/store/j3hqqyqpl6zwp3dcrc6xrvdqi6p776gl-libXrandr-1.5.2/lib:/nix/store/dqhrpw13q9wss7fsb20yj3c9xrf4rg8i-graphite2-1.3.14/lib:/nix/store/ms1f1l22i6x28bc865rn9mn5drgagv04-harfbuzz-3.3.2/lib:/nix/store/1hyvc28l0nc25jxp0yfyrdmpqla2vx3d-libXft-2.3.4/lib:/nix/store/n9h110ffps25rdkkim5k802p3p5w476m-pango-1.50.6/lib:/nix/store/dvv86s6ipnm6hp8fhnh2smkal4q95p45-wayland-1.20.0/lib:/nix/store/fqfk1r89lavcagxg15a8jvq63l00snsf-libXinerama-1.1.4/lib:/nix/store/nmk2zbdxsmiinqxqxzv9cfjkladq9jlx-gmp-with-cxx-6.2.1/lib:/nix/store/kal2vyxj49n0sfmf635h304hp96d81ia-cups-2.4.1-lib/lib:/nix/store/9bvfvaahj8cxij9gb8n9scz9nqah1phg-gtk+3-3.24.33/lib:/nix/store/m7wc8hf24hymhm89k2hc00nwl730dphv-pcre-8.45/lib:/nix/store/2k141yqyyvm6rh3y6ssvcv3raw6w29d8-dart-2.17.0-266.1.beta/lib:/nix/store/bvzpppawf2naqv3qhxqv66jxaq3iaxyj-python3-3.9.11/lib:/nix/store/vdyarq02kn92wvljax1m1gd092ryfli7-jq-1.6-lib/lib:/nix/store/j5jxw3iy7bbz4a57fh9g2xm2gxmyal8h-zlib-1.2.12/lib:/nix/store/zf2p161nx09fkd36g79b0xv7srcc1av1-libffi-3.4.2/lib:/nix/store/1ynaiiirnxqn8s62haws8i1b46b5v62j-gettext-0.21/lib:/nix/store/3ma88r781fvsjiakwyfh95mzy7k19jac-glib-2.72.0/lib:/nix/store/nar7gsyrshxv579gz0026wk7b2ysraac-atk-2.36.0/lib:/nix/store/vgw0mw7s490428lzgswl1cxj4xmlf5gn-bzip2-1.0.6.0.2/lib:/nix/store/hyh1whmci39mv1hd6gr8nnhxva0c2rvm-libpng-apng-1.6.37/lib:/nix/store/9kpdwg8rjdizjkqbf6jj96w2jmcfhcad-freetype-2.11.1/lib:/nix/store/zcjja5yd97dgnnh3qwanbsra8xsavcgw-fontconfig-2.13.94-lib/lib:/nix/store/sw3dj5k1sas1jckb750z3rd9ay8pxq2h-expat-2.4.7/lib:/nix/store/y5j645511d08hfzv0924nyhjqcin50kc-pixman-0.38.4/lib:/nix/store/b38zsh4qgfj60fjlpg6m9v29bcp09abk-libXau-1.0.9/lib:/nix/store/fmbay7w2i0qg57jcdzij3v0lzr4gpcyk-libXext-1.3.4/lib:/nix/store/3jch9iknmlz6r3m2fhhnvaqryzlh3zq4-libxcb-1.14/lib:/nix/store/0np4qysvv5v05w49bs3ii123gckd4n0b-libX11-1.7.2/lib:/nix/store/cs3m5r3f7x6ghf9xwgnmg1bzb12lqi19-libXrender-0.9.10/lib:/nix/store/cqhhah8c6rgms9wmxr9pa1wghh2smki3-xcb-util-0.4.0/lib:/nix/store/q796xg0x515ajdly44iqdvacxnprj6qx-libGL-1.4.0/lib:/nix/store/hrl51nkr7dszlwcs29wmyxq0jsqlaszn-libglvnd-1.4.0/lib:/nix/store/jr22pv60hyl16n9fqsbjsqyq0rknjphj-cairo-1.16.0/lib:/nix/store/s9lnvpdcphaxkvlm97sd18bcsxghjgq8-libepoxy-1.5.9/lib:/nix/store/3jcj0v2a0pjfi3ydscabrv532dsg43kf-libjpeg-turbo-2.1.3/lib:/nix/store/xmhqvwkhmvc6grldj5vq43ffsahskfq0-xz-5.2.5/lib:/nix/store/nl0km2rshc71svq137kx2bv2fdjmqv56-libtiff-4.3.0/lib:/nix/store/mg7gw8a5lmhqc34lbw2n2kk4vj42pwwy-gdk-pixbuf-2.42.8/lib:/nix/store/38g3xydr2nyp2cydaih9x48w2jim1mrc-at-spi2-atk-2.38.0/lib:/nix/store/03y73n3p1h1ac9605ghswfqyr31pqzcn-fribidi-1.0.11/lib:/nix/store/hs258jqx4blnk6b8zncy8k0y6l2fqkl3-libICE-1.0.10/lib:/nix/store/n7pzh8k7h5axpiqp0nvn49df4k5qqz3l-libSM-1.2.3/lib:/nix/store/dvch1l6v4gczrsgb01y3p2lpgsw36aa4-libXfixes-6.0.0/lib:/nix/store/x6332d0bxzbkscshyri8z7if4j8lrz0d-libXcomposite-0.4.5/lib:/nix/store/jg8q74faxp8xbqw5dcdw7i63h9mjkjgz-libXcursor-1.2.0/lib:/nix/store/8r67k5yn6ic2vmj5dq0d0hm4lc2br0vj-libXi-1.8/lib:/nix/store/j3hqqyqpl6zwp3dcrc6xrvdqi6p776gl-libXrandr-1.5.2/lib:/nix/store/dqhrpw13q9wss7fsb20yj3c9xrf4rg8i-graphite2-1.3.14/lib:/nix/store/ms1f1l22i6x28bc865rn9mn5drgagv04-harfbuzz-3.3.2/lib:/nix/store/1hyvc28l0nc25jxp0yfyrdmpqla2vx3d-libXft-2.3.4/lib:/nix/store/n9h110ffps25rdkkim5k802p3p5w476m-pango-1.50.6/lib:/nix/store/dvv86s6ipnm6hp8fhnh2smkal4q95p45-wayland-1.20.0/lib:/nix/store/fqfk1r89lavcagxg15a8jvq63l00snsf-libXinerama-1.1.4/lib:/nix/store/nmk2zbdxsmiinqxqxzv9cfjkladq9jlx-gmp-with-cxx-6.2.1/lib:/nix/store/kal2vyxj49n0sfmf635h304hp96d81ia-cups-2.4.1-lib/lib:/nix/store/9bvfvaahj8cxij9gb8n9scz9nqah1phg-gtk+3-3.24.33/lib:/nix/store/m7wc8hf24hymhm89k2hc00nwl730dphv-pcre-8.45/lib'
+export CMAKE_LIBRARY_PATH
+CMAKE_PREFIX_PATH='/nix/store/6d4bp009bcmz5afl9n7w7niycqi3m0rm-patchelf-0.14.5:/nix/store/4ybkncn05qbhgbdxg9sxdgpm1jpdx76w-gcc-wrapper-10.3.0:/nix/store/c4k3fcsp5cqg9v0rpac9qbqmbkm6a7pk-binutils-wrapper-2.35.2:/nix/store/8blq2fy6y9x2ffcgr052f0abakammw0k-flutter-2.13.0-0.1.pre:/nix/store/jybckv2y9wqjkv0p6y0j4p156lvblnq9-openjdk-11.0.12+7:/nix/store/i8l1f18ak16jj5ar464m3myxg4hk2swa-hook:/nix/store/12msvv6k9rf9ywjpzcj502y0azsgmhp1-platform-tools-31.0.3:/nix/store/2k141yqyyvm6rh3y6ssvcv3raw6w29d8-dart-2.17.0-266.1.beta:/nix/store/f15fzjp3g5av46d9v844nj55w60zvrzd-gitlint-0.17.0:/nix/store/wmyfippxf9sr358nvnw2l8aj35nmwx2s-python3.9-arrow-1.2.2:/nix/store/7m68x9rdv1fj8i40p7h83wcl8wbmcrff-python3.9-python-dateutil-2.8.2:/nix/store/r6j9x43wcvp79472y4kv93w23s94apy4-python3.9-six-1.16.0:/nix/store/bvzpppawf2naqv3qhxqv66jxaq3iaxyj-python3-3.9.11:/nix/store/s5jwgr4qci2r1rxnylhl33qhg4qmaa20-python3.9-click-8.0.4:/nix/store/dx5grbhnlja2nhm3chszxxxmakgbqa1w-python3.9-sh-1.14.2:/nix/store/mncnjdqi1vmsfag6li4cvdp72gnxmmlw-jq-1.6-dev:/nix/store/q6ga19qfb3bk3clqan8k22jnnh8m32n5-jq-1.6-bin:/nix/store/vdyarq02kn92wvljax1m1gd092ryfli7-jq-1.6-lib:/nix/store/y1ilfhl51jr1m8y8dn2pl07703ppcadn-ripgrep-13.0.0:/nix/store/wqj9imqj9in8fmxb31yq331sshv3d001-atk-2.36.0-dev:/nix/store/ay2530157fl2cmddbfhn232ay7q5smkh-glib-2.72.0-dev:/nix/store/ab2kkxrkwiliik3hi19r52m3b5lzwmpf-zlib-1.2.12-dev:/nix/store/j5jxw3iy7bbz4a57fh9g2xm2gxmyal8h-zlib-1.2.12:/nix/store/arn7xxsxjfg04mpmdyr9yh23rbjpqrg2-libffi-3.4.2-dev:/nix/store/zf2p161nx09fkd36g79b0xv7srcc1av1-libffi-3.4.2:/nix/store/1ynaiiirnxqn8s62haws8i1b46b5v62j-gettext-0.21:/nix/store/3idrdw9wm55dapgfy9dqicpsfnl4zw08-glibc-iconv-2.34:/nix/store/xl4fcwa76r0xy59dlhjvvj7h0nl0ix84-glib-2.72.0-bin:/nix/store/3ma88r781fvsjiakwyfh95mzy7k19jac-glib-2.72.0:/nix/store/nar7gsyrshxv579gz0026wk7b2ysraac-atk-2.36.0:/nix/store/j5brj48yd6fza2r3rdzzi9bni915v1ar-cairo-1.16.0-dev:/nix/store/1xghq8cvp3ikrj1xxadp65v3xrgp9m5a-fontconfig-2.13.94-dev:/nix/store/naxbqvpb0vkbzbp6si49fris5q38bdx2-freetype-2.11.1-dev:/nix/store/mr4p6sb833mgxlzwknmlhgfgz36y66sa-bzip2-1.0.6.0.2-dev:/nix/store/9hnz235608afb1z943sh3fd21ngxa7ra-bzip2-1.0.6.0.2-bin:/nix/store/vgw0mw7s490428lzgswl1cxj4xmlf5gn-bzip2-1.0.6.0.2:/nix/store/q5ksqnnkrfpraifgyrzas68lpjymm8kz-libpng-apng-1.6.37-dev:/nix/store/hyh1whmci39mv1hd6gr8nnhxva0c2rvm-libpng-apng-1.6.37:/nix/store/9kpdwg8rjdizjkqbf6jj96w2jmcfhcad-freetype-2.11.1:/nix/store/r4aknngzmydzd6dql0ys0lj03cvmcyfk-fontconfig-2.13.94-bin:/nix/store/zcjja5yd97dgnnh3qwanbsra8xsavcgw-fontconfig-2.13.94-lib:/nix/store/36z9b8dzzmbs0xl4sgs9immm7yidswzc-expat-2.4.7-dev:/nix/store/sw3dj5k1sas1jckb750z3rd9ay8pxq2h-expat-2.4.7:/nix/store/y5j645511d08hfzv0924nyhjqcin50kc-pixman-0.38.4:/nix/store/ysr42a1mzvj7na91pclfkscjcbyg7s4l-libXext-1.3.4-dev:/nix/store/mj3qh7prl1zdhh0kaw83n3gin0haj31r-xorgproto-2021.5:/nix/store/hbfs1j0w5d5brkkbg55d3xnybq1vqh6x-libXau-1.0.9-dev:/nix/store/b38zsh4qgfj60fjlpg6m9v29bcp09abk-libXau-1.0.9:/nix/store/fmbay7w2i0qg57jcdzij3v0lzr4gpcyk-libXext-1.3.4:/nix/store/bzvqvcad70dhhsvmxig3w80n94k2dm07-libXrender-0.9.10-dev:/nix/store/a2s8wi9lghg0ir5fckb1b1p69dwa9xva-libX11-1.7.2-dev:/nix/store/0bi9s80hzrm6isch4z6jkks09s8qb75r-libxcb-1.14-dev:/nix/store/3jch9iknmlz6r3m2fhhnvaqryzlh3zq4-libxcb-1.14:/nix/store/0np4qysvv5v05w49bs3ii123gckd4n0b-libX11-1.7.2:/nix/store/cs3m5r3f7x6ghf9xwgnmg1bzb12lqi19-libXrender-0.9.10:/nix/store/jb1jjhk53nrzbm57k18v0zm1w710rgl9-xcb-util-0.4.0-dev:/nix/store/cqhhah8c6rgms9wmxr9pa1wghh2smki3-xcb-util-0.4.0:/nix/store/kf1dv3n0g4sq2fgs7s3zhvhx3gwj047d-libGL-1.4.0-dev:/nix/store/q796xg0x515ajdly44iqdvacxnprj6qx-libGL-1.4.0:/nix/store/hrl51nkr7dszlwcs29wmyxq0jsqlaszn-libglvnd-1.4.0:/nix/store/kmld4kwf5mlb5n45rs593cnbqs2a1z6v-libglvnd-1.4.0-dev:/nix/store/jr22pv60hyl16n9fqsbjsqyq0rknjphj-cairo-1.16.0:/nix/store/58rj9srjk7m4hamw7jlf6i4vlvgv1mv6-clang-wrapper-11.1.0:/nix/store/5nhxhpqsd2wzzlcdkj61rspvxxmnqp2k-binutils-wrapper-2.35.2:/nix/store/jlqvmjzwpxqfghhn1k3kc07ssga2zm0f-cmake-3.22.3:/nix/store/mgdicybndan57zsq6xv9g01zsrds8nqa-libepoxy-1.5.9-dev:/nix/store/s9lnvpdcphaxkvlm97sd18bcsxghjgq8-libepoxy-1.5.9:/nix/store/pyxk0i29z4lhif5ys2zplf9rj2mkz13m-gdk-pixbuf-2.42.8-dev:/nix/store/2h963ndrnb0bik6bfh1krnf8a3m65sjh-libtiff-4.3.0-dev:/nix/store/xf7pp7h5s90i06a7g2fbdv4cqzyblm8k-libjpeg-turbo-2.1.3-dev:/nix/store/hj59ddxmjx7f41qwzwkbigrfyxzyb4ci-libjpeg-turbo-2.1.3-bin:/nix/store/3jcj0v2a0pjfi3ydscabrv532dsg43kf-libjpeg-turbo-2.1.3:/nix/store/78l2dgfzx7nl9rhmv94xr6xhci68rm3c-xz-5.2.5-dev:/nix/store/74vm0qblviq2rjjyhb26n017wzam1c9b-xz-5.2.5-bin:/nix/store/xmhqvwkhmvc6grldj5vq43ffsahskfq0-xz-5.2.5:/nix/store/9lrz8brsphinnzyg3ws6gfkbxpivr0n5-libtiff-4.3.0-bin:/nix/store/nl0km2rshc71svq137kx2bv2fdjmqv56-libtiff-4.3.0:/nix/store/mg7gw8a5lmhqc34lbw2n2kk4vj42pwwy-gdk-pixbuf-2.42.8:/nix/store/hzwxfpp23dhl3w8bi3mg2dv3czaifhmk-gtk+3-3.24.33-dev:/nix/store/38g3xydr2nyp2cydaih9x48w2jim1mrc-at-spi2-atk-2.38.0:/nix/store/03y73n3p1h1ac9605ghswfqyr31pqzcn-fribidi-1.0.11:/nix/store/chywfp3sbcaglnj3q1fh7rk2krgim4kx-gsettings-desktop-schemas-42.0:/nix/store/z61nfm16mag6xkyvkdg4jx288m7pgdc3-libICE-1.0.10-dev:/nix/store/hs258jqx4blnk6b8zncy8k0y6l2fqkl3-libICE-1.0.10:/nix/store/jy8h3cz74jxw9i3h3ja0mc0dwdxw5zja-libSM-1.2.3-dev:/nix/store/n7pzh8k7h5axpiqp0nvn49df4k5qqz3l-libSM-1.2.3:/nix/store/67w1mz9mac5a58zr0sm8spnbl9vfl1la-libXcomposite-0.4.5-dev:/nix/store/39n7g8mlvij2iws9gfd23w9v4pz96hsz-libXfixes-6.0.0-dev:/nix/store/dvch1l6v4gczrsgb01y3p2lpgsw36aa4-libXfixes-6.0.0:/nix/store/x6332d0bxzbkscshyri8z7if4j8lrz0d-libXcomposite-0.4.5:/nix/store/gcbqi8f5w23rm2n9pm4m8pgg9cij10ci-libXcursor-1.2.0-dev:/nix/store/jg8q74faxp8xbqw5dcdw7i63h9mjkjgz-libXcursor-1.2.0:/nix/store/xh0d5220ig5vil572lsyrivm97limshv-libXi-1.8-dev:/nix/store/8r67k5yn6ic2vmj5dq0d0hm4lc2br0vj-libXi-1.8:/nix/store/1qi9nj8ash2mwcf7pjwdancz6vscc3p9-libXrandr-1.5.2-dev:/nix/store/j3hqqyqpl6zwp3dcrc6xrvdqi6p776gl-libXrandr-1.5.2:/nix/store/2iakkaflzzp3fg7c1hh09i4bl96fhsdh-pango-1.50.6-dev:/nix/store/fr8s7935ba0m8f5sw72cs4sgi8lh70f4-harfbuzz-3.3.2-dev:/nix/store/dqhrpw13q9wss7fsb20yj3c9xrf4rg8i-graphite2-1.3.14:/nix/store/ms1f1l22i6x28bc865rn9mn5drgagv04-harfbuzz-3.3.2:/nix/store/i1h792658cvwz9bfhd47zmc948j3r78m-libXft-2.3.4-dev:/nix/store/1hyvc28l0nc25jxp0yfyrdmpqla2vx3d-libXft-2.3.4:/nix/store/9wsylssmyb6w9bwd2wmzpzhj85llvrld-pango-1.50.6-bin:/nix/store/n9h110ffps25rdkkim5k802p3p5w476m-pango-1.50.6:/nix/store/glgkbz8g8719bby4sx28p34nk1dwyr8b-wayland-1.20.0-dev:/nix/store/ykk7ngn81vhihs5gvz3g6xnimyzih8da-wayland-1.20.0-bin:/nix/store/dvv86s6ipnm6hp8fhnh2smkal4q95p45-wayland-1.20.0:/nix/store/nrhjz3m3wmnay297z456mpp5jfjh6a49-wayland-protocols-1.25:/nix/store/0m1wqsbiry229gwczprwppb7p5pzni9c-libXinerama-1.1.4-dev:/nix/store/fqfk1r89lavcagxg15a8jvq63l00snsf-libXinerama-1.1.4:/nix/store/d57prf5almy1qnj5lr1biswh6fydb620-cups-2.4.1-dev:/nix/store/wgclqchs4pqgkn8fabb9smhz3nwhm2nh-gmp-with-cxx-6.2.1-dev:/nix/store/nmk2zbdxsmiinqxqxzv9cfjkladq9jlx-gmp-with-cxx-6.2.1:/nix/store/kal2vyxj49n0sfmf635h304hp96d81ia-cups-2.4.1-lib:/nix/store/fxbxcv4swqp7rjv39bq6wknyg51lyzq9-cups-2.4.1:/nix/store/9bvfvaahj8cxij9gb8n9scz9nqah1phg-gtk+3-3.24.33:/nix/store/ix08ss2s3shjya9cq7jmj1czwglfz366-ninja-1.10.2:/nix/store/s2b221nhz0h7i7ndcp19d4yn5ydda4x4-pcre-8.45-dev:/nix/store/4wqmz2ayiibvkc36dc91kdgmj4l02bdh-pcre-8.45-bin:/nix/store/m7wc8hf24hymhm89k2hc00nwl730dphv-pcre-8.45:/nix/store/l8k4yxyyg2vym5vi8mxzmzpabcwz444p-pkg-config-wrapper-0.29.2:/nix/store/x8l8s0zzmzg7ydwzvndn81ir33z89gn6-compiler-rt-libc-11.1.0-dev:/nix/store/r9zfl37l5dsr8kfypian6w1vamcdngva-compiler-rt-libc-11.1.0'
+export CMAKE_PREFIX_PATH
+CONFIG_SHELL='/nix/store/30j23057fqnnc1p4jqmq73p0gxgn0frq-bash-5.1-p16/bin/bash'
+export CONFIG_SHELL
+CPATH='/nix/store/a2s8wi9lghg0ir5fckb1b1p69dwa9xva-libX11-1.7.2-dev/include:/nix/store/mj3qh7prl1zdhh0kaw83n3gin0haj31r-xorgproto-2021.5/include'
+export CPATH
+CXX='g++'
+export CXX
+CXX_FOR_TARGET='clang++'
+export CXX_FOR_TARGET
+DETERMINISTIC_BUILD='1'
+export DETERMINISTIC_BUILD
+EPOCHREALTIME='1651232779.558632'
+EPOCHSECONDS='1651232779'
+GDK_PIXBUF_MODULE_FILE='/nix/store/mg7gw8a5lmhqc34lbw2n2kk4vj42pwwy-gdk-pixbuf-2.42.8/lib/gdk-pixbuf-2.0/2.10.0/loaders.cache'
+export GDK_PIXBUF_MODULE_FILE
+GETTEXTDATADIRS='/nix/store/1ynaiiirnxqn8s62haws8i1b46b5v62j-gettext-0.21/share/gettext:/nix/store/3ma88r781fvsjiakwyfh95mzy7k19jac-glib-2.72.0/share/gettext:/nix/store/9bvfvaahj8cxij9gb8n9scz9nqah1phg-gtk+3-3.24.33/share/gettext'
+export GETTEXTDATADIRS
+GSETTINGS_SCHEMAS_PATH='/nix/store/chywfp3sbcaglnj3q1fh7rk2krgim4kx-gsettings-desktop-schemas-42.0/share/gsettings-schemas/gsettings-desktop-schemas-42.0:/nix/store/9bvfvaahj8cxij9gb8n9scz9nqah1phg-gtk+3-3.24.33/share/gsettings-schemas/gtk+3-3.24.33'
+export GSETTINGS_SCHEMAS_PATH
+HOSTTYPE='x86_64'
+HOST_PATH='/nix/store/8blq2fy6y9x2ffcgr052f0abakammw0k-flutter-2.13.0-0.1.pre/bin:/nix/store/jybckv2y9wqjkv0p6y0j4p156lvblnq9-openjdk-11.0.12+7/bin:/nix/store/12msvv6k9rf9ywjpzcj502y0azsgmhp1-platform-tools-31.0.3/bin:/nix/store/2k141yqyyvm6rh3y6ssvcv3raw6w29d8-dart-2.17.0-266.1.beta/bin:/nix/store/f15fzjp3g5av46d9v844nj55w60zvrzd-gitlint-0.17.0/bin:/nix/store/bvzpppawf2naqv3qhxqv66jxaq3iaxyj-python3-3.9.11/bin:/nix/store/q6ga19qfb3bk3clqan8k22jnnh8m32n5-jq-1.6-bin/bin:/nix/store/y1ilfhl51jr1m8y8dn2pl07703ppcadn-ripgrep-13.0.0/bin:/nix/store/ay2530157fl2cmddbfhn232ay7q5smkh-glib-2.72.0-dev/bin:/nix/store/1ynaiiirnxqn8s62haws8i1b46b5v62j-gettext-0.21/bin:/nix/store/xl4fcwa76r0xy59dlhjvvj7h0nl0ix84-glib-2.72.0-bin/bin:/nix/store/j5brj48yd6fza2r3rdzzi9bni915v1ar-cairo-1.16.0-dev/bin:/nix/store/naxbqvpb0vkbzbp6si49fris5q38bdx2-freetype-2.11.1-dev/bin:/nix/store/9hnz235608afb1z943sh3fd21ngxa7ra-bzip2-1.0.6.0.2-bin/bin:/nix/store/q5ksqnnkrfpraifgyrzas68lpjymm8kz-libpng-apng-1.6.37-dev/bin:/nix/store/r4aknngzmydzd6dql0ys0lj03cvmcyfk-fontconfig-2.13.94-bin/bin:/nix/store/36z9b8dzzmbs0xl4sgs9immm7yidswzc-expat-2.4.7-dev/bin:/nix/store/58rj9srjk7m4hamw7jlf6i4vlvgv1mv6-clang-wrapper-11.1.0/bin:/nix/store/5nhxhpqsd2wzzlcdkj61rspvxxmnqp2k-binutils-wrapper-2.35.2/bin:/nix/store/jlqvmjzwpxqfghhn1k3kc07ssga2zm0f-cmake-3.22.3/bin:/nix/store/pyxk0i29z4lhif5ys2zplf9rj2mkz13m-gdk-pixbuf-2.42.8-dev/bin:/nix/store/hj59ddxmjx7f41qwzwkbigrfyxzyb4ci-libjpeg-turbo-2.1.3-bin/bin:/nix/store/74vm0qblviq2rjjyhb26n017wzam1c9b-xz-5.2.5-bin/bin:/nix/store/9lrz8brsphinnzyg3ws6gfkbxpivr0n5-libtiff-4.3.0-bin/bin:/nix/store/mg7gw8a5lmhqc34lbw2n2kk4vj42pwwy-gdk-pixbuf-2.42.8/bin:/nix/store/hzwxfpp23dhl3w8bi3mg2dv3czaifhmk-gtk+3-3.24.33-dev/bin:/nix/store/03y73n3p1h1ac9605ghswfqyr31pqzcn-fribidi-1.0.11/bin:/nix/store/fr8s7935ba0m8f5sw72cs4sgi8lh70f4-harfbuzz-3.3.2-dev/bin:/nix/store/dqhrpw13q9wss7fsb20yj3c9xrf4rg8i-graphite2-1.3.14/bin:/nix/store/9wsylssmyb6w9bwd2wmzpzhj85llvrld-pango-1.50.6-bin/bin:/nix/store/ykk7ngn81vhihs5gvz3g6xnimyzih8da-wayland-1.20.0-bin/bin:/nix/store/d57prf5almy1qnj5lr1biswh6fydb620-cups-2.4.1-dev/bin:/nix/store/fxbxcv4swqp7rjv39bq6wknyg51lyzq9-cups-2.4.1/bin:/nix/store/9bvfvaahj8cxij9gb8n9scz9nqah1phg-gtk+3-3.24.33/bin:/nix/store/ix08ss2s3shjya9cq7jmj1czwglfz366-ninja-1.10.2/bin:/nix/store/s2b221nhz0h7i7ndcp19d4yn5ydda4x4-pcre-8.45-dev/bin:/nix/store/4wqmz2ayiibvkc36dc91kdgmj4l02bdh-pcre-8.45-bin/bin:/nix/store/l8k4yxyyg2vym5vi8mxzmzpabcwz444p-pkg-config-wrapper-0.29.2/bin:/nix/store/mi38zzxcylfc1jwnbbjyln959k1yjl9b-coreutils-9.0/bin:/nix/store/g2ax8hr2vcv74ymdi9i0z898zgwv5qck-findutils-4.9.0/bin:/nix/store/y01pvic7xsg3q05fynbh6mb1d4vqk5bf-diffutils-3.8/bin:/nix/store/4w3fd4s7l967bdplcqn74bf3iq45h4f8-gnused-4.8/bin:/nix/store/pa1hxz0q46giv9zw1bi4205hgzkjnz17-gnugrep-3.7/bin:/nix/store/8cm5s7jjqh2r16bx36shsizpm49mq9hk-gawk-5.1.1/bin:/nix/store/82z93m4mv563fj3m2j9d61cabvidx703-gnutar-1.34/bin:/nix/store/fsfnkwpydb6pb0sdri12fpiynjprczyq-gzip-1.12/bin:/nix/store/9hnz235608afb1z943sh3fd21ngxa7ra-bzip2-1.0.6.0.2-bin/bin:/nix/store/laascnf607s0p98q6n1kk4r0r9922c4l-gnumake-4.3/bin:/nix/store/30j23057fqnnc1p4jqmq73p0gxgn0frq-bash-5.1-p16/bin:/nix/store/8xlgg9jl10gf1mv5mx459wr7x1wpnsnq-patch-2.7.6/bin:/nix/store/74vm0qblviq2rjjyhb26n017wzam1c9b-xz-5.2.5-bin/bin'
+export HOST_PATH
+IFS='
+'
+IN_NIX_SHELL='impure'
+export IN_NIX_SHELL
+JAVA_HOME='/nix/store/jybckv2y9wqjkv0p6y0j4p156lvblnq9-openjdk-11.0.12+7'
+export JAVA_HOME
+LD='ld'
+export LD
+LD_FOR_TARGET='ld'
+export LD_FOR_TARGET
+LD_LIBRARY_PATH='/nix/store/nar7gsyrshxv579gz0026wk7b2ysraac-atk-2.36.0/lib:/nix/store/jr22pv60hyl16n9fqsbjsqyq0rknjphj-cairo-1.16.0/lib:/nix/store/s9lnvpdcphaxkvlm97sd18bcsxghjgq8-libepoxy-1.5.9/lib:/nix/store/mg7gw8a5lmhqc34lbw2n2kk4vj42pwwy-gdk-pixbuf-2.42.8/lib:/nix/store/3ma88r781fvsjiakwyfh95mzy7k19jac-glib-2.72.0/lib:/nix/store/9bvfvaahj8cxij9gb8n9scz9nqah1phg-gtk+3-3.24.33/lib:/nix/store/ms1f1l22i6x28bc865rn9mn5drgagv04-harfbuzz-3.3.2/lib:/nix/store/n9h110ffps25rdkkim5k802p3p5w476m-pango-1.50.6/lib'
+export LD_LIBRARY_PATH
+LINENO='73'
+MACHTYPE='x86_64-pc-linux-gnu'
+NIX_BINTOOLS='/nix/store/c4k3fcsp5cqg9v0rpac9qbqmbkm6a7pk-binutils-wrapper-2.35.2'
+export NIX_BINTOOLS
+NIX_BINTOOLS_FOR_TARGET='/nix/store/5nhxhpqsd2wzzlcdkj61rspvxxmnqp2k-binutils-wrapper-2.35.2'
+export NIX_BINTOOLS_FOR_TARGET
+NIX_BINTOOLS_WRAPPER_TARGET_HOST_x86_64_unknown_linux_gnu='1'
+export NIX_BINTOOLS_WRAPPER_TARGET_HOST_x86_64_unknown_linux_gnu
+NIX_BINTOOLS_WRAPPER_TARGET_TARGET_x86_64_unknown_linux_gnu='1'
+export NIX_BINTOOLS_WRAPPER_TARGET_TARGET_x86_64_unknown_linux_gnu
+NIX_BUILD_CORES='8'
+export NIX_BUILD_CORES
+NIX_CC='/nix/store/4ybkncn05qbhgbdxg9sxdgpm1jpdx76w-gcc-wrapper-10.3.0'
+export NIX_CC
+NIX_CC_FOR_TARGET='/nix/store/58rj9srjk7m4hamw7jlf6i4vlvgv1mv6-clang-wrapper-11.1.0'
+export NIX_CC_FOR_TARGET
+NIX_CC_WRAPPER_TARGET_HOST_x86_64_unknown_linux_gnu='1'
+export NIX_CC_WRAPPER_TARGET_HOST_x86_64_unknown_linux_gnu
+NIX_CC_WRAPPER_TARGET_TARGET_x86_64_unknown_linux_gnu='1'
+export NIX_CC_WRAPPER_TARGET_TARGET_x86_64_unknown_linux_gnu
+NIX_CFLAGS_COMPILE=' -frandom-seed=4nf54nsz3n -isystem /nix/store/jybckv2y9wqjkv0p6y0j4p156lvblnq9-openjdk-11.0.12+7/include -isystem /nix/store/2k141yqyyvm6rh3y6ssvcv3raw6w29d8-dart-2.17.0-266.1.beta/include -isystem /nix/store/bvzpppawf2naqv3qhxqv66jxaq3iaxyj-python3-3.9.11/include -isystem /nix/store/mncnjdqi1vmsfag6li4cvdp72gnxmmlw-jq-1.6-dev/include -isystem /nix/store/wqj9imqj9in8fmxb31yq331sshv3d001-atk-2.36.0-dev/include -isystem /nix/store/ay2530157fl2cmddbfhn232ay7q5smkh-glib-2.72.0-dev/include -isystem /nix/store/ab2kkxrkwiliik3hi19r52m3b5lzwmpf-zlib-1.2.12-dev/include -isystem /nix/store/arn7xxsxjfg04mpmdyr9yh23rbjpqrg2-libffi-3.4.2-dev/include -isystem /nix/store/1ynaiiirnxqn8s62haws8i1b46b5v62j-gettext-0.21/include -isystem /nix/store/3idrdw9wm55dapgfy9dqicpsfnl4zw08-glibc-iconv-2.34/include -isystem /nix/store/j5brj48yd6fza2r3rdzzi9bni915v1ar-cairo-1.16.0-dev/include -isystem /nix/store/1xghq8cvp3ikrj1xxadp65v3xrgp9m5a-fontconfig-2.13.94-dev/include -isystem /nix/store/naxbqvpb0vkbzbp6si49fris5q38bdx2-freetype-2.11.1-dev/include -isystem /nix/store/mr4p6sb833mgxlzwknmlhgfgz36y66sa-bzip2-1.0.6.0.2-dev/include -isystem /nix/store/q5ksqnnkrfpraifgyrzas68lpjymm8kz-libpng-apng-1.6.37-dev/include -isystem /nix/store/36z9b8dzzmbs0xl4sgs9immm7yidswzc-expat-2.4.7-dev/include -isystem /nix/store/y5j645511d08hfzv0924nyhjqcin50kc-pixman-0.38.4/include -isystem /nix/store/ysr42a1mzvj7na91pclfkscjcbyg7s4l-libXext-1.3.4-dev/include -isystem /nix/store/mj3qh7prl1zdhh0kaw83n3gin0haj31r-xorgproto-2021.5/include -isystem /nix/store/hbfs1j0w5d5brkkbg55d3xnybq1vqh6x-libXau-1.0.9-dev/include -isystem /nix/store/bzvqvcad70dhhsvmxig3w80n94k2dm07-libXrender-0.9.10-dev/include -isystem /nix/store/a2s8wi9lghg0ir5fckb1b1p69dwa9xva-libX11-1.7.2-dev/include -isystem /nix/store/0bi9s80hzrm6isch4z6jkks09s8qb75r-libxcb-1.14-dev/include -isystem /nix/store/jb1jjhk53nrzbm57k18v0zm1w710rgl9-xcb-util-0.4.0-dev/include -isystem /nix/store/kf1dv3n0g4sq2fgs7s3zhvhx3gwj047d-libGL-1.4.0-dev/include -isystem /nix/store/kmld4kwf5mlb5n45rs593cnbqs2a1z6v-libglvnd-1.4.0-dev/include -isystem /nix/store/mgdicybndan57zsq6xv9g01zsrds8nqa-libepoxy-1.5.9-dev/include -isystem /nix/store/pyxk0i29z4lhif5ys2zplf9rj2mkz13m-gdk-pixbuf-2.42.8-dev/include -isystem /nix/store/2h963ndrnb0bik6bfh1krnf8a3m65sjh-libtiff-4.3.0-dev/include -isystem /nix/store/xf7pp7h5s90i06a7g2fbdv4cqzyblm8k-libjpeg-turbo-2.1.3-dev/include -isystem /nix/store/78l2dgfzx7nl9rhmv94xr6xhci68rm3c-xz-5.2.5-dev/include -isystem /nix/store/hzwxfpp23dhl3w8bi3mg2dv3czaifhmk-gtk+3-3.24.33-dev/include -isystem /nix/store/38g3xydr2nyp2cydaih9x48w2jim1mrc-at-spi2-atk-2.38.0/include -isystem /nix/store/03y73n3p1h1ac9605ghswfqyr31pqzcn-fribidi-1.0.11/include -isystem /nix/store/chywfp3sbcaglnj3q1fh7rk2krgim4kx-gsettings-desktop-schemas-42.0/include -isystem /nix/store/z61nfm16mag6xkyvkdg4jx288m7pgdc3-libICE-1.0.10-dev/include -isystem /nix/store/jy8h3cz74jxw9i3h3ja0mc0dwdxw5zja-libSM-1.2.3-dev/include -isystem /nix/store/67w1mz9mac5a58zr0sm8spnbl9vfl1la-libXcomposite-0.4.5-dev/include -isystem /nix/store/39n7g8mlvij2iws9gfd23w9v4pz96hsz-libXfixes-6.0.0-dev/include -isystem /nix/store/gcbqi8f5w23rm2n9pm4m8pgg9cij10ci-libXcursor-1.2.0-dev/include -isystem /nix/store/xh0d5220ig5vil572lsyrivm97limshv-libXi-1.8-dev/include -isystem /nix/store/1qi9nj8ash2mwcf7pjwdancz6vscc3p9-libXrandr-1.5.2-dev/include -isystem /nix/store/2iakkaflzzp3fg7c1hh09i4bl96fhsdh-pango-1.50.6-dev/include -isystem /nix/store/fr8s7935ba0m8f5sw72cs4sgi8lh70f4-harfbuzz-3.3.2-dev/include -isystem /nix/store/dqhrpw13q9wss7fsb20yj3c9xrf4rg8i-graphite2-1.3.14/include -isystem /nix/store/i1h792658cvwz9bfhd47zmc948j3r78m-libXft-2.3.4-dev/include -isystem /nix/store/glgkbz8g8719bby4sx28p34nk1dwyr8b-wayland-1.20.0-dev/include -isystem /nix/store/0m1wqsbiry229gwczprwppb7p5pzni9c-libXinerama-1.1.4-dev/include -isystem /nix/store/d57prf5almy1qnj5lr1biswh6fydb620-cups-2.4.1-dev/include -isystem /nix/store/wgclqchs4pqgkn8fabb9smhz3nwhm2nh-gmp-with-cxx-6.2.1-dev/include -isystem /nix/store/s2b221nhz0h7i7ndcp19d4yn5ydda4x4-pcre-8.45-dev/include -isystem /nix/store/x8l8s0zzmzg7ydwzvndn81ir33z89gn6-compiler-rt-libc-11.1.0-dev/include -isystem /nix/store/jybckv2y9wqjkv0p6y0j4p156lvblnq9-openjdk-11.0.12+7/include -isystem /nix/store/2k141yqyyvm6rh3y6ssvcv3raw6w29d8-dart-2.17.0-266.1.beta/include -isystem /nix/store/bvzpppawf2naqv3qhxqv66jxaq3iaxyj-python3-3.9.11/include -isystem /nix/store/mncnjdqi1vmsfag6li4cvdp72gnxmmlw-jq-1.6-dev/include -isystem /nix/store/wqj9imqj9in8fmxb31yq331sshv3d001-atk-2.36.0-dev/include -isystem /nix/store/ay2530157fl2cmddbfhn232ay7q5smkh-glib-2.72.0-dev/include -isystem /nix/store/ab2kkxrkwiliik3hi19r52m3b5lzwmpf-zlib-1.2.12-dev/include -isystem /nix/store/arn7xxsxjfg04mpmdyr9yh23rbjpqrg2-libffi-3.4.2-dev/include -isystem /nix/store/1ynaiiirnxqn8s62haws8i1b46b5v62j-gettext-0.21/include -isystem /nix/store/3idrdw9wm55dapgfy9dqicpsfnl4zw08-glibc-iconv-2.34/include -isystem /nix/store/j5brj48yd6fza2r3rdzzi9bni915v1ar-cairo-1.16.0-dev/include -isystem /nix/store/1xghq8cvp3ikrj1xxadp65v3xrgp9m5a-fontconfig-2.13.94-dev/include -isystem /nix/store/naxbqvpb0vkbzbp6si49fris5q38bdx2-freetype-2.11.1-dev/include -isystem /nix/store/mr4p6sb833mgxlzwknmlhgfgz36y66sa-bzip2-1.0.6.0.2-dev/include -isystem /nix/store/q5ksqnnkrfpraifgyrzas68lpjymm8kz-libpng-apng-1.6.37-dev/include -isystem /nix/store/36z9b8dzzmbs0xl4sgs9immm7yidswzc-expat-2.4.7-dev/include -isystem /nix/store/y5j645511d08hfzv0924nyhjqcin50kc-pixman-0.38.4/include -isystem /nix/store/ysr42a1mzvj7na91pclfkscjcbyg7s4l-libXext-1.3.4-dev/include -isystem /nix/store/mj3qh7prl1zdhh0kaw83n3gin0haj31r-xorgproto-2021.5/include -isystem /nix/store/hbfs1j0w5d5brkkbg55d3xnybq1vqh6x-libXau-1.0.9-dev/include -isystem /nix/store/bzvqvcad70dhhsvmxig3w80n94k2dm07-libXrender-0.9.10-dev/include -isystem /nix/store/a2s8wi9lghg0ir5fckb1b1p69dwa9xva-libX11-1.7.2-dev/include -isystem /nix/store/0bi9s80hzrm6isch4z6jkks09s8qb75r-libxcb-1.14-dev/include -isystem /nix/store/jb1jjhk53nrzbm57k18v0zm1w710rgl9-xcb-util-0.4.0-dev/include -isystem /nix/store/kf1dv3n0g4sq2fgs7s3zhvhx3gwj047d-libGL-1.4.0-dev/include -isystem /nix/store/kmld4kwf5mlb5n45rs593cnbqs2a1z6v-libglvnd-1.4.0-dev/include -isystem /nix/store/mgdicybndan57zsq6xv9g01zsrds8nqa-libepoxy-1.5.9-dev/include -isystem /nix/store/pyxk0i29z4lhif5ys2zplf9rj2mkz13m-gdk-pixbuf-2.42.8-dev/include -isystem /nix/store/2h963ndrnb0bik6bfh1krnf8a3m65sjh-libtiff-4.3.0-dev/include -isystem /nix/store/xf7pp7h5s90i06a7g2fbdv4cqzyblm8k-libjpeg-turbo-2.1.3-dev/include -isystem /nix/store/78l2dgfzx7nl9rhmv94xr6xhci68rm3c-xz-5.2.5-dev/include -isystem /nix/store/hzwxfpp23dhl3w8bi3mg2dv3czaifhmk-gtk+3-3.24.33-dev/include -isystem /nix/store/38g3xydr2nyp2cydaih9x48w2jim1mrc-at-spi2-atk-2.38.0/include -isystem /nix/store/03y73n3p1h1ac9605ghswfqyr31pqzcn-fribidi-1.0.11/include -isystem /nix/store/chywfp3sbcaglnj3q1fh7rk2krgim4kx-gsettings-desktop-schemas-42.0/include -isystem /nix/store/z61nfm16mag6xkyvkdg4jx288m7pgdc3-libICE-1.0.10-dev/include -isystem /nix/store/jy8h3cz74jxw9i3h3ja0mc0dwdxw5zja-libSM-1.2.3-dev/include -isystem /nix/store/67w1mz9mac5a58zr0sm8spnbl9vfl1la-libXcomposite-0.4.5-dev/include -isystem /nix/store/39n7g8mlvij2iws9gfd23w9v4pz96hsz-libXfixes-6.0.0-dev/include -isystem /nix/store/gcbqi8f5w23rm2n9pm4m8pgg9cij10ci-libXcursor-1.2.0-dev/include -isystem /nix/store/xh0d5220ig5vil572lsyrivm97limshv-libXi-1.8-dev/include -isystem /nix/store/1qi9nj8ash2mwcf7pjwdancz6vscc3p9-libXrandr-1.5.2-dev/include -isystem /nix/store/2iakkaflzzp3fg7c1hh09i4bl96fhsdh-pango-1.50.6-dev/include -isystem /nix/store/fr8s7935ba0m8f5sw72cs4sgi8lh70f4-harfbuzz-3.3.2-dev/include -isystem /nix/store/dqhrpw13q9wss7fsb20yj3c9xrf4rg8i-graphite2-1.3.14/include -isystem /nix/store/i1h792658cvwz9bfhd47zmc948j3r78m-libXft-2.3.4-dev/include -isystem /nix/store/glgkbz8g8719bby4sx28p34nk1dwyr8b-wayland-1.20.0-dev/include -isystem /nix/store/0m1wqsbiry229gwczprwppb7p5pzni9c-libXinerama-1.1.4-dev/include -isystem /nix/store/d57prf5almy1qnj5lr1biswh6fydb620-cups-2.4.1-dev/include -isystem /nix/store/wgclqchs4pqgkn8fabb9smhz3nwhm2nh-gmp-with-cxx-6.2.1-dev/include -isystem /nix/store/s2b221nhz0h7i7ndcp19d4yn5ydda4x4-pcre-8.45-dev/include -isystem /nix/store/x8l8s0zzmzg7ydwzvndn81ir33z89gn6-compiler-rt-libc-11.1.0-dev/include'
+export NIX_CFLAGS_COMPILE
+NIX_CFLAGS_COMPILE_FOR_TARGET=' -isystem /nix/store/jybckv2y9wqjkv0p6y0j4p156lvblnq9-openjdk-11.0.12+7/include -isystem /nix/store/2k141yqyyvm6rh3y6ssvcv3raw6w29d8-dart-2.17.0-266.1.beta/include -isystem /nix/store/bvzpppawf2naqv3qhxqv66jxaq3iaxyj-python3-3.9.11/include -isystem /nix/store/mncnjdqi1vmsfag6li4cvdp72gnxmmlw-jq-1.6-dev/include -isystem /nix/store/wqj9imqj9in8fmxb31yq331sshv3d001-atk-2.36.0-dev/include -isystem /nix/store/ay2530157fl2cmddbfhn232ay7q5smkh-glib-2.72.0-dev/include -isystem /nix/store/ab2kkxrkwiliik3hi19r52m3b5lzwmpf-zlib-1.2.12-dev/include -isystem /nix/store/arn7xxsxjfg04mpmdyr9yh23rbjpqrg2-libffi-3.4.2-dev/include -isystem /nix/store/1ynaiiirnxqn8s62haws8i1b46b5v62j-gettext-0.21/include -isystem /nix/store/3idrdw9wm55dapgfy9dqicpsfnl4zw08-glibc-iconv-2.34/include -isystem /nix/store/j5brj48yd6fza2r3rdzzi9bni915v1ar-cairo-1.16.0-dev/include -isystem /nix/store/1xghq8cvp3ikrj1xxadp65v3xrgp9m5a-fontconfig-2.13.94-dev/include -isystem /nix/store/naxbqvpb0vkbzbp6si49fris5q38bdx2-freetype-2.11.1-dev/include -isystem /nix/store/mr4p6sb833mgxlzwknmlhgfgz36y66sa-bzip2-1.0.6.0.2-dev/include -isystem /nix/store/q5ksqnnkrfpraifgyrzas68lpjymm8kz-libpng-apng-1.6.37-dev/include -isystem /nix/store/36z9b8dzzmbs0xl4sgs9immm7yidswzc-expat-2.4.7-dev/include -isystem /nix/store/y5j645511d08hfzv0924nyhjqcin50kc-pixman-0.38.4/include -isystem /nix/store/ysr42a1mzvj7na91pclfkscjcbyg7s4l-libXext-1.3.4-dev/include -isystem /nix/store/mj3qh7prl1zdhh0kaw83n3gin0haj31r-xorgproto-2021.5/include -isystem /nix/store/hbfs1j0w5d5brkkbg55d3xnybq1vqh6x-libXau-1.0.9-dev/include -isystem /nix/store/bzvqvcad70dhhsvmxig3w80n94k2dm07-libXrender-0.9.10-dev/include -isystem /nix/store/a2s8wi9lghg0ir5fckb1b1p69dwa9xva-libX11-1.7.2-dev/include -isystem /nix/store/0bi9s80hzrm6isch4z6jkks09s8qb75r-libxcb-1.14-dev/include -isystem /nix/store/jb1jjhk53nrzbm57k18v0zm1w710rgl9-xcb-util-0.4.0-dev/include -isystem /nix/store/kf1dv3n0g4sq2fgs7s3zhvhx3gwj047d-libGL-1.4.0-dev/include -isystem /nix/store/kmld4kwf5mlb5n45rs593cnbqs2a1z6v-libglvnd-1.4.0-dev/include -isystem /nix/store/mgdicybndan57zsq6xv9g01zsrds8nqa-libepoxy-1.5.9-dev/include -isystem /nix/store/pyxk0i29z4lhif5ys2zplf9rj2mkz13m-gdk-pixbuf-2.42.8-dev/include -isystem /nix/store/2h963ndrnb0bik6bfh1krnf8a3m65sjh-libtiff-4.3.0-dev/include -isystem /nix/store/xf7pp7h5s90i06a7g2fbdv4cqzyblm8k-libjpeg-turbo-2.1.3-dev/include -isystem /nix/store/78l2dgfzx7nl9rhmv94xr6xhci68rm3c-xz-5.2.5-dev/include -isystem /nix/store/hzwxfpp23dhl3w8bi3mg2dv3czaifhmk-gtk+3-3.24.33-dev/include -isystem /nix/store/38g3xydr2nyp2cydaih9x48w2jim1mrc-at-spi2-atk-2.38.0/include -isystem /nix/store/03y73n3p1h1ac9605ghswfqyr31pqzcn-fribidi-1.0.11/include -isystem /nix/store/chywfp3sbcaglnj3q1fh7rk2krgim4kx-gsettings-desktop-schemas-42.0/include -isystem /nix/store/z61nfm16mag6xkyvkdg4jx288m7pgdc3-libICE-1.0.10-dev/include -isystem /nix/store/jy8h3cz74jxw9i3h3ja0mc0dwdxw5zja-libSM-1.2.3-dev/include -isystem /nix/store/67w1mz9mac5a58zr0sm8spnbl9vfl1la-libXcomposite-0.4.5-dev/include -isystem /nix/store/39n7g8mlvij2iws9gfd23w9v4pz96hsz-libXfixes-6.0.0-dev/include -isystem /nix/store/gcbqi8f5w23rm2n9pm4m8pgg9cij10ci-libXcursor-1.2.0-dev/include -isystem /nix/store/xh0d5220ig5vil572lsyrivm97limshv-libXi-1.8-dev/include -isystem /nix/store/1qi9nj8ash2mwcf7pjwdancz6vscc3p9-libXrandr-1.5.2-dev/include -isystem /nix/store/2iakkaflzzp3fg7c1hh09i4bl96fhsdh-pango-1.50.6-dev/include -isystem /nix/store/fr8s7935ba0m8f5sw72cs4sgi8lh70f4-harfbuzz-3.3.2-dev/include -isystem /nix/store/dqhrpw13q9wss7fsb20yj3c9xrf4rg8i-graphite2-1.3.14/include -isystem /nix/store/i1h792658cvwz9bfhd47zmc948j3r78m-libXft-2.3.4-dev/include -isystem /nix/store/glgkbz8g8719bby4sx28p34nk1dwyr8b-wayland-1.20.0-dev/include -isystem /nix/store/0m1wqsbiry229gwczprwppb7p5pzni9c-libXinerama-1.1.4-dev/include -isystem /nix/store/d57prf5almy1qnj5lr1biswh6fydb620-cups-2.4.1-dev/include -isystem /nix/store/wgclqchs4pqgkn8fabb9smhz3nwhm2nh-gmp-with-cxx-6.2.1-dev/include -isystem /nix/store/s2b221nhz0h7i7ndcp19d4yn5ydda4x4-pcre-8.45-dev/include -isystem /nix/store/x8l8s0zzmzg7ydwzvndn81ir33z89gn6-compiler-rt-libc-11.1.0-dev/include'
+export NIX_CFLAGS_COMPILE_FOR_TARGET
+NIX_ENFORCE_NO_NATIVE='1'
+export NIX_ENFORCE_NO_NATIVE
+NIX_HARDENING_ENABLE='fortify stackprotector pic strictoverflow format relro bindnow'
+export NIX_HARDENING_ENABLE
+NIX_INDENT_MAKE='1'
+export NIX_INDENT_MAKE
+NIX_LDFLAGS='-rpath /home/alexander/Development/Personal/Android/moxdns/outputs/out/lib64 -rpath /home/alexander/Development/Personal/Android/moxdns/outputs/out/lib -L/nix/store/2k141yqyyvm6rh3y6ssvcv3raw6w29d8-dart-2.17.0-266.1.beta/lib -L/nix/store/bvzpppawf2naqv3qhxqv66jxaq3iaxyj-python3-3.9.11/lib -L/nix/store/vdyarq02kn92wvljax1m1gd092ryfli7-jq-1.6-lib/lib -L/nix/store/j5jxw3iy7bbz4a57fh9g2xm2gxmyal8h-zlib-1.2.12/lib -L/nix/store/zf2p161nx09fkd36g79b0xv7srcc1av1-libffi-3.4.2/lib -L/nix/store/1ynaiiirnxqn8s62haws8i1b46b5v62j-gettext-0.21/lib -L/nix/store/3ma88r781fvsjiakwyfh95mzy7k19jac-glib-2.72.0/lib -L/nix/store/nar7gsyrshxv579gz0026wk7b2ysraac-atk-2.36.0/lib -L/nix/store/vgw0mw7s490428lzgswl1cxj4xmlf5gn-bzip2-1.0.6.0.2/lib -L/nix/store/hyh1whmci39mv1hd6gr8nnhxva0c2rvm-libpng-apng-1.6.37/lib -L/nix/store/9kpdwg8rjdizjkqbf6jj96w2jmcfhcad-freetype-2.11.1/lib -L/nix/store/zcjja5yd97dgnnh3qwanbsra8xsavcgw-fontconfig-2.13.94-lib/lib -L/nix/store/sw3dj5k1sas1jckb750z3rd9ay8pxq2h-expat-2.4.7/lib -L/nix/store/y5j645511d08hfzv0924nyhjqcin50kc-pixman-0.38.4/lib -L/nix/store/b38zsh4qgfj60fjlpg6m9v29bcp09abk-libXau-1.0.9/lib -L/nix/store/fmbay7w2i0qg57jcdzij3v0lzr4gpcyk-libXext-1.3.4/lib -L/nix/store/3jch9iknmlz6r3m2fhhnvaqryzlh3zq4-libxcb-1.14/lib -L/nix/store/0np4qysvv5v05w49bs3ii123gckd4n0b-libX11-1.7.2/lib -L/nix/store/cs3m5r3f7x6ghf9xwgnmg1bzb12lqi19-libXrender-0.9.10/lib -L/nix/store/cqhhah8c6rgms9wmxr9pa1wghh2smki3-xcb-util-0.4.0/lib -L/nix/store/q796xg0x515ajdly44iqdvacxnprj6qx-libGL-1.4.0/lib -L/nix/store/hrl51nkr7dszlwcs29wmyxq0jsqlaszn-libglvnd-1.4.0/lib -L/nix/store/jr22pv60hyl16n9fqsbjsqyq0rknjphj-cairo-1.16.0/lib -L/nix/store/s9lnvpdcphaxkvlm97sd18bcsxghjgq8-libepoxy-1.5.9/lib -L/nix/store/3jcj0v2a0pjfi3ydscabrv532dsg43kf-libjpeg-turbo-2.1.3/lib -L/nix/store/xmhqvwkhmvc6grldj5vq43ffsahskfq0-xz-5.2.5/lib -L/nix/store/nl0km2rshc71svq137kx2bv2fdjmqv56-libtiff-4.3.0/lib -L/nix/store/mg7gw8a5lmhqc34lbw2n2kk4vj42pwwy-gdk-pixbuf-2.42.8/lib -L/nix/store/38g3xydr2nyp2cydaih9x48w2jim1mrc-at-spi2-atk-2.38.0/lib -L/nix/store/03y73n3p1h1ac9605ghswfqyr31pqzcn-fribidi-1.0.11/lib -L/nix/store/hs258jqx4blnk6b8zncy8k0y6l2fqkl3-libICE-1.0.10/lib -L/nix/store/n7pzh8k7h5axpiqp0nvn49df4k5qqz3l-libSM-1.2.3/lib -L/nix/store/dvch1l6v4gczrsgb01y3p2lpgsw36aa4-libXfixes-6.0.0/lib -L/nix/store/x6332d0bxzbkscshyri8z7if4j8lrz0d-libXcomposite-0.4.5/lib -L/nix/store/jg8q74faxp8xbqw5dcdw7i63h9mjkjgz-libXcursor-1.2.0/lib -L/nix/store/8r67k5yn6ic2vmj5dq0d0hm4lc2br0vj-libXi-1.8/lib -L/nix/store/j3hqqyqpl6zwp3dcrc6xrvdqi6p776gl-libXrandr-1.5.2/lib -L/nix/store/dqhrpw13q9wss7fsb20yj3c9xrf4rg8i-graphite2-1.3.14/lib -L/nix/store/ms1f1l22i6x28bc865rn9mn5drgagv04-harfbuzz-3.3.2/lib -L/nix/store/1hyvc28l0nc25jxp0yfyrdmpqla2vx3d-libXft-2.3.4/lib -L/nix/store/n9h110ffps25rdkkim5k802p3p5w476m-pango-1.50.6/lib -L/nix/store/dvv86s6ipnm6hp8fhnh2smkal4q95p45-wayland-1.20.0/lib -L/nix/store/fqfk1r89lavcagxg15a8jvq63l00snsf-libXinerama-1.1.4/lib -L/nix/store/nmk2zbdxsmiinqxqxzv9cfjkladq9jlx-gmp-with-cxx-6.2.1/lib -L/nix/store/kal2vyxj49n0sfmf635h304hp96d81ia-cups-2.4.1-lib/lib -L/nix/store/9bvfvaahj8cxij9gb8n9scz9nqah1phg-gtk+3-3.24.33/lib -L/nix/store/m7wc8hf24hymhm89k2hc00nwl730dphv-pcre-8.45/lib -L/nix/store/2k141yqyyvm6rh3y6ssvcv3raw6w29d8-dart-2.17.0-266.1.beta/lib -L/nix/store/bvzpppawf2naqv3qhxqv66jxaq3iaxyj-python3-3.9.11/lib -L/nix/store/vdyarq02kn92wvljax1m1gd092ryfli7-jq-1.6-lib/lib -L/nix/store/j5jxw3iy7bbz4a57fh9g2xm2gxmyal8h-zlib-1.2.12/lib -L/nix/store/zf2p161nx09fkd36g79b0xv7srcc1av1-libffi-3.4.2/lib -L/nix/store/1ynaiiirnxqn8s62haws8i1b46b5v62j-gettext-0.21/lib -L/nix/store/3ma88r781fvsjiakwyfh95mzy7k19jac-glib-2.72.0/lib -L/nix/store/nar7gsyrshxv579gz0026wk7b2ysraac-atk-2.36.0/lib -L/nix/store/vgw0mw7s490428lzgswl1cxj4xmlf5gn-bzip2-1.0.6.0.2/lib -L/nix/store/hyh1whmci39mv1hd6gr8nnhxva0c2rvm-libpng-apng-1.6.37/lib -L/nix/store/9kpdwg8rjdizjkqbf6jj96w2jmcfhcad-freetype-2.11.1/lib -L/nix/store/zcjja5yd97dgnnh3qwanbsra8xsavcgw-fontconfig-2.13.94-lib/lib -L/nix/store/sw3dj5k1sas1jckb750z3rd9ay8pxq2h-expat-2.4.7/lib -L/nix/store/y5j645511d08hfzv0924nyhjqcin50kc-pixman-0.38.4/lib -L/nix/store/b38zsh4qgfj60fjlpg6m9v29bcp09abk-libXau-1.0.9/lib -L/nix/store/fmbay7w2i0qg57jcdzij3v0lzr4gpcyk-libXext-1.3.4/lib -L/nix/store/3jch9iknmlz6r3m2fhhnvaqryzlh3zq4-libxcb-1.14/lib -L/nix/store/0np4qysvv5v05w49bs3ii123gckd4n0b-libX11-1.7.2/lib -L/nix/store/cs3m5r3f7x6ghf9xwgnmg1bzb12lqi19-libXrender-0.9.10/lib -L/nix/store/cqhhah8c6rgms9wmxr9pa1wghh2smki3-xcb-util-0.4.0/lib -L/nix/store/q796xg0x515ajdly44iqdvacxnprj6qx-libGL-1.4.0/lib -L/nix/store/hrl51nkr7dszlwcs29wmyxq0jsqlaszn-libglvnd-1.4.0/lib -L/nix/store/jr22pv60hyl16n9fqsbjsqyq0rknjphj-cairo-1.16.0/lib -L/nix/store/s9lnvpdcphaxkvlm97sd18bcsxghjgq8-libepoxy-1.5.9/lib -L/nix/store/3jcj0v2a0pjfi3ydscabrv532dsg43kf-libjpeg-turbo-2.1.3/lib -L/nix/store/xmhqvwkhmvc6grldj5vq43ffsahskfq0-xz-5.2.5/lib -L/nix/store/nl0km2rshc71svq137kx2bv2fdjmqv56-libtiff-4.3.0/lib -L/nix/store/mg7gw8a5lmhqc34lbw2n2kk4vj42pwwy-gdk-pixbuf-2.42.8/lib -L/nix/store/38g3xydr2nyp2cydaih9x48w2jim1mrc-at-spi2-atk-2.38.0/lib -L/nix/store/03y73n3p1h1ac9605ghswfqyr31pqzcn-fribidi-1.0.11/lib -L/nix/store/hs258jqx4blnk6b8zncy8k0y6l2fqkl3-libICE-1.0.10/lib -L/nix/store/n7pzh8k7h5axpiqp0nvn49df4k5qqz3l-libSM-1.2.3/lib -L/nix/store/dvch1l6v4gczrsgb01y3p2lpgsw36aa4-libXfixes-6.0.0/lib -L/nix/store/x6332d0bxzbkscshyri8z7if4j8lrz0d-libXcomposite-0.4.5/lib -L/nix/store/jg8q74faxp8xbqw5dcdw7i63h9mjkjgz-libXcursor-1.2.0/lib -L/nix/store/8r67k5yn6ic2vmj5dq0d0hm4lc2br0vj-libXi-1.8/lib -L/nix/store/j3hqqyqpl6zwp3dcrc6xrvdqi6p776gl-libXrandr-1.5.2/lib -L/nix/store/dqhrpw13q9wss7fsb20yj3c9xrf4rg8i-graphite2-1.3.14/lib -L/nix/store/ms1f1l22i6x28bc865rn9mn5drgagv04-harfbuzz-3.3.2/lib -L/nix/store/1hyvc28l0nc25jxp0yfyrdmpqla2vx3d-libXft-2.3.4/lib -L/nix/store/n9h110ffps25rdkkim5k802p3p5w476m-pango-1.50.6/lib -L/nix/store/dvv86s6ipnm6hp8fhnh2smkal4q95p45-wayland-1.20.0/lib -L/nix/store/fqfk1r89lavcagxg15a8jvq63l00snsf-libXinerama-1.1.4/lib -L/nix/store/nmk2zbdxsmiinqxqxzv9cfjkladq9jlx-gmp-with-cxx-6.2.1/lib -L/nix/store/kal2vyxj49n0sfmf635h304hp96d81ia-cups-2.4.1-lib/lib -L/nix/store/9bvfvaahj8cxij9gb8n9scz9nqah1phg-gtk+3-3.24.33/lib -L/nix/store/m7wc8hf24hymhm89k2hc00nwl730dphv-pcre-8.45/lib'
+export NIX_LDFLAGS
+NIX_LDFLAGS_FOR_TARGET=' -L/nix/store/2k141yqyyvm6rh3y6ssvcv3raw6w29d8-dart-2.17.0-266.1.beta/lib -L/nix/store/bvzpppawf2naqv3qhxqv66jxaq3iaxyj-python3-3.9.11/lib -L/nix/store/vdyarq02kn92wvljax1m1gd092ryfli7-jq-1.6-lib/lib -L/nix/store/j5jxw3iy7bbz4a57fh9g2xm2gxmyal8h-zlib-1.2.12/lib -L/nix/store/zf2p161nx09fkd36g79b0xv7srcc1av1-libffi-3.4.2/lib -L/nix/store/1ynaiiirnxqn8s62haws8i1b46b5v62j-gettext-0.21/lib -L/nix/store/3ma88r781fvsjiakwyfh95mzy7k19jac-glib-2.72.0/lib -L/nix/store/nar7gsyrshxv579gz0026wk7b2ysraac-atk-2.36.0/lib -L/nix/store/vgw0mw7s490428lzgswl1cxj4xmlf5gn-bzip2-1.0.6.0.2/lib -L/nix/store/hyh1whmci39mv1hd6gr8nnhxva0c2rvm-libpng-apng-1.6.37/lib -L/nix/store/9kpdwg8rjdizjkqbf6jj96w2jmcfhcad-freetype-2.11.1/lib -L/nix/store/zcjja5yd97dgnnh3qwanbsra8xsavcgw-fontconfig-2.13.94-lib/lib -L/nix/store/sw3dj5k1sas1jckb750z3rd9ay8pxq2h-expat-2.4.7/lib -L/nix/store/y5j645511d08hfzv0924nyhjqcin50kc-pixman-0.38.4/lib -L/nix/store/b38zsh4qgfj60fjlpg6m9v29bcp09abk-libXau-1.0.9/lib -L/nix/store/fmbay7w2i0qg57jcdzij3v0lzr4gpcyk-libXext-1.3.4/lib -L/nix/store/3jch9iknmlz6r3m2fhhnvaqryzlh3zq4-libxcb-1.14/lib -L/nix/store/0np4qysvv5v05w49bs3ii123gckd4n0b-libX11-1.7.2/lib -L/nix/store/cs3m5r3f7x6ghf9xwgnmg1bzb12lqi19-libXrender-0.9.10/lib -L/nix/store/cqhhah8c6rgms9wmxr9pa1wghh2smki3-xcb-util-0.4.0/lib -L/nix/store/q796xg0x515ajdly44iqdvacxnprj6qx-libGL-1.4.0/lib -L/nix/store/hrl51nkr7dszlwcs29wmyxq0jsqlaszn-libglvnd-1.4.0/lib -L/nix/store/jr22pv60hyl16n9fqsbjsqyq0rknjphj-cairo-1.16.0/lib -L/nix/store/s9lnvpdcphaxkvlm97sd18bcsxghjgq8-libepoxy-1.5.9/lib -L/nix/store/3jcj0v2a0pjfi3ydscabrv532dsg43kf-libjpeg-turbo-2.1.3/lib -L/nix/store/xmhqvwkhmvc6grldj5vq43ffsahskfq0-xz-5.2.5/lib -L/nix/store/nl0km2rshc71svq137kx2bv2fdjmqv56-libtiff-4.3.0/lib -L/nix/store/mg7gw8a5lmhqc34lbw2n2kk4vj42pwwy-gdk-pixbuf-2.42.8/lib -L/nix/store/38g3xydr2nyp2cydaih9x48w2jim1mrc-at-spi2-atk-2.38.0/lib -L/nix/store/03y73n3p1h1ac9605ghswfqyr31pqzcn-fribidi-1.0.11/lib -L/nix/store/hs258jqx4blnk6b8zncy8k0y6l2fqkl3-libICE-1.0.10/lib -L/nix/store/n7pzh8k7h5axpiqp0nvn49df4k5qqz3l-libSM-1.2.3/lib -L/nix/store/dvch1l6v4gczrsgb01y3p2lpgsw36aa4-libXfixes-6.0.0/lib -L/nix/store/x6332d0bxzbkscshyri8z7if4j8lrz0d-libXcomposite-0.4.5/lib -L/nix/store/jg8q74faxp8xbqw5dcdw7i63h9mjkjgz-libXcursor-1.2.0/lib -L/nix/store/8r67k5yn6ic2vmj5dq0d0hm4lc2br0vj-libXi-1.8/lib -L/nix/store/j3hqqyqpl6zwp3dcrc6xrvdqi6p776gl-libXrandr-1.5.2/lib -L/nix/store/dqhrpw13q9wss7fsb20yj3c9xrf4rg8i-graphite2-1.3.14/lib -L/nix/store/ms1f1l22i6x28bc865rn9mn5drgagv04-harfbuzz-3.3.2/lib -L/nix/store/1hyvc28l0nc25jxp0yfyrdmpqla2vx3d-libXft-2.3.4/lib -L/nix/store/n9h110ffps25rdkkim5k802p3p5w476m-pango-1.50.6/lib -L/nix/store/dvv86s6ipnm6hp8fhnh2smkal4q95p45-wayland-1.20.0/lib -L/nix/store/fqfk1r89lavcagxg15a8jvq63l00snsf-libXinerama-1.1.4/lib -L/nix/store/nmk2zbdxsmiinqxqxzv9cfjkladq9jlx-gmp-with-cxx-6.2.1/lib -L/nix/store/kal2vyxj49n0sfmf635h304hp96d81ia-cups-2.4.1-lib/lib -L/nix/store/9bvfvaahj8cxij9gb8n9scz9nqah1phg-gtk+3-3.24.33/lib -L/nix/store/m7wc8hf24hymhm89k2hc00nwl730dphv-pcre-8.45/lib'
+export NIX_LDFLAGS_FOR_TARGET
+NIX_LIB64_IN_SELF_RPATH='1'
+NIX_NO_SELF_RPATH='1'
+NIX_PKG_CONFIG_WRAPPER_TARGET_TARGET_x86_64_unknown_linux_gnu='1'
+export NIX_PKG_CONFIG_WRAPPER_TARGET_TARGET_x86_64_unknown_linux_gnu
+NIX_STORE='/nix/store'
+export NIX_STORE
+NM='nm'
+export NM
+NM_FOR_TARGET='nm'
+export NM_FOR_TARGET
+OBJCOPY='objcopy'
+export OBJCOPY
+OBJCOPY_FOR_TARGET='objcopy'
+export OBJCOPY_FOR_TARGET
+OBJDUMP='objdump'
+export OBJDUMP
+OBJDUMP_FOR_TARGET='objdump'
+export OBJDUMP_FOR_TARGET
+OLDPWD=''
+export OLDPWD
+OPTERR='1'
+OSTYPE='linux-gnu'
+PATH='/nix/store/6d4bp009bcmz5afl9n7w7niycqi3m0rm-patchelf-0.14.5/bin:/nix/store/4ybkncn05qbhgbdxg9sxdgpm1jpdx76w-gcc-wrapper-10.3.0/bin:/nix/store/2dll4xl0xn13anzfxk0pbjr209s6rwhx-gcc-10.3.0/bin:/nix/store/y2d88myw5v33mwrz13rgnjgx23rs26p6-glibc-2.34-115-bin/bin:/nix/store/mi38zzxcylfc1jwnbbjyln959k1yjl9b-coreutils-9.0/bin:/nix/store/c4k3fcsp5cqg9v0rpac9qbqmbkm6a7pk-binutils-wrapper-2.35.2/bin:/nix/store/cimp3vp40msz4afq1c3602p2rn9bff0d-binutils-2.35.2/bin:/nix/store/8blq2fy6y9x2ffcgr052f0abakammw0k-flutter-2.13.0-0.1.pre/bin:/nix/store/jybckv2y9wqjkv0p6y0j4p156lvblnq9-openjdk-11.0.12+7/bin:/nix/store/12msvv6k9rf9ywjpzcj502y0azsgmhp1-platform-tools-31.0.3/bin:/nix/store/2k141yqyyvm6rh3y6ssvcv3raw6w29d8-dart-2.17.0-266.1.beta/bin:/nix/store/f15fzjp3g5av46d9v844nj55w60zvrzd-gitlint-0.17.0/bin:/nix/store/bvzpppawf2naqv3qhxqv66jxaq3iaxyj-python3-3.9.11/bin:/nix/store/q6ga19qfb3bk3clqan8k22jnnh8m32n5-jq-1.6-bin/bin:/nix/store/y1ilfhl51jr1m8y8dn2pl07703ppcadn-ripgrep-13.0.0/bin:/nix/store/ay2530157fl2cmddbfhn232ay7q5smkh-glib-2.72.0-dev/bin:/nix/store/1ynaiiirnxqn8s62haws8i1b46b5v62j-gettext-0.21/bin:/nix/store/xl4fcwa76r0xy59dlhjvvj7h0nl0ix84-glib-2.72.0-bin/bin:/nix/store/j5brj48yd6fza2r3rdzzi9bni915v1ar-cairo-1.16.0-dev/bin:/nix/store/naxbqvpb0vkbzbp6si49fris5q38bdx2-freetype-2.11.1-dev/bin:/nix/store/9hnz235608afb1z943sh3fd21ngxa7ra-bzip2-1.0.6.0.2-bin/bin:/nix/store/q5ksqnnkrfpraifgyrzas68lpjymm8kz-libpng-apng-1.6.37-dev/bin:/nix/store/r4aknngzmydzd6dql0ys0lj03cvmcyfk-fontconfig-2.13.94-bin/bin:/nix/store/36z9b8dzzmbs0xl4sgs9immm7yidswzc-expat-2.4.7-dev/bin:/nix/store/58rj9srjk7m4hamw7jlf6i4vlvgv1mv6-clang-wrapper-11.1.0/bin:/nix/store/71npsayh2m8vpys9ra1v9p0vyy85hlxv-clang-11.1.0/bin:/nix/store/5nhxhpqsd2wzzlcdkj61rspvxxmnqp2k-binutils-wrapper-2.35.2/bin:/nix/store/jlqvmjzwpxqfghhn1k3kc07ssga2zm0f-cmake-3.22.3/bin:/nix/store/pyxk0i29z4lhif5ys2zplf9rj2mkz13m-gdk-pixbuf-2.42.8-dev/bin:/nix/store/hj59ddxmjx7f41qwzwkbigrfyxzyb4ci-libjpeg-turbo-2.1.3-bin/bin:/nix/store/74vm0qblviq2rjjyhb26n017wzam1c9b-xz-5.2.5-bin/bin:/nix/store/9lrz8brsphinnzyg3ws6gfkbxpivr0n5-libtiff-4.3.0-bin/bin:/nix/store/mg7gw8a5lmhqc34lbw2n2kk4vj42pwwy-gdk-pixbuf-2.42.8/bin:/nix/store/hzwxfpp23dhl3w8bi3mg2dv3czaifhmk-gtk+3-3.24.33-dev/bin:/nix/store/03y73n3p1h1ac9605ghswfqyr31pqzcn-fribidi-1.0.11/bin:/nix/store/fr8s7935ba0m8f5sw72cs4sgi8lh70f4-harfbuzz-3.3.2-dev/bin:/nix/store/dqhrpw13q9wss7fsb20yj3c9xrf4rg8i-graphite2-1.3.14/bin:/nix/store/9wsylssmyb6w9bwd2wmzpzhj85llvrld-pango-1.50.6-bin/bin:/nix/store/ykk7ngn81vhihs5gvz3g6xnimyzih8da-wayland-1.20.0-bin/bin:/nix/store/d57prf5almy1qnj5lr1biswh6fydb620-cups-2.4.1-dev/bin:/nix/store/fxbxcv4swqp7rjv39bq6wknyg51lyzq9-cups-2.4.1/bin:/nix/store/9bvfvaahj8cxij9gb8n9scz9nqah1phg-gtk+3-3.24.33/bin:/nix/store/ix08ss2s3shjya9cq7jmj1czwglfz366-ninja-1.10.2/bin:/nix/store/s2b221nhz0h7i7ndcp19d4yn5ydda4x4-pcre-8.45-dev/bin:/nix/store/4wqmz2ayiibvkc36dc91kdgmj4l02bdh-pcre-8.45-bin/bin:/nix/store/l8k4yxyyg2vym5vi8mxzmzpabcwz444p-pkg-config-wrapper-0.29.2/bin:/nix/store/r9zfl37l5dsr8kfypian6w1vamcdngva-compiler-rt-libc-11.1.0/bin:/nix/store/mi38zzxcylfc1jwnbbjyln959k1yjl9b-coreutils-9.0/bin:/nix/store/g2ax8hr2vcv74ymdi9i0z898zgwv5qck-findutils-4.9.0/bin:/nix/store/y01pvic7xsg3q05fynbh6mb1d4vqk5bf-diffutils-3.8/bin:/nix/store/4w3fd4s7l967bdplcqn74bf3iq45h4f8-gnused-4.8/bin:/nix/store/pa1hxz0q46giv9zw1bi4205hgzkjnz17-gnugrep-3.7/bin:/nix/store/8cm5s7jjqh2r16bx36shsizpm49mq9hk-gawk-5.1.1/bin:/nix/store/82z93m4mv563fj3m2j9d61cabvidx703-gnutar-1.34/bin:/nix/store/fsfnkwpydb6pb0sdri12fpiynjprczyq-gzip-1.12/bin:/nix/store/9hnz235608afb1z943sh3fd21ngxa7ra-bzip2-1.0.6.0.2-bin/bin:/nix/store/laascnf607s0p98q6n1kk4r0r9922c4l-gnumake-4.3/bin:/nix/store/30j23057fqnnc1p4jqmq73p0gxgn0frq-bash-5.1-p16/bin:/nix/store/8xlgg9jl10gf1mv5mx459wr7x1wpnsnq-patch-2.7.6/bin:/nix/store/74vm0qblviq2rjjyhb26n017wzam1c9b-xz-5.2.5-bin/bin'
+export PATH
+PKG_CONFIG_FOR_TARGET='pkg-config'
+export PKG_CONFIG_FOR_TARGET
+PKG_CONFIG_PATH_FOR_TARGET='/nix/store/bvzpppawf2naqv3qhxqv66jxaq3iaxyj-python3-3.9.11/lib/pkgconfig:/nix/store/wqj9imqj9in8fmxb31yq331sshv3d001-atk-2.36.0-dev/lib/pkgconfig:/nix/store/ay2530157fl2cmddbfhn232ay7q5smkh-glib-2.72.0-dev/lib/pkgconfig:/nix/store/ab2kkxrkwiliik3hi19r52m3b5lzwmpf-zlib-1.2.12-dev/lib/pkgconfig:/nix/store/arn7xxsxjfg04mpmdyr9yh23rbjpqrg2-libffi-3.4.2-dev/lib/pkgconfig:/nix/store/j5brj48yd6fza2r3rdzzi9bni915v1ar-cairo-1.16.0-dev/lib/pkgconfig:/nix/store/1xghq8cvp3ikrj1xxadp65v3xrgp9m5a-fontconfig-2.13.94-dev/lib/pkgconfig:/nix/store/naxbqvpb0vkbzbp6si49fris5q38bdx2-freetype-2.11.1-dev/lib/pkgconfig:/nix/store/mr4p6sb833mgxlzwknmlhgfgz36y66sa-bzip2-1.0.6.0.2-dev/lib/pkgconfig:/nix/store/q5ksqnnkrfpraifgyrzas68lpjymm8kz-libpng-apng-1.6.37-dev/lib/pkgconfig:/nix/store/36z9b8dzzmbs0xl4sgs9immm7yidswzc-expat-2.4.7-dev/lib/pkgconfig:/nix/store/y5j645511d08hfzv0924nyhjqcin50kc-pixman-0.38.4/lib/pkgconfig:/nix/store/ysr42a1mzvj7na91pclfkscjcbyg7s4l-libXext-1.3.4-dev/lib/pkgconfig:/nix/store/mj3qh7prl1zdhh0kaw83n3gin0haj31r-xorgproto-2021.5/share/pkgconfig:/nix/store/hbfs1j0w5d5brkkbg55d3xnybq1vqh6x-libXau-1.0.9-dev/lib/pkgconfig:/nix/store/bzvqvcad70dhhsvmxig3w80n94k2dm07-libXrender-0.9.10-dev/lib/pkgconfig:/nix/store/a2s8wi9lghg0ir5fckb1b1p69dwa9xva-libX11-1.7.2-dev/lib/pkgconfig:/nix/store/0bi9s80hzrm6isch4z6jkks09s8qb75r-libxcb-1.14-dev/lib/pkgconfig:/nix/store/jb1jjhk53nrzbm57k18v0zm1w710rgl9-xcb-util-0.4.0-dev/lib/pkgconfig:/nix/store/kf1dv3n0g4sq2fgs7s3zhvhx3gwj047d-libGL-1.4.0-dev/lib/pkgconfig:/nix/store/kmld4kwf5mlb5n45rs593cnbqs2a1z6v-libglvnd-1.4.0-dev/lib/pkgconfig:/nix/store/mgdicybndan57zsq6xv9g01zsrds8nqa-libepoxy-1.5.9-dev/lib/pkgconfig:/nix/store/pyxk0i29z4lhif5ys2zplf9rj2mkz13m-gdk-pixbuf-2.42.8-dev/lib/pkgconfig:/nix/store/2h963ndrnb0bik6bfh1krnf8a3m65sjh-libtiff-4.3.0-dev/lib/pkgconfig:/nix/store/xf7pp7h5s90i06a7g2fbdv4cqzyblm8k-libjpeg-turbo-2.1.3-dev/lib/pkgconfig:/nix/store/78l2dgfzx7nl9rhmv94xr6xhci68rm3c-xz-5.2.5-dev/lib/pkgconfig:/nix/store/hzwxfpp23dhl3w8bi3mg2dv3czaifhmk-gtk+3-3.24.33-dev/lib/pkgconfig:/nix/store/38g3xydr2nyp2cydaih9x48w2jim1mrc-at-spi2-atk-2.38.0/lib/pkgconfig:/nix/store/03y73n3p1h1ac9605ghswfqyr31pqzcn-fribidi-1.0.11/lib/pkgconfig:/nix/store/chywfp3sbcaglnj3q1fh7rk2krgim4kx-gsettings-desktop-schemas-42.0/share/pkgconfig:/nix/store/z61nfm16mag6xkyvkdg4jx288m7pgdc3-libICE-1.0.10-dev/lib/pkgconfig:/nix/store/jy8h3cz74jxw9i3h3ja0mc0dwdxw5zja-libSM-1.2.3-dev/lib/pkgconfig:/nix/store/67w1mz9mac5a58zr0sm8spnbl9vfl1la-libXcomposite-0.4.5-dev/lib/pkgconfig:/nix/store/39n7g8mlvij2iws9gfd23w9v4pz96hsz-libXfixes-6.0.0-dev/lib/pkgconfig:/nix/store/gcbqi8f5w23rm2n9pm4m8pgg9cij10ci-libXcursor-1.2.0-dev/lib/pkgconfig:/nix/store/xh0d5220ig5vil572lsyrivm97limshv-libXi-1.8-dev/lib/pkgconfig:/nix/store/1qi9nj8ash2mwcf7pjwdancz6vscc3p9-libXrandr-1.5.2-dev/lib/pkgconfig:/nix/store/2iakkaflzzp3fg7c1hh09i4bl96fhsdh-pango-1.50.6-dev/lib/pkgconfig:/nix/store/fr8s7935ba0m8f5sw72cs4sgi8lh70f4-harfbuzz-3.3.2-dev/lib/pkgconfig:/nix/store/dqhrpw13q9wss7fsb20yj3c9xrf4rg8i-graphite2-1.3.14/lib/pkgconfig:/nix/store/i1h792658cvwz9bfhd47zmc948j3r78m-libXft-2.3.4-dev/lib/pkgconfig:/nix/store/glgkbz8g8719bby4sx28p34nk1dwyr8b-wayland-1.20.0-dev/lib/pkgconfig:/nix/store/ykk7ngn81vhihs5gvz3g6xnimyzih8da-wayland-1.20.0-bin/lib/pkgconfig:/nix/store/nrhjz3m3wmnay297z456mpp5jfjh6a49-wayland-protocols-1.25/share/pkgconfig:/nix/store/0m1wqsbiry229gwczprwppb7p5pzni9c-libXinerama-1.1.4-dev/lib/pkgconfig:/nix/store/d57prf5almy1qnj5lr1biswh6fydb620-cups-2.4.1-dev/lib/pkgconfig:/nix/store/wgclqchs4pqgkn8fabb9smhz3nwhm2nh-gmp-with-cxx-6.2.1-dev/lib/pkgconfig:/nix/store/s2b221nhz0h7i7ndcp19d4yn5ydda4x4-pcre-8.45-dev/lib/pkgconfig'
+export PKG_CONFIG_PATH_FOR_TARGET
+PS4='+ '
+PYTHONHASHSEED='0'
+export PYTHONHASHSEED
+PYTHONNOUSERSITE='1'
+export PYTHONNOUSERSITE
+PYTHONPATH='/nix/store/f15fzjp3g5av46d9v844nj55w60zvrzd-gitlint-0.17.0/lib/python3.9/site-packages:/nix/store/wmyfippxf9sr358nvnw2l8aj35nmwx2s-python3.9-arrow-1.2.2/lib/python3.9/site-packages:/nix/store/7m68x9rdv1fj8i40p7h83wcl8wbmcrff-python3.9-python-dateutil-2.8.2/lib/python3.9/site-packages:/nix/store/r6j9x43wcvp79472y4kv93w23s94apy4-python3.9-six-1.16.0/lib/python3.9/site-packages:/nix/store/bvzpppawf2naqv3qhxqv66jxaq3iaxyj-python3-3.9.11/lib/python3.9/site-packages:/nix/store/s5jwgr4qci2r1rxnylhl33qhg4qmaa20-python3.9-click-8.0.4/lib/python3.9/site-packages:/nix/store/dx5grbhnlja2nhm3chszxxxmakgbqa1w-python3.9-sh-1.14.2/lib/python3.9/site-packages'
+export PYTHONPATH
+RANLIB='ranlib'
+export RANLIB
+RANLIB_FOR_TARGET='ranlib'
+export RANLIB_FOR_TARGET
+READELF='readelf'
+export READELF
+READELF_FOR_TARGET='readelf'
+export READELF_FOR_TARGET
+SHELL='/nix/store/30j23057fqnnc1p4jqmq73p0gxgn0frq-bash-5.1-p16/bin/bash'
+export SHELL
+SIZE='size'
+export SIZE
+SIZE_FOR_TARGET='size'
+export SIZE_FOR_TARGET
+SOURCE_DATE_EPOCH='315532800'
+export SOURCE_DATE_EPOCH
+STRINGS='strings'
+export STRINGS
+STRINGS_FOR_TARGET='strings'
+export STRINGS_FOR_TARGET
+STRIP='strip'
+export STRIP
+STRIP_FOR_TARGET='strip'
+export STRIP_FOR_TARGET
+XDG_DATA_DIRS='/nix/store/6d4bp009bcmz5afl9n7w7niycqi3m0rm-patchelf-0.14.5/share'
+export XDG_DATA_DIRS
+_PYTHON_HOST_PLATFORM='linux-x86_64'
+export _PYTHON_HOST_PLATFORM
+_PYTHON_SYSCONFIGDATA_NAME='_sysconfigdata__linux_x86_64-linux-gnu'
+export _PYTHON_SYSCONFIGDATA_NAME
+buildInputs='/nix/store/8blq2fy6y9x2ffcgr052f0abakammw0k-flutter-2.13.0-0.1.pre /nix/store/jybckv2y9wqjkv0p6y0j4p156lvblnq9-openjdk-11.0.12+7 /nix/store/12msvv6k9rf9ywjpzcj502y0azsgmhp1-platform-tools-31.0.3 /nix/store/2k141yqyyvm6rh3y6ssvcv3raw6w29d8-dart-2.17.0-266.1.beta /nix/store/f15fzjp3g5av46d9v844nj55w60zvrzd-gitlint-0.17.0 /nix/store/mncnjdqi1vmsfag6li4cvdp72gnxmmlw-jq-1.6-dev /nix/store/y1ilfhl51jr1m8y8dn2pl07703ppcadn-ripgrep-13.0.0 /nix/store/wqj9imqj9in8fmxb31yq331sshv3d001-atk-2.36.0-dev /nix/store/j5brj48yd6fza2r3rdzzi9bni915v1ar-cairo-1.16.0-dev /nix/store/58rj9srjk7m4hamw7jlf6i4vlvgv1mv6-clang-wrapper-11.1.0 /nix/store/jlqvmjzwpxqfghhn1k3kc07ssga2zm0f-cmake-3.22.3 /nix/store/mgdicybndan57zsq6xv9g01zsrds8nqa-libepoxy-1.5.9-dev /nix/store/pyxk0i29z4lhif5ys2zplf9rj2mkz13m-gdk-pixbuf-2.42.8-dev /nix/store/ay2530157fl2cmddbfhn232ay7q5smkh-glib-2.72.0-dev /nix/store/hzwxfpp23dhl3w8bi3mg2dv3czaifhmk-gtk+3-3.24.33-dev /nix/store/fr8s7935ba0m8f5sw72cs4sgi8lh70f4-harfbuzz-3.3.2-dev /nix/store/ix08ss2s3shjya9cq7jmj1czwglfz366-ninja-1.10.2 /nix/store/2iakkaflzzp3fg7c1hh09i4bl96fhsdh-pango-1.50.6-dev /nix/store/s2b221nhz0h7i7ndcp19d4yn5ydda4x4-pcre-8.45-dev /nix/store/l8k4yxyyg2vym5vi8mxzmzpabcwz444p-pkg-config-wrapper-0.29.2 /nix/store/a2s8wi9lghg0ir5fckb1b1p69dwa9xva-libX11-1.7.2-dev /nix/store/mj3qh7prl1zdhh0kaw83n3gin0haj31r-xorgproto-2021.5'
+export buildInputs
+buildPhase='echo "------------------------------------------------------------" >>$out
+echo " WARNING: the existence of this path is not guaranteed." >>$out
+echo " It is an internal implementation detail for pkgs.mkShell." >>$out
+echo "------------------------------------------------------------" >>$out
+echo >> $out
+# Record all build inputs as runtime dependencies
+export >> $out
+'
+export buildPhase
+builder='/nix/store/30j23057fqnnc1p4jqmq73p0gxgn0frq-bash-5.1-p16/bin/bash'
+export builder
+checkPhase='ninjaCheckPhase'
+configureFlags=''
+export configureFlags
+configurePhase='cmakeConfigurePhase'
+defaultBuildInputs=''
+defaultNativeBuildInputs='/nix/store/6d4bp009bcmz5afl9n7w7niycqi3m0rm-patchelf-0.14.5 /nix/store/59jmzisg8fkm9c125fw384dqq1np602l-move-docs.sh /nix/store/kxw6q8v6isaqjm702d71n2421cxamq68-make-symlinks-relative.sh /nix/store/m54bmrhj6fqz8nds5zcj97w9s9bckc9v-compress-man-pages.sh /nix/store/bkxq1nfi6grmww5756ynr1aph7w04lkk-strip.sh /nix/store/bnj8d7mvbkg3vdb07yz74yhl3g107qq5-patch-shebangs.sh /nix/store/cickvswrvann041nqxb0rxilc46svw1n-prune-libtool-files.sh /nix/store/8zxndz5ag0p6s526c2xyllhk1nrn4c3i-audit-tmpdir.sh /nix/store/c8n9kcdddp9np665xz6ri61b383nxvz8-move-systemd-user-units.sh /nix/store/1i5y55x4b4m9qkx5dqbmr1r6bvrqbanw-multiple-outputs.sh /nix/store/kd4xwxjpjxi71jkm6ka0np72if9rm3y0-move-sbin.sh /nix/store/fyaryjvghbkpfnsyw97hb3lyb37s1pd6-move-lib64.sh /nix/store/ngg1cv31c8c7bcm2n8ww4g06nq7s4zhm-set-source-date-epoch-to-latest.sh /nix/store/wlwcf1nw2b21m4gghj70hbg1v7x53ld8-reproducible-builds.sh /nix/store/4ybkncn05qbhgbdxg9sxdgpm1jpdx76w-gcc-wrapper-10.3.0'
+depsBuildBuild=''
+export depsBuildBuild
+depsBuildBuildPropagated=''
+export depsBuildBuildPropagated
+depsBuildTarget=''
+export depsBuildTarget
+depsBuildTargetPropagated=''
+export depsBuildTargetPropagated
+depsHostHost=''
+export depsHostHost
+depsHostHostPropagated=''
+export depsHostHostPropagated
+depsTargetTarget=''
+export depsTargetTarget
+depsTargetTargetPropagated=''
+export depsTargetTargetPropagated
+doCheck=''
+export doCheck
+doInstallCheck=''
+export doInstallCheck
+dontAddDisableDepTrack='1'
+export dontAddDisableDepTrack
+declare -a envBuildBuildHooks=()
+declare -a envBuildHostHooks=()
+declare -a envBuildTargetHooks=()
+declare -a envHostHostHooks=('ccWrapper_addCVars' 'bintoolsWrapper_addLDVars' 'addPythonPath' 'sysconfigdataHook' 'addPythonPath' 'sysconfigdataHook' 'gettextDataDirsHook' )
+declare -a envHostTargetHooks=('ccWrapper_addCVars' 'bintoolsWrapper_addLDVars' 'addPythonPath' 'sysconfigdataHook' 'addPythonPath' 'sysconfigdataHook' 'gettextDataDirsHook' )
+declare -a envTargetTargetHooks=('addPkgToClassPath' 'make_glib_find_gsettings_schemas' 'ccWrapper_addCVars' 'bintoolsWrapper_addLDVars' 'addCMakeParams' 'findGdkPixbufLoaders' 'pkgConfigWrapper_addPkgConfigPath' )
+declare -a fixupOutputHooks=('if [ -z "${dontPatchELF-}" ]; then patchELF "$prefix"; fi' '_makeSymlinksRelative' 'if [ -z "${dontGzipMan-}" ]; then compressManPages "$prefix"; fi' '_doStrip' 'patchShebangsAuto' '_pruneLibtoolFiles' 'if [[ -z "${noAuditTmpdir-}" && -e "$prefix" ]]; then auditTmpdir "$prefix"; fi' '_moveSystemdUserUnits' '_moveSbin' '_moveLib64' '_gtkCleanImmodulesCache' )
+flag='-L/nix/store/m7wc8hf24hymhm89k2hc00nwl730dphv-pcre-8.45/lib'
+guess='8'
+iframework_seen=''
+initialPath='/nix/store/mi38zzxcylfc1jwnbbjyln959k1yjl9b-coreutils-9.0 /nix/store/g2ax8hr2vcv74ymdi9i0z898zgwv5qck-findutils-4.9.0 /nix/store/y01pvic7xsg3q05fynbh6mb1d4vqk5bf-diffutils-3.8 /nix/store/4w3fd4s7l967bdplcqn74bf3iq45h4f8-gnused-4.8 /nix/store/pa1hxz0q46giv9zw1bi4205hgzkjnz17-gnugrep-3.7 /nix/store/8cm5s7jjqh2r16bx36shsizpm49mq9hk-gawk-5.1.1 /nix/store/82z93m4mv563fj3m2j9d61cabvidx703-gnutar-1.34 /nix/store/fsfnkwpydb6pb0sdri12fpiynjprczyq-gzip-1.12 /nix/store/9hnz235608afb1z943sh3fd21ngxa7ra-bzip2-1.0.6.0.2-bin /nix/store/laascnf607s0p98q6n1kk4r0r9922c4l-gnumake-4.3 /nix/store/30j23057fqnnc1p4jqmq73p0gxgn0frq-bash-5.1-p16 /nix/store/8xlgg9jl10gf1mv5mx459wr7x1wpnsnq-patch-2.7.6 /nix/store/74vm0qblviq2rjjyhb26n017wzam1c9b-xz-5.2.5-bin'
+installPhase='ninjaInstallPhase'
+isystem_seen=''
+maybe_dir='/nix/store/9bvfvaahj8cxij9gb8n9scz9nqah1phg-gtk+3-3.24.33/share/gsettings-schemas/gtk+3-3.24.33'
+name='nix-shell'
+export name
+nativeBuildInputs=''
+export nativeBuildInputs
+out='/home/alexander/Development/Personal/Android/moxdns/outputs/out'
+export out
+outputBin='out'
+outputDev='out'
+outputDevdoc='REMOVE'
+outputDevman='out'
+outputDoc='out'
+outputInclude='out'
+outputInfo='out'
+outputLib='out'
+outputMan='out'
+outputs='out'
+export outputs
+patches=''
+export patches
+phases='buildPhase'
+export phases
+pkg='/nix/store/4ybkncn05qbhgbdxg9sxdgpm1jpdx76w-gcc-wrapper-10.3.0'
+declare -a pkgsBuildBuild=()
+declare -a pkgsBuildHost=('/nix/store/6d4bp009bcmz5afl9n7w7niycqi3m0rm-patchelf-0.14.5' '/nix/store/59jmzisg8fkm9c125fw384dqq1np602l-move-docs.sh' '/nix/store/kxw6q8v6isaqjm702d71n2421cxamq68-make-symlinks-relative.sh' '/nix/store/m54bmrhj6fqz8nds5zcj97w9s9bckc9v-compress-man-pages.sh' '/nix/store/bkxq1nfi6grmww5756ynr1aph7w04lkk-strip.sh' '/nix/store/bnj8d7mvbkg3vdb07yz74yhl3g107qq5-patch-shebangs.sh' '/nix/store/cickvswrvann041nqxb0rxilc46svw1n-prune-libtool-files.sh' '/nix/store/8zxndz5ag0p6s526c2xyllhk1nrn4c3i-audit-tmpdir.sh' '/nix/store/c8n9kcdddp9np665xz6ri61b383nxvz8-move-systemd-user-units.sh' '/nix/store/1i5y55x4b4m9qkx5dqbmr1r6bvrqbanw-multiple-outputs.sh' '/nix/store/kd4xwxjpjxi71jkm6ka0np72if9rm3y0-move-sbin.sh' '/nix/store/fyaryjvghbkpfnsyw97hb3lyb37s1pd6-move-lib64.sh' '/nix/store/ngg1cv31c8c7bcm2n8ww4g06nq7s4zhm-set-source-date-epoch-to-latest.sh' '/nix/store/wlwcf1nw2b21m4gghj70hbg1v7x53ld8-reproducible-builds.sh' '/nix/store/4ybkncn05qbhgbdxg9sxdgpm1jpdx76w-gcc-wrapper-10.3.0' '/nix/store/c4k3fcsp5cqg9v0rpac9qbqmbkm6a7pk-binutils-wrapper-2.35.2' )
+declare -a pkgsBuildTarget=()
+declare -a pkgsHostHost=()
+declare -a pkgsHostTarget=('/nix/store/8blq2fy6y9x2ffcgr052f0abakammw0k-flutter-2.13.0-0.1.pre' '/nix/store/jybckv2y9wqjkv0p6y0j4p156lvblnq9-openjdk-11.0.12+7' '/nix/store/i8l1f18ak16jj5ar464m3myxg4hk2swa-hook' '/nix/store/12msvv6k9rf9ywjpzcj502y0azsgmhp1-platform-tools-31.0.3' '/nix/store/2k141yqyyvm6rh3y6ssvcv3raw6w29d8-dart-2.17.0-266.1.beta' '/nix/store/f15fzjp3g5av46d9v844nj55w60zvrzd-gitlint-0.17.0' '/nix/store/wmyfippxf9sr358nvnw2l8aj35nmwx2s-python3.9-arrow-1.2.2' '/nix/store/7m68x9rdv1fj8i40p7h83wcl8wbmcrff-python3.9-python-dateutil-2.8.2' '/nix/store/r6j9x43wcvp79472y4kv93w23s94apy4-python3.9-six-1.16.0' '/nix/store/bvzpppawf2naqv3qhxqv66jxaq3iaxyj-python3-3.9.11' '/nix/store/bvzpppawf2naqv3qhxqv66jxaq3iaxyj-python3-3.9.11' '/nix/store/s5jwgr4qci2r1rxnylhl33qhg4qmaa20-python3.9-click-8.0.4' '/nix/store/dx5grbhnlja2nhm3chszxxxmakgbqa1w-python3.9-sh-1.14.2' '/nix/store/mncnjdqi1vmsfag6li4cvdp72gnxmmlw-jq-1.6-dev' '/nix/store/q6ga19qfb3bk3clqan8k22jnnh8m32n5-jq-1.6-bin' '/nix/store/vdyarq02kn92wvljax1m1gd092ryfli7-jq-1.6-lib' '/nix/store/y1ilfhl51jr1m8y8dn2pl07703ppcadn-ripgrep-13.0.0' '/nix/store/wqj9imqj9in8fmxb31yq331sshv3d001-atk-2.36.0-dev' '/nix/store/ay2530157fl2cmddbfhn232ay7q5smkh-glib-2.72.0-dev' '/nix/store/ab2kkxrkwiliik3hi19r52m3b5lzwmpf-zlib-1.2.12-dev' '/nix/store/j5jxw3iy7bbz4a57fh9g2xm2gxmyal8h-zlib-1.2.12' '/nix/store/arn7xxsxjfg04mpmdyr9yh23rbjpqrg2-libffi-3.4.2-dev' '/nix/store/zf2p161nx09fkd36g79b0xv7srcc1av1-libffi-3.4.2' '/nix/store/1ynaiiirnxqn8s62haws8i1b46b5v62j-gettext-0.21' '/nix/store/3idrdw9wm55dapgfy9dqicpsfnl4zw08-glibc-iconv-2.34' '/nix/store/xl4fcwa76r0xy59dlhjvvj7h0nl0ix84-glib-2.72.0-bin' '/nix/store/3ma88r781fvsjiakwyfh95mzy7k19jac-glib-2.72.0' '/nix/store/nar7gsyrshxv579gz0026wk7b2ysraac-atk-2.36.0' '/nix/store/j5brj48yd6fza2r3rdzzi9bni915v1ar-cairo-1.16.0-dev' '/nix/store/1xghq8cvp3ikrj1xxadp65v3xrgp9m5a-fontconfig-2.13.94-dev' '/nix/store/naxbqvpb0vkbzbp6si49fris5q38bdx2-freetype-2.11.1-dev' '/nix/store/mr4p6sb833mgxlzwknmlhgfgz36y66sa-bzip2-1.0.6.0.2-dev' '/nix/store/9hnz235608afb1z943sh3fd21ngxa7ra-bzip2-1.0.6.0.2-bin' '/nix/store/vgw0mw7s490428lzgswl1cxj4xmlf5gn-bzip2-1.0.6.0.2' '/nix/store/q5ksqnnkrfpraifgyrzas68lpjymm8kz-libpng-apng-1.6.37-dev' '/nix/store/hyh1whmci39mv1hd6gr8nnhxva0c2rvm-libpng-apng-1.6.37' '/nix/store/9kpdwg8rjdizjkqbf6jj96w2jmcfhcad-freetype-2.11.1' '/nix/store/r4aknngzmydzd6dql0ys0lj03cvmcyfk-fontconfig-2.13.94-bin' '/nix/store/zcjja5yd97dgnnh3qwanbsra8xsavcgw-fontconfig-2.13.94-lib' '/nix/store/36z9b8dzzmbs0xl4sgs9immm7yidswzc-expat-2.4.7-dev' '/nix/store/sw3dj5k1sas1jckb750z3rd9ay8pxq2h-expat-2.4.7' '/nix/store/y5j645511d08hfzv0924nyhjqcin50kc-pixman-0.38.4' '/nix/store/ysr42a1mzvj7na91pclfkscjcbyg7s4l-libXext-1.3.4-dev' '/nix/store/mj3qh7prl1zdhh0kaw83n3gin0haj31r-xorgproto-2021.5' '/nix/store/hbfs1j0w5d5brkkbg55d3xnybq1vqh6x-libXau-1.0.9-dev' '/nix/store/b38zsh4qgfj60fjlpg6m9v29bcp09abk-libXau-1.0.9' '/nix/store/fmbay7w2i0qg57jcdzij3v0lzr4gpcyk-libXext-1.3.4' '/nix/store/bzvqvcad70dhhsvmxig3w80n94k2dm07-libXrender-0.9.10-dev' '/nix/store/a2s8wi9lghg0ir5fckb1b1p69dwa9xva-libX11-1.7.2-dev' '/nix/store/0bi9s80hzrm6isch4z6jkks09s8qb75r-libxcb-1.14-dev' '/nix/store/3jch9iknmlz6r3m2fhhnvaqryzlh3zq4-libxcb-1.14' '/nix/store/0np4qysvv5v05w49bs3ii123gckd4n0b-libX11-1.7.2' '/nix/store/cs3m5r3f7x6ghf9xwgnmg1bzb12lqi19-libXrender-0.9.10' '/nix/store/jb1jjhk53nrzbm57k18v0zm1w710rgl9-xcb-util-0.4.0-dev' '/nix/store/cqhhah8c6rgms9wmxr9pa1wghh2smki3-xcb-util-0.4.0' '/nix/store/kf1dv3n0g4sq2fgs7s3zhvhx3gwj047d-libGL-1.4.0-dev' '/nix/store/q796xg0x515ajdly44iqdvacxnprj6qx-libGL-1.4.0' '/nix/store/hrl51nkr7dszlwcs29wmyxq0jsqlaszn-libglvnd-1.4.0' '/nix/store/kmld4kwf5mlb5n45rs593cnbqs2a1z6v-libglvnd-1.4.0-dev' '/nix/store/jr22pv60hyl16n9fqsbjsqyq0rknjphj-cairo-1.16.0' '/nix/store/58rj9srjk7m4hamw7jlf6i4vlvgv1mv6-clang-wrapper-11.1.0' '/nix/store/5nhxhpqsd2wzzlcdkj61rspvxxmnqp2k-binutils-wrapper-2.35.2' '/nix/store/jlqvmjzwpxqfghhn1k3kc07ssga2zm0f-cmake-3.22.3' '/nix/store/mgdicybndan57zsq6xv9g01zsrds8nqa-libepoxy-1.5.9-dev' '/nix/store/s9lnvpdcphaxkvlm97sd18bcsxghjgq8-libepoxy-1.5.9' '/nix/store/pyxk0i29z4lhif5ys2zplf9rj2mkz13m-gdk-pixbuf-2.42.8-dev' '/nix/store/2h963ndrnb0bik6bfh1krnf8a3m65sjh-libtiff-4.3.0-dev' '/nix/store/xf7pp7h5s90i06a7g2fbdv4cqzyblm8k-libjpeg-turbo-2.1.3-dev' '/nix/store/hj59ddxmjx7f41qwzwkbigrfyxzyb4ci-libjpeg-turbo-2.1.3-bin' '/nix/store/3jcj0v2a0pjfi3ydscabrv532dsg43kf-libjpeg-turbo-2.1.3' '/nix/store/78l2dgfzx7nl9rhmv94xr6xhci68rm3c-xz-5.2.5-dev' '/nix/store/74vm0qblviq2rjjyhb26n017wzam1c9b-xz-5.2.5-bin' '/nix/store/xmhqvwkhmvc6grldj5vq43ffsahskfq0-xz-5.2.5' '/nix/store/9lrz8brsphinnzyg3ws6gfkbxpivr0n5-libtiff-4.3.0-bin' '/nix/store/nl0km2rshc71svq137kx2bv2fdjmqv56-libtiff-4.3.0' '/nix/store/mg7gw8a5lmhqc34lbw2n2kk4vj42pwwy-gdk-pixbuf-2.42.8' '/nix/store/hzwxfpp23dhl3w8bi3mg2dv3czaifhmk-gtk+3-3.24.33-dev' '/nix/store/38g3xydr2nyp2cydaih9x48w2jim1mrc-at-spi2-atk-2.38.0' '/nix/store/03y73n3p1h1ac9605ghswfqyr31pqzcn-fribidi-1.0.11' '/nix/store/chywfp3sbcaglnj3q1fh7rk2krgim4kx-gsettings-desktop-schemas-42.0' '/nix/store/z61nfm16mag6xkyvkdg4jx288m7pgdc3-libICE-1.0.10-dev' '/nix/store/hs258jqx4blnk6b8zncy8k0y6l2fqkl3-libICE-1.0.10' '/nix/store/jy8h3cz74jxw9i3h3ja0mc0dwdxw5zja-libSM-1.2.3-dev' '/nix/store/n7pzh8k7h5axpiqp0nvn49df4k5qqz3l-libSM-1.2.3' '/nix/store/67w1mz9mac5a58zr0sm8spnbl9vfl1la-libXcomposite-0.4.5-dev' '/nix/store/39n7g8mlvij2iws9gfd23w9v4pz96hsz-libXfixes-6.0.0-dev' '/nix/store/dvch1l6v4gczrsgb01y3p2lpgsw36aa4-libXfixes-6.0.0' '/nix/store/x6332d0bxzbkscshyri8z7if4j8lrz0d-libXcomposite-0.4.5' '/nix/store/gcbqi8f5w23rm2n9pm4m8pgg9cij10ci-libXcursor-1.2.0-dev' '/nix/store/jg8q74faxp8xbqw5dcdw7i63h9mjkjgz-libXcursor-1.2.0' '/nix/store/xh0d5220ig5vil572lsyrivm97limshv-libXi-1.8-dev' '/nix/store/8r67k5yn6ic2vmj5dq0d0hm4lc2br0vj-libXi-1.8' '/nix/store/1qi9nj8ash2mwcf7pjwdancz6vscc3p9-libXrandr-1.5.2-dev' '/nix/store/j3hqqyqpl6zwp3dcrc6xrvdqi6p776gl-libXrandr-1.5.2' '/nix/store/2iakkaflzzp3fg7c1hh09i4bl96fhsdh-pango-1.50.6-dev' '/nix/store/fr8s7935ba0m8f5sw72cs4sgi8lh70f4-harfbuzz-3.3.2-dev' '/nix/store/dqhrpw13q9wss7fsb20yj3c9xrf4rg8i-graphite2-1.3.14' '/nix/store/ms1f1l22i6x28bc865rn9mn5drgagv04-harfbuzz-3.3.2' '/nix/store/i1h792658cvwz9bfhd47zmc948j3r78m-libXft-2.3.4-dev' '/nix/store/1hyvc28l0nc25jxp0yfyrdmpqla2vx3d-libXft-2.3.4' '/nix/store/9wsylssmyb6w9bwd2wmzpzhj85llvrld-pango-1.50.6-bin' '/nix/store/n9h110ffps25rdkkim5k802p3p5w476m-pango-1.50.6' '/nix/store/glgkbz8g8719bby4sx28p34nk1dwyr8b-wayland-1.20.0-dev' '/nix/store/ykk7ngn81vhihs5gvz3g6xnimyzih8da-wayland-1.20.0-bin' '/nix/store/dvv86s6ipnm6hp8fhnh2smkal4q95p45-wayland-1.20.0' '/nix/store/nrhjz3m3wmnay297z456mpp5jfjh6a49-wayland-protocols-1.25' '/nix/store/0m1wqsbiry229gwczprwppb7p5pzni9c-libXinerama-1.1.4-dev' '/nix/store/fqfk1r89lavcagxg15a8jvq63l00snsf-libXinerama-1.1.4' '/nix/store/d57prf5almy1qnj5lr1biswh6fydb620-cups-2.4.1-dev' '/nix/store/wgclqchs4pqgkn8fabb9smhz3nwhm2nh-gmp-with-cxx-6.2.1-dev' '/nix/store/nmk2zbdxsmiinqxqxzv9cfjkladq9jlx-gmp-with-cxx-6.2.1' '/nix/store/kal2vyxj49n0sfmf635h304hp96d81ia-cups-2.4.1-lib' '/nix/store/fxbxcv4swqp7rjv39bq6wknyg51lyzq9-cups-2.4.1' '/nix/store/9bvfvaahj8cxij9gb8n9scz9nqah1phg-gtk+3-3.24.33' '/nix/store/ix08ss2s3shjya9cq7jmj1czwglfz366-ninja-1.10.2' '/nix/store/s2b221nhz0h7i7ndcp19d4yn5ydda4x4-pcre-8.45-dev' '/nix/store/4wqmz2ayiibvkc36dc91kdgmj4l02bdh-pcre-8.45-bin' '/nix/store/m7wc8hf24hymhm89k2hc00nwl730dphv-pcre-8.45' '/nix/store/l8k4yxyyg2vym5vi8mxzmzpabcwz444p-pkg-config-wrapper-0.29.2' )
+declare -a pkgsTargetTarget=('/nix/store/x8l8s0zzmzg7ydwzvndn81ir33z89gn6-compiler-rt-libc-11.1.0-dev' '/nix/store/r9zfl37l5dsr8kfypian6w1vamcdngva-compiler-rt-libc-11.1.0' )
+declare -a postFixupHooks=('_multioutPropagateDev' )
+declare -a postHooks=('makeCmakeFindLibs' )
+declare -a postUnpackHooks=('_updateSourceDateEpochFromSourceRoot' )
+declare -a preConfigureHooks=('_multioutConfig' )
+declare -a preFixupHooks=('_moveToShare' '_multioutDocs' '_multioutDevs' )
+preFixupPhases=' glibPreFixupPhase dropIconThemeCache'
+preInstallPhases=' glibPreInstallPhase'
+prefix='/home/alexander/Development/Personal/Android/moxdns/outputs/out'
+declare -a propagatedBuildDepFiles=('propagated-build-build-deps' 'propagated-native-build-inputs' 'propagated-build-target-deps' )
+propagatedBuildInputs=''
+export propagatedBuildInputs
+declare -a propagatedHostDepFiles=('propagated-host-host-deps' 'propagated-build-inputs' )
+propagatedNativeBuildInputs=''
+export propagatedNativeBuildInputs
+declare -a propagatedTargetDepFiles=('propagated-target-target-deps' )
+role_post=''
+setOutputFlags=''
+shell='/nix/store/30j23057fqnnc1p4jqmq73p0gxgn0frq-bash-5.1-p16/bin/bash'
+export shell
+shellHook=''
+export shellHook
+stdenv='/nix/store/83l8wwrx7xs3mh9sbbj6whmyx8y4cz36-stdenv-linux'
+export stdenv
+strictDeps=''
+export strictDeps
+system='x86_64-linux'
+export system
+declare -a unpackCmdHooks=('_defaultUnpack' )
+_activatePkgs ()
+{
+
+ local hostOffset targetOffset;
+ local pkg;
+ for hostOffset in "${allPlatOffsets[@]}";
+ do
+ local pkgsVar="${pkgAccumVarVars[hostOffset + 1]}";
+ for targetOffset in "${allPlatOffsets[@]}";
+ do
+ (( hostOffset <= targetOffset )) || continue;
+ local pkgsRef="${pkgsVar}[$targetOffset - $hostOffset]";
+ local pkgsSlice="${!pkgsRef}[@]";
+ for pkg in ${!pkgsSlice+"${!pkgsSlice}"};
+ do
+ activatePackage "$pkg" "$hostOffset" "$targetOffset";
+ done;
+ done;
+ done
+}
+_addRpathPrefix ()
+{
+
+ if [ "${NIX_NO_SELF_RPATH:-0}" != 1 ]; then
+ export NIX_LDFLAGS="-rpath $1/lib ${NIX_LDFLAGS-}";
+ if [ -n "${NIX_LIB64_IN_SELF_RPATH:-}" ]; then
+ export NIX_LDFLAGS="-rpath $1/lib64 ${NIX_LDFLAGS-}";
+ fi;
+ if [ -n "${NIX_LIB32_IN_SELF_RPATH:-}" ]; then
+ export NIX_LDFLAGS="-rpath $1/lib32 ${NIX_LDFLAGS-}";
+ fi;
+ fi
+}
+_addToEnv ()
+{
+
+ local depHostOffset depTargetOffset;
+ local pkg;
+ for depHostOffset in "${allPlatOffsets[@]}";
+ do
+ local hookVar="${pkgHookVarVars[depHostOffset + 1]}";
+ local pkgsVar="${pkgAccumVarVars[depHostOffset + 1]}";
+ for depTargetOffset in "${allPlatOffsets[@]}";
+ do
+ (( depHostOffset <= depTargetOffset )) || continue;
+ local hookRef="${hookVar}[$depTargetOffset - $depHostOffset]";
+ if [[ -z "${strictDeps-}" ]]; then
+ local visitedPkgs="";
+ for pkg in "${pkgsBuildBuild[@]}" "${pkgsBuildHost[@]}" "${pkgsBuildTarget[@]}" "${pkgsHostHost[@]}" "${pkgsHostTarget[@]}" "${pkgsTargetTarget[@]}";
+ do
+ if [[ "$visitedPkgs" = *"$pkg"* ]]; then
+ continue;
+ fi;
+ runHook "${!hookRef}" "$pkg";
+ visitedPkgs+=" $pkg";
+ done;
+ else
+ local pkgsRef="${pkgsVar}[$depTargetOffset - $depHostOffset]";
+ local pkgsSlice="${!pkgsRef}[@]";
+ for pkg in ${!pkgsSlice+"${!pkgsSlice}"};
+ do
+ runHook "${!hookRef}" "$pkg";
+ done;
+ fi;
+ done;
+ done
+}
+_allFlags ()
+{
+
+ for varName in $(awk 'BEGIN { for (v in ENVIRON) if (v ~ /^[a-z][a-zA-Z0-9_]*$/) print v }');
+ do
+ if (( "${NIX_DEBUG:-0}" >= 1 )); then
+ printf "@%s@ -> %q\n" "${varName}" "${!varName}";
+ fi;
+ args+=("--subst-var" "$varName");
+ done
+}
+_assignFirst ()
+{
+
+ local varName="$1";
+ local REMOVE=REMOVE;
+ shift;
+ while (( $# )); do
+ if [ -n "${!1-}" ]; then
+ eval "${varName}"="$1";
+ return;
+ fi;
+ shift;
+ done;
+ echo "Error: _assignFirst found no valid variant!";
+ return 1
+}
+_callImplicitHook ()
+{
+
+ local def="$1";
+ local hookName="$2";
+ if declare -F "$hookName" > /dev/null; then
+ "$hookName";
+ else
+ if type -p "$hookName" > /dev/null; then
+ source "$hookName";
+ else
+ if [ -n "${!hookName:-}" ]; then
+ eval "${!hookName}";
+ else
+ return "$def";
+ fi;
+ fi;
+ fi
+}
+_defaultUnpack ()
+{
+
+ local fn="$1";
+ if [ -d "$fn" ]; then
+ cp -pr --reflink=auto -- "$fn" "$(stripHash "$fn")";
+ else
+ case "$fn" in
+ *.tar.xz | *.tar.lzma | *.txz)
+ xz -d < "$fn" | tar xf - --warning=no-timestamp
+ ;;
+ *.tar | *.tar.* | *.tgz | *.tbz2 | *.tbz)
+ tar xf "$fn" --warning=no-timestamp
+ ;;
+ *)
+ return 1
+ ;;
+ esac;
+ fi
+}
+_doStrip ()
+{
+
+ local -ra flags=(dontStripHost dontStripTarget);
+ local -ra stripCmds=(STRIP TARGET_STRIP);
+ if [[ "${STRIP-}" == "${TARGET_STRIP-}" ]]; then
+ dontStripTarget+=1;
+ fi;
+ local i;
+ for i in ${!stripCmds[@]};
+ do
+ local -n flag="${flags[$i]}";
+ local -n stripCmd="${stripCmds[$i]}";
+ if [[ -n "${dontStrip-}" || -n "${flag-}" ]] || ! type -f "${stripCmd-}" 2> /dev/null; then
+ continue;
+ fi;
+ stripDebugList=${stripDebugList:-lib lib32 lib64 libexec bin sbin};
+ if [ -n "$stripDebugList" ]; then
+ stripDirs "$stripCmd" "$stripDebugList" "${stripDebugFlags:--S}";
+ fi;
+ stripAllList=${stripAllList:-};
+ if [ -n "$stripAllList" ]; then
+ stripDirs "$stripCmd" "$stripAllList" "${stripAllFlags:--s}";
+ fi;
+ done
+}
+_eval ()
+{
+
+ if declare -F "$1" > /dev/null 2>&1; then
+ "$@";
+ else
+ eval "$1";
+ fi
+}
+_gtkCleanImmodulesCache ()
+{
+
+ local f="${prefix:?}/lib/gtk-3.0/3.0.0/immodules.cache";
+ if [ -f "$f" ]; then
+ sed 's|Created by .*bin/gtk-query-|Created by bin/gtk-query-|' -i "$f";
+ fi
+}
+_makeSymlinksRelative ()
+{
+
+ local symlinkTarget;
+ if [ -n "${dontRewriteSymlinks-}" ]; then
+ return 0;
+ fi;
+ while IFS= read -r -d '' f; do
+ symlinkTarget=$(readlink "$f");
+ if [[ "$symlinkTarget"/ != "$prefix"/* ]]; then
+ continue;
+ fi;
+ if [ ! -e "$symlinkTarget" ]; then
+ echo "the symlink $f is broken, it points to $symlinkTarget (which is missing)";
+ fi;
+ echo "rewriting symlink $f to be relative to $prefix";
+ ln -snrf "$symlinkTarget" "$f";
+ done < <(find $prefix -type l -print0)
+}
+_moveLib64 ()
+{
+
+ if [ "${dontMoveLib64-}" = 1 ]; then
+ return;
+ fi;
+ if [ ! -e "$prefix/lib64" -o -L "$prefix/lib64" ]; then
+ return;
+ fi;
+ echo "moving $prefix/lib64/* to $prefix/lib";
+ mkdir -p $prefix/lib;
+ shopt -s dotglob;
+ for i in $prefix/lib64/*;
+ do
+ mv --no-clobber "$i" $prefix/lib;
+ done;
+ shopt -u dotglob;
+ rmdir $prefix/lib64;
+ ln -s lib $prefix/lib64
+}
+_moveSbin ()
+{
+
+ if [ "${dontMoveSbin-}" = 1 ]; then
+ return;
+ fi;
+ if [ ! -e "$prefix/sbin" -o -L "$prefix/sbin" ]; then
+ return;
+ fi;
+ echo "moving $prefix/sbin/* to $prefix/bin";
+ mkdir -p $prefix/bin;
+ shopt -s dotglob;
+ for i in $prefix/sbin/*;
+ do
+ mv "$i" $prefix/bin;
+ done;
+ shopt -u dotglob;
+ rmdir $prefix/sbin;
+ ln -s bin $prefix/sbin
+}
+_moveSystemdUserUnits ()
+{
+
+ if [ "${dontMoveSystemdUserUnits:-0}" = 1 ]; then
+ return;
+ fi;
+ if [ ! -e "${prefix:?}/lib/systemd/user" ]; then
+ return;
+ fi;
+ local source="$prefix/lib/systemd/user";
+ local target="$prefix/share/systemd/user";
+ echo "moving $source/* to $target";
+ mkdir -p "$target";
+ ( shopt -s dotglob;
+ for i in "$source"/*;
+ do
+ mv "$i" "$target";
+ done );
+ rmdir "$source";
+ ln -s "$target" "$source"
+}
+_moveToShare ()
+{
+
+ forceShare=${forceShare:=man doc info};
+ if [[ -z "$out" ]]; then
+ return;
+ fi;
+ for d in $forceShare;
+ do
+ if [ -d "$out/$d" ]; then
+ if [ -d "$out/share/$d" ]; then
+ echo "both $d/ and share/$d/ exist!";
+ else
+ echo "moving $out/$d to $out/share/$d";
+ mkdir -p $out/share;
+ mv $out/$d $out/share/;
+ fi;
+ fi;
+ done
+}
+_multioutConfig ()
+{
+
+ if [ "$outputs" = "out" ] || [ -z "${setOutputFlags-1}" ]; then
+ return;
+ fi;
+ if [ -z "$shareDocName" ]; then
+ local confScript="$configureScript";
+ if [ -z "$confScript" ] && [ -x ./configure ]; then
+ confScript=./configure;
+ fi;
+ if [ -f "$confScript" ]; then
+ local shareDocName="$(sed -n "s/^PACKAGE_TARNAME='\(.*\)'$/\1/p" < "$confScript")";
+ fi;
+ if [ -z "$shareDocName" ] || echo "$shareDocName" | grep -q '[^a-zA-Z0-9_-]'; then
+ shareDocName="$(echo "$name" | sed 's/-[^a-zA-Z].*//')";
+ fi;
+ fi;
+ configureFlags=" --bindir=${!outputBin}/bin --sbindir=${!outputBin}/sbin --includedir=${!outputInclude}/include --oldincludedir=${!outputInclude}/include --mandir=${!outputMan}/share/man --infodir=${!outputInfo}/share/info --docdir=${!outputDoc}/share/doc/${shareDocName} --libdir=${!outputLib}/lib --libexecdir=${!outputLib}/libexec --localedir=${!outputLib}/share/locale $configureFlags";
+ installFlags=" pkgconfigdir=${!outputDev}/lib/pkgconfig m4datadir=${!outputDev}/share/aclocal aclocaldir=${!outputDev}/share/aclocal $installFlags"
+}
+_multioutDevs ()
+{
+
+ if [ "$outputs" = "out" ] || [ -z "${moveToDev-1}" ]; then
+ return;
+ fi;
+ moveToOutput include "${!outputInclude}";
+ moveToOutput lib/pkgconfig "${!outputDev}";
+ moveToOutput share/pkgconfig "${!outputDev}";
+ moveToOutput lib/cmake "${!outputDev}";
+ moveToOutput share/aclocal "${!outputDev}";
+ for f in "${!outputDev}"/{lib,share}/pkgconfig/*.pc;
+ do
+ echo "Patching '$f' includedir to output ${!outputInclude}";
+ sed -i "/^includedir=/s,=\${prefix},=${!outputInclude}," "$f";
+ done
+}
+_multioutDocs ()
+{
+
+ local REMOVE=REMOVE;
+ moveToOutput share/info "${!outputInfo}";
+ moveToOutput share/doc "${!outputDoc}";
+ moveToOutput share/gtk-doc "${!outputDevdoc}";
+ moveToOutput share/devhelp/books "${!outputDevdoc}";
+ moveToOutput share/man "${!outputMan}";
+ moveToOutput share/man/man3 "${!outputDevman}"
+}
+_multioutPropagateDev ()
+{
+
+ if [ "$outputs" = "out" ]; then
+ return;
+ fi;
+ local outputFirst;
+ for outputFirst in $outputs;
+ do
+ break;
+ done;
+ local propagaterOutput="$outputDev";
+ if [ -z "$propagaterOutput" ]; then
+ propagaterOutput="$outputFirst";
+ fi;
+ if [ -z "${propagatedBuildOutputs+1}" ]; then
+ local po_dirty="$outputBin $outputInclude $outputLib";
+ set +o pipefail;
+ propagatedBuildOutputs=`echo "$po_dirty" | tr -s ' ' '\n' | grep -v -F "$propagaterOutput" | sort -u | tr '\n' ' ' `;
+ set -o pipefail;
+ fi;
+ if [ -z "$propagatedBuildOutputs" ]; then
+ return;
+ fi;
+ mkdir -p "${!propagaterOutput}"/nix-support;
+ for output in $propagatedBuildOutputs;
+ do
+ echo -n " ${!output}" >> "${!propagaterOutput}"/nix-support/propagated-build-inputs;
+ done
+}
+_overrideFirst ()
+{
+
+ if [ -z "${!1-}" ]; then
+ _assignFirst "$@";
+ fi
+}
+_pruneLibtoolFiles ()
+{
+
+ if [ "${dontPruneLibtoolFiles-}" ] || [ ! -e "$prefix" ]; then
+ return;
+ fi;
+ find "$prefix" -type f -name '*.la' -exec grep -q '^# Generated by .*libtool' {} \; -exec grep -q "^old_library=''" {} \; -exec sed -i {} -e "/^dependency_libs='[^']/ c dependency_libs='' #pruned" \;
+}
+_updateSourceDateEpochFromSourceRoot ()
+{
+
+ if [ -n "$sourceRoot" ]; then
+ updateSourceDateEpoch "$sourceRoot";
+ fi
+}
+activatePackage ()
+{
+
+ local pkg="$1";
+ local -r hostOffset="$2";
+ local -r targetOffset="$3";
+ (( hostOffset <= targetOffset )) || exit -1;
+ if [ -f "$pkg" ]; then
+ source "$pkg";
+ fi;
+ if [[ -z "${strictDeps-}" || "$hostOffset" -le -1 ]]; then
+ addToSearchPath _PATH "$pkg/bin";
+ fi;
+ if (( hostOffset <= -1 )); then
+ addToSearchPath _XDG_DATA_DIRS "$pkg/share";
+ fi;
+ if [[ "$hostOffset" -eq 0 && -d "$pkg/bin" ]]; then
+ addToSearchPath _HOST_PATH "$pkg/bin";
+ fi;
+ if [[ -f "$pkg/nix-support/setup-hook" ]]; then
+ source "$pkg/nix-support/setup-hook";
+ fi
+}
+addCMakeParams ()
+{
+
+ addToSearchPath CMAKE_PREFIX_PATH $1
+}
+addEnvHooks ()
+{
+
+ local depHostOffset="$1";
+ shift;
+ local pkgHookVarsSlice="${pkgHookVarVars[$depHostOffset + 1]}[@]";
+ local pkgHookVar;
+ for pkgHookVar in "${!pkgHookVarsSlice}";
+ do
+ eval "${pkgHookVar}s"'+=("$@")';
+ done
+}
+addPkgToClassPath ()
+{
+
+ local jar;
+ for jar in $1/share/java/*.jar;
+ do
+ export CLASSPATH=''${CLASSPATH-}''${CLASSPATH:+:}''${jar};
+ done
+}
+addPythonPath ()
+{
+
+ addToSearchPathWithCustomDelimiter : PYTHONPATH $1/lib/python3.9/site-packages
+}
+addToSearchPath ()
+{
+
+ addToSearchPathWithCustomDelimiter ":" "$@"
+}
+addToSearchPathWithCustomDelimiter ()
+{
+
+ local delimiter="$1";
+ local varName="$2";
+ local dir="$3";
+ if [[ -d "$dir" && "${!varName:+${delimiter}${!varName}${delimiter}}" != *"${delimiter}${dir}${delimiter}"* ]]; then
+ export "${varName}=${!varName:+${!varName}${delimiter}}${dir}";
+ fi
+}
+auditTmpdir ()
+{
+
+ local dir="$1";
+ [ -e "$dir" ] || return 0;
+ header "checking for references to $TMPDIR/ in $dir...";
+ local i;
+ while IFS= read -r -d '' i; do
+ if [[ "$i" =~ .build-id ]]; then
+ continue;
+ fi;
+ if isELF "$i"; then
+ if {
+ printf :;
+ patchelf --print-rpath "$i"
+ } | grep -q -F ":$TMPDIR/"; then
+ echo "RPATH of binary $i contains a forbidden reference to $TMPDIR/";
+ exit 1;
+ fi;
+ fi;
+ if isScript "$i"; then
+ if [ -e "$(dirname "$i")/.$(basename "$i")-wrapped" ]; then
+ if grep -q -F "$TMPDIR/" "$i"; then
+ echo "wrapper script $i contains a forbidden reference to $TMPDIR/";
+ exit 1;
+ fi;
+ fi;
+ fi;
+ done < <(find "$dir" -type f -print0);
+ stopNest
+}
+bintoolsWrapper_addLDVars ()
+{
+
+ local role_post;
+ getHostRoleEnvHook;
+ if [[ -d "$1/lib64" && ! -L "$1/lib64" ]]; then
+ export NIX_LDFLAGS${role_post}+=" -L$1/lib64";
+ fi;
+ if [[ -d "$1/lib" ]]; then
+ local -a glob=($1/lib/lib*);
+ if [ "${#glob[*]}" -gt 0 ]; then
+ export NIX_LDFLAGS${role_post}+=" -L$1/lib";
+ fi;
+ fi
+}
+buildPhase ()
+{
+
+ runHook preBuild;
+ : ${makeFlags=};
+ if [[ -z "$makeFlags" && -z "${makefile:-}" && ! ( -e Makefile || -e makefile || -e GNUmakefile ) ]]; then
+ echo "no Makefile, doing nothing";
+ else
+ foundMakefile=1;
+ local flagsArray=(${enableParallelBuilding:+-j${NIX_BUILD_CORES} -l${NIX_BUILD_CORES}} SHELL=$SHELL $makeFlags "${makeFlagsArray[@]}" $buildFlags "${buildFlagsArray[@]}");
+ echoCmd 'build flags' "${flagsArray[@]}";
+ make ${makefile:+-f $makefile} "${flagsArray[@]}";
+ unset flagsArray;
+ fi;
+ runHook postBuild
+}
+ccWrapper_addCVars ()
+{
+
+ local role_post;
+ getHostRoleEnvHook;
+ if [ -d "$1/include" ]; then
+ export NIX_CFLAGS_COMPILE${role_post}+=" -isystem $1/include";
+ fi;
+ if [ -d "$1/Library/Frameworks" ]; then
+ export NIX_CFLAGS_COMPILE${role_post}+=" -iframework $1/Library/Frameworks";
+ fi
+}
+checkPhase ()
+{
+
+ runHook preCheck;
+ if [[ -z "${foundMakefile:-}" ]]; then
+ echo "no Makefile or custom checkPhase, doing nothing";
+ runHook postCheck;
+ return;
+ fi;
+ if [[ -z "${checkTarget:-}" ]]; then
+ if make -n ${makefile:+-f $makefile} check > /dev/null 2>&1; then
+ checkTarget=check;
+ else
+ if make -n ${makefile:+-f $makefile} test > /dev/null 2>&1; then
+ checkTarget=test;
+ fi;
+ fi;
+ fi;
+ if [[ -z "${checkTarget:-}" ]]; then
+ echo "no check/test target in ${makefile:-Makefile}, doing nothing";
+ else
+ local flagsArray=(${enableParallelChecking:+-j${NIX_BUILD_CORES} -l${NIX_BUILD_CORES}} SHELL=$SHELL $makeFlags "${makeFlagsArray[@]}" ${checkFlags:-VERBOSE=y} "${checkFlagsArray[@]}" ${checkTarget});
+ echoCmd 'check flags' "${flagsArray[@]}";
+ make ${makefile:+-f $makefile} "${flagsArray[@]}";
+ unset flagsArray;
+ fi;
+ runHook postCheck
+}
+closeNest ()
+{
+
+ true
+}
+cmakeConfigurePhase ()
+{
+
+ runHook preConfigure;
+ export CTEST_OUTPUT_ON_FAILURE=1;
+ if [ -n "${enableParallelChecking-1}" ]; then
+ export CTEST_PARALLEL_LEVEL=$NIX_BUILD_CORES;
+ fi;
+ if [ -z "${dontFixCmake-}" ]; then
+ fixCmakeFiles .;
+ fi;
+ if [ -z "${dontUseCmakeBuildDir-}" ]; then
+ mkdir -p build;
+ cd build;
+ cmakeDir=${cmakeDir:-..};
+ fi;
+ if [ -z "${dontAddPrefix-}" ]; then
+ cmakeFlags="-DCMAKE_INSTALL_PREFIX=$prefix $cmakeFlags";
+ fi;
+ cmakeFlags="-DCMAKE_CXX_COMPILER=$CXX $cmakeFlags";
+ cmakeFlags="-DCMAKE_C_COMPILER=$CC $cmakeFlags";
+ cmakeFlags="-DCMAKE_AR=$(command -v $AR) $cmakeFlags";
+ cmakeFlags="-DCMAKE_RANLIB=$(command -v $RANLIB) $cmakeFlags";
+ cmakeFlags="-DCMAKE_STRIP=$(command -v $STRIP) $cmakeFlags";
+ cmakeFlags="-DCMAKE_FIND_FRAMEWORK=LAST $cmakeFlags";
+ cmakeFlags="-DCMAKE_OSX_SYSROOT= $cmakeFlags";
+ cmakeFlags="-DCMAKE_POLICY_DEFAULT_CMP0025=NEW $cmakeFlags";
+ cmakeFlags="-DCMAKE_INSTALL_NAME_DIR=${!outputLib}/lib $cmakeFlags";
+ if [[ -z "$shareDocName" ]]; then
+ local cmakeLists="${cmakeDir}/CMakeLists.txt";
+ if [[ -f "$cmakeLists" ]]; then
+ local shareDocName="$(grep --only-matching --perl-regexp --ignore-case '\bproject\s*\(\s*"?\K([^[:space:]")]+)' < "$cmakeLists" | head -n1)";
+ fi;
+ if [[ -z "$shareDocName" ]] || echo "$shareDocName" | grep -q '[^a-zA-Z0-9_+-]'; then
+ if [[ -n "${pname-}" ]]; then
+ shareDocName="$pname";
+ else
+ shareDocName="$(echo "$name" | sed 's/-[^a-zA-Z].*//')";
+ fi;
+ fi;
+ fi;
+ cmakeFlags="-DCMAKE_INSTALL_BINDIR=${!outputBin}/bin $cmakeFlags";
+ cmakeFlags="-DCMAKE_INSTALL_SBINDIR=${!outputBin}/sbin $cmakeFlags";
+ cmakeFlags="-DCMAKE_INSTALL_INCLUDEDIR=${!outputInclude}/include $cmakeFlags";
+ cmakeFlags="-DCMAKE_INSTALL_OLDINCLUDEDIR=${!outputInclude}/include $cmakeFlags";
+ cmakeFlags="-DCMAKE_INSTALL_MANDIR=${!outputMan}/share/man $cmakeFlags";
+ cmakeFlags="-DCMAKE_INSTALL_INFODIR=${!outputInfo}/share/info $cmakeFlags";
+ cmakeFlags="-DCMAKE_INSTALL_DOCDIR=${!outputDoc}/share/doc/${shareDocName} $cmakeFlags";
+ cmakeFlags="-DCMAKE_INSTALL_LIBDIR=${!outputLib}/lib $cmakeFlags";
+ cmakeFlags="-DCMAKE_INSTALL_LIBEXECDIR=${!outputLib}/libexec $cmakeFlags";
+ cmakeFlags="-DCMAKE_INSTALL_LOCALEDIR=${!outputLib}/share/locale $cmakeFlags";
+ if [ -z "${doCheck-}" ]; then
+ cmakeFlags="-DBUILD_TESTING=OFF $cmakeFlags";
+ fi;
+ cmakeFlags="-DCMAKE_BUILD_TYPE=${cmakeBuildType:-Release} -DCMAKE_SKIP_BUILD_RPATH=ON $cmakeFlags";
+ cmakeFlags="-DCMAKE_EXPORT_NO_PACKAGE_REGISTRY=ON $cmakeFlags";
+ cmakeFlags="-DCMAKE_FIND_USE_PACKAGE_REGISTRY=OFF $cmakeFlags";
+ cmakeFlags="-DCMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY=OFF $cmakeFlags";
+ if [ "${buildPhase-}" = ninjaBuildPhase ]; then
+ cmakeFlags="-GNinja $cmakeFlags";
+ fi;
+ echo "cmake flags: $cmakeFlags ${cmakeFlagsArray[@]}";
+ cmake ${cmakeDir:-.} $cmakeFlags "${cmakeFlagsArray[@]}";
+ if ! [[ -v enableParallelBuilding ]]; then
+ enableParallelBuilding=1;
+ echo "cmake: enabled parallel building";
+ fi;
+ runHook postConfigure
+}
+compressManPages ()
+{
+
+ local dir="$1";
+ if [ -L "$dir"/share ] || [ -L "$dir"/share/man ] || [ ! -d "$dir/share/man" ]; then
+ return;
+ fi;
+ echo "gzipping man pages under $dir/share/man/";
+ find "$dir"/share/man/ -type f -a '!' -regex '.*\.\(bz2\|gz\|xz\)$' -print0 | while IFS= read -r -d '' f; do
+ if gzip -c -n "$f" > "$f".gz; then
+ rm "$f";
+ else
+ rm "$f".gz;
+ fi;
+ done;
+ find "$dir"/share/man/ -type l -a '!' -regex '.*\.\(bz2\|gz\|xz\)$' -print0 | sort -z | while IFS= read -r -d '' f; do
+ local target;
+ target="$(readlink -f "$f")";
+ if [ -f "$target".gz ]; then
+ ln -sf "$target".gz "$f".gz && rm "$f";
+ fi;
+ done
+}
+configurePhase ()
+{
+
+ runHook preConfigure;
+ : ${configureScript=};
+ : ${configureFlags=};
+ if [[ -z "$configureScript" && -x ./configure ]]; then
+ configureScript=./configure;
+ fi;
+ if [ -z "${dontFixLibtool:-}" ]; then
+ export lt_cv_deplibs_check_method="${lt_cv_deplibs_check_method-pass_all}";
+ local i;
+ find . -iname "ltmain.sh" -print0 | while IFS='' read -r -d '' i; do
+ echo "fixing libtool script $i";
+ fixLibtool "$i";
+ done;
+ fi;
+ if [[ -z "${dontAddPrefix:-}" && -n "$prefix" ]]; then
+ configureFlags="${prefixKey:---prefix=}$prefix $configureFlags";
+ fi;
+ if [[ -f "$configureScript" ]]; then
+ if [ -z "${dontAddDisableDepTrack:-}" ]; then
+ if grep -q dependency-tracking "$configureScript"; then
+ configureFlags="--disable-dependency-tracking $configureFlags";
+ fi;
+ fi;
+ if [ -z "${dontDisableStatic:-}" ]; then
+ if grep -q enable-static "$configureScript"; then
+ configureFlags="--disable-static $configureFlags";
+ fi;
+ fi;
+ fi;
+ if [ -n "$configureScript" ]; then
+ local flagsArray=($configureFlags "${configureFlagsArray[@]}");
+ echoCmd 'configure flags' "${flagsArray[@]}";
+ $configureScript "${flagsArray[@]}";
+ unset flagsArray;
+ else
+ echo "no configure script, doing nothing";
+ fi;
+ runHook postConfigure
+}
+consumeEntire ()
+{
+
+ if IFS='' read -r -d '' $1; then
+ echo "consumeEntire(): ERROR: Input null bytes, won't process" 1>&2;
+ return 1;
+ fi
+}
+distPhase ()
+{
+
+ runHook preDist;
+ local flagsArray=($distFlags "${distFlagsArray[@]}" ${distTarget:-dist});
+ echo 'dist flags: %q' "${flagsArray[@]}";
+ make ${makefile:+-f $makefile} "${flagsArray[@]}";
+ if [ "${dontCopyDist:-0}" != 1 ]; then
+ mkdir -p "$out/tarballs";
+ cp -pvd ${tarballs:-*.tar.gz} "$out/tarballs";
+ fi;
+ runHook postDist
+}
+dropIconThemeCache ()
+{
+
+ if [[ -z "${dontDropIconThemeCache:-}" ]]; then
+ local icondir="${out:?}/share/icons";
+ if [[ -d "${icondir}" ]]; then
+ find "${icondir}" -name 'icon-theme.cache' -print0 | while IFS= read -r -d '' file; do
+ echo "Removing ${file}";
+ rm -f "${file}";
+ done;
+ fi;
+ fi
+}
+dumpVars ()
+{
+
+ if [ "${noDumpEnvVars:-0}" != 1 ]; then
+ export 2> /dev/null >| "$NIX_BUILD_TOP/env-vars" || true;
+ fi
+}
+echoCmd ()
+{
+
+ printf "%s:" "$1";
+ shift;
+ printf ' %q' "$@";
+ echo
+}
+exitHandler ()
+{
+
+ exitCode="$?";
+ set +e;
+ if [ -n "${showBuildStats:-}" ]; then
+ read -r -d '' -a buildTimes < <(times);
+ echo "build times:";
+ echo "user time for the shell ${buildTimes[0]}";
+ echo "system time for the shell ${buildTimes[1]}";
+ echo "user time for all child processes ${buildTimes[2]}";
+ echo "system time for all child processes ${buildTimes[3]}";
+ fi;
+ if (( "$exitCode" != 0 )); then
+ runHook failureHook;
+ if [ -n "${succeedOnFailure:-}" ]; then
+ echo "build failed with exit code $exitCode (ignored)";
+ mkdir -p "$out/nix-support";
+ printf "%s" "$exitCode" > "$out/nix-support/failed";
+ return 0;
+ fi;
+ else
+ runHook exitHook;
+ fi;
+ return "$exitCode"
+}
+findGdkPixbufLoaders ()
+{
+
+ local loadersCache="$1/lib/gdk-pixbuf-2.0/2.10.0/loaders.cache";
+ if [[ -f "$loadersCache" ]]; then
+ if [[ -f "${GDK_PIXBUF_MODULE_FILE-}" ]]; then
+ if (( "$(cat "$loadersCache" | wc -l)" > "$(cat "$GDK_PIXBUF_MODULE_FILE" | wc -l)" )); then
+ export GDK_PIXBUF_MODULE_FILE="$loadersCache";
+ fi;
+ else
+ export GDK_PIXBUF_MODULE_FILE="$loadersCache";
+ fi;
+ fi
+}
+findInputs ()
+{
+
+ local -r pkg="$1";
+ local -r hostOffset="$2";
+ local -r targetOffset="$3";
+ (( hostOffset <= targetOffset )) || exit -1;
+ local varVar="${pkgAccumVarVars[hostOffset + 1]}";
+ local varRef="$varVar[$((targetOffset - hostOffset))]";
+ local var="${!varRef}";
+ unset -v varVar varRef;
+ local varSlice="$var[*]";
+ case "${!varSlice-}" in
+ *" $pkg "*)
+ return 0
+ ;;
+ esac;
+ unset -v varSlice;
+ eval "$var"'+=("$pkg")';
+ if ! [ -e "$pkg" ]; then
+ echo "build input $pkg does not exist" 1>&2;
+ exit 1;
+ fi;
+ function mapOffset ()
+ {
+ local -r inputOffset="$1";
+ local -n outputOffset="$2";
+ if (( inputOffset <= 0 )); then
+ outputOffset=$((inputOffset + hostOffset));
+ else
+ outputOffset=$((inputOffset - 1 + targetOffset));
+ fi
+ };
+ local relHostOffset;
+ for relHostOffset in "${allPlatOffsets[@]}";
+ do
+ local files="${propagatedDepFilesVars[relHostOffset + 1]}";
+ local hostOffsetNext;
+ mapOffset "$relHostOffset" hostOffsetNext;
+ (( -1 <= hostOffsetNext && hostOffsetNext <= 1 )) || continue;
+ local relTargetOffset;
+ for relTargetOffset in "${allPlatOffsets[@]}";
+ do
+ (( "$relHostOffset" <= "$relTargetOffset" )) || continue;
+ local fileRef="${files}[$relTargetOffset - $relHostOffset]";
+ local file="${!fileRef}";
+ unset -v fileRef;
+ local targetOffsetNext;
+ mapOffset "$relTargetOffset" targetOffsetNext;
+ (( -1 <= hostOffsetNext && hostOffsetNext <= 1 )) || continue;
+ [[ -f "$pkg/nix-support/$file" ]] || continue;
+ local pkgNext;
+ read -r -d '' pkgNext < "$pkg/nix-support/$file" || true;
+ for pkgNext in $pkgNext;
+ do
+ findInputs "$pkgNext" "$hostOffsetNext" "$targetOffsetNext";
+ done;
+ done;
+ done
+}
+fixCmakeFiles ()
+{
+
+ echo "fixing cmake files...";
+ find "$1" \( -type f -name "*.cmake" -o -name "*.cmake.in" -o -name CMakeLists.txt \) -print | while read fn; do
+ sed -e 's^/usr\([ /]\|$\)^/var/empty\1^g' -e 's^/opt\([ /]\|$\)^/var/empty\1^g' < "$fn" > "$fn.tmp";
+ mv "$fn.tmp" "$fn";
+ done
+}
+fixLibtool ()
+{
+
+ local search_path;
+ for flag in $NIX_LDFLAGS;
+ do
+ case $flag in
+ -L*)
+ search_path+=" ${flag#-L}"
+ ;;
+ esac;
+ done;
+ sed -i "$1" -e "s^eval \(sys_lib_search_path=\).*^\1'$search_path'^" -e 's^eval sys_lib_.+search_path=.*^^'
+}
+fixupPhase ()
+{
+
+ local output;
+ for output in $outputs;
+ do
+ if [ -e "${!output}" ]; then
+ chmod -R u+w "${!output}";
+ fi;
+ done;
+ runHook preFixup;
+ local output;
+ for output in $outputs;
+ do
+ prefix="${!output}" runHook fixupOutput;
+ done;
+ declare -ra flatVars=(depsBuildBuildPropagated propagatedNativeBuildInputs depsBuildTargetPropagated depsHostHostPropagated propagatedBuildInputs depsTargetTargetPropagated);
+ declare -ra flatFiles=("${propagatedBuildDepFiles[@]}" "${propagatedHostDepFiles[@]}" "${propagatedTargetDepFiles[@]}");
+ local propagatedInputsIndex;
+ for propagatedInputsIndex in "${!flatVars[@]}";
+ do
+ local propagatedInputsSlice="${flatVars[$propagatedInputsIndex]}[@]";
+ local propagatedInputsFile="${flatFiles[$propagatedInputsIndex]}";
+ [[ -n "${!propagatedInputsSlice}" ]] || continue;
+ mkdir -p "${!outputDev}/nix-support";
+ printWords ${!propagatedInputsSlice} > "${!outputDev}/nix-support/$propagatedInputsFile";
+ done;
+ if [ -n "${setupHook:-}" ]; then
+ mkdir -p "${!outputDev}/nix-support";
+ substituteAll "$setupHook" "${!outputDev}/nix-support/setup-hook";
+ fi;
+ if [ -n "${setupHooks:-}" ]; then
+ mkdir -p "${!outputDev}/nix-support";
+ local hook;
+ for hook in $setupHooks;
+ do
+ local content;
+ consumeEntire content < "$hook";
+ substituteAllStream content "file '$hook'" >> "${!outputDev}/nix-support/setup-hook";
+ unset -v content;
+ done;
+ unset -v hook;
+ fi;
+ if [ -n "${propagatedUserEnvPkgs:-}" ]; then
+ mkdir -p "${!outputBin}/nix-support";
+ printWords $propagatedUserEnvPkgs > "${!outputBin}/nix-support/propagated-user-env-packages";
+ fi;
+ runHook postFixup
+}
+genericBuild ()
+{
+
+ if [ -f "${buildCommandPath:-}" ]; then
+ source "$buildCommandPath";
+ return;
+ fi;
+ if [ -n "${buildCommand:-}" ]; then
+ eval "$buildCommand";
+ return;
+ fi;
+ if [ -z "${phases:-}" ]; then
+ phases="${prePhases:-} unpackPhase patchPhase ${preConfigurePhases:-} configurePhase ${preBuildPhases:-} buildPhase checkPhase ${preInstallPhases:-} installPhase ${preFixupPhases:-} fixupPhase installCheckPhase ${preDistPhases:-} distPhase ${postPhases:-}";
+ fi;
+ for curPhase in $phases;
+ do
+ if [[ "$curPhase" = unpackPhase && -n "${dontUnpack:-}" ]]; then
+ continue;
+ fi;
+ if [[ "$curPhase" = patchPhase && -n "${dontPatch:-}" ]]; then
+ continue;
+ fi;
+ if [[ "$curPhase" = configurePhase && -n "${dontConfigure:-}" ]]; then
+ continue;
+ fi;
+ if [[ "$curPhase" = buildPhase && -n "${dontBuild:-}" ]]; then
+ continue;
+ fi;
+ if [[ "$curPhase" = checkPhase && -z "${doCheck:-}" ]]; then
+ continue;
+ fi;
+ if [[ "$curPhase" = installPhase && -n "${dontInstall:-}" ]]; then
+ continue;
+ fi;
+ if [[ "$curPhase" = fixupPhase && -n "${dontFixup:-}" ]]; then
+ continue;
+ fi;
+ if [[ "$curPhase" = installCheckPhase && -z "${doInstallCheck:-}" ]]; then
+ continue;
+ fi;
+ if [[ "$curPhase" = distPhase && -z "${doDist:-}" ]]; then
+ continue;
+ fi;
+ if [[ -n $NIX_LOG_FD ]]; then
+ echo "@nix { \"action\": \"setPhase\", \"phase\": \"$curPhase\" }" 1>&$NIX_LOG_FD;
+ fi;
+ showPhaseHeader "$curPhase";
+ dumpVars;
+ eval "${!curPhase:-$curPhase}";
+ if [ "$curPhase" = unpackPhase ]; then
+ cd "${sourceRoot:-.}";
+ fi;
+ done
+}
+getHostRole ()
+{
+
+ getRole "$hostOffset"
+}
+getHostRoleEnvHook ()
+{
+
+ getRole "$depHostOffset"
+}
+getRole ()
+{
+
+ case $1 in
+ -1)
+ role_post='_FOR_BUILD'
+ ;;
+ 0)
+ role_post=''
+ ;;
+ 1)
+ role_post='_FOR_TARGET'
+ ;;
+ *)
+ echo "pkg-config-wrapper-0.29.2: used as improper sort of dependency" 1>&2;
+ return 1
+ ;;
+ esac
+}
+getTargetRole ()
+{
+
+ getRole "$targetOffset"
+}
+getTargetRoleEnvHook ()
+{
+
+ getRole "$depTargetOffset"
+}
+getTargetRoleWrapper ()
+{
+
+ case $targetOffset in
+ -1)
+ export NIX_PKG_CONFIG_WRAPPER_TARGET_BUILD_x86_64_unknown_linux_gnu=1
+ ;;
+ 0)
+ export NIX_PKG_CONFIG_WRAPPER_TARGET_HOST_x86_64_unknown_linux_gnu=1
+ ;;
+ 1)
+ export NIX_PKG_CONFIG_WRAPPER_TARGET_TARGET_x86_64_unknown_linux_gnu=1
+ ;;
+ *)
+ echo "pkg-config-wrapper-0.29.2: used as improper sort of dependency" 1>&2;
+ return 1
+ ;;
+ esac
+}
+gettextDataDirsHook ()
+{
+
+ getHostRoleEnvHook;
+ if [ -d "$1/share/gettext" ]; then
+ addToSearchPath "GETTEXTDATADIRS${role_post}" "$1/share/gettext";
+ fi
+}
+glibPreFixupPhase ()
+{
+
+ if [ -d "$prefix/share/glib-2.0/schemas" ]; then
+ mkdir -p "${!outputLib}/share/gsettings-schemas/$name/glib-2.0";
+ mv "$prefix/share/glib-2.0/schemas" "${!outputLib}/share/gsettings-schemas/$name/glib-2.0/";
+ fi;
+ addToSearchPath GSETTINGS_SCHEMAS_PATH "${!outputLib}/share/gsettings-schemas/$name"
+}
+glibPreInstallPhase ()
+{
+
+ makeFlagsArray+=("gsettingsschemadir=${!outputLib}/share/gsettings-schemas/$name/glib-2.0/schemas/")
+}
+header ()
+{
+
+ echo "$1"
+}
+installCheckPhase ()
+{
+
+ runHook preInstallCheck;
+ if [[ -z "${foundMakefile:-}" ]]; then
+ echo "no Makefile or custom installCheckPhase, doing nothing";
+ else
+ if [[ -z "${installCheckTarget:-}" ]] && ! make -n ${makefile:+-f $makefile} ${installCheckTarget:-installcheck} > /dev/null 2>&1; then
+ echo "no installcheck target in ${makefile:-Makefile}, doing nothing";
+ else
+ local flagsArray=(${enableParallelChecking:+-j${NIX_BUILD_CORES} -l${NIX_BUILD_CORES}} SHELL=$SHELL $makeFlags "${makeFlagsArray[@]}" $installCheckFlags "${installCheckFlagsArray[@]}" ${installCheckTarget:-installcheck});
+ echoCmd 'installcheck flags' "${flagsArray[@]}";
+ make ${makefile:+-f $makefile} "${flagsArray[@]}";
+ unset flagsArray;
+ fi;
+ fi;
+ runHook postInstallCheck
+}
+installPhase ()
+{
+
+ runHook preInstall;
+ if [ -n "$prefix" ]; then
+ mkdir -p "$prefix";
+ fi;
+ local flagsArray=(SHELL=$SHELL $makeFlags "${makeFlagsArray[@]}" $installFlags "${installFlagsArray[@]}" ${installTargets:-install});
+ echoCmd 'install flags' "${flagsArray[@]}";
+ make ${makefile:+-f $makefile} "${flagsArray[@]}";
+ unset flagsArray;
+ runHook postInstall
+}
+isELF ()
+{
+
+ local fn="$1";
+ local fd;
+ local magic;
+ exec {fd}< "$fn";
+ read -r -n 4 -u "$fd" magic;
+ exec {fd}>&-;
+ if [ "$magic" = 'ELF' ]; then
+ return 0;
+ else
+ return 1;
+ fi
+}
+isMachO ()
+{
+
+ local fn="$1";
+ local fd;
+ local magic;
+ exec {fd}< "$fn";
+ read -r -n 4 -u "$fd" magic;
+ exec {fd}>&-;
+ if [[ "$magic" = $(echo -ne "\xfe\xed\xfa\xcf") || "$magic" = $(echo -ne "\xcf\xfa\xed\xfe") ]]; then
+ return 0;
+ else
+ if [[ "$magic" = $(echo -ne "\xfe\xed\xfa\xce") || "$magic" = $(echo -ne "\xce\xfa\xed\xfe") ]]; then
+ return 0;
+ else
+ if [[ "$magic" = $(echo -ne "\xca\xfe\xba\xbe") || "$magic" = $(echo -ne "\xbe\xba\xfe\xca") ]]; then
+ return 0;
+ else
+ return 1;
+ fi;
+ fi;
+ fi
+}
+isScript ()
+{
+
+ local fn="$1";
+ local fd;
+ local magic;
+ exec {fd}< "$fn";
+ read -r -n 2 -u "$fd" magic;
+ exec {fd}>&-;
+ if [[ "$magic" =~ \#! ]]; then
+ return 0;
+ else
+ return 1;
+ fi
+}
+makeCmakeFindLibs ()
+{
+
+ isystem_seen=;
+ iframework_seen=;
+ for flag in ${NIX_CFLAGS_COMPILE-} ${NIX_LDFLAGS-};
+ do
+ if test -n "$isystem_seen" && test -d "$flag"; then
+ isystem_seen=;
+ export CMAKE_INCLUDE_PATH="${CMAKE_INCLUDE_PATH-}${CMAKE_INCLUDE_PATH:+:}${flag}";
+ else
+ if test -n "$iframework_seen" && test -d "$flag"; then
+ iframework_seen=;
+ export CMAKE_FRAMEWORK_PATH="${CMAKE_FRAMEWORK_PATH-}${CMAKE_FRAMEWORK_PATH:+:}${flag}";
+ else
+ isystem_seen=;
+ iframework_seen=;
+ case $flag in
+ -I*)
+ export CMAKE_INCLUDE_PATH="${CMAKE_INCLUDE_PATH-}${CMAKE_INCLUDE_PATH:+:}${flag:2}"
+ ;;
+ -L*)
+ export CMAKE_LIBRARY_PATH="${CMAKE_LIBRARY_PATH-}${CMAKE_LIBRARY_PATH:+:}${flag:2}"
+ ;;
+ -F*)
+ export CMAKE_FRAMEWORK_PATH="${CMAKE_FRAMEWORK_PATH-}${CMAKE_FRAMEWORK_PATH:+:}${flag:2}"
+ ;;
+ -isystem)
+ isystem_seen=1
+ ;;
+ -iframework)
+ iframework_seen=1
+ ;;
+ esac;
+ fi;
+ fi;
+ done
+}
+make_glib_find_gsettings_schemas ()
+{
+
+ for maybe_dir in "$1"/share/gsettings-schemas/*;
+ do
+ if [[ -d "$maybe_dir/glib-2.0/schemas" ]]; then
+ addToSearchPath GSETTINGS_SCHEMAS_PATH "$maybe_dir";
+ fi;
+ done
+}
+mapOffset ()
+{
+
+ local -r inputOffset="$1";
+ local -n outputOffset="$2";
+ if (( inputOffset <= 0 )); then
+ outputOffset=$((inputOffset + hostOffset));
+ else
+ outputOffset=$((inputOffset - 1 + targetOffset));
+ fi
+}
+moveToOutput ()
+{
+
+ local patt="$1";
+ local dstOut="$2";
+ local output;
+ for output in $outputs;
+ do
+ if [ "${!output}" = "$dstOut" ]; then
+ continue;
+ fi;
+ local srcPath;
+ for srcPath in "${!output}"/$patt;
+ do
+ if [ ! -e "$srcPath" ] && [ ! -L "$srcPath" ]; then
+ continue;
+ fi;
+ if [ "$dstOut" = REMOVE ]; then
+ echo "Removing $srcPath";
+ rm -r "$srcPath";
+ else
+ local dstPath="$dstOut${srcPath#${!output}}";
+ echo "Moving $srcPath to $dstPath";
+ if [ -d "$dstPath" ] && [ -d "$srcPath" ]; then
+ rmdir "$srcPath" --ignore-fail-on-non-empty;
+ if [ -d "$srcPath" ]; then
+ mv -t "$dstPath" "$srcPath"/*;
+ rmdir "$srcPath";
+ fi;
+ else
+ mkdir -p "$(readlink -m "$dstPath/..")";
+ mv "$srcPath" "$dstPath";
+ fi;
+ fi;
+ local srcParent="$(readlink -m "$srcPath/..")";
+ if rmdir "$srcParent"; then
+ echo "Removing empty $srcParent/ and (possibly) its parents";
+ rmdir -p --ignore-fail-on-non-empty "$(readlink -m "$srcParent/..")" 2> /dev/null || true;
+ fi;
+ done;
+ done
+}
+ninjaBuildPhase ()
+{
+
+ runHook preBuild;
+ local buildCores=1;
+ if [ "${enableParallelBuilding-1}" ]; then
+ buildCores="$NIX_BUILD_CORES";
+ fi;
+ local flagsArray=(-j$buildCores -l$NIX_BUILD_CORES $ninjaFlags "${ninjaFlagsArray[@]}");
+ echoCmd 'build flags' "${flagsArray[@]}";
+ ninja "${flagsArray[@]}" | cat;
+ runHook postBuild
+}
+ninjaCheckPhase ()
+{
+
+ runHook preCheck;
+ if [ -z "${checkTarget:-}" ]; then
+ if ninja -t query test > /dev/null 2>&1; then
+ checkTarget=test;
+ fi;
+ fi;
+ if [ -z "${checkTarget:-}" ]; then
+ echo "no test target found in ninja, doing nothing";
+ else
+ local buildCores=1;
+ if [ "${enableParallelChecking-1}" ]; then
+ buildCores="$NIX_BUILD_CORES";
+ fi;
+ local flagsArray=(-j$buildCores -l$NIX_BUILD_CORES $ninjaFlags "${ninjaFlagsArray[@]}" $checkTarget);
+ echoCmd 'check flags' "${flagsArray[@]}";
+ ninja "${flagsArray[@]}" | cat;
+ fi;
+ runHook postCheck
+}
+ninjaInstallPhase ()
+{
+
+ runHook preInstall;
+ local flagsArray=($ninjaFlags "${ninjaFlagsArray[@]}" ${installTargets:-install});
+ echoCmd 'install flags' "${flagsArray[@]}";
+ ninja "${flagsArray[@]}" | cat;
+ runHook postInstall
+}
+patchELF ()
+{
+
+ local dir="$1";
+ [ -e "$dir" ] || return 0;
+ header "shrinking RPATHs of ELF executables and libraries in $dir";
+ local i;
+ while IFS= read -r -d '' i; do
+ if [[ "$i" =~ .build-id ]]; then
+ continue;
+ fi;
+ if ! isELF "$i"; then
+ continue;
+ fi;
+ echo "shrinking $i";
+ patchelf --shrink-rpath "$i" || true;
+ done < <(find "$dir" -type f -print0);
+ stopNest
+}
+patchPhase ()
+{
+
+ runHook prePatch;
+ for i in ${patches:-};
+ do
+ header "applying patch $i" 3;
+ local uncompress=cat;
+ case "$i" in
+ *.gz)
+ uncompress="gzip -d"
+ ;;
+ *.bz2)
+ uncompress="bzip2 -d"
+ ;;
+ *.xz)
+ uncompress="xz -d"
+ ;;
+ *.lzma)
+ uncompress="lzma -d"
+ ;;
+ esac;
+ $uncompress < "$i" 2>&1 | patch ${patchFlags:--p1};
+ done;
+ runHook postPatch
+}
+patchShebangs ()
+{
+
+ local pathName;
+ if [[ "$1" == "--host" ]]; then
+ pathName=HOST_PATH;
+ shift;
+ else
+ if [[ "$1" == "--build" ]]; then
+ pathName=PATH;
+ shift;
+ fi;
+ fi;
+ echo "patching script interpreter paths in $@";
+ local f;
+ local oldPath;
+ local newPath;
+ local arg0;
+ local args;
+ local oldInterpreterLine;
+ local newInterpreterLine;
+ if [[ $# -eq 0 ]]; then
+ echo "No arguments supplied to patchShebangs" 1>&2;
+ return 0;
+ fi;
+ local f;
+ while IFS= read -r -d '' f; do
+ isScript "$f" || continue;
+ read -r oldInterpreterLine < "$f";
+ read -r oldPath arg0 args <<< "${oldInterpreterLine:2}";
+ if [[ -z "$pathName" ]]; then
+ if [[ -n $strictDeps && $f == "$NIX_STORE"* ]]; then
+ pathName=HOST_PATH;
+ else
+ pathName=PATH;
+ fi;
+ fi;
+ if [[ "$oldPath" == *"/bin/env" ]]; then
+ if [[ $arg0 == "-"* || $arg0 == *"="* ]]; then
+ echo "$f: unsupported interpreter directive \"$oldInterpreterLine\" (set dontPatchShebangs=1 and handle shebang patching yourself)" 1>&2;
+ exit 1;
+ fi;
+ newPath="$(PATH="${!pathName}" command -v "$arg0" || true)";
+ else
+ if [[ -z $oldPath ]]; then
+ oldPath="/bin/sh";
+ fi;
+ newPath="$(PATH="${!pathName}" command -v "$(basename "$oldPath")" || true)";
+ args="$arg0 $args";
+ fi;
+ newInterpreterLine="$newPath $args";
+ newInterpreterLine=${newInterpreterLine%${newInterpreterLine##*[![:space:]]}};
+ if [[ -n "$oldPath" && "${oldPath:0:${#NIX_STORE}}" != "$NIX_STORE" ]]; then
+ if [[ -n "$newPath" && "$newPath" != "$oldPath" ]]; then
+ echo "$f: interpreter directive changed from \"$oldInterpreterLine\" to \"$newInterpreterLine\"";
+ escapedInterpreterLine=${newInterpreterLine//\\/\\\\};
+ timestamp=$(stat --printf "%y" "$f");
+ sed -i -e "1 s|.*|#\!$escapedInterpreterLine|" "$f";
+ touch --date "$timestamp" "$f";
+ fi;
+ fi;
+ done < <(find "$@" -type f -perm -0100 -print0);
+ stopNest
+}
+patchShebangsAuto ()
+{
+
+ if [[ -z "${dontPatchShebangs-}" && -e "$prefix" ]]; then
+ if [[ "$output" != out && "$output" = "$outputDev" ]]; then
+ patchShebangs --build "$prefix";
+ else
+ patchShebangs --host "$prefix";
+ fi;
+ fi
+}
+pkgConfigWrapper_addPkgConfigPath ()
+{
+
+ local role_post;
+ getHostRoleEnvHook;
+ addToSearchPath "PKG_CONFIG_PATH${role_post}" "$1/lib/pkgconfig";
+ addToSearchPath "PKG_CONFIG_PATH${role_post}" "$1/share/pkgconfig"
+}
+printLines ()
+{
+
+ (( "$#" > 0 )) || return 0;
+ printf '%s\n' "$@"
+}
+printWords ()
+{
+
+ (( "$#" > 0 )) || return 0;
+ printf '%s ' "$@"
+}
+runHook ()
+{
+
+ local hookName="$1";
+ shift;
+ local hooksSlice="${hookName%Hook}Hooks[@]";
+ local hook;
+ for hook in "_callImplicitHook 0 $hookName" ${!hooksSlice+"${!hooksSlice}"};
+ do
+ _eval "$hook" "$@";
+ done;
+ return 0
+}
+runOneHook ()
+{
+
+ local hookName="$1";
+ shift;
+ local hooksSlice="${hookName%Hook}Hooks[@]";
+ local hook ret=1;
+ for hook in "_callImplicitHook 1 $hookName" ${!hooksSlice+"${!hooksSlice}"};
+ do
+ if _eval "$hook" "$@"; then
+ ret=0;
+ break;
+ fi;
+ done;
+ return "$ret"
+}
+showPhaseHeader ()
+{
+
+ local phase="$1";
+ case "$phase" in
+ unpackPhase)
+ header "unpacking sources"
+ ;;
+ patchPhase)
+ header "patching sources"
+ ;;
+ configurePhase)
+ header "configuring"
+ ;;
+ buildPhase)
+ header "building"
+ ;;
+ checkPhase)
+ header "running tests"
+ ;;
+ installPhase)
+ header "installing"
+ ;;
+ fixupPhase)
+ header "post-installation fixup"
+ ;;
+ installCheckPhase)
+ header "running install tests"
+ ;;
+ *)
+ header "$phase"
+ ;;
+ esac
+}
+stopNest ()
+{
+
+ true
+}
+stripDirs ()
+{
+
+ local cmd="$1";
+ local dirs="$2";
+ local stripFlags="$3";
+ local dirsNew=;
+ local d;
+ for d in ${dirs};
+ do
+ if [ -d "$prefix/$d" ]; then
+ dirsNew="${dirsNew} $prefix/$d ";
+ fi;
+ done;
+ dirs=${dirsNew};
+ if [ -n "${dirs}" ]; then
+ header "stripping (with command $cmd and flags $stripFlags) in$dirs";
+ find $dirs -type f -exec $cmd $stripFlags '{}' \; 2> /dev/null;
+ stopNest;
+ fi
+}
+stripHash ()
+{
+
+ local strippedName casematchOpt=0;
+ strippedName="$(basename -- "$1")";
+ shopt -q nocasematch && casematchOpt=1;
+ shopt -u nocasematch;
+ if [[ "$strippedName" =~ ^[a-z0-9]{32}- ]]; then
+ echo "${strippedName:33}";
+ else
+ echo "$strippedName";
+ fi;
+ if (( casematchOpt )); then
+ shopt -s nocasematch;
+ fi
+}
+substitute ()
+{
+
+ local input="$1";
+ local output="$2";
+ shift 2;
+ if [ ! -f "$input" ]; then
+ echo "substitute(): ERROR: file '$input' does not exist" 1>&2;
+ return 1;
+ fi;
+ local content;
+ consumeEntire content < "$input";
+ if [ -e "$output" ]; then
+ chmod +w "$output";
+ fi;
+ substituteStream content "file '$input'" "$@" > "$output"
+}
+substituteAll ()
+{
+
+ local input="$1";
+ local output="$2";
+ local -a args=();
+ _allFlags;
+ substitute "$input" "$output" "${args[@]}"
+}
+substituteAllInPlace ()
+{
+
+ local fileName="$1";
+ shift;
+ substituteAll "$fileName" "$fileName" "$@"
+}
+substituteAllStream ()
+{
+
+ local -a args=();
+ _allFlags;
+ substituteStream "$1" "$2" "${args[@]}"
+}
+substituteInPlace ()
+{
+
+ local fileName="$1";
+ shift;
+ substitute "$fileName" "$fileName" "$@"
+}
+substituteStream ()
+{
+
+ local var=$1;
+ local description=$2;
+ shift 2;
+ while (( "$#" )); do
+ case "$1" in
+ --replace)
+ pattern="$2";
+ replacement="$3";
+ shift 3;
+ local savedvar;
+ savedvar="${!var}";
+ eval "$var"'=${'"$var"'//"$pattern"/"$replacement"}';
+ if [ "$pattern" != "$replacement" ]; then
+ if [ "${!var}" == "$savedvar" ]; then
+ echo "substituteStream(): WARNING: pattern '$pattern' doesn't match anything in $description" 1>&2;
+ fi;
+ fi
+ ;;
+ --subst-var)
+ local varName="$2";
+ shift 2;
+ if ! [[ "$varName" =~ ^[a-zA-Z_][a-zA-Z0-9_]*$ ]]; then
+ echo "substituteStream(): ERROR: substitution variables must be valid Bash names, \"$varName\" isn't." 1>&2;
+ return 1;
+ fi;
+ if [ -z ${!varName+x} ]; then
+ echo "substituteStream(): ERROR: variable \$$varName is unset" 1>&2;
+ return 1;
+ fi;
+ pattern="@$varName@";
+ replacement="${!varName}";
+ eval "$var"'=${'"$var"'//"$pattern"/"$replacement"}'
+ ;;
+ --subst-var-by)
+ pattern="@$2@";
+ replacement="$3";
+ eval "$var"'=${'"$var"'//"$pattern"/"$replacement"}';
+ shift 3
+ ;;
+ *)
+ echo "substituteStream(): ERROR: Invalid command line argument: $1" 1>&2;
+ return 1
+ ;;
+ esac;
+ done;
+ printf "%s" "${!var}"
+}
+sysconfigdataHook ()
+{
+
+ if [ "$1" = '/nix/store/bvzpppawf2naqv3qhxqv66jxaq3iaxyj-python3-3.9.11' ]; then
+ export _PYTHON_HOST_PLATFORM='linux-x86_64';
+ export _PYTHON_SYSCONFIGDATA_NAME='_sysconfigdata__linux_x86_64-linux-gnu';
+ fi
+}
+toPythonPath ()
+{
+
+ local paths="$1";
+ local result=;
+ for i in $paths;
+ do
+ p="$i/lib/python3.9/site-packages";
+ result="${result}${result:+:}$p";
+ done;
+ echo $result
+}
+unpackFile ()
+{
+
+ curSrc="$1";
+ header "unpacking source archive $curSrc" 3;
+ if ! runOneHook unpackCmd "$curSrc"; then
+ echo "do not know how to unpack source archive $curSrc";
+ exit 1;
+ fi
+}
+unpackPhase ()
+{
+
+ runHook preUnpack;
+ if [ -z "${srcs:-}" ]; then
+ if [ -z "${src:-}" ]; then
+ echo 'variable $src or $srcs should point to the source';
+ exit 1;
+ fi;
+ srcs="$src";
+ fi;
+ local dirsBefore="";
+ for i in *;
+ do
+ if [ -d "$i" ]; then
+ dirsBefore="$dirsBefore $i ";
+ fi;
+ done;
+ for i in $srcs;
+ do
+ unpackFile "$i";
+ done;
+ : ${sourceRoot=};
+ if [ -n "${setSourceRoot:-}" ]; then
+ runOneHook setSourceRoot;
+ else
+ if [ -z "$sourceRoot" ]; then
+ for i in *;
+ do
+ if [ -d "$i" ]; then
+ case $dirsBefore in
+ *\ $i\ *)
+
+ ;;
+ *)
+ if [ -n "$sourceRoot" ]; then
+ echo "unpacker produced multiple directories";
+ exit 1;
+ fi;
+ sourceRoot="$i"
+ ;;
+ esac;
+ fi;
+ done;
+ fi;
+ fi;
+ if [ -z "$sourceRoot" ]; then
+ echo "unpacker appears to have produced no directories";
+ exit 1;
+ fi;
+ echo "source root is $sourceRoot";
+ if [ "${dontMakeSourcesWritable:-0}" != 1 ]; then
+ chmod -R u+w -- "$sourceRoot";
+ fi;
+ runHook postUnpack
+}
+updateSourceDateEpoch ()
+{
+
+ local path="$1";
+ local -a res=($(find "$path" -type f -not -newer "$NIX_BUILD_TOP/.." -printf '%T@ %p\0' | sort -n --zero-terminated | tail -n1 --zero-terminated | head -c -1));
+ local time="${res[0]//\.[0-9]*/}";
+ local newestFile="${res[1]}";
+ if [ "${time:-0}" -gt "$SOURCE_DATE_EPOCH" ]; then
+ echo "setting SOURCE_DATE_EPOCH to timestamp $time of file $newestFile";
+ export SOURCE_DATE_EPOCH="$time";
+ local now="$(date +%s)";
+ if [ "$time" -gt $((now - 60)) ]; then
+ echo "warning: file $newestFile may be generated; SOURCE_DATE_EPOCH may be non-deterministic";
+ fi;
+ fi
+}
+PATH="$PATH:$nix_saved_PATH"
+export NIX_BUILD_TOP="$(mktemp -d -t nix-shell.XXXXXX)"
+export TMP="$NIX_BUILD_TOP"
+export TMPDIR="$NIX_BUILD_TOP"
+export TEMP="$NIX_BUILD_TOP"
+export TEMPDIR="$NIX_BUILD_TOP"
+eval "$shellHook"
diff --git a/.envrc b/.envrc
new file mode 100644
index 0000000..3550a30
--- /dev/null
+++ b/.envrc
@@ -0,0 +1 @@
+use flake
diff --git a/flake.lock b/flake.lock
new file mode 100644
index 0000000..b1054f5
--- /dev/null
+++ b/flake.lock
@@ -0,0 +1,43 @@
+{
+ "nodes": {
+ "flake-utils": {
+ "locked": {
+ "lastModified": 1649676176,
+ "narHash": "sha256-OWKJratjt2RW151VUlJPRALb7OU2S5s+f0vLj4o1bHM=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "a4b154ebbdc88c8498a5c7b01589addc9e9cb678",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "nixpkgs": {
+ "locked": {
+ "lastModified": 1650034868,
+ "narHash": "sha256-OAaf5BdWKGXTXvYnbvJuoQjSWnVKgt1cIOChF0MFt2o=",
+ "owner": "PapaTutuWawa",
+ "repo": "nixpkgs",
+ "rev": "13a5646d450052b88067cab37b198f8a2737e431",
+ "type": "github"
+ },
+ "original": {
+ "owner": "PapaTutuWawa",
+ "ref": "nixos-unstable-flutter-2.13.0-0.1.pre",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "root": {
+ "inputs": {
+ "flake-utils": "flake-utils",
+ "nixpkgs": "nixpkgs"
+ }
+ }
+ },
+ "root": "root",
+ "version": 7
+}
diff --git a/flake.nix b/flake.nix
index ef5f494..fa969aa 100644
--- a/flake.nix
+++ b/flake.nix
@@ -33,8 +33,29 @@
flutterPackages.beta pinnedJDK android.platform-tools flutterPackages.dart-beta # Flutter
gitlint jq # Code hygiene
ripgrep # General utilities
+
+ # Flutter dependencies for linux desktop
+ atk
+ cairo
+ clang
+ cmake
+ epoxy
+ gdk-pixbuf
+ glib
+ gtk3
+ harfbuzz
+ ninja
+ pango
+ pcre
+ pkg-config
+ xorg.libX11
+ xorg.xorgproto
];
+ # Make Flutter build on desktop
+ CPATH = "${pkgs.xorg.libX11.dev}/include:${pkgs.xorg.xorgproto}/include";
+ LD_LIBRARY_PATH = with pkgs; lib.makeLibraryPath [ atk cairo epoxy gdk-pixbuf glib gtk3 harfbuzz pango ];
+
ANDROID_HOME = "${android.androidsdk}/libexec/android-sdk";
JAVA_HOME = pinnedJDK;
ANDROID_AVD_HOME = (toString ./.) + "/.android/avd";
diff --git a/packages/moxdns/.gitignore b/packages/moxdns/.gitignore
new file mode 100644
index 0000000..96486fd
--- /dev/null
+++ b/packages/moxdns/.gitignore
@@ -0,0 +1,30 @@
+# Miscellaneous
+*.class
+*.log
+*.pyc
+*.swp
+.DS_Store
+.atom/
+.buildlog/
+.history
+.svn/
+migrate_working_dir/
+
+# IntelliJ related
+*.iml
+*.ipr
+*.iws
+.idea/
+
+# The .vscode folder contains launch configuration and tasks you configure in
+# VS Code which you may wish to be included in version control, so this line
+# is commented out by default.
+#.vscode/
+
+# Flutter/Dart/Pub related
+# Libraries should not include pubspec.lock, per https://dart.dev/guides/libraries/private-files#pubspeclock.
+/pubspec.lock
+**/doc/api/
+.dart_tool/
+.packages
+build/
diff --git a/packages/moxdns/.metadata b/packages/moxdns/.metadata
new file mode 100644
index 0000000..71c027b
--- /dev/null
+++ b/packages/moxdns/.metadata
@@ -0,0 +1,10 @@
+# This file tracks properties of this Flutter project.
+# Used by Flutter tool to assess capabilities and perform upgrades etc.
+#
+# This file should be version controlled and should not be manually edited.
+
+version:
+ revision: 13a2fb10b838971ce211230f8ffdd094c14af02c
+ channel: beta
+
+project_type: package
diff --git a/packages/moxdns/CHANGELOG.md b/packages/moxdns/CHANGELOG.md
new file mode 100644
index 0000000..41cc7d8
--- /dev/null
+++ b/packages/moxdns/CHANGELOG.md
@@ -0,0 +1,3 @@
+## 0.0.1
+
+* TODO: Describe initial release.
diff --git a/packages/moxdns/LICENSE b/packages/moxdns/LICENSE
new file mode 100644
index 0000000..f288702
--- /dev/null
+++ b/packages/moxdns/LICENSE
@@ -0,0 +1,674 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc.
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+ The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works. By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users. We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors. You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+ To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights. Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received. You must make sure that they, too, receive
+or can get the source code. And you must show them these terms so they
+know their rights.
+
+ Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+ For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software. For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+ Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so. This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software. The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable. Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products. If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+ Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary. To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ TERMS AND CONDITIONS
+
+ 0. Definitions.
+
+ "This License" refers to version 3 of the GNU General Public License.
+
+ "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+ "The Program" refers to any copyrightable work licensed under this
+License. Each licensee is addressed as "you". "Licensees" and
+"recipients" may be individuals or organizations.
+
+ To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy. The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+ A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+ To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy. Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+ To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies. Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+ An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License. If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+ 1. Source Code.
+
+ The "source code" for a work means the preferred form of the work
+for making modifications to it. "Object code" means any non-source
+form of a work.
+
+ A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+ The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form. A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+ The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities. However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work. For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+ The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+ The Corresponding Source for a work in source code form is that
+same work.
+
+ 2. Basic Permissions.
+
+ All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met. This License explicitly affirms your unlimited
+permission to run the unmodified Program. The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work. This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+ You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force. You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright. Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+ Conveying under any other circumstances is permitted solely under
+the conditions stated below. Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+ 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+ No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+ When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+ 4. Conveying Verbatim Copies.
+
+ You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+ You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+ 5. Conveying Modified Source Versions.
+
+ You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+ a) The work must carry prominent notices stating that you modified
+ it, and giving a relevant date.
+
+ b) The work must carry prominent notices stating that it is
+ released under this License and any conditions added under section
+ 7. This requirement modifies the requirement in section 4 to
+ "keep intact all notices".
+
+ c) You must license the entire work, as a whole, under this
+ License to anyone who comes into possession of a copy. This
+ License will therefore apply, along with any applicable section 7
+ additional terms, to the whole of the work, and all its parts,
+ regardless of how they are packaged. This License gives no
+ permission to license the work in any other way, but it does not
+ invalidate such permission if you have separately received it.
+
+ d) If the work has interactive user interfaces, each must display
+ Appropriate Legal Notices; however, if the Program has interactive
+ interfaces that do not display Appropriate Legal Notices, your
+ work need not make them do so.
+
+ A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit. Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+ 6. Conveying Non-Source Forms.
+
+ You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+ a) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by the
+ Corresponding Source fixed on a durable physical medium
+ customarily used for software interchange.
+
+ b) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by a
+ written offer, valid for at least three years and valid for as
+ long as you offer spare parts or customer support for that product
+ model, to give anyone who possesses the object code either (1) a
+ copy of the Corresponding Source for all the software in the
+ product that is covered by this License, on a durable physical
+ medium customarily used for software interchange, for a price no
+ more than your reasonable cost of physically performing this
+ conveying of source, or (2) access to copy the
+ Corresponding Source from a network server at no charge.
+
+ c) Convey individual copies of the object code with a copy of the
+ written offer to provide the Corresponding Source. This
+ alternative is allowed only occasionally and noncommercially, and
+ only if you received the object code with such an offer, in accord
+ with subsection 6b.
+
+ d) Convey the object code by offering access from a designated
+ place (gratis or for a charge), and offer equivalent access to the
+ Corresponding Source in the same way through the same place at no
+ further charge. You need not require recipients to copy the
+ Corresponding Source along with the object code. If the place to
+ copy the object code is a network server, the Corresponding Source
+ may be on a different server (operated by you or a third party)
+ that supports equivalent copying facilities, provided you maintain
+ clear directions next to the object code saying where to find the
+ Corresponding Source. Regardless of what server hosts the
+ Corresponding Source, you remain obligated to ensure that it is
+ available for as long as needed to satisfy these requirements.
+
+ e) Convey the object code using peer-to-peer transmission, provided
+ you inform other peers where the object code and Corresponding
+ Source of the work are being offered to the general public at no
+ charge under subsection 6d.
+
+ A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+ A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling. In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage. For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product. A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+ "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source. The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+ If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information. But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+ The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed. Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+ Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+ 7. Additional Terms.
+
+ "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law. If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+ When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it. (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.) You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+ Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+ a) Disclaiming warranty or limiting liability differently from the
+ terms of sections 15 and 16 of this License; or
+
+ b) Requiring preservation of specified reasonable legal notices or
+ author attributions in that material or in the Appropriate Legal
+ Notices displayed by works containing it; or
+
+ c) Prohibiting misrepresentation of the origin of that material, or
+ requiring that modified versions of such material be marked in
+ reasonable ways as different from the original version; or
+
+ d) Limiting the use for publicity purposes of names of licensors or
+ authors of the material; or
+
+ e) Declining to grant rights under trademark law for use of some
+ trade names, trademarks, or service marks; or
+
+ f) Requiring indemnification of licensors and authors of that
+ material by anyone who conveys the material (or modified versions of
+ it) with contractual assumptions of liability to the recipient, for
+ any liability that these contractual assumptions directly impose on
+ those licensors and authors.
+
+ All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10. If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term. If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+ If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+ Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+ 8. Termination.
+
+ You may not propagate or modify a covered work except as expressly
+provided under this License. Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+ However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+ Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+ Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License. If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+ 9. Acceptance Not Required for Having Copies.
+
+ You are not required to accept this License in order to receive or
+run a copy of the Program. Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance. However,
+nothing other than this License grants you permission to propagate or
+modify any covered work. These actions infringe copyright if you do
+not accept this License. Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+ 10. Automatic Licensing of Downstream Recipients.
+
+ Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License. You are not responsible
+for enforcing compliance by third parties with this License.
+
+ An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations. If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+ You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License. For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+ 11. Patents.
+
+ A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based. The
+work thus licensed is called the contributor's "contributor version".
+
+ A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version. For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+ Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+ In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement). To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+ If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients. "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+ If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+ A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License. You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+ Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+ 12. No Surrender of Others' Freedom.
+
+ If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all. For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+ 13. Use with the GNU Affero General Public License.
+
+ Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work. The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+ 14. Revised Versions of this License.
+
+ The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+ Each version is given a distinguishing version number. If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation. If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+ If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+ Later license versions may give you additional or different
+permissions. However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+ 15. Disclaimer of Warranty.
+
+ THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. Limitation of Liability.
+
+ IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+ 17. Interpretation of Sections 15 and 16.
+
+ If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+
+ Copyright (C)
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see .
+
+Also add information on how to contact you by electronic and paper mail.
+
+ If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+
+ Copyright (C)
+ This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, your program's commands
+might be different; for a GUI interface, you would use an "about box".
+
+ You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+.
+
+ The GNU General Public License does not permit incorporating your program
+into proprietary programs. If your program is a subroutine library, you
+may consider it more useful to permit linking proprietary applications with
+the library. If this is what you want to do, use the GNU Lesser General
+Public License instead of this License. But first, please read
+.
diff --git a/packages/moxdns/README.md b/packages/moxdns/README.md
new file mode 100644
index 0000000..b276b0d
--- /dev/null
+++ b/packages/moxdns/README.md
@@ -0,0 +1,4 @@
+# moxdns
+
+A very small wrapper around platform-"native" methods to perform
+DNS SRV lookups. Not intended for use outside of [Moxxy](https://codeberg.org/moxxy/moxxyv2).
diff --git a/packages/moxdns/analysis_options.yaml b/packages/moxdns/analysis_options.yaml
new file mode 100644
index 0000000..a5744c1
--- /dev/null
+++ b/packages/moxdns/analysis_options.yaml
@@ -0,0 +1,4 @@
+include: package:flutter_lints/flutter.yaml
+
+# Additional information about this file can be found at
+# https://dart.dev/guides/language/analysis-options
diff --git a/packages/moxdns/example/.gitignore b/packages/moxdns/example/.gitignore
new file mode 100644
index 0000000..a8e938c
--- /dev/null
+++ b/packages/moxdns/example/.gitignore
@@ -0,0 +1,47 @@
+# Miscellaneous
+*.class
+*.log
+*.pyc
+*.swp
+.DS_Store
+.atom/
+.buildlog/
+.history
+.svn/
+migrate_working_dir/
+
+# IntelliJ related
+*.iml
+*.ipr
+*.iws
+.idea/
+
+# The .vscode folder contains launch configuration and tasks you configure in
+# VS Code which you may wish to be included in version control, so this line
+# is commented out by default.
+#.vscode/
+
+# Flutter/Dart/Pub related
+**/doc/api/
+**/ios/Flutter/.last_build_id
+.dart_tool/
+.flutter-plugins
+.flutter-plugins-dependencies
+.packages
+.pub-cache/
+.pub/
+/build/
+
+# Web related
+lib/generated_plugin_registrant.dart
+
+# Symbolication related
+app.*.symbols
+
+# Obfuscation related
+app.*.map.json
+
+# Android Studio will place build artifacts here
+/android/app/debug
+/android/app/profile
+/android/app/release
diff --git a/packages/moxdns/example/.metadata b/packages/moxdns/example/.metadata
new file mode 100644
index 0000000..625541c
--- /dev/null
+++ b/packages/moxdns/example/.metadata
@@ -0,0 +1,30 @@
+# This file tracks properties of this Flutter project.
+# Used by Flutter tool to assess capabilities and perform upgrades etc.
+#
+# This file should be version controlled.
+
+version:
+ revision: 13a2fb10b838971ce211230f8ffdd094c14af02c
+ channel: beta
+
+project_type: app
+
+# Tracks metadata for the flutter migrate command
+migration:
+ platforms:
+ - platform: root
+ create_revision: 13a2fb10b838971ce211230f8ffdd094c14af02c
+ base_revision: 13a2fb10b838971ce211230f8ffdd094c14af02c
+ - platform: android
+ create_revision: 13a2fb10b838971ce211230f8ffdd094c14af02c
+ base_revision: 13a2fb10b838971ce211230f8ffdd094c14af02c
+
+ # User provided section
+
+ # List of Local paths (relative to this file) that should be
+ # ignored by the migrate tool.
+ #
+ # Files that are not part of the templates will be ignored by default.
+ unmanaged_files:
+ - 'lib/main.dart'
+ - 'ios/Runner.xcodeproj/project.pbxproj'
diff --git a/packages/moxdns/example/README.md b/packages/moxdns/example/README.md
new file mode 100644
index 0000000..b364785
--- /dev/null
+++ b/packages/moxdns/example/README.md
@@ -0,0 +1,16 @@
+# moxdns_example
+
+A new Flutter project.
+
+## Getting Started
+
+This project is a starting point for a Flutter application.
+
+A few resources to get you started if this is your first Flutter project:
+
+- [Lab: Write your first Flutter app](https://docs.flutter.dev/get-started/codelab)
+- [Cookbook: Useful Flutter samples](https://docs.flutter.dev/cookbook)
+
+For help getting started with Flutter development, view the
+[online documentation](https://docs.flutter.dev/), which offers tutorials,
+samples, guidance on mobile development, and a full API reference.
diff --git a/packages/moxdns/example/analysis_options.yaml b/packages/moxdns/example/analysis_options.yaml
new file mode 100644
index 0000000..61b6c4d
--- /dev/null
+++ b/packages/moxdns/example/analysis_options.yaml
@@ -0,0 +1,29 @@
+# This file configures the analyzer, which statically analyzes Dart code to
+# check for errors, warnings, and lints.
+#
+# The issues identified by the analyzer are surfaced in the UI of Dart-enabled
+# IDEs (https://dart.dev/tools#ides-and-editors). The analyzer can also be
+# invoked from the command line by running `flutter analyze`.
+
+# The following line activates a set of recommended lints for Flutter apps,
+# packages, and plugins designed to encourage good coding practices.
+include: package:flutter_lints/flutter.yaml
+
+linter:
+ # The lint rules applied to this project can be customized in the
+ # section below to disable rules from the `package:flutter_lints/flutter.yaml`
+ # included above or to enable additional rules. A list of all available lints
+ # and their documentation is published at
+ # https://dart-lang.github.io/linter/lints/index.html.
+ #
+ # Instead of disabling a lint rule for the entire project in the
+ # section below, it can also be suppressed for a single line of code
+ # or a specific dart file by using the `// ignore: name_of_lint` and
+ # `// ignore_for_file: name_of_lint` syntax on the line or in the file
+ # producing the lint.
+ rules:
+ # avoid_print: false # Uncomment to disable the `avoid_print` rule
+ # prefer_single_quotes: true # Uncomment to enable the `prefer_single_quotes` rule
+
+# Additional information about this file can be found at
+# https://dart.dev/guides/language/analysis-options
diff --git a/packages/moxdns/example/android/.gitignore b/packages/moxdns/example/android/.gitignore
new file mode 100644
index 0000000..6f56801
--- /dev/null
+++ b/packages/moxdns/example/android/.gitignore
@@ -0,0 +1,13 @@
+gradle-wrapper.jar
+/.gradle
+/captures/
+/gradlew
+/gradlew.bat
+/local.properties
+GeneratedPluginRegistrant.java
+
+# Remember to never publicly share your keystore.
+# See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app
+key.properties
+**/*.keystore
+**/*.jks
diff --git a/packages/moxdns/example/android/app/build.gradle b/packages/moxdns/example/android/app/build.gradle
new file mode 100644
index 0000000..990c2ff
--- /dev/null
+++ b/packages/moxdns/example/android/app/build.gradle
@@ -0,0 +1,71 @@
+def localProperties = new Properties()
+def localPropertiesFile = rootProject.file('local.properties')
+if (localPropertiesFile.exists()) {
+ localPropertiesFile.withReader('UTF-8') { reader ->
+ localProperties.load(reader)
+ }
+}
+
+def flutterRoot = localProperties.getProperty('flutter.sdk')
+if (flutterRoot == null) {
+ throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
+}
+
+def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
+if (flutterVersionCode == null) {
+ flutterVersionCode = '1'
+}
+
+def flutterVersionName = localProperties.getProperty('flutter.versionName')
+if (flutterVersionName == null) {
+ flutterVersionName = '1.0'
+}
+
+apply plugin: 'com.android.application'
+apply plugin: 'kotlin-android'
+apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
+
+android {
+ compileSdkVersion flutter.compileSdkVersion
+ ndkVersion flutter.ndkVersion
+
+ compileOptions {
+ sourceCompatibility JavaVersion.VERSION_1_8
+ targetCompatibility JavaVersion.VERSION_1_8
+ }
+
+ kotlinOptions {
+ jvmTarget = '1.8'
+ }
+
+ sourceSets {
+ main.java.srcDirs += 'src/main/kotlin'
+ }
+
+ defaultConfig {
+ // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
+ applicationId "me.polynom.moxdns_example"
+ // You can update the following values to match your application needs.
+ // For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-build-configuration.
+ minSdkVersion flutter.minSdkVersion
+ targetSdkVersion flutter.targetSdkVersion
+ versionCode flutterVersionCode.toInteger()
+ versionName flutterVersionName
+ }
+
+ buildTypes {
+ release {
+ // TODO: Add your own signing config for the release build.
+ // Signing with the debug keys for now, so `flutter run --release` works.
+ signingConfig signingConfigs.debug
+ }
+ }
+}
+
+flutter {
+ source '../..'
+}
+
+dependencies {
+ implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
+}
diff --git a/packages/moxdns/example/android/app/src/debug/AndroidManifest.xml b/packages/moxdns/example/android/app/src/debug/AndroidManifest.xml
new file mode 100644
index 0000000..1771a3e
--- /dev/null
+++ b/packages/moxdns/example/android/app/src/debug/AndroidManifest.xml
@@ -0,0 +1,8 @@
+
+
+
+
diff --git a/packages/moxdns/example/android/app/src/main/AndroidManifest.xml b/packages/moxdns/example/android/app/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..e9031c7
--- /dev/null
+++ b/packages/moxdns/example/android/app/src/main/AndroidManifest.xml
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/packages/moxdns/example/android/app/src/main/kotlin/me/polynom/moxdns_example/MainActivity.kt b/packages/moxdns/example/android/app/src/main/kotlin/me/polynom/moxdns_example/MainActivity.kt
new file mode 100644
index 0000000..af14989
--- /dev/null
+++ b/packages/moxdns/example/android/app/src/main/kotlin/me/polynom/moxdns_example/MainActivity.kt
@@ -0,0 +1,6 @@
+package me.polynom.moxdns_example
+
+import io.flutter.embedding.android.FlutterActivity
+
+class MainActivity: FlutterActivity() {
+}
diff --git a/packages/moxdns/example/android/app/src/main/res/drawable-v21/launch_background.xml b/packages/moxdns/example/android/app/src/main/res/drawable-v21/launch_background.xml
new file mode 100644
index 0000000..f74085f
--- /dev/null
+++ b/packages/moxdns/example/android/app/src/main/res/drawable-v21/launch_background.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
diff --git a/packages/moxdns/example/android/app/src/main/res/drawable/launch_background.xml b/packages/moxdns/example/android/app/src/main/res/drawable/launch_background.xml
new file mode 100644
index 0000000..304732f
--- /dev/null
+++ b/packages/moxdns/example/android/app/src/main/res/drawable/launch_background.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
diff --git a/packages/moxdns/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/packages/moxdns/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png
new file mode 100644
index 0000000..db77bb4
Binary files /dev/null and b/packages/moxdns/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png differ
diff --git a/packages/moxdns/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/packages/moxdns/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png
new file mode 100644
index 0000000..17987b7
Binary files /dev/null and b/packages/moxdns/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png differ
diff --git a/packages/moxdns/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/packages/moxdns/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
new file mode 100644
index 0000000..09d4391
Binary files /dev/null and b/packages/moxdns/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png differ
diff --git a/packages/moxdns/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/packages/moxdns/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
new file mode 100644
index 0000000..d5f1c8d
Binary files /dev/null and b/packages/moxdns/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png differ
diff --git a/packages/moxdns/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/packages/moxdns/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
new file mode 100644
index 0000000..4d6372e
Binary files /dev/null and b/packages/moxdns/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ
diff --git a/packages/moxdns/example/android/app/src/main/res/values-night/styles.xml b/packages/moxdns/example/android/app/src/main/res/values-night/styles.xml
new file mode 100644
index 0000000..06952be
--- /dev/null
+++ b/packages/moxdns/example/android/app/src/main/res/values-night/styles.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
diff --git a/packages/moxdns/example/android/app/src/main/res/values/styles.xml b/packages/moxdns/example/android/app/src/main/res/values/styles.xml
new file mode 100644
index 0000000..cb1ef88
--- /dev/null
+++ b/packages/moxdns/example/android/app/src/main/res/values/styles.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
diff --git a/packages/moxdns/example/android/app/src/profile/AndroidManifest.xml b/packages/moxdns/example/android/app/src/profile/AndroidManifest.xml
new file mode 100644
index 0000000..1771a3e
--- /dev/null
+++ b/packages/moxdns/example/android/app/src/profile/AndroidManifest.xml
@@ -0,0 +1,8 @@
+
+
+
+
diff --git a/packages/moxdns/example/android/build.gradle b/packages/moxdns/example/android/build.gradle
new file mode 100644
index 0000000..83ae220
--- /dev/null
+++ b/packages/moxdns/example/android/build.gradle
@@ -0,0 +1,31 @@
+buildscript {
+ ext.kotlin_version = '1.6.10'
+ repositories {
+ google()
+ mavenCentral()
+ }
+
+ dependencies {
+ classpath 'com.android.tools.build:gradle:7.1.2'
+ classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
+ }
+}
+
+allprojects {
+ repositories {
+ google()
+ mavenCentral()
+ }
+}
+
+rootProject.buildDir = '../build'
+subprojects {
+ project.buildDir = "${rootProject.buildDir}/${project.name}"
+}
+subprojects {
+ project.evaluationDependsOn(':app')
+}
+
+task clean(type: Delete) {
+ delete rootProject.buildDir
+}
diff --git a/packages/moxdns/example/android/gradle.properties b/packages/moxdns/example/android/gradle.properties
new file mode 100644
index 0000000..94adc3a
--- /dev/null
+++ b/packages/moxdns/example/android/gradle.properties
@@ -0,0 +1,3 @@
+org.gradle.jvmargs=-Xmx1536M
+android.useAndroidX=true
+android.enableJetifier=true
diff --git a/packages/moxdns/example/android/gradle/wrapper/gradle-wrapper.properties b/packages/moxdns/example/android/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 0000000..cc5527d
--- /dev/null
+++ b/packages/moxdns/example/android/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,6 @@
+#Fri Jun 23 08:50:38 CEST 2017
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-all.zip
diff --git a/packages/moxdns/example/android/settings.gradle b/packages/moxdns/example/android/settings.gradle
new file mode 100644
index 0000000..44e62bc
--- /dev/null
+++ b/packages/moxdns/example/android/settings.gradle
@@ -0,0 +1,11 @@
+include ':app'
+
+def localPropertiesFile = new File(rootProject.projectDir, "local.properties")
+def properties = new Properties()
+
+assert localPropertiesFile.exists()
+localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) }
+
+def flutterSdkPath = properties.getProperty("flutter.sdk")
+assert flutterSdkPath != null, "flutter.sdk not set in local.properties"
+apply from: "$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle"
diff --git a/packages/moxdns/example/lib/main.dart b/packages/moxdns/example/lib/main.dart
new file mode 100644
index 0000000..c8688fe
--- /dev/null
+++ b/packages/moxdns/example/lib/main.dart
@@ -0,0 +1,113 @@
+import 'package:flutter/material.dart';
+
+import "package:moxdns/moxdns.dart";
+
+void main() {
+ runApp(const MyApp());
+}
+
+class MyApp extends StatelessWidget {
+ const MyApp({Key? key}) : super(key: key);
+
+ // This widget is the root of your application.
+ @override
+ Widget build(BuildContext context) {
+ return MaterialApp(
+ title: 'Flutter Demo',
+ theme: ThemeData(
+ // This is the theme of your application.
+ //
+ // Try running your application with "flutter run". You'll see the
+ // application has a blue toolbar. Then, without quitting the app, try
+ // changing the primarySwatch below to Colors.green and then invoke
+ // "hot reload" (press "r" in the console where you ran "flutter run",
+ // or simply save your changes to "hot reload" in a Flutter IDE).
+ // Notice that the counter didn't reset back to zero; the application
+ // is not restarted.
+ primarySwatch: Colors.blue,
+ ),
+ home: const MyHomePage(title: 'Flutter Demo Home Page'),
+ );
+ }
+}
+
+class MyHomePage extends StatefulWidget {
+ const MyHomePage({Key? key, required this.title}) : super(key: key);
+
+ // This widget is the home page of your application. It is stateful, meaning
+ // that it has a State object (defined below) that contains fields that affect
+ // how it looks.
+
+ // This class is the configuration for the state. It holds the values (in this
+ // case the title) provided by the parent (in this case the App widget) and
+ // used by the build method of the State. Fields in a Widget subclass are
+ // always marked "final".
+
+ final String title;
+
+ @override
+ State createState() => _MyHomePageState();
+}
+
+class _MyHomePageState extends State {
+ int _counter = 0;
+
+ Future _query() async {
+ final results = await MoxdnsPlugin.srvQuery("_xmpps-client._tcp.disroot.org", false);
+ for (final r in results) {
+ print("- ${r.target}:${r.port}");
+ }
+ }
+
+ @override
+ Widget build(BuildContext context) {
+ // This method is rerun every time setState is called, for instance as done
+ // by the _incrementCounter method above.
+ //
+ // The Flutter framework has been optimized to make rerunning build methods
+ // fast, so that you can just rebuild anything that needs updating rather
+ // than having to individually change instances of widgets.
+ return Scaffold(
+ appBar: AppBar(
+ // Here we take the value from the MyHomePage object that was created by
+ // the App.build method, and use it to set our appbar title.
+ title: Text(widget.title),
+ ),
+ body: Center(
+ // Center is a layout widget. It takes a single child and positions it
+ // in the middle of the parent.
+ child: Column(
+ // Column is also a layout widget. It takes a list of children and
+ // arranges them vertically. By default, it sizes itself to fit its
+ // children horizontally, and tries to be as tall as its parent.
+ //
+ // Invoke "debug painting" (press "p" in the console, choose the
+ // "Toggle Debug Paint" action from the Flutter Inspector in Android
+ // Studio, or the "Toggle Debug Paint" command in Visual Studio Code)
+ // to see the wireframe for each widget.
+ //
+ // Column has various properties to control how it sizes itself and
+ // how it positions its children. Here we use mainAxisAlignment to
+ // center the children vertically; the main axis here is the vertical
+ // axis because Columns are vertical (the cross axis would be
+ // horizontal).
+ mainAxisAlignment: MainAxisAlignment.center,
+ children: [
+ const Text(
+ 'You have pushed the button this many times:',
+ ),
+ Text(
+ '$_counter',
+ style: Theme.of(context).textTheme.headline4,
+ ),
+ ],
+ ),
+ ),
+ floatingActionButton: FloatingActionButton(
+ onPressed: _query,
+ tooltip: 'Increment',
+ child: const Icon(Icons.add),
+ ), // This trailing comma makes auto-formatting nicer for build methods.
+ );
+ }
+}
diff --git a/packages/moxdns/example/pubspec.lock b/packages/moxdns/example/pubspec.lock
new file mode 100644
index 0000000..1fcb6b9
--- /dev/null
+++ b/packages/moxdns/example/pubspec.lock
@@ -0,0 +1,196 @@
+# Generated by pub
+# See https://dart.dev/tools/pub/glossary#lockfile
+packages:
+ async:
+ dependency: transitive
+ description:
+ name: async
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "2.8.2"
+ boolean_selector:
+ dependency: transitive
+ description:
+ name: boolean_selector
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "2.1.0"
+ characters:
+ dependency: transitive
+ description:
+ name: characters
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "1.2.0"
+ charcode:
+ dependency: transitive
+ description:
+ name: charcode
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "1.3.1"
+ clock:
+ dependency: transitive
+ description:
+ name: clock
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "1.1.0"
+ collection:
+ dependency: transitive
+ description:
+ name: collection
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "1.16.0"
+ cupertino_icons:
+ dependency: "direct main"
+ description:
+ name: cupertino_icons
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "1.0.4"
+ fake_async:
+ dependency: transitive
+ description:
+ name: fake_async
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "1.3.0"
+ flutter:
+ dependency: "direct main"
+ description: flutter
+ source: sdk
+ version: "0.0.0"
+ flutter_lints:
+ dependency: "direct dev"
+ description:
+ name: flutter_lints
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "2.0.1"
+ flutter_test:
+ dependency: "direct dev"
+ description: flutter
+ source: sdk
+ version: "0.0.0"
+ lints:
+ dependency: transitive
+ description:
+ name: lints
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "2.0.0"
+ matcher:
+ dependency: transitive
+ description:
+ name: matcher
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "0.12.11"
+ material_color_utilities:
+ dependency: transitive
+ description:
+ name: material_color_utilities
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "0.1.4"
+ meta:
+ dependency: transitive
+ description:
+ name: meta
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "1.7.0"
+ moxdns:
+ dependency: "direct main"
+ description:
+ path: ".."
+ relative: true
+ source: path
+ version: "0.1.0"
+ moxdns_android:
+ dependency: transitive
+ description:
+ path: "../../moxdns_android"
+ relative: true
+ source: path
+ version: "0.0.1"
+ moxdns_platform_interface:
+ dependency: transitive
+ description:
+ path: "../../moxdns_platform_interface"
+ relative: true
+ source: path
+ version: "0.1.0"
+ path:
+ dependency: transitive
+ description:
+ name: path
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "1.8.1"
+ plugin_platform_interface:
+ dependency: transitive
+ description:
+ name: plugin_platform_interface
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "2.1.0"
+ sky_engine:
+ dependency: transitive
+ description: flutter
+ source: sdk
+ version: "0.0.99"
+ source_span:
+ dependency: transitive
+ description:
+ name: source_span
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "1.8.2"
+ stack_trace:
+ dependency: transitive
+ description:
+ name: stack_trace
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "1.10.0"
+ stream_channel:
+ dependency: transitive
+ description:
+ name: stream_channel
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "2.1.0"
+ string_scanner:
+ dependency: transitive
+ description:
+ name: string_scanner
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "1.1.0"
+ term_glyph:
+ dependency: transitive
+ description:
+ name: term_glyph
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "1.2.0"
+ test_api:
+ dependency: transitive
+ description:
+ name: test_api
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "0.4.9"
+ vector_math:
+ dependency: transitive
+ description:
+ name: vector_math
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "2.1.2"
+sdks:
+ dart: ">=2.17.0-266.1.beta <3.0.0"
+ flutter: ">=2.5.0"
diff --git a/packages/moxdns/example/pubspec.yaml b/packages/moxdns/example/pubspec.yaml
new file mode 100644
index 0000000..fed7053
--- /dev/null
+++ b/packages/moxdns/example/pubspec.yaml
@@ -0,0 +1,91 @@
+name: moxdns_example
+description: A new Flutter project.
+
+# The following line prevents the package from being accidentally published to
+# pub.dev using `flutter pub publish`. This is preferred for private packages.
+publish_to: 'none' # Remove this line if you wish to publish to pub.dev
+
+# The following defines the version and build number for your application.
+# A version number is three numbers separated by dots, like 1.2.43
+# followed by an optional build number separated by a +.
+# Both the version and the builder number may be overridden in flutter
+# build by specifying --build-name and --build-number, respectively.
+# In Android, build-name is used as versionName while build-number used as versionCode.
+# Read more about Android versioning at https://developer.android.com/studio/publish/versioning
+# In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion.
+# Read more about iOS versioning at
+# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
+version: 1.0.0+1
+
+environment:
+ sdk: ">=2.17.0-266.1.beta <3.0.0"
+
+# Dependencies specify other packages that your package needs in order to work.
+# To automatically upgrade your package dependencies to the latest versions
+# consider running `flutter pub upgrade --major-versions`. Alternatively,
+# dependencies can be manually updated by changing the version numbers below to
+# the latest version available on pub.dev. To see which dependencies have newer
+# versions available, run `flutter pub outdated`.
+dependencies:
+ flutter:
+ sdk: flutter
+
+ moxdns:
+ path: ../
+
+ # The following adds the Cupertino Icons font to your application.
+ # Use with the CupertinoIcons class for iOS style icons.
+ cupertino_icons: ^1.0.2
+
+dev_dependencies:
+ flutter_test:
+ sdk: flutter
+
+ # The "flutter_lints" package below contains a set of recommended lints to
+ # encourage good coding practices. The lint set provided by the package is
+ # activated in the `analysis_options.yaml` file located at the root of your
+ # package. See that file for information about deactivating specific lint
+ # rules and activating additional ones.
+ flutter_lints: ^2.0.0
+
+# For information on the generic Dart part of this file, see the
+# following page: https://dart.dev/tools/pub/pubspec
+
+# The following section is specific to Flutter packages.
+flutter:
+
+ # The following line ensures that the Material Icons font is
+ # included with your application, so that you can use the icons in
+ # the material Icons class.
+ uses-material-design: true
+
+ # To add assets to your application, add an assets section, like this:
+ # assets:
+ # - images/a_dot_burr.jpeg
+ # - images/a_dot_ham.jpeg
+
+ # An image asset can refer to one or more resolution-specific "variants", see
+ # https://flutter.dev/assets-and-images/#resolution-aware
+
+ # For details regarding adding assets from package dependencies, see
+ # https://flutter.dev/assets-and-images/#from-packages
+
+ # To add custom fonts to your application, add a fonts section here,
+ # in this "flutter" section. Each entry in this list should have a
+ # "family" key with the font family name, and a "fonts" key with a
+ # list giving the asset and other descriptors for the font. For
+ # example:
+ # fonts:
+ # - family: Schyler
+ # fonts:
+ # - asset: fonts/Schyler-Regular.ttf
+ # - asset: fonts/Schyler-Italic.ttf
+ # style: italic
+ # - family: Trajan Pro
+ # fonts:
+ # - asset: fonts/TrajanPro.ttf
+ # - asset: fonts/TrajanPro_Bold.ttf
+ # weight: 700
+ #
+ # For details regarding fonts from package dependencies,
+ # see https://flutter.dev/custom-fonts/#from-packages
diff --git a/packages/moxdns/example/test/widget_test.dart b/packages/moxdns/example/test/widget_test.dart
new file mode 100644
index 0000000..1658cc4
--- /dev/null
+++ b/packages/moxdns/example/test/widget_test.dart
@@ -0,0 +1,30 @@
+// This is a basic Flutter widget test.
+//
+// To perform an interaction with a widget in your test, use the WidgetTester
+// utility in the flutter_test package. For example, you can send tap and scroll
+// gestures. You can also use WidgetTester to find child widgets in the widget
+// tree, read text, and verify that the values of widget properties are correct.
+
+import 'package:flutter/material.dart';
+import 'package:flutter_test/flutter_test.dart';
+
+import 'package:moxdns_example/main.dart';
+
+void main() {
+ testWidgets('Counter increments smoke test', (WidgetTester tester) async {
+ // Build our app and trigger a frame.
+ await tester.pumpWidget(const MyApp());
+
+ // Verify that our counter starts at 0.
+ expect(find.text('0'), findsOneWidget);
+ expect(find.text('1'), findsNothing);
+
+ // Tap the '+' icon and trigger a frame.
+ await tester.tap(find.byIcon(Icons.add));
+ await tester.pump();
+
+ // Verify that our counter has incremented.
+ expect(find.text('0'), findsNothing);
+ expect(find.text('1'), findsOneWidget);
+ });
+}
diff --git a/packages/moxdns/lib/moxdns.dart b/packages/moxdns/lib/moxdns.dart
new file mode 100644
index 0000000..02b1567
--- /dev/null
+++ b/packages/moxdns/lib/moxdns.dart
@@ -0,0 +1,24 @@
+import "package:moxdns_platform_interface/moxdns_platform_interface.dart";
+
+export "package:moxdns_platform_interface/moxdns_platform_interface.dart" show SrvRecord;
+
+class MoxdnsStubPlugin extends MoxdnsPlatform {
+ @override
+ Future> srvQuery(String domain, bool dnssec) async => const [];
+}
+
+abstract class MoxdnsPlugin {
+ static MoxdnsPlatform _platform = MoxdnsStubPlugin();
+
+ static MoxdnsPlatform get platform => _platform;
+
+ static set platform(MoxdnsPlatform platform) {
+ _platform = platform;
+ }
+
+ /// Perform a DNS SRV query for [domain], optionally using DNSSEC if [dnssec] is true.
+ /// The order of the results is abitrary.
+ static Future> srvQuery(String domain, bool dnssec) async {
+ return await platform.srvQuery(domain, dnssec);
+ }
+}
diff --git a/packages/moxdns/pubspec.yaml b/packages/moxdns/pubspec.yaml
new file mode 100644
index 0000000..4366401
--- /dev/null
+++ b/packages/moxdns/pubspec.yaml
@@ -0,0 +1,29 @@
+name: moxdns
+description: A simple wrapper over platform native DNS methods
+version: 0.1.0
+homepage:
+
+environment:
+ sdk: ">=2.17.0-266.1.beta <3.0.0"
+ flutter: ">=1.17.0"
+
+flutter:
+ plugin:
+ platforms:
+ android:
+ default_package: moxdns_android
+
+dependencies:
+ flutter:
+ sdk: flutter
+
+ moxdns_platform_interface:
+ path: ../moxdns_platform_interface
+ moxdns_android:
+ path: ../moxdns_android
+
+
+dev_dependencies:
+ flutter_test:
+ sdk: flutter
+ flutter_lints: ^2.0.0
diff --git a/packages/moxdns_android/.gitignore b/packages/moxdns_android/.gitignore
new file mode 100644
index 0000000..96486fd
--- /dev/null
+++ b/packages/moxdns_android/.gitignore
@@ -0,0 +1,30 @@
+# Miscellaneous
+*.class
+*.log
+*.pyc
+*.swp
+.DS_Store
+.atom/
+.buildlog/
+.history
+.svn/
+migrate_working_dir/
+
+# IntelliJ related
+*.iml
+*.ipr
+*.iws
+.idea/
+
+# The .vscode folder contains launch configuration and tasks you configure in
+# VS Code which you may wish to be included in version control, so this line
+# is commented out by default.
+#.vscode/
+
+# Flutter/Dart/Pub related
+# Libraries should not include pubspec.lock, per https://dart.dev/guides/libraries/private-files#pubspeclock.
+/pubspec.lock
+**/doc/api/
+.dart_tool/
+.packages
+build/
diff --git a/packages/moxdns_android/.metadata b/packages/moxdns_android/.metadata
new file mode 100644
index 0000000..d460894
--- /dev/null
+++ b/packages/moxdns_android/.metadata
@@ -0,0 +1,30 @@
+# This file tracks properties of this Flutter project.
+# Used by Flutter tool to assess capabilities and perform upgrades etc.
+#
+# This file should be version controlled.
+
+version:
+ revision: 13a2fb10b838971ce211230f8ffdd094c14af02c
+ channel: beta
+
+project_type: plugin
+
+# Tracks metadata for the flutter migrate command
+migration:
+ platforms:
+ - platform: root
+ create_revision: 13a2fb10b838971ce211230f8ffdd094c14af02c
+ base_revision: 13a2fb10b838971ce211230f8ffdd094c14af02c
+ - platform: android
+ create_revision: 13a2fb10b838971ce211230f8ffdd094c14af02c
+ base_revision: 13a2fb10b838971ce211230f8ffdd094c14af02c
+
+ # User provided section
+
+ # List of Local paths (relative to this file) that should be
+ # ignored by the migrate tool.
+ #
+ # Files that are not part of the templates will be ignored by default.
+ unmanaged_files:
+ - 'lib/main.dart'
+ - 'ios/Runner.xcodeproj/project.pbxproj'
diff --git a/packages/moxdns_android/CHANGELOG.md b/packages/moxdns_android/CHANGELOG.md
new file mode 100644
index 0000000..41cc7d8
--- /dev/null
+++ b/packages/moxdns_android/CHANGELOG.md
@@ -0,0 +1,3 @@
+## 0.0.1
+
+* TODO: Describe initial release.
diff --git a/packages/moxdns_android/LICENSE b/packages/moxdns_android/LICENSE
new file mode 100644
index 0000000..f288702
--- /dev/null
+++ b/packages/moxdns_android/LICENSE
@@ -0,0 +1,674 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc.
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+ The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works. By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users. We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors. You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+ To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights. Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received. You must make sure that they, too, receive
+or can get the source code. And you must show them these terms so they
+know their rights.
+
+ Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+ For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software. For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+ Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so. This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software. The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable. Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products. If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+ Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary. To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ TERMS AND CONDITIONS
+
+ 0. Definitions.
+
+ "This License" refers to version 3 of the GNU General Public License.
+
+ "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+ "The Program" refers to any copyrightable work licensed under this
+License. Each licensee is addressed as "you". "Licensees" and
+"recipients" may be individuals or organizations.
+
+ To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy. The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+ A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+ To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy. Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+ To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies. Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+ An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License. If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+ 1. Source Code.
+
+ The "source code" for a work means the preferred form of the work
+for making modifications to it. "Object code" means any non-source
+form of a work.
+
+ A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+ The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form. A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+ The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities. However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work. For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+ The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+ The Corresponding Source for a work in source code form is that
+same work.
+
+ 2. Basic Permissions.
+
+ All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met. This License explicitly affirms your unlimited
+permission to run the unmodified Program. The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work. This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+ You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force. You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright. Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+ Conveying under any other circumstances is permitted solely under
+the conditions stated below. Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+ 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+ No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+ When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+ 4. Conveying Verbatim Copies.
+
+ You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+ You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+ 5. Conveying Modified Source Versions.
+
+ You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+ a) The work must carry prominent notices stating that you modified
+ it, and giving a relevant date.
+
+ b) The work must carry prominent notices stating that it is
+ released under this License and any conditions added under section
+ 7. This requirement modifies the requirement in section 4 to
+ "keep intact all notices".
+
+ c) You must license the entire work, as a whole, under this
+ License to anyone who comes into possession of a copy. This
+ License will therefore apply, along with any applicable section 7
+ additional terms, to the whole of the work, and all its parts,
+ regardless of how they are packaged. This License gives no
+ permission to license the work in any other way, but it does not
+ invalidate such permission if you have separately received it.
+
+ d) If the work has interactive user interfaces, each must display
+ Appropriate Legal Notices; however, if the Program has interactive
+ interfaces that do not display Appropriate Legal Notices, your
+ work need not make them do so.
+
+ A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit. Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+ 6. Conveying Non-Source Forms.
+
+ You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+ a) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by the
+ Corresponding Source fixed on a durable physical medium
+ customarily used for software interchange.
+
+ b) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by a
+ written offer, valid for at least three years and valid for as
+ long as you offer spare parts or customer support for that product
+ model, to give anyone who possesses the object code either (1) a
+ copy of the Corresponding Source for all the software in the
+ product that is covered by this License, on a durable physical
+ medium customarily used for software interchange, for a price no
+ more than your reasonable cost of physically performing this
+ conveying of source, or (2) access to copy the
+ Corresponding Source from a network server at no charge.
+
+ c) Convey individual copies of the object code with a copy of the
+ written offer to provide the Corresponding Source. This
+ alternative is allowed only occasionally and noncommercially, and
+ only if you received the object code with such an offer, in accord
+ with subsection 6b.
+
+ d) Convey the object code by offering access from a designated
+ place (gratis or for a charge), and offer equivalent access to the
+ Corresponding Source in the same way through the same place at no
+ further charge. You need not require recipients to copy the
+ Corresponding Source along with the object code. If the place to
+ copy the object code is a network server, the Corresponding Source
+ may be on a different server (operated by you or a third party)
+ that supports equivalent copying facilities, provided you maintain
+ clear directions next to the object code saying where to find the
+ Corresponding Source. Regardless of what server hosts the
+ Corresponding Source, you remain obligated to ensure that it is
+ available for as long as needed to satisfy these requirements.
+
+ e) Convey the object code using peer-to-peer transmission, provided
+ you inform other peers where the object code and Corresponding
+ Source of the work are being offered to the general public at no
+ charge under subsection 6d.
+
+ A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+ A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling. In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage. For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product. A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+ "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source. The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+ If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information. But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+ The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed. Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+ Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+ 7. Additional Terms.
+
+ "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law. If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+ When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it. (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.) You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+ Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+ a) Disclaiming warranty or limiting liability differently from the
+ terms of sections 15 and 16 of this License; or
+
+ b) Requiring preservation of specified reasonable legal notices or
+ author attributions in that material or in the Appropriate Legal
+ Notices displayed by works containing it; or
+
+ c) Prohibiting misrepresentation of the origin of that material, or
+ requiring that modified versions of such material be marked in
+ reasonable ways as different from the original version; or
+
+ d) Limiting the use for publicity purposes of names of licensors or
+ authors of the material; or
+
+ e) Declining to grant rights under trademark law for use of some
+ trade names, trademarks, or service marks; or
+
+ f) Requiring indemnification of licensors and authors of that
+ material by anyone who conveys the material (or modified versions of
+ it) with contractual assumptions of liability to the recipient, for
+ any liability that these contractual assumptions directly impose on
+ those licensors and authors.
+
+ All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10. If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term. If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+ If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+ Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+ 8. Termination.
+
+ You may not propagate or modify a covered work except as expressly
+provided under this License. Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+ However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+ Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+ Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License. If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+ 9. Acceptance Not Required for Having Copies.
+
+ You are not required to accept this License in order to receive or
+run a copy of the Program. Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance. However,
+nothing other than this License grants you permission to propagate or
+modify any covered work. These actions infringe copyright if you do
+not accept this License. Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+ 10. Automatic Licensing of Downstream Recipients.
+
+ Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License. You are not responsible
+for enforcing compliance by third parties with this License.
+
+ An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations. If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+ You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License. For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+ 11. Patents.
+
+ A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based. The
+work thus licensed is called the contributor's "contributor version".
+
+ A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version. For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+ Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+ In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement). To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+ If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients. "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+ If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+ A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License. You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+ Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+ 12. No Surrender of Others' Freedom.
+
+ If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all. For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+ 13. Use with the GNU Affero General Public License.
+
+ Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work. The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+ 14. Revised Versions of this License.
+
+ The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+ Each version is given a distinguishing version number. If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation. If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+ If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+ Later license versions may give you additional or different
+permissions. However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+ 15. Disclaimer of Warranty.
+
+ THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. Limitation of Liability.
+
+ IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+ 17. Interpretation of Sections 15 and 16.
+
+ If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+
+ Copyright (C)
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see .
+
+Also add information on how to contact you by electronic and paper mail.
+
+ If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+
+ Copyright (C)
+ This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, your program's commands
+might be different; for a GUI interface, you would use an "about box".
+
+ You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+.
+
+ The GNU General Public License does not permit incorporating your program
+into proprietary programs. If your program is a subroutine library, you
+may consider it more useful to permit linking proprietary applications with
+the library. If this is what you want to do, use the GNU Lesser General
+Public License instead of this License. But first, please read
+.
diff --git a/packages/moxdns_android/analysis_options.yaml b/packages/moxdns_android/analysis_options.yaml
new file mode 100644
index 0000000..a5744c1
--- /dev/null
+++ b/packages/moxdns_android/analysis_options.yaml
@@ -0,0 +1,4 @@
+include: package:flutter_lints/flutter.yaml
+
+# Additional information about this file can be found at
+# https://dart.dev/guides/language/analysis-options
diff --git a/packages/moxdns_android/android/.gitignore b/packages/moxdns_android/android/.gitignore
new file mode 100644
index 0000000..161bdcd
--- /dev/null
+++ b/packages/moxdns_android/android/.gitignore
@@ -0,0 +1,9 @@
+*.iml
+.gradle
+/local.properties
+/.idea/workspace.xml
+/.idea/libraries
+.DS_Store
+/build
+/captures
+.cxx
diff --git a/packages/moxdns_android/android/build.gradle b/packages/moxdns_android/android/build.gradle
new file mode 100644
index 0000000..651bbcb
--- /dev/null
+++ b/packages/moxdns_android/android/build.gradle
@@ -0,0 +1,39 @@
+group 'me.polynom.moxdns_android'
+version '1.0'
+
+buildscript {
+ repositories {
+ google()
+ mavenCentral()
+ }
+
+ dependencies {
+ classpath 'com.android.tools.build:gradle:4.1.0'
+ }
+}
+
+rootProject.allprojects {
+ repositories {
+ google()
+ mavenCentral()
+ }
+}
+
+apply plugin: 'com.android.library'
+
+android {
+ compileSdkVersion 31
+
+ compileOptions {
+ sourceCompatibility JavaVersion.VERSION_1_8
+ targetCompatibility JavaVersion.VERSION_1_8
+ }
+
+ defaultConfig {
+ minSdkVersion 16
+ }
+}
+
+dependencies {
+ implementation "org.minidns:minidns-hla:1.0.0"
+}
\ No newline at end of file
diff --git a/packages/moxdns_android/android/gradle/wrapper/gradle-wrapper.jar b/packages/moxdns_android/android/gradle/wrapper/gradle-wrapper.jar
new file mode 100644
index 0000000..e708b1c
Binary files /dev/null and b/packages/moxdns_android/android/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/packages/moxdns_android/android/gradle/wrapper/gradle-wrapper.properties b/packages/moxdns_android/android/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 0000000..da9702f
--- /dev/null
+++ b/packages/moxdns_android/android/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,5 @@
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-6.8-bin.zip
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
diff --git a/packages/moxdns_android/android/gradlew b/packages/moxdns_android/android/gradlew
new file mode 100755
index 0000000..4f906e0
--- /dev/null
+++ b/packages/moxdns_android/android/gradlew
@@ -0,0 +1,185 @@
+#!/usr/bin/env sh
+
+#
+# Copyright 2015 the original author or authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+##############################################################################
+##
+## Gradle start up script for UN*X
+##
+##############################################################################
+
+# Attempt to set APP_HOME
+# Resolve links: $0 may be a link
+PRG="$0"
+# Need this for relative symlinks.
+while [ -h "$PRG" ] ; do
+ ls=`ls -ld "$PRG"`
+ link=`expr "$ls" : '.*-> \(.*\)$'`
+ if expr "$link" : '/.*' > /dev/null; then
+ PRG="$link"
+ else
+ PRG=`dirname "$PRG"`"/$link"
+ fi
+done
+SAVED="`pwd`"
+cd "`dirname \"$PRG\"`/" >/dev/null
+APP_HOME="`pwd -P`"
+cd "$SAVED" >/dev/null
+
+APP_NAME="Gradle"
+APP_BASE_NAME=`basename "$0"`
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+MAX_FD="maximum"
+
+warn () {
+ echo "$*"
+}
+
+die () {
+ echo
+ echo "$*"
+ echo
+ exit 1
+}
+
+# OS specific support (must be 'true' or 'false').
+cygwin=false
+msys=false
+darwin=false
+nonstop=false
+case "`uname`" in
+ CYGWIN* )
+ cygwin=true
+ ;;
+ Darwin* )
+ darwin=true
+ ;;
+ MINGW* )
+ msys=true
+ ;;
+ NONSTOP* )
+ nonstop=true
+ ;;
+esac
+
+CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
+
+# Determine the Java command to use to start the JVM.
+if [ -n "$JAVA_HOME" ] ; then
+ if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+ # IBM's JDK on AIX uses strange locations for the executables
+ JAVACMD="$JAVA_HOME/jre/sh/java"
+ else
+ JAVACMD="$JAVA_HOME/bin/java"
+ fi
+ if [ ! -x "$JAVACMD" ] ; then
+ die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+ fi
+else
+ JAVACMD="java"
+ which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+fi
+
+# Increase the maximum file descriptors if we can.
+if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
+ MAX_FD_LIMIT=`ulimit -H -n`
+ if [ $? -eq 0 ] ; then
+ if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
+ MAX_FD="$MAX_FD_LIMIT"
+ fi
+ ulimit -n $MAX_FD
+ if [ $? -ne 0 ] ; then
+ warn "Could not set maximum file descriptor limit: $MAX_FD"
+ fi
+ else
+ warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
+ fi
+fi
+
+# For Darwin, add options to specify how the application appears in the dock
+if $darwin; then
+ GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
+fi
+
+# For Cygwin or MSYS, switch paths to Windows format before running java
+if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then
+ APP_HOME=`cygpath --path --mixed "$APP_HOME"`
+ CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
+
+ JAVACMD=`cygpath --unix "$JAVACMD"`
+
+ # We build the pattern for arguments to be converted via cygpath
+ ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
+ SEP=""
+ for dir in $ROOTDIRSRAW ; do
+ ROOTDIRS="$ROOTDIRS$SEP$dir"
+ SEP="|"
+ done
+ OURCYGPATTERN="(^($ROOTDIRS))"
+ # Add a user-defined pattern to the cygpath arguments
+ if [ "$GRADLE_CYGPATTERN" != "" ] ; then
+ OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
+ fi
+ # Now convert the arguments - kludge to limit ourselves to /bin/sh
+ i=0
+ for arg in "$@" ; do
+ CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
+ CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
+
+ if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
+ eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
+ else
+ eval `echo args$i`="\"$arg\""
+ fi
+ i=`expr $i + 1`
+ done
+ case $i in
+ 0) set -- ;;
+ 1) set -- "$args0" ;;
+ 2) set -- "$args0" "$args1" ;;
+ 3) set -- "$args0" "$args1" "$args2" ;;
+ 4) set -- "$args0" "$args1" "$args2" "$args3" ;;
+ 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
+ 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
+ 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
+ 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
+ 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
+ esac
+fi
+
+# Escape application args
+save () {
+ for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
+ echo " "
+}
+APP_ARGS=`save "$@"`
+
+# Collect all arguments for the java command, following the shell quoting and substitution rules
+eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
+
+exec "$JAVACMD" "$@"
diff --git a/packages/moxdns_android/android/gradlew.bat b/packages/moxdns_android/android/gradlew.bat
new file mode 100644
index 0000000..ac1b06f
--- /dev/null
+++ b/packages/moxdns_android/android/gradlew.bat
@@ -0,0 +1,89 @@
+@rem
+@rem Copyright 2015 the original author or authors.
+@rem
+@rem Licensed under the Apache License, Version 2.0 (the "License");
+@rem you may not use this file except in compliance with the License.
+@rem You may obtain a copy of the License at
+@rem
+@rem https://www.apache.org/licenses/LICENSE-2.0
+@rem
+@rem Unless required by applicable law or agreed to in writing, software
+@rem distributed under the License is distributed on an "AS IS" BASIS,
+@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+@rem See the License for the specific language governing permissions and
+@rem limitations under the License.
+@rem
+
+@if "%DEBUG%" == "" @echo off
+@rem ##########################################################################
+@rem
+@rem Gradle startup script for Windows
+@rem
+@rem ##########################################################################
+
+@rem Set local scope for the variables with windows NT shell
+if "%OS%"=="Windows_NT" setlocal
+
+set DIRNAME=%~dp0
+if "%DIRNAME%" == "" set DIRNAME=.
+set APP_BASE_NAME=%~n0
+set APP_HOME=%DIRNAME%
+
+@rem Resolve any "." and ".." in APP_HOME to make it shorter.
+for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
+
+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
+
+@rem Find java.exe
+if defined JAVA_HOME goto findJavaFromJavaHome
+
+set JAVA_EXE=java.exe
+%JAVA_EXE% -version >NUL 2>&1
+if "%ERRORLEVEL%" == "0" goto execute
+
+echo.
+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:findJavaFromJavaHome
+set JAVA_HOME=%JAVA_HOME:"=%
+set JAVA_EXE=%JAVA_HOME%/bin/java.exe
+
+if exist "%JAVA_EXE%" goto execute
+
+echo.
+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:execute
+@rem Setup the command line
+
+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
+
+
+@rem Execute Gradle
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
+
+:end
+@rem End local scope for the variables with windows NT shell
+if "%ERRORLEVEL%"=="0" goto mainEnd
+
+:fail
+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
+rem the _cmd.exe /c_ return code!
+if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
+exit /b 1
+
+:mainEnd
+if "%OS%"=="Windows_NT" endlocal
+
+:omega
diff --git a/packages/moxdns_android/android/settings.gradle b/packages/moxdns_android/android/settings.gradle
new file mode 100644
index 0000000..4be2cbe
--- /dev/null
+++ b/packages/moxdns_android/android/settings.gradle
@@ -0,0 +1 @@
+rootProject.name = 'moxdns_android'
diff --git a/packages/moxdns_android/android/src/main/AndroidManifest.xml b/packages/moxdns_android/android/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..79d5f05
--- /dev/null
+++ b/packages/moxdns_android/android/src/main/AndroidManifest.xml
@@ -0,0 +1,3 @@
+
+
diff --git a/packages/moxdns_android/android/src/main/java/me/polynom/moxdns_android/MoxdnsAndroidPlugin.java b/packages/moxdns_android/android/src/main/java/me/polynom/moxdns_android/MoxdnsAndroidPlugin.java
new file mode 100644
index 0000000..be760bb
--- /dev/null
+++ b/packages/moxdns_android/android/src/main/java/me/polynom/moxdns_android/MoxdnsAndroidPlugin.java
@@ -0,0 +1,75 @@
+package me.polynom.moxdns_android;
+
+import androidx.annotation.NonNull;
+
+import org.minidns.hla.DnssecResolverApi;
+import org.minidns.hla.ResolutionUnsuccessfulException;
+import org.minidns.hla.ResolverResult;
+import org.minidns.record.SRV;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Set;
+
+import io.flutter.embedding.engine.plugins.FlutterPlugin;
+import io.flutter.plugin.common.MethodCall;
+import io.flutter.plugin.common.MethodChannel;
+import io.flutter.plugin.common.MethodChannel.MethodCallHandler;
+import io.flutter.plugin.common.MethodChannel.Result;
+
+/** MoxdnsAndroidPlugin */
+public class MoxdnsAndroidPlugin implements FlutterPlugin, MethodCallHandler {
+ /// The MethodChannel that will the communication between Flutter and native Android
+ ///
+ /// This local reference serves to register the plugin with the Flutter Engine and unregister it
+ /// when the Flutter Engine is detached from the Activity
+ private MethodChannel channel;
+
+ @Override
+ public void onAttachedToEngine(@NonNull FlutterPluginBinding flutterPluginBinding) {
+ channel = new MethodChannel(flutterPluginBinding.getBinaryMessenger(), "me.polynom.moxdns_android");
+ channel.setMethodCallHandler(this);
+ }
+
+ @Override
+ public void onMethodCall(@NonNull MethodCall call, @NonNull Result result) {
+ if (call.method.equals("srvQuery")) {
+ ArrayList args = (ArrayList) call.arguments;
+ String domain = (String) args.get(0);
+ boolean dnssec = (boolean) args.get(1);
+ Thread thread = new Thread(new Runnable() {
+ @Override
+ public void run() {
+ try {
+ ResolverResult dns_result = DnssecResolverApi.INSTANCE.resolve(domain, SRV.class);
+ // TODO: DNSSEC
+ Set records = dns_result.getAnswersOrEmptySet();
+ ArrayList tmp = new ArrayList();
+ for (SRV srv : records) {
+ tmp.add(new HashMap() {{
+ put("target", srv.target.toString());
+ put("port", String.valueOf(srv.port));
+ put("priority", String.valueOf(srv.priority));
+ put("weight", String.valueOf(srv.weight));
+ }});
+ }
+ result.success(tmp);
+ } catch (IOException ex) {
+ ex.printStackTrace();
+ result.error("1", ex.getMessage(), ex.getStackTrace());
+ }
+ }
+ });
+ thread.start();
+ } else {
+ result.notImplemented();
+ }
+ }
+
+ @Override
+ public void onDetachedFromEngine(@NonNull FlutterPluginBinding binding) {
+ channel.setMethodCallHandler(null);
+ }
+}
diff --git a/packages/moxdns_android/lib/moxdns_android.dart b/packages/moxdns_android/lib/moxdns_android.dart
new file mode 100644
index 0000000..930d639
--- /dev/null
+++ b/packages/moxdns_android/lib/moxdns_android.dart
@@ -0,0 +1,38 @@
+import "package:moxdns/moxdns.dart";
+import "package:moxdns_platform_interface/moxdns_platform_interface.dart";
+import "package:flutter/services.dart";
+
+class MoxdnsAndroidPlugin extends MoxdnsPlatform {
+ final MethodChannel _channel;
+
+ MoxdnsAndroidPlugin() : _channel = MethodChannel("me.polynom.moxdns_android"), super();
+
+ static void registerWith() {
+ print("MoxdnsAndroidPlugin: Registering implementation");
+ MoxdnsPlugin.platform = MoxdnsAndroidPlugin();
+ }
+
+ @override
+ Future> srvQuery(String domain, bool dnssec) async {
+ try {
+ final List results = await _channel.invokeMethod("srvQuery", [ domain, dnssec ]);
+ final records = List.empty(growable: true);
+ for (var record in results) {
+ if (record == null) {
+ continue;
+ }
+ final rr = Map.from(record);
+ records.add(SrvRecord(
+ rr["target"]!,
+ int.parse(rr["port"]!),
+ int.parse(rr["priority"]!),
+ int.parse(rr["weight"]!)
+ ));
+ }
+ return records;
+ } on PlatformException catch(e) {
+ print("moxdns_android: $e");
+ return const [];
+ }
+ }
+}
diff --git a/packages/moxdns_android/lib/moxdns_android_method_channel.dart b/packages/moxdns_android/lib/moxdns_android_method_channel.dart
new file mode 100644
index 0000000..44bcf02
--- /dev/null
+++ b/packages/moxdns_android/lib/moxdns_android_method_channel.dart
@@ -0,0 +1,17 @@
+import 'package:flutter/foundation.dart';
+import 'package:flutter/services.dart';
+
+import 'moxdns_android_platform_interface.dart';
+
+/// An implementation of [MoxdnsAndroidPlatform] that uses method channels.
+class MethodChannelMoxdnsAndroid extends MoxdnsAndroidPlatform {
+ /// The method channel used to interact with the native platform.
+ @visibleForTesting
+ final methodChannel = const MethodChannel('moxdns_android');
+
+ @override
+ Future getPlatformVersion() async {
+ final version = await methodChannel.invokeMethod('getPlatformVersion');
+ return version;
+ }
+}
diff --git a/packages/moxdns_android/lib/moxdns_android_platform_interface.dart b/packages/moxdns_android/lib/moxdns_android_platform_interface.dart
new file mode 100644
index 0000000..c1bc75b
--- /dev/null
+++ b/packages/moxdns_android/lib/moxdns_android_platform_interface.dart
@@ -0,0 +1,29 @@
+import 'package:plugin_platform_interface/plugin_platform_interface.dart';
+
+import 'moxdns_android_method_channel.dart';
+
+abstract class MoxdnsAndroidPlatform extends PlatformInterface {
+ /// Constructs a MoxdnsAndroidPlatform.
+ MoxdnsAndroidPlatform() : super(token: _token);
+
+ static final Object _token = Object();
+
+ static MoxdnsAndroidPlatform _instance = MethodChannelMoxdnsAndroid();
+
+ /// The default instance of [MoxdnsAndroidPlatform] to use.
+ ///
+ /// Defaults to [MethodChannelMoxdnsAndroid].
+ static MoxdnsAndroidPlatform get instance => _instance;
+
+ /// Platform-specific implementations should set this with their own
+ /// platform-specific class that extends [MoxdnsAndroidPlatform] when
+ /// they register themselves.
+ static set instance(MoxdnsAndroidPlatform instance) {
+ PlatformInterface.verifyToken(instance, _token);
+ _instance = instance;
+ }
+
+ Future getPlatformVersion() {
+ throw UnimplementedError('platformVersion() has not been implemented.');
+ }
+}
diff --git a/packages/moxdns_android/pubspec.yaml b/packages/moxdns_android/pubspec.yaml
new file mode 100644
index 0000000..77de783
--- /dev/null
+++ b/packages/moxdns_android/pubspec.yaml
@@ -0,0 +1,31 @@
+name: moxdns_android
+description: Android-specific implementation of moxdns
+version: 0.1.0
+homepage:
+
+environment:
+ sdk: ">=2.17.0-266.1.beta <3.0.0"
+ flutter: ">=2.5.0"
+
+dependencies:
+ flutter:
+ sdk: flutter
+ plugin_platform_interface: 2.1.0
+
+ moxdns:
+ path: ../moxdns
+ moxdns_platform_interface:
+ path: ../moxdns_platform_interface
+
+dev_dependencies:
+ flutter_test:
+ sdk: flutter
+ flutter_lints: ^2.0.0
+
+flutter:
+ plugin:
+ platforms:
+ android:
+ package: me.polynom.moxdns_android
+ pluginClass: MoxdnsAndroidPlugin
+ dartPluginClass: MoxdnsAndroidPlugin
diff --git a/packages/moxdns_platform_interface/.gitignore b/packages/moxdns_platform_interface/.gitignore
new file mode 100644
index 0000000..96486fd
--- /dev/null
+++ b/packages/moxdns_platform_interface/.gitignore
@@ -0,0 +1,30 @@
+# Miscellaneous
+*.class
+*.log
+*.pyc
+*.swp
+.DS_Store
+.atom/
+.buildlog/
+.history
+.svn/
+migrate_working_dir/
+
+# IntelliJ related
+*.iml
+*.ipr
+*.iws
+.idea/
+
+# The .vscode folder contains launch configuration and tasks you configure in
+# VS Code which you may wish to be included in version control, so this line
+# is commented out by default.
+#.vscode/
+
+# Flutter/Dart/Pub related
+# Libraries should not include pubspec.lock, per https://dart.dev/guides/libraries/private-files#pubspeclock.
+/pubspec.lock
+**/doc/api/
+.dart_tool/
+.packages
+build/
diff --git a/packages/moxdns_platform_interface/.metadata b/packages/moxdns_platform_interface/.metadata
new file mode 100644
index 0000000..71c027b
--- /dev/null
+++ b/packages/moxdns_platform_interface/.metadata
@@ -0,0 +1,10 @@
+# This file tracks properties of this Flutter project.
+# Used by Flutter tool to assess capabilities and perform upgrades etc.
+#
+# This file should be version controlled and should not be manually edited.
+
+version:
+ revision: 13a2fb10b838971ce211230f8ffdd094c14af02c
+ channel: beta
+
+project_type: package
diff --git a/packages/moxdns_platform_interface/CHANGELOG.md b/packages/moxdns_platform_interface/CHANGELOG.md
new file mode 100644
index 0000000..41cc7d8
--- /dev/null
+++ b/packages/moxdns_platform_interface/CHANGELOG.md
@@ -0,0 +1,3 @@
+## 0.0.1
+
+* TODO: Describe initial release.
diff --git a/packages/moxdns_platform_interface/LICENSE b/packages/moxdns_platform_interface/LICENSE
new file mode 100644
index 0000000..f288702
--- /dev/null
+++ b/packages/moxdns_platform_interface/LICENSE
@@ -0,0 +1,674 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc.
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+ The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works. By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users. We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors. You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+ To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights. Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received. You must make sure that they, too, receive
+or can get the source code. And you must show them these terms so they
+know their rights.
+
+ Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+ For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software. For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+ Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so. This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software. The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable. Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products. If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+ Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary. To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ TERMS AND CONDITIONS
+
+ 0. Definitions.
+
+ "This License" refers to version 3 of the GNU General Public License.
+
+ "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+ "The Program" refers to any copyrightable work licensed under this
+License. Each licensee is addressed as "you". "Licensees" and
+"recipients" may be individuals or organizations.
+
+ To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy. The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+ A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+ To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy. Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+ To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies. Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+ An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License. If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+ 1. Source Code.
+
+ The "source code" for a work means the preferred form of the work
+for making modifications to it. "Object code" means any non-source
+form of a work.
+
+ A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+ The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form. A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+ The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities. However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work. For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+ The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+ The Corresponding Source for a work in source code form is that
+same work.
+
+ 2. Basic Permissions.
+
+ All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met. This License explicitly affirms your unlimited
+permission to run the unmodified Program. The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work. This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+ You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force. You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright. Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+ Conveying under any other circumstances is permitted solely under
+the conditions stated below. Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+ 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+ No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+ When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+ 4. Conveying Verbatim Copies.
+
+ You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+ You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+ 5. Conveying Modified Source Versions.
+
+ You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+ a) The work must carry prominent notices stating that you modified
+ it, and giving a relevant date.
+
+ b) The work must carry prominent notices stating that it is
+ released under this License and any conditions added under section
+ 7. This requirement modifies the requirement in section 4 to
+ "keep intact all notices".
+
+ c) You must license the entire work, as a whole, under this
+ License to anyone who comes into possession of a copy. This
+ License will therefore apply, along with any applicable section 7
+ additional terms, to the whole of the work, and all its parts,
+ regardless of how they are packaged. This License gives no
+ permission to license the work in any other way, but it does not
+ invalidate such permission if you have separately received it.
+
+ d) If the work has interactive user interfaces, each must display
+ Appropriate Legal Notices; however, if the Program has interactive
+ interfaces that do not display Appropriate Legal Notices, your
+ work need not make them do so.
+
+ A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit. Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+ 6. Conveying Non-Source Forms.
+
+ You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+ a) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by the
+ Corresponding Source fixed on a durable physical medium
+ customarily used for software interchange.
+
+ b) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by a
+ written offer, valid for at least three years and valid for as
+ long as you offer spare parts or customer support for that product
+ model, to give anyone who possesses the object code either (1) a
+ copy of the Corresponding Source for all the software in the
+ product that is covered by this License, on a durable physical
+ medium customarily used for software interchange, for a price no
+ more than your reasonable cost of physically performing this
+ conveying of source, or (2) access to copy the
+ Corresponding Source from a network server at no charge.
+
+ c) Convey individual copies of the object code with a copy of the
+ written offer to provide the Corresponding Source. This
+ alternative is allowed only occasionally and noncommercially, and
+ only if you received the object code with such an offer, in accord
+ with subsection 6b.
+
+ d) Convey the object code by offering access from a designated
+ place (gratis or for a charge), and offer equivalent access to the
+ Corresponding Source in the same way through the same place at no
+ further charge. You need not require recipients to copy the
+ Corresponding Source along with the object code. If the place to
+ copy the object code is a network server, the Corresponding Source
+ may be on a different server (operated by you or a third party)
+ that supports equivalent copying facilities, provided you maintain
+ clear directions next to the object code saying where to find the
+ Corresponding Source. Regardless of what server hosts the
+ Corresponding Source, you remain obligated to ensure that it is
+ available for as long as needed to satisfy these requirements.
+
+ e) Convey the object code using peer-to-peer transmission, provided
+ you inform other peers where the object code and Corresponding
+ Source of the work are being offered to the general public at no
+ charge under subsection 6d.
+
+ A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+ A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling. In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage. For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product. A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+ "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source. The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+ If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information. But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+ The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed. Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+ Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+ 7. Additional Terms.
+
+ "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law. If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+ When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it. (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.) You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+ Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+ a) Disclaiming warranty or limiting liability differently from the
+ terms of sections 15 and 16 of this License; or
+
+ b) Requiring preservation of specified reasonable legal notices or
+ author attributions in that material or in the Appropriate Legal
+ Notices displayed by works containing it; or
+
+ c) Prohibiting misrepresentation of the origin of that material, or
+ requiring that modified versions of such material be marked in
+ reasonable ways as different from the original version; or
+
+ d) Limiting the use for publicity purposes of names of licensors or
+ authors of the material; or
+
+ e) Declining to grant rights under trademark law for use of some
+ trade names, trademarks, or service marks; or
+
+ f) Requiring indemnification of licensors and authors of that
+ material by anyone who conveys the material (or modified versions of
+ it) with contractual assumptions of liability to the recipient, for
+ any liability that these contractual assumptions directly impose on
+ those licensors and authors.
+
+ All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10. If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term. If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+ If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+ Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+ 8. Termination.
+
+ You may not propagate or modify a covered work except as expressly
+provided under this License. Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+ However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+ Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+ Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License. If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+ 9. Acceptance Not Required for Having Copies.
+
+ You are not required to accept this License in order to receive or
+run a copy of the Program. Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance. However,
+nothing other than this License grants you permission to propagate or
+modify any covered work. These actions infringe copyright if you do
+not accept this License. Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+ 10. Automatic Licensing of Downstream Recipients.
+
+ Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License. You are not responsible
+for enforcing compliance by third parties with this License.
+
+ An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations. If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+ You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License. For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+ 11. Patents.
+
+ A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based. The
+work thus licensed is called the contributor's "contributor version".
+
+ A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version. For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+ Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+ In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement). To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+ If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients. "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+ If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+ A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License. You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+ Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+ 12. No Surrender of Others' Freedom.
+
+ If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all. For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+ 13. Use with the GNU Affero General Public License.
+
+ Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work. The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+ 14. Revised Versions of this License.
+
+ The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+ Each version is given a distinguishing version number. If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation. If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+ If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+ Later license versions may give you additional or different
+permissions. However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+ 15. Disclaimer of Warranty.
+
+ THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. Limitation of Liability.
+
+ IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+ 17. Interpretation of Sections 15 and 16.
+
+ If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+
+ Copyright (C)
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see .
+
+Also add information on how to contact you by electronic and paper mail.
+
+ If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+
+ Copyright (C)
+ This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, your program's commands
+might be different; for a GUI interface, you would use an "about box".
+
+ You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+.
+
+ The GNU General Public License does not permit incorporating your program
+into proprietary programs. If your program is a subroutine library, you
+may consider it more useful to permit linking proprietary applications with
+the library. If this is what you want to do, use the GNU Lesser General
+Public License instead of this License. But first, please read
+.
diff --git a/packages/moxdns_platform_interface/analysis_options.yaml b/packages/moxdns_platform_interface/analysis_options.yaml
new file mode 100644
index 0000000..a5744c1
--- /dev/null
+++ b/packages/moxdns_platform_interface/analysis_options.yaml
@@ -0,0 +1,4 @@
+include: package:flutter_lints/flutter.yaml
+
+# Additional information about this file can be found at
+# https://dart.dev/guides/language/analysis-options
diff --git a/packages/moxdns_platform_interface/lib/moxdns_platform_interface.dart b/packages/moxdns_platform_interface/lib/moxdns_platform_interface.dart
new file mode 100644
index 0000000..2a6f654
--- /dev/null
+++ b/packages/moxdns_platform_interface/lib/moxdns_platform_interface.dart
@@ -0,0 +1,24 @@
+import "package:plugin_platform_interface/plugin_platform_interface.dart";
+
+class SrvRecord {
+ final String target;
+ final int port;
+ final int priority;
+ final int weight;
+
+ const SrvRecord(
+ this.target,
+ this.port,
+ this.priority,
+ this.weight
+ );
+}
+
+abstract class MoxdnsPlatform extends PlatformInterface {
+ static final Object _token = Object();
+
+ MoxdnsPlatform() : super(token: _token);
+
+ /// Perform the SRV query for [domain]. Use DNSSEC if [dnssec] is true.
+ Future> srvQuery(String domain, bool dnssec);
+}
diff --git a/packages/moxdns_platform_interface/pubspec.yaml b/packages/moxdns_platform_interface/pubspec.yaml
new file mode 100644
index 0000000..6d17cc6
--- /dev/null
+++ b/packages/moxdns_platform_interface/pubspec.yaml
@@ -0,0 +1,19 @@
+name: moxdns_platform_interface
+description: Platform definitions for moxdns
+version: 0.1.0
+homepage:
+
+environment:
+ sdk: ">=2.17.0-266.1.beta <3.0.0"
+ flutter: ">=1.17.0"
+
+dependencies:
+ flutter:
+ sdk: flutter
+
+ plugin_platform_interface: 2.1.0
+
+dev_dependencies:
+ flutter_test:
+ sdk: flutter
+ flutter_lints: ^2.0.0