.github/workflows/main.yml .gitignore .img/logo.ai .img/logo.png .img/logo.svg CHANGELOG.md LICENSE Makefile README.md analysis_options.yaml example/main.dart lib/platform_info.dart lib/src/base_host_platform.dart lib/src/constants.dart lib/src/default_host_platform.dart lib/src/enums.dart lib/src/io_host_platform.dart lib/src/methods.dart lib/src/platform.dart lib/src/stub_host_platform.dart lib/src/web_host_platform.dart pubspec.yaml test/platform_info_test.dart <<<<<< network # path=coverage/lcov.info SF:/__w/platform_info/platform_info/lib/platform_info.dart DA:46,2 LF:1 LH:1 end_of_record SF:/__w/platform_info/platform_info/lib/src/default_host_platform.dart DA:10,5 DA:13,1 DA:17,1 DA:20,1 DA:23,1 DA:26,1 LF:6 LH:6 end_of_record SF:/__w/platform_info/platform_info/lib/src/io_host_platform.dart DA:9,2 DA:13,1 DA:15,1 DA:16,2 DA:18,2 DA:35,1 DA:36,1 DA:37,1 DA:39,1 DA:41,1 DA:43,1 DA:45,1 DA:47,1 DA:51,1 DA:54,1 DA:55,1 DA:56,1 DA:58,1 DA:61,1 DA:62,1 DA:63,1 DA:65,1 DA:68,1 DA:69,1 DA:70,1 DA:71,1 DA:72,1 DA:73,1 DA:74,1 DA:75,1 DA:76,3 DA:77,1 LF:32 LH:32 end_of_record SF:/__w/platform_info/platform_info/lib/src/stub_host_platform.dart DA:8,1 LF:1 LH:1 end_of_record SF:/__w/platform_info/platform_info/lib/src/platform.dart DA:55,1 DA:56,2 DA:58,1 DA:59,2 DA:61,1 DA:62,2 DA:64,1 DA:65,2 DA:67,1 DA:68,2 DA:73,1 DA:74,3 DA:76,1 DA:77,3 DA:91,1 DA:92,2 DA:94,1 DA:95,2 DA:97,1 DA:98,2 DA:100,1 DA:101,2 DA:103,1 DA:104,2 DA:106,1 DA:107,2 DA:115,2 DA:120,1 DA:123,1 DA:125,1 DA:127,2 DA:130,2 DA:133,2 DA:136,3 DA:139,2 DA:140,1 DA:141,1 DA:145,1 DA:150,2 DA:151,2 DA:152,2 DA:154,2 DA:156,2 DA:158,1 DA:161,1 DA:162,1 DA:164,1 DA:165,2 DA:173,1 DA:180,1 DA:182,1 DA:183,1 DA:185,1 DA:186,1 DA:187,1 DA:189,1 DA:198,1 LF:57 LH:57 end_of_record SF:/__w/platform_info/platform_info/lib/src/methods.dart DA:68,1 DA:89,1 DA:90,1 DA:91,1 DA:92,1 DA:93,1 DA:94,1 DA:95,1 DA:96,1 DA:97,1 DA:98,1 DA:99,1 DA:100,1 DA:101,1 DA:102,1 DA:108,1 DA:109,1 DA:110,1 DA:111,1 DA:117,1 DA:118,1 DA:119,1 DA:120,1 DA:126,1 DA:127,1 DA:128,1 DA:129,1 DA:135,2 DA:136,1 DA:137,2 DA:138,1 DA:139,2 DA:140,1 DA:145,1 LF:34 LH:34 end_of_record SF:/__w/platform_info/platform_info/lib/src/enums.dart DA:5,1 DA:19,2 DA:22,2 DA:25,2 DA:28,1 DA:34,1 DA:35,1 DA:36,1 DA:37,1 DA:40,1 DA:46,1 DA:52,1 DA:62,1 DA:73,2 DA:76,2 DA:79,1 DA:83,3 DA:94,1 DA:120,2 DA:123,2 DA:126,2 DA:129,2 DA:132,2 DA:135,2 DA:138,2 DA:141,1 DA:151,1 DA:152,1 DA:153,1 DA:154,1 DA:155,1 DA:156,1 DA:157,1 DA:158,1 DA:159,1 DA:160,1 DA:161,1 DA:162,1 DA:165,1 DA:171,1 DA:180,1 LF:41 LH:41 end_of_record <<<<<< EOF # path=.dart_tool/pub/incremental/coverage/format_coverage.dart.incremental.dill ����J0000000000 ���L�GT�vo MWr��ROR ������T�*o�@�������)`�` �� `? ��́��@j��`����]�`� `rJ��j��]�`� `r��.�B@j�`��7�B]�`� ` J�:j�:]�`� ` �F�[�x@ j�G`��p�x`� J�s*�|����@ j�}`�����`� J��) ������@ j��`��Ђ�`� J��+�܂�@ j��`������ `� �` j`� ` >���=0�%�+�'������@j��`������� `� ��`� j`� ��`� j`� ��`� j��`� �`� j�`� �0a`� \j`� �E`� j�L`� �f]�`� j�p]�`� \>�{��=0�����'����@j��`����� � `� �`� j`� �,`� j`� �@`� j`� �c]�`� j`� ��]�`� `� j`� ��`� j`� ��a`� \j`� ��`� j��`� �`� j`� �`� j�(`� �:`� j�A`� �[]�`� j�e]�`� \>�p��=0�v�|�' �؆鈩@!j��`����� �� `� �`� j`� �(`� j`� �<`� j`� �_]�`� j`� ��]�`� `� j`� ��]�`� j`� ��a]�`� \j`� ��`� j��`� � `� j�`� �,]�`� j�6]�`� \>�A��=0�G�M�'"�����?@#j��`��ˉ?��$`� \>�ى?=0����'%�D�[��@&j�E`��`���r']�`� `WJ��x������+.���`� �����&a`W�� ���lj�@(j��`��͉�`� J��'�׉�=@)j��`����=��*`� [>��==0� ��$�8'+��1���B�V��@,j�C`��`���h*`� [>�p��=0�v�|�$��'+�����������@-j��`��ӊ���`� `rJ��+���'@.j��`���'� `� `rJ�#+ �;�;��/]�`� ` J�;&�; x�;.0�j�;`��j]�`�j]�[ �;� `�[j]�`�[ a`�![�#]�`� `  ������1]�`� `� J��&�� x��.0�j��`� �j]�`�j]�[ ��� `�[j]�`�[ a`�![�#]�`� `� �����2 � `� �`� �,`� �@`� �c]�`� ��]�`� `� ��[��`�$��3`����`� j`� �`� j`� �`� j`� �8`� j`� �Y]�`� j]�`� \J��x��.0�j��`� �j]�`��&[1[ �����ɂ�ԃ�߄���������!�� `�[2`�[j`� �- j`��? j`��Q j`��c j`��u a`�![�#�ʃ���4]�[J��&�� x��.0�j��`��j]�`�j]�[ �ʁ `�[j]�`�[ a`�![�#]�[����5]�`� `rJ�&� x�.0�j�`��j]�`�j]�[ �� `�[j]�`�[ a`�![�#]�`� `r�c���J!`��8h�Az� U � q �� � � ������T�5o�K���a�� ��굻`� #.����5]�`� `r$/�;�D��/]�`� ` %0������1]�`� `� (3�����]�`� `r)4�_�g��]�`� ` &1�ʃ䀁4]�[��)[�*5�R�f�� `� +6������ `� '2��6[1[ja` K�͊͌7�،��]�`� `r� ]�`� ` �"1]�`� `� �8 `� j�O`� �Z `� j`� ` ?%��_*��t+���#���9(���,`� `r����9$��̍L)��,`� ` ����L �́7��(�?@ �7�?`� J�:*:�w��xA���x�� `� j��`� �� `� j`� ` J����K2��`� `r2��`� ` 2�`� `�  ��7�C ��h�V;������Q8����` J��=������@ ������ `� ��` j`� ` >���I�x�v�./]�`� ` /9��)��a`�`� �.>�0�o=0�8�>�$�h':��a��';?=#�}��v����v����:+` =x��v��./]�`� ` /<���������` a`� ` \�/J������` >���"@� �"�( `� �=`� j`� �Q`� j`� �c`� j�p`� ��`� j��`� ��a`� \j`� ��`� j��`� ��]�`� j��]�`� \>���"=x�.2 ���"����0� +++��h�#����|�D+4��������=[\J��}�����Da`� \&������`� a`� \a[\j��`�����1����Z���m^  `� `� `� `� ]�`� ]�`� `� [`�$`��]�`� `� `� `� `� \B?������@���� �� `� ��`� j`� ��`� j`� ��`� j`� �]�`� j`� �*]�`� `� j`� �E`� j`� �oa`� \j`� ��`� j��`� ��`� j��`� ��]�`� j��]�`� \>�؟�=x��.2 ��鑥������Ã���Մ��煟�������0�+j�E`���`�A�q�T ���g ^  `� `� `� `� ]�`� ]�`� `� [`�$`��]�`� `� `� `� `� \B@�%�*��@!�8�� �@ `� �U`� j`� �i`� j`� �}`� j`� ��]�`� j`� ��]�`� `� j`� ��]�`� j`� �a]�`� \j`� �-`� j�;`� �L`� j�S`� �m]�`� j�w]�`� \>����=x��.2 ����Z����f����x��Ɠ���ٓ���ꓳ5���]�`� 5����]�`� �����#������ +x� ���� ]�`� >^?`� ]�`� �1]�`� #�����y ��)`� ����y ]�`� ]�`� #�4��+��+4�E�E�o�F=[\J�P}�X�P��a]�`� \&�_�Y�6 ]�`� a]�`� \a[\j��`�������� �Ք& ^  `� `� `� `� ]�`� ]�`� `� [`�$`��]�`� `� `� `� `� \BB��믢@2���� � `� �`� �,`� �@`� �c]�`� ��]�`� `� ��[��`�$��3`����`� j��`� �`� j`� �`� j�&`� �8`� j�?`� �Y]�`� j�c]�`� \>�n��N�x��@]�`� RN��]�`� ���3`� ����#=x�����A���� a]�`� \�5���I��x�����B4�������� `� `� J��!��x��..�ȗ�a`� `rHaa`� `� `� �6>�ج=0����$�'C���#';?I�b!�k��f�.>�t�8N����D`rx��.-���.`� a`� `rGI��!����� >���2=0���с$�)'E���.`� 'Fv�!�� `r `� ��';??I��"���� !������s>���=0�����$�'G��ۖ#'H?N� �'*`r�)q ��3�#��9�.��?�9��E�D��P�O��Y�_��n�s��z�{�������� ���� �ݖ� ���� � �� =x�#v�.5]�`� `r.<��$�#�,��a`� `r\�/=x�Nv�8.4]�[1I�R��a[\�7>N�qJ]�8`� v�q�q�� K]�8`� �:Ex�q��La`� �<>N�hM`� v�z��N`� �>>�z��=x��v��.1]�`� `� 0<��������#a`� `� \�/C�Z�_��@#�k���s$`� \>�y��=x��v�.4]�[1I����Wa[\�7D�?�J��@&�O���a']�`� `WJ�px���p��+.���`� �����&a`W��8�5�@��@(�F��`� >�F��J�L�S��v�a.4]�[1Ov��. `� 6E�˲ӳ�@)�ݳ���*`� [>����N����=`rx��..���da`� `rHI��(��"�z>�1�m=0�9�?�$�f'+��_�d?J�sv���z�z`r[��F���ij�@,j��`�?�γ���*`� [J��x��.)���a`� [EG�a�i��@-�{����`� `r>����>N��J]�8`rv��v��v��.]�`� `r3P]�`r�AK]�8`r�:Ex����iLa`� �<>N��*`rv����iN`r�>>����I����v�ł����`� ����͜Ma`�`� �CJ����ڜ�?J��+H�p�x��@.������ `� `rJ��x��v��.]�`� `r3Q5����`� x��v��.1]�`� `� 0Q����Aa`�`� �D#������v����A���v`� `� a`�`r�D'����?<��I�2&�( &%( LM����`�EOQ�ҁڀ�]�`� S�߁߂�����R`� �]�`� j`� `M?O#�<��3��j�F]�`� �V�&`� �c��]�`� ]�`� �v�G��|�� O T�����W������`�Zb���ST` [c�M�T��TT]�`� [\d�݄ခ `� ]e������U`W^f������V]�`� _g�� ��W]�`� n����7T���� S` �.T]�`� [�< `� �GU`W�cV]�`� �vW]�`� `W?Z���[��\��]��^���J`� ����)_���J`� ��ՠ9 ��j�i�z�J@Q�|�J�� `� [>���JI��!x��v��v��.ST` b]�`� `r39�����a`�`� �.>���=0���Ɓ$��'X�����';?J� x�)u�'x�!v�v�.ST` b]�`� `r3Q��"��a`�`r�DYx�?v�8.TT]�`� [cQ��@��a`�[�Da[[��h��#�@�+�]�`� >�+�N�5�<Z]�K`� x�Kv�Fv�>.TT]�`� [c[]�`� �L\a]�K`� �M=x��v��v��.ST` b]�`� `r3]4�������� `� ��*`r\>����I��!��v�‚���r[��=x�݀�֡�I���ga`� `� �O?aa`� `r\\�PJ�������k�� ��@^�)���1 `� `� >�7��I�=!x�Rv�Jv�B.ST` b]�`� `r39��^��a`�`� �.>�e��=0�m�s�$��'X�����';?J��x��v��.TT]�`� [c9��Ӣ�a`�`� �. �!�"�#�V�ҁ݂�A_�����` �`]�`� [�/ `� �EU`W�_V]�`� �vW]�`� `W>����J����n����ց��������񃂯����������$\O#�#�$\ or�O�U��`�t�������� `� u���w�{��`� v��������`� w�������`� x���G�N��]�`� y��������]�`� `� z���"�,��[{���"�+��`� |��������`�$}�������3`��~��������`� ���݉态`� �����;�?��`� �����u�|��]�`� ����������ao`�Q���S'b�������L7o���L �� `� ��`� ��`� ��`� �]�`� �:]�`� `� �R[�i`�$�~3`����`� j`� ��`� j`� ��`� j��`� ��`� j��`� ��]�`� j�]�`� `r>�\�LI�bv�kv�f. `� ��c`� �U>�t��=0�|���'dI��x��v��. `� ��e'f^`�V`� `� �W>�Ϗ=0���݁$�'gv��. `� ��'h?I�Xx�j�\��iv�s. `� ��a`� `� �Y>�z��=0�����$��'jv��. `� ��'k?N�ӏ�`� v��.`� ��I��!������>���HI�!�v� ���`� l`� �Z�a`�`� �]>��m=0�#�)�'mI�t�}�x��`� 'fa`�`� �C>����=0�����'n?I��x���ր�i����`� a`� `� �Y>���B=0����'o??t���u���v��w��z��B|��J}�U{�a �� ���� ���� x#�%���+�;�&`� �H�]�`� ]�`� y#����t�.+��� `� `� ���.]�`� `� ]�`� `� ~5�=�1`� �1�s #�1�1�s�E�@�Uj�S`��a`�`� �^�1�s`� `� �����������@p�Š�`� J����v��.3`����j��`��a`�`� �^�����>@q�"�>`� J�%�*v�%.3`����j�8`��a`�`� �^���t�}��@r����`� J����v��.3`����j��`��a`�`� �^���x��� @Y��� ��=[[>��� I��!�������J�������?I��v��.r`� ��J��5���[v��.[��#�؁�ث ��)`� ���ث [?J��v��.[������E�q@sj�`�?�Q�q�R=[[J�\x�\.Y��k�pa[[��)�**e*�+L+������, `�����������t`��j��`������������u`��j��`�������Ė�v`��j��`���������� `� ��� ��* 7o��*�% `� `��?����M ��,tq������Aw���� �� `� ��`� ��`� ��`� �]�`� �*]�`� `� �;[�U`�$�n3`���`� j`� ��`� j`� ��`� j��`� ��`� j��`� ��]�`� j��]�`� `r>����J��� �� �������������� ����+�Dž�4�׆�A�뇃S���]���t� ��� ���. �ǭA �ܭT -�$�+�,},�-� ��������L�3T�No���/�5�6x`������ւ y��`� �����d�k��z��`������������{��` ������老|��]�_`� �����7�<��}��]�`� ����������~��]�`� [2��`� [������������y`� ��{` ��|]�_`� ��z`��j`� ��V]�`� j`� `��?��������� ��������$��RN�]�`� ��)`� �N�]�`� ���6I�!�����=x����}A���]�`� a]�`� \�5?���} ������L�W�n@���`�n`� J�cv�iv�c.|��]�_`� ����`� �`��������@&����`W>����N�ʅ�W]�`� x��v��.|��]�_`� ��>^?`� ]�`� �1I��v��v��.{��` �� `� 7>��rJ��Vv�/.{��` ��j�9]�`� [v�C.y��`� ��+��W�q��b�q?N����`WAC��v��v��.|��]�_`� ����`� �aA>�ʌI����v��.��`� ��'��a`�`� �C>��V=x�2v�,.|��]�_`� ����a`� �cB�I?N���U` x� v�v��.{��` ��]�`� ` 4Qv� .��`� ��a`�` �DI�!�'����>�0=x�:.����v�Jv�D.}��]�`� ��c`� �d'��a`� `� \��N������`� x��v��.|��]�_`� ����a`� �cN������`���̀���ԲX�ᱳ` v��.|��]�_`� ��.v��.}��]�`� ��K>� �H=��� x�7��)��&a`W���J`M�g��`M>�n��=0�z��Sv������ R`� �fRN��]�`� ���3`� ����X=x�Ȇ���;Av�ȅ�³ ]�`� Qa]�`� \�5����;=x�;v�5.}��]�`� ����a\�gB�L?I��x��.����a`� ��B��?I��x��.����.a`��`� ��B� ?I�x� .����a`� ��B�4?I��!v��v��.{��` �� `� 5B��?=x��v��.}��]�`� ��Ix�v�.|��]�_`� ����a`� �ca`� \�7=x�kv�cv�Z.{��` ��]�`� `r3]4�s�s��t `� �z*`r\>���N������[x��v��.~��]�`� [��Q�����a`�[�DI� "v�����`� ���0��#��>�9��=0�C�IS$�x'����e��'��?N����`�$v�������`�$��I��������qJ��?=}���Եq`�$x�䃍ݴ�Y����a[[��[aa`� `r\\�P=x�ev�_.}��]�`� ��Av�l.|��]�_`� ��a]�`� \�5=x�~v�x.|��]�_`� ����a\�hJ����Vv��.{��` ��v��.~��]�`� [��v��.y��`� ����˱ v��.}��]�`� �����q���v�{�s@�������s��*`r\>���s=x��.����v��v��.|��]�_`� ����`� �a$�('��v� ���� `� ��';a`� `� \��=x�0.����v�;.~��]�`� [����E��v�M.��`� ��a]�[[`r`� \��=x�bv�\.|��]�_`� ����a`� �c���z���@��������`� >����I�!�v�v� .��`� ��l`� �Z�a`�`� �]J� *?I�2!x�@v�7.��`� ��e'f^`�V`� `� �WJ�Q*?N�g�k��`� x�uv�m.��`� ��Q�a`� `� �iI�~!����x������K���a`� `� �jJ��*?J��x��.������ӸKa`� `� �������唯@������������`� `� >���N� �*`rx�v�.{��` ��-��2��a`� `rGI�<�G��@�>�P�=x��.����!��v��.z��`����$��'����̸�';a`� `� \��J��x��u��v��.z��`�������������a`� `� ��?=x�v�.|��]�_`� ����a`� �cI�(v�3�,�`rp`� ��>�;�i=x�C.����v�L.~��]�`� [���V�`r)a]�[[`r`� \��>�p��=x�x.�������`ra`r\��J��)���s�x��@������������`��`� >���� I�:x�Nv�Gv�>.��`� ��l`� �Z���a`�[`� �kJ�S*?I�e!x�sv�j.��`� ��e'f^`�V`� `� �WJ��*?N�Ж���`� �C��"x�쁖�9��v��v��.��`� ��l`� �Za`�[`� �k� ��x�#v�.��`� ������.�9a`� `� �j>�7�L=��A�9x�?��A�9���a`�[`� �lI�|������9�a`�`� �]J��*?N�� ��`� x�+v�".��`� �������8�9^`� `� `� �mN�H�MV`� x�Xv�O.��`� ������b�9^`� `� `� �mI�n"x�w��r�L��'��^`�V`� `� �nx������L��'��^`�V`� `� �nJ��*?J��x��.������˼��ݼL��㺥a`� `� `��`� ���������@��������$��`� �=V`� �J��`��`� >�\��N�f�h��`� x�{��j�C����^`� `� `� �mN������`rx��v��.{��` ��-����ta`� `rGI���ʄ�Ľ�>�Ӛ�=x�.����!�,v�$.z��`����$�f'����b�t';a`� `� \��J�ox��u�}v�v.z��`������������C����O����Za`� `� `��`� ��I��!v���ٽ�`rp`� ��>�盭N�N�T=`� $�}x�j��Y�C���^`� `� `� �m��x�O=x��.����v��.~��]�`� [������`r�����a]�[[`r`� \��>���a=x�<.�����V��Q�O'a`�`� �C$�['����r�t'��'��x������C���^`� `� `� �m��ƽO';a`� `� \��E���ǝ���`� �x�Ѕ�ο���v�〝ҽCl`� �Za`�[`� �k��뿟x�셝뿟���a`�[`� �l>��[N�����`� x����C������x�"�� �����a`�[`� �l^`� `� `� �m=x�A��0�Z������Q�@ a`� \��=x�nv�h.|��]�_`� ����a`� �cJ��)��������@������������`� \>����N����*`rx��v��.{��` ��-����@�a`� `rGI��������@�>����=x�;.����!�Xv�P.z��`����$��'������@�';a`� `� \��=x��u��v��.z��`������������@�a`� \��J��?=x�H.����v�b�[�@�`rp`� ��$��'����u�@�'��a`� `� \��=x��.����v��.~��]�`� [�����@�`r)a]�[[`r`� \�����d�i�Q@�����y�Q`� >�|�QI�H!x�Vv�M.��`� ��e'��^`�V`� `� �WJ�h*?N�����`� x��v��.��`� ����'��^`�V`� `� �oN���� `� #������B�x�����a`� �qa`�`� �]x��v��.��`� �����^`� `� `� �mx��v��.��`� ���������B�^`� `� `� �m`� E������`� �!��� �C�v����B�l`� �Za`�`� �]��!�C�x���!�C����a`�[`� �l>�$�yI�,!�1��x�W��R�B倕��b�C�a`� `� �jJ�g*?N����=`� #������B�x�����a`� �qa`�`� �]+x��v��.��`� ����x������B����a`�[`� �l^`� `� `� �m`� I��"!�͂���D9"x�����D9`� ��'��^`�V`� `� �nx�����D9`� ��'��^`�V`� `� �n>��"J�*?J�(x�/.������A�B傤G�D9a`� `� `� �����V�[��@�����l���t `� ��=`� `� >����N����*`rx��v��.{��` ��.����E�a`� `rHI��!�͂���E�>�֦�=x��v��.|��]�_`� ����a`� �cI��v����E�`rp`� ��>� ��=x�.�����3��-�E�$�n'����K�E�'��a`� `� \��=x�z.����v��.~��]�`� [�����E�`r)a]�[[`r`� \��I��!������E�>���=x��.����v��.~��]�`� [����E�`r��E�`� a]�[[`r`� \��>�#��=x�r.�������E�`ra`r\��I��x������E�e'��^`�V`� `� �W>���N�����`� x�����E���v�'��l`� �Z^`� `� `� �m=��"�E�x�4v�+.{��` ��.��F�G�a`� `rHI�[�f��_�E�>�o�4=x��.����!��v��.z��`����$��'X����E�';a`� `� \��J��x�u� v�.z��`���������� �E���&�E�a`� `� `� ��?=x�Cv�=.|��]�_`� ����a`� �c=x�X.����v�i�b�E�`rp`� ��$��'������E�';a`� `� \��=x��.����u��v�����E�`r`� ��$��'������E�';a`� `� \��=x��.����v��.~��]�`� [�����E�`r*a]�[[`r`� \��>���=x�R.����!�dv�\.z��`����$��'X����E�';a`� `� \��J��x��u��v��.z��`������������E�����E�a`� `� `� ��J��)���k�p��@�����y�����`� ��R`� \>����I��!����JX=0����S����Jd?���8�=�@@�����G�@�L��]�[[�\*`r�k=`� \>�r�@@!v������J�p`� �����I��!v������J�r`� ��>��� =x��.��������JƂ���J�a`r`� \��=x�〫��J�<v�끫��J� `� ������J�a[[\�/J�?N����[x�&���J���v�9��2�J� `� ��4�?�?�O]�`� J�E�M�)`� �a[a[[�rI�Wv�b��[�J�`� ��>�o��>N��J]�8`� v��x������JЀ�'��a`�V]�`� �sK]�8`� �:Ex����L La`� �<>N����`� v����L N`� �>>����=x��.��������Jƅ���Lwa`r`� \��=|�׃���K�I����Lw>���<=x�.�������JƂ��J�a`r`� \��=|�,��'�K�I��0�J��������@�����������]�[[��*`r��=`� \>�ծ@v�遭��MUp`� �����=x������MF<v�����MU `� ���� �M_a[[\�/���[�`�4@�����p�4�x*`r��=`� \>���4I����v������M�]�`� ��J��?=x��.����x��u��v�΀���M�]�`� ��������M�a`�`� �t$�/'������M�'��v�'�� �M� `� ��';a`� `� \��/�0H6�7�8�:�=$@�B9E�J9J�M'M�N����9�>�A�����N��S��`� `� J�~"""x�����O��7Aa`�[`� �ux������O��7Za`�[`� �v"x�̀���O��7aa`�[`� �ux�ހ���O��7za`�[`� �v"x�����O��70a`�[`� �ux����O��79a`�[`� �v���!�&��A�€��F���K��`� `� J�\""�\����m�P������P7-a`�`� �]������P7_a`�`� �]Pp.4N�N�O�Pp �����w��������������|��`��ڀ��τ߀��ŀ�`� j��`� �ۀ��4�I��4��]�[�܀��������ƀ�`�x���z�݀���{�����ǀ�`� ��ހ��ˆ󀡀Ȁ�]�`� x��.�ɀ�a]�`� ���߀�������ʀ�`� ������� ��O`� �����C��C�4]�[�8O`� `��?�ۀ�Q�����Q� �� ���؉ߋ+@����+`� >��+>N�J]�8[v�v�.4��]�[��K]�8[�:Ex���R-La`� �<>N����[v�%��R-N[�>A>�%�I�-%�C��1�R}`� >�N��=x�X.�̀��h�R}`� a`� \��B��?N����*`r&������R}`rI��v�ׂ���R�`� ��B��?=x��.�΀�����R�a`r\��J�x�v�.�ƀ�`�x����a`� �|���0�5�@�̀��D��L��`� \>�W�I��v��v��.�ƀ�`�x����`� �~=x��v��.�ƀ�`�x����'��a`�\�?=x��v��.�ƀ�`�x��������S}a`�\�=w��.�ʀԔ����� ��@@�΀���@�&*`r\>�.�@=x�4.�Ӏ��x�>.�Ԁ���L�T9a`r`� ��a`� `� \��=x�Z.�Ӏ��$��x�g.�Հ���s�T9a`r`� ��x�}.�ր�����T9a`r`� ��a`� `� \��I��!��v������T9`� ��=x��.�Ӏ��u��v�ɀ���T9`� ��a`� `� \��?I��!��v�ဌ��T9]�`� `� ��>���N����]�`� x�*v�%u�#v����T9]�`� `� ��[]�`� �L>^?`� ]�`� �1=x�G��:�Uo��^a`� `� `� \��=x�U.�ـ�a\��>N�xJ]�8`� v�x��x�UoK]�8`� �:Ex�x��VLa`� �<>N�p `� v����VN`� �>>����=x��.�Ӏ��x��.�ڀ�����T9����Vja`r`� `� ��a`� `� \��=x��.�Ӏ��u��x��u��v�р���T9]�`� `� ��Q����Vja`�`� �Da`� `� \��=x��.�ـ�a\��I� !�v����T9]�`� ��>�(�Z=x�0.�Ӏ��x�:.�ۀ���L�T9a`r`� ��a`� `� \��I�av�l��e�T9p`� ��>�t��I�|��v������T9[��)a`�`� �^>����=x��.�Ӏ��'��a`� `� \��?I��v�‎��T9r`� ��>���I��"!� v�����T9[��&�) z�)v����T9[����`� >�5��N�C�L��`� x��x�v&�mv�b��[�T9[��]�[��`� 4�z�z���{=[`� J��$��'������X�'��aa[`� ]�`� ����'��^`� `� ��=x��.�Ӏ��$��'�၏��Xy'��a`� `� \��?I��!��v�透��T9[��>���<=x�.�Ӏ��$�5'��v�'�� �T9[��'��a`� `� \��?���E�L��@�Ԁ��Y���a*`r`� J�r#�~v�y��r�Y�`� ��'$��'fv������Y�`� ��'��`� ��������@�Հ�������*`r`� >�Ǒ�N��Z`� I��u��v�뀐��Z.`� ��>���%=����ZF$�'��v����Z. `� ��>�,�U=��4�ZF$�O'��v�I��B�Z. `� ��I�\!�qv�g��`�Z.`� ��=��z�ZFx����z�ZF��$��'��v������Z.`� ��'��a`� `� ��?J������ZF�������@�ր��В��*`r`� >���J��#v����[D`� ��'��'`� ����#�@�ڀ��0��8*`r�G`� `� >�P�N�Z�d��[#%�xv�m��f�[�[��]�[|��v������[�[��������[���v������[�[������[�a`�`� �^[J��x��$��'�ꁒ��[�'�뀜#&�� ����[�`� '��'`� a`� `� ������(�/@�ɀ��>�/]�`� >�A�/N�K�P`� �N�]�c��`� �>N�J]�8[v�v�.4��]�[��K]�8[�:Ex���\�La`� �<>N�u*[v����\�N[�>A>����I��!%������]`rB��?I��v�����]`r`� ��B��?=��*�\��6��`� ��:�\�v�Vx�@.�Ԁ��N�]`ra`r`� ��l`� �Z=����\�����`� ����\�x��v��x��.�Հ����]`ra`r`� ��l`� �Z��v��x��.�ր����]`ra`r`� ��l`� �Za`�[`� �lI�!�2v�&��]`r]�`� `� ��>�;��>N�mJ]�8`� v�mv�mu�kv�`�Y�]`r]�`� `� ��[]�`� �LK]�8`� �:Ex�m��^�La`� �<>N�N`� v�s��^�N`� �>>�s��=���\�����`� ����\�v��x��.�ڀ����]`r����_a`r`� `� ��l`� �Z?=���\�x� ���\����a`�[`� �lJ����`� ���\���%�\����4�9�w@�ـ��A�w\>�D�w=w�J.�ʀ�x�Yv�J.�ʀ�`� �����a`�[`� �l��=w�a.�ǀԓ�����|���T@�Ӏ����T����`� ��$`� \>���TN������]�`� x������`e��'��a`�V]�`� �sI�"��� �`Yv�$v�.�Ȁ�]�`� ��l`� ��a`�`� �]!�9v�..O`� ��>�B�'N�N�T��`� x�{x�nv�`.�Ȁ�]�`� ������s�`Ya`� ]�`� ����4����������`� ����`� `� J��x������aj������ava`�[`� �laa`� `� `� `� ��=����`{RN��]�`� ���)`� �>N��J]�8`� v�͂���`{K]�8`� �:Ex�ͅ�a�La`� �<>N����`� v��a�N`� �>=x�ᄗ��a�A������bH������a lv� .O`� ��a]�`� \�5����a�?C�]"v�j��d�`{��`� �a��x��v�~��x�`{��`� �`��a`� ��'a`�`� �C>����=x������`{���a`� `� ��C��"v�Ă���`{��`� �a��x��v�؂���`{��`� ����a`� ��'a`�`� �C>�� =x������`{��a`� ��>N�#J]�8`� v�#��#�`{K]�8`� �:Ex�#��c�La`� �<>N���`� v�*��c�N`� �>>�*�P=x�2.������=�`Y��E�c�a`� `� \�����Y�^�;@�����h�;�m��`� �|$`� \>���;C��x��v��.�ʀ�`� �����a`�[`� ��>�ǚ=x��v��.�ƀ�`�x����'��a`�\�=w��.�ʀ�x��v��.�ʀ�`� ��f�a`�[`� ����C�q!��v�x.�ǀ�`� ������dka`�`� �]>���sI��x��v��.�ǀ�`� ����x��j��`� f�a`�[`� ��a`�[`� �k>���=x��v��.�ƀ�`�x����x��'����x��v��.�Ȁ�]�`� ��Qv��.�ǀ�`� ��a`� `� ��a`� `� ��a`�\�>� �1=x�v�.�ƀ�`�x����'��a`�\�=w�9.�ǀ�x�_x�Zv�K.�ǀ�`� �����a`�[`� �l��j�a`� a`�[`� ����I�zx����~�dk��v��v��.�Ȁ�]�`� ��l`� ��a`�[`� �k>���=x��v��.�ƀ�`�x����x�߁���dw��x��v��.�Ȁ�]�`� ��Q����dka`� `� ��^`� `� `� ��a`�\�>� �Y=x�Hv�@.�ƀ�`�x������N�dwa`�\�=w��.�ǀ�x��x��v��.�ǀ�`� �����a`�[`� �l��j��`� a`�[`� ����I���� �dkx�!j�`� f�a`�[`� ��a`�`� �]=w�&.�ʀ�x�5v�&.�ʀ�`� �����a`�[`� �l��?���@�G�z@�ۀ��X�z�`*`r`� >�h�zN�r�|��[#%��v����~�h�[��]�[z��v������h�[����4���ǝ���=[`� J���؁���h�v�”��h�[��a`�`� �^[N�����`�x��z=x�)���i8��'��a`�\�N�=�C��`� )>N�qJ]�8`� v�qu�qv�j��c�h�]�`� ��K]�8`� �:Ex�q��i�La`� �<>N�X`� v�t��i�N`� �>>�t�3I�|!����ip=x������i8��'��a`�\�?=x������i8������i�a`�\�I��&�� |�ځ���h������i�`� >��=x������i8��'��a`�\�?=�� �ip*=x�G��9�i8��'��a`�\�J�Wx�l��^�i8��a`� �|Q�S^TY�Z[%[}\w_�`:dLhzj� ��� ���A�� ���&�]�[�BO`� j`� `� J�Vx��V����]�kF��s�kU��a`� ��k�P�k&k)k� �����w����1�8��A���@���H�`� �Tl`� `� J�cx�j��c�k�x�p'����x�z��s�k�fv����|�k�l`� �Za`�[`� ��a`� `� ��a`� `� ����� ��A�����$`� �'l`� j`� �4�`� j`� `� >�D��I�H�S��L�l�J�\��c�l�?=#�y��k�l���k�l��+`� N�����]�`� x������l���'��a`�V]�`� �sN����Z]�`� ���)`� �>N��J]�8`� v�҃���mK]�8`� �:Ex�҅�moLa`� �<>N����`� v�݅�moN`� �>>�݊�N����`� x������m��a`� ��N��"� `� x�1��,�m����x�Jv�C��>�m�l`� �Zfv�X��L�m�l`� �Za`�[`� ��^`� `� `� �mN�r� ]�`� I��!�����l�`� �a`�`� �]>����N�f�t� ]�`� �v�����m�lx�����l�`� fv�����n l`� �Za`�[`� ��=���n� �݁3`� x�����n� ���a`� `� ��=���m�x�;x����m���v�3x�/�$�n� Q�a`� `� ��l`� �Z^`� `� `� �m�a`� ��I�Mv�_�Q�n� ��`� �a>�k��=x���u�n� A�������m�lx��x�����l�`� fv�����n l`� �Za`�[`� ��f���l�`� a`�[`� ��a]�`� \�5?>��n=� �n� ����'�m�lx�M�F�l�`� fv�a�O�n l`� �Za`�[`� ��N�|� `� =x������mKAx�����n� ��`� 4����������`� `� >�Ɋ�I�v���q c`� �UJ�!'?N�6�=Z`� $�t5�V�B`� �B�p� #�B�B�qb '�B�qb `� `� �]�n �o�q =#���|�p� �|�p� x��'����u������l�a`� `� ��+`� J�����qO aa`� `� ]�`� ��a]�`� \�5J��x�܄���mK��'��^`� `� �������A� �-���5$`� �@��`� j�H`� !�Pl`� j`� ]�`� >�Y��@x�j��d�ry���a`�[`� �u�d�nO��$�a`� `� `� �0���8$`� �B��`� `� >�I��N�S�X�`� x�_��Z�r�����j�sa`� `� �jJ�v""""""""""""x����}�s!��7 a`�[`� �ux������s!��7 a`�[`� �v������s!7 a`�`� �]�Ȇ���s!7��a`�`� �]�↎��s!7��a`�`� �]������s!7�a`�`� �]"x����s!��7�a`�[`� �ux�(��#�s!��7� a`�[`� �v�B��=�s!7�(a`�`� �]�\��W�s!7�)a`�`� �]�v��q�s!7�/a`�`� �]������s!7�_a`�`� �]������s!7�a`�`� �]�Ć���s!7���a`�`� �]I���ႏ��r�J��x������rm��'��a`�V]�`� �s?N� �Z]�`� ��)`� �N�%�5�`� �<��`� x�G�@�r�`� f��I�rya`�[`� ��7 >N�mJ]�8`� v�mx�m��h�rm��'��a`�V]�`� �sK]�8`� �:Ex�m��u�La`� �<>N�`��`� v�z��u�N`� �>A>�z��=����v!x������v!��a`� ��I��x��v������v!l`� �Z������uga`�[`� �v>����=x�˄���uGI����v!a`� \�7B��?N����`� �N��`� E�(�1�3��`� �x�:�8�v� ��v�A��<�v!l`� �Za`�[`� �k�K�v� x�I�K�v� ���a`�[`� �l>�N�xI�V�Z�r���g�v!�m�v� a`� `� `� =�q�v� ���v� ?I��x��x�����v� f���v�a`�[`� ��������uga`�[`� �u>���rI���,=��v� x� ��v� ���a`�[`� �l=�7�v��J�v� =�U�v� +?=x����~�uGIx��x������v!�����v�^`� `� `� �m��a`� ��a`� \�7J������uGy�k�k�l�rPy� Ofile:///github/home/.pub-cache/hosted/pub.dartlang.org/args-2.3.1/lib/args.dart��// Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. export 'src/arg_parser.dart' show ArgParser; export 'src/arg_parser_exception.dart' show ArgParserException; export 'src/arg_results.dart' show ArgResults; export 'src/option.dart' show Option, OptionType; NN<-@/2package:args/args.dartdfile:///github/home/.pub-cache/hosted/pub.dartlang.org/args-2.3.1/lib/src/allow_anything_parser.dart�*// Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. import 'dart:collection'; import 'arg_parser.dart'; import 'arg_results.dart'; import 'option.dart'; import 'parser.dart'; /// An ArgParser that treats *all input* as non-option arguments. class AllowAnythingParser implements ArgParser { @override Map get options => const {}; @override Map get commands => const {}; @override bool get allowTrailingOptions => false; @override bool get allowsAnything => true; @override int? get usageLineLength => null; @override ArgParser addCommand(String name, [ArgParser? parser]) { throw UnsupportedError( "ArgParser.allowAnything().addCommands() isn't supported."); } @override void addFlag(String name, {String? abbr, String? help, bool? defaultsTo = false, bool negatable = true, void Function(bool)? callback, bool hide = false, List aliases = const []}) { throw UnsupportedError( "ArgParser.allowAnything().addFlag() isn't supported."); } @override void addOption(String name, {String? abbr, String? help, String? valueHelp, Iterable? allowed, Map? allowedHelp, String? defaultsTo, void Function(String?)? callback, bool allowMultiple = false, bool? splitCommas, bool mandatory = false, bool hide = false, List aliases = const []}) { throw UnsupportedError( "ArgParser.allowAnything().addOption() isn't supported."); } @override void addMultiOption(String name, {String? abbr, String? help, String? valueHelp, Iterable? allowed, Map? allowedHelp, Iterable? defaultsTo, void Function(List)? callback, bool splitCommas = true, bool hide = false, List aliases = const []}) { throw UnsupportedError( "ArgParser.allowAnything().addMultiOption() isn't supported."); } @override void addSeparator(String text) { throw UnsupportedError( "ArgParser.allowAnything().addSeparator() isn't supported."); } @override ArgResults parse(Iterable args) => Parser(null, this, Queue.of(args)).parse(); @override String get usage => ''; @override dynamic defaultFor(String option) { throw ArgumentError('No option named $option'); } @override dynamic getDefault(String option) { throw ArgumentError('No option named $option'); } @override Option? findByAbbreviation(String abbr) => null; @override Option? findByNameOrAlias(String name) => null; } lNN<B1 / 3 * # $ ;E  %*A !(("*C #!($-*H #F -2  &4 &4 3 2+package:args/src/allow_anything_parser.dartYfile:///github/home/.pub-cache/hosted/pub.dartlang.org/args-2.3.1/lib/src/arg_parser.dart��// Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. import 'dart:collection'; import 'allow_anything_parser.dart'; import 'arg_results.dart'; import 'option.dart'; import 'parser.dart'; import 'usage.dart'; /// A class for taking a list of raw command line arguments and parsing out /// options and flags from them. class ArgParser { final Map _options; final Map _commands; /// A map of aliases to the option names they alias. final Map _aliases; /// The options that have been defined for this parser. final Map options; /// The commands that have been defined for this parser. final Map commands; /// A list of the [Option]s in [options] intermingled with [String] /// separators. final _optionsAndSeparators = []; /// Whether or not this parser parses options that appear after non-option /// arguments. final bool allowTrailingOptions; /// An optional maximum line length for [usage] messages. /// /// If specified, then help messages in the usage are wrapped at the given /// column, after taking into account the width of the options. Will refuse to /// wrap help text to less than 10 characters of help text per line if there /// isn't enough space on the line. It preserves embedded newlines, and /// attempts to wrap at whitespace breaks (although it will split words if /// there is no whitespace at which to split). /// /// If null (the default), help messages are not wrapped. final int? usageLineLength; /// Whether or not this parser treats unrecognized options as non-option /// arguments. bool get allowsAnything => false; /// Creates a new ArgParser. /// /// If [allowTrailingOptions] is `true` (the default), the parser will parse /// flags and options that appear after positional arguments. If it's `false`, /// the parser stops parsing as soon as it finds an argument that is neither /// an option nor a command. factory ArgParser({bool allowTrailingOptions = true, int? usageLineLength}) => ArgParser._({}, {}, {}, allowTrailingOptions: allowTrailingOptions, usageLineLength: usageLineLength); /// Creates a new ArgParser that treats *all input* as non-option arguments. /// /// This is intended to allow arguments to be passed through to child /// processes without needing to be redefined in the parent. /// /// Options may not be defined for this parser. factory ArgParser.allowAnything() = AllowAnythingParser; ArgParser._(Map options, Map commands, this._aliases, {this.allowTrailingOptions = true, this.usageLineLength}) : _options = options, options = UnmodifiableMapView(options), _commands = commands, commands = UnmodifiableMapView(commands); /// Defines a command. /// /// A command is a named argument which may in turn define its own options and /// subcommands using the given parser. If [parser] is omitted, implicitly /// creates a new one. Returns the parser for the command. /// /// Note that adding commands this way will not impact the [usage] string. To /// add commands which are included in the usage string see `CommandRunner`. ArgParser addCommand(String name, [ArgParser? parser]) { // Make sure the name isn't in use. if (_commands.containsKey(name)) { throw ArgumentError('Duplicate command "$name".'); } parser ??= ArgParser(); _commands[name] = parser; return parser; } /// Defines a boolean flag. /// /// This adds an [Option] with the given properties to [options]. /// /// The [abbr] argument is a single-character string that can be used as a /// shorthand for this flag. For example, `abbr: "a"` will allow the user to /// pass `-a` to enable the flag. /// /// The [help] argument is used by [usage] to describe this flag. /// /// The [defaultsTo] argument indicates the value this flag will have if the /// user doesn't explicitly pass it in. /// /// The [negatable] argument indicates whether this flag's value can be set to /// `false`. For example, if [name] is `flag`, the user can pass `--no-flag` /// to set its value to `false`. /// /// The [callback] argument is invoked with the flag's value when the flag /// is parsed. Note that this makes argument parsing order-dependent in ways /// that are often surprising, and its use is discouraged in favor of reading /// values from the [ArgResults]. /// /// If [hide] is `true`, this option won't be included in [usage]. /// /// If [aliases] is provided, these are used as aliases for [name]. These /// aliases will not appear as keys in the [options] map. /// /// Throws an [ArgumentError] if: /// /// * There is already an option named [name]. /// * There is already an option using abbreviation [abbr]. void addFlag(String name, {String? abbr, String? help, bool? defaultsTo = false, bool negatable = true, void Function(bool)? callback, bool hide = false, List aliases = const []}) { _addOption( name, abbr, help, null, null, null, defaultsTo, callback == null ? null : (value) => callback(value as bool), OptionType.flag, negatable: negatable, hide: hide, aliases: aliases); } /// Defines an option that takes a value. /// /// This adds an [Option] with the given properties to [options]. /// /// The [abbr] argument is a single-character string that can be used as a /// shorthand for this option. For example, `abbr: "a"` will allow the user to /// pass `-a value` or `-avalue`. /// /// The [help] argument is used by [usage] to describe this option. /// /// The [valueHelp] argument is used by [usage] as a name for the value this /// option takes. For example, `valueHelp: "FOO"` will include /// `--option=` rather than just `--option` in the usage string. /// /// The [allowed] argument is a list of valid values for this option. If /// it's non-`null` and the user passes a value that's not included in the /// list, [parse] will throw a [FormatException]. The allowed values will also /// be included in [usage]. /// /// The [allowedHelp] argument is a map from values in [allowed] to /// documentation for those values that will be included in [usage]. /// /// The [defaultsTo] argument indicates the value this option will have if the /// user doesn't explicitly pass it in (or `null` by default). /// /// The [callback] argument is invoked with the option's value when the option /// is parsed, or with `null` if the option was not parsed. /// Note that this makes argument parsing order-dependent in ways that are /// often surprising, and its use is discouraged in favor of reading values /// from the [ArgResults]. /// /// If [hide] is `true`, this option won't be included in [usage]. /// /// If [aliases] is provided, these are used as aliases for [name]. These /// aliases will not appear as keys in the [options] map. /// /// Throws an [ArgumentError] if: /// /// * There is already an option with name [name]. /// * There is already an option using abbreviation [abbr]. void addOption(String name, {String? abbr, String? help, String? valueHelp, Iterable? allowed, Map? allowedHelp, String? defaultsTo, void Function(String?)? callback, bool mandatory = false, bool hide = false, List aliases = const []}) { _addOption(name, abbr, help, valueHelp, allowed, allowedHelp, defaultsTo, callback, OptionType.single, mandatory: mandatory, hide: hide, aliases: aliases); } /// Defines an option that takes multiple values. /// /// The [abbr] argument is a single-character string that can be used as a /// shorthand for this option. For example, `abbr: "a"` will allow the user to /// pass `-a value` or `-avalue`. /// /// The [help] argument is used by [usage] to describe this option. /// /// The [valueHelp] argument is used by [usage] as a name for the value this /// argument takes. For example, `valueHelp: "FOO"` will include /// `--option=` rather than just `--option` in the usage string. /// /// The [allowed] argument is a list of valid values for this argument. If /// it's non-`null` and the user passes a value that's not included in the /// list, [parse] will throw a [FormatException]. The allowed values will also /// be included in [usage]. /// /// The [allowedHelp] argument is a map from values in [allowed] to /// documentation for those values that will be included in [usage]. /// /// The [defaultsTo] argument indicates the values this option will have if /// the user doesn't explicitly pass it in (or `[]` by default). /// /// The [callback] argument is invoked with the option's value when the option /// is parsed. Note that this makes argument parsing order-dependent in ways /// that are often surprising, and its use is discouraged in favor of reading /// values from the [ArgResults]. /// /// If [splitCommas] is `true` (the default), multiple options may be passed /// by writing `--option a,b` in addition to `--option a --option b`. /// /// If [hide] is `true`, this option won't be included in [usage]. /// /// If [aliases] is provided, these are used as aliases for [name]. These /// aliases will not appear as keys in the [options] map. /// /// Throws an [ArgumentError] if: /// /// * There is already an option with name [name]. /// * There is already an option using abbreviation [abbr]. void addMultiOption(String name, {String? abbr, String? help, String? valueHelp, Iterable? allowed, Map? allowedHelp, Iterable? defaultsTo, void Function(List)? callback, bool splitCommas = true, bool hide = false, List aliases = const []}) { _addOption( name, abbr, help, valueHelp, allowed, allowedHelp, defaultsTo?.toList() ?? [], callback == null ? null : (value) => callback(value as List), OptionType.multiple, splitCommas: splitCommas, hide: hide, aliases: aliases); } void _addOption( String name, String? abbr, String? help, String? valueHelp, Iterable? allowed, Map? allowedHelp, defaultsTo, Function? callback, OptionType type, {bool negatable = false, bool? splitCommas, bool mandatory = false, bool hide = false, List aliases = const []}) { var allNames = [name, ...aliases]; if (allNames.any((name) => findByNameOrAlias(name) != null)) { throw ArgumentError('Duplicate option or alias "$name".'); } // Make sure the abbreviation isn't too long or in use. if (abbr != null) { var existing = findByAbbreviation(abbr); if (existing != null) { throw ArgumentError( 'Abbreviation "$abbr" is already used by "${existing.name}".'); } } // Make sure the option is not mandatory with a default value. if (mandatory && defaultsTo != null) { throw ArgumentError( 'The option $name cannot be mandatory and have a default value.'); } var option = newOption(name, abbr, help, valueHelp, allowed, allowedHelp, defaultsTo, callback, type, negatable: negatable, splitCommas: splitCommas, mandatory: mandatory, hide: hide, aliases: aliases); _options[name] = option; _optionsAndSeparators.add(option); for (var alias in aliases) { _aliases[alias] = name; } } /// Adds a separator line to the usage. /// /// In the usage text for the parser, this will appear between any options /// added before this call and ones added after it. void addSeparator(String text) { _optionsAndSeparators.add(text); } /// Parses [args], a list of command-line arguments, matches them against the /// flags and options defined by this parser, and returns the result. ArgResults parse(Iterable args) => Parser(null, this, Queue.of(args)).parse(); /// Generates a string displaying usage information for the defined options. /// /// This is basically the help text shown on the command line. String get usage { return generateUsage(_optionsAndSeparators, lineLength: usageLineLength); } /// Returns the default value for [option]. dynamic defaultFor(String option) { var value = findByNameOrAlias(option); if (value == null) { throw ArgumentError('No option named $option'); } return value.defaultsTo; } @Deprecated('Use defaultFor instead.') dynamic getDefault(String option) => defaultFor(option); /// Finds the option whose abbreviation is [abbr], or `null` if no option has /// that abbreviation. Option? findByAbbreviation(String abbr) { for (var option in options.values) { if (option.abbr == abbr) return option; } return null; } /// Finds the option whose name or alias matches [name], or `null` if no /// option has that name or alias. Option? findByNameOrAlias(String name) => options[_aliases[name] ?? name]; } �qNN<%L!&*7&:%;)F$M#<MQOJM1<K$OQOQQ6-OH?2;L@02QM=PO;('9DMO$DO*QO#MOP$EL<$1> %*F,DMQ$FOAHKMQFGQAQ>MNEL<$5>!((*N%=4MQ$FOCHMMQFGNCQOP$OHEL<$5>#!($-*,N"!(*'CA</LC+MN$"'!*M6#%PH-2OAN.&+6);P,).K%M package:args/src/arg_parser.dart���cfile:///github/home/.pub-cache/hosted/pub.dartlang.org/args-2.3.1/lib/src/arg_parser_exception.dart��// Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. /// An exception thrown by `ArgParser`. class ArgParserException extends FormatException { /// The command(s) that were parsed before discovering the error. /// /// This will be empty if the error was on the root parser. final List commands; ArgParserException(String message, [Iterable? commands]) : commands = commands == null ? const [] : List.unmodifiable(commands), super(message); } NN<(3D>CN*package:args/src/arg_parser_exception.dartZfile:///github/home/.pub-cache/hosted/pub.dartlang.org/args-2.3.1/lib/src/arg_results.dart��// Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. import 'dart:collection'; import 'arg_parser.dart'; /// Creates a new [ArgResults]. /// /// Since [ArgResults] doesn't have a public constructor, this lets [ArgParser] /// get to it. This function isn't exported to the public API of the package. ArgResults newArgResults( ArgParser parser, Map parsed, String? name, ArgResults? command, List rest, List arguments) { return ArgResults._(parser, parsed, name, command, rest, arguments); } /// The results of parsing a series of command line arguments using /// [ArgParser.parse()]. /// /// Includes the parsed options and any remaining unparsed command line /// arguments. class ArgResults { /// The [ArgParser] whose options were parsed for these results. final ArgParser _parser; /// The option values that were parsed from arguments. final Map _parsed; /// The name of the command for which these options are parsed, or `null` if /// these are the top-level results. final String? name; /// The command that was selected, or `null` if none was. /// /// This will contain the options that were selected for that command. final ArgResults? command; /// The remaining command-line arguments that were not parsed as options or /// flags. /// /// If `--` was used to separate the options from the remaining arguments, /// it will not be included in this list unless parsing stopped before the /// `--` was reached. final List rest; /// The original arguments that were parsed. final List arguments; ArgResults._(this._parser, this._parsed, this.name, this.command, List rest, List arguments) : rest = UnmodifiableListView(rest), arguments = UnmodifiableListView(arguments); /// Returns the parsed ore default command-line option named [name]. /// /// [name] must be a valid option name in the parser. dynamic operator [](String name) { if (!_parser.options.containsKey(name)) { throw ArgumentError('Could not find an option named "$name".'); } return _parser.options[name]!.valueOrDefault(_parsed[name]); } /// The names of the available options. /// /// Includes the options whose values were parsed or that have defaults. /// Options that weren't present and have no default are omitted. Iterable get options { var result = _parsed.keys.toSet(); // Include the options that have defaults. _parser.options.forEach((name, option) { if (option.defaultsTo != null) result.add(name); }); return result; } /// Returns `true` if the option with [name] was parsed from an actual /// argument. /// /// Returns `false` if it wasn't provided and the default value or no default /// value would be used instead. /// /// [name] must be a valid option name in the parser. bool wasParsed(String name) { if (!_parser.options.containsKey(name)) { throw ArgumentError('Could not find an option named "$name".'); } return _parsed.containsKey(name); } } fNN< PN!GDHC9&O'<IN MM/ D1+5G8%.FA*KD!'/-7IP#8 .F&!package:args/src/arg_results.dartUfile:///github/home/.pub-cache/hosted/pub.dartlang.org/args-2.3.1/lib/src/option.dart�-// Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. /// Creates a new [Option]. /// /// Since [Option] doesn't have a public constructor, this lets `ArgParser` /// get to it. This function isn't exported to the public API of the package. Option newOption( String name, String? abbr, String? help, String? valueHelp, Iterable? allowed, Map? allowedHelp, defaultsTo, Function? callback, OptionType type, {bool? negatable, bool? splitCommas, bool mandatory = false, bool hide = false, List aliases = const []}) { return Option._(name, abbr, help, valueHelp, allowed, allowedHelp, defaultsTo, callback, type, negatable: negatable, splitCommas: splitCommas, mandatory: mandatory, hide: hide, aliases: aliases); } /// A command-line option. /// /// This represents both boolean flags and options which take a value. class Option { /// The name of the option that the user passes as an argument. final String name; /// A single-character string that can be used as a shorthand for this option. /// /// For example, `abbr: "a"` will allow the user to pass `-a value` or /// `-avalue`. final String? abbr; /// A description of this option. final String? help; /// A name for the value this option takes. final String? valueHelp; /// A list of valid values for this option. final List? allowed; /// A map from values in [allowed] to documentation for those values. final Map? allowedHelp; /// The value this option will have if the user doesn't explicitly pass it. final dynamic defaultsTo; /// Whether this flag's value can be set to `false`. /// /// For example, if [name] is `flag`, the user can pass `--no-flag` to set its /// value to `false`. /// /// This is `null` unless [type] is [OptionType.flag]. final bool? negatable; /// The callback to invoke with the option's value when the option is parsed. final Function? callback; /// Whether this is a flag, a single value option, or a multi-value option. final OptionType type; /// Whether multiple values may be passed by writing `--option a,b` in /// addition to `--option a --option b`. final bool splitCommas; /// Whether this option must be provided for correct usage. final bool mandatory; /// Whether this option should be hidden from usage documentation. final bool hide; /// All aliases for [name]. final List aliases; /// Whether the option is boolean-valued flag. bool get isFlag => type == OptionType.flag; /// Whether the option takes a single value. bool get isSingle => type == OptionType.single; /// Whether the option allows multiple values. bool get isMultiple => type == OptionType.multiple; Option._( this.name, this.abbr, this.help, this.valueHelp, Iterable? allowed, Map? allowedHelp, this.defaultsTo, this.callback, this.type, {this.negatable, bool? splitCommas, this.mandatory = false, this.hide = false, this.aliases = const []}) : allowed = allowed == null ? null : List.unmodifiable(allowed), allowedHelp = allowedHelp == null ? null : Map.unmodifiable(allowedHelp), // If the user doesn't specify [splitCommas], it defaults to true for // multiple options. splitCommas = splitCommas ?? type == OptionType.multiple { if (name.isEmpty) { throw ArgumentError('Name cannot be empty.'); } else if (name.startsWith('-')) { throw ArgumentError('Name $name cannot start with "-".'); } // Ensure name does not contain any invalid characters. if (_invalidChars.hasMatch(name)) { throw ArgumentError('Name "$name" contains invalid characters.'); } var abbr = this.abbr; if (abbr != null) { if (abbr.length != 1) { throw ArgumentError('Abbreviation must be null or have length 1.'); } else if (abbr == '-') { throw ArgumentError('Abbreviation cannot be "-".'); } if (_invalidChars.hasMatch(abbr)) { throw ArgumentError('Abbreviation is an invalid character.'); } } } /// Returns [value] if non-`null`, otherwise returns the default value for /// this option. /// /// For single-valued options, it will be [defaultsTo] if set or `null` /// otherwise. For multiple-valued options, it will be an empty list or a /// list containing [defaultsTo] if set. dynamic valueOrDefault(value) { if (value != null) return value; if (isMultiple) return defaultsTo ?? []; return defaultsTo; } @Deprecated('Use valueOrDefault instead.') dynamic getOrDefault(value) => valueOrDefault(value); static final _invalidChars = RegExp(r'''[ \t\r\n"'\\/]'''); } /// What kinds of values an option accepts. class OptionType { /// An option that can only be `true` or `false`. /// /// The presence of the option name itself in the argument list means `true`. static const flag = OptionType._('OptionType.flag'); /// An option that takes a single value. /// /// Examples: /// /// --mode debug /// -mdebug /// --mode=debug /// /// If the option is passed more than once, the last one wins. static const single = OptionType._('OptionType.single'); /// An option that allows multiple values. /// /// Example: /// /// --output text --output xml /// /// In the parsed `ArgResults`, a multiple-valued option will always return /// a list, even if one or no values were passed. static const multiple = OptionType._('OptionType.multiple'); final String name; const OptionType._(this.name); } ��NN<LN&(Q GBQI$..H*N7Q9PNI+>E1./216 !( GHNC4'@<(HL <*FMJL+"%5-8>,4P7+A;-%N4?!package:args/src/option.dart�����Ufile:///github/home/.pub-cache/hosted/pub.dartlang.org/args-2.3.1/lib/src/parser.dart��// Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. import 'dart:collection'; import 'arg_parser.dart'; import 'arg_parser_exception.dart'; import 'arg_results.dart'; import 'option.dart'; /// The actual argument parsing class. /// /// Unlike [ArgParser] which is really more an "arg grammar", this is the class /// that does the parsing and holds the mutable state required during a parse. class Parser { /// If parser is parsing a command's options, this will be the name of the /// command. For top-level results, this returns `null`. final String? _commandName; /// The parser for the supercommand of this command parser, or `null` if this /// is the top-level parser. final Parser? _parent; /// The grammar being parsed. final ArgParser _grammar; /// The arguments being parsed. final Queue _args; /// The remaining non-option, non-command arguments. final List _rest; /// The accumulated parsed options. final Map _results = {}; Parser(this._commandName, this._grammar, this._args, [this._parent, List? rest]) : _rest = [...?rest]; /// The current argument being parsed. String get _current => _args.first; /// Parses the arguments. This can only be called once. ArgResults parse() { var arguments = _args.toList(); if (_grammar.allowsAnything) { return newArgResults( _grammar, const {}, _commandName, null, arguments, arguments); } ArgResults? commandResults; // Parse the args. while (_args.isNotEmpty) { if (_current == '--') { // Reached the argument terminator, so stop here. _args.removeFirst(); break; } // Try to parse the current argument as a command. This happens before // options so that commands can have option-like names. var command = _grammar.commands[_current]; if (command != null) { _validate(_rest.isEmpty, 'Cannot specify arguments before a command.'); var commandName = _args.removeFirst(); var commandParser = Parser(commandName, command, _args, this, _rest); try { commandResults = commandParser.parse(); } on ArgParserException catch (error) { throw ArgParserException( error.message, [commandName, ...error.commands]); } // All remaining arguments were passed to command so clear them here. _rest.clear(); break; } // Try to parse the current argument as an option. Note that the order // here matters. if (_parseSoloOption()) continue; if (_parseAbbreviation(this)) continue; if (_parseLongOption()) continue; // This argument is neither option nor command, so stop parsing unless // the [allowTrailingOptions] option is set. if (!_grammar.allowTrailingOptions) break; _rest.add(_args.removeFirst()); } // Check if mandatory and invoke existing callbacks. _grammar.options.forEach((name, option) { var parsedOption = _results[name]; // Check if an option was mandatory and exist // if not throw an exception if (option.mandatory && parsedOption == null) { throw ArgParserException('Option $name is mandatory.'); } var callback = option.callback; if (callback == null) return; callback(option.valueOrDefault(parsedOption)); }); // Add in the leftover arguments we didn't parse to the innermost command. _rest.addAll(_args); _args.clear(); return newArgResults( _grammar, _results, _commandName, commandResults, _rest, arguments); } /// Pulls the value for [option] from the second argument in [_args]. /// /// Validates that there is a valid value there. void _readNextArgAsValue(Option option) { // Take the option argument from the next command line arg. _validate(_args.isNotEmpty, 'Missing argument for "${option.name}".'); _setOption(_results, option, _current); _args.removeFirst(); } /// Tries to parse the current argument as a "solo" option, which is a single /// hyphen followed by a single letter. /// /// We treat this differently than collapsed abbreviations (like "-abc") to /// handle the possible value that may follow it. bool _parseSoloOption() { // Hand coded regexp: r'^-([a-zA-Z0-9])$' // Length must be two, hyphen followed by any letter/digit. if (_current.length != 2) return false; if (!_current.startsWith('-')) return false; var opt = _current[1]; if (!_isLetterOrDigit(opt.codeUnitAt(0))) return false; return _handleSoloOption(opt); } bool _handleSoloOption(String opt) { var option = _grammar.findByAbbreviation(opt); if (option == null) { // Walk up to the parent command if possible. _validate(_parent != null, 'Could not find an option or flag "-$opt".'); return _parent!._handleSoloOption(opt); } _args.removeFirst(); if (option.isFlag) { _setFlag(_results, option, true); } else { _readNextArgAsValue(option); } return true; } /// Tries to parse the current argument as a series of collapsed abbreviations /// (like "-abc") or a single abbreviation with the value directly attached /// to it (like "-mrelease"). bool _parseAbbreviation(Parser innermostCommand) { // Hand coded regexp: r'^-([a-zA-Z0-9]+)(.*)$' // Hyphen then at least one letter/digit then zero or more // anything-but-newlines. if (_current.length < 2) return false; if (!_current.startsWith('-')) return false; // Find where we go from letters/digits to rest. var index = 1; while (index < _current.length && _isLetterOrDigit(_current.codeUnitAt(index))) { ++index; } // Must be at least one letter/digit. if (index == 1) return false; // If the first character is the abbreviation for a non-flag option, then // the rest is the value. var lettersAndDigits = _current.substring(1, index); var rest = _current.substring(index); if (rest.contains('\n') || rest.contains('\r')) return false; return _handleAbbreviation(lettersAndDigits, rest, innermostCommand); } bool _handleAbbreviation( String lettersAndDigits, String rest, Parser innermostCommand) { var c = lettersAndDigits.substring(0, 1); var first = _grammar.findByAbbreviation(c); if (first == null) { // Walk up to the parent command if possible. _validate( _parent != null, 'Could not find an option with short name "-$c".'); return _parent! ._handleAbbreviation(lettersAndDigits, rest, innermostCommand); } else if (!first.isFlag) { // The first character is a non-flag option, so the rest must be the // value. var value = '${lettersAndDigits.substring(1)}$rest'; _setOption(_results, first, value); } else { // If we got some non-flag characters, then it must be a value, but // if we got here, it's a flag, which is wrong. _validate( rest == '', 'Option "-$c" is a flag and cannot handle value ' '"${lettersAndDigits.substring(1)}$rest".'); // Not an option, so all characters should be flags. // We use "innermostCommand" here so that if a parent command parses the // *first* letter, subcommands can still be found to parse the other // letters. for (var i = 0; i < lettersAndDigits.length; i++) { var c = lettersAndDigits.substring(i, i + 1); innermostCommand._parseShortFlag(c); } } _args.removeFirst(); return true; } void _parseShortFlag(String c) { var option = _grammar.findByAbbreviation(c); if (option == null) { // Walk up to the parent command if possible. _validate( _parent != null, 'Could not find an option with short name "-$c".'); _parent!._parseShortFlag(c); return; } // In a list of short options, only the first can be a non-flag. If // we get here we've checked that already. _validate( option.isFlag, 'Option "-$c" must be a flag to be in a collapsed "-".'); _setFlag(_results, option, true); } /// Tries to parse the current argument as a long-form named option, which /// may include a value like "--mode=release" or "--mode release". bool _parseLongOption() { // Hand coded regexp: r'^--([a-zA-Z\-_0-9]+)(=(.*))?$' // Two hyphens then at least one letter/digit/hyphen, optionally an equal // sign followed by zero or more anything-but-newlines. if (!_current.startsWith('--')) return false; var index = _current.indexOf('='); var name = index == -1 ? _current.substring(2) : _current.substring(2, index); for (var i = 0; i != name.length; ++i) { if (!_isLetterDigitHyphenOrUnderscore(name.codeUnitAt(i))) return false; } var value = index == -1 ? null : _current.substring(index + 1); if (value != null && (value.contains('\n') || value.contains('\r'))) { return false; } return _handleLongOption(name, value); } bool _handleLongOption(String name, String? value) { var option = _grammar.findByNameOrAlias(name); if (option != null) { _args.removeFirst(); if (option.isFlag) { _validate( value == null, 'Flag option "$name" should not be given a value.'); _setFlag(_results, option, true); } else if (value != null) { // We have a value like --foo=bar. _setOption(_results, option, value); } else { // Option like --foo, so look for the value as the next arg. _readNextArgAsValue(option); } } else if (name.startsWith('no-')) { // See if it's a negated flag. var positiveName = name.substring('no-'.length); option = _grammar.findByNameOrAlias(positiveName); if (option == null) { // Walk up to the parent command if possible. _validate(_parent != null, 'Could not find an option named "$name".'); return _parent!._handleLongOption(name, value); } _args.removeFirst(); _validate(option.isFlag, 'Cannot negate non-flag option "$name".'); _validate(option.negatable!, 'Cannot negate option "$name".'); _setFlag(_results, option, false); } else { // Walk up to the parent command if possible. _validate(_parent != null, 'Could not find an option named "$name".'); return _parent!._handleLongOption(name, value); } return true; } /// Called during parsing to validate the arguments. /// /// Throws an [ArgParserException] if [condition] is `false`. void _validate(bool condition, String message) { if (!condition) throw ArgParserException(message); } /// Validates and stores [value] as the value for [option], which must not be /// a flag. void _setOption(Map results, Option option, String value) { assert(!option.isFlag); if (!option.isMultiple) { _validateAllowed(option, value); results[option.name] = value; return; } var list = results.putIfAbsent(option.name, () => []); if (option.splitCommas) { for (var element in value.split(',')) { _validateAllowed(option, element); list.add(element); } } else { _validateAllowed(option, value); list.add(value); } } /// Validates and stores [value] as the value for [option], which must be a /// flag. void _setFlag(Map results, Option option, bool value) { assert(option.isFlag); results[option.name] = value; } /// Validates that [value] is allowed as a value of [option]. void _validateAllowed(Option option, String value) { if (option.allowed == null) return; _validate(option.allowed!.contains(value), '"$value" is not an allowed value for option "${option.name}".'); } } bool _isLetterOrDigit(int codeUnit) => // Uppercase letters. (codeUnit >= 65 && codeUnit <= 90) || // Lowercase letters. (codeUnit >= 97 && codeUnit <= 122) || // Digits. (codeUnit >= 48 && codeUnit <= 57); bool _isLetterDigitHyphenOrUnderscore(int codeUnit) => _isLetterOrDigit(codeUnit) || // Hyphen. codeUnit == 45 || // Underscore. codeUnit == 95; �oNN<$'POM;P "7&=7*)&:$#I :M>1P/N20$@ NM(.(M31&9.)4#6@&$5OMH3,@K,P*N4.@,1<#'34O.( #QN 53?+15&8*"N9*BJG.04OJ K;* J6<7;OK:6-#14O#H/Q&ME;N<2'L-ODK+73P*"+-E%)%796O8JE) 4M67@37P>'$C.+ 'N :"@7(/J'*+(7"package:args/src/parser.dartTfile:///github/home/.pub-cache/hosted/pub.dartlang.org/args-2.3.1/lib/src/usage.dart�}// Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. import 'dart:math' as math; import '../args.dart'; import 'utils.dart'; /// Generates a string of usage (i.e. help) text for a list of options. /// /// Internally, it works like a tabular printer. The output is divided into /// three horizontal columns, like so: /// /// -h, --help Prints the usage information /// | | | | /// /// It builds the usage text up one column at a time and handles padding with /// spaces and wrapping to the next line to keep the cells correctly lined up. /// /// [lineLength] specifies the horizontal character position at which the help /// text is wrapped. Help that extends past this column will be wrapped at the /// nearest whitespace (or truncated if there is no available whitespace). If /// `null` there will not be any wrapping. String generateUsage(List optionsAndSeparators, {int? lineLength}) => _Usage(optionsAndSeparators, lineLength).generate(); class _Usage { /// Abbreviation, long name, help. static const _columnCount = 3; /// A list of the [Option]s intermingled with [String] separators. final List _optionsAndSeparators; /// The working buffer for the generated usage text. final _buffer = StringBuffer(); /// The column that the "cursor" is currently on. /// /// If the next call to [write()] is not for this column, it will correctly /// handle advancing to the next column (and possibly the next row). int _currentColumn = 0; /// The width in characters of each column. late final _columnWidths = _calculateColumnWidths(); /// How many newlines need to be rendered before the next bit of text can be /// written. /// /// We do this lazily so that the last bit of usage doesn't have dangling /// newlines. We only write newlines right *before* we write some real /// content. int _newlinesNeeded = 0; /// The horizontal character position at which help text is wrapped. /// /// Help that extends past this column will be wrapped at the nearest /// whitespace (or truncated if there is no available whitespace). final int? lineLength; _Usage(this._optionsAndSeparators, this.lineLength); /// Generates a string displaying usage information for the defined options. /// This is basically the help text shown on the command line. String generate() { for (var optionOrSeparator in _optionsAndSeparators) { if (optionOrSeparator is String) { _writeSeparator(optionOrSeparator); continue; } var option = optionOrSeparator as Option; if (option.hide) continue; _writeOption(option); } return _buffer.toString(); } void _writeSeparator(String separator) { // Ensure that there's always a blank line before a separator. if (_buffer.isNotEmpty) _buffer.write('\n\n'); _buffer.write(separator); _newlinesNeeded = 1; } void _writeOption(Option option) { _write(0, _abbreviation(option)); _write(1, '${_longOption(option)}${_mandatoryOption(option)}'); if (option.help != null) _write(2, option.help!); if (option.allowedHelp != null) { var allowedNames = option.allowedHelp!.keys.toList(); allowedNames.sort(); _newline(); for (var name in allowedNames) { _write(1, _allowedTitle(option, name)); _write(2, option.allowedHelp![name]!); } _newline(); } else if (option.allowed != null) { _write(2, _buildAllowedList(option)); } else if (option.isFlag) { if (option.defaultsTo == true) { _write(2, '(defaults to on)'); } } else if (option.isMultiple) { if (option.defaultsTo != null && option.defaultsTo.isNotEmpty) { var defaults = (option.defaultsTo as List).map((value) => '"$value"').join(', '); _write(2, '(defaults to $defaults)'); } } else if (option.defaultsTo != null) { _write(2, '(defaults to "${option.defaultsTo}")'); } } String _abbreviation(Option option) => option.abbr == null ? '' : '-${option.abbr}, '; String _longOption(Option option) { String result; if (option.negatable!) { result = '--[no-]${option.name}'; } else { result = '--${option.name}'; } if (option.valueHelp != null) result += '=<${option.valueHelp}>'; return result; } String _mandatoryOption(Option option) { return option.mandatory ? ' (mandatory)' : ''; } String _allowedTitle(Option option, String allowed) { var isDefault = option.defaultsTo is List ? option.defaultsTo.contains(allowed) : option.defaultsTo == allowed; return ' [$allowed]' + (isDefault ? ' (default)' : ''); } List _calculateColumnWidths() { var abbr = 0; var title = 0; for (var option in _optionsAndSeparators) { if (option is! Option) continue; if (option.hide) continue; // Make room in the first column if there are abbreviations. abbr = math.max(abbr, _abbreviation(option).length); // Make room for the option. title = math.max( title, _longOption(option).length + _mandatoryOption(option).length); // Make room for the allowed help. if (option.allowedHelp != null) { for (var allowed in option.allowedHelp!.keys) { title = math.max(title, _allowedTitle(option, allowed).length); } } } // Leave a gutter between the columns. title += 4; return [abbr, title]; } void _newline() { _newlinesNeeded++; _currentColumn = 0; } void _write(int column, String text) { var lines = text.split('\n'); // If we are writing the last column, word wrap it to fit. if (column == _columnWidths.length && lineLength != null) { var start = _columnWidths.take(column).reduce((start, width) => start + width); lines = [ for (var line in lines) ...wrapTextAsLines(line, start: start, length: lineLength), ]; } // Strip leading and trailing empty lines. while (lines.isNotEmpty && lines.first.trim() == '') { lines.removeAt(0); } while (lines.isNotEmpty && lines.last.trim() == '') { lines.removeLast(); } for (var line in lines) { _writeLine(column, line); } } void _writeLine(int column, String text) { // Write any pending newlines. while (_newlinesNeeded > 0) { _buffer.write('\n'); _newlinesNeeded--; } // Advance until we are at the right column (which may mean wrapping around // to the next line. while (_currentColumn != column) { if (_currentColumn < _columnCount - 1) { _buffer.write(' ' * _columnWidths[_currentColumn]); } else { _buffer.write('\n'); } _currentColumn = (_currentColumn + 1) % _columnCount; } if (column < _columnWidths.length) { // Fixed-size column, so pad it. _buffer.write(text.padRight(_columnWidths[column])); } else { // The last column, so just write it. _buffer.write(text); } // Advance to the next column. _currentColumn = (_currentColumn + 1) % _columnCount; // If we reached the last column, we need to wrap to the next line. if (column == _columnCount - 1) _newlinesNeeded++; } String _buildAllowedList(Option option) { var isDefault = option.defaultsTo is List ? option.defaultsTo.contains : (value) => value == option.defaultsTo; var allowedBuffer = StringBuffer(); allowedBuffer.write('['); var first = true; for (var allowed in option.allowed!) { if (!first) allowedBuffer.write(', '); allowedBuffer.write(allowed); if (isDefault(allowed)) { allowedBuffer.write(' (default)'); } first = false; } allowedBuffer.write(']'); return allowedBuffer.toString(); } } �NN<HL'18NOOON+F9%!E$7"4NG.7OLIGHE7OA;),0!+C3%&D6&<'0/), ''$GO.,9)6&( #F+38..(A'0'!C;#P)(8J +)"?@N F /;: -#"P'/<<)'; ,#:H7,.%1(+-$ +%package:args/src/usage.dartTfile:///github/home/.pub-cache/hosted/pub.dartlang.org/args-2.3.1/lib/src/utils.dart��// Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. import 'dart:math' as math; /// Pads [source] to [length] by adding spaces at the end. String padRight(String source, int length) => source + ' ' * (length - source.length); /// Wraps a block of text into lines no longer than [length]. /// /// Tries to split at whitespace, but if that's not good enough to keep it /// under the limit, then it splits in the middle of a word. /// /// Preserves indentation (leading whitespace) for each line (delimited by '\n') /// in the input, and indents wrapped lines the same amount. /// /// If [hangingIndent] is supplied, then that many spaces are added to each /// line, except for the first line. This is useful for flowing text with a /// heading prefix (e.g. "Usage: "): /// /// ```dart /// var prefix = "Usage: "; /// print(prefix + wrapText(invocation, hangingIndent: prefix.length, length: 40)); /// ``` /// /// yields: /// ``` /// Usage: app main_command /// [arguments] /// ``` /// /// If [length] is not specified, then no wrapping occurs, and the original /// [text] is returned unchanged. String wrapText(String text, {int? length, int? hangingIndent}) { if (length == null) return text; hangingIndent ??= 0; var splitText = text.split('\n'); var result = []; for (var line in splitText) { var trimmedText = line.trimLeft(); final leadingWhitespace = line.substring(0, line.length - trimmedText.length); List notIndented; if (hangingIndent != 0) { // When we have a hanging indent, we want to wrap the first line at one // width, and the rest at another (offset by hangingIndent), so we wrap // them twice and recombine. var firstLineWrap = wrapTextAsLines(trimmedText, length: length - leadingWhitespace.length); notIndented = [firstLineWrap.removeAt(0)]; trimmedText = trimmedText.substring(notIndented[0].length).trimLeft(); if (firstLineWrap.isNotEmpty) { notIndented.addAll(wrapTextAsLines(trimmedText, length: length - leadingWhitespace.length - hangingIndent)); } } else { notIndented = wrapTextAsLines(trimmedText, length: length - leadingWhitespace.length); } String? hangingIndentString; result.addAll(notIndented.map((String line) { // Don't return any lines with just whitespace on them. if (line.isEmpty) return ''; var result = '${hangingIndentString ?? ''}$leadingWhitespace$line'; hangingIndentString ??= ' ' * hangingIndent!; return result; })); } return result.join('\n'); } /// Wraps a block of text into lines no longer than [length], /// starting at the [start] column, and returns the result as a list of strings. /// /// Tries to split at whitespace, but if that's not good enough to keep it /// under the limit, then splits in the middle of a word. Preserves embedded /// newlines, but not indentation (it trims whitespace from each line). /// /// If [length] is not specified, then no wrapping occurs, and the original /// [text] is returned after splitting it on newlines. Whitespace is not trimmed /// in this case. List wrapTextAsLines(String text, {int start = 0, int? length}) { assert(start >= 0); /// Returns true if the code unit at [index] in [text] is a whitespace /// character. /// /// Based on: https://en.wikipedia.org/wiki/Whitespace_character#Unicode bool isWhitespace(String text, int index) { var rune = text.codeUnitAt(index); return rune >= 0x0009 && rune <= 0x000D || rune == 0x0020 || rune == 0x0085 || rune == 0x1680 || rune == 0x180E || rune >= 0x2000 && rune <= 0x200A || rune == 0x2028 || rune == 0x2029 || rune == 0x202F || rune == 0x205F || rune == 0x3000 || rune == 0xFEFF; } if (length == null) return text.split('\n'); var result = []; var effectiveLength = math.max(length - start, 10); for (var line in text.split('\n')) { line = line.trim(); if (line.length <= effectiveLength) { result.add(line); continue; } var currentLineStart = 0; int? lastWhitespace; for (var i = 0; i < line.length; ++i) { if (isWhitespace(line, i)) lastWhitespace = i; if (i - currentLineStart >= effectiveLength) { // Back up to the last whitespace, unless there wasn't any, in which // case we just split where we are. if (lastWhitespace != null) i = lastWhitespace; result.add(line.substring(currentLineStart, i).trim()); // Skip any intervening whitespace. while (isWhitespace(line, i) && i < line.length) { i++; } currentLineStart = i; lastWhitespace = null; } } result.add(line.substring(currentLineStart).trim()); } return result; } ��NN<;.->K=Q=LL% T )L"B#$ '=NN#761M&8I 16!:>#J4 >QKMHLQJIK.'/,/6'*,55M,8@,; 9package:args/src/utils.darty�{������п�,�<�"��`� `r`� ` `� /`�[`�[1245;�����������������?����?��`� [��#&,/69<?BEHKNQSV^ailtw����"�����   (� / 1 4 5� !#&),-.�2�� �!�"5"/"1"4"6!!! ! �,�-5-/-1-4-6,,, , , ,( �998 �< <<�(�(�2�>���4A�0B�4I��?���9K�8��;L�8��=N��@���@P� ��B�A�-Q��B�E��F��C�H��I��D�@[�0\�K��NI�-]��E�Q��R� ��Tc��F�Be�Q��Xi�Tl��G�[��\�A�"�A��H�9���9���_��b���9c�E��eR�4���b���BQ�B���\���\���B���B���B��� ��p���-���B���0���\���\���I��J�x��y�x��{�ρx��}���{�с4�؁0�ށ0�߁B���w����K�2�L����l�0��0��B���4���9���4���\��\f�4Q�B���\���B���B��?�����M�?���R�N %+5HOWky���������Ԁۀ߀������� �=�F�O�V�a�n�y�����Ƃ� ��J�O�S�X�b�h�x�����������‚̂Ђ��������&�(�+�0�6�>�F�L�O�j�r�������σ҃������ ���� �'�.�2�;�[�i�o�s�x��������������҄܄݄�����%�+�V�q�������������ą̅Յۅ����������#�-�/�:�C�m�x�������������͆Ԇ��� ���"�3�V�^�n�o�t�u���������������ׇ������?�F�G�M�^�k���������͈ֈ݈������ �/�?�G�I�K�k�o�u�����������ȉЉ������ ����'�2�B�N�R�Z�g�x�������������������������͊֊݊ފ��������� ���� �*�4�5�6�7�?�L�M�Q�^�r�x�������������ŋҋ�����#�1�@�Q�d�{�����׌ߌ�����%�O�p�����Íˍ������� ����(�,�4�=�?�L�]�f�l�p�|�������������Ɏˎڎ�����������'�0ArgParserArgParserExceptionArgResultsOptionOptionTypeAllowAnythingParseroptionscommandsallowTrailingOptionsallowsAnythingusageLineLengthaddCommandnameparserArgParser.allowAnything().addCommands() isn't supported.addFlagabbrhelpdefaultsTonegatablecallbackhidealiasesArgParser.allowAnything().addFlag() isn't supported.addOptionvalueHelpallowedallowedHelpallowMultiplesplitCommasmandatoryArgParser.allowAnything().addOption() isn't supported.addMultiOptionArgParser.allowAnything().addMultiOption() isn't supported.addSeparatortextArgParser.allowAnything().addSeparator() isn't supported.parseargsusagedefaultForoptionNo option named getDefaultfindByAbbreviationfindByNameOrAlias_commandsnoSuchMethod_aliases_addOptiontype_optionsAndSeparators_options_redirecting#_allowAnythingcontainsKeyDuplicate command "".[]=valuetoListgrowableallNamesaddAllanyDuplicate option or alias "existingAbbreviation "" is already used by "The option cannot be mandatory and have a default value.add:sync-for-iteratoriteratormoveNextaliascurrentlineLengthvalues[]message_parser_parsedcommandrestargumentsCould not find an option named "valueOrDefaultresultkeystoSetforEachwasParsednewArgResultsparsed_invalidChars[ \t\r\n"'\\/]isEmptyName cannot be empty.startsWith-Name cannot start with "-".hasMatchName "" contains invalid characters.lengthAbbreviation must be null or have length 1.Abbreviation cannot be "-".Abbreviation is an invalid character.isFlagisSingleisMultiplegetOrDefaultflagsinglemultiplenewOptionParser_commandName_parent_grammar_args_rest_results_currentfirstcommandResultsisNotEmpty--removeFirst_validateCannot specify arguments before a command.commandNamecommandParsererrorclear_parseSoloOption_parseAbbreviation_parseLongOptionparsedOptionOption is mandatory._readNextArgAsValueMissing argument for "_setOptionoptcodeUnitAt_handleSoloOptionCould not find an option or flag "-_setFlaginnermostCommand=<=_isLetterDigitHyphenOrUnderscoremath_Usage_columnCount_buffer_currentColumn_columnWidths_calculateColumnWidths_newlinesNeededgenerateoptionOrSeparator_writeSeparator_writeOptiontoStringseparatorwrite _write_abbreviation_longOption_mandatoryOptionallowedNamessort_newline_allowedTitle_buildAllowedList(defaults to on)defaultsmapjoin, (defaults to )(defaults to "")--[no-]=<> (mandatory)isDefault [] (default)titlecolumnlinesstarttakereducewidthlinetrimremoveAtlastremoveLast_writeLine *%padRightallowedBuffer[callgenerateUsageoptionsAndSeparatorssourcewrapTexthangingIndentsplitTexttrimmedTexttrimLeftleadingWhitespacenotIndentedfirstLineWraphangingIndentStringwrapTextAsLinesisWhitespaceruneeffectiveLengthcurrentLineStartlastWhitespaceOptionType.flagOptionType.singleOptionType.multipleUse defaultFor instead.Use valueOrDefault instead.package:args/args.dartpackage:args/src/allow_anything_parser.dart@getterspackage:args/src/arg_parser.dart@methods@constructors@fields@factoriespackage:args/src/arg_parser_exception.dartpackage:args/src/arg_results.dartpackage:args/src/option.dartpackage:args/src/parser.dartpackage:args/src/usage.dart@setterspackage:args/src/utils.dartdart:collectiondart:coreObjectMapStringboolintNullUnsupportedErrorListIterableListQueueofArgumentError_InvocationMirror_withTypeSymbolTypeunmodifiableInvocationFunction_GrowableListUnmodifiableMapView_literal1IteratorDeprecated==FormatExceptionUnmodifiableListViewSetRegExpPatternnumQueuedart:mathStringBuffermax_literal2_Overridey�Q�RRR�XXX i�g �B3$z.P�k�y� j(����J0000000000 ���F�b������������)�#�Q�B���^�7�~�<���A���J��������%�8�G���e�&���H���Y����F����  a�ɀ��*�f�h�e�i�g�c�d�0� ���������Ɓӂ����8�=�E�C�G�D�F�I�H�������������������7�6� �R�9��5�I�q�n���������Q�:�����NKN �/���P�������� `��j��`�� �ۂ߃�A� `��[�� ]��_� _�% a__`��j`��`��>�/��=#�;��3�ኃ3��j�?a`��`��`��+a__`��J�Q�X __��m��6j�y^`��[___����a__`������� ��!�=A�5�= `��[`��[�> ]��_�`a__�~ a__`���� _��`��j��`����`��j`��`��>���==�����ą���ԃ��ۃv�뀅���`����N����`�����N� �`����`��N��"_}�)��$����*��a__C�4x�?��;�a��A�sa`��`�ʅ�>�F�.N�P�T`��x�Z��V�ax�ix�b��^�s��d�aa`��`�����a`��`����a`��`����N�x��_x����������� a`��_��N����`��}�������}����������E a__����a__`��I�����Ȅv �a`��`�ʅ�J���ڃ� ?I��x����v �a`��`�ʅ�>�� =����ax����� �a`��`����>��*=���s�!�� J�2x�9� a`���� �����A� �� `��[� ]��_�$ _�@ a__`��j`��`��>�J��=#�V��N����N��j�Za`��`��`��+a__`��J�l�s __�����6j��^`��[___����a__`������� ������A!���� `��[`��[�� ]��_��a__�� a__`���� _��`��j�`��� `��j`��`��>���=�����'����7�ʅ�>��v�N��C��`����N�]�a`����c��N�p�t`���v��`��N����_}������������a__C��x������'����9a`��`�ʅ�>���rN����`��x������'x��x�Ň���9��LJ'a`��`�����a`��`����a`��`����N�ی�_x�冇���� a`��_��N���`��}� ����}��� ���� a__��Qa__`��I�'x�0�+�< �a`��`�ʅ�>�5�P=��=�'x�G�C�� �a`��`����>�W�n=��_�9�e�� J�v��}�'������A������"]��[��`��j��`����`��j`����#`��j`��\>�ߏ�=#�ꃎ�B���B���+`��=#������0����0v� ���`����+`��N�� `��x�&�"�0`����(�a`��`����C�1x�?��8��$�a`��`�ʅ�>�D��N�N�R%`��x�[�T�B`��&��c��a`��`����=��p��x�v��p���a`��`����N����'[x������x�����������a`��`����a`��[��=x������(x�����������a`��`����x�Ā���x�ˁ�ʼn��͉�a`��`����a`��[��a`��[\��=x�‏ډ(x�遏���뉣a`��`��������Xa`��[\���6�;��A�E�� `��[�N"]��_�]`��j�e`���m`��j`��\>�s��=��w����������������v������~`����=��_��ċ~��΋��Ջ�`������A)�)�� `��[�2"]��_�@`���K`��\>�P��E�T�]�_*`����a�>�h�j+`��x�p��l�I�a`��`����x�w��u�b��y�sa`��`�ʅ���|�bx�}��|�b�a`��`��������sx������s�a`��`����>����N����,_x������.����ba`��_��=x������.(����bx������.����sa`��_��a`��_\��=x�΀�ƌ.(��όs��ԍa`��_\��������A���� `��[��"]��_�� a__`��j`����`��j�`���`��j`��\>���=#������������j��a`��`��`��+a__`��=#����������v�Ȁ����`����+`��E���ܕ�%`��x�肕���a`��`����x��펈��`��a`��`�ʅ������x��������a`��`����>���~N� � `������N��"`����$��N�1�9_x�C��;����D��a`��_��C�Nx�Y��U���[�a`��`�ʅ�>�`�%N�l�p`��x�v��r�x��x�~��z�����a`��`�����a`��`����a`��`����N����-`��}������a__`������*x�����������a`��_��a__`��I��x���Ώ� �a`��`�ʅ�>�ޖ�=����>��=�� �x�����a`��`����=x�4��+��.x�A��=��a`��`����x�J��F���a`��`������O�υ�Y�^`��`��]��_`��\��=x�k��c��(��l���s�*a`��_\���0�5�OA/�J�O `��[`��[�S"]��_�sa__�� a__`����`��j��`����`��j`��\>���O=������҅���⑲����v�����z`����=�__���z��!����(����1���8��`����=�z��G���Q�V�cA�b�c `��[�k"]��_�~`��j��`����`��j`���� a__`��j`��\>���c=������ƅ���֒z��ݒ�v�뀜�i`����=#������������j�a`��`��`��+a__`��N�� `��x�&�"��`����(�za`��`����I�1x�<��5�#�a`��`�ʅ�J�A?I�Kx�V��O�#j�X`��a`��`�ʅ�>�i��=�o_��}�i ����a__`������z����`��J��?N�4�@0`��x�Px�G�C��`����I�za`��`�����a`��`����N�\�c1`��x�k��e�z��m��a`��`����N����2`��x������`������:a`��`����N���3]��_����_���ix����i���za`��_��N�6�94a__6j�;^`��[___=�G__��R�i�\�� �`��a__`����i�:�q��`���v���N����5`��x������`�������a`��`����=��__����i�Ɣ� �ʒ�a__`����Ӓz��ڔ:���i��f =�� __ ��� ���a__`�����i��f �'��`���,�����=�i��Q�i��[�z�s�x�hA6���h `��[`��[��"]��_��a__�� a__`����`��j��`����`��j`��\>���h =���������!����(��v�6��-�l`����N�E�L`��x�R�N��`����T��a`��`����I�]x�h��a���a`��`�ʅ�J�m?I�wx����{��j��`��a`��`�ʅ�>����=��__����l����|�������ʖ��і�`����֖l�����J��?N�Q�X1`��x�`��Z��x�j��c���a`��`����a`��`����N�w��0`��x������������a`��`����N����2`��x������`�������a`��`����N��3]��_���_�!�=x�7��/�l��8��a`��_��=�C__��N�l��X�|��_����h���p��`���u�r �N����5`��x������`������a`��`����=��__����l��Ŗ|��̖���Ֆ���ܗƀ��l��� =�� __ ���|�� �����l��� �,��`���1�r ��H�=��V�l��`���� ��A7�#�� `��[`��[�18]��_�Qa__�o a__`����`����`����9]��_��:`��\>����N�ƨ�`��x�ӄ�Ϛ��՚ a`��`����I���釨�I�a`��`�ʅ�J��?=x������#(���3x�������� a`��_��a`��_\��E��(�**`���x�1�/����3�Ia`��`�ʅ��;��x�<�;���a`��`����>�@��N�J�R_x�X��T��x�_��Y� �a��a`��`����a`��_��N�m�x;_}���z�����@ a__N����`������3N����`��x������3�Ú�a`��`����C��x���ћ� �כ� a`��`�ʅ�>�ܪ�N���`��x��� x�x������ ���� a`��`�����a`��`����a`��`����I�x�:}�������� }�+��&��x�2��,�#�3�, a`��_��a__a__`���a`��`�ʅ�>�?�Z=�I�� �O�, >�a��=�k�� x�u�q�, �a`��`����=x������#.x������ �a`��`����x��x������3����a`��`�����a`��`��������#�Û� ^`��`��]��_`��\��=x�Ӆ�͚#(�ԛ� �ۛ@ a`��_\�����(A<�-�( `��[`��[�;"]��_�_a__�} a__`����`����`����9]��_��:`��\>�̰( N�Ԭ�`��x�ᄬݞ����a`��`����I��x�����j��`��a`��`�ʅ�>� �=�__��4�G��>�W��E�i��N���U����Z����b��J�u?N����1`��x������x��������a`��`����a`��`����N����0`��x�����Q��Ğa`��`����N�ѭ�2`��x�䄭�����Qa`��`����N�4�A=`��x�P��C���R�� a`��`����=��__����G����W����i���Q��ɞ���Ξ��֟� =�!__��,�G��6�W��=�i��F��M�Q��U�G�_�Q=�� __ ����W����i����G���Qx���ŸQ�˟� a`��`������؞���� x����� ��� a`��`�������������x�}�?A>���? `��[`��[ ��a__�� a__`����?]��_��@`����A`���B]��_�)C`���>D`���U9]��_�e:`��\>�s�? @x������������a`��`�ʅ�����@x�͆������ϡ�a`��`�ʅ�����N���E`����롊N���F`������N��'G_x�2��)�z5�:�3`���3�< 5�:�:`���:�< x�:�3�} �a`��`�����3�} a`��_��N�E�NH_}�U��P�R�V�` a__N�k�yI_x����{��5����`�����N 5����`�����N x�����#�a`��`�������#a`��_��N����J_}������R���a__AC��)A>�ɶyI��x��}�ځ�ӡd�ۢ� �壀a__`��K�a`��`�ʅ�>����=x�����(5��`����� 5��`����� x����a`��`��������` a`��_\��I�+�7�/�< ��:��a`��`�ʅ�B�D?=�u�` x������z5����`�����< 5����`�����< x�������a`��`��������a`��_��=���� }������R���` a__>�˶u=x���ӡ�(5���`���ڡ� 5���`����� x���ڥT�a`��`�����ڥT��a`��_\��I�!� ��N ����a`��`�ʅ�>���=�%�x�?��5��5�G�@`���@�N 5�G�G`���G�N x�G�@���a`��`�����@��a`��_��=�T��}�e��`�R�f�a__B�~?=x���ԡ�(5���`���ۡ� 5���`����� x���ۦ��a`��`�����ۦ����` a`��_\��=x����.��� x�,��� x�8��/���:�< a`��`����a`��`������N�z�Y�< ^`��`��]��_`��\��J�i=x������(5�Ƕ�`������ 5�Ƕ�`���ǡ� x�������a`��`���������ͣa`��_\��=x���ޡ�.���� x���� x�������N a`��`����a`��`������)���5�N ^`��`��]��_`��\���+�0�AL�<� `��[�E"]��_�f a__`���x`��j��`����`��j`��\>���=�������������΃����v�Ȁ����`����=��__��䨨6j��^`��[___���������� �����`���(�-�'AM�>�' `��[`��[�L8]��_�ha__�� a__`����`��j��`����`��j`��\>���'=������Å���өㄺک�v�䀺ߩ�`����=��__���������������������!��`���*�/�@�AN�?�@� `��[`��[�H8]��_�da__�� a__`����#`����`����`��\>���@�N�ۻ�`��x�腻������a`��`����C��x����� Oj�`��a`��`�ʅ�>��@O N�"�-P`��x�Fx�6��/��&��>� a`��`������H��a`��`����N�W�]Q_x�c��_����d�la`��_��N�y��R_}�����������a__N����S`�������N����T`����Ū�N�Ҽ�U`��x�䅼���a`��`����=x�����(���lx�������7 a`��_��a`��_\��=x�����(��7 �+��a`��_\��C�6x�H�=� �J�7 a`��`�ʅ�>�W�1N�c�kV_x�q��m���r� a`��_��N����W`��}�������}���������� a__���� a__`��I��x�����7�a`��`�ʅ�>�Ͻ�=�٬ x���٬ �a`��`����>���+=���7 x� ���7 �a`��`����N��'X`���)�7 =x�B��>��(�C� x�U��Q���V�7 a`��_��a`��_\��I�lx�y�p�7$�a`��`�ʅ�>�~��=���% x�����% �a`��`����=������% =x�Ѐ�̪�(�Ѭ7 x�䀾ધ��% a`��_��a`��_\��?=x� ����(� ��� a`��_\��I�7x�Nx�F�;� ��H��a`��`����x�T��P���V�% a`��`����a`��`�ʅ�>�d��=�l__��w����}������Ƀ���߄������� =��������% >���@1=��__��㪧��骷���Ƀ�����@�% ��@��=��@���@!� =��@7� x�@D��@@����@F��a`��`����=�@S__��@n����@t����@{�Ʉ�@����@�����@�����@���0����gZ� Z �ME?�!$(�)~*u0� ����Y���Z�-�Y[����-\`��]��`��` `? ��=���g@]�%�g�*`���5`���>^`��j`��\>�E�gN�ԯ� `��5`����ܱ�#���5`�����#���&�����`����`��`����`��`��=���������� ��v�.`����E�$�-�/*`����1��x�:��8�B��<��a`��`�ʅ���A�Bx�B��A�B�a`��`����>�F�c=x�R.(��S�B��X��a`��`��\��U���I@_���I`��>���II���v��.`�����a`��`�ʅ�=0� �&��?J�7x�B.�a`��`�ʅ�]�N�W��@_�\���_ `��\>�f��I�l�wv�p.`�����a`��`�ʅ�=0�}����?=x��.(�����Va`��`��\��V���Ǒ*@`�̑*`��>�̑*I����v��.`�����a`��`�ʅ�=0������?J�x�.x�"v�.`�����a`��`����a`��`�ʅ�^�/�8��@`�<���? `��\>�F��I�L�Wv�P.`�����a`��`�ʅ�=0�]�x��?=x��.(x��v��.`�����a`��`��������ra`��`��\��W�͍ݍ�@a���]��`��J�����`��. ���(@b��(�c`��`��J�x�!.��"�Qa`��`�ʅ�!�-�9��@d�C���Pe]��`��]��`��J�`�`��`��.�����"�����}@f���}��ga`��\\>���}N�Ŏ�`��v��.`����E�����*`���x���%���a`��`�ʅ�����%x������%�a`��`����>��y=}�����x�.���%a`��`�ʅ�a`��\I�!�*��#�v�2.`����a`��`�ʅ�>�:�s=0�D�J��.?X������@hj��`������`��J����v��.`�����a`��`�ʅ�Y�ď͏�@i�؏�`��J��!v��.h`�ʅ�Z�����F@j���F`��>���FI����v��.`�����a`��`�ʅ�=0�����?I��x�v��.`����$�a`��`�ʅ�=0� �%��?J�4x�?.�a`��`�ʅ�#�K�P�R@k�X�R�a`��`��>�j�RN�t�{`��v��.`����E������*`���x������n����Qa`��`�ʅ�����nx������n�a`��`����>���<I����x��.����na`��`�ʅ���Ƹ8a`��`�ʅ�J��)?I��!�큒�Qv��.`����a`��`�ʅ�>���6=0�� ��.?J�B*$�W�\�\@l�a�\�gma`��`��`��>�x�\N����`��v��.`����E������*`���x������������a`��`�ʅ������x��������a`��`����>���GI��!}�΀�ʹax��.��Թ�a`��`�ʅ�a`��`��J��*?I��!�����v�.`����a`��`�ʅ�>��A=0����.?J�M)%�a�f�c@n�i�c�oma`��`��`��>���cN����`��v��.`����E������*`���x������������a`��`�ʅ������x��������a`��`����>�ŕMI��}�Հ�Ѻ�x��.��ۺ�a`��`�ʅ�a`��`��J��)?I��!�������v�.`����a`��`�ʅ�>��G=0����.?J�S*&�h�j��@o�t���zma`��`����pa`��j`��`��>����N����`��v��.`����E���Е�*`���x�ك�׼��ۻ�a`��`�ʅ����x�䃕��a`��`����>�薎N���`��x�.���a`��`�ʅ�I� }��������sa`��`��J���%�s?I�4!�?��8��v�G.`����a`��`�ʅ�>�O��=0�Y�_��.?I��!�������J��}������a`��a`��?=0���؅�'���o@q���o��ma`��`���pa`��j`��`��>�&�oN�0�7`��v�>.`����E�J�S�U*`��x�^��W���a`��`����x�e��c��O�a`��`�ʅ���k��x�l��k���a`��`����>�p�N�z��`��x��.�����a`��`�ʅ�I��}������Y����a`��`��J������?I��!�ǂ����v��.`����a`��`�ʅ�>�ט=0�����.?I�!�'�� �lJ�0}�=�7�la`��a`��?=0�E�`��(�t�v��@r������ma`��`����pa`��j`��`��>����N����`��v��.`����N�� s`��N���t`��*E�� �*`���x����q���:a`��`�ʅ����qx� ���q�a`��`����>�$�LN�.�6`��x�<.��=�qa`��`�ʅ�I�G}�O��K���P��a`��`��>�Z��I�d��h�`>�t��=0������?=����`)=��ӿT��ۿ�?I��!������:v�.`����a`��`�ʅ�>� �F=0����.?I�R��V�`J�b��i�T?I�t!���x�J��}�����a`��a`��?=0������)�̚ӛx@u�כx��v`��j��`��`��>��xI���v��.`�����a`��`�ʅ�J�'?N�$�+w`��5�-�-`���-��R=x�=��-�AHx.��L�@�^]��[`��\���-�AHJ�\x�j��c�A9ya`���*�}����@z������ma`��`��]��`��J�����`��.����A�+�ɛ՜@{��`��[]��_J����_.,���M@|��M`��[�}a`��_]��_J�,�,� `��_.��K�Bl-�R�^��@~�g��`��[�t}a`��]��_]��_J����� `��_.����B�.�����@�������a`��`��`��`��>�ݞN���`��v��.`����I�� ���CK�a`��`�ʅ�=0��-��?N�@�F `��x�L.�a`��`�ʅ�E�U�^�`*`���x�g��e�C���i�CKa`��`�ʅ���q�C�x�r��q�C��a`��`����>�v��=��~�C�}������C&����C�x��.����C�a`��`�ʅ�a`��`��`��I��!������CKv��.`����a`��`�ʅ�>����=0���Ѕ�.?J��� �C�/���]@���#�]`��[�&��_�6��a_`��__>�[�]N�e�k _��m�D�N����`��v��.`����E������*`���x������E8����Ea`��`�ʅ�����E8x������E8�a`��`����>���G=����E}�Ձ���D�����Ex��.����E8a`��`�ʅ�a_`��_I��!������Ev�.`����a`��`�ʅ�>��A=0����.?J�M��T�E0�b�n��@���r���w��`��]��`��J�����`��.����FL+1�����@�������ma`��`��]��`��>�נJ����`��.����F�2� ��o@����o�"��`��]��`��J�2�2�`��.��N�`����_�F�'��3�t����@��������ma`��`��]��`��>����J�����`��.����GQ4�֠ޢ@��������`��j��`�� ]��`��>���I�v� .h`�ʅ�J���`������4�G�?N�G�M_`��x�S.�a`��`�ʅ�N�`�g��]��`���i�`��v�}.`��������G�������G�E������*`���x������Hcv��.`����a`��`�ʅ�����Hcx�ǃ���Hc�a`��`����>�ˡ�=x�ق���H#(����Hcx��.����Hca`��`�ʅ�a`��`��\��J������H#5����@�����]�`��>���N�$�+��]�`���`��E�;�D�F*`���x�M��K�Iov�O.`����a`��`�ʅ���W�Iox�X��W�Io�a`��`����>�\�}=x�k��d�IM��x�s.��t�Ioa`��`�ʅ�a`��`�ʆ!J������IM6�����8@�����8��`��\>�£8=x�.(5�'�!`��v�!.`����5�!�!`��w�!.x�'��!�Jb�a`��`�����#��!�Jb��-�J?a`��`��\��7�=�B�@���H��U��]��`��\>�_�N�i�k*`��v�r.`����>N����]��`��v������J�a]��`�ʆ%Ex����K%��a`�ʆ'>N��`��v����K%V`�ʆ)>��� @"��v��.`��������Ka`��`�ʅ�0���ą�.����=x��.������Ksa`��\�+=���Kx����K�a`��`����8����@��� ���)`��`��>�2��E�8�A�C*`���x�J��H�LOv�Q.`����a`��`�ʅ���Y�LOx�Z��Y�LO�a`��`����>�^��I�f�rx�n.��o�LOa`��`�ʅ���u�L3a`��`�ʅ�>�~��=x��.��������LOx������LO�a`��`����a`��`��\�-J��)?J��*:�Z�_�w@�����h�w�m`���x`��\>�}�wN����`��v��.`����@x���K����Mfa`��`�ʅ�����@x�ƀ���Mf����Mqa`��`�ʅ�����@x�݁���MqK����M�a`��`�ʅ��٥�N�����`��x������Mq����Mfa`��`����E� ��*`�����Mqx����NV���M�a`��`�ʅ���'�NVx�(��'�NV�a`��`����>�,�R=x�8.(x�;��9�NV��=�Na`��`����x�I.��J�NVa`��`�ʅ�a`��`��\��=w�].x�m��f�M���o�Na`��`�����#=�|����@��������ma`��`��\>����=x��.��������Ok*aa`��`��`��\�.>�Ʀ˧ @���֧ ��ma`��`��\>��� =x��.��������O�)aa`��`��`��\�.;��� @������ �!ma`��`���7��`��\>�G� N�U�^��]��`���c�1`���N�o�v`��v�}.`����E������*`���x������P�����P�a`��`�ʅ�����P�x������P��a`��`����>���}N����`��x��.����P�a`��`�ʅ�I����}�׀���P7����Qa`��`�ʁ���PIa`��`�ʅ�>���=x�����P`���� �Qa`��\�2?I�#!�.��'�P�v�6.`����a`��`�ʅ�>�>�w=0�H�N��.?I��!��v������P``����v��.`����a`��`�ʅ�>���=x��..�v�ɂ���P``��������P`^`��`��]��`��`��\�3=w��.v������P``�����#??���4@����4\>��4=w�&.��#@�9�A�g@���H�g��`��[]��_J�N�S�4`��_.A�k�m� @���w� `��>�z� I����v��.`�����a`��`�ʅ�>����=0������?N�ͩ���`��x��.x��v��.`�����a`��`����a`��`�ʅ�=w��.x��v��.`�����a`��`�����#J�����SMB���n@����n�3 a`��`��`��j`��\>�=�n=�H�7`��.5�[�Sa`��`��`����S�S�#�S��S�T(j�^a[[`�� �S�T(a`��`��`��a`��`��`��C���A@���A�#`��j`��\>� �A=#����T����T����+`��I�(�3�,�T�`��=0�<'��?N�z��`��v��.`����C��x������T�$�a`��`�ʅ�>���=N����%`��x�����T�`��&����T�a`��`����=����T�x�ށ���T��a`��`����N���,`��x��.����T�a`��`�ʅ�=x� .(�� �T�x�.���U>a`��`�ʅ�a`��`��\��=x�,.(��-�U>��4�U�a`��`��\��D�F�R�@���W�]�8`��`��>�Z�J�`�g�;`��.E������@������e]��`��]��`��J��RN��]��`�����<`��.=x������V�������V�a]��`��\�=����V�F���ɭ�@���Э���`����`��j`��]��`��>���N�����`��v�.`����=#����W.���W.���WS+`��I�(�0�,�W.`��=0�9'��?=�~������W#���W.`������WSJ�����>`��x��.������W#���W.`��a`��`��]��`�ʆ?G�ڭ�q@����q��`����`��]��`��>��q=�����$�X1��+�X���=��������X�����X�v��.`����I��x���X�$����X�a`��`�ʅ�>��=x��.��������X����X�a`��`��\�-?I�l�q�1@.�y�1�~`����`������]��`������`��j��`��\>���1 =�ʅ�����Yv����Y�v��.`����N���`��x� ���Y��� �Yva`��`����I��!���Y�a`��`�ʅ�J�'?=�>�@��O�Y�'��N�u��]��`��N����`��I��%������Y�]��`��>�߲=����ZI���Y�]��`��=���Z[���Y�>�&��=��.�ZIx�Sx�C��:�Y�����H�Y�a`��]��`�ʆB����*^��`��]��`�ʆC=��r�Z[�I��x��x������Z[����Y�a`��`����$v������ZI`����a`��`�ʅ�>����=0���ۆD?I��x������Z[���Yva`��`�ʅ�>���E�Q�Z�\*`��x�e��^�Y��a`��`����x�l��j�[�O�a`��`�ʅ���r�[�x�s��r�[��a`��`����>�w��=x��.(x������Yv����[�a`��`����x������ZIx������Z[����[�a`��`����a`��`�ʅ�a`��`��\��>���-E���ҳ�*`���x�ۇ���\�����Y�a`��`�ʅ�����\�x�懳��\��a`��`����>��'=x��.(x������Yv���\�a`��`����x����ZIx����Z[���\�a`��`����a`��`�ʅ�a`��`��\��J�6�;�@���G��L`���W`���h��]��`��\>�u�=��������]Á���]�v��.`����I��������]�v��.`����a`��`�ʅ�>�δ�=x��.������]�a]��`��\�EJ��?I�!%����]�]�F[>�0�`=��8�]�x�R��F�]ـ�^��`��]��`�ʆC?N�j�w��`��x�}��y�]����]�a`��`����N������`��v������]�`���GI��x�ƃ���^�O����^�a`��`�ʅ�>�׶�N�����`��x������]�����^�a`��`����=x�..���]Å� �_F��+�]�^`��`��]��`��`��\�3I�?x�P��C�^�$��R�^�a`��`�ʅ�>�`��=x�j.������t�_F���]�a`��`��\�-?I��������]�v��.`����a`��`�ʅ�>���nN����*`������]�>N����]��`��v�߂���]�a]��`�ʆ%Ex�߆�`^��a`�ʆ'>N��`��v���`^V`�ʆ)>��hI��x������`F����]�a`��`�ʅ�>��*=x�.(���`F���`�a`��`��\��>�1�S=x�=.����A�`�a`��\�+=��]�`Fx�^��]�`F�a`��`����>�u� N������`��x������^�����^�a`��`����N������`��v��.`����N�ӷ���`��x�倷��]�����^�a`��`����E���*`��x�'���a���)�a{a`��`����x�2�0�b��4�a�a`��`�ʅ��A�bx�?�A�b�a`��`����>�D�n=x�N.��x�V.#x�Y�W�b$�a`��`�ʅ��_�b�`��a`��`�ʅ�a`��\�+I�vx����z�a�����a�a`��`�ʅ�>����=x��..����aʆ���a�.����]�^`��`��]��`��`��\�3?=x��..����]Ç���aʂ���]�^`��`��]��`��`��\�3K����@������(`���6`��j�>`��`��>�B��I�Hx�R��L�c��a`��`�ʅ�=��W�c̓?E�f�o�q*`����s�c�x�|��z�dv��.`����a`��`�ʅ�����dx������d�a`��`����>����I����x��.����da`��`�ʅ�����c�a`��`�ʅ�J������d?J��x�˔ a`����L�ֹں�@���亖��ma`��`���`��j�`��`��>� ��I�x����e�a`��`�ʅ�=��!�e�?E�0�9�;*`����=�ex�F��D�ejv�M.`����a`��`�ʅ���U�ejx�V��U�ej�a`��`����>�Z��I�b}�j��f�ex�o.��p�eja`��`�ʅ�a`��`��J�u��|�ej?J��x��� a`����M������@��������`����`��j`��`��>�ʻ�I��"�ځ���fax�����fa`��Ov��.`����a`��`�ʅ�=����fax�v�.`�����a`��`����?I�O�Y�S�fa`��=0�b'��?E�r�{�}*`����fa`��x������gO�a`��`�ʅ�����gx������g�a`��`����>����I����x��.����ga`��`�ʅ�����fVa`��`�ʅ�J������g?J��x�Δ a`����N�ٻݽ@������ma`��`���`��j`��`��>��I�"� ���hx�1�+�h`��Ov�9.`����a`��`�ʅ�=��A�hx�Uv�N.`�����a`��`����?I�������h`��=0��'��?E������*`�����h`��x�΂���h�O�a`��`�ʅ�����h�x�Ղ���h��a`��`����>�ٽI��}�逼��g�x��.����h�a`��`�ʅ�a`��`��J������h�?J�x�� a`����O���H@���%�H�*c`���3`��\>�<�H=�B�`����S�i�'cN�l�s`��v�z.`����=���H����i������i�'c=x��.������i�a`��\�+I��!�‽��i�����i�a`��`�ʅ�>���D=x��..x�����i��a`��`����x��� �i��a`��`����.���i�^`��`��]��`��`��\�3=x�-.(��.�i���7�i�a`��`��\��?P�M�O��@���W���\c`��`��>�c��N�k�r��`��x�x.��y�ka`��`�ʅ�=x��.��������kx������k�a`��`����a`��`��\�-J������k!Q�����C\@�����C\��c`������]��`��\>���C\ =���H���k��v�.`����'cI�2�<��6�k�v�?.`����a`��`�ʅ�>�G�s=x�O.����V�k�a]��`��\�EJ�g?I�y"!%����}�k�]�F[���J����k�.>����=����k�x�܁���kɀ�^��`��]��`�ʆC?N���@��`��v�@��@�k�`���GI�@�@/��@�lÓa`��`�ʅ�>�@5�@IJ�@=?N�A,�A6��`��v�A8.`����E�AD�AM�AO*`��x�A[��AQ�m��A]�l�a`��`����x�Ap��An�mC��Ar�ma`��`�ʅ���A�mCx�A}��A�mC�a`��`����>�A��A�=x�A�.��x�A�.#x�A���A��mC$�a`��`�ʅ���A��mC�`��a`��`�ʅ�a`��\�+I�A�!�A�v�A���A��k�`���G��A��l�a`��`�ʅ�>�A��B�=w�BY.x�B`v�BY.`������Bc�l�a`��`�����#=0�Bz�B�����B��k�?N�B��B���`��x�Bʀ�B��k���B��l�a`��`����I�B�x�B��B��n���B��ma`��`�ʅ�>�B��C;=x�C..��C�n��C�m.��C/�k�^`��`��]��`��`��\�3?=x�CA.����CH�k���CO�k�a`��]��`��\�KR�Ca�Cf�DH@���Cl�DH�Cqc`���C���]��`��\>�C��DHI�C�%�C���C��p]��[>�C��C�=x�C�..��C��p x�CȀ�C��p v�CӁ�C��p`���Ga`��`������C��p^`��`��]��`��`��\�3>�C��DD>N�D ��]��`��v�D ��D �pa]��`�ʆ%Ex�D ��p倐a`�ʆ'>N�D`��v�D��p�V`�ʆ)>�D�D>=x�D#.(5�D)�D$`����D$�p 5�D)�D)`����D)�p x�D)��D$�qx�a`��`������D$�qx��D/�q;a`��`��\��[�DM�D]�D�@���Df�D�]��`��J�Di�Di�N`��.S�D��D��D�@y�D��D�`��J�D��D��Q.'��'��<�s�~��A������������[����[`��>����J�����T&������r�]�R[&������r�]�R[1j2�3;3�4W4�565�5�6�7<7p89F:y;�=>>�@�A�BBHB�C D�F0F~F�G5G�IJ#J�LMHOOO�PRtR�R�S�T�V6VzWXX�Y[]�c�d�f:g�i}j�k�o�q�r7r{r�=a������`dk�'�6����`��j�5`�� el�L�^����`��j�\`��fm�t������`��j��`�� gnt��������`��hou�,�1����`�U���6�6�Z���@�Z�F��`�U�R��`��`a?h��t�g��t� �6` x�_�g�A���{���`������`��`a>���I������t�>����J����������t�>���J������t�y�˄ӆ8A�ۆ8��`����^`��j��`�� ���`��j� `�� `a>��8=�%�@��6�ue'N�W��`aI�d��h�u�>�r��=��z�u���������ue>����=����u���������ueI�偅��uq>��=x������u�]��� �ue)^`��`��`��\��?J�&��-�u�z�r�z��A����������`��j��`�� ����`��j��`��`a>����=�Ć@����v�'I���vt>���>J�������/�v�>�E��J�M�i�����z�v�{���Ƌ A���׋ ��`�����a`��`�����`��j�!`�� `a>�,� =�=�@��N�w'N�j�s��`a�~x����w����w5E������*`���x������w�����wa`��`�ʅ�����w�x������w��a`��`����>�Š�=x�Ӄ���wh������w�}�灊��w!����w�a`��`��a`��`��\��J������wh|����A���$���4"]��`���D��`��j�O`�� `a>�W��J�]5�m�m`a�mxv����y�xb`���G����xsR=x����m�x��������xba`��]��`��\R��m�x�p������@j��`������`��J��v��.��`��n~���ˏ�@j��`���͏���c`��`��>�ُ�=��V����y[.'cv�.��`��nJ�!�ux�Bx�+v�&.��`�Uox�2��,�y[j�5`�� a`��`����a`��`������x�S���x�]��W�y[��j�_`�� a`��`���Wa`��`���Xa`��`���W�a`��`�ʅ������@(j��`�������c`���� `��\>���=�ІV����zw.'cv��.��`��n=x�.���� �zw���z�a`��`��\�����"�3��@]j�#`���<���A`���L`���X^`��j`��\>�_��=�p������{����{v��.��`��n=#������{����{*+`��N������`��x�ŀ���{j��`�� a`��`����N�ݐ���`��x��x�쁐��{�a`��`����j��`�� a`��`����N� ���`��x����{��j�`�� a`��`���WN�9�@��`��x�Lx�G��C�{�a`��`������j�N`�� a`��`���WI�gx�u��k�{{��w�{�a`��`�ʅ�>����I�����{`��>���.=5����`�Uv��.��`�Uo5����`������{{x������|�(���|�x��x������|����|�a`��`������x��x��� a`����������{�a`��`���Xa`��`���Ya`��`��\��=x��v��.��`�Uo]x�⃑��{{�a`��`��������{�x�� a`����^`��`��`��\�Z=5� ��`�Uv��.��`�Uo5��`�����{�x�����~ (��~%x� x�����~ ��~%a`��`������x�#x����x����|4�a`��`����a`��`���X�a`��`����a`��`���Ya`��`��\��>�5��=5�P�?`�Uv�?.��`�Uo5�E�E`����E�{{x�D��?�~�(�E�x�Px�D��?�~��E�a`��`������x�cx�V�����Y�{�a`��`���X�a`��`����a`��`���Wa`��`��\��=x�vv�p.��`�Uo]x������{{�a`��`��������{��^`��`��`��\�Z=5����`�Uv��.��`�Uo5����`������{�x�������-(����Ix��x�������-����Ia`��`������x��x��� a`������x�Ć���|4�a`��`����a`��`���Xa`��`���Wa`��`��\��>�ݓ�I�����{`��>��E=5� ��`�Uv��.��`�Uo5����`������{{x�������3(����Ox� x�������3����Oa`��`������x�2x�-x����x�'x����|4���{�a`��`�����a`��`����a`��`���X�a`��`��������5�{�a`��`���Xa`��`���Ya`��`��\��>�L��=5�g�V`�Uv�V.��`�Uo5�\�\`����\�{{x�[��V��g(�\���x�gx�[��V��g�\���a`��`������x��x�{x�n�����q�{�a`��`���X�a`��`������x��x��� a`������x������|4�a`��`����a`��`���Xa`��`���Ya`��`���Wa`��`��\��q�j����@aj�k`������]��`��J������.��������@��������c`���� `��\>�Օ�I�ہ����>��4=5� ��`�Uv��.��`�Uo5����`��x��������j��`�� a`��`����x�����/(�����Kx� x�����/�����Ka`��`������x����x��������j�`�� a`��`���Wa`��`���Xa`��`���Ya`��`��\��>�;��=5�_�C`�Uv�C.��`�Uo5�O�O`��x�O��I���j�R`�� a`��`����x�H��C��/(��O��Kx�_x�H��C��/��O��Ka`��`������x�bx�f���x�p��j�����j�r`�� a`��`���Wa`��`���X��a`���[a`��`���Wa`��`��\����������A����������`��`��>����J��x��x�ր����Xx��j��`���a`��`����a`��`����j��`�� a`��`����t�uJvWv�xFx�y8zTz������:�� ���� ����`a�����B�S����`��j�R`�����X�X�����w���|`������`��`��? �������]���������h�����]��������� ���`��`��? �(���5�]�I��x�_��X�����j�a`��a`��`���^��|����������_@j��`�����_��`��\>���_=�Ɔ@�����C'I��x�������C$v��.��`��na`��`�ʅ�>��!=x� .������Ca`��\��I�(x�3��,��Cv�5.��`��na`��`�ʅ�>�>�[=x�F.����N��Ca`��\��?���d�i�U@���p�U�u`��\>�}�UI��x�������6$x��v��v��.��`�Uo`������j��`��a`��`���^a`��`�ʅ�>���;=w��.��5�ǘ�`�U�dž]�䀃x�������6��j��`��a`��`���^R=x�������.�v�'v�!.��`�Uo`����v�/.��`�Uo^`��`��]��`��`��\��������u?=w�A.����K��6t���Z�_��@���f���k`��\>�s��I�yx����}���x��v��.��`��n��j��`��a`��`���_a`��`�ʅ�>���-N������`���ŀ�������=w��.��5���`�U��]�����R=x������-.�����v�!.��`�Uo^`��`��]��`��`��\�������-u?E�4�=�?*`����A���x�K��I���x�Zv�Sv�M.��`�Uo`������j�e`��a`��`���^a`��`�ʅ���t���x�u��t����a`��`����>�y��=x��.��������*a`��`��\��=w��.��������t���y�t�������5 ��`a]�q`���� ����`�U��`��`��? �������������Z�j��@j�[`���p���u��`��\J�����t����� �!@��j��`��� �!� `��`��J���t��������@��j��`����������]��`��\J�����t���4�E�m@��j�5`���K�m�Pc`���Y`��\J�e�e�t���ڇ�!@��j��`����!��c`��� ��]��`��\J���t��������@��j��`�������� `��`��J�����t���-�;�Z@��j�.`���C�Z�Hc`��`��J�R�R�t���ljՉ�@��j��`���߉�`��J����t���Z�k��@��j�[`���v����ma`��`��\J�����t�����E@��j�`���"�E�4ma`��`��\J�=�=�t�����Ë�@��j��`���΋���`����`��\J����t���[�l��@��j�\`���x���}`����`������]��`��\J�����t����,�?@��j�`���1�?\J�7�7�t��������A��Y����b>����=0�����b'�����4�x��� �]������f�����W�����������5��`�����������*���/`���;��`��`��? �S���`�]�t�������E�����:�������3�Ü3��`��`��? �ހ���]�����������"��������8�>����`��]��`���������s������`��*��������������`���������������`���������ŀ���`a���ʜʝ �۝ ����`a`��?�����x��v������x��`��n �ʅ�����#�6@Vj�`���+�6`��J�.v�..��`�ʀ����;�L��@��j�<`���T��`��>�W��I�]!�sv�kv�a.��`a����`��nv�v.��`����a`��`�ʅ�>���=0������v��.��`a��?I��x��v��.��`����v��v��.��`a��`��pa`��`�ʅ�>�ݞ�N���%`��5���`��v��.��`����5���`��w��.��x�������a`��`������������=w��.��!�px�5x�v�v�.��`a����`�Uox������j�(`�� a`��`����a`��`������x�H���x�P��L��Ԁ�j�[`�� a`��`���Wa`��`���Xa`��`���W�a`��`�ʅ���J��)?=w��.��*��J��*�����)�=1's��������:�= ���������3�9������`��[`��[��`��[`��]�8__�̀����������a__�̀����������a_`���΀��‚߀����]�8_]�c__2��_]�c__���q�q��������a__����a_`��j`��]��___?�̀����W�́� ��k �q�����݆݇�������e]�8__���a__�A��a_`��j`��]��___>����=x��.��������a]�8__\���́�f����͂����� �݅������ˈN@j��`���͈N��`��_>�ۈNI��!x��.���������a`��`�ʀ�J��+?N� ���]�c__x�v�.���]�8_]�c__��5�,�,_&�,��(���_}�'v�.���a__����,��&a__a`��]�c__�eJ�85�?�?]�c__��?���#�?��?���+v�E�?���]�c__ _�g_���S�m��@(j�T`���p���s_�z _\>����I��!x��.��������a`��`�ʀ�J��?=x��v��.���]�8_]�c__��(5����_�����}��v��.���a__�������}a__�Ɔj__���������� a_]�c__\�k�����F@��j��`�����F�e]�8__\>� �F=x�����f4� � �A�!_�& _\J�05�4�5_��5��Z5�<�<_��<��e5�4�4\x�4.(��5��{��<���a__\����<���aa__\\�l���K�\��@��j�L`���f������]��]�c__\J��x��v��.���]�8_]�c__����x�������|]�c_]�c__4����������]�c__]�c_]�c__J�����j_]�c__5�Љ�_v�Ё�����_�m}��v��.���a__��������a__�ֆj__v�၉����_�mv�聉���� _�gaa]�c__]�c_]�c__]��]�c_]�c__�na]��]�c_]�c__\�o������4@��j��`����4��`��[��`��[]�8__J� x�&v� .���]�8_]�c__����__a]�8__�p���9�J�i@��j�:`���O�i\>�R�i=x�^v�X.���]�8_]�c__����a\�q���n���@��j�o`��������`��`��>����I��!x��.���������a`��`�ʀ�J��*?J��x��v��.���]�8_]�c__����5���_&��������_}��v��.���a__�������ma__a`��`�ʆr�����g@��j�`����g�( `��`��J�8x�Ev�>v�8.���]�8_]�c__����]��]�c__�tn4�I�I�f�J��]�c__`��J�S�^v�X��S��V _�g��a���a`��`�ʅ�aa]�c__`��`�ʆu���l����@��j�m`������]��]�c__J��x��v��v��.���]�8_]�c__����]��]�c_]�c__�v|]�c__4����������]�c_]�c__]�c__J�����j__v��v�ʀ����h ]�c__�g_�mv��v�׀����h ]�c__�g _�gaa]�c_]�c__]�c__]��]�c__�n������X@fj��`����X�}a__\\>��X=x�%v�.���]�8_]�c__��f4�-�-�S�._�3��]�c__\J�<}�=��<��^v�C��>���_�mv�M��H��� _�ga__\aa_]�c__\\�l���]�r��@hj�^`���z��`��J�}v��v�}.���]�8_]�c__��h`�ʆw��������@ij��`������`��J��v��v��.���]�8_]�c__��i`�ʆx���nj�@��j��`����]��_J��x��v��v��.���]�8_]�c__����]��]�c__�t|_4���������]�c___J�v� �����_�maa]�c___]��_�n����(�>@j�`���/�>`��J�2v�8v�2.���]�8_]�c__��`���y���C�[��@|j�D`���f����`��[��`��[����a__]�c__]�8__J��x��v��.���]�8_]�c__��|__4����������_����]�c__]�c__J��}�������nv��������_�mv�˂����� _�ga__]�c__aa_]�c__]�c__]�8__�z���׍�~@��j��`�����~��_���a__>��~J�v�ux�+v�.���]�8_]�c__����5�E�E_��E���}�Dv�7.���a__����E��a__4�K�K�j]�c__J�Q�Q�j__��Z���}�g��_���a_a_a]�c__]�c__�{ _�g������� @��j��`����� ��`��_>��� I��!x��.��������a`��`�ʀ�J��+?N�؎���]�c__x��v��.���]�8_]�c__����5����_&�������_}��v��.���a__��������a__a`��]�c__�|J� 5��]�c__����K#������+v�����]�c__ _�g_���%�6��@��j�&`���A���`ma__`��\J�ox�uv�o.���]�8_]�c__����4����������_����]�c__`��J��}�������mv��������_�mv�������� _�ga__`��aa_]�c__`��\�}�����܏�@�j��`�~�����`��[��`��[]�8__J��x��.��__a]�8__��������@�j�`������_�-�a__�D��a_j`��_J�Xv��x�^v�X.���]�8_]�c__���5�s�s_��s���}�rv�e.���a__����s��`a__4�y�y�,�z��]�c__]�c__>���+N���� _v�������� _�gN�����_}��������������a__I���ԆJ������������J��������?J�� �j__���������#�Y��P�� +4�j�j��]�c__J�p�p�j__��y���}���~�� a_a_a]�c__^_a]�c__]�c__��a]�c__]�c__� _�g��������@�j��`���������a___\J��x��v��.���]�8_]�c__���4���������_����]�c__]�c__>����N�� _v��� ��� _�gN�$�(_v�/��*���_�mN�@�I�_}�Q��K��f��R����W���a___I�g�k�J��u�����|��7J��������?J�����j__����������7aa_]�c__]�c__\�����ɒ�@��j��`����]��_J��x��v��v��.���]�8_]�c__����]��]�c__�t|_4������]�c___J� v��� ��o _�gaa]�c___]��_�n����-�T@yj�`���5�T`��J�;�C��.���Y�^��@����i���r`��`��J��"%�������_"��v��.���a_`�ʀ�}��u��v��.���a_`�ʀ�����_a_`���x���������l�������:�;�������6�����H�U���A������������� ����������������� �`��[]�O_�����-�7�����]��]��_���j�p�� �������]��]��_]��_?������ �p���������@aj��`�����]��_J���ȁ_v��x��v��.���]��]��_��|]��_4�������*]��_]��_J��v�����Ua]��_�%aa]��_]��_]��]��_�na]��]��_�%��������@kj��`��������`��`��J��x��v��.���]��]��_��n4��������*]��_`��J��x�遄���5k������a`��`�ʆ�aa]��_`��`�ʆu�����B@hj�`����B`��J� x�+v� .���]��]��_��l4�1�1�A�2*]��_`��J�8v�:��8���h`�ʆ�aa]��_`��`�ʆ����G�[��@j�H`���b��`��J�ex�pv�e.���]��]��_����`���4�x�x���y`����*]��_`��J��x��������v��������`���Ga`��`����a`��a`��]��_`��`�����������:��7�?�4�7 ���Z�`���`��[`��]��_��� �m�w����]��]��_��|�|���������]��]��_]�_>�ǂ�I��!x�܀����À�a`�ʆ'=w��.��+� ?������� �|�������@Vj�`�����_>���N�&�0�]��]��_v�2.��]��]��_�I�B!�P��F��cJ�Yv�rv�j�`��c]��]��_V]��_�)V_�)?J�5`��+#����&������_���__� ������@��j��`������`��>����N�����]��]��_v��.��]��]��_�I��!�考���G>��D��>���QI�x�v�� ��G]��]��_V]��_�)��a`�ʆ'>�(�IJ�4)?x�d�Z��G]��]��_��a`�ʆ'=w�w.��+� ?J��*�1��!�5�_�2�5 ����������)�/�� `��[]��_]��_����!��� �]��]��_�(�P�P�m�`�m�f� ]��]��_]�_?����� �P�� �������A������b>����=0�����b'� ��r����@aj�s`������]��_J�����_v��x��v��.� �]��]��_�|]��_4��������*]��_]��_J��v�Ȁ�����a]��_�%aa]��_]��_]��]��_�na]��]��_�%�&�����@j��`�������`��\>��=� ����.�n@j�`���5�n`��J�8x�?v�8.� �]��]��_���`���4�G�G�m�H`���P8]��_`��J�Yx�`��Y���v�g��b���`����a`��`����a`��a`��]��_`��`������s����@j�t`��������c`��_>����N����� `��������E���Ņ�*`���x�΂�����v��v��.� �]��]��_�`����a`��`�ʅ�������x���������a`��`����>��gN����8]��_x��v��.� �]��]��_�������a`��]��_��I�x��� ���v�����6`����a`��`�ʅ�>�!�EJ�+x�6��2��6��7���a`��_��?=��M���x�S��M���v�[��V��6`����a`��`����=0�m�~��������.'c+v��.`���� ���ц�@(j��`���Ԇ���c`���� _\>���=���!���+@��j�`����+\>��+=���"�0�A�k@��j�1`���G�k�P`��`��>�Y�k=�_��#�p����@��j�q`��������ma_`��\>����=����$���̈@��j��`���׈��ma_`��\>��=���� ������� ��]��_J��&�� x��.���j��`���j]��`��j]��[����`��[j]�8`��[a`��[��]��_��H�;�~�_�J������c���@  �x�m�u�x �) ���������* �σՉ�`��[��`��[]��__�-�0 �+�0����)]��]�8__�5 ���!��!��]��]�8__]�*__?�-���" ����3 �&�>�(@j�'`���@�(�I`��_>�N�(>N�d��]��]�8__v�dv�d.��)]��]�8__�0a]��]�8__�%Ex�d������a`�ʆ'>N�]|]�8__v�k����V]�8__�)>�k�N���� _x�������������a`��_�eI��"!�̃����Qx�ۂ�����������Qa`��`�ʆr>�� J������Q?J�+�1 �����@��j��`�����]��_J�����B_����_x��v��.��)]��]�8__�0|]��_4����� ��]�8__]��_J�v�����\��]��_��aa]�8__]��_]��]��_�n�c�����6 �P�V�� �`��[]�O_�9�< ��������)]��_�B ������ �Љ����]��_]�6_?�9���5 �����= ���7@aj��`��� �7]��_J� � �P_v�.v�$.��)]��_�<a]��_�%�@ �*�;�s@kj�+`���C�s�L`��`��J�Xx�bv�X.��)]��_�<k��k���a`��`�ʆ��> �x����@hj�y`������`��J��v��v��.��)]��_�<h`�ʆ��i���>Î�C �����n�`��[`��]��_�F�J �C�L����)]��_�G�K �W�n����)]��_�b��_�P �s�s���������]��_]�C_?�F���* �s���L ������@Vj��`������_J��v��v��.��)]��_�JV_�)�N �ь�l@��j��`����l`��>��lC��x�v��.��)]��_�J��a`�ʆ'>��VI�x�%v�.��)]��_�K��v�).V_�La_`�ʆ!>�3�PJ�=)?J�\*�^Į�b �v����ã�s�v �Q �T�\ �������Q`��j�`���U�] ��&����Q`��j�"`���V�^ �2�D����Q`��j�@`���W�_ �P�b����Q`��j�^`���X�` �n������Q`��j�|`���Y�a ��������Q`��j��`�� �c �x�}��A���������`������`��`��>����I��!��v������ƀ`����v������ƌ`����a`��`�ʅ�J��*?E���ބ�*`���x�炄����v�뀄��ƀ`����a`��`�ʅ�������x�������a`��`����A>����N���`��x� �� �ƀ������a`��`����N�#�)� `��x�-��+�ƌ���8���a`��`����I�@�J��D��Z��M�Ǐa`��`�ʅ�B�T?I��!��x�������Z�!����Ǐa`��`����j��`��a`��`�ʅ�J��*?N�G�V�"`��x�^��X��Z��j�``��a`��`���YI�s"x��j�w`��K�����5a`��`�ʅ�x�������5Kj��`��a`��`�ʅ�>����B��?J��*J��)�d �ˇϊ�A�#������$`��`��>���N�����%`���E���Ј�*`���x�ق����v� ����`����a`��`�ʅ������x�낈����a`��`����>��sN�����&`��x����������a`��`����I��"x��j��`��K����Ɋa`��`�ʅ�x�Ճ���ɊKj��`��a`��`�ʅ�=����Ɋx�ꃉ��Ɋj��`��a`��`����?=���� x�7������x����� ���Ɋa`��`����a`��`���W=��'�� x�97������x�A��<�� x�Xx�P7�������R�� a`��`���W��7 a`��`���Xa`��`����a`��`���W=��e�� x�j��e�� 7a`��`����=��w�� x��7������x������� x��x��7����������� a`��`���W���a`��`���Xa`��`����a`��`���W=����� x������� 7 a`��`����J��x��7������x�ہ���� x��x��7��������� a`��`���W��7a`��`���Xa`��`����a`��`���W�e ������A�'������`���&��`��`��>�)��N�1�?�(`���E�j�s�u*`���x�|��z�̼v����~�̄`����a`��`�ʅ�����̼x������̼�a`��`����A>���� I��x������̼Ov������̐`����a`��`�ʅ�J���?N�����`��x�€���̄�����̼a`��`����N�َ�� `��x�ぎ��̐�����̼a`��`����I��������g���͜a`��`�ʅ�B� ?N�:�E�)`����G��gN�V�a�*`����c�͜I�n"x�~j�r`��K�����ga`��`�ʅ�x�������gKj��`��a`��`�ʅ�>����=������x��������j��`��a`��`����?I��"x��j��`��K����͜a`��`�ʅ�x����͜Kj��`��a`��`�ʅ�>��*=�� �� x��� �� j�`��a`��`����?I�0!�?��4�����B�� a`��`�ʅ�J�Nv�ox�a��V�����c�� a`��`�����+`����?I�y����}�̪�a`��`�ʅ�=����̪x�������g����͜a`��`����?I��x��v������̐`����$v�ɀ���̄`����a`��`�ʅ�J��x�ؔ a`����?J��v����̪�+`�����f �ٓݖ�A�,������`�����`��`��>���N���(`���E�$�-�/*`���x�6��4�Сv�:��8��i`����a`��`�ʅ���B�Сx�C��B�С�a`��`����A>�G�r I�Mx�S��Q�СOv�X��V��u`����a`��`�ʅ�J�`�?N�r�x�`��x�|��z��i�����Сa`��`����N����� `��x�������u�����Сa`��`����I���������L����сa`��`�ʅ�B��?N�֔��-`�������LN����.`������сI�."x�>j�2`��K��A�сa`��`�ʅ�x�P��J�сKj�S`��a`��`�ʅ�>�`��=��h���x�s��h���j�v`��a`��`����?I��"x��j��`��K�����La`��`�ʅ�x�������LKj��`��a`��`�ʅ�>����=������x�Ԇ�����j��`��a`��`����?I��!�������݇����a`��`�ʅ�J�v�/x�!�������#���a`��`�����+`����?I�9�K��=�Џ�a`��`�ʅ�=��Q�Џx�g��a��L��i�сa`��`����?I�vx��v�|��z��u`����$v�������i`����a`��`�ʅ�J��x��� a`����?J��v������Џ�+`�����g ������A�/��������`������`��`��>����E������*`���x�������wv�Ā����N`����a`��`�ʅ������wx�͂����w�a`��`����>�њ�I��x�݂����wOv�⁙���Z`����a`��`�ʅ�J���?N����`��x�����N�����wa`��`����N��#� `��x�'��%��Z���2��wa`��`����I�:!�D��>��!��G��Va`��`�ʅ�>�N��J�V�]�k��o��N��r��Z��u��w��x��!����V?I��x��v�������Z`����$v�������N`����a`��`�ʅ�J��x��� a`����?J����h ��� A�0�9� �A��`���K��`��`��>�N� N�V�d�(`���E������*`���x������֙v�������a`����a`��`�ʅ�����֙x������֙�a`��`����A>���� I��x������֙Ov�Á����m`����a`��`�ʅ�J���?N�ݝ��`��x�瀝���a�����֙a`��`����N���� `��x�����m����֙a`��`����I��%����D��(��ya`��`�ʅ�B�/?N�A�L�-`����N��DN�]�h�.`����j��yI�u"x��j�y`��K�����Da`��`�ʅ�x�������DKj��`��a`��`�ʅ�>����=������x��������j��`��a`��`����?I��"x��j��`��K�����ya`��`�ʅ�x�������yKj��`��a`��`�ʅ�>��1=�����x������j�`��a`��`����?I�7!�F��;��Շ�I���a`��`�ʅ�>�U��J�]�d�k��v��a��y��m��|�֙����Շ�����?I��������և�a`��`�ʅ�=����ևx�Є����D�����ya`��`����?I��x��v�偟���m`����$v�������a`����a`��`�ʅ�J��x��� a`����?J�v��� �և�+`�����i �u�y�XA�1���X����`������`��`��>���XN�����(`���E���Т�*`���x�ك����}v�݀����E`����a`��`�ʅ������}x�惢���}�a`��`����A>�� I��x�������}Ov�������Q`����a`��`�ʅ�J��?N���`��x�����E���*��}a`��`����N�6�<� `��x�@��>��Q���K��}a`��`����I�S�]��W��(��`��]a`��`�ʅ�B�g?N�y���)`�������(N�����*`�������]I��"x��j��`��K�����(a`��`�ʅ�x�τ����(Kj��`��a`��`�ʅ�>�ߤ=����۹x����۹j��`��a`��`����?I�"x�j�`��K��!��]a`��`�ʅ�x�0��*��]Kj�3`��a`��`�ʅ�>�@�i=��H���x�S��H���j�V`��a`��`����?I�o!�~��s�۹������a`��`�ʅ�>����J�����k�����E�����Q�����}����۹������?I���삤���k�a`��`�ʅ�=�����kx�����(�� ��]a`��`����?I�x�$v�����Q`����$v�(��&��E`����a`��`�ʅ�J�0x�7� a`����?J�=v�R��D��k�+`�����k �W�[��A�2�Q�l���t��`���~��`����c`�����`����� `��`��>����@!�������N�����Za`��`�ʅ�����N�ħ��3`���ρn�����NN����4`����n�����ZI����ޚ>���I����޸>�&�iJ�.�5�l��I��+��L��7��O��N��V��Z��]��CI�p"x�z��t��C$�a`��`�ʅ����nx�������+�x�������C�a`��`����a`��`����>����J���?I��""���޸x��� ��C$�a`��`�ʅ���nx�$��"��7�x�5��/��C�a`��`����a`��`����>�<��J�wx�~� a`����?J��v��x�⃩���N�����Za`��`�����+`�����l ���KA�5�Q�/�K�7��`���A��`���H�`���S� `���^c`��`��>�e�K I���فo�����������>���(N�S�Z��`���\�m��o�����r�����u�༄�|��I��!���������a`��`�ʅ�J��������?J� v� x���������a`��`�����+`����?N�����6`�������N�����7`�������I���‚����j��`��a`��`�ʅ�>�̮�D��>�ծZ=�����x�ㅭ����a`��`����I���������v��������`����a`��`�ʅ�J�x� � a`����?=��8��x�B��@������M��a`��`�����i��c��j�l`��a`��`�ʅ�I�x!�}�n�����J��x��� a`����?I���������j��`��a`��`�ʅ�>����D��>���C=�����x�͆�����a`��`����I���↮���v�灮����`����a`��`�ʅ�J���?=��!��x�+��)������6��a`��`�����R��L��j�U`��a`��`�ʅ�I�a!�f�n��o��J�w�??I��!������ः����a`��`�ʅ�>���N������`�����m����������������ቆ����I��!�燯����a`��`�ʅ�J��������?J�v�x���������a`��`�����+`����?AC��)A>����N�����3`��*N�����4`��*=����ओ=����ఓI��x�������x������a`��`����v��������`����a`��`�ʅ�>��S=����x���������$��a`��`����=��3���>�n��G��?I�Yx�f��_��x�]��_���a`��`����v�j��h���`����a`��`�ʅ�>�r��=��z��x��������������a`��`����=�������n�����?I�ć����>�Ҳ�I������>��MI��������ः����a`��`�ʅ�B�?B�@?J���I������>����J��x��� a`����>�㳫J��v��x������������a`��`�����+`����N�׳���`�����m����������������ቆ���I� !�����œa`��`�ʅ�J���$���?J�.v�Ex�<��6����>��a`��`�����+`�����m � ���A�8�Q�#���+��`���5��`���<*`���C+`��`��>�F��C�Jx�U��S��x�Q��S���a`��`����v�Y��W��v`����a`��`�ʅ�A>�a��N�k�t�3`���v�nx������v������a`��`����I���������x��������a`��`����v�������`����a`��`�ʅ�J��#�������`��?N�˵��4`���ցnx�ၵ��炁�����a`��`����I�������>��7I� ����B�?J�)�I�>��B��>�L�cJ�Tx�[� a`����>�j��J�r�I��"x�������x��������a`��`����v�������`����a`��`�ʅ����nx������炁�����a`��`����>����J��x�Ɣ a`����?J����n �ݶ�A�9�Q�����:`��`��J��x�x�������!j�`��a`��`����K7 a`��`�ʅ��o �'�,��A�;�Q�B���J�$`���Vc`��`��>�]��C�ax�p��j��x�h��j���a`��`����O�a`��`�ʅ�>�v��N�����&`��x������ꆁ�����a`��`����I��!��������j��`��a`��`�ʅ�J�����n������?J��* �fŦ�c���g�L�1�D�(� �m�W���g�f  �p �������q �Y�_��-�< `��[]�O_]��_� ]�q_? �� �s �_�_�€�����`��[]�_�t�-�>�V@��j�.`���A�V�D _`��J�N�N���u���ő�@��j��`���ˑ���"]��_\J���儡�v�K�\�}@��j�L`���b�}�k `��`��J�u�u���w�ے�@�=j��`�������"]��[\J� � ���x�r����@�>j�s`��������"]��[\J�������y� ��H@��j� `���%�H�7ma_`��\J�@�@���z������@��j��`���”���ma_`��\J���݄��{�C�T�g@��j�D`���Y�g\J�_�_���}�t����A��Y����b>����=0�����b'�?�#�U����#�f�����9�o� �� �Y�_�� �@ `��[]�q_]��_�� �ځ��� ���]��_? ����� ����?@aj��`��� �?]��_J�#v�7�#��_a]��_�%�� �C�W�b@j�D`���^�b`��J�a��� �f����@��j�g`������`��[]��_J������_�� ���ł�@kj��`���͂���`��`��J��*�� ����1@�Aj��`����1�e]��`��`��J�$v�*��$��gh`�ʆ��� �5�M��@dj�6`���W���de]��_]��_J�n�n��_������� ������@�Bj��`��������`��_J��+�� ����+@�j��`�~j��`��� �+`��[]��_J����_�� �/�=��@rj�0`���H���Zma_`���opa_j`��_J��#!�������}������a_a_0������'�C_�� ���ׄ�@{j��`�����`��[]��_J����_�� ����@��j��`����]�_J�RN]�_�_����� �!�4�X@�Dj�"`���9�X�Ae]�_]�_J�K�O��_��R����� �\�o��@�Ej�]`���{����e]�`��]�_J��RN]�_�_���U�� ������@�Fj��`��������e]�`��]�_J��RN]�_�_����� �u�u���]�_J�u&�u x�u.���j�u`���j]��`��j]��[�u��`��[j]�8`��[a`��[��]�_�:����B����)�|��[�� �v���q ���������� ���������Q���`�o���G `��[`�������o�H��[1[j^ `��[]��_�������Y���� `��[]��_J����_�����+B�I��+�"�J_�(�K_`�����̂Ђ�B�%�Ԃ�����_`����������B���������L`��`���L�������)���e�k���M `��[�N`��[`��]��_�����������O��a__�����Ѕր��P��]��_���ۅۆ}��}���Qa__��R]��_j�$]��b]��__?����X�������x��� �ۅ���������@�Ij��`���������J_���K_`��J��x��v��.�P��]��_���I5�̆�_�����O}��v��.�O��a__��������a__5����_�����[}��v��.�O��a__��������a__a__`�ʁ�������$@�%j��`�����$���_`��J�x� v�.�P��]��_���%5�!�!_��!��U}� v�.�O��a__����!���a__a_`�������)�:��@��j�*`���D���M�L`��`��>�P��I�V%�\��Z��_>�b��N�p�v _5����_����_}��v�x.�O��a__�������Fa__J��x��v��.�P��]��_���������7a`��`�ʁ�?J��*�*�0�������t�z�c �S `��[`��]��_�������� ����]��_? �������Éԉ�@�Ij��`���ډ����J`�����K`��`��J���������c�����oa`��`�ʅ������/@�%j�`����/���`��`��J�%v�'��%��ʁT`�������3�D�a@��j�4`���N�a�W�L`��`��J�])�>�����2�������� �U `��[`��]��_������ ����]��_? ���������7@�Ij�`����7��J_��K_`��J�&�&�J��0��ǁ�4������;�K�k@�%j�<`���O�k�R��_`��J�X�X����i��&���o����@��j�p`���������L`��`��J��)����M���������� �V `��[`��]��]��_�Ɂ������W��]��_���� �� �0���E�X]��_j�]]��b]��_?�ɀ���� � ����������@�Ij��`���������Y]��_���Z]��_`��>�I�����J����g����xJ�)?I�+"�9��/��g�N��D��xJ�W*?N�m�q�[]��_v�}�s��g]��_a]��_�%N�����\]��_v������x]��_a]��_�%C��)>����N�Ǝ��]`��x�Ԃ����ր�a`�ʆ'I��!�����Lx������� ��a`�ʆ'a`��`�ʅ�J�*?I�!����LJ�')?I�:!x�Pv�?.�W��]��_���Iv�[��W���V_�)v�h��d�� V_�)a__`�ʁ�J�r*?�������{@�%j��`�����{��"]��_`��>���{I���̀����KJ��v��+�T`����?N�!�&�%`���>N�C��]��_v�C�C��K]��_a]��_�%Ex�C������a`�ʆ'>N�8_v�M����V_�)>�M��N�Y�[�^`��x�nv�].�W��]��_���%��s���a_`����=������x��x������������a`��`������j��`��a`��`���W=������x��x��������x����������7 a`��`���Xa`��`������j��`��a`��`���W=������x�݁������!x�恐����7a`��`����a`��`����=������x�x�������x� ��������a`��`���Xa`��`������j�`��a`��`���W=��$���x�)��$����!x�2��-���7 a`��`����a`��`����=��>���x�[x�K��F���x�S��N�����7a`��`���Xa`��`������j�]`��a`��`���WJ�l��s�����������@��j��`���������L`��`��J��%�������]��_�B�&�����k�q�� �_ `��[`��]��]��_�ց����Ā��W��]��_���ȓΔL �ڔL���X]��_j�]��b]��_?�ր�=�L �΅����Q�b��@�Ij�R`���h���r�`]��_���a]��_`��>����I�����J����������J��)?I��"�ǀ�����؁����J��*?N����`��v����]��_`����I�!���� v�&� ��]��_`����a`��`�ʅ�J�.*?E�@�I�K*`���x�R��P����T� a`��`�ʅ���\��x�]��\���a`��`����>�a��I�i!x�v�n.�W��]��_���Ix������]��_�����a`��_��x������]��_�����a`��_��a__`�ʁ�J��*?J��)���ǕטD@�%j��`���ۘD��8]��_`��>��DI���������J�v�+�T`����?N����%`���E������*`���x����v� ���]��_`����a`��`�ʅ����x�����a`��`����>���N�"�$�^`��x�7v�&.�W��]��_���%x�@�<��]��_��A�a`��_��a_`����=��L��x�^x�Y��T����[��a`��`������j�``��a`��`���W=��q��x��x�~��y��x���������7 a`��`���Xa`��`������j��`��a`��`���W=�����x��������!x�������7a`��`����a`��`����=�����x��x�́����x�Ձ�������a`��`���Xa`��`������j��`��a`��`���W=�����x������!x�������7 a`��`����a`��`����=����x�$x�����x�������7a`��`���Xa`��`������j�&`��a`��`���WJ�5��<�����I�Z�@��j�J`���d��m�L`��`��J�s%�u��s� <]��_��  g�������@!�b `��[]��_]��[`��]��_��������W��]��_���� �5 ��5�$�W]��_]��__?��� � � �����:�K��@�Ij�;`���Q���U�Y_�c�Z_`��>�n��I�t�x�J���� J���� VJ��)?I��"������ J�́��� VJ��*?N����c]��_`������_`���I&�' y�'v�.�W��]��_���Ia__`�ʁ�a__`�ʁT&�R y�Rv�A.�W��]��_���%a_`����a_`����y�}v�l.�W��]��_����a`��`�ʁ�N����`���>N����]��_v����� J_a]��_�%Ex���� ���a`�ʆ'>N����_v���� �V_�)>���N�ǚ���`��5�ٚ�`��x�Ղ��� ����� �a`��`���e#�Ն��� ���� `��`��=x�낚�� �(���� �x������ �a`��`����a_`��\�k=��� ~x���� ~�a`��`����>N�$��]��_v�$�$� V_a]��_�%Ex�$�� ݀�a`�ʆ'>N���_v�/�� �V_�)>�/��N�;�A��`��x�I��C� ���J� 1a`��`���eI�T"�^��X� V�o�i� V`���a`��`�ʅ�J�u*?=x������ �(���� 1x����� V`���a`��`����a_`��\�k=���� ~x������ ~�a`��`����J���ȃ��� ~�a`��`�ʅ����՛�>@�%j��`����>��"_`��>���>I��� ���uJ�v�+�T`����?N�1�6�%`���>N�Q��]��_v�Q�Q�u_a]��_�%Ex�Q�����a`�ʆ'>N�F_v�[���V_�)>�[��N�g�i�^`��x�|v�k.�W��]��_���%����a_`����=�����x��x�����������9a`��`������j��`��a`��`���W=�����x��x�ǁ����x�ρ�������a`��`���Xa`��`������j��`��a`��`���W=�����x�쁜����!x�������7 a`��`����a`��`����=����x�x��� ��x�������7a`��`���Xa`��`������j� `��a`��`���WJ�/��6�� %P����Y�_�q �d `��[]��_]��_�������0 �ʟ0���X]��_j��]��b]��_? ����� �I���5�F�o@��j�6`���P�o�Y�L`��`��J�_%�a��_��]��_�����{���m �e `��[]��_]�_�������1 �ˢ1���X]��_j��]��b]��_? �����!�)���6�G�k@��j�7`���Q�k�Z�L`��`��J�`%�b��`��]�_e��������f`�������>�F���g]�[[�����X�[��`�������m�r�� `����v�v��������g]�[[��`���� `��`��?����2����A����L �v���������:@�Tj��`���Ƥ:`��J��x�)x��x�Җ��x��v��v��.�g]�[[���h��]��[� �%v��.`����a[`����a`��`���^x�7��x�v� v�.�g]�[[���i��]��[� �%v�!. `����a[`����a`��`���^a`��`������j�1`��a`��`���W��?�Y��@�jj�@`���[���ce`��`��J�s""%�y��s��`��x��v��v��.�g]�[[���h��]��[� �Iv��.`����v������`��`����a[[`�ʁ�x��v��v��.�g]�[[���i��]��[� �Iv��. `����v������`�� `����a[[`�ʁ������L�R�f �k`��[��`��[`��]��]�8__�� �������h��]��_�� ���ɀ��i��]��_��ͦӧ� �ާ�����]��_j�]��b�,��]��_j�;]��b]�__?���m�\�����x �Ӆ�������k@�Ij��`�����k���l]�8__���m]�8__`��>�ѪkI���ۆJ����끧��J��)?I�"� ��������J�%*?N�;�B`��v�I�D��]�8__`���yI�U!�`��Y�bv�h�c�]�8__`���ya`��`�ʅ�J�p*?N�����n]�8`��`������`��`��>N����]��_v��v������]�8__��]��_��a]��_�%Ex�τ���a`�ʆ'>N��_v�Մ�V_�)>�թmN����o`����.����px�����]�8__���pa`��_�eN����`��5�6�.`��x�.������/��a`��`���e#�.��.����.��`��`��=x�T��B��(��U��x�d��^���a`��`����a`��`��\�k>N����]��_v��v�����]�8__��]��_��a]��_�%Ex�������a`�ʆ'>N�|_v�����V_�)>���VN�����o`�����.����x�����]�8__����a`��_�eN�ͩ���`��x�烩�������'a`��`���eI��"�����{�� �{`���a`��`�ʅ�J�*?=x�=��+��(��>�'x�M�G�{`���a`��`����a`��`��\�kJ�\)��p���'@�%j�q`�����'��|]�8__`��>���'I��������ZJ��v��+�T`����?N�ʪ��%`���>N����]��_v��v�����Z]�8__��]��_��a]��_�%Ex������a`�ʆ'>N��_v����V_�)>��N����p`��x�v�.�h��]��_� �%���a_`����N�*�4�q`��x�Ev�6.�i��]��_� �%5_x�M�J�Z]�8__��N�a`��_�e#���&�S���_��__a_`����=��`��x��x�{x�m��h��x�q�����s�Ba`��`���^a`��`����x�7�������a`��`���^a`��`������j��`��a`��`���W=�����x��x�������x����������a`��`���Xa`��`������j��`��a`��`���W=�����x�Ձ�����!x�ށ����7 a`��`����a`��`����=�����x�x�������x���������7a`��`���Xa`��`������j� `��a`��`���WJ�������,�=�d@��j�-`���G�d�P�L`��`��J�V%�X��V�]�8__�5�G��N�T�� �r `��[`��]��_���������s��]��]��_������ ������t]��]��_]�_?������ ���������@�Ij�`������!�J_�'�K_`��>�+��>N�@��]��]��_v�@v�@.�s��]��]��_�a]��]��_�%Ex�@�� H��a`�ʆ'>N�:�u]��_v�M�� HV]��_�)>�M��I�Ux�\��Y� �����g� a`��`�ʁ�J�l"x�v��s� ������� *a`��`�ʁ�x������ ��I���� ���� *a__`�ʁ�?J��*����ʱ=@�%j��`���α=����_`��>�Ա=>N����]��]��_v��v��.�s��]��]��_�a]��]��_�%Ex���!���a`�ʆ'>N���u]��_v����!�V]��_�)>���+I��x����"�����!�a`��`�ʁ�J�x����"�%��#�!�a_`����?J�1���B�S��@��j�C`���]���f�L`��`��>�i��>N�~��]��]��_v�~v�~.�s��]��]��_�a]��]��_�%Ex�~��"ꀐa`�ʆ'>N�x�u]��_v����"�V]��_�)>����I��x������#U������"�a`��`�ʁ�J��)?J��*�!p"�#�� �3�9� �v`��]��[�#�'�w�|���]��[�$�(�������w��`���.����� ������x]��[j��]��b`� ?�#����$3�$* �����/�ܵ�k �y��k��x]��[j�!]��b`� ?�#��L�$��$) ����*�p���@�Ij�q`��������J[���K[`��>���I��%������$�]�[>����J��"%������$�]�[x������[.�I���$�]�[���$�]�[a]�[]�[`�ʁ�?I��%������$�]�8[[>���RJ�"%��� �$�]�8[[x�>��[[��.��.�I�E�$�]�8[[�I�$�]�8[[a]�8[[]�8[[`�ʂ?I�X!v�].�w��`�ʂ(>�i�;I�q%�x��u�$�]��[>����J��"%������$�]��[x������[.�I���$�]��[���$�]��[a]��[]��[`�ʁ�?I��%������$�]��[>��5J��"%������$�]��[x����[.�I�&�$�]��[�*�$�]��[a]��[]��[`�ʁ�?I�B%�I��F�$�]��[>�V��I�^!�m%�e�b�$�]��[]��[%�s��p�$�]��[a`��`�ʅ�J�|*?J��"%������$�]��[x������[.�I���$�]��[���$�]��[a]��[]��[`�ʁ�?J��x��v��.�]��[�'�I����$ꁸ��$�a[[`�ʁ��+����@�%j�`������$�L`��`��>�'��I�-%�3��1�(@]�[J�;x�T�B��[.�%�Y�(@]�[a]�[`����?I�a%�g��e�(@]�8[[J�ox���v�[[��.��.�%���(@]�8[[a]�8[[`���?I��!v��.�w��`�ʂ(>���8I��%������(@]��[J��x���؁�[.�%���(@]��[a]��[`����?I��%�����(@]��[J� x�+���[.�%�0�(@]��[a]��[`����?I�?%�E��C�(@]��[>�R��J�Zx���a��[.�%���(@]��[a]��[`����?J��x��v��.�]��[�'�%����(@a[`�����,���»@��j��`���̻���L`��`��J��""%������*`]��[%������*`]�8[[x�v��.�]��[�'�����*`a`��`�ʁ�$�(*;*��0������ �z`��]��`���6�޻�� ����`�0? ����2���j@�Ij�`����j�!�{`���1�|`��`��J�C�C�c��Y�+W��b�+c�3�o���@�%j�p`���������$`��`��J�����d����+��4���Ǽ�@��j��`���Ѽ����}`��`��J��%������,`��+2+�+�,(������1���~��`��j�'`��,_���B���G��� |���\#�*�,=,_ �7��������� ���8�l�r�z�`��[��`��[]�Q__�:�ہۂ��悑���g]��_]�8__? ��r� ��__�I&�7 y�7��.�-�Ia__`�ʁ�a__`�ʁT&�^ y�^��U�-�%a_`����a_`����y����|�-��a`��`�ʁ��;�����x�����x���g]��_��e]�8__]�8__>�a�x=x�g.����n�.a]�8__\�b �ԅr�چ�__�I&� y�����-�Ia__`�ʁ�a__`�ʁT&�- y�-��$�-�%a_`����a_`����y�T��K�-��a`��`�ʁ�.�.�,�.�.� �<��������� ���=�l�r�r�� `��[]�_�?�ՁՂ��������g]��_]�=_? ���9���_�I&�1 y�1��(�/z�Ia__`�ʁ�a__`�ʁT&�X y�X��O�/z�%a_`����a_`����y���v�/z��a`��`�ʁ��@�����p�����p���g]��_��e]��_]�=_>�Y�p=x�_.����f�0Wa]��_\�) �̅9�҆�_�I&�� y������0F�Ia__`�ʁ�a__`�ʁT&�% y�%���0F�%a_`����a_`����y�L��C�0F��a`��`�ʁ�131?/<1<1? �A��������������C��.��A��j��`�~ �D����`��[��`��[��`��[��`��[�Q|]�8__�pa___j`���� a___j`��]�8__>����N������a___5����a___����1�#������2P4����������_����__J��&������2�_���2Pa___a___N�̂���a___5�܂�a___����2#�ք���2�4���߂�����_����__J��&������3>_���2�a___a___N����]�8__2�__=x�"���1�f4�*�*���+��_�3��_\>�=��=x�I��C�3�(}�O��J�25��P�3·�X�3�a___}�l��e�2���m�3·�u�3�a___a__\�kaa__\\�lJ������3��D�ɄӆA����`��[��`��[���l]�8__���m]�8__� a___j`��]�8__>�"�N�*�1��]�8__�3��__��@�4�I�I�S��M�4�J�\5�c�c]�8__��c�5R=x�k��c�5X����r�4�a]�8__\����c�5X?=x����|�4�f4�������_����_\>����=x������5(����5�#x������5������5�a`��`�ʆr}�����4�a___5_x�ۃ���5����5�a`��_�e#��6L&����6L_�6L__����5�a___����5�_a__\�kaa__\\�lJ��� �5�E��(��A���5����`��[`��[�B��]��_�Xa__]�8_]��_>�]��N�e�i|]�8_]��_2�w_]��_>N����]��_v������7&a]��_�%Ex����7���a`�ʆ'>N��_v����7�V_�)>����=x��5����]�8_]��_����7e5����_}������77����7�a__5����]��_x������8����82a`��]��_�e#������8a5����]��_���1_�5����\x������8(����82���8�a_]��_\�k���8����8a]��_]��_������7�a_\�2J������7e�F�6�9��A���D����`��[`��[�Q��]��_�g��a__�� a__`��j`��_>����=#������9�����9�j��a`��`��`��+a__`��N����_N����_>N����]��_v�ꀉ��9�a]��_�%Ex���:$��a`�ʆ'>N��_v���:$V_�)>��N��� ��_}��� �9����:ra__I�#"�2��'�:x�a}�D�=�9�a__`����E�:��U�:_`��a__`���a`��`�ʅ�>�f��=��n�:��y�:r=����:����:�?J������:�G��!��A���,����`��[`��[�9��]��_�O��a__�r a__`��j`��_>�|��=#������;�����;�j��a`��`��`��+a__`��N����_N����_>N����]��_v�Ӏ���;�a]��_�%Ex�Ӆ�<7��a`�ʆ'>N��_v�ۅ�<7V_�)>�ۍ�N�����_}������;�����<�a__I� "����<&x�Ku�I}�-�&�;�a__`����.�<��>�<&_`��a__`��$�a`��`�ʅ�>�P��=��X�<��c�<�=��r�<&���<�?J������<�H����'A��� �'`��[�"��]�8_]��_]�8_]�_>�)�'N�� ��]�8_]�_2�-_]�_=x�9��3�=�f4�A�A��B��_�J��]��_\>�Q�~=x�]��W�=�(��^�> �h��_��t�>,a_]�_\�kaa_]��_\\�lN�����]��_x�v������=���]��_����^��`��]��_�C>N�"��]��_v�"��"�>�a]��_�%Ex�"��>���a`�ʆ'>N���_v�(��>�V_�)>�(�>N�B��]��_v�B��B�>�a]��_�%Ex�B��?o��a`�ʆ'>N�7��_v�H��?oV_�)>�H�>N�d��]��_v�d��d�>�a]��_�%Ex�d��?怐a`�ʆ'>N�Y��_v�j��?�V_�)>�j� I�t"x��u��x�~��x�=����?�a`��]�_�ek����?Fa`��`�ʆ�x��u��x������=�����?Fa`��]�_�ek���@4a`��`�ʆ�>�Γ=x��u��x������=�����?�a`��]�_�e�����@4a_`�ʆ!?J����=��I������A���ʛ�`��[����]�8_]��_]��]�_>�曬 N����c`���N������]��_���1_�N������]��]�_���1]�_�N�9�A��]��_`���C��_`��N�\�e��]��_`���g��_`��N������]��_����_O������a_\��������_\>����=x�ń���B(���B�����A�a_`��\�k=x�ㅗ��B6(���B�����A�a_`��\�k=����A�x������A��a`��`����=x� ���A€���B�a_\�2=x�&���B^���*�B�a_`�ʆ!>N�[��]��_v�[u�[x�S��N�A��T�B�a`��]��_�ea]��_�%Ex�[�C� ��a`�ʆ'>N�A��_v�^�C� V_�)>�^��I�f!x�s��k�B����D a`��`�ʆr>���=���B����D a_\=x������B6(���B��φ�`��u��x�ۅ���B6���B�a`��`���eu��x���B6���D a`��`���ea_`��\�kI� x����B^k��D a`��`�ʆ�>�+��=x�=��5�B6(�>�B��M��`��u�ax�Y��Q�B6�Z�B�a`��`���eu�wx�l��d�B6�m�D a`��`���ea_`��\�k?I����x������B6���B�a`��`���ex������B���B�a`��`���ea`��`�ʅ�>����N�Ù���]�_RN]�_�_�FM N����_D��>��i=���Fq x� ���A€�a_��=x�+��#�B^���2�Fq a`��`�ʆ�=x�O�E�F8 ��5_�S�Fq #�F� &�\�F� _�F� __a_`�ʆ!!�{�r�Fq _�~�B�a`��`�ʅ�=x������A「���F8 a]�_\�2?>N����]��_v��v�ʀ���A���]��_��a]��_�%Ex���G���a`�ʆ'>N����_v���G�V_�)>�ЛI��!x�ㄚ��B�����G� a`��`�ʆr=���B���G� a_\?J��x��v������A〸]��]�_����^��`��]��]�_�CH�1�1�4�6�9P;c=yA\H� �J���������(s������`��[]��_G���L���M���N���O���P���Q���R���S���T���U���W���V���X���Y���Z���[���\���]���^���_���`���a���b���c���d���e���f���g���h���i���j���k���l���m���n���o���p���q���r���s���t���u���v���w���x���y���z���{���|���}���~�������������������������������������������������������������������������������s�����Ij`��`��]��_��������s�����K�]��`����������������������s�����T�]��`����������������������s�����^h]��`������������������s�����e`��[]��]��_����s�����g�]�R_]�R[]��_����������������������������s�����p`��[^__W��_`����������������������h�L��"�=a���(�=`��[�"���]��_�-��`���=#`��j`��]��_>�F�==�W�@��h�M'��N����a]��_v������Ma]��_�%N������]��_���1_�E������*`���x�Ʌ���M�����Ma`��`�ʅ�����M�x�Ӆ���M��a`��`����>�׆RI��x�샅��MV��a`�ʆ'>���&=x� ���M���v��� �MVV_�)a_\�2>�-�LJ�7��>�M�N�\�bc`����d�M=#�v��o�M��o�M�z��+`��C��x������MV��a`�ʆ'>���&=����Nnx������Nn�a`��`����N������`��x�����M`��&����Nna`��`����I��x����N�����Ma`��`�ʅ�=x�����M�(���N�v����MVV_�)a`��_\��?J�,��3�M��M�"�=a���"�=`��[�"���]��_^`��`��]��_J�"4�"�"�=�-��`���=#`��j`��]��_J�"�"�L_��"�O���"�O���"�P �N�q�}��a������`��[�}���]��_��ma_`��]��_J��x������Ptz4��������_`��J��!}�Ɓ���P�����P�a_`��aa_`��]��_���O�}��a���}��`��[�}���]��_aa_`��]��_J�}4�}�}����ma_`��]��_J�}�}�N_��}�Q=��}�Qz�P�V�^��a���d��`��[�^���]��_�s ^__W��_`��]��_J�5��]��_RN�]��_��<_����Q����R8R=x�����R%������Q�^a__`��\�����R%�Q�^��a���^��`��[�^���]��_a^__W��_`��]��_J�^4�^�^���s ^__W��_`��]��_J�^�^�P_��^�RƁ�^�S�R�D�L��a���m��`��[]�R_]�R[�L���]��_��a__]��_>����N����"]��_RN��]��_���<_����S�����S�=��__����SӁ���S�6j��^]�R_]�R[__`��!_J������S��S�L��a���L��`��[�L���]��_^]�R_]�R[a__]��_J�L4�L�L��]�R_]�R[��a__]��_J�L�L�R__��L�T���L�T��T�����na���ʋn`��[`��[�����]��_��a__�� ^__W��_`��]��_>��nN��"]��_RN�]��_��<_���Uj���U�=�*__��<�Uā�F�U{��M�U�J�[��b�U��U���na�����n`��[�����]��_^`��[a__^__W��_`��]��_J��4�����n`��[��a__�� ^__W��_`��]��_J�����T__����VY����Vʂ���V��V�ӎ/a���ӎ/`��[�����]��_a^__W��_`��`��J��4���ӎ/�� ^__W��_`��`��J���ӂW_����W[����W��W�Όӎ/a���ێ/`��[�����]��_�� ^__W��_`��`��>��/N���a]��_v� ���Xa]��_�%I�!x�)�� �XX��a`�ʆ'J�5)?N�J�Z��_v�e��\�XXV_�)C�rx����y�XX��a`�ʆ'>���N����_v������XXV_�)I��x��}�ǁ���X&����X�����X�^__W��_`��$�a`��`�ʅ�J��*?=����X��� �X�J� )�X�� �~a���-�~`��[]�R_]�R[� ���]��_�Da__`��>�K�~N�U�^a]��_v�e��`�Y�a]��_�%I�s!x����x�Y瀐a`�ʆ'J��)?N������_}������Y�v������Y�V_�)a__C��x�݂���Y瀐a`�ʆ'>��iN����_}�����Y�v� ���Y�V_�)a__I�x�9x�*���Z7����4�Z�a_`����$�a`��`�ʅ�J�>*?=��R�Z7��`�Z�J�o)�Y� �~a��� �~`��[� ���]��_^]�R_]�R[a__`��J� 4� � �~]�R_]�R[�Da__`��J� � �X__�� �[R�� �[��Z�y�~�a�����`��[`��[�~���]��_��a__�� ^__W��_`��`��>�ΓN�ؑ�a]��_v�耑��\ a]��_�%I��!x�����\u��a`�ʆ'J�)?N�%�1��_}�8��3�\1v�B��9�\uV_�)a__C�Px�`��W�\u��a`�ʆ'>�l��N�x�|_}����~�\1v������\uV_�)a__I��x��}������\C����\Ņ���]%^__W��_`��$�a`��`�ʅ�J��*?=����\Ņ���]%J��)�[�~�a���~�`��[�~���]��_^`��[a__^__W��_`��`��J�~4�~�~�`��[��a__�� ^__W��_`��`��J�~�~�Z__��~�]�~�^_��~�^q�\�����)a�����)`��[�����]��_��ga`��_\\>�̔)N�֓�c`���>N����]��_v������^�a]��_�%Ex����_-��a`�ʆ'>N��_v����_-V_�)>���%=}� ���^�5��`�����_5��`�����_x����_��a`��`�������_����_{a`��_\�]���)a�����)`��[�����]��_aa`��_\\J��4�����)��ga`��_\\J�����\_����`7����`m�^�ɔΕIa���ڕI`��[�����]��_��ga_`��\>���IA>N���]��_v����`�a]��_�%Ex���`���a`�ʆ'>N� _v���`�V_�)>��EI�$!}�/��)�`���0�aJa_`��B�:?�_�ΕIa���ΕI`��[�����]��_aa_`��\J��4���ΕI��ga_`��\J���΂^_����a�����a��`�%�*��a���=��`��[�*���]��_�bga`��_`��\>�j��N�t�zc`���A>N����]��_v������bLa]��_�%Ex����b���a`�ʆ'>N��_v����b�V_�)>����I��!}������b]5����`������b~5����`������b~x������c�a`��`��������c����b�a`��_`��B��?�a�*��a���*��`��[�*���]��_aa`��_`��\J�*4�*�*���bga`��_`��\J�*�*�`_��*�c���*�c��b����a���'��`��[��`��[����]��_�I��a`��__]��_>O��aa]��[[[`��a]��[[[`��>N��`���N��[N��]��_��dHN��a`��__��dYO��[�'����]��[��[��[`��>>�X��N�b�hc`���>N����]��_v������d�a]��_�%Ex���eZ ��a`�ʆ'>N�z_v���eZ V_�)>����>=w�e�慾}������d�5����`�����eH 5����`�����eH x�����e��a`��`�������e����e� a`��__��M��)J��*J��eJ��_��d��c���a�����`��[����]��_^��`��[a`��__]��_J�4������`��[�I��a`��__]��_J���b__���f����g �d�����a����`��[����]��_�9ma`��_`��]��_>O��aa]��[[[`��a]��[[[`��>N��`���N��[N��]��_��gxNma`��_`����g�O��[�����]��[��[��[`��>>�E��N�O�Uc`���>N�r��]��_v�r��r�ha]��_�%Ex�r�h� ��a`�ʆ'>N�g_v�x�h� V_�)>�x��I��}������h5����`�����hv 5����`�����hv x�����i�a`��`�������i���h� a`��_`��>=w�hG�慾���h� ��M��)?J��*J��h4J��_��g��e���a����`��[����]��_aa`��_`��]��_J�4�����9ma`��_`��]��_J���d_���i큘�j.�f�����a����`��[����]��_�8ma`��_`��]��_>O��aa]��[[[`��a]��[[[`��>N��`���N��[N��]��_��j�Nma`��_`����j�O��[�����]��[��[��[`��>>�D��N�N�Tc`���>N�q��]��_v�q��q�ka]��_�%Ex�q�k� ��a`�ʆ'>N�f_v�w�k� V_�)>�w��I�!}������k45����`�����k� 5����`�����k� x�����l/�a`��`�������l/���k� a`��_`��>=w�kd�慾���k� ��M��)?J��*J��kQJ��_��j��g���a����`��[����]��_aa`��_`��]��_J�4�����8ma`��_`��]��_J���f_���m ���mL�h����a��$��`��[��`��[����]��_�W~a`��_]��_]��_>O��aa]��[[[`��a]��[[[`��>N��`���N��[N��]��_��m�N~a`��_]��_��m�O��[�$����]��[��[��[`��>>�e��N�o�uc`���>N����]��_v������nJa]��_�%Ex���n� ��a`�ʆ'>N��_v���n� V_�)>����>=w�n����}������na5����`�����n� 5����`�����n� x�����oq�a`��`�������oq���o' a`��_]��_��M��)J��*J��n�J��_��m��i���a����`��[����]��_^��`��[a`��_]��_]��_J�4������`��[�W~a`��_]��_]��_J���h__���p4���p��j������a�����`��[�����]��_����a`��____>�Н�N�ڜ�a]��_v�ꀜ��qa]��_�%I��!x�����q=��a`�ʆ'>��?=0�� ��'�?N�I�Oc`���N�\�c��_v�n��e�q=V_�)C�{x������q=��a`�ʆ'>����=����q�}������q5����`������q�5����`������q�x������r �a`��`��������r ����q�v�ʂ���q=V_�)a`��___J������q��k����a� ����`��[�����]��_aa`��____J��4����������a`��____J�����j_����r�����r��l�W�Y�Va� �g�V`��[��`��[�Y���]��_�q��_����a`��____>���VN������_����sxN�ޟ�c`���>N���]��_v����sga]��_�%Ex���sԀ�a`�ʆ'>N��_v���s�V_�)>��?=���s�}����s�5�%� `���� �s�5�%�%`����%�s�x�%�� �t^�a`��`������ �t^��)�s���1�t"a`��___J�E��L�s��m�Y�Va� �Y�V`��[�Y���]��_^��`��[_a`��____J�Y4�Y�Y�V��`��[�q��_����a`��____J�Y�Y�l__��Y�t���Y�u[��Y�ug�n�����:a� ���:`��[�����]��_��ma_`��_>�֡:>N����]��_v������u�a]��_�%Ex����v��a`�ʆ'>N��_v����vV_�)>���%I��}����u����v\a_`��J����v\?J�++�o���:a� ���:`��[�����]��_aa_`��_J��4�����:��ma_`��_J�����n_����vف���w�p�ϡҢ�a��颔`��[�����]��_�ma`��_`��_>���N��$c`���>N�A��]��_v�A��A�woa]��_�%Ex�A��w���a`�ʆ'>N�6_v�G��w�V_�)>�G�I�O}�W��S�w�5�]�X`����X�w�5�]�]`����]�w�x�]��X�x;�a`��`������X�x;��a�xa`��_`��J�k��r�x?J��+�q�Ң�a��Ң�`��[�����]��_aa`��_`��_J��4���Ң��ma`��_`��_J���҂p_����xց���y�r�֢ݣVa���V`��[�����]��__>��VN���a]��_v�����yta]��_�%I�x����y���a`�ʆ'J�*v�:��1�y�V_�)?J�G+�s�����Ka����K`��[�����]��_��ma_`��_>�ԤKN����_>N����]��_v������za]��_�%Ex����z`��a`�ʆ'>N��_v���z`V_�)>��4I� }����z/���z�a_`��=���zO��'�z�?J�:��A�zO�t���Ka����K`��[�����]��_aa_`��_J��4�����K��ma_`��_J�����s_����{5����{m�u�Ԥץ�a�����`��[�����]��_�ma`��_`��_>���N�!��_N�1�7c`���>N�T��]��_v�T��T�{�a]��_�%Ex�T��|��a`�ʆ'>N�I_v�Z��|V_�)>�Z��I�b}�j��f�{�5�p�k`����k�| 5�p�p`����p�| x�p��k�|��a`��`������k�|���t�|ma`��_`��=��~�|����|m?J������|�v�ץ�a��ץ�`��[�����]��_aa`��_`��_J��4���ץ��ma`��_`��_J���ׂu_����}I����}��w���1a����1`��[�����]��__>���1I�v����}�h`�ʆ�J�+?J�"v�)��)�}�`_���x������a�����`��[�����]��_��ma_`��_>�Ũ�N����_N�ާ��`��*>N���]��_v����~^a]��_�%Ex���~���a`�ʆ'>N��_v� ��~�V_�)>� ��I�}����~o���~�a_`��>�&��I�0!��5�~�>�<�z=��H�~���Q�~�=��d�~�)>����J��+?J������~��y����a�����`��[�����]��_aa_`��_J��4��������ma_`��_J�����x_�����������z�h�k��a�����`��[�k���]��_��ma`��_`��_>����N����_N�ǩ��`��*N�ީ�c`���>N���]��_v�����Ea]��_�%Ex�������a`�ʆ'>N��_v�����V_�)>���I�}�����V5��`�������5��`�������x�����-�a`��`��������-��!���a`��_`��>�+��I�5!��:���>�A�=��M��z��V���=��i���)>����J��+?J�������z�{�k��a��k��`��[�k���]��_aa`��_`��_J�k4�k�k����ma`��_`��_J�k�k�z_��k�����k��9�|�k�r�Aa���A`��[�r���]��__>��AN����a]��_v��������a]��_�%I��x����������a`�ʆ'>���,N�̫���_v�ށ�����V_�)I��!x����������a`�ʆ'>��&J����� ??J�2+�}���į�a��կ�`��[`��[�`��[�����]��_��a__���a___]�8__>�&��N�0�7��]�8__2�?__>N�[��]��_v�[��[���a]��_�%Ex�[�����a`�ʆ'>N�P_v�a���V_�)>�a��N�m�q_}�x��s�����y��`a__=x��������(������}��������x��������������a`��_�e�����`a___a__\�kJ���������~�į�a��į�`��[�����]��_^`��[�`��[a__a___]�8__J��4���į�`��[�`��[��a__���a___]�8__J���Ă}___�����T�����ς����������a����`��[`��[����]��_�6a__]�8_]�_>�=��N�G�N��]�8_]�_2�[_]�_>N�w��]��_v�w��w��ea]��_�%Ex�w���Հ�a`�ʆ'>N�l_v�}����V_�)>�}��=x��5����]�8_]�_������5����_}�������v�����#a__5����]�_x�������O�����ra`��]�_�e#��������5����]�_RN]�_�_���5����\x�������O(�����r�����a_]�_\�k����������]�_]�_�������#a_`�ʆ!J�������������a� ���`��[����]��_^`��[a__]�8_]�_J�4����`��[�6a__]�8_]�_J���__����Ё���-������a�!�"��`��[`��[����]��_�9a__]�8_]��_>�@��N�J�Q��]�8_]��_2�__]��_>N�{��]��_v�{��{���a]��_�%Ex�{�����a`�ʆ'>N�p_v�����V_�)>����=x��5����]�8_]��_������5����_}�������������da__5����]��_x��������������a`��]��_�e#��������5����]��_���1_�5����\x��������(����������+a_]��_\�k����+�����]��_]��_�������da_\�2J�������������a�"���`��[����]��_^`��[a__]�8_]��_J�4����`��[�9a__]�8_]��_J����__���������S���ͳߴDa�#��D`��[�����]��_�ma_`��]��]��_J����_�����4�&�&�C�'��`���*_`��J�6}�:��6�����;��(a_`�����ߴDa�$�ߴD`��[�����]��_aa_`��]��]��_J��4���ߴD�ma_`��]��]��_J���߂�_����������������.��a�%�8��`��[�.���]��_�Rma_`��]��]��_J�a�a��_��a��/4�s�s���t��`���w_`��J��}�������@������a_`�����.��a�&�.��`��[�.���]��_aa_`��]��]��_J�.4�.�.���Rma_`��]��]��_J�.�.��_��.���.��3�������$a�'���$`��[�����]��_��ma__`��]��]��_J���悍_������4�����#����`����__��(_`��J�}��������������a__`�������$a�)���$`��[�����]��_aa__`��]��]��_J��4�����$��ma__`��]��]��_J������_�����x���������D�V��a�*�h��`��[�V���]��_��ma`��_`��]��]��_>O��aa]��[[[`��a]��[[[`��>N��`���N��[N��]��_���*Nma`��_`�����;O��[�h����]��[��[��[`��>>����N����a]��_v��������a]��_�%I��!x������- ��a`�ʆ'>���J��*?N��c`���N���+]��_���_v�%���- V_�)C�3x�C�:��- ��a`�ʆ'>�O��N�[�c_v�n�e��- V_�)I�}}��������5����`������� 5����`������� x������$�a`��`��������$�����a`��_`��>����>=w����慾����� ��M��)=����� ���1_�?=x������� �������a_\�2>=w����慾����� ��M��)J��*J����J��]��_���h���V��a�,�V��`��[�V���]��_aa`��_`��]��]��_J�V4�V�V����ma`��_`��]��]��_J�V�V��_��V��p��V������@�R�@�a�-�c�@�`��[�R���]��_��ma`��_`��]��]��_>O��aa]��[[[`��a]��[[[`��>N��`���N��[N��]��_���&Nma`��_`�����7O��[�c�@���]��[��[��[`��>>���@�N����c`���N���+]��_>N����]��_v�܅�����a]��_�%Ex����Q ��a`�ʆ'>N��_v����Q V_�)>���@b=x��5���]��_����; #�����������; ���1_������]��_]��_�������a_\�2I�@ }�@��@���5�@�@`���@��- 5�@�@`���@��- x�@�@��_�a`��`�����@��_�@���a`��_`��>�@)�@\>=w����慾�@9��; ]��_��M�@3)=�@H��; +?I�@h!�@r�@l��; >=w����慾�@���; ]��_��M�@{)?J�@�*J����J��]��_���d���R�@�a�.�R�@�`��[�R���]��_aa`��_`��]��]��_J�R4�R�R�@���ma`��_`��]��]��_J�R�R��_��R��ā�R�� ���B��B��D�a�/�B��D�`��[�B����]��_�C%ma`��__`��]��]��_>O��aa]��[[[`��a]��[[[`��>N��`���N��[N��]��_����Nma`��__`������O��[�B��D���]��[��[��[`��>>�C1�D�N�C;�CDa]��_v�CK��CF��a]��_�%I�CY!x�Cg�C^��� ��a`�ʆ'J�Cs*?N�C��C��0_v�C��C���� V_�)N�C��C��+]��_�C���_�C���� N�C��C�c`���C�C�x�C��C���� ��a`�ʆ'>�C��D�N�C��D_v�D�D��� V_�)I�D }�D(��D$��.5�D.�D)`���D)��W5�D.�D.`���D.��Wx�D.�D)����a`��`�����D)����D2��� �D<���a`��__`��>�DF�Dw>=w��f�慾�DV��& ��M�DP)=�De��& �Dm�1_�?=x�D��D��& ���D����a_\�2=�D���� �D����>=w��f�慾�D���& ��M�D�)J�D�*J���OJ��]��_�������B��D�a�1�B��D�`��[�B����]��_aa`��__`��]��]��_J�B�4�B��B��D��C%ma`��__`��]��]��_J�B��Bނ�_��B������B�������E��E��F4a�2�E��F4`��[�E����]��_�E�ma_`��`��>�E��F4>N�E���]��_v�E��E���Za]��_�%Ex�E������a`�ʆ'>N�E�_v�E����V_�)>�E��FI�E�}�F��E���m��F���a_`��J�F *?J�F%)���E��F4a�3�E��F4`��[�E����]��_aa_`��`��J�E�4�E��E��F4�E�ma_`��`��J�E��E���_��E������E�������G��G��Ia�4�G��I`��[�G����]��_�G�`��]��]��_>O��aa]��[[[`��a]��[[[`��>N��`���N��[N��]��_���4N`�����GO��[�G��I��]��[��[��[`��>>�G��II�G�x�G��G�����a`��`�ʅ�=0�G��H����H��є+'?N�H,�H5a]��_v�H<��H7���a]��_�%C�HJx�HZ�HQ��u ��a`�ʆ'>�Hf�IN�Hr�Hx�5]��_�Hz��_v�H��H{��u V_�)E�H��H��H�*`���"x�H��H��� ��H����a`��`�ʅ�x�H��H���u ��a`�ʆ'�H��� x�H��H��� �a`��`����>�H��H�=x�H��H���� ��v�H��H���u V_�)a_\�2>=w����慾�I��� ��M�I)J�I*J����J��]��_���k���G��Ia�6�G��I`��[�G����]��_a`��]��]��_J�G�4�G��G��I�G�`��]��]��_J�G��G���_��G���x��G�������J��J��K'a�7�J��K'`��`���J����]��_]��_>O��aa]��[[[`��a]��[[[`��>N��`���N��[N��]��_���5O��[�J��K'��]��[��[��[`��>>�J��K'>N�J���]��_v�J��J����a]��_�%Ex�J��� ��a`�ʆ'>N�J�_v�J��� V_�)>�J��K#I�J�!�K�J���g >=w���؀慾�K��g _��M�K)?J�K'*J����J��_���Z���J��K'a�8�J��K'`��`���J����]��_a]��_J�J�4�J��J��K']��_J�J��J���_��J���+���Lo�Lx�N+a�9�L��N+�Lx���]��`��`��>�L��N+N�L��L�a]��`��v�L���L����a]��`�Ɇ%I�L�x�L���L���݀�a`�ʆ'>�L��NN�L��L� `��v�L���L����V`�Ɇ)I�L�v�L���L���>�:`�ʆ�>�M�MJ�M ��M��>?C�M&x�M6��M-��݀�a`�ʆ'>�MB�M�N�MP�MY�`��v�Md��M[���V`�Ɇ)I�Muv�M���My��̂:`�ʆ�>�M��M�J�M���M����?I�M�x�MŃ�M������M���>a`��`�ʅ�>�M��M�=��M���>��M����?J�N��N ��>?J�N+���N��N��N�a�;�N��N��N����]��`��`��J�N�5�N��N�`���N�����N����#�N���N����0�N��N���'�C�N����`��`�����O�O�P�a�<�O&�P��O���]��`��`��>�O&�P�N�O0�O9a]��`��v�O@��O;��[a]��`�Ɇ%I�ONx�O[��OR�����a`�ʆ'>�Og�P�N�Os�Oy `��v�O���O{���V`�Ɇ)I�O�v�O���O����:`�ʆ�>�O��O�J�O���O����?C�O�x�Oځ�O������a`�ʆ'>�O��P�N�O��O��`��v�P��O����V`�Ɇ)I�Pv�P&��P��o�:`�ʆ�>�P-�PRJ�P9��P@��o?I�P\x�Pi��P`��o$��Pk���a`��`�ʅ�>�Pr�P�=��P~����P���o?J�P���P����?J�P�+���Q)�Q1�Qea�=�Q5�Qe�Q1���]��`��`��J�Q85�QB�Q8`���Q8����Q8��[#�Q8��Q8���0�QF�QL��'�C�Q8���`��`�����Q��Q��R1a�>�Q��R1�Q����]��`��`��>�Q��R1N�Q��Q���`���>N�Q���]��`��v�Q���Q����a]��`�Ɇ%Ex�Q����:��a`�ʆ'>N�Q� `��v�Q����:V`�Ɇ)>�Q��R=��R��#x�R ��R��#��R���a`��`�Ʌ�J�R ��R'��#���S �S�S�a�?�S�S��S���]��`��`��>�S�S�N�S&�S-��`��(N�S<�SB��`���>N�S]��]��`��v�S]��S]��'a]��`�Ɇ%Ex�S]���~��a`�ʆ'>N�ST `��v�Sc���~V`�Ɇ)>�Sc�S�=��Sk��gx�Sq��Sk��g�a`��`����=��S}��Lx�S���S}��Lx�S�x�S���S������S���La`��`�Ņ��@��S���ga`��`�ņ�a`��`�ņ�I�S��S���S���g�a`��`�ʅ�=0�S��S���'�A?J�S���S���L���U?�UH�V�a�B�UR�V��UH���]��`��`��>�UR�V�N�U\�Uea]��`��v�Ul��Ug��a]��`���%I�Uzx�U���U~��<��a`�ʆ'>�U��VlN�U��U� `��v�U���U����U��VRN�U��U��`��v�U���U����V$�VJ=��V0�����V8���?J�VZ��Va���?J�Vr+���V��V��Wa�C�V��W�V����]��`��`��J�V�5�V��V�`���Vꂛ��V����#�V��V����0�V��V���'�C�V����`��`�����Wi�Wr�X�a�D�W|�X��Wr���]��`��`��>�W|�X�N�W��W�a]��`��v�W���W���La]��`���%I�W�x�W���W���q��a`�ʆ'>�W��X�N�W��W� `��v�Wځ�W���qV`���)C�W�x�W���W���q��a`�ʆ'>�X�X|N�X�X�`��v�X'��X��qV`���)I�X8x�XE��X<��)$��XG���a`��`�ʅ�>�XN�Xt=��XZ��҃�Xb��)?J�X���X����?J�X�+���Y�Y �YAa�E�Y�YA�Y ���]��`��`��J�Y5�Y�Y`���Y����Y���#�Y��Y��0�Y"�Y(��'�C�Y��`��`�����Y��Y��Z a�F�Y��Z �Y����]��`��`��>�Y��Z N�Y��Y���`���>N�Y���]��`��v�YӀ�Y����a]��`���%Ex�Yӂ�����a`�ʆ'>N�Y� `��v�Yق���V`���)>�Y��Y�=��Y����x�Y��Y������Y���a`��`����J�Y���Z������[��[��]�a�G�[��]��[����]��`��`��>�[��]�N�[��[���`���N�[��\�H`���N�\ �\��`���>N�\.��]��`��v�\.��\.���a]��`���%Ex�\.��� ��a`�ʆ'>N�\% `��v�\4��� V`���)>�\4�]7=��\����x�\���\�����a`��`����N�\��\���`��x�\�x�\х�\���b��\����a`��`������\����a`��`����=��\����x�\���\����x�\���\��������]���a`��`���_a`��`����=��]���x�]!��]����H��]+���a`��`����I�]=�]G��]A����a`��`�ʅ�=0�]M�]S��'�A?J�]rx�]���]y���x�]���]����@��]����a`��`�ņ�a`��`�Ņ����^��^��`�a�I�^��`��^����]��`��`��>�^��`�N�_�_a]��`��v�_��_��aa]��`�ņ%I�_#x�_0��_'�����a`�ʆ'>�_<�`�N�_H�_N `��v�_Y��_P���V`�ņ)I�_hv�_r��_l���:`�ʆ�>�_y�_�J�_���_����?C�_�x�_���_������a`�ʆ'>�_��`uN�_��_��`��v�_݁�_����V`�ņ)I�_�v�_���_���u�:`�ʆ�>�`�`'J�`��`��u?I�`1x�`>��`5��u��`@���a`��`�ʅ�>�`G�`m=��`S����`[��u?J�`}��`����?J�`�+���`��a �a=a�J�a �a=�a ���]��`��`��J�a5�a�a`���a����a��a#�a��a���0�a�a$��'�C�a���`��`�����a��a��cNa�K�a��cN�a����]��`��`��>�a��cNN�a��a�a]��`��v�a���a���a]��`�ņ%I�a�x�aځ�a���)��a`�ʆ'>�a��c9N�a��a� `��v�b��a���)V`�ņ)I�bv�b��b����:`�ʆ�>�b#�bAJ�b-��b4���?C�bIx�bY��bP��)��a`�ʆ'>�be�cN�bs�b|�`��v�b���b~��)V`�ņ)I�b�v�b���b����:`�ʆ�>�b��b�J�b���b���?I�b�x�b��b���$��b����a`��`�ʅ�>�b��c=��b������c��?J�c'��c.���?J�c?+���c��c��c�a�L�c��c��c����]��`��`��J�c�5�c��c�`���c�����c���#�c���c���)0�c��cΆ�'�C�c���)`��`�����dA�dL�d�a�M�dP�d��dL���]��`��`��>�dP�d�N�dZ�da��`��(>N�d~��]��`��v�d~��d~���a]��`�ņ%Ex�d~���뀐a`�ʆ'>N�du `��v�d�����V`�ņ)>�d��d�=��d����x�d���d������d���Aa`��`�ņ�J�d���d�������fW�fg�f�a�N�fq�f�`��[�fg���]��]��_]��_>O��aa]��[[[`��a]��[[[`��>N��`���N��[N��]��]��_����O��[�fq�f���]��[��[��[`��>>�fw�f�>N�f���]��]��_v�f���f���Za]��]��_�%Ex�f���� ��a`�ʆ'>N�f�"]��_v�f���� V]��_�)>�f��f�>=w��������f���' ��M�f�)J�f�*J���wJ��_��� ���hJ�hQ�i�a�O�h[�i�]�R_]�R[�hQ���]��__>�h[�i�N�he�hna]��_v�hu��hp���a]��_�%I�h�x�h���h��� ��a`�ʆ'>�h��i�N�h��h� _v�h���h��� V_�)C�h�x�h؁�h��� ��a`�ʆ'>�h��ihN�h��h��_v�i��h��� V_�)I�ix�i5x�i!��i��j����i+���a_`����$�a`��`�ʅ�>�i:�i`=��iF��j��iN���?J�ip��iw��j?J�i�+���i��i��j+a�P�i��j+]�R_]�R[�i����]��__J�i�5�j�i�_�i���_��i����#�i���i����0�j �j��'�C�i����__���j}�j��k�a�Q�j��k�]�R_]�R[�j����]��__>�j��k�N�j��j�a]��_v�j���j���_a]��_�%I�j�x�jÁ�j��„��a`�ʆ'>�j��k�N�j��j� _v�j��j��„V_�)C�j�x�k ��k�„��a`�ʆ'>�k�k�N�k%�k.�_v�k9��k0�„V_�)I�kJx�khx�kT��kN������k^��<a_`�����a`��`�ʅ�>�km�k�=��ky����k����nO�o�I�nU!�na��nY��>�nj�n�J�nr�n��W_��n�����n���^__W��_`��?N�n��n�a]��_v�n€�n����a]��_�%I�n�!x�nނ�n��ǥ��a`�ʆ'J�n�)?N�n��o��_v�o��o�ǥV_�)C�o'x�o7��o.�ǥ��a`�ʆ'>�oC�o�N�oO�oW_v�ob��oY�ǥV_�)I�oqx�o�x�o���ou������o���]a_`����$�a`��`�ʅ�J�o�*?=��o�����o���]J�o�)���n,�o�a�V�n,�o�]�R_]�R[�n,���]��_^^__W��_`��`��J�n,4�n,�n,�o��nE ^__W��_`��j`��`��J�n,�n,��_��n,��*��n,�Ƀ���pw�p��p�a�W�p��p�`��[�p����^__W��_`��^__W��_`��J�p�4�p��p��p��p���_�p���_`��J�p�}�p���p�����p���}��p���o^__W��_`�����qM�q[�q�a�X�qg�q�`��[��`��[�q[���^__W��_`���qva__^__W��_`��J�q�4�q��q��q��q���_�q���_`��J�q�}�q���q���}�q���q���;��q��ˉa__}�q���q���;��q��˗a__^__W��_`�����q[�q�a�Y�q[�q�`��[�q[���^__W��_`��^��`��[a__^__W��_`��J�q[4�q[�q[�q���`��[�qva__^__W��_`��J�q[�q[��__��q[��]��q[������r��r��sNa�Z�r��sN`��[�r����^__W��_`���r��[^__W��_`��^__W��_`��J�r�4�r��r��sN�r���_�r���_`��>�r��sMN�r��r���`��}�r��r���t��r������r��� ^__W��_`��I�s�s��s��*�a`��`�ʅ�=��s��*}�s(��s�͛��s)�����s,�� ^__W��_`��?J�s8��s?��*���r��sNa�\�r��sN`��[�r����^__W��_`��a^__W��_`��^__W��_`��J�r�4�r��r��sN�r��[^__W��_`��^__W��_`��J�r��r���_��r���(��r��ϩ�IL�O�PNQQ�R�SdTmU;V4W6W�Y}[-[�]�^�``�a�b&c�df�gRi�jol�m�pp�r�s7t�u�v�wIx�yNy�{{�}$}�~8�����u�a�/�6���w�����`� ���u�S��K�����R�U�*�S��K��������4�4��������%���Z���:�:�����������k�%��Ġſƴ�������0�D���h ��������������]`��[]�O]��_����� ������]��]��_�����a�'�a�>�^]��]��_]��_?����X��G ������؃��}@aj��`����}]��]��_>��}N� ��]��]��_x�;x�$v�.���]��]��_��|]��_4�(�(�9�)�_]��_]��_J�/v�1��/��a]��_�%aa]��_]��_]��]��_�n����*^��`��]��]��_�CJ�X�_��_��o�ҽҁӷ���������``��[`��]��]��_�ʂ��фۀ����]��]��_�˂ς�������悼]��_+�������7��7��]��]��_]��_?�ʀ�.��J �������<�M��@��j�=`���U��`��>�X��I�^v�mv�b.���]��]��_��h`�ʆ�J�v*?E������*`���x��������v��v��.���]��]��_��`����a`��`�ʅ�������x���������a`��`����>���I��!x��x��v��.���]��]��_��������a`��]��_����a`�ʆ'>�ۆ=w��.�悼+��J��*?=w�.�悼�.��_v�Bv�7.���]��]��_��`����4�J�J�f�K*`��_J�Qv�_x�[v�Q.���]��]��_����\��%a`��]��_��V_�)��J��)��������@Vj��`������]��_J��5�Ɔ�]��_v��.�悼]��_��#��������0���І�'�C�����]��_]��_Ԅ֎� �4�����1�4 ��� ���%���:�T�a�|������� �����D��b `��[]��_���^�j���c��`�����������d]��_����瀁`��������j��`��`���3�F�F���O���U�d]��_�b`���m`��]� _>����=�ƅ�v��.`��������Lv��v��.�d]��_�`��������0����A�x�������L�����Aa`��`�����v�������0`���� �F���5�&�&�j�Ă��1�j�7�c`���J�d]��_�W`���c`��]� _?����!����-����>����I �&���������@����`��J��x��v��.`���v��.`���a`��`��������ʴ�@j��`���̴���c`��_>�ش�I��!��v��v��.�d]��_�`����v��.�c��`���a`��`�ʅ�>��8=0� ���v�+.�d]��_�?=�I�V��Y��.+v�l.`���J�yx��v��.�d]��_�x��v��.`��������a`��`����a`��_���������@(j��`��������c`���� _\>�е�I��!��v��v��.�d]��_�`����v��.�c��`���a`��`�ʅ�>���0=0����v�#.�d]��_�?=�A�V��Q��4.+v�d.`���=x�wv�q.�d]��_�(x�~v�x.`��������4a`��`���������?a`��_\���������@.j��`��������`����`������]��_����`��j��`��\>���I��!�v�v��.�d]��_�`����v� .�c��`���a`��`�ʅ�>��P=0�!�'��v�C.�d]��_�?=�a����q��c��x��nv�}.`���=x��v��.�d]��_�.x�������c�����ca`��`����x�������c�����na`��`���������y����܊^`��`��]��_`��\��������J@�5���J��`����`��j`��]� _>�¹J=�������م����������v��.`���J���5_v�.�c��`���v�#.�d]��_�x�1��+�����3���a`��`����x�>�:���`����@���a`��`������O�`�@j�P`���g��q#`��j`��\>�z�I��!��v��v��.�d]��_�`����v��.�c��`���a`��`�ʅ�>����=0������v��.�d]��_�?=��v��.�d]��_�v��.`���v�.`��������� ��(� @��j�`���,� �F a__`��j`��\>�P� I�V!�hv�av�Z.�d]��_�`����v�k.�c��`���a`��`�ʅ�>�y��=0������v��.�d]��_�?=#�������܈�����j��a`��`��`��+a__`��=��_v��.�d]��_������a__`��v��.`���x��v��.`���v�.`���a`��`�����!�=�B�@�e�K��P`���[`���w a__`��\>���I��!��v��v��.�d]��_�`����v��.�c��`���a`��`�ʅ�>����=0������v��.�d]��_�?=���_v��.�d]��_������9�����D����O�"������@�f������`����`����#`��j`��\>����I��!��v��v��.�d]��_�`����v��.�c��`���a`��`�ʅ�>��=0�����v� .�d]��_�?=�)����9��-��@��8v�E.`���=�]v�e.�d]��_�x�xv�r.`�����z��-a`��`����x��v��.`��������8a`��`���������C�#�ǽ̾d@�g�ؾd��`����`��\>���d=�������㇁���v�.`���=�.��_v�'.�d]��_�x�Fv�@.`�����H��a`��`����x�Zv�T.`�����\��a`��`�����1�����@j��`���������`��\>���=0�����b'���$� ��p@��j� `����p�"_\>�+�p=0�1�7�b'�h�%�u����@��j�v`��������c`����_\>����=0�����b'�h�&�����@n@��j��`���@�@n�@ c`���@��]��_\>�@)�@n=0�@/�@5�b'�h�'�@s�@��@�@��j�@t`���@��@��@���]��_\>�@��@�=0�@��@��b'�h�(�@��@��A^@��j�@�`���A�A^�A `��`��>�A�A^=0�A�A �b'�i�)�Ac�At�A�@��j�Ad`���A�A��A�ma_`��\>�A��A�=0�A��A��b'�i�*�A��A��Bt@��j�A�`���B �Bt�B$ma_`��\>�B*�Bt=0�B0�B6�b'�i�+�By�B��B�@��j�Bz`���B��B�\>�B��B�=0�B��B��b'�j�,�B��B��CG@��j�B�`���B��CG�B�c`��_>�B��CG=0�C�C �b'�i�-�CL�CZ�C�@��j�CM`���Cd�C�_>�Cg�C�=0�Cm�Cs�b'�i�.�C��C��D1@��j�C�`���C��D1�C�`���C�`��\>�C��D1=0�C��C�b'�i�/�D6�DG�D�@��j�D7`���DS�D��DX`���Dc`���Dt��]��_\>�D��D�=0�D��D��b'�iٕ����?����߷���j�E����.���d���2����>��+s�6�k�� `��[]��_,���ۂl�܂l����������m��m��!��!�偭�恭�灮�聮�遯�ꁯ�끰�쁰�큱������������e��e���n���n���o���o���f���f���g���g���p���p���5��5��I��I�������s�7�q�O ]�R_]�R[]��_���� �e� �e� 2���+�/��a�r�;�� `��[�/���]��_�>_�Z a__`��`��J�l�w __�����56j��^`��[___�����Q�����F���/��a�s�/�� `��[�/���]��_a_a__`��`��J�/4�/�/���>_�Z a__`��`��J�/�/��_��/��߁�/����/��*�������pa�t���p `��[`��[�����]��_��_��a__�� a__`����`��j�`��� `��j`��`��J��& __��F�윂�L�츃�S��ʁ�\�쭄�e�����l��������pa�u���p `��[�����]��_^`��[_a__a__`��`��`��`��J��4�����p`��[��_��a__�� a__`����`��j�`��� `��j`��`��J������__�����o�����ق����䃅��������� ��������O�S�8a�v�z�8 `��[]�R_]�R[�S���]��_��_��a__��`��j��`����`��j`��`��J���� __��������4� � �"� ��_���_`��J�x�����9���� ��Ea_`������$�����-��ބ�4������S�8a�w�S�8 `��[�S���]��_^]�R_]�R[_a__`��`��`��J�S4�S�S�8]�R_]�R[��_��a__��`��j��`����`��j`��`��J�S�S��__��S�チ�S��-��S��8��S��J��S��]���7�;��a�x�E�� `��[�;���]��_�H_�d a__`��`��J�v�� __������6j��^`��[___���������������;��a�y�;�� `��[�;���]��_a_a__`��`��J�;4�;�;���H_�d a__`��`��J�;�;��_��;��~��;�񾂋;������L�P�a�z�f� `��[`��[�P���]��_�t_��a__�� a__`����`��j��`����`��j`��`��J���� __�����;�����W����i�� ��L�����������P�a�{�P� `��[�P���]��_^`��[_a__a__`��`��`��`��J�P4�P�P�`��[�t_��a__�� a__`����`��j��`����`��j`��`��J�P�P��__��P����P��x��P�󃃎P�󕄎P�󫅎P�����Ƒʒ�a�|� `��[]�R_]�R[�����]��_��_� a__�`��j�'`���/`��j`��`��J�>�I __��g��O��m��k6j�t^]�R_]�R[__`��!_�����`�����}���������ʒ�a�}�ʒ� `��[�����]��_^]�R_]�R[_a__`��`��`��J��4���ʒ�]�R_]�R[��_� a__�`��j�'`���/`��j`��`��J���ʂ�__�����6�����������������„��������'�,��a�~�:�� `��[�,���]��_�_ga`��_\\>�g��E�m�v�|c`���x�������~v�������L`����a`��`�ʅ������~x�������~�a`��`����>����=}�������]�����~x�������L�����~a`��_��a`��_\���,��a��,�� `��[�,���]��_aa`��_\\J�,4�,�,���_ga`��_\\J�,�,��_��,��Z��,������f�k��a���w�� `��[�k���]��_��ga_`��\>����AE������c`���x�������v��������`����a`��`�ʅ������x�Ȃ�����a`��`����>�̔�I��!}�߁�����x�䀔���������a`��_��a_`��B��?���k��a���k�� `��[�k���]��_aa_`��\J�k4�k�k����ga_`��\J�k�k��_��k�����k��/���ٕޖ�a���� `��[�����]��_�ga`��_`��\>���AE�$�-�3c`���x�>��8���v�@��@���`����a`��`�ʅ���H���x�M��H����a`��`����>�Q��I�Y!}�d��^�����e���x�p��l�����q���a`��_��a`��_`��B�z?���ޖ�a���ޖ� `��[�����]��_aa`��_`��\J��4���ޖ��ga`��_`��\J���ނ�_���������������ĖЗta���ݗt `��[��`��[�����]��_����a`��__]��_>O��aa]��[[[`��a]��[[[`��>N��`���N��[N��]��_���IN��a`��__���ZO��[�ݗt��]��[��[��[`��>>��tE���#c`���x�.�(��L v�0��0���`����a`��`�ʅ��8��L x�=�8��L �a`��`����>�A�p>=w���慾}�V��O����W��L x�b��^����c��L a`��_��a`��__��M�I)J�t*J���J��_�������Зta���Зt `��[�����]��_^��`��[a`��__]��_J��4���Зt��`��[����a`��__]��_J���Ђ�__�����r��������������a���̘� `��[�����]��_��ma`��_`��]��_>O��aa]��[[[`��a]��[[[`��>N��`���N��[N��]��_���8Nma`��_`�����IO��[�̘���]��[��[��[`��>>����E�� �c`���x����9 v������`����a`��`�ʅ��'��9 x�,�'��9 �a`��`����>�0��N�<�D_x�J��F����K��9 a`��_��I�Y}�a��]����b��9 �i��� a`��_`��>=w���慾�y��� ��M�s)?J��*J����J��_���q������a������ `��[�����]��_aa`��_`��]��_J��4��������ma`��_`��]��_J������_�������������Ϙۙ�a���ꙩ `��[�����]��_�ma`��_`��]��_>O��aa]��[[[`��a]��[[[`��>N��`���N��[N��]��_��*Nma`��_`����;O��[�ꙩ��]��[��[��[`��>>���E�!�*�0c`���x�;�5�+ v�=��=��`����a`��`�ʅ��E�+ x�J�E�+ �a`��`����>�N��N�Z�b_x�h��d���i�+ a`��_��I�w!}����|�����+ ���� a`��_`��>=w���慾���� ��M��)?J��*J���J��_��c���ۙ�a���ۙ� `��[�����]��_aa`��_`��]��_J��4���ۙ��ma`��_`��]��_J���ۂ�_����u��������z���=a�����= `��[��`��[�����]��_��~a`��_]��_]��_>O��aa]��[[[`��a]��[[[`��>N��`���N��[N��]��_��'N~a`��_]��_��8O��[���=��]��[��[��[`��>>�כ=E�����c`���x�����2 v�������`����a`��`�ʅ���2 x���2 �a`��`����>� �9>=w����}������ �2 x�+��'���,�2 a`��_��a`��_]��_��M�)J�=*J���J��_��e�����=a�����= `��[�����]��_^��`��[a`��_]��_]��_J��4�����=��`��[��~a`��_]��_]��_J������__����]��������o�t��a���}�� `��[�t���]��_��`����`���� a__`��\>����=��__����,6j��^`��[___����S����=����H���t��a���t�� `��[�t���]��_a`��`��a__`��\J�t4�t�t����`����`���� a__`��\J�t�t��_��t�聛t�)��t�4��t�?�������;a�����; `��[`��[�����]��_��a__�� a__`����`��j��`����`��j`��\>��;=� __�������Ƃ�#�؃�,�3� �����;a�����; `��[�����]��_^`��[a__a__`��`��`��\J��4�����;`��[��a__�� a__`����`��j��`����`��j`��\J������__���� v���� ق��� 냜�� ���� ���֝۞�a������ `��[]�R_]�R[�����]��_�a__�#`��j�+`���3`��j`��\>�9��=�?__��Q� ���W� �6j�^^]�R_]�R[__`��!_��q� ���x� ����۞�a���۞� `��[�����]��_^]�R_]�R[a__`��`��\J��4���۞�]�R_]�R[�a__�#`��j�+`���3`��j`��\J���ۂ�__���� p���� ؂��� ꃝ�� ������?a�����? `��[�����]��_^`��`��`��\J��4�����?��`����`����#`��j`��\J������_���� i���� ����� ����� ��������?a�����? `��[�����]��_��`����`����#`��j`��\>���?=������ 4��� ?v� �� � #`����=���"� #��(� 4��/� ?��4� J���x�}�]a�����] `��[�}���]��_��`����`��\>���]=�������� 킟�� �v�ˀ��� �`����C��x�偟�� ����� �x�炟�� ��a`��`����a`��`�ʅ�>��YN����,_x���� ���� �a`��_��=x���� �(��� �x�%��!� ���&� �a`��_��a`��_\��=x�6��2� �(��7� ���>��a`��_\��=��I� �x�O��I� ��a`��`�������}�]a���}�] `��[�}���]��_a`��`��\J�}4�}�}�]��`����`��\J�}�}��_��}����}����}���������ta�����t `��[�����]��_����`������`��\>���t=���V����-����'��=��V���9�� �'��N�%�),_x�/��+���0�-a`��_��=x�A��=�(��B�-x�P��L���Q�9a`��_��a`��_\��=x�b��^�(��c�9��m��a`��_\�������ta�����t `��[�����]��_a`��`��\J��4�����t����`������`��\J������_����Z������������>�K� a���P�  `��[�K���]��_�U`���b`��j`��]� _>�h� =��n������������v�������`����N������]��_�����I��%������g]� [J�����_����g�������`��?J�����3_�� �����`����K� a���K�  `��[�K���]��_^`��`��]� _J�K4�K�K� �U`���b`��j`��]� _J�K�K�_��K���K�Q��K�\��9�>�3a���D�3 `��[�>���]��_�Me]��_�a�g]��_j�r]��b`��>���3I��!��v�������`����v�������`����a`��`�ʅ�J��*?E���å�*`���x�̃���Uv�΀����`����a`��`�ʅ�����Ux�׃���U�a`��`����>�ۦI��!x�����Ix�����������Ua`��_��x��������Ua`��_��a__`�ʁ�J� *?J�$)��>�3a���>�3 `��[�>���]��_^]��_]��_`��J�>4�>�>�3�Me]��_�a�g]��_j�r]��b`��J�>�>�_��>�g��>����>����$�6�a���<� `��[�6���]��_�A`��]��]��_>O��aa]��[[[`��a]��[[[`��>N��`���N��[N��]��_��*N`����;O��[�<���]��[��[��[`��>>�O�I�Ux�`��Y���a`��`�ʅ�=0�e�v����|�Ô+'?E������*`���x�����V v�������`����a`��`�ʅ����V x�����V �����a`��`����>�ʩ>=w���慾�؃_��������V ���`��x�����V �����a`��`����v�������`������M��)J�*J���J��]��_��]��6�a���6� `��[�6���]��_a`��]��]��_J�64�6�6��A`��]��]��_J�6�6�_��6����6���������a��� �� ]�R_]�R[�����]��_� _�+ a__`��j`��`��J�>�I __��i�C6j�o^`��[___5���ya__`����y�_#�y��y��6j��^]�R_]�R[__`��!_�y��a__`��a__`������T�����a������ ]�R_]�R[�����]��_^_a__`��`��J��4������� _�+ a__`��j`��`��J�����_����{����������������)a�����) ]�R_]�R[�����]��_��_�� a__`��j`��`��J���� __����E6j��^`��[___5� �a__`�����a#�����6j�^]�R_]�R[__`��!_���a__`��a__`����!�V� ���)a�����) ]�R_]�R[�����]��_^_a__`��`��J��4�����)��_�� a__`��j`��`��J�����_����}����‚����� �ͮү�a���ۯ� ]�R_]�R[�����]��_��`����`��� a__`��j`��\>���=�$����4�X��;�cv�@��@�G`����=�X__��s�G6j�y^`��[___5����a__`������n#�������6j��^]�R_]�R[__`��!_����a__`��a__`������X����c� �ү�a���ү� ]�R_]�R[�����]��_^`��`��a__`��\J��4���ү���`����`��� a__`��j`��\J���҃ _������������� ����f׏����m�J�w���Y� �����&�5�����d����M�]P�8�� Q b K D � �_�5���BxLN�f2 �8���������9�I�X�(�� `��[`���<�?�X�H�8[1[j^ `��[a__`��]�9_"�F�S�[��Q�h�� `��[�~-a__`��j`��]�9_J�h��_��~� ��@�ӆۆ�B���`���A���Bh��`���B�G�P�ZBi�Z�Z`���H���0Bk�&�0�)�}_`���C������B���ʊ�]��_�I�|����B��������_\�J������B���Nj���"]��_\�D������B_����_�K����B������_�L������B��������_`���M��"�-B�=�+�-]��_�N�b�g�nB���l�n\�O�a�i�qB���o�q]��_�P�n�v��B������]��_�Q���&B���$�&]�_ �!/!R!u!�!�!�""M"p"�"�"�# #6#_#��R�\�b�C�� `��[`��]�9_�U�\���������8`��j��`��#�Y�`����-^__W��_`���V�]�h�M�}�����8]��_�V��_j�f`��#�W�^�i������ƒ8`����X�_�j�m�������8`������!�!���2���H-a__`��j`��]�R_?�Y5�u�ja__`����j�$�#�j��j�$�j�xa`��`��`���j�$�a__`��a__`�� �!���m������@���8������c`��_J��5����_x��v��.���8]��_�]����%�a`��_��#������%�5`��+#��%�&����%�_�%�__���%�_`��_�u�Ǟ؟@��j��`���۟��_\>��=w��.���8x��v��.���8`���_�a`��`�����j=x�.���8�� �&Ua_\�o�v��.��@��j�`���4���A"]��_\>�K��N�U�^��`���>N�{��]��_v�{��{�&�a]��_�%Ex�{��'��a`�ʆ'>N�p_v����'V_�)>����=����'�=x��.���8����'ba_\�o=w��.���8x��v��.���8`���_����'a`��`�����j�w���@@��j��`�����@\>���@=w�.���8x�v�.���8`���_�a`��`�����j=w�.���8j�#]��b$�h=w�1.�ƒ8��i�x�E�V��@kj�F`���^���a�}_`��J�lx�|x�l.���8��t�(�a_`���pO�a`��`�ʅ��a���Ԣ @��j��`���� ]��_J���郋_.�b��#�}@_j�`���)�}_>�)�}I�/�;v�3.�ƒ8`���^�a`��`�ʅ�=0�A�G��'�C?J�ex�l.���8�a`��_�m�c������@hj��`������`��J����v��.�ƒ8`���^�a`��`�ʅ��d���Ȣ�@ij��`���Ӣ�`��J��!��v��.�ƒ8`���^�a`��`�ʅ��e���� @j��`���� `��J�v�.�ƒ8`���^�y��"��@��j�`���(���+_`��>�4��N�>�Dc`��x�F.���8��N�*�a_`���pI�\x�f��`�*��a`��`�ʅ�J�k*?=w�}.���8x��v�}.���8`���_�a`��`�����jN����`_x��.���8a_�qI��x������*�v��.�ƒ8`���^a`��`�ʅ�>�ʤlN�֣�`��5���_����+g5���_����*�}��v��.-^__W��_`���`����+ӄ���+�^__W��_`��I��x����+�K�a`��`�ʅ�>� �5=x�.���8��!�+g��'�*�a_`��\�r>�<�f=x�F.���8��R�+g��X�*�a_`��\�s?J�r)�z�����Y@�=j��`�����Y]��_>���Y=w��.���8x��v��.���8`���_�a`��`�����jN�ݥ���]��_v��.���8]��_�]N����`��v��.�ƒ8`���^=w� .���8j�]��b$�h=w�#.�ƒ8��iJ�4x�Ox�B��;�-N����G�-va`��]��_����_a]��_���{�^�l�X@��j�_`���w�X_>�z�XI����v��.�ƒ8`���^�a`��`�ʅ�=0������'�C?=w��.���8x��v��.���8`���_�a`��`�����jN�Ԧ���_x��.���8�a`��_�mN����`_x��.���8a_�qI�x�v�.�ƒ8`���^$�a`��`�ʅ�>��A=x�'.���8��3�.Гa_`��\�s?J�G��N�.��|�]�q��@��j�^`���w��]��_J�}5�}�}]��_x�}.���8a]��_�nR=x����}�/���v��.-^__W��_`���`^a__`��\����}�/��}�����L@��j��`�����L]�_>���LN�˧���]��_�ц�_v��.-^__W��_`���`E������*`���x����0�v�.�ƒ8`���^a`��`�ʅ����0�x����0��a`��`����>��8=x� ���0R��x�$.���8��/�0�a`��_�ma_`�ʆ�J�>��E�0R�~�Q�e��@��j�R`���t��]��_J�zx�z.���8a]��_�n�n������@���8����]��_J��RN��]��_���1_�E������*`���x�ȁ���1�v��.�ƒ8`���^a`��`�ʅ�����1�x�ԁ���1��a`��`����=x�؀���1ـ�x��.���8����1�a`��_�ma_\�2����1���c�v��@yj�d`���~��`��>����J��x��x��v��.���8]��_�]��v��.�ƒ8`���^a`��]��_��ya`�����o���y@���8��y�_\>�'�yI�-�9v�1.�ƒ8`���^v�Cv�<.���8]��_�]`����a`��`�ʅ�=x�K.���8a\�t?=x�X.���8��b�3S5�r�k`��v�k.�ƒ8`���^5�k�k`��w�k.�ƒ8x�r��k�3��a`��`�����i��k�3�a_`��\�r�p�I�M�#@���8�T�#�W�}_`��>�_�#I�e�qv�i.�ƒ8`���^�a`��`�ʅ�J�wx�~� a`����?N������`���D�A>����N����c`��x������4��a`��`����N����_x��.���8����4�a`��_�mN�խ�`��5���_����55���_����4g}��v��.-^__W��_`���`����5E����5Z^__W��_`��I��x����56K�a`��`�ʅ�>��OI�"�!���56�a`��`�ʅ��1��)�5��4�4ga`��`�ʅ�J�<��C�4�?N������`��x�ҁ���4����a`��`���^I��x������68Kv��.�ƒ8`���^a`��`�ʅ�>��G=�� �4����68B�5??D��>���yC��v������4���`�ʆ�>���=���4�x����4��a`��`����=��d�4�x�m��d�4��a`��`����x������4�$v��.�ƒ8`���^a`��`�ʅ�!�ف���4��a`��`�ʅ�J�x�� a`�����q�(�*��@���8�5��_>�8��N�B�L��`��x�Vv�N.�ƒ8`���^�a`��`����N�c�h`_x�j.���8��u�7�a`��_�m=x��v��.���8]��_�](����7�+a`��_\��=w��.�ƒ8����7��iJ������7��r������@���8������_��c`��\>����AC��x�с���8�$�a`��`�ʅ�>�ֳ�N�����`��x��x������8��a`��`�������a`��`���_N� ���_x�.���8�� �8�a`��_�mI�4x�T5�C�C_��C�8�5�L�L_��L�9&}�Bv�8.-^__W��_`���`��C�9a��L�9v^__W��_`��$�a`��`�ʅ�B�Y?=x�lv�f.���8]��_�](��m�8���v�9&a`��_\��=����8�����8�=x��v��.���8]��_�](����8�����8�a`��_\���s������@���8������_��c`��\>�ĸ�N�δ���`��x��x�恴��:����a`��`���^�a`��`����C��x� ����:�v� .�ƒ8`���^a`��`�ʅ�>��� N�!�0��`��x�B��2�:��a`��`����N�Q�[��_x�].���8��h�;Ca`��_�mN������_x��.���8����:�a`��_�mN����`��5�ɵ�_����;q5�Ե�_����;�}��v��.-^__W��_`���`����;⇵��;�^__W��_`��N����`��N���_I�x����;��a`��`�ʅ�>� �n=�*��u��=����A=x�v�.���8]��_�](���:���"�:�a`��_\��J�3?=x�Ov�I.���8]��_�](��P�:��Y�vv��.�ƒ8`���^a`��`�ʅ�>����N� ���_x�.���8���>va`��_�mN�7�<`��5�I�I_��I�:�5�R�R_��R�>�}�Hv�>.-^__W��_`���`��I�?��R�?1^__W��_`��I�`x�i��d�? $�a`��`�ʅ�>�n��=x�~v�x.���8]��_�](���:�����>�a`��_\��=����:�����>v??=x��v��.���8]��_�](����:�����:�a`��_\���t�B�G�A@���8�L�A\>�O�AN�Y�e��`��x�yx�uv�nv�g.���8]��_�]`�������a`��`���^�a`��`����I��x������@zj��`��#a`��`�ʅ�=����@zj��`��#?N�ι���]��_�ن�_����@z=x� ���A.�v�.�ƒ8`���^v�.���8]��_�]^`��`��]��_`��\��=w�,.���8��5�A�h%c&0&�'�(v(�)0)�* *[*�,�./X01U1�2�344H7�8t:�@PA��������^�� `��[]��_�����ں������8]�R_����� ��� ���]�R_]��_?����Bm �������+�\@aj�`���4�\]��_J�7�7��_v�U.���8]�R_��B�B����a�g�n�� `��[`��]��_�������������8]�R_�����ϻ老�ȃ8`���������������8_+��������� ���Ƀ8`��x�� a`���������t�)�t�/��]�R_]��_?����C���v�b��[�C����8`���_ ������y����@��j�z`������`��>����I��!��v��.�ȃ8`����v��v��.���8]�R_�����8`���_a`��`�ʅ�>�׽=0�����v�.���8]�R_��?N��"��`��x�+v�$.�Ƀ8`�����a`��`����I�4"x�:�K��=�D�a`��`�ʅ�x�T��J�D�v�]v�V.���8]�R_��`���ea`��`�ʅ�>�e��=w�m.��8x��v�v�x.���8]�R_�����8]��_�]����D�a`��_����=w��.�Ƀ8����D���J��)?=w��.��8+��=w��.�Ƀ8x�� a`������J��*�����l@Vj�`����l_J�'#x�.v�'.�Ƀ8`�����a`��`�ʅ�0�4�:��'�C5�_�V_v�V.��8_��#�V��V�Fb5`��+#��F�&�g��F�_�F�__�V�Fb_`��__D E�F�F� f#�BCF�F� ���������$�*�,-�� `��[`��]��_�� ]��_? ��=�������8@�����8��_\>�£8=x�.(5�'�!`��v�!.`����5�!�!`��w�!.x�'��!�G��a`��`�����#��!�G���-�G�a`��_\�����=�B�@���H��U��]��_\>�_�N�i�k*`��v�r.`����>N����]��_v������HGa]��_�%Ex����H���a`�ʆ'>N��_v����H�V_�)>��� @"��v��.`��������Hca`��`�ʅ�0���ą�.����=x��.������H�a_\�+=���Hcx����Hc�a`��`�������9�A�g@���H�g��`��[]��_J�N�S�4__.���D��D��D�@y�D��D�`��J�D��D��Q.'��'�����k�m� @���w� _>�z� I����v��.`�����a`��`�ʅ�>����=0������?N�ͩ���_x��.x��v��.`�����a`��`����a`��_��=w��.x��v��.`�����a`��`�����#J�����Jb�����I@_���I_>���II���v��.`�����a`��`�ʅ�=0� �&��?J�7x�B.�a`��_�����N�W��@_�\���_ _\>�f��I�l�wv�p.`�����a`��`�ʅ�=0�}����?=x��.(�����K|a`��_\�������Ǒ*@`�̑*_>�̑*I����v��.`�����a`��`�ʅ�=0������?J�x�.x�"v�.`�����a`��`����a`��_�����/�8��@`�<���? _\>�F��I�L�Wv�P.`�����a`��`�ʅ�=0�]�x��?=x��.(x��v��.`�����a`��`��������L�a`��_\�����͍ݍ�@a���]��_J�����_.�����(@b��(�c`��_J�x�!.��"�Ma`��_�����-�9��@d�C���Pe]��_]��_J�`�`��_.����M��������}@f���}��ga_\\>���}N�Ŏ�`��v��.`����E�����*`���x����NY����N<a`��`�ʅ�����NYx������NY�a`��`����>��y=}����N"x�.���NYa`��_��a_\I�!�*��#�N�:�s=0�D�J��.?��������@hj��`������`��J����v��.`�����a`��`�ʅ����ď͏�@i�؏�`��J��!v��.h`�ʅ��������F@j���F_>���FI����v��.`�����a`��`�ʅ�=0�����?I��x�v��.`����$�a`��`�ʅ�=0� �%��?J�4x�?.�a`��_�����K�P�R@k�X�R�a`��`��>�j�RN�t�{`��v��.`����E������*`���x������P�����P�a`��`�ʅ�����P�x������P��a`��`����>���<I����x��.����P�a`��_������P~a`��`�ʅ�J��)?I��!�큒��P�v��.`����a`��`�ʅ�>���6=0�� ��.?J�B*���W�\�\@l�a�\�gma_`��`��>�x�\N����`��v��.`����E������*`���x������Q�����Q�a`��`�ʅ�����Q�x������Q��a`��`����>���GI��!}�΀���Q�x��.����Q�a`��_��a_`��J��*?I��!������Q�v�.`����a`��`�ʅ�>��A=0����.?J�M)���a�f�c@n�i�c�oma_`��`��>���cN����`��v��.`����E������*`���x������S5����Sa`��`�ʅ�����S5x������S5�a`��`����>�ŕMI��}�Հ���R�x��.����S5a`��_��a_`��J��)?I��!������Sv�.`����a`��`�ʅ�>��G=0����.?J�S*���h�j��@o�t���zma_`����pa_j`��_>����N����`��v��.`����E���Е�*`���x�ك���T�����Tna`��`�ʅ�����T�x�䃕��T��a`��`����>�薎N���_x�.���T�a`��_��I� }����T9���T�a_`��J���%�T�?I�4!�?��8�Tnv�G.`����a`��`�ʅ�>�O��=0�Y�_��.?I��!������TLJ��}�����TLa_a_?=0���؅������o@q���o��ma_`���pa_j`��_>�&�oN�0�7`��v�>.`����E�J�S�U*`��x�^��W�V�a`��`����x�e��c�V5O�a`��`�ʅ���k�V5x�l��k�V5�a`��`����>�p�N�z��_x��.����V5a`��_��I��}������U�����V�a_`��J������V�?I��!�ǂ���Vv��.`����a`��`�ʅ�>�ט=0�����.?I�!�'�� �U�J�0}�=�7�U�a_a_?=0�E�`�����t�v��@r������ma_`����pa_j`��_>����N����`��v��.`����N�� s_N���t`��*E�� �*`���x����X���W�a`��`�ʅ����Xx� ���X�a`��`����>�$�LN�.�6_x�<.��=�Xa`��_��I�G}�O��K�W���P�Xua_`��>�Z��I�d��h�X>�t��=0������?=����X)=����W�����Xu?I��!������W�v�.`����a`��`�ʅ�>� �F=0����.?I�R��V�XJ�b��i�W�?I�t!���x�W�J��}�����W�a_a_?=0���������̚ӛx@u�כx��v`��j��`��`��>��xI���v��.`�����a`��`�ʅ�J�'?N�$�+w`��5�-�-`���-��R=x�=��-�Z x.��L�Y�^]��[`��\���-�Z J�\x�j��c�Y�ya`������}����@z������ma_`��]��_J�����_.����Z����ɛ՜@{��`��[]��_J����_.�����M@|��M`��[�}a__]��_J�,�,� __.��K�[1���R�^��@~�g��`��[�t}a_]��_]��_J����� __.����[��������@�������a____>�ݞN���`��v��.`����I�� ���\�a`��`�ʅ�=0��-��?N�@�F _x�L.�a`��_��E�U�^�`*`���x�g��e�\���i�\a`��`�ʅ���q�\�x�r��q�\��a`��`����>�v��=��~�\V}������[�����\Vx��.����\�a`��_��a___I��!������\v��.`����a`��`�ʅ�>����=0���Ѕ�.?J��� �\V�����]@���#�]`��[�&��_�6��a____>�[�]N�e�k _��m�]�N����`��v��.`����E������*`���x������^����]�a`��`�ʅ�����^x������^�a`��`����>���G=����]�}�Ձ���]�����]�x��.����^a`��_��a___I��!������]�v�.`����a`��`�ʅ�>��A=0����.?J�M��T�]����b�n��@���r���w��`��]��_J�����_.����_+�������@�������ma_`��]��_>�נJ����_.����_d��� ��o@����o�"��`��]��_J�2�2�_.��N�`����_�_�'�����t����@��������ma_`��]��_>����J�����_.����`���֠ޢ@��������`��j��`�� ]��_>���I�v� .h`�ʅ�J���_����4�`x?N�G�M__x�S.�a`��_��N�`�g��]��_�i�_v�}.`��������`�������`xE������*`���x������a0v��.`����a`��`�ʅ�����a0x�ǃ���a0�a`��`����>�ˡ�=x�ق���`�(����a0x��.����a0a`��_��a`��_\��J������`�������@�����]�_>���N�$�+��]�_�_E�;�D�F*`���x�M��K�b=v�O.`����a`��`�ʅ���W�b=x�X��W�b=�a`��`����>�\�}=x�k��d�b��x�s.��t�b=a`��_��a_`�ʆ!J������b������@��� ���)`��`��>�2��E�8�A�C*`���x�J��H�c*v�Q.`����a`��`�ʅ���Y�c*x�Z��Y�c*�a`��`����>�^��I�f�rx�n.��o�c*a`��_����u�ca`��`�ʅ�>�~��=x��.��������c*x������c*�a`��`����a`��`��\�-J��)?J��*���Z�_�w@�����h�w�m`���x`��\>�}�wN����`��v��.`����@x���K����dBa`��`�ʅ�����@x�ƀ���dB����dMa`��`�ʅ�����@x�݁���dMK����dca`��`�ʅ��٥�N�����`��x������dM����dBa`��`����E� ��*`�����dMx����e2���dca`��`�ʅ���'�e2x�(��'�e2�a`��`����>�,�R=x�8.(x�;��9�e2��=�d�a`��`����x�I.��J�e2a`��_��a`��_\��=w�].x�m��f�dc��o�d�a`��`�����#���|����@��������ma_`��\>����=x��.��������fH*aa_`��`��\�.���Ʀ˧ @���֧ ��ma_`��\>��� =x��.��������f�)aa_`��`��\�.����� @������ �!ma_`���7��`��\>�G� N�U�^��]��_�c�1_�N�o�v`��v�}.`����E������*`���x������g}����g`a`��`�ʅ�����g}x������g}�a`��`����>���}N����_x��.����g}a`��_��I����}�׀���g����g�a_`�ʁ���g(a`��`�ʅ�>���=x�����g?���� �g�a_\�2?I�#!�.��'�g`v�6.`����a`��`�ʅ�>�>�w=0�H�N��.?I��!��v������g?`����v��.`����a`��`�ʅ�>���=x��..�v�ɂ���g?`��������g?^`��`��]��_`��\�3=w��.v������g?`�����#?�����4@����4\>��4=w�&.��#�����n@����n�3 a__`��j`��\>�=�n=�H�7_.5�[�Sa__`����S�i�#�S��S�i�j�^a[[`�� �S�i�a__`��a__`�������A@���A�#`��j`��\>� �A=#����jT���jT���+`��I�(�3�,�jT`��=0�<'��?N�z��`��v��.`����C��x������j�$�a`��`�ʅ�>���=N����%`��x�����jT`��&����j�a`��`����=����j�x�ށ���j��a`��`����N���,_x��.����j�a`��_��=x� .(�� �j�x�.���j�a`��_��a`��_\��=x�,.(��-�j�4�kRa`��_\�����F�R�@���W�]�8`��_>�Z�J�`�g�;_.��������@������e]��_]��_J��RN��]��_���<_.=x������lm������lJa]��_\�=����lm�����ɭ�@���Э���`����`��j`��]��_>���N�����`��v�.`����=#����l䉭�l䂭�m +`��I�(�0�,�l�`��=0�9'��?=�~������l����l�`������m J�����>_x��.������l����l�`��a`��`��]��_�?���ڭ�q@����q��`����`��]��_>��q=�����$�m聮+�m�v�5.`����J�B�I�_.��b�m聮i�m����v�{�@�������`����`��\>���=��������nr����n}v��.`����I��x���n}$����nra`��`�ʅ�>��=x��.��������nr���n}a`��`��\�-?�����g@]�%�g�*`���5`���>^_j`��\>�E�gN�ԯ� _5_����oE#��op5_��op#��o�&����o�_�o�__�op__=�������o/�� �o:v�.`����E�$�-�/*`����1�o/x�:��8�o���<�o:a`��`�ʅ���A�o�x�B��A�o��a`��`����>�F�c=x�R.(��S�o���X�oba`��_\�����l�q�1@.�y�1�~`����`������]��_����`��j��`��\>���1 =�ʅ�����p�����p�v��.`����N���`��x� ���p��� �p�a`��`����I��!���q�a`��`�ʅ�J�'?=�>�@��O�p�'��N�u��]��_N����`��I��%������p�]��_>�߲=����q~���p�]��_=���q����p�>�&��=��.�q~x�Sx�C��:�p�����H�p�a`��]��_�B����*^��`��]��_�C=��r�q��I��x��x������q�����qa`��`����$v������q~`����a`��`�ʅ�>����=0���ۆD?I��x������q����p�a`��`�ʅ�>���E�Q�Z�\*`��x�e��^�q�a`��`����x�l��j�r�O�a`��`�ʅ���r�r�x�s��r�r��a`��`����>�w��=x��.(x������p�����r�a`��`����x������q~x������q�����r�a`��`����a`��_��a`��_\��>���-E���ҳ�*`���x�ۇ���s�����qa`��`�ʅ�����s�x�懳��s��a`��`����>��'=x��.(x������p����s�a`��`����x����q~x����q����s�a`��`����a`��_��a`��_\�����6�;�@���G��L`���W`���h��]��_\>�u�=��������t�����uv��.`����I��������t�v��.`����a`��`�ʅ�>�δ�=x��.������ua]��_\�EJ��?I�!%����u]�F[>�0�`=��8�ux�R��F�u��^��`��]��_�C?N�j�w��`��x�}��y�u���t�a`��`����N������`��v������u`���GI��x�ƃ���u�O����v,a`��`�ʅ�>�׶�N�����`��x������t�����v,a`��`����=x�..���t��� �v|��+�u^`��`��]��_`��\�3I�?x�P��C�u�$��R�v,a`��`�ʅ�>�`��=x�j.������t�v|���ua`��`��\�-?I��������uv��.`����a`��`�ʅ�>���nN����*`������t�>N����]��_v�߂���ua]��_�%Ex�߆�w���a`�ʆ'>N��_v���w�V_�)>��hI��x������w|����ua`��`�ʅ�>��*=x�.(���w|���w�a`��_\��>�1�S=x�=.����A�w�a_\�+=��]�w|x�^��]�w|�a`��`����>�u� N������`��x������v,����u�a`��`����N������`��v��.`����N�ӷ���`��x�倷��t�����v,a`��`����E���*`��x�'���x���)�x�a`��`����x�2�0�y7��4�x�a`��`�ʅ��A�y7x�?�A�y7�a`��`����>�D�n=x�N.��x�V.#x�Y�W�y7$�a`��`�ʅ��_�y7�`��a`��_��a_\�+I�vx����z�y����x�a`��`�ʅ�>����=x��..����y����x�.����u^`��`��]��_`��\�3?=x��..����t�����y����u^`��`��]��_`��\�3������@������(`���6`��j�>`��`��>�B��I�Hx�R��L�{�a`��`�ʅ�=��W�{�?E�f�o�q*`����s�{x�|��z�{Tv��.`����a`��`�ʅ�����{Tx������{T�a`��`����>����I����x��.����{Ta`��_������z�a`��`�ʅ�J������{T?J��x�˔ a`�������ֹں�@���亖��ma_`���`��j�`��`��>� ��I�x����|Q�a`��`�ʅ�=��!�|Q�?E�0�9�;*`����=�|Qx�F��D�|�v�M.`����a`��`�ʅ���U�|�x�V��U�|��a`��`����>�Z��I�b}�j��f�|?x�o.��p�|�a`��_��a_`��J�u��|�|�?J��x��� a`������������@��������`����`��j`��`��>�ʻ�I��"�ځ���}�x�����}�`��Ov��.`����a`��`�ʅ�=����}�x�v�.`�����a`��`����?I�O�Y�S�}�`��=0�b'��?E�r�{�}*`����}�`��x������~HO�a`��`�ʅ�����~Hx������~H�a`��`����>����I����x��.����~Ha`��_������}�a`��`�ʅ�J������~H?J��x�Δ a`�������ٻݽ@������ma_`���`��j`��`��>��I�"� ���?x�1�+�?`��Ov�9.`����a`��`�ʅ�=��A�?x�Uv�N.`�����a`��`����?I�������?`��=0��'��?E������*`�����?`��x�΂����O�a`��`�ʅ������x�Ղ�����a`��`����>�ٽI��}�逼��-x��.�����a`��_��a_`��J�������?J�x�� a`���������H@���%�H�*c`���3_\>�<�H=�B�`����S���'cN�l�s`��v�z.`����=���H�����ԓ����� 'c=x��.��������a_\�+I��!�‽���Ԃ���� a`��`�ʅ�>���D=x��..x��������a`��`����x��� �� �a`��`����.�����^`��`��]��_`��\�3=x�-.(��.��ԁ�7���a`��_\��?���M�O��@���W���\c`��_>�c��N�k�r��_x�x.��y��Da`��_��=x��.���������Dx�������D�a`��`����a`��`��\�-J�������]�������C\@�����C\��c`������]��_\>���C\ =���H������v�.`����'cI�2�<��6���v�?.`����a`��`�ʅ�>�G�s=x�O.����V��a]��_\�EJ�g?I�y"!%����}��]�F[���J�����.>����=�����x�܁������^��`��]��_�C?N���@��`��v�@��@��`���GI�@�@/��@���a`��`�ʅ�>�@5�@IJ�@=?N�A,�A6��`��v�A8.`����E�AD�AM�AO*`��x�A[��AQ��Z��A]��a`��`����x�Ap��An�����Ar��Za`��`�ʅ���A���x�A}��A����a`��`����>�A��A�=x�A�.��x�A�.#x�A���A����$�a`��`�ʅ���A�����`��a`��_��a_\�+I�A�!�A�v�A���A���`���G��A���a`��`�ʅ�>�A��B�=w�BY.x�B`v�BY.`������Bc��a`��`�����#=0�Bz�B�����B���?N�B��B���`��x�Bʀ�B������B���a`��`����I�B�x�B��B���'��B���Za`��`�ʅ�>�B��C;=x�C..��C��'��C��Z.��C/���^`��`��]��_`��\�3?=x�CA.����CH�����CO��a`��]��_\�K���Ca�Cf�DH@���Cl�DH�Cqc`���C���]��_\>�C��DHI�C�%�C���C���T]��[>�C��C�=x�C�..��C���Gx�CȀ�C���Gv�CӁ�C���T`���Ga`��`������C���T^`��`��]��_`��\�3>�C��DD>N�D ��]��_v�D ��D ��Ta]��_�%Ex�D ���#��a`�ʆ'>N�D_v�D���#V_�)>�D�D>=x�D#.(5�D)�D$`����D$��G5�D)�D)`����D)��Gx�D)��D$����a`��`������D$�����D/��ya`��_\�����DM�D]�D�@���Df�D�]��_J�Di�Di�N_.���s�~��A������������[����[`��>����J�����T&��������]�R[&��������]�R[G}H*IsI�JJ�K`K�L�M)McM�NO1OO�PbQ�R�TU�W�Y�ZvZ�[ [l[�]x^�_G_�``Za�b�d#f+f�f�iSi�j8k�l.l�m�nUop�t�z�|"}r���'��� �-�v��=���$�*�,�� `��[]��_]��_����>�R������`��j�Q`��%�����_�e���̓�]��_�����m�r���΃�`�������z����σ�`������d��d���`��j`��]��_? �5��;����S���������Z�у����Z����`��]��_? @�ރ��������ކ������_��������� ������������ă���������`������`������]��_]��_?����b����n����z ������������A�҃�������`��[`��[���d]��_]��_>����J���ʄ%__�����������A���)�� `��[�6�d]��_]��_>�>��I�D%�O��H��Y]��[>�X�^N�d�k`��v�t��m��Y`���GN������]��_���_x���������a`��`����@x��v��v���������̓�]��_��`����$������a`��`�ʅ�����N�ވ���]��_�����Y=x�v���������̓�]��_��.����������C�^`��`��]��_`��\��=w�6��0����σ���>�����J�L��S���>�e��J�m5�t�t]��_�t�_R=x����t��倍�����Ya]��_\���t����������,A�Ճ���,���`��`��>�)�,I�/"�C��3��Tx�^�N��T`��j�``��%a`��`�ʅ�>�r��J�zj��`��%?=�����Tx������T`���a`��`����I����������T`��>�ي�J������T`��?J�� ����T`����M�^��@��j�N`���a���d_\>�m��=x�s.������x��Za_\�������Q@��j��`�����Q����]��_\>���QI��%��������]��[>�ӎ�N�ߋ�8]��_������N�����`��v� �����`���GN��#`��v�*.`����I�8x�Nx�C��<��%��E��a`��`����Ov�Xv�Q.�̓�]��_��`����a`��`�ʅ�>�`�*=x�j.�׃�x�z��s��%��|��a`��`����a`��\�=x��v��.�̓�]��_��.�����%x�����%�����a`��`����������^`��`��]��_`��\��=w�.�σ�x�v�.�σ�`��������a`��`������>�1��N�v���`��x��v��v��.�̓�]��_��`����v��.�σ�`����a`��`����I��x�������������a`��`�ʅ�>���=x��v��.�̓�]��_��.v��.�σ�`����x��v��.�σ�`���������a`��`����������^`��`��]��_`��\��=w�.�σ�x�v�.�σ�`������ ��a`��`������>�$��N�4�=��`��x�H��?����J���a`��`����=x�ev�^.�̓�]��_��.v�n.�σ�`����x�{v�u.�σ�`������}���a`��`����������^`��`��]��_`��\��=x��v��.�̓�]��_��.���������넎����^`��`��]��_`��\��=w��.�σ��������>��M>N���]��_v������a]��_�%Ex���� ��a`�ʆ'>N�_v�(��� V_�)>�(�G=x�2.������7��na_\���V�c��@���j��`��[]��_J�p�z��__.����Ï�@�j��`�~�̏�`��[]��_J��x��.��_a]��_�� ����2@yj��`�����2`��J���Q.'��'��� �N�_��@��j�O`���f���i_\>�r��=x�x.������}���a_\�� �����$@��j��`�����$��_\>���$=w��.�΃�x��x��v��.�΃�`�����a`��`������x��v��v��.�̓�]��_��`�����a`��`����a`��`���W��=x��v��.�̓�]��_��(v��.�΃�`���������a`��_\��I��v� .�΃�`����v�.�σ�`����a`��`�ʅ�=x�.����a\�?� �)�7�@��j�*`���B�_>�E�I�K�Uv�O.�΃�`����v�X.�σ�`����a`��`�ʅ�=0�_�e��'�C?N������_5_x��v��.�̓�]��_��v��.�΃�`����a`��_��#����&������_���__=x��v��.�̓�]��_��(v��.�΃�`����+a`��_\��=w��.�΃�x��x��v��.�΃�`�����a`��`������x��v��v��.�̓�]��_��`�����a`��`����a`��`���W��J��������� ����@��j�`�����_>�"��I�(�2v�,.�΃�`����v�5.�σ�`����a`��`�ʅ�=0�<�B��'�C?=w�`.�σ�x�tx�ov�i.�σ�`�����a`��`������x��v�~v�w.�̓�]��_��`�����a`��`����a`��`���W��N������_5_x��v��.�̓�]��_��v��.�σ�`����a`��_��#���&�����_��__=x��v��.�̓�]��_��(v��.�σ�`����+a`��_\��J�������������=@j��`����=`��J�x�(x�v�.�σ�`����v�!.�΃�`����a`��`������x�9v�2v�+.�̓�]��_��`�����a`��`����a`��`���W���B�R�o@j�C`���X�o�] `��\>�d�oI�jx�t��n����a`��`�ʅ�=0�y���$��'�ހ�����'��?I��"x��������$v��.`����a`��`�ʅ�!%��+_>�ה�=0����b$��'��'��-_'��?N������`��x��������v��.`����a`��`����I��x�������pO�a`��`�ʅ�>���EI��x��v��v��.�̓�]��_��`����K������a`��`�ʅ�>�۔�=x��.�׃�������a`��\�?=w�.�σ�x�x�v� .�σ�`��������pa`��`������x�-v�&v�.�̓�]��_��`�����a`��`����a`��`���W��J�9?N�P�X��`��x�`v�Z.�σ�`������b��pa`��`����I��x��������O�a`��`�ʅ�>����=x��v��.�̓�]��_��]������v��.�σ�`����+^`��`��_\�Z>�ҖV=������x�ₕ����v��v��.�̓�]��_��`����a`��`����=x�v��.�̓�]��_��]�v�.�σ�`����+^`��`��_\�Z=x�)v�".�̓�]��_��]��3���v�Cv�<.�̓�]��_��`����+^`��`��_\�Z=w�\.�σ���d��҃���t���V@j�u`�����V��c`��_>���VI��"x���������a`��`�ʅ�x��������Ov��.`����a`��`�ʅ�>���=0���φ�$� '�䀖����'��v�.`����'��?J�5_x�&v� .�̓�]��_��x�7x�.v�(.�΃�`������0���a`��`������x�Hv�Av�:.�̓�]��_��`�����a`��`����a`��`���Wa`��_��#���\&�N���\_��\__��[�u�F@(j�\`���x�F�}c`���� _\>���FI��"x�������a�a`��`�ʅ�x�������aOv��.`����a`��`�ʅ�>���=0���Æ�$��'�䀗���a'��v��.`����'��?=x�v� .�̓�]��_��(x�$x�v�.�΃�`��������aa`��`������x�5v�.v�'.�̓�]��_��`�����a`��`����a`��`���W��=��la`��_\�����ØϙA�烢�ڙ����`��`��J���x�����ހ�x���������a`��`����a`��`���W�a`��`�ʅ��������A�郢�Ś�����`��`��>�Қ�@x�怙���f$�a`��`�ʅ��ߙ�=�����fx�x������f���a`��`���X�a`��`����E�>���N�%�0��`��x�9��2��f��x�C��<��f�a`��`����a`��`���WI�O�^��S����a`��`�ʅ�J�d��k��f?=��y��f�����������f@������f��_\>���f=x�v��.�̓�]��_��(v�.�σ�`������ ���a`��_\��=w�.�σ�x�,x�'v�!.�σ�`�����a`��`������x�=v�6v�/.�̓�]��_��`�����a`��`����a`��`���W��I�G�Qv�K.�΃�`����v�T.�σ�`����a`��`�ʅ�=x�[.����a\�?�������@��������\>����N������]��_����_x��v��v��.�̓�]��_��`�������a`��`���^N�ߛ���`��x��v��v��.�̓�]��_��`����v��.�΃�`����a`��`����=x� �����.�����Kv�.�̓�]��_��v�&.�΃�`����^`��`��]��_`��\��=x�;��2���.��D��Kx�Q��K��Kv�S.�΃�`����a`��`����v�Z.�̓�]��_���^`��`��]��_`��\��=w�j.�΃����=w�y.�σ�v��v��.�̓�]��_��`������=w��.�̓���������������c@�탢���c��9]��_`��>�Оc@x��v�䀜����`����Ov��.`����a`��`�ʅ��ݜ�I��x�v��.�΃�`����Kv�.�σ�`����a`��`�ʅ�>��}N��"`��x�*v�$.�σ�`����v�,.�΃�`����a`��`����=x�@��9���.���L���v�T.�̓�]��_��v�\.�΃�`����^`��`��]��_`��\��J�j��q���>���_N������`��x��v��v��.�̓�]��_��`����v��.�΃�`����a`��`����=x�Ā�����.������Bv��.�̓�]��_��v��.�΃�`����^`��`��]��_`��\��=x��������.����Bx�"����Bv�$.�σ�`����a`��`����v�+.�̓�]��_���^`��`��]��_`��\��J�=x�Jv�D.�σ�`������L��Ba`��`����������*@�׃����*����`��\>���*@x�ր�����Ov��.`����a`��`�ʅ��ƞ�=��H���x�X��H���x�k��[����a`��`����a`��`����N�y����`�����������N������]��_����_�����Y=w��.�σ�x��.�탢�����wa]��_`�����=w�.�̓�����w��=w�.�΃�������3�5�5�������W�����E��������=���G�x����������/�5�7����`��[`��[]��_���v�����]��_�%���S��S���]��_]�__?����� �.�x�0� a`����x�4� a`����x�Iv�B��8����̓�]��_����_a]��_����X�l��@�΃�j�Y`���r��`��J�uv�v�u.��]��_��΃�`�����"������@�΃�j��`�������� `��\J��w��v��.��]��_��΃������у���ɡݡ�@�σ�j��`�����`��J��v��v��.��]��_��σ�`�����#��� �5@�σ�j��`����5� `��\J�w�(v�.��]��_��σ���0������T��� �a����G(���U���� �&�������Y�'�}��� �� `��[]��_]��_�4 ]�'_? �� �)�-�>�V@��j�.`���A�V�D _`��J�N�N���*���ő�@��j��`���ˑ���"]��_\J���儡�+�K�\�}@��j�L`���b�}�k `��`��J�u�u���,�ے�@�=j��`�������"]��[\J� � ���-�r����@�>j�s`��������"]��[\J�������.� ��H@��j� `���%�H�7ma_`��\J�@�@���/������@��j��`���”���ma_`��\J���݄��0�C�T�g@��j�D`���Y�g\J�_�_���2�t����A��Y����b>����=0�����b'�?�y����G������]���� �5�}��� �� `��[]�'_�8�<� �����&]�]�_�9�=�_�h�����&`���F��������������]�]�_����`��j��`�� ]�5_?�8�����p�9������ ���4�G�D�D�����Q���c��]��]�_�o��`��j�z`�� ]�5_? ���Fx�������ဋa]�]�_�����������?���ɉ1@j��`���Љ1`��J��#v��.���&`�ʄ=x��v��.��&]�]�_�<��`���4������`������]�_`��J�x� �����v��� ���`����a`��`����a`��a`��]�_`��`����v�+v�!.��&]��_�>`���G`���@�6�R�p@aj�7`���[�p]��_J�^v�hv�^.��&]��_�>a]��_�%�>� ���@��&�$��]��_>�$��N�.�:��]��_x�Bv�<.��&]�]�_�<~_4�I�I�U�J��]�_]�_J�R��R��?aa]�_]��_]��_��J�\#v�c.���&`�ʄ=��o���x����}���z&�� y��RN]�_�_���À�a_`�ʆ!a_`��aa_`��]��_��]��_�B������@kj��`��������`��`��J��x��v��.��&]�]�_�<n4���ڊ�����]�_`��J��x�灊����k�����Ha`��`�ʆ�aa]�_`��`�ʆu�C��� ��@�Bj��`������`��_>�%��>N�;��]��]�_v�;v�;.��&]�]�_�<a]��]�_�%Ex�;���.��a`�ʆ'>N�4��]�_v�B���.V]�_�)>�B��N�N�U��_x�[��W����B��b��a`��_��I�r"!�}��v���x��������k+a`��`�ʆ�J��������?J��+�D�ɋ܌ @��j��`���� ]�_J��RN��]�_�_>N����]��]�_v��v��.��&]�]�_�<a]��]�_�%Ex��������a`�ʆ'>N����]�_v����V]�_�)=x������u������a]��_\�������u�S�l���$���=�Y�}����z�} �H���&�I� ����� `��[`���K�O��������]�5_�M�Q�؃݀���H]�]�_�V���L��L���`��j�&`�� ]�I_? �5�XRN]�]�_�]�_���T��C��'�X�������ĄH��������]�]�_����`��]�I_?�M�����K�ńF_�������������� �����S������@����������]�_\>����=x��v��.��H]�]�_�Q�������%a]�_`�ʆ!�T�p�u��@���{������]�_`��J��x��v��.��H]�]�_�Q��������a`��`�ʆ����������� �Y���p���������������Z�A�G��-�� `��[]��_]�q_�m �x]��_]�Z_? ������\�Z�j��@j�[`���p���u��`��\J�����t�^��� �!@��j��`��� �!� _`��J���t�_������@��j��`����������]��_\J�����t�`�4�E�m@��j�5`���K�m�Pc`���Y_\J�e�e�t�a�ڇ�!@��j��`����!��c`��� ��]��_\J���t�b������@��j��`�������� `��`��J�����t�c�-�;�Z@��j�.`���C�Z�Hc`��_J�R�R�t�d�ljՉ�@��j��`���߉�_J����t�e�Z�k��@��j�[`���v����ma_`��\J�����t�f���E@��j�`���"�E�4ma_`��\J�=�=�t�g���Ë�@��j��`���΋���`����`��\J����t�h�[�l��@��j�\`���x���}`����`������]��_\J�����t�i��,�?@��j�`���1�?\J�7�7�t�k������A��Y����b>����=0�����b'������F�����+�o�����4�|���%�[���n�A�G���� `��[]�Z_�p��������������]��_]�n_? �ńm������E�q�F�U�A[ `��[`��]��_���U ]�q_? ���t������A��Y����b>����=0�����b'�����Z�j��@j�[`���p���u��`��\J�����t�u��� �!@��j��`��� �!� _`��J���t�v������@��j��`����������]��_\J�����t�w�4�E�m@��j�5`���K�m�Pc`���Y_\J�e�e�t�x�ڇ�!@��j��`����!��c`��� ��]��_\J���t�y������@��j��`�������� `��`��J�����t�z�-�;�Z@��j�.`���C�Z�Hc`��_J�R�R�t�{�ljՉ�@��j��`���߉�_J����t�|�Z�k��@��j�[`���v����ma_`��\J�����t�}���E@��j�`���"�E�4ma_`��\J�=�=�t�~���Ë�@��j��`���΋���`����`��\J����t��[�l��@��j�\`���x���}`����`������]��_\J�����t����,�?@��j�`���1�?\J�7�7�t£����bé���Gċ����PŘ���A�w���f�l��-�� `��[]�_]��_�� �x]�_]��_? �9���� ���-�>�V@��j�.`���A�V�D _`��J�N�N�������ő�@��j��`���ˑ���"]��_\J���儡���K�\�}@��j�L`���b�}�k `��`��J�u�u�����ے�@�=j��`�������"]��[\J� � �����r����@�>j�s`��������"]��[\J��������� ��H@��j� `���%�H�7ma_`��\J�@�@����������@��j��`���”���ma_`��\J���݄����C�T�g@��j�D`���Y�g\J�_�_�����t����A��Y����b>����=0�����b'�?�(�lDz���9�|��� �B�| ���f�l��� `��[]��_�����l�H�Y[1[j^ `��[]��_&���������Ԏ����]�_]��_? �焒�������������Y������ `��[]��_J����_�Kʍ���7�F�i� `��[`��]�_���F ]��_? �� ���t����A��Y����b>����=0�����b'�?���-�>�V@��j�.`���A�V�D _`��J�N�N�������ő�@��j��`���ˑ���"]��_\J���儡���K�\�}@��j�L`���b�}�k `��`��J�u�u�����ے�@�=j��`�������"]��[\J� � �����r����@�>j�s`��������"]��[\J��������� ��H@��j� `���%�H�7ma_`��\J�@�@����������@��j��`���”���ma_`��\J���݄����C�T�g@��j�D`���Y�g\J�_�_�����*�n˴���;�~����D ���Εݚ0�`��[��`��[`��]�8__���� ]��__? �������lA��Y�$�lb>�'�l=0�-�3�b'����ʖ�@(j��`������_�� _\J���������a�o��@��j�b`���z���}_����a__J�����������6@��j�`����6�$e]�8__\J�.�.����������@��j��`��������`��_J����������0�C@��j� `���5�C\J�;�;����������@_��������[\J�����������.@`��.� ��[\J�&�&������^α���?�uϫ��� �Q���NƸɩʚ�q� �  �����J�N��A��\���e�`���u�`��`��J��x��&�������m]�R`���������ya`��`���������A���`��[�� __J���������4�8�~A� �b�~]�R_]�R[�e��_�j��_`��J�px�r��p��7����|��Ca_`����с�M�P���с �� ������������Y �� �����!�  `��[`��]��_�� �V�\�u �s�u]��_? �\��!�� �<�L�QB��Q�Q]��_�� �z����@nj�{`��������ma_`��`��J��x��v��.�]��_��n�����taa_`��`�ʆu�� ���Ղ�@��j��`���܂�`��[]��_J��x��v��.�]��_����_a]��_���� ����;@kj��`����;�`��`��J�$x�*v�$.�]��_��k��3��aa`��`�ʆ��� �@�N�|@bj�A`���W�|�\c`��_J�fx�lv�f.�]��_��b��v���a`��_���� ������@lj��`��������ma_`��`��J��x��v��.�]��_��l�����=aa_`��`�ʆ��� �ȃ��@~j��`����`��[�}a_]��_]��_J�x�v�.�]��_��~_�����aa_]��_]��_���� ��.�B@_j�`���4�B_J�7v�=v�7.�]��_��__���� �G�U��@oj�H`���_���qma_`����pa_j`��_J��x��v��.�]��_��o����զp����չ^a_`��pa__���� �ÄхC@��j��`���؅C`��[����_���a____J�"x�(v�".�]��_����_��-��W��;��ca_a____���� �H�`��@dj�I`���j���we]��_]��_J��x��v��.�]��_��d������a]��_]��_���� ������@fj��`��������}a_\\J��x��v��.�]��_��f�����zaa_\\���� ����@hj��`�����`��J�v�v�.�]��_��h`�ʆ��� ��)�G@ij�`���4�G`��J�7v�=v�7.�]��_��i`�ʆ��� �L�h��@aj�M`���q��]��_J�tv�zv�t.�]��_��a]��_�%�� ������@uj��`��������v`��j��`��`��J��x��v��.�]��_��u������^`��`������ �Ն��@`j��`�����_J��v��v��.�]��_��`_���� ��� �s@qj��`����s�'ma_`���<pa_j`��_J�Nx�Tv�N.�]��_��q��^�ٯp��l���^a_`��pa__���� �x����@j�y`������`��J��v��v��.�]��_��`���G�� ������@|j��`���Ň�`��[��}a__]��_J��x��v��.�]��_��|_����گaa__]��_�n�� ����@@j��`�����@���a____J�+x�1v�+.�]��_����8��9aa____��� �E�s��@�j�F`�~�|��`��[]��_J��x��.��_a]��_���� ������@jj��`������_J��v��v��.�]��_��j_��� ���ˉ>@rj��`���։>��ma_`����pa_j`��_>��>J� x�v�.�]��_��r��%��kp��3��~^a_`��pa__��� �C�[�w@��j�D`���_�w�d� `��]��_J�jx�pv�j.�]��_������u��a`��]��_�B�� �|����@��j�}`��������ma_`��]��_J��x��v��.�]��_��������ݔaa_`��]��_��� �҉�@��j��`������� `��]��_J��x��v��.�]��_��������a`��]��_���� � �#�\@��j� `���,�\�>ma_`��]��_J�Gx�Mv�G.�]��_������W�ޗaa_`��]��_��� �a�u��@��j�b`���{������`��j��`�� ]��_J��x��v��.�]��_����������� ^��`��]��_�C�� ���ϊ�@��j��`���Ԋ�]�_J��x��v��.�]��_����a]�_���� ���5@zj��`��� �5�ma_`��]��_J�$x�*v�$.�]��_��z��0��aa_`��]��_���� �:�R�x@{j�;`���^�x`��[]��_J�dx�jv�d.�]��_��{_a]��_��� �}����@yj�~`������`��J��x��v��.�]��_��ya`�����%�P���=ӫ�ԕ�2Ղ�)���V����f���;ً�2ڂ�ۚ���G���o���r��߇���q���8!�� ������ �  `��[]��_��� � ����j��`��]��_�� �S�Y�� �k���x�x]��_]��_?�ꀍ���' �Y���� �k����A� j�l`�~(���� `��[���x]��[]��_J��x�̀���⊀�_a]��_���\���� ���ğ/ � `��[]��_]��_���� �*�/���j�`��]��_� �4�:�e �H�e�Q�x]��_]��_?����a��E �:��"�� ���ߔA� j��`�~*�� `��[���x]��[]��_J��x������㨀�_a]��_���� � � �=@j� `���"�=�'c`��_J�1x�6v�1.�]��_����7��a`��_���� �B�\��@(j�C`���_���dc`���m _\>�t��=x�v�z.�]��_��(�����}�����a`��_\���� ������@j��`��������e]��_]��_J��x��v��.�]��_��������a]��_]��_��� �ڔ�@��j��`������ _\>���=x�v��.�]��_��������a_\�2� ��(�e@��j�`���.�e�;��]��_\>�E�e=x�Qv�K.�]��_������X���a]��_\�=� �j����@��j�k`������]�8`��_J��x��v��.�]��_����a]�8`��_�� ������@��j��`������`��[]��_J��x��v��.�]��_����_a]��_��� �ԕ�@��j��`����\>��=x��v��.�]��_����a\�� � ��x@]j� `���#�x�(`���3`���<�_j`��\>�H�x=x�Tv�N.�]��_��]��^�癁�e�礂�j��^`��`��_\�Z� �}����@_j�~`�������� _\>����I��v��.h`�ʄ�=0�������.?=x��.(������=a`��_\��� ���>@��j��`��� �>�`���`��]��_J�$x�*v�$.�]��_������3�躁�:���a`��`��]��_� � �C�S��@��j�D`���Z���]_�k`��j�s`��`��J�zx��v�z.�]��_���������J�����U^_`��`��� � �����@��j��`�������ma_`����`��j��`��`��J��x��v��.�]��_���������݁�����^a_`��`��`��� � � ��^@��j� `���!�^�&c`���/_\>�8�^=x�Dv�>.�]��_������K��~��R��a`��_\� � �c�t��@��j�d`���}����c`������]��_\>����=x��v��.�]��_�������������� a`��]��_\� � �Θޙ@@`j��`����@�� _\>��@I��v��.h`�ʄ�=0������.?=x�(.(x�0v�).`�����a`��`������7��a`��_\��� �E�U��@��j�F`���`���c_�r`��j`��`��J�}x��v�}.�]��_���������0�����;^_`��`���� �����@��j��`�������ma_`����`��j`��`��J��x��v��.�]��_��������� ���^a_`��`��`���� ��&�^@j�`���,�^�1��`��\>�<�^=w�Hv�B.�]��_����Q��a�#� �c�t��@��j�d`���z���� `��`��J��x��v��.�]��_����������a`��`�ʇ� ������@��j��`��������c`��_J��x��v��.�]��_���������1a`��_�� ���@��j��`�����_J�x�v�.�]��_����a_��� ��*�q@��j�`���5�q�:`���E`��\>�J�q=x�Vv�P.�]��_������b�����i��a`��`��\�� �v����@��j�w`��������ma_`��\>����=x��v��.�]��_���������~aa_`��\�� �Л�J@��j��`����J��`����`�����]��_\>��J=x�$v�.�]��_������1�����8����=��a`��`��]��_\�� �O�`��@��j�P`���k���}ma_`��\>����=x��v��.�]��_���������aa_`��\�� ���ߜ�@�j��`�~j��`�����`��[]��_J��x��.��_a]��_��� ����2@��j��`���!�2]��_J�$v�*v�$.�]��_����]��_��� �7�H��@��j�8`���N���Sc`���f��]��_\>�p��=x�|v�v.�]��_���������ف�����a`��]��_\�� �����.@.j��`�����.��`����`������]��_����`��j��`��\>���.=x�v��.�]��_��.�� ��f����q����|�� ��^`��`��]��_`��\��� �3�D��@j�4`���K���Z#`��j`��\>�c��=x�ov�i.�]��_����w��,^`��\�� ������@��j��`�������� a__`��j`��\>����=x��v��.�]��_���������^a__`��\��� �ޞ�-@��j��`�����-��`��� `��j`��]��_J�x�v�.�]��_������"��3��)��>^`��`��]��_��z���Y���\���A���u���%��Y���j� ��=�� �|���Y���x���X��B�����"� � �� � `��[]��_]�_�"�% �u�z���j�]`��]�_�9 ����� �������x]�_]�_?�"������ �����' ��#�GA� j��`�~,�+�G `��[�0�x]�[]�_J�9x�>��9�� ��_a]�_���( �L�]�}@��j�M`���`�}�c _`��J�mx�sv�m.�]�_�%����w��qa_`�ʆ!�) ������@��j��`��������"]��_\>����=x��v��.�]�_�%��������a]��_\���* �գ�@��j��`����`��[]�_J��x��v��.�]�_�%��_a]�_���+ � ��9@��j� `����9\>�"�9=x�.v�(.�]�_�%��a\��, �>�O��@�Aj�?`���Z���me]��`��`��J�wx�}v�w.�]�_�%�A����� a]��`��`�ʇ�- ������@�Fj��`��������e]�`��]�_J��x��v��.�]�_�%�F������a]�`��]�_��. ����5@�Ej��`����5�e]�`��]�_J�x�"v�.�]�_�%�E��/��a]�`��]�_��/ �:�I�y@�Bj�;`���O�y�X`��_J�dx�jv�d.�]�_�%�B��q���a`��_���0 �~����@��j�`�������� `��`��J��x��v��.�]�_�%�������a`��`�ʆ��1 ���Ѧ@�=j��`���ڦ��"]��`��\>���=x�v��.�]�_�%�=�� ���a]��`��\��2 ��0�t@��j� `���;�t�Mma_`��\>�S�t=x�_v�Y.�]�_�%����k���aa_`��\��3 �y����@�>j�z`��������"]��`��\>����=x��v��.�]�_�%�>�����ta]��`��\��4 �ا �%@�j��`�~j��`����%`��[]�_J�x�.��_a]�_�*�5 �*�;�@��j�+`���F��Xma_`��\>�^�=x�jv�d.�]�_�%����v��Paa_`��\� �6 ������@�Dj��`��������e]�_]�_J��x��v��.�]�_�%�D������a]�_]�_�!�7 �ŧب@��j��`���ݨ]�_J����9_x��v��.�]�_�%��a]�_�"���L���3�����u���}���]���O���+���*���: ����� � `��[]��_]��_�=�@ �b�g���j�H`��]��_�P �l�r�� ��������]��_]�:_?�=�����S �r�� �B �� �FA� j��`�~.�(�F `��[�/�x]��[]��_J�8x�=��8�����_a]��_�$�C �K�\��@��j�L`���_���b _\>�i��=x�uv�o.�]��_�@����y��a_\�%�D ������@��j��`����������]��_\>����=x��v��.�]��_�@��������a]��_\�&�E �۬�@��j��`������� _\>���=x� v�.�]��_�@�����a_\�'�F �"�3�b@��j�#`���:�b�= _\>�D�b=x�Pv�J.�]��_�@����X�pa_\�(�G �g�|��@��j�h`������`��[]��_J��x��v��.�]��_�@��_a]��_�$�H ������@��j��`������\>����=x��v��.�]��_�@��a\�)�I �ҭ�@��j��`�������}`��`��J��x�v��.�]��_�@���� ��a`��`�ʇ*�J ��'�k@��j�`���2�k�Dma_`��\>�J�k=x�Vv�P.�]��_�@����b�aa_`��\�+�K �p����@��j�q`��������ma_`��\>����=x��v��.�]��_�@�������aa_`��\�,�L �ʯ�@�j��`�~j��`��� �`��[]��_J�x�.��_a]��_�G�M ��,�P@��j�`���7�P_J�=x�Cv�=.�]��_�@��a_�-�N �U�c��@��j�V`���m��_J�sx�yv�s.�]��_�@��a_�.�����f��K�)��l�L� �Q �x�~�| �`��[��`��[`��]�8__�T�W �������]�8__�r �Ű˰� �ذ����x]�8__]�Q__?�T����� �˅��_ �b����A� j�c`�~0����`��[��`��[���x]�8[[]�8__J��x������"��__a]�8__�p�` �ϳ�@j��`������`��_J��x��v��.�]�8__�W����a`��_�e�a � �#�S@(j� `���&�S�)_�0 _\>�7�S=x�Bv�=.�]�8__�W(��C���J�a__\�k�b �X�i��@��j�Y`���o���ze]�8__\>����=x��v��.�]�8__�W�������a]�8__\���c �����@��j��`���������]��]�c__\>��=x��v��.�]�8__�W������a]��]�c__\�o�d � ��9@��j� `����9\>�"�9=x�.v�(.�]�8__�W��a\�q�e �>�V�|@��j�?`���b�|��`��[��`��[]�8__J�hx�nv�h.�]�8__�W��__a]�8__�p�f ������@��j��`��������`��`��J��x��v��.�]�8__�W�������a`��`�ʆr�g �ɵڶ@��j��`������ `��`��J��x�v��.�]�8__�W������a`��`�ʇ/�X ��B�Z@��j�`���J�Z]��]�c__J�Mv�Sv�M.�]�8__�W��]��]�c__�v�h �_�p��@fj�``���w����}a__\\>����=x��v��.�]�8__�Wf���� �aa__\\�l�Y ���ö�@hj��`���˶�`��J��v��v��.�]�8__�Wh`�ʆw�Z ����@ij��`����`��J�v� v�.�]�8__�Wi`�ʆx�[ ��4�F@��j�`���9�F]��_J�<v�Bv�<.�]�8__�W��]��_���\ �K�_�u@j�L`���f�u`��J�iv�ov�i.�]�8__�W`���y�i �z����@|j�{`��������`��[��`��[����a__]�c__]�8__J��x��v��.�]�8__�W|__���� �aa__]�c__]�8__�z�j ����L@��j��`����L�_���a__J�,x�2v�,.�]�8__�W����>� ���C� �a_a__�{�k �Q�`��@��j�R`���f���o`��_J�wx�}v�w.�]�8__�W������ a`��_�|�l ������@��j��`��������ma__`��\J��x��v��.�]�8__�W������ �aa__`��\�}�m ���3@�j��`�~��3��`��[��`��[]�8__J�%x�%.��__a]�8__�e�] �8�T�j@��j�9`���[�j]��_J�^v�dv�^.�]�8__�W��]��_�t�n �o����@yj�p`������`��J��x��v��.�]�8__�Wya`���0�o �����'@�j��`�����'��_���a__����a_j`��_J��x�v��.�]�8__�W����=�� �H�����\^_a__��a__��p �,�=�z@�j�-`���F�z�X�a___\J�cx�iv�c.�]�8__�W���s�aa___\���r�i�z�a� I � : � � B � _ � d �\��d�s ����Ec-� `��[]��_]��_�� ]�s_? �� �u �����€�����`��[]�_�v�-�>�V@��j�.`���A�V�D _`��J�N�N���w���ő�@��j��`���ˑ���"]��_\J���儡�x�K�\�}@��j�L`���b�}�k `��`��J�u�u���y�ے�@�=j��`�������"]��[\J� � ���z�r����@�>j�s`��������"]��[\J�������{� ��H@��j� `���%�H�7ma_`��\J�@�@���|������@��j��`���”���ma_`��\J���݄��}�C�T�g@��j�D`���Y�g\J�_�_����t����A��Y����b>����=0�����b'�?)[��)l��?u� �� ����Ec� `��[]�s_���� �`�h�����]�8_[�� �m�m���v���|�]�8_[]��_?����= �m�� �� ������@�j��`������]��_J��v��v��.���]�8_[����]��_���� ���ԽP@��j��`���۽P`��[]�_>�޽PI��%��.]��_>���'J�&�.]��_?J�-�8�1__.�� �U�f��@kj�V`���n���w`��`��J��x��v��.���]�8_[��������ua`��`�ʆr�� ������@hj��`���½�`��J��v��v��.���]�8_[��h`�ʆw�� �ڽ�@ij��`�����`��J��v�v��.���]�8_[��i`�ʆx�� ��)�B@j�`���0�B`��J�3v��K��LI�K�%�K�.]�_>�K��K�J�K�&�K�.]�_?J�K��K��1__.�� �L�L*�L�@kj�L`���L2�L��L;`��`��>�LD�L�I�LJ!%�LV��LN�#_J�L]*?N�Ls�Lw_5�L��L�_�L��#_}�L�v�Ly.���a__����L��xa__J�L�x�L�v�L�.���]�8__������L��ca`��`�ʆr�� �L��L��L�@hj�L�`���L��L�`��J�L�v�L�v�L�.���]�8__��h`�ʆw�� �L��M�M)@ij�L�`���M�M)`��J�Mv�Mv�M.���]�8__��i`�ʆx�� �M.�MB�M[@j�M/`���MI�M[`��J�MLv�MUv�ML.���]�8__��`���y�� �M`�Ms�M�@yj�Ma`���M{�M�`��J�M�x�M�x�M�.��a]�_��ya`������ �M��M��N\@��j�M�`���M��N\�M� _`��>�M��N\N�M��M�_5�M��M�_��M���}�M�v�M�.���a__����M�� a__N�M��M���`��*=x�Nv�M�.���]�8__������N � 4�N�N�ND_>�N�NC=��N� e)J�N1��N8��a_a__�{J�NK��NR� e�� �Na�Nr�N�@��j�Nb`���Nx�N��N�"]��_\J�N�x�N���N��!=fy�N�.��a_`�ʅ�aa_\\���� �N��N��N�@��j�N�`���N��N�\J�N�x�N�v�N�.���]�8__����a\�q�� �N��N��O+@�Aj�N�`���N��O+�O e]��`��`��J�Ox�O��O�"/ly�O".ka`��`�ʅ�aa`��`��`�ʆ��� �P��P��Q@�Fj�P�`���P��Q�P�e]�`��]�_J�P�x�Qx�P�.z4�P��P��Q�P�_`��J�P�!x�Q��P��"�k��Q �# a`��`�ʆ�aa_`��]��_����a]�_���� �R��R��R�@�Ej�R�`���R��R��R�e]�`��]�_J�R�x�R�x�R�.zy�Rۀ�R��#�ka`��`�ʆ�aa_`��]��_����a]�_���� �R��S�S�@�Bj�R�`���S�S��S`��_>�S�S�I�S!%�S*��S"�$h_J�S1+?N�SF�SJ_5�SY�SY_�SY�$h_}�SXv�SL.���a__����SY�$�a__J�Shx�Swv�So.���]�8__����Sx�$�a`��_�e�� �S��S��TZ@��j�S�`���S��TZ�S�`��`��>�S��TZI�S�!%�S���S��%�_J�S�*?N�S��S�_5�S��S�_�S��%�_}�S�v�S�.���a__����S��%�a__I�S�!x�T v�T.���]�8__������T�%�a`��`�ʆrJ�T*?=x�T:v�T1.���]�8__������TA�%�a`��_�|J�TK)�� �T_�Tp�T�@�=j�T``���Ty�T��T�"]��`��\J�T�x�T���T��&�fy�T�.��a`��`�ʅ�aa`��\\���� �T��T��U�@��j�T�`���T��U��T�ma_`��\>�T��U�N�T��T��]��[�T��1[�=x�Uv�U.���]�8__��f4�U�U�UV�U_�U _\>�U%�UUI�U-}�U5��U1�'z��U6�(a_`��=x�UG��U>�'�����UK�'�a[\�2?aa__\\�l=x�Uf��U]�'�fy�Uwv�Un.���]�8__����a`��_�|aa[\\���� �U��U��Wr@�>j�U�`���U��Wr�U�"]��`��\>�U��WrN�U��U��]�_�Uه4_>N�V��]��`��v�V��V�) a]��`���%Ex�V��)X��a`�ʆ'>N�U�`��v�V��)XV`���)A>�V�V�I�V!%�V"��V�)�_B�V)?N�V=�VA_5�VP�VP_�VP�)�_}�VOv�VC.���a__����VP�*a__I�Va!x�Vov�Vf.���]�8__������V{�)�a`��`�ʆrB�V�?=x�V���V��).��5�V��V�_x�V�v�V�.���]�8__����V��)�a`��_�e#�V���V��*�5`��+#��+&&�V���+&_�+&__�V��*�_`��_a_`�ʆ!N�V��V��]��[�V߆1[�=x�V�v�V�.���]�8__��f4�V��V��WB�V��_�V��_\>�V��WAI�W!x�W��W �).k��W$�+�a`��`�ʆ�=x�W5��W(�+�����W9�+�a[\�2?aa__\\�l=x�WV��WI�+�fy�Wgv�W^.���]�8__����a`��_�|aa[\\���� �Ww�W��W�@��j�Wx`���W��W��W�ma_`��\J�W�x�W�.��4�W��W��W��W�_`��J�W�!}�WҀ�W��,���W��-:a_`��aa_`��\���� �W��X�X=@�j�W�`�~j�X`���X�X=`��[]�_J�X%�X)�1__.�� �Y��Y��Y�@�Dj�Y�`���Y��Y��Y�e]�_]�_J�Y�5�Y��Y�]�_x�Y�.��a]�_��R=x�Yρ�Y��.S����Y��.*a]��_\����Y��.S�S�v�B�! !�!�"�#�$7%T&�'I(�,�-�-�.� /�������;��=���/ /\file:///github/home/.pub-cache/hosted/pub.dartlang.org/collection-1.16.0/lib/collection.dart��// Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. export 'src/algorithms.dart' show binarySearch, insertionSort, lowerBound, mergeSort, shuffle, reverse; export 'src/boollist.dart'; export 'src/canonicalized_map.dart'; export 'src/combined_wrappers/combined_iterable.dart'; export 'src/combined_wrappers/combined_list.dart'; export 'src/combined_wrappers/combined_map.dart'; export 'src/comparators.dart'; export 'src/equality.dart'; export 'src/equality_map.dart'; export 'src/equality_set.dart'; export 'src/functions.dart'; export 'src/iterable_extensions.dart'; export 'src/iterable_zip.dart'; export 'src/list_extensions.dart'; export 'src/priority_queue.dart'; export 'src/queue_list.dart'; export 'src/union_set.dart'; export 'src/union_set_controller.dart'; export 'src/unmodifiable_wrappers.dart'; export 'src/wrappers.dart'; NN<O%732 ' #"()"package:collection/collection.dart`file:///github/home/.pub-cache/hosted/pub.dartlang.org/collection-1.16.0/lib/src/algorithms.dart�@�// Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. /// A selection of data manipulation algorithms. library pkg.collection.algorithms; import 'dart:math' show Random; import 'utils.dart'; /// Returns a position of the [value] in [sortedList], if it is there. /// /// If the list isn't sorted according to the [compare] function, the result /// is unpredictable. /// /// If [compare] is omitted, this defaults to calling [Comparable.compareTo] on /// the objects. In this case, the objects must be [Comparable]. /// /// Returns -1 if [value] is not in the list. int binarySearch(List sortedList, E value, {int Function(E, E)? compare}) { compare ??= defaultCompare; return binarySearchBy(sortedList, identity, compare, value); } /// Returns a position of the [value] in [sortedList], if it is there. /// /// If the list isn't sorted according to the [compare] function on the [keyOf] /// property of the elements, the result is unpredictable. /// /// Returns -1 if [value] is not in the list by default. /// /// If [start] and [end] are supplied, only that range is searched, /// and only that range need to be sorted. int binarySearchBy(List sortedList, K Function(E element) keyOf, int Function(K, K) compare, E value, [int start = 0, int? end]) { end = RangeError.checkValidRange(start, end, sortedList.length); var min = start; var max = end; var key = keyOf(value); while (min < max) { var mid = min + ((max - min) >> 1); var element = sortedList[mid]; var comp = compare(keyOf(element), key); if (comp == 0) return mid; if (comp < 0) { min = mid + 1; } else { max = mid; } } return -1; } /// Returns the first position in [sortedList] that does not compare less than /// [value]. /// /// If the list isn't sorted according to the [compare] function, the result /// is unpredictable. /// /// If [compare] is omitted, this defaults to calling [Comparable.compareTo] on /// the objects. In this case, the objects must be [Comparable]. /// /// Returns [sortedList.length] if all the items in [sortedList] compare less /// than [value]. int lowerBound(List sortedList, E value, {int Function(E, E)? compare}) { compare ??= defaultCompare; return lowerBoundBy(sortedList, identity, compare, value); } /// Returns the first position in [sortedList] that is not before [value]. /// /// Elements are compared using the [compare] function of the [keyOf] property of /// the elements. /// If the list isn't sorted according to this order, the result is unpredictable. /// /// Returns [sortedList.length] if all the items in [sortedList] are before [value]. /// /// If [start] and [end] are supplied, only that range is searched, /// and only that range need to be sorted. int lowerBoundBy(List sortedList, K Function(E element) keyOf, int Function(K, K) compare, E value, [int start = 0, int? end]) { end = RangeError.checkValidRange(start, end, sortedList.length); var min = start; var max = end; var key = keyOf(value); while (min < max) { var mid = min + ((max - min) >> 1); var element = sortedList[mid]; var comp = compare(keyOf(element), key); if (comp < 0) { min = mid + 1; } else { max = mid; } } return min; } /// Shuffles a list randomly. /// /// A sub-range of a list can be shuffled by providing [start] and [end]. /// /// If [start] or [end] are omitted, /// they default to the start and end of the list. /// /// If [random] is omitted, it defaults to a new instance of [Random]. void shuffle(List elements, [int start = 0, int? end, Random? random]) { random ??= Random(); end ??= elements.length; var length = end - start; while (length > 1) { var pos = random.nextInt(length); length--; var tmp1 = elements[start + pos]; elements[start + pos] = elements[start + length]; elements[start + length] = tmp1; } } /// Reverses a list, or a part of a list, in-place. void reverse(List elements, [int start = 0, int? end]) { end = RangeError.checkValidRange(start, end, elements.length); _reverse(elements, start, end); } /// Internal helper function that assumes valid arguments. void _reverse(List elements, int start, int end) { for (var i = start, j = end - 1; i < j; i++, j--) { var tmp = elements[i]; elements[i] = elements[j]; elements[j] = tmp; } } /// Sort a list between [start] (inclusive) and [end] (exclusive) using /// insertion sort. /// /// If [compare] is omitted, this defaults to calling [Comparable.compareTo] on /// the objects. In this case, the objects must be [Comparable]. /// /// Insertion sort is a simple sorting algorithm. For `n` elements it does on /// the order of `n * log(n)` comparisons but up to `n` squared moves. The /// sorting is performed in-place, without using extra memory. /// /// For short lists the many moves have less impact than the simple algorithm, /// and it is often the favored sorting algorithm for short lists. /// /// This insertion sort is stable: Equal elements end up in the same order /// as they started in. void insertionSort(List elements, {int Function(E, E)? compare, int start = 0, int? end}) { // If the same method could have both positional and named optional // parameters, this should be (list, [start, end], {compare}). compare ??= defaultCompare; end ??= elements.length; for (var pos = start + 1; pos < end; pos++) { var min = start; var max = pos; var element = elements[pos]; while (min < max) { var mid = min + ((max - min) >> 1); var comparison = compare(element, elements[mid]); if (comparison < 0) { max = mid; } else { min = mid + 1; } } elements.setRange(min + 1, pos + 1, elements, min); elements[min] = element; } } /// Generalized insertion sort. /// /// Performs insertion sort on the [elements] range from [start] to [end]. /// Ordering is the [compare] of the [keyOf] of the elements. void insertionSortBy(List elements, K Function(E element) keyOf, int Function(K a, K b) compare, [int start = 0, int? end]) { end = RangeError.checkValidRange(start, end, elements.length); _movingInsertionSort(elements, keyOf, compare, start, end, elements, start); } /// Limit below which merge sort defaults to insertion sort. const int _mergeSortLimit = 32; /// Sorts a list between [start] (inclusive) and [end] (exclusive) using the /// merge sort algorithm. /// /// If [compare] is omitted, this defaults to calling [Comparable.compareTo] on /// the objects. If any object is not [Comparable], that throws a [TypeError]. /// /// Merge-sorting works by splitting the job into two parts, sorting each /// recursively, and then merging the two sorted parts. /// /// This takes on the order of `n * log(n)` comparisons and moves to sort /// `n` elements, but requires extra space of about the same size as the list /// being sorted. /// /// This merge sort is stable: Equal elements end up in the same order /// as they started in. void mergeSort(List elements, {int start = 0, int? end, int Function(E, E)? compare}) { end = RangeError.checkValidRange(start, end, elements.length); compare ??= defaultCompare; var length = end - start; if (length < 2) return; if (length < _mergeSortLimit) { insertionSort(elements, compare: compare, start: start, end: end); return; } // Special case the first split instead of directly calling // _mergeSort, because the _mergeSort requires its target to // be different from its source, and it requires extra space // of the same size as the list to sort. // This split allows us to have only half as much extra space, // and allows the sorted elements to end up in the original list. var firstLength = (end - start) >> 1; var middle = start + firstLength; var secondLength = end - middle; // secondLength is always the same as firstLength, or one greater. var scratchSpace = List.filled(secondLength, elements[start]); E Function(E) id = identity; _mergeSort(elements, id, compare, middle, end, scratchSpace, 0); var firstTarget = end - firstLength; _mergeSort(elements, id, compare, start, middle, elements, firstTarget); _merge(id, compare, elements, firstTarget, end, scratchSpace, 0, secondLength, elements, start); } /// Sort [elements] using a merge-sort algorithm. /// /// The elements are compared using [compare] on the value provided by [keyOf] /// on the element. /// If [start] and [end] are provided, only that range is sorted. /// /// Uses insertion sort for smaller sublists. void mergeSortBy(List elements, K Function(E element) keyOf, int Function(K a, K b) compare, [int start = 0, int? end]) { end = RangeError.checkValidRange(start, end, elements.length); var length = end - start; if (length < 2) return; if (length < _mergeSortLimit) { _movingInsertionSort(elements, keyOf, compare, start, end, elements, start); return; } // Special case the first split instead of directly calling // _mergeSort, because the _mergeSort requires its target to // be different from its source, and it requires extra space // of the same size as the list to sort. // This split allows us to have only half as much extra space, // and it ends up in the original place. var middle = start + (length >> 1); var firstLength = middle - start; var secondLength = end - middle; // secondLength is always the same as firstLength, or one greater. var scratchSpace = List.filled(secondLength, elements[start]); _mergeSort(elements, keyOf, compare, middle, end, scratchSpace, 0); var firstTarget = end - firstLength; _mergeSort(elements, keyOf, compare, start, middle, elements, firstTarget); _merge(keyOf, compare, elements, firstTarget, end, scratchSpace, 0, secondLength, elements, start); } /// Performs an insertion sort into a potentially different list than the /// one containing the original values. /// /// It will work in-place as well. void _movingInsertionSort( List list, K Function(E element) keyOf, int Function(K, K) compare, int start, int end, List target, int targetOffset) { var length = end - start; if (length == 0) return; target[targetOffset] = list[start]; for (var i = 1; i < length; i++) { var element = list[start + i]; var elementKey = keyOf(element); var min = targetOffset; var max = targetOffset + i; while (min < max) { var mid = min + ((max - min) >> 1); if (compare(elementKey, keyOf(target[mid])) < 0) { max = mid; } else { min = mid + 1; } } target.setRange(min + 1, targetOffset + i + 1, target, min); target[min] = element; } } /// Sorts [elements] from [start] to [end] into [target] at [targetOffset]. /// /// The `target` list must be able to contain the range from `start` to `end` /// after `targetOffset`. /// /// Allows target to be the same list as [elements], as long as it's not /// overlapping the `start..end` range. void _mergeSort( List elements, K Function(E element) keyOf, int Function(K, K) compare, int start, int end, List target, int targetOffset) { var length = end - start; if (length < _mergeSortLimit) { _movingInsertionSort( elements, keyOf, compare, start, end, target, targetOffset); return; } var middle = start + (length >> 1); var firstLength = middle - start; var secondLength = end - middle; // Here secondLength >= firstLength (differs by at most one). var targetMiddle = targetOffset + firstLength; // Sort the second half into the end of the target area. _mergeSort(elements, keyOf, compare, middle, end, target, targetMiddle); // Sort the first half into the end of the source area. _mergeSort(elements, keyOf, compare, start, middle, elements, middle); // Merge the two parts into the target area. _merge(keyOf, compare, elements, middle, middle + firstLength, target, targetMiddle, targetMiddle + secondLength, target, targetOffset); } /// Merges two lists into a target list. /// /// One of the input lists may be positioned at the end of the target /// list. /// /// For equal object, elements from [firstList] are always preferred. /// This allows the merge to be stable if the first list contains elements /// that started out earlier than the ones in [secondList] void _merge( K Function(E element) keyOf, int Function(K, K) compare, List firstList, int firstStart, int firstEnd, List secondList, int secondStart, int secondEnd, List target, int targetOffset) { // No empty lists reaches here. assert(firstStart < firstEnd); assert(secondStart < secondEnd); var cursor1 = firstStart; var cursor2 = secondStart; var firstElement = firstList[cursor1++]; var firstKey = keyOf(firstElement); var secondElement = secondList[cursor2++]; var secondKey = keyOf(secondElement); while (true) { if (compare(firstKey, secondKey) <= 0) { target[targetOffset++] = firstElement; if (cursor1 == firstEnd) break; // Flushing second list after loop. firstElement = firstList[cursor1++]; firstKey = keyOf(firstElement); } else { target[targetOffset++] = secondElement; if (cursor2 != secondEnd) { secondElement = secondList[cursor2++]; secondKey = keyOf(secondElement); continue; } // Second list empties first. Flushing first list here. target[targetOffset++] = firstElement; target.setRange(targetOffset, targetOffset + (firstEnd - cursor1), firstList, cursor1); return; } } // First list empties first. Reached by break above. target[targetOffset++] = secondElement; target.setRange( targetOffset, targetOffset + (secondEnd - cursor2), secondList, cursor2); } /// Sort [elements] using a quick-sort algorithm. /// /// The elements are compared using [compare] on the elements. /// If [start] and [end] are provided, only that range is sorted. /// /// Uses insertion sort for smaller sublists. void quickSort(List elements, int Function(E a, E b) compare, [int start = 0, int? end]) { end = RangeError.checkValidRange(start, end, elements.length); _quickSort(elements, identity, compare, Random(), start, end); } /// Sort [elements] using a quick-sort algorithm. /// /// The elements are compared using [compare] on the value provided by [keyOf] /// on the element. /// If [start] and [end] are provided, only that range is sorted. /// /// Uses insertion sort for smaller sublists. void quickSortBy( List list, K Function(E element) keyOf, int Function(K a, K b) compare, [int start = 0, int? end]) { end = RangeError.checkValidRange(start, end, list.length); _quickSort(list, keyOf, compare, Random(), start, end); } void _quickSort(List list, K Function(E element) keyOf, int Function(K a, K b) compare, Random random, int start, int end) { const minQuickSortLength = 24; var length = end - start; while (length >= minQuickSortLength) { var pivotIndex = random.nextInt(length) + start; var pivot = list[pivotIndex]; var pivotKey = keyOf(pivot); var endSmaller = start; var startGreater = end; var startPivots = end - 1; list[pivotIndex] = list[startPivots]; list[startPivots] = pivot; while (endSmaller < startPivots) { var current = list[endSmaller]; var relation = compare(keyOf(current), pivotKey); if (relation < 0) { endSmaller++; } else { startPivots--; var currentTarget = startPivots; list[endSmaller] = list[startPivots]; if (relation > 0) { startGreater--; currentTarget = startGreater; list[startPivots] = list[startGreater]; } list[currentTarget] = current; } } if (endSmaller - start < end - startGreater) { _quickSort(list, keyOf, compare, random, start, endSmaller); start = startGreater; } else { _quickSort(list, keyOf, compare, random, startGreater, end); end = endSmaller; } length = end - start; } _movingInsertionSort(list, keyOf, compare, start, end, list, start); } ��NN<1# GMPA.1%EGP;9D+J)!C(#-  O MPANPCKRSUD+H)!C(#- J%3GI&&6%4?A%;96HPANK?OCK(>FA0!*88 K>J$!AO= MPOJ8JNG$>A"G >??+AD($#EDC'KQ2OB.F$!A"Q >??+A+&$#EDF'NF&J(#!!  &%#% *9ALNI(!  " E &$#@1;K:I/IH)F FK;! "!#+&-(--J+& ."/*>-I7*P2?B.D!AG2OB.O!=:AI!)5"!*'&8).(2 '3C CM&package:collection/src/algorithms.dart^file:///github/home/.pub-cache/hosted/pub.dartlang.org/collection-1.16.0/lib/src/boollist.dart��// Copyright (c) 2021, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. import 'dart:collection' show ListMixin; import 'dart:typed_data' show Uint32List; import 'unmodifiable_wrappers.dart' show NonGrowableListMixin; /// A space-efficient list of boolean values. /// /// Uses list of integers as internal storage to reduce memory usage. abstract class BoolList with ListMixin { static const int _entryShift = 5; static const int _bitsPerEntry = 32; static const int _entrySignBitIndex = 31; /// The length of the list. /// /// Maybe be shorter than the capacity of the backing store. int _length; /// Backing store for bits. Uint32List _data; BoolList._(this._data, this._length); factory BoolList._selectType(int length, bool growable) { if (growable) { return _GrowableBoolList(length); } else { return _NonGrowableBoolList(length); } } /// Creates a list of booleans with the provided length. /// /// The list is initially filled with the [fill] value, and /// the list is growable if [growable] is true. factory BoolList(int length, {bool fill = false, bool growable = false}) { RangeError.checkNotNegative(length, 'length'); BoolList boolist; if (growable) { boolist = _GrowableBoolList(length); } else { boolist = _NonGrowableBoolList(length); } if (fill) { boolist.fillRange(0, length, true); } return boolist; } /// Creates an empty list of booleans. /// /// The list defaults to being growable unless [growable] is `false`. /// If [capacity] is provided, and [growable] is not `false`, /// the implementation will attempt to make space for that /// many elements before needing to grow its internal storage. factory BoolList.empty({bool growable = true, int capacity = 0}) { RangeError.checkNotNegative(capacity, 'length'); if (growable) { return _GrowableBoolList._withCapacity(0, capacity); } else { return _NonGrowableBoolList._withCapacity(0, capacity); } } /// Generates a [BoolList] of values. /// /// Creates a [BoolList] with [length] positions and fills it with values created by /// calling [generator] for each index in the range `0` .. `length - 1` in increasing order. /// /// The created list is fixed-length unless [growable] is true. factory BoolList.generate( int length, bool Function(int) generator, { bool growable = true, }) { RangeError.checkNotNegative(length, 'length'); var instance = BoolList._selectType(length, growable); for (var i = 0; i < length; i++) { instance._setBit(i, generator(i)); } return instance; } /// Creates a list containing all [elements]. /// /// The [Iterator] of [elements] provides the order of the elements. /// /// This constructor creates a growable [BoolList] when [growable] is true; /// otherwise, it returns a fixed-length list. factory BoolList.of(Iterable elements, {bool growable = false}) { return BoolList._selectType(elements.length, growable)..setAll(0, elements); } /// The number of boolean values in this list. /// /// The valid indices for a list are `0` through `length - 1`. /// /// If the list is growable, setting the length will change the /// number of values. /// Setting the length to a smaller number will remove all /// values with indices greater than or equal to the new length. /// Setting the length to a larger number will increase the number of /// values, and all the new values will be `false`. @override int get length => _length; @override bool operator [](int index) { RangeError.checkValidIndex(index, this, 'index', _length); return (_data[index >> _entryShift] & (1 << (index & _entrySignBitIndex))) != 0; } @override void operator []=(int index, bool value) { RangeError.checkValidIndex(index, this, 'index', _length); _setBit(index, value); } @override void fillRange(int start, int end, [bool? fill]) { RangeError.checkValidRange(start, end, _length); fill ??= false; var startWord = start >> _entryShift; var endWord = (end - 1) >> _entryShift; var startBit = start & _entrySignBitIndex; var endBit = (end - 1) & _entrySignBitIndex; if (startWord < endWord) { if (fill) { _data[startWord] |= -1 << startBit; _data.fillRange(startWord + 1, endWord, -1); _data[endWord] |= (1 << (endBit + 1)) - 1; } else { _data[startWord] &= (1 << startBit) - 1; _data.fillRange(startWord + 1, endWord, 0); _data[endWord] &= -1 << (endBit + 1); } } else { if (fill) { _data[startWord] |= ((1 << (endBit - startBit + 1)) - 1) << startBit; } else { _data[startWord] &= ((1 << startBit) - 1) | (-1 << (endBit + 1)); } } } /// Creates an iterator for the elements of this [BoolList]. /// /// The [Iterator.current] getter of the returned iterator /// is `false` when the iterator has no current element. @override Iterator get iterator => _BoolListIterator(this); void _setBit(int index, bool value) { if (value) { _data[index >> _entryShift] |= 1 << (index & _entrySignBitIndex); } else { _data[index >> _entryShift] &= ~(1 << (index & _entrySignBitIndex)); } } static int _lengthInWords(int bitLength) { return (bitLength + (_bitsPerEntry - 1)) >> _entryShift; } } class _GrowableBoolList extends BoolList { static const int _growthFactor = 2; _GrowableBoolList._withCapacity(int length, int capacity) : super._( Uint32List(BoolList._lengthInWords(capacity)), length, ); _GrowableBoolList(int length) : super._( Uint32List(BoolList._lengthInWords(length * _growthFactor)), length, ); @override set length(int length) { RangeError.checkNotNegative(length, 'length'); if (length > _length) { _expand(length); } else if (length < _length) { _shrink(length); } } void _expand(int length) { if (length > _data.length * BoolList._bitsPerEntry) { _data = Uint32List( BoolList._lengthInWords(length * _growthFactor), )..setRange(0, _data.length, _data); } _length = length; } void _shrink(int length) { if (length < _length ~/ _growthFactor) { var newDataLength = BoolList._lengthInWords(length); _data = Uint32List(newDataLength)..setRange(0, newDataLength, _data); } for (var i = length; i < _data.length * BoolList._bitsPerEntry; i++) { _setBit(i, false); } _length = length; } } class _NonGrowableBoolList extends BoolList with NonGrowableListMixin { _NonGrowableBoolList._withCapacity(int length, int capacity) : super._( Uint32List(BoolList._lengthInWords(capacity)), length, ); _NonGrowableBoolList(int length) : super._( Uint32List(BoolList._lengthInWords(length)), length, ); } class _BoolListIterator implements Iterator { bool _current = false; int _pos = 0; final int _length; final BoolList _boolList; _BoolListIterator(this._boolList) : _length = _boolList._length; @override bool get current => _current; @override bool moveNext() { if (_boolList._length != _length) { throw ConcurrentModificationError(_boolList); } if (_pos < _boolList.length) { var pos = _pos++; _current = _boolList._data[pos >> BoolList._entryShift] & (1 << (pos & BoolList._entrySignBitIndex)) != 0; return true; } _current = false; return false; } } �MN<)*?.F/$',?(<( +;>2M3+ .*)H@=AE5; >(W_B$3;')0GN1JQ1AB=CH6  ?*4  -? 55*,/1,5314. NJ?=; :(H K-=+&<9  G  3#:9+-;LKN?9 #7 4C  (4#@< $package:collection/src/boollist.dart0org-dartlang-sdk:///sdk/lib/collection/list.dartdart:collection/list.dartkfile:///github/home/.pub-cache/hosted/pub.dartlang.org/collection-1.16.0/lib/src/unmodifiable_wrappers.dart�1// Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. import 'empty_unmodifiable_set.dart'; import 'wrappers.dart'; export 'dart:collection' show UnmodifiableListView, UnmodifiableMapView; /// A fixed-length list. /// /// A `NonGrowableListView` contains a [List] object and ensures that /// its length does not change. /// Methods that would change the length of the list, /// such as [add] and [remove], throw an [UnsupportedError]. /// All other methods work directly on the underlying list. /// /// This class _does_ allow changes to the contents of the wrapped list. /// You can, for example, [sort] the list. /// Permitted operations defer to the wrapped list. class NonGrowableListView extends DelegatingList with NonGrowableListMixin { NonGrowableListView(List listBase) : super(listBase); } /// Mixin class that implements a throwing version of all list operations that /// change the List's length. abstract class NonGrowableListMixin implements List { static Never _throw() { throw UnsupportedError('Cannot change the length of a fixed-length list'); } /// Throws an [UnsupportedError]; /// operations that change the length of the list are disallowed. @override set length(int newLength) => _throw(); /// Throws an [UnsupportedError]; /// operations that change the length of the list are disallowed. @override bool add(E value) => _throw(); /// Throws an [UnsupportedError]; /// operations that change the length of the list are disallowed. @override void addAll(Iterable iterable) => _throw(); /// Throws an [UnsupportedError]; /// operations that change the length of the list are disallowed. @override void insert(int index, E element) => _throw(); /// Throws an [UnsupportedError]; /// operations that change the length of the list are disallowed. @override void insertAll(int index, Iterable iterable) => _throw(); /// Throws an [UnsupportedError]; /// operations that change the length of the list are disallowed. @override bool remove(Object? value) => _throw(); /// Throws an [UnsupportedError]; /// operations that change the length of the list are disallowed. @override E removeAt(int index) => _throw(); /// Throws an [UnsupportedError]; /// operations that change the length of the list are disallowed. @override E removeLast() => _throw(); /// Throws an [UnsupportedError]; /// operations that change the length of the list are disallowed. @override void removeWhere(bool Function(E) test) => _throw(); /// Throws an [UnsupportedError]; /// operations that change the length of the list are disallowed. @override void retainWhere(bool Function(E) test) => _throw(); /// Throws an [UnsupportedError]; /// operations that change the length of the list are disallowed. @override void removeRange(int start, int end) => _throw(); /// Throws an [UnsupportedError]; /// operations that change the length of the list are disallowed. @override void replaceRange(int start, int end, Iterable iterable) => _throw(); /// Throws an [UnsupportedError]; /// operations that change the length of the list are disallowed. @override void clear() => _throw(); } /// An unmodifiable set. /// /// An [UnmodifiableSetView] contains a [Set], /// and prevents that set from being changed through the view. /// Methods that could change the set, /// such as [add] and [remove], throw an [UnsupportedError]. /// Permitted operations defer to the wrapped set. class UnmodifiableSetView extends DelegatingSet with UnmodifiableSetMixin { UnmodifiableSetView(Set setBase) : super(setBase); /// An unmodifiable empty set. /// /// This is the same as `UnmodifiableSetView(Set())`, except that it /// can be used in const contexts. const factory UnmodifiableSetView.empty() = EmptyUnmodifiableSet; } /// Mixin class that implements a throwing version of all set operations that /// change the Set. abstract class UnmodifiableSetMixin implements Set { static Never _throw() { throw UnsupportedError('Cannot modify an unmodifiable Set'); } /// Throws an [UnsupportedError]; /// operations that change the set are disallowed. @override bool add(E value) => _throw(); /// Throws an [UnsupportedError]; /// operations that change the set are disallowed. @override void addAll(Iterable elements) => _throw(); /// Throws an [UnsupportedError]; /// operations that change the set are disallowed. @override bool remove(Object? value) => _throw(); /// Throws an [UnsupportedError]; /// operations that change the set are disallowed. @override void removeAll(Iterable elements) => _throw(); /// Throws an [UnsupportedError]; /// operations that change the set are disallowed. @override void retainAll(Iterable elements) => _throw(); /// Throws an [UnsupportedError]; /// operations that change the set are disallowed. @override void removeWhere(bool Function(E) test) => _throw(); /// Throws an [UnsupportedError]; /// operations that change the set are disallowed. @override void retainWhere(bool Function(E) test) => _throw(); /// Throws an [UnsupportedError]; /// operations that change the set are disallowed. @override void clear() => _throw(); } /// Mixin class that implements a throwing version of all map operations that /// change the Map. abstract class UnmodifiableMapMixin implements Map { static Never _throw() { throw UnsupportedError('Cannot modify an unmodifiable Map'); } /// Throws an [UnsupportedError]; /// operations that change the map are disallowed. @override void operator []=(K key, V value) => _throw(); /// Throws an [UnsupportedError]; /// operations that change the map are disallowed. @override V putIfAbsent(K key, V Function() ifAbsent) => _throw(); /// Throws an [UnsupportedError]; /// operations that change the map are disallowed. @override void addAll(Map other) => _throw(); /// Throws an [UnsupportedError]; /// operations that change the map are disallowed. @override V remove(Object? key) => _throw(); /// Throws an [UnsupportedError]; /// operations that change the map are disallowed. @override void clear() => _throw(); /// Throws an [UnsupportedError]; /// operations that change the map are disallowed. set first(_) => _throw(); /// Throws an [UnsupportedError]; /// operations that change the map are disallowed. set last(_) => _throw(); } ��NN<&IF 6=<I+47#;O<O$D )$D !$D 1$D 1$D ?$D *$D %$D $D 7$D 7$D 4$D K$D /?'=36#8!G%GN;A$5 !$5 1$5 *$5 1$5 1$5 7$5 7$5 NAA$5 1$5 ;$5 ,$5 %$5 $5$51package:collection/src/unmodifiable_wrappers.dartgfile:///github/home/.pub-cache/hosted/pub.dartlang.org/collection-1.16.0/lib/src/canonicalized_map.dart��// Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. import 'dart:collection'; /// A map whose keys are converted to canonical values of type `C`. /// /// This is useful for using case-insensitive String keys, for example. It's /// more efficient than a [LinkedHashMap] with a custom equality operator /// because it only canonicalizes each key once, rather than doing so for each /// comparison. class CanonicalizedMap implements Map { final C Function(K) _canonicalize; final bool Function(K)? _isValidKeyFn; final _base = >{}; /// Creates an empty canonicalized map. /// /// The [canonicalize] function should return the canonical value for the /// given key. Keys with the same canonical value are considered equivalent. /// /// The [isValidKey] function is called before calling [canonicalize] for /// methods that take arbitrary objects. It can be used to filter out keys /// that can't be canonicalized. CanonicalizedMap(C Function(K key) canonicalize, {bool Function(K key)? isValidKey}) : _canonicalize = canonicalize, _isValidKeyFn = isValidKey; /// Creates a canonicalized map that is initialized with the key/value pairs /// of [other]. /// /// The [canonicalize] function should return the canonical value for the /// given key. Keys with the same canonical value are considered equivalent. /// /// The [isValidKey] function is called before calling [canonicalize] for /// methods that take arbitrary objects. It can be used to filter out keys /// that can't be canonicalized. CanonicalizedMap.from(Map other, C Function(K key) canonicalize, {bool Function(K key)? isValidKey}) : _canonicalize = canonicalize, _isValidKeyFn = isValidKey { addAll(other); } @override V? operator [](Object? key) { if (!_isValidKey(key)) return null; var pair = _base[_canonicalize(key as K)]; return pair?.value; } @override void operator []=(K key, V value) { if (!_isValidKey(key)) return; _base[_canonicalize(key)] = MapEntry(key, value); } @override void addAll(Map other) { other.forEach((key, value) => this[key] = value); } @override void addEntries(Iterable> entries) => _base.addEntries(entries .map((e) => MapEntry(_canonicalize(e.key), MapEntry(e.key, e.value)))); @override Map cast() => _base.cast(); @override void clear() { _base.clear(); } @override bool containsKey(Object? key) { if (!_isValidKey(key)) return false; return _base.containsKey(_canonicalize(key as K)); } @override bool containsValue(Object? value) => _base.values.any((pair) => pair.value == value); @override Iterable> get entries => _base.entries.map((e) => MapEntry(e.value.key, e.value.value)); @override void forEach(void Function(K, V) f) { _base.forEach((key, pair) => f(pair.key, pair.value)); } @override bool get isEmpty => _base.isEmpty; @override bool get isNotEmpty => _base.isNotEmpty; @override Iterable get keys => _base.values.map((pair) => pair.key); @override int get length => _base.length; @override Map map(MapEntry Function(K, V) transform) => _base.map((_, pair) => transform(pair.key, pair.value)); @override V putIfAbsent(K key, V Function() ifAbsent) { return _base .putIfAbsent(_canonicalize(key), () => MapEntry(key, ifAbsent())) .value; } @override V? remove(Object? key) { if (!_isValidKey(key)) return null; var pair = _base.remove(_canonicalize(key as K)); return pair?.value; } @override void removeWhere(bool Function(K key, V value) test) => _base.removeWhere((_, pair) => test(pair.key, pair.value)); @Deprecated("Use cast instead") Map retype() => cast(); @override V update(K key, V Function(V) update, {V Function()? ifAbsent}) => _base.update(_canonicalize(key), (pair) { var value = pair.value; var newValue = update(value); if (identical(newValue, value)) return pair; return MapEntry(key, newValue); }, ifAbsent: ifAbsent == null ? null : () => MapEntry(key, ifAbsent())).value; @override void updateAll(V Function(K key, V value) update) => _base.updateAll((_, pair) { var value = pair.value; var key = pair.key; var newValue = update(key, value); if (identical(value, newValue)) return pair; return MapEntry(key, newValue); }); @override Iterable get values => _base.values.map((pair) => pair.value); @override String toString() => MapBase.mapToString(this); bool _isValidKey(Object? key) => (key is K) && (_isValidKeyFn == null || _isValidKeyFn!(key)); } ��NN<DMJO7%)'*LOLM#3*&$OLOLM#I*&% (/  !6 PN 6  ")7 '7 *F (; % + @ " H? 0J (6 :B"2 E0 &5( P 7" +5(  D 2#D-package:collection/src/canonicalized_map.dart�6��yfile:///github/home/.pub-cache/hosted/pub.dartlang.org/collection-1.16.0/lib/src/combined_wrappers/combined_iterable.dart��// Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. import 'dart:collection'; import 'combined_iterator.dart'; /// A view of several iterables combined sequentially into a single iterable. /// /// All methods and accessors treat the [CombinedIterableView] as if it were a /// single concatenated iterable, but the underlying implementation is based on /// lazily accessing individual iterable instances. This means that if the /// underlying iterables change, the [CombinedIterableView] will reflect those /// changes. class CombinedIterableView extends IterableBase { /// The iterables that this combines. final Iterable> _iterables; /// Creates a combined view of [iterables]. const CombinedIterableView(this._iterables); @override Iterator get iterator => CombinedIterator(_iterables.map((i) => i.iterator).iterator); // Special cased contains/isEmpty/length since many iterables have an // efficient implementation instead of running through the entire iterator. @override bool contains(Object? element) => _iterables.any((i) => i.contains(element)); @override bool get isEmpty => _iterables.every((i) => i.isEmpty); @override int get length => _iterables.fold(0, (length, i) => length + i.length); } (NN<!NOPKO 8(*./ GHN P : J?package:collection/src/combined_wrappers/combined_iterable.dartyfile:///github/home/.pub-cache/hosted/pub.dartlang.org/collection-1.16.0/lib/src/combined_wrappers/combined_iterator.dart��// Copyright (c) 2020, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. /// The iterator for `CombinedIterableView` and `CombinedListView`. /// /// Moves through each iterable's iterator in sequence. class CombinedIterator implements Iterator { /// The iterators that this combines, or `null` if done iterating. /// /// Because this comes from a call to [Iterable.map], it's lazy and will /// avoid instantiating unnecessary iterators. Iterator>? _iterators; CombinedIterator(Iterator> iterators) : _iterators = iterators { if (!iterators.moveNext()) _iterators = null; } @override T get current { var iterators = _iterators; if (iterators != null) return iterators.current.current; return null as T; } @override bool moveNext() { var iterators = _iterators; if (iterators != null) { do { if (iterators.current.moveNext()) { return true; } } while (iterators.moveNext()); _iterators = null; } return false; } } )NN<D83EK1%O2  =   , &?package:collection/src/combined_wrappers/combined_iterator.dartufile:///github/home/.pub-cache/hosted/pub.dartlang.org/collection-1.16.0/lib/src/combined_wrappers/combined_list.dart�// Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. import 'dart:collection'; import 'combined_iterator.dart'; /// A view of several lists combined into a single list. /// /// All methods and accessors treat the [CombinedListView] list as if it were a /// single concatenated list, but the underlying implementation is based on /// lazily accessing individual list instances. This means that if the /// underlying lists change, the [CombinedListView] will reflect those changes. /// /// The index operator (`[]`) and [length] property of a [CombinedListView] are /// both `O(lists)` rather than `O(1)`. A [CombinedListView] is unmodifiable. class CombinedListView extends ListBase implements UnmodifiableListView { static Never _throw() { throw UnsupportedError('Cannot modify an unmodifiable List'); } /// The lists that this combines. final List> _lists; /// Creates a combined view of [lists]. CombinedListView(this._lists); @override Iterator get iterator => CombinedIterator(_lists.map((i) => i.iterator).iterator); @override set length(int length) { _throw(); } @override int get length => _lists.fold(0, (length, list) => length + list.length); @override T operator [](int index) { var initialIndex = index; for (var i = 0; i < _lists.length; i++) { var list = _lists[i]; if (index < list.length) { return list[index]; } index -= list.length; } throw RangeError.index(initialIndex, this, 'index', null, length); } @override void operator []=(int index, T value) { _throw(); } @override void clear() { _throw(); } @override bool remove(Object? element) { _throw(); } @override void removeWhere(bool Function(T) test) { _throw(); } @override void retainWhere(bool Function(T) test) { _throw(); } } QNN<!9PLGPPN.)B$*! C  L .!G *  ! , ,;package:collection/src/combined_wrappers/combined_list.dart7org-dartlang-sdk:///sdk/lib/collection/collections.dart dart:collection/collections.darttfile:///github/home/.pub-cache/hosted/pub.dartlang.org/collection-1.16.0/lib/src/combined_wrappers/combined_map.dart�o// Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. import 'dart:collection'; import 'combined_iterable.dart'; /// Returns a new map that represents maps flattened into a single map. /// /// All methods and accessors treat the new map as-if it were a single /// concatenated map, but the underlying implementation is based on lazily /// accessing individual map instances. In the occasion where a key occurs in /// multiple maps the first value is returned. /// /// The resulting map has an index operator (`[]`) that is `O(maps)`, rather /// than `O(1)`, and the map is unmodifiable, but underlying changes to these /// maps are still accessible from the resulting map. /// /// The `length` getter is `O(M)` where M is the total number of entries in /// all maps, since it has to remove duplicate entries. class CombinedMapView extends UnmodifiableMapBase { final Iterable> _maps; /// Create a new combined view of multiple maps. /// /// The iterable is accessed lazily so it should be collection type like /// [List] or [Set] rather than a lazy iterable produced by `map()` et al. CombinedMapView(this._maps); @override V? operator [](Object? key) { for (var map in _maps) { // Avoid two hash lookups on a positive hit. var value = map[key]; if (value != null || map.containsKey(value)) { return value; } } return null; } /// The keys of [this]. /// /// The returned iterable has efficient `contains` operations, assuming the /// iterables returned by the wrapped maps have efficient `contains` operations /// for their `keys` iterables. /// /// The `length` must do deduplication and thus is not optimized. /// /// The order of iteration is defined by the individual `Map` implementations, /// but must be consistent between changes to the maps. /// /// Unlike most [Map] implementations, modifying an individual map while /// iterating the keys will _sometimes_ throw. This behavior may change in /// the future. @override Iterable get keys => _DeduplicatingIterableView( CombinedIterableView(_maps.map((m) => m.keys))); } /// A view of an iterable that skips any duplicate entries. class _DeduplicatingIterableView extends IterableBase { final Iterable _iterable; const _DeduplicatingIterableView(this._iterable); @override Iterator get iterator => _DeduplicatingIterator(_iterable.iterator); // Special cased contains/isEmpty since many iterables have an efficient // implementation instead of running through the entire iterator. // // Note: We do not do this for `length` because we have to remove the // duplicates. @override bool contains(Object? element) => _iterable.contains(element); @override bool get isEmpty => _iterable.isEmpty; } /// An iterator that wraps another iterator and skips duplicate values. class _DeduplicatingIterator implements Iterator { final Iterator _iterator; final _emitted = HashSet(); _DeduplicatingIterator(this._iterator); @override T get current => _iterator.current; @override bool moveNext() { while (_iterator.moveNext()) { if (_emitted.add(current)) { return true; } } return false; } } jNN<!HGKN/MN6L8@#3KM 35NR"DQ:KM 67<>4 JKDH A )H9!* & ##:package:collection/src/combined_wrappers/combined_map.dartafile:///github/home/.pub-cache/hosted/pub.dartlang.org/collection-1.16.0/lib/src/comparators.dart��// Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. // Character constants. const int _zero = 0x30; const int _upperCaseA = 0x41; const int _upperCaseZ = 0x5a; const int _lowerCaseA = 0x61; const int _lowerCaseZ = 0x7a; const int _asciiCaseBit = 0x20; /// Checks if strings [a] and [b] differ only on the case of ASCII letters. /// /// Strings are equal if they have the same length, and the characters at /// each index are the same, or they are ASCII letters where one is upper-case /// and the other is the lower-case version of the same letter. /// /// The comparison does not ignore the case of non-ASCII letters, so /// an upper-case ae-ligature (Æ) is different from /// a lower case ae-ligature (æ). /// /// Ignoring non-ASCII letters is not generally a good idea, but it makes sense /// for situations where the strings are known to be ASCII. Examples could /// be Dart identifiers, base-64 or hex encoded strings, GUIDs or similar /// strings with a known structure. bool equalsIgnoreAsciiCase(String a, String b) { if (a.length != b.length) return false; for (var i = 0; i < a.length; i++) { var aChar = a.codeUnitAt(i); var bChar = b.codeUnitAt(i); if (aChar == bChar) continue; // Quick-check for whether this may be different cases of the same letter. if (aChar ^ bChar != _asciiCaseBit) return false; // If it's possible, then check if either character is actually an ASCII // letter. var aCharLowerCase = aChar | _asciiCaseBit; if (_lowerCaseA <= aCharLowerCase && aCharLowerCase <= _lowerCaseZ) { continue; } return false; } return true; } /// Hash code for a string which is compatible with [equalsIgnoreAsciiCase]. /// /// The hash code is unaffected by changing the case of ASCII letters, but /// the case of non-ASCII letters do affect the result. int hashIgnoreAsciiCase(String string) { // Jenkins hash code ( http://en.wikipedia.org/wiki/Jenkins_hash_function). // adapted to smi values. // Same hash used by dart2js for strings, modified to ignore ASCII letter // case. var hash = 0; for (var i = 0; i < string.length; i++) { var char = string.codeUnitAt(i); // Convert lower-case ASCII letters to upper case.upper // This ensures that strings that differ only in case will have the // same hash code. if (_lowerCaseA <= char && char <= _lowerCaseZ) char -= _asciiCaseBit; hash = 0x1fffffff & (hash + char); hash = 0x1fffffff & (hash + ((0x0007ffff & hash) << 10)); hash >>= 6; } hash = 0x1fffffff & (hash + ((0x03ffffff & hash) << 3)); hash >>= 11; return 0x1fffffff & (hash + ((0x00003fff & hash) << 15)); } /// Compares [a] and [b] lexically, converting ASCII letters to upper case. /// /// Comparison treats all lower-case ASCII letters as upper-case letters, /// but does no case conversion for non-ASCII letters. /// /// If two strings differ only on the case of ASCII letters, the one with the /// capital letter at the first difference will compare as less than the other /// string. This tie-breaking ensures that the comparison is a total ordering /// on strings and is compatible with equality. /// /// Ignoring non-ASCII letters is not generally a good idea, but it makes sense /// for situations where the strings are known to be ASCII. Examples could /// be Dart identifiers, base-64 or hex encoded strings, GUIDs or similar /// strings with a known structure. int compareAsciiUpperCase(String a, String b) { var defaultResult = 0; // Returned if no difference found. for (var i = 0; i < a.length; i++) { if (i >= b.length) return 1; var aChar = a.codeUnitAt(i); var bChar = b.codeUnitAt(i); if (aChar == bChar) continue; // Upper-case if letters. var aUpperCase = aChar; var bUpperCase = bChar; if (_lowerCaseA <= aChar && aChar <= _lowerCaseZ) { aUpperCase -= _asciiCaseBit; } if (_lowerCaseA <= bChar && bChar <= _lowerCaseZ) { bUpperCase -= _asciiCaseBit; } if (aUpperCase != bUpperCase) return (aUpperCase - bUpperCase).sign; if (defaultResult == 0) defaultResult = (aChar - bChar); } if (b.length > a.length) return -1; return defaultResult.sign; } /// Compares [a] and [b] lexically, converting ASCII letters to lower case. /// /// Comparison treats all upper-case ASCII letters as lower-case letters, /// but does no case conversion for non-ASCII letters. /// /// If two strings differ only on the case of ASCII letters, the one with the /// capital letter at the first difference will compare as less than the other /// string. This tie-breaking ensures that the comparison is a total ordering /// on strings. /// /// Ignoring non-ASCII letters is not generally a good idea, but it makes sense /// for situations where the strings are known to be ASCII. Examples could /// be Dart identifiers, base-64 or hex encoded strings, GUIDs or similar /// strings with a known structure. int compareAsciiLowerCase(String a, String b) { var defaultResult = 0; for (var i = 0; i < a.length; i++) { if (i >= b.length) return 1; var aChar = a.codeUnitAt(i); var bChar = b.codeUnitAt(i); if (aChar == bChar) continue; var aLowerCase = aChar; var bLowerCase = bChar; // Upper case if ASCII letters. if (_upperCaseA <= bChar && bChar <= _upperCaseZ) { bLowerCase += _asciiCaseBit; } if (_upperCaseA <= aChar && aChar <= _upperCaseZ) { aLowerCase += _asciiCaseBit; } if (aLowerCase != bLowerCase) return (aLowerCase - bLowerCase).sign; if (defaultResult == 0) defaultResult = aChar - bChar; } if (b.length > a.length) return -1; return defaultResult.sign; } /// Compares strings [a] and [b] according to [natural sort ordering][]. /// /// A natural sort ordering is a lexical ordering where embedded /// numerals (digit sequences) are treated as a single unit and ordered by /// numerical value. /// This means that `"a10b"` will be ordered after `"a7b"` in natural /// ordering, where lexical ordering would put the `1` before the `7`, ignoring /// that the `1` is part of a larger number. /// /// Example: /// The following strings are in the order they would be sorted by using this /// comparison function: /// /// "a", "a0", "a0b", "a1", "a01", "a9", "a10", "a100", "a100b", "aa" /// /// [natural sort ordering]: https://en.wikipedia.org/wiki/Natural_sort_order int compareNatural(String a, String b) { for (var i = 0; i < a.length; i++) { if (i >= b.length) return 1; var aChar = a.codeUnitAt(i); var bChar = b.codeUnitAt(i); if (aChar != bChar) { return _compareNaturally(a, b, i, aChar, bChar); } } if (b.length > a.length) return -1; return 0; } /// Compares strings [a] and [b] according to lower-case /// [natural sort ordering][]. /// /// ASCII letters are converted to lower case before being compared, like /// for [compareAsciiLowerCase], then the result is compared like for /// [compareNatural]. /// /// If two strings differ only on the case of ASCII letters, the one with the /// capital letter at the first difference will compare as less than the other /// string. This tie-breaking ensures that the comparison is a total ordering /// on strings. /// /// [natural sort ordering]: https://en.wikipedia.org/wiki/Natural_sort_order int compareAsciiLowerCaseNatural(String a, String b) { var defaultResult = 0; // Returned if no difference found. for (var i = 0; i < a.length; i++) { if (i >= b.length) return 1; var aChar = a.codeUnitAt(i); var bChar = b.codeUnitAt(i); if (aChar == bChar) continue; var aLowerCase = aChar; var bLowerCase = bChar; if (_upperCaseA <= aChar && aChar <= _upperCaseZ) { aLowerCase += _asciiCaseBit; } if (_upperCaseA <= bChar && bChar <= _upperCaseZ) { bLowerCase += _asciiCaseBit; } if (aLowerCase != bLowerCase) { return _compareNaturally(a, b, i, aLowerCase, bLowerCase); } if (defaultResult == 0) defaultResult = aChar - bChar; } if (b.length > a.length) return -1; return defaultResult.sign; } /// Compares strings [a] and [b] according to upper-case /// [natural sort ordering][]. /// /// ASCII letters are converted to upper case before being compared, like /// for [compareAsciiUpperCase], then the result is compared like for /// [compareNatural]. /// /// If two strings differ only on the case of ASCII letters, the one with the /// capital letter at the first difference will compare as less than the other /// string. This tie-breaking ensures that the comparison is a total ordering /// on strings /// /// [natural sort ordering]: https://en.wikipedia.org/wiki/Natural_sort_order int compareAsciiUpperCaseNatural(String a, String b) { var defaultResult = 0; for (var i = 0; i < a.length; i++) { if (i >= b.length) return 1; var aChar = a.codeUnitAt(i); var bChar = b.codeUnitAt(i); if (aChar == bChar) continue; var aUpperCase = aChar; var bUpperCase = bChar; if (_lowerCaseA <= aChar && aChar <= _lowerCaseZ) { aUpperCase -= _asciiCaseBit; } if (_lowerCaseA <= bChar && bChar <= _lowerCaseZ) { bUpperCase -= _asciiCaseBit; } if (aUpperCase != bUpperCase) { return _compareNaturally(a, b, i, aUpperCase, bUpperCase); } if (defaultResult == 0) defaultResult = aChar - bChar; } if (b.length > a.length) return -1; return defaultResult.sign; } /// Check for numbers overlapping the current mismatched characters. /// /// If both [aChar] and [bChar] are digits, use numerical comparison. /// Check if the previous characters is a non-zero number, and if not, /// skip - but count - leading zeros before comparing numbers. /// /// If one is a digit and the other isn't, check if the previous character /// is a digit, and if so, the the one with the digit is the greater number. /// /// Otherwise just returns the difference between [aChar] and [bChar]. int _compareNaturally(String a, String b, int index, int aChar, int bChar) { assert(aChar != bChar); var aIsDigit = _isDigit(aChar); var bIsDigit = _isDigit(bChar); if (aIsDigit) { if (bIsDigit) { return _compareNumerically(a, b, aChar, bChar, index); } else if (index > 0 && _isDigit(a.codeUnitAt(index - 1))) { // aChar is the continuation of a longer number. return 1; } } else if (bIsDigit && index > 0 && _isDigit(b.codeUnitAt(index - 1))) { // bChar is the continuation of a longer number. return -1; } // Characters are both non-digits, or not continuation of earlier number. return (aChar - bChar).sign; } /// Compare numbers overlapping [aChar] and [bChar] numerically. /// /// If the numbers have the same numerical value, but one has more leading /// zeros, the longer number is considered greater than the shorter one. /// /// This ensures a total ordering on strings compatible with equality. int _compareNumerically(String a, String b, int aChar, int bChar, int index) { // Both are digits. Find the first significant different digit, then find // the length of the numbers. if (_isNonZeroNumberSuffix(a, index)) { // Part of a longer number, differs at this index, just count the length. var result = _compareDigitCount(a, b, index, index); if (result != 0) return result; // If same length, the current character is the most significant differing // digit. return (aChar - bChar).sign; } // Not part of larger (non-zero) number, so skip leading zeros before // comparing numbers. var aIndex = index; var bIndex = index; if (aChar == _zero) { do { aIndex++; if (aIndex == a.length) return -1; // number in a is zero, b is not. aChar = a.codeUnitAt(aIndex); } while (aChar == _zero); if (!_isDigit(aChar)) return -1; } else if (bChar == _zero) { do { bIndex++; if (bIndex == b.length) return 1; // number in b is zero, a is not. bChar = b.codeUnitAt(bIndex); } while (bChar == _zero); if (!_isDigit(bChar)) return 1; } if (aChar != bChar) { var result = _compareDigitCount(a, b, aIndex, bIndex); if (result != 0) return result; return (aChar - bChar).sign; } // Same leading digit, one had more leading zeros. // Compare digits until reaching a difference. while (true) { var aIsDigit = false; var bIsDigit = false; aChar = 0; bChar = 0; if (++aIndex < a.length) { aChar = a.codeUnitAt(aIndex); aIsDigit = _isDigit(aChar); } if (++bIndex < b.length) { bChar = b.codeUnitAt(bIndex); bIsDigit = _isDigit(bChar); } if (aIsDigit) { if (bIsDigit) { if (aChar == bChar) continue; // First different digit found. break; } // bChar is non-digit, so a has longer number. return 1; } else if (bIsDigit) { return -1; // b has longer number. } else { // Neither is digit, so numbers had same numerical value. // Fall back on number of leading zeros // (reflected by difference in indices). return (aIndex - bIndex).sign; } } // At first differing digits. var result = _compareDigitCount(a, b, aIndex, bIndex); if (result != 0) return result; return (aChar - bChar).sign; } /// Checks which of [a] and [b] has the longest sequence of digits. /// /// Starts counting from `i + 1` and `j + 1` (assumes that `a[i]` and `b[j]` are /// both already known to be digits). int _compareDigitCount(String a, String b, int i, int j) { while (++i < a.length) { var aIsDigit = _isDigit(a.codeUnitAt(i)); if (++j == b.length) return aIsDigit ? 1 : 0; var bIsDigit = _isDigit(b.codeUnitAt(j)); if (aIsDigit) { if (bIsDigit) continue; return 1; } else if (bIsDigit) { return -1; } else { return 0; } } if (++j < b.length && _isDigit(b.codeUnitAt(j))) { return -1; } return 0; } bool _isDigit(int charCode) => (charCode ^ _zero) <= 9; /// Check if the digit at [index] is continuing a non-zero number. /// /// If there is no non-zero digits before, then leading zeros at [index] /// are also ignored when comparing numerically. If there is a non-zero digit /// before, then zeros at [index] are significant. bool _isNonZeroNumberSuffix(String string, int index) { while (--index >= 0) { var char = string.codeUnitAt(index); if (char != _zero) return _isDigit(char); } return false; } ��NN< LJO@E4"PKJ$1*'!!"O6M0JMK8)NL ,%;<LJ7NON0PKJ$0='!!!"8#8#I=&LJ7NONPKJ$0'!!!"$8#8#I;&IAKFP- NJN)'!!!7& 9JFNONN7='!!!"8#8#$A;&9JFNONN7'!!!"8#8#$A;&EFG?KMGM""=A7K5LAKIGOL *N9$O!H K$% J$$;$!51$"$"&(5) @./% 9"DQ&;.2. 5 8CIN38).'package:collection/src/comparators.dartlfile:///github/home/.pub-cache/hosted/pub.dartlang.org/collection-1.16.0/lib/src/empty_unmodifiable_set.dart��// Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. import 'dart:collection'; import 'package:collection/collection.dart'; /// An unmodifiable, empty set which can be constant. class EmptyUnmodifiableSet extends IterableBase with UnmodifiableSetMixin implements UnmodifiableSetView { const EmptyUnmodifiableSet(); @override Iterator get iterator => Iterable.empty().iterator; @override int get length => 0; @override EmptyUnmodifiableSet cast() => EmptyUnmodifiableSet(); @override bool contains(Object? element) => false; @override bool containsAll(Iterable other) => other.isEmpty; @override Iterable followedBy(Iterable other) => DelegatingIterable(other); @override E? lookup(Object? element) => null; @Deprecated("Use cast instead") @override EmptyUnmodifiableSet retype() => EmptyUnmodifiableSet(); @override E singleWhere(bool Function(E) test, {E Function()? orElse}) => orElse != null ? orElse() : throw StateError('No element'); @override Iterable whereType() => Iterable.empty(); @override Set toSet() => {}; @override Set union(Set other) => Set.of(other); @override Set intersection(Set other) => {}; @override Set difference(Set other) => {}; } /NN<-66!(  <  B + > J &" D BB 2  / 1 /2package:collection/src/empty_unmodifiable_set.dart�6��^file:///github/home/.pub-cache/hosted/pub.dartlang.org/collection-1.16.0/lib/src/wrappers.dart�Y�// Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. import 'dart:collection'; import 'dart:math' as math; import 'unmodifiable_wrappers.dart'; /// A base class for delegating iterables. /// /// Subclasses can provide a [_base] that should be delegated to. Unlike /// [DelegatingIterable], this allows the base to be created on demand. abstract class _DelegatingIterableBase implements Iterable { Iterable get _base; const _DelegatingIterableBase(); @override bool any(bool Function(E) test) => _base.any(test); @override Iterable cast() => _base.cast(); @override bool contains(Object? element) => _base.contains(element); @override E elementAt(int index) => _base.elementAt(index); @override bool every(bool Function(E) test) => _base.every(test); @override Iterable expand(Iterable Function(E) f) => _base.expand(f); @override E get first => _base.first; @override E firstWhere(bool Function(E) test, {E Function()? orElse}) => _base.firstWhere(test, orElse: orElse); @override T fold(T initialValue, T Function(T previousValue, E element) combine) => _base.fold(initialValue, combine); @override Iterable followedBy(Iterable other) => _base.followedBy(other); @override void forEach(void Function(E) f) => _base.forEach(f); @override bool get isEmpty => _base.isEmpty; @override bool get isNotEmpty => _base.isNotEmpty; @override Iterator get iterator => _base.iterator; @override String join([String separator = '']) => _base.join(separator); @override E get last => _base.last; @override E lastWhere(bool Function(E) test, {E Function()? orElse}) => _base.lastWhere(test, orElse: orElse); @override int get length => _base.length; @override Iterable map(T Function(E) f) => _base.map(f); @override E reduce(E Function(E value, E element) combine) => _base.reduce(combine); @Deprecated("Use cast instead") Iterable retype() => cast(); @override E get single => _base.single; @override E singleWhere(bool Function(E) test, {E Function()? orElse}) { return _base.singleWhere(test, orElse: orElse); } @override Iterable skip(int n) => _base.skip(n); @override Iterable skipWhile(bool Function(E) test) => _base.skipWhile(test); @override Iterable take(int n) => _base.take(n); @override Iterable takeWhile(bool Function(E) test) => _base.takeWhile(test); @override List toList({bool growable = true}) => _base.toList(growable: growable); @override Set toSet() => _base.toSet(); @override Iterable where(bool Function(E) test) => _base.where(test); @override Iterable whereType() => _base.whereType(); @override String toString() => _base.toString(); } /// An [Iterable] that delegates all operations to a base iterable. /// /// This class can be used to hide non-`Iterable` methods of an iterable object, /// or it can be extended to add extra functionality on top of an existing /// iterable object. class DelegatingIterable extends _DelegatingIterableBase { @override final Iterable _base; /// Creates a wrapper that forwards operations to [base]. const DelegatingIterable(Iterable base) : _base = base; /// Creates a wrapper that asserts the types of values in [base]. /// /// This soundly converts an [Iterable] without a generic type to an /// `Iterable` by asserting that its elements are instances of `E` whenever /// they're accessed. If they're not, it throws a [CastError]. /// /// This forwards all operations to [base], so any changes in [base] will be /// reflected in [this]. If [base] is already an `Iterable`, it's returned /// unmodified. @Deprecated('Use iterable.cast instead.') static Iterable typed(Iterable base) => base.cast(); } /// A [List] that delegates all operations to a base list. /// /// This class can be used to hide non-`List` methods of a list object, or it /// can be extended to add extra functionality on top of an existing list /// object. class DelegatingList extends _DelegatingIterableBase implements List { @override final List _base; const DelegatingList(List base) : _base = base; /// Creates a wrapper that asserts the types of values in [base]. /// /// This soundly converts a [List] without a generic type to a `List` by /// asserting that its elements are instances of `E` whenever they're /// accessed. If they're not, it throws a [CastError]. Note that even if an /// operation throws a [CastError], it may still mutate the underlying /// collection. /// /// This forwards all operations to [base], so any changes in [base] will be /// reflected in [this]. If [base] is already a `List`, it's returned /// unmodified. @Deprecated('Use list.cast instead.') static List typed(List base) => base.cast(); @override E operator [](int index) => _base[index]; @override void operator []=(int index, E value) { _base[index] = value; } @override List operator +(List other) => _base + other; @override void add(E value) { _base.add(value); } @override void addAll(Iterable iterable) { _base.addAll(iterable); } @override Map asMap() => _base.asMap(); @override List cast() => _base.cast(); @override void clear() { _base.clear(); } @override void fillRange(int start, int end, [E? fillValue]) { _base.fillRange(start, end, fillValue); } @override set first(E value) { if (isEmpty) throw RangeError.index(0, this); this[0] = value; } @override Iterable getRange(int start, int end) => _base.getRange(start, end); @override int indexOf(E element, [int start = 0]) => _base.indexOf(element, start); @override int indexWhere(bool Function(E) test, [int start = 0]) => _base.indexWhere(test, start); @override void insert(int index, E element) { _base.insert(index, element); } @override void insertAll(int index, Iterable iterable) { _base.insertAll(index, iterable); } @override set last(E value) { if (isEmpty) throw RangeError.index(0, this); this[length - 1] = value; } @override int lastIndexOf(E element, [int? start]) => _base.lastIndexOf(element, start); @override int lastIndexWhere(bool Function(E) test, [int? start]) => _base.lastIndexWhere(test, start); @override set length(int newLength) { _base.length = newLength; } @override bool remove(Object? value) => _base.remove(value); @override E removeAt(int index) => _base.removeAt(index); @override E removeLast() => _base.removeLast(); @override void removeRange(int start, int end) { _base.removeRange(start, end); } @override void removeWhere(bool Function(E) test) { _base.removeWhere(test); } @override void replaceRange(int start, int end, Iterable iterable) { _base.replaceRange(start, end, iterable); } @override void retainWhere(bool Function(E) test) { _base.retainWhere(test); } @Deprecated("Use cast instead") @override List retype() => cast(); @override Iterable get reversed => _base.reversed; @override void setAll(int index, Iterable iterable) { _base.setAll(index, iterable); } @override void setRange(int start, int end, Iterable iterable, [int skipCount = 0]) { _base.setRange(start, end, iterable, skipCount); } @override void shuffle([math.Random? random]) { _base.shuffle(random); } @override void sort([int Function(E, E)? compare]) { _base.sort(compare); } @override List sublist(int start, [int? end]) => _base.sublist(start, end); } /// A [Set] that delegates all operations to a base set. /// /// This class can be used to hide non-`Set` methods of a set object, or it can /// be extended to add extra functionality on top of an existing set object. class DelegatingSet extends _DelegatingIterableBase implements Set { @override final Set _base; const DelegatingSet(Set base) : _base = base; /// Creates a wrapper that asserts the types of values in [base]. /// /// This soundly converts a [Set] without a generic type to a `Set` by /// asserting that its elements are instances of `E` whenever they're /// accessed. If they're not, it throws a [CastError]. Note that even if an /// operation throws a [CastError], it may still mutate the underlying /// collection. /// /// This forwards all operations to [base], so any changes in [base] will be /// reflected in [this]. If [base] is already a `Set`, it's returned /// unmodified. @Deprecated('Use set.cast instead.') static Set typed(Set base) => base.cast(); @override bool add(E value) => _base.add(value); @override void addAll(Iterable elements) { _base.addAll(elements); } @override Set cast() => _base.cast(); @override void clear() { _base.clear(); } @override bool containsAll(Iterable other) => _base.containsAll(other); @override Set difference(Set other) => _base.difference(other); @override Set intersection(Set other) => _base.intersection(other); @override E? lookup(Object? element) => _base.lookup(element); @override bool remove(Object? value) => _base.remove(value); @override void removeAll(Iterable elements) { _base.removeAll(elements); } @override void removeWhere(bool Function(E) test) { _base.removeWhere(test); } @override void retainAll(Iterable elements) { _base.retainAll(elements); } @Deprecated("Use cast instead") @override Set retype() => cast(); @override void retainWhere(bool Function(E) test) { _base.retainWhere(test); } @override Set union(Set other) => _base.union(other); @override Set toSet() => DelegatingSet(_base.toSet()); } /// A [Queue] that delegates all operations to a base queue. /// /// This class can be used to hide non-`Queue` methods of a queue object, or it /// can be extended to add extra functionality on top of an existing queue /// object. class DelegatingQueue extends _DelegatingIterableBase implements Queue { @override final Queue _base; const DelegatingQueue(Queue queue) : _base = queue; /// Creates a wrapper that asserts the types of values in [base]. /// /// This soundly converts a [Queue] without a generic type to a `Queue` by /// asserting that its elements are instances of `E` whenever they're /// accessed. If they're not, it throws a [CastError]. Note that even if an /// operation throws a [CastError], it may still mutate the underlying /// collection. /// /// This forwards all operations to [base], so any changes in [base] will be /// reflected in [this]. If [base] is already a `Queue`, it's returned /// unmodified. @Deprecated('Use queue.cast instead.') static Queue typed(Queue base) => base.cast(); @override void add(E value) { _base.add(value); } @override void addAll(Iterable iterable) { _base.addAll(iterable); } @override void addFirst(E value) { _base.addFirst(value); } @override void addLast(E value) { _base.addLast(value); } @override Queue cast() => _base.cast(); @override void clear() { _base.clear(); } @override bool remove(Object? object) => _base.remove(object); @override void removeWhere(bool Function(E) test) { _base.removeWhere(test); } @override void retainWhere(bool Function(E) test) { _base.retainWhere(test); } @Deprecated("Use cast instead") @override Queue retype() => cast(); @override E removeFirst() => _base.removeFirst(); @override E removeLast() => _base.removeLast(); } /// A [Map] that delegates all operations to a base map. /// /// This class can be used to hide non-`Map` methods of an object that extends /// `Map`, or it can be extended to add extra functionality on top of an /// existing map object. class DelegatingMap implements Map { final Map _base; const DelegatingMap(Map base) : _base = base; /// Creates a wrapper that asserts the types of keys and values in [base]. /// /// This soundly converts a [Map] without generic types to a `Map` by /// asserting that its keys are instances of `E` and its values are instances /// of `V` whenever they're accessed. If they're not, it throws a [CastError]. /// Note that even if an operation throws a [CastError], it may still mutate /// the underlying collection. /// /// This forwards all operations to [base], so any changes in [base] will be /// reflected in [this]. If [base] is already a `Map`, it's returned /// unmodified. @Deprecated('Use map.cast instead.') static Map typed(Map base) => base.cast(); @override V? operator [](Object? key) => _base[key]; @override void operator []=(K key, V value) { _base[key] = value; } @override void addAll(Map other) { _base.addAll(other); } @override void addEntries(Iterable> entries) { _base.addEntries(entries); } @override void clear() { _base.clear(); } @override Map cast() => _base.cast(); @override bool containsKey(Object? key) => _base.containsKey(key); @override bool containsValue(Object? value) => _base.containsValue(value); @override Iterable> get entries => _base.entries; @override void forEach(void Function(K, V) f) { _base.forEach(f); } @override bool get isEmpty => _base.isEmpty; @override bool get isNotEmpty => _base.isNotEmpty; @override Iterable get keys => _base.keys; @override int get length => _base.length; @override Map map(MapEntry Function(K, V) transform) => _base.map(transform); @override V putIfAbsent(K key, V Function() ifAbsent) => _base.putIfAbsent(key, ifAbsent); @override V? remove(Object? key) => _base.remove(key); @override void removeWhere(bool Function(K, V) test) => _base.removeWhere(test); @Deprecated("Use cast instead") Map retype() => cast(); @override Iterable get values => _base.values; @override String toString() => _base.toString(); @override V update(K key, V Function(V) update, {V Function()? ifAbsent}) => _base.update(key, update, ifAbsent: ifAbsent); @override void updateAll(V Function(K, V) update) => _base.updateAll(update); } /// An unmodifiable [Set] view of the keys of a [Map]. /// /// The set delegates all operations to the underlying map. /// /// A `Map` can only contain each key once, so its keys can always /// be viewed as a `Set` without any loss, even if the [Map.keys] /// getter only shows an [Iterable] view of the keys. /// /// Note that [lookup] is not supported for this set. class MapKeySet extends _DelegatingIterableBase with UnmodifiableSetMixin { final Map _baseMap; MapKeySet(this._baseMap); @override Iterable get _base => _baseMap.keys; @override Set cast() { if (this is MapKeySet) { return this as MapKeySet; } return Set.castFrom(this); } @override bool contains(Object? element) => _baseMap.containsKey(element); @override bool get isEmpty => _baseMap.isEmpty; @override bool get isNotEmpty => _baseMap.isNotEmpty; @override int get length => _baseMap.length; @override String toString() => SetBase.setToString(this); @override bool containsAll(Iterable other) => other.every(contains); /// Returns a new set with the the elements of [this] that are not in [other]. /// /// That is, the returned set contains all the elements of this [Set] that are /// not elements of [other] according to `other.contains`. /// /// Note that the returned set will use the default equality operation, which /// may be different than the equality operation [this] uses. @override Set difference(Set other) => where((element) => !other.contains(element)).toSet(); /// Returns a new set which is the intersection between [this] and [other]. /// /// That is, the returned set contains all the elements of this [Set] that are /// also elements of [other] according to `other.contains`. /// /// Note that the returned set will use the default equality operation, which /// may be different than the equality operation [this] uses. @override Set intersection(Set other) => where(other.contains).toSet(); /// Throws an [UnsupportedError] since there's no corresponding method for /// [Map]s. @override E lookup(Object? element) => throw UnsupportedError("MapKeySet doesn't support lookup()."); @Deprecated("Use cast instead") @override Set retype() => Set.castFrom(this); /// Returns a new set which contains all the elements of [this] and [other]. /// /// That is, the returned set contains all the elements of this [Set] and all /// the elements of [other]. /// /// Note that the returned set will use the default equality operation, which /// may be different than the equality operation [this] uses. @override Set union(Set other) => toSet()..addAll(other); } /// Creates a modifiable [Set] view of the values of a [Map]. /// /// The `Set` view assumes that the keys of the `Map` can be uniquely determined /// from the values. The `keyForValue` function passed to the constructor finds /// the key for a single value. The `keyForValue` function should be consistent /// with equality. If `value1 == value2` then `keyForValue(value1)` and /// `keyForValue(value2)` should be considered equal keys by the underlying map, /// and vice versa. /// /// Modifying the set will modify the underlying map based on the key returned /// by `keyForValue`. /// /// If the `Map` contents are not compatible with the `keyForValue` function, /// the set will not work consistently, and may give meaningless responses or do /// inconsistent updates. /// /// This set can, for example, be used on a map from database record IDs to the /// records. It exposes the records as a set, and allows for writing both /// `recordSet.add(databaseRecord)` and `recordMap[id]`. /// /// Effectively, the map will act as a kind of index for the set. class MapValueSet extends _DelegatingIterableBase implements Set { final Map _baseMap; final K Function(V) _keyForValue; /// Creates a new [MapValueSet] based on [_baseMap]. /// /// [_keyForValue] returns the key in the map that should be associated with /// the given value. The set's notion of equality is identical to the equality /// of the return values of [_keyForValue]. MapValueSet(this._baseMap, this._keyForValue); @override Iterable get _base => _baseMap.values; @override Set cast() { if (this is Set) { return this as Set; } return Set.castFrom(this); } @override bool contains(Object? element) { if (element is! V) return false; var key = _keyForValue(element); return _baseMap.containsKey(key); } @override bool get isEmpty => _baseMap.isEmpty; @override bool get isNotEmpty => _baseMap.isNotEmpty; @override int get length => _baseMap.length; @override String toString() => toSet().toString(); @override bool add(V value) { var key = _keyForValue(value); var result = false; _baseMap.putIfAbsent(key, () { result = true; return value; }); return result; } @override void addAll(Iterable elements) => elements.forEach(add); @override void clear() => _baseMap.clear(); @override bool containsAll(Iterable other) => other.every(contains); /// Returns a new set with the the elements of [this] that are not in [other]. /// /// That is, the returned set contains all the elements of this [Set] that are /// not elements of [other] according to `other.contains`. /// /// Note that the returned set will use the default equality operation, which /// may be different than the equality operation [this] uses. @override Set difference(Set other) => where((element) => !other.contains(element)).toSet(); /// Returns a new set which is the intersection between [this] and [other]. /// /// That is, the returned set contains all the elements of this [Set] that are /// also elements of [other] according to `other.contains`. /// /// Note that the returned set will use the default equality operation, which /// may be different than the equality operation [this] uses. @override Set intersection(Set other) => where(other.contains).toSet(); @override V? lookup(Object? element) { if (element is! V) return null; var key = _keyForValue(element); return _baseMap[key]; } @override bool remove(Object? element) { if (element is! V) return false; var key = _keyForValue(element); if (!_baseMap.containsKey(key)) return false; _baseMap.remove(key); return true; } @override void removeAll(Iterable elements) => elements.forEach(remove); @override void removeWhere(bool Function(V) test) { var toRemove = []; _baseMap.forEach((key, value) { if (test(value)) toRemove.add(key); }); toRemove.forEach(_baseMap.remove); } @override void retainAll(Iterable elements) { var valuesToRetain = Set.identity(); for (var element in elements) { if (element is! V) continue; var key = _keyForValue(element); if (!_baseMap.containsKey(key)) continue; valuesToRetain.add(_baseMap[key] ?? null as V); } var keysToRemove = []; _baseMap.forEach((k, v) { if (!valuesToRetain.contains(v)) keysToRemove.add(k); }); keysToRemove.forEach(_baseMap.remove); } @override void retainWhere(bool Function(V) test) => removeWhere((element) => !test(element)); @Deprecated("Use cast instead") @override Set retype() => Set.castFrom(this); /// Returns a new set which contains all the elements of [this] and [other]. /// /// That is, the returned set contains all the elements of this [Set] and all /// the elements of [other]. /// /// Note that the returned set will use the default equality operation, which /// may be different than the equality operation [this] uses. @override Set union(Set other) => toSet()..addAll(other); } �HNN<%+IHC# 6 , = 4 : G  A. O) H 8 % + . A  @- " 7 M"(  A4 , I , I N # A 6 )DQKA <=DGQAOP/@;NJ P 5DNHNIOK+8 , * 6  & ( (  7, 2 J L <% &" 4& 2 Q =)  5 2 ( )# , @. ," $ . 1# Q5 ( - G9PMN 3DLHNIOJ*6 ) & '  I D H 7 5 / , /" # , 4 5=PK < 9DPHNIOL,:  &   )  7 , ," % * (9OI16MNPQO!OM-? - & ! 6  6 ; C 9 ( % + & " H 1( / I"2 * ) E5 F7<CB666#" *  #% C ( . % 2 FQQ=P@ +<NQ>P@ LM E" 2OPP@ 8>QPPHQONQPJ9BO$7OQ.1 , % #%%& ( . % + ## > $ FQQ=P@ +<NQ>P@ L $% !%%2 J ,$*' /,$#'06<+ -0" 2OPP@ 8$package:collection/src/wrappers.dart�6��^file:///github/home/.pub-cache/hosted/pub.dartlang.org/collection-1.16.0/lib/src/equality.dart��// Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. import 'dart:collection'; import 'comparators.dart'; const int _hashMask = 0x7fffffff; /// A generic equality relation on objects. abstract class Equality { const factory Equality() = DefaultEquality; /// Compare two elements for being equal. /// /// This should be a proper equality relation. bool equals(E e1, E e2); /// Get a hashcode of an element. /// /// The hashcode should be compatible with [equals], so that if /// `equals(a, b)` then `hash(a) == hash(b)`. int hash(E e); /// Test whether an object is a valid argument to [equals] and [hash]. /// /// Some implementations may be restricted to only work on specific types /// of objects. bool isValidKey(Object? o); } /// Equality of objects based on derived values. /// /// For example, given the class: /// ```dart /// abstract class Employee { /// int get employmentId; /// } /// ``` /// /// The following [Equality] considers employees with the same IDs to be equal: /// ```dart /// EqualityBy((Employee e) => e.employmentId); /// ``` /// /// It's also possible to pass an additional equality instance that should be /// used to compare the value itself. class EqualityBy implements Equality { final F Function(E) _comparisonKey; final Equality _inner; EqualityBy(F Function(E) comparisonKey, [Equality inner = const DefaultEquality()]) : _comparisonKey = comparisonKey, _inner = inner; @override bool equals(E e1, E e2) => _inner.equals(_comparisonKey(e1), _comparisonKey(e2)); @override int hash(E e) => _inner.hash(_comparisonKey(e)); @override bool isValidKey(Object? o) { if (o is E) { final value = _comparisonKey(o); return _inner.isValidKey(value); } return false; } } /// Equality of objects that compares only the natural equality of the objects. /// /// This equality uses the objects' own [Object.==] and [Object.hashCode] for /// the equality. /// /// Note that [equals] and [hash] take `Object`s rather than `E`s. This allows /// `E` to be inferred as `Null` in const contexts where `E` wouldn't be a /// compile-time constant, while still allowing the class to be used at runtime. class DefaultEquality implements Equality { const DefaultEquality(); @override bool equals(Object? e1, Object? e2) => e1 == e2; @override int hash(Object? e) => e.hashCode; @override bool isValidKey(Object? o) => true; } /// Equality of objects that compares only the identity of the objects. class IdentityEquality implements Equality { const IdentityEquality(); @override bool equals(E e1, E e2) => identical(e1, e2); @override int hash(E e) => identityHashCode(e); @override bool isValidKey(Object? o) => true; } /// Equality on iterables. /// /// Two iterables are equal if they have the same elements in the same order. /// /// The [equals] and [hash] methods accepts `null` values, /// even if the [isValidKey] returns `false` for `null`. /// The [hash] of `null` is `null.hashCode`. class IterableEquality implements Equality> { final Equality _elementEquality; const IterableEquality( [Equality elementEquality = const DefaultEquality()]) : _elementEquality = elementEquality; @override bool equals(Iterable? elements1, Iterable? elements2) { if (identical(elements1, elements2)) return true; if (elements1 == null || elements2 == null) return false; var it1 = elements1.iterator; var it2 = elements2.iterator; while (true) { var hasNext = it1.moveNext(); if (hasNext != it2.moveNext()) return false; if (!hasNext) return true; if (!_elementEquality.equals(it1.current, it2.current)) return false; } } @override int hash(Iterable? elements) { if (elements == null) return null.hashCode; // Jenkins's one-at-a-time hash function. var hash = 0; for (var element in elements) { var c = _elementEquality.hash(element); hash = (hash + c) & _hashMask; hash = (hash + (hash << 10)) & _hashMask; hash ^= (hash >> 6); } hash = (hash + (hash << 3)) & _hashMask; hash ^= (hash >> 11); hash = (hash + (hash << 15)) & _hashMask; return hash; } @override bool isValidKey(Object? o) => o is Iterable; } /// Equality on lists. /// /// Two lists are equal if they have the same length and their elements /// at each index are equal. /// /// This is effectively the same as [IterableEquality] except that it /// accesses elements by index instead of through iteration. /// /// The [equals] and [hash] methods accepts `null` values, /// even if the [isValidKey] returns `false` for `null`. /// The [hash] of `null` is `null.hashCode`. class ListEquality implements Equality> { final Equality _elementEquality; const ListEquality( [Equality elementEquality = const DefaultEquality()]) : _elementEquality = elementEquality; @override bool equals(List? list1, List? list2) { if (identical(list1, list2)) return true; if (list1 == null || list2 == null) return false; var length = list1.length; if (length != list2.length) return false; for (var i = 0; i < length; i++) { if (!_elementEquality.equals(list1[i], list2[i])) return false; } return true; } @override int hash(List? list) { if (list == null) return null.hashCode; // Jenkins's one-at-a-time hash function. // This code is almost identical to the one in IterableEquality, except // that it uses indexing instead of iterating to get the elements. var hash = 0; for (var i = 0; i < list.length; i++) { var c = _elementEquality.hash(list[i]); hash = (hash + c) & _hashMask; hash = (hash + (hash << 10)) & _hashMask; hash ^= (hash >> 6); } hash = (hash + (hash << 3)) & _hashMask; hash ^= (hash >> 11); hash = (hash + (hash << 15)) & _hashMask; return hash; } @override bool isValidKey(Object? o) => o is List; } abstract class _UnorderedEquality> implements Equality { final Equality _elementEquality; const _UnorderedEquality(this._elementEquality); @override bool equals(T? elements1, T? elements2) { if (identical(elements1, elements2)) return true; if (elements1 == null || elements2 == null) return false; var counts = HashMap( equals: _elementEquality.equals, hashCode: _elementEquality.hash, isValidKey: _elementEquality.isValidKey); var length = 0; for (var e in elements1) { var count = counts[e] ?? 0; counts[e] = count + 1; length++; } for (var e in elements2) { var count = counts[e]; if (count == null || count == 0) return false; counts[e] = count - 1; length--; } return length == 0; } @override int hash(T? elements) { if (elements == null) return null.hashCode; var hash = 0; for (E element in elements) { var c = _elementEquality.hash(element); hash = (hash + c) & _hashMask; } hash = (hash + (hash << 3)) & _hashMask; hash ^= (hash >> 11); hash = (hash + (hash << 15)) & _hashMask; return hash; } } /// Equality of the elements of two iterables without considering order. /// /// Two iterables are considered equal if they have the same number of elements, /// and the elements of one set can be paired with the elements /// of the other iterable, so that each pair are equal. class UnorderedIterableEquality extends _UnorderedEquality> { const UnorderedIterableEquality( [Equality elementEquality = const DefaultEquality()]) : super(elementEquality); @override bool isValidKey(Object? o) => o is Iterable; } /// Equality of sets. /// /// Two sets are considered equal if they have the same number of elements, /// and the elements of one set can be paired with the elements /// of the other set, so that each pair are equal. /// /// This equality behaves the same as [UnorderedIterableEquality] except that /// it expects sets instead of iterables as arguments. /// /// The [equals] and [hash] methods accepts `null` values, /// even if the [isValidKey] returns `false` for `null`. /// The [hash] of `null` is `null.hashCode`. class SetEquality extends _UnorderedEquality> { const SetEquality( [Equality elementEquality = const DefaultEquality()]) : super(elementEquality); @override bool isValidKey(Object? o) => o is Set; } /// Internal class used by [MapEquality]. /// /// The class represents a map entry as a single object, /// using a combined hashCode and equality of the key and value. class _MapEntry { final MapEquality equality; final Object? key; final Object? value; _MapEntry(this.equality, this.key, this.value); @override int get hashCode => (3 * equality._keyEquality.hash(key) + 7 * equality._valueEquality.hash(value)) & _hashMask; @override bool operator ==(Object other) => other is _MapEntry && equality._keyEquality.equals(key, other.key) && equality._valueEquality.equals(value, other.value); } /// Equality on maps. /// /// Two maps are equal if they have the same number of entries, and if the /// entries of the two maps are pairwise equal on both key and value. /// /// The [equals] and [hash] methods accepts `null` values, /// even if the [isValidKey] returns `false` for `null`. /// The [hash] of `null` is `null.hashCode`. class MapEquality implements Equality> { final Equality _keyEquality; final Equality _valueEquality; const MapEquality( {Equality keys = const DefaultEquality(), Equality values = const DefaultEquality()}) : _keyEquality = keys, _valueEquality = values; @override bool equals(Map? map1, Map? map2) { if (identical(map1, map2)) return true; if (map1 == null || map2 == null) return false; var length = map1.length; if (length != map2.length) return false; Map<_MapEntry, int> equalElementCounts = HashMap(); for (var key in map1.keys) { var entry = _MapEntry(this, key, map1[key]); var count = equalElementCounts[entry] ?? 0; equalElementCounts[entry] = count + 1; } for (var key in map2.keys) { var entry = _MapEntry(this, key, map2[key]); var count = equalElementCounts[entry]; if (count == null || count == 0) return false; equalElementCounts[entry] = count - 1; } return true; } @override int hash(Map? map) { if (map == null) return null.hashCode; var hash = 0; for (var key in map.keys) { var keyHash = _keyEquality.hash(key); var valueHash = _valueEquality.hash(map[key] as V); hash = (hash + 3 * keyHash + 7 * valueHash) & _hashMask; } hash = (hash + (hash << 3)) & _hashMask; hash ^= (hash >> 11); hash = (hash + (hash << 15)) & _hashMask; return hash; } @override bool isValidKey(Object? o) => o is Map; } /// Combines several equalities into a single equality. /// /// Tries each equality in order, using [Equality.isValidKey], and returns /// the result of the first equality that applies to the argument or arguments. /// /// For `equals`, the first equality that matches the first argument is used, /// and if the second argument of `equals` is not valid for that equality, /// it returns false. /// /// Because the equalities are tried in order, they should generally work on /// disjoint types. Otherwise the multi-equality may give inconsistent results /// for `equals(e1, e2)` and `equals(e2, e1)`. This can happen if one equality /// considers only `e1` a valid key, and not `e2`, but an equality which is /// checked later, allows both. class MultiEquality implements Equality { final Iterable> _equalities; const MultiEquality(Iterable> equalities) : _equalities = equalities; @override bool equals(E e1, E e2) { for (var eq in _equalities) { if (eq.isValidKey(e1)) return eq.isValidKey(e2) && eq.equals(e1, e2); } return false; } @override int hash(E e) { for (var eq in _equalities) { if (eq.isValidKey(e)) return eq.hash(e); } return 0; } @override bool isValidKey(Object? o) { for (var eq in _equalities) { if (eq.isValidKey(o)) return true; } return false; } } /// Deep equality on collections. /// /// Recognizes lists, sets, iterables and maps and compares their elements using /// deep equality as well. /// /// Non-iterable/map objects are compared using a configurable base equality. /// /// Works in one of two modes: ordered or unordered. /// /// In ordered mode, lists and iterables are required to have equal elements /// in the same order. In unordered mode, the order of elements in iterables /// and lists are not important. /// /// A list is only equal to another list, likewise for sets and maps. All other /// iterables are compared as iterables only. class DeepCollectionEquality implements Equality { final Equality _base; final bool _unordered; const DeepCollectionEquality([Equality base = const DefaultEquality()]) : _base = base, _unordered = false; /// Creates a deep equality on collections where the order of lists and /// iterables are not considered important. That is, lists and iterables are /// treated as unordered iterables. const DeepCollectionEquality.unordered( [Equality base = const DefaultEquality()]) : _base = base, _unordered = true; @override bool equals(e1, e2) { if (e1 is Set) { return e2 is Set && SetEquality(this).equals(e1, e2); } if (e1 is Map) { return e2 is Map && MapEquality(keys: this, values: this).equals(e1, e2); } if (!_unordered) { if (e1 is List) { return e2 is List && ListEquality(this).equals(e1, e2); } if (e1 is Iterable) { return e2 is Iterable && IterableEquality(this).equals(e1, e2); } } else if (e1 is Iterable) { if (e1 is List != e2 is List) return false; return e2 is Iterable && UnorderedIterableEquality(this).equals(e1, e2); } return _base.equals(e1, e2); } @override int hash(Object? o) { if (o is Set) return SetEquality(this).hash(o); if (o is Map) return MapEquality(keys: this, values: this).hash(o); if (!_unordered) { if (o is List) return ListEquality(this).hash(o); if (o is Iterable) return IterableEquality(this).hash(o); } else if (o is Iterable) { return UnorderedIterableEquality(this).hash(o); } return _base.hash(o); } @override bool isValidKey(Object? o) => o is Iterable || o is Map || _base.isValidKey(o); } /// String equality that's insensitive to differences in ASCII case. /// /// Non-ASCII characters are compared as-is, with no conversion. class CaseInsensitiveEquality implements Equality { const CaseInsensitiveEquality(); @override bool equals(String string1, String string2) => equalsIgnoreAsciiCase(string1, string2); @override int hash(String string) => hashIgnoreAsciiCase(string); @override bool isValidKey(Object? object) => object is String; } ��NN<",1,1$B0IL1" P 0N&0&*<( = 3 ''PNOKQ2 3 % &H3 0 ( &N;9-='F, @6>""$3!L $0.$.%0-. 2HF=;9-5&F, 0.6.'F ,.LG,.%0-. .<&3 ,6>"))2"5 0".%-.IQ@8P#F  2L@3N7;9-=F  -*9A2 -5 $6:KF;9-9"$:<! 2,4-8!32-!3-5- + ,:?-. 08KPNKMOOL 0+8" "L "/ ")"QN5MM!P.3QJO&*8 <P@H!2O! 4H8@ 6 8EA<# 1/ : 7$package:collection/src/equality.dart����bfile:///github/home/.pub-cache/hosted/pub.dartlang.org/collection-1.16.0/lib/src/equality_map.dart�{// Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. import 'dart:collection'; import 'equality.dart'; import 'wrappers.dart'; /// A [Map] whose key equality is determined by an [Equality] object. class EqualityMap extends DelegatingMap { /// Creates a map with equality based on [equality]. EqualityMap(Equality equality) : super(LinkedHashMap( equals: equality.equals, hashCode: equality.hash, isValidKey: equality.isValidKey)); /// Creates a map with equality based on [equality] that contains all /// key-value pairs of [other]. /// /// If [other] has multiple keys that are equivalent according to [equality], /// the last one reached during iteration takes precedence. EqualityMap.from(Equality equality, Map other) : super(LinkedHashMap( equals: equality.equals, hashCode: equality.hash, isValidKey: equality.isValidKey)) { addAll(other); } } !NN<F67$%%/H"P>:%%0(package:collection/src/equality_map.dartbfile:///github/home/.pub-cache/hosted/pub.dartlang.org/collection-1.16.0/lib/src/equality_set.dart�s// Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. import 'dart:collection'; import 'equality.dart'; import 'wrappers.dart'; /// A [Set] whose key equality is determined by an [Equality] object. class EqualitySet extends DelegatingSet { /// Creates a set with equality based on [equality]. EqualitySet(Equality equality) : super(LinkedHashSet( equals: equality.equals, hashCode: equality.hash, isValidKey: equality.isValidKey)); /// Creates a set with equality based on [equality] that contains all /// elements in [other]. /// /// If [other] has multiple values that are equivalent according to /// [equality], the first one reached during iteration takes precedence. EqualitySet.from(Equality equality, Iterable other) : super(LinkedHashSet( equals: equality.equals, hashCode: equality.hash, isValidKey: equality.isValidKey)) { addAll(other); } } !NN<F07$%%/HFK<%%0(package:collection/src/equality_set.dart_file:///github/home/.pub-cache/hosted/pub.dartlang.org/collection-1.16.0/lib/src/functions.dart��// Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. import 'dart:collection'; import 'dart:math' as math; import 'utils.dart'; /// Creates a new map from [map] with new keys and values. /// /// The return values of [key] are used as the keys and the return values of /// [value] are used as the values for the new map. @Deprecated('Use Map.map or a for loop in a Map literal.') Map mapMap(Map map, {K2 Function(K1, V1)? key, V2 Function(K1, V1)? value}) { var keyFn = key ?? (mapKey, _) => mapKey as K2; var valueFn = value ?? (_, mapValue) => mapValue as V2; var result = {}; map.forEach((mapKey, mapValue) { result[keyFn(mapKey, mapValue)] = valueFn(mapKey, mapValue); }); return result; } /// Returns a new map with all key/value pairs in both [map1] and [map2]. /// /// If there are keys that occur in both maps, the [value] function is used to /// select the value that goes into the resulting map based on the two original /// values. If [value] is omitted, the value from [map2] is used. Map mergeMaps(Map map1, Map map2, {V Function(V, V)? value}) { var result = Map.of(map1); if (value == null) return result..addAll(map2); map2.forEach((key, mapValue) { result[key] = result.containsKey(key) ? value(result[key] as V, mapValue) : mapValue; }); return result; } /// Groups the elements in [values] by the value returned by [key]. /// /// Returns a map from keys computed by [key] to a list of all values for which /// [key] returns that key. The values appear in the list in the same relative /// order as in [values]. Map> groupBy(Iterable values, T Function(S) key) { var map = >{}; for (var element in values) { (map[key(element)] ??= []).add(element); } return map; } /// Returns the element of [values] for which [orderBy] returns the minimum /// value. /// /// The values returned by [orderBy] are compared using the [compare] function. /// If [compare] is omitted, values must implement [Comparable] and they are /// compared using their [Comparable.compareTo]. /// /// Returns `null` if [values] is empty. S? minBy(Iterable values, T Function(S) orderBy, {int Function(T, T)? compare}) { compare ??= defaultCompare; S? minValue; T? minOrderBy; for (var element in values) { var elementOrderBy = orderBy(element); if (minOrderBy == null || compare(elementOrderBy, minOrderBy) < 0) { minValue = element; minOrderBy = elementOrderBy; } } return minValue; } /// Returns the element of [values] for which [orderBy] returns the maximum /// value. /// /// The values returned by [orderBy] are compared using the [compare] function. /// If [compare] is omitted, values must implement [Comparable] and they are /// compared using their [Comparable.compareTo]. /// /// Returns `null` if [values] is empty. S? maxBy(Iterable values, T Function(S) orderBy, {int? Function(T, T)? compare}) { compare ??= defaultCompare; S? maxValue; T? maxOrderBy; for (var element in values) { var elementOrderBy = orderBy(element); if (maxOrderBy == null || compare(elementOrderBy, maxOrderBy)! > 0) { maxValue = element; maxOrderBy = elementOrderBy; } } return maxValue; } /// Returns the [transitive closure][] of [graph]. /// /// [transitive closure]: https://en.wikipedia.org/wiki/Transitive_closure /// /// Interprets [graph] as a directed graph with a vertex for each key and edges /// from each key to the values that the key maps to. /// /// Assumes that every vertex in the graph has a key to represent it, even if /// that vertex has no outgoing edges. This isn't checked, but if it's not /// satisfied, the function may crash or provide unexpected output. For example, /// `{"a": ["b"]}` is not valid, but `{"a": ["b"], "b": []}` is. Map> transitiveClosure(Map> graph) { // This uses [Warshall's algorithm][], modified not to add a vertex from each // node to itself. // // [Warshall's algorithm]: https://en.wikipedia.org/wiki/Floyd%E2%80%93Warshall_algorithm#Applications_and_generalizations. var result = >{}; graph.forEach((vertex, edges) { result[vertex] = Set.from(edges); }); // Lists are faster to iterate than maps, so we create a list since we're // iterating repeatedly. var keys = graph.keys.toList(); for (var vertex1 in keys) { for (var vertex2 in keys) { for (var vertex3 in keys) { if (result[vertex2]!.contains(vertex1) && result[vertex1]!.contains(vertex3)) { result[vertex2]!.add(vertex3); } } } } return result; } /// Returns the [strongly connected components][] of [graph], in topological /// order. /// /// [strongly connected components]: https://en.wikipedia.org/wiki/Strongly_connected_component /// /// Interprets [graph] as a directed graph with a vertex for each key and edges /// from each key to the values that the key maps to. /// /// Assumes that every vertex in the graph has a key to represent it, even if /// that vertex has no outgoing edges. This isn't checked, but if it's not /// satisfied, the function may crash or provide unexpected output. For example, /// `{"a": ["b"]}` is not valid, but `{"a": ["b"], "b": []}` is. List> stronglyConnectedComponents(Map> graph) { // This uses [Tarjan's algorithm][]. // // [Tarjan's algorithm]: https://en.wikipedia.org/wiki/Tarjan%27s_strongly_connected_components_algorithm var index = 0; var stack = []; var result = >[]; // The order of these doesn't matter, so we use un-linked implementations to // avoid unnecessary overhead. var indices = HashMap(); var lowLinks = HashMap(); var onStack = HashSet(); void strongConnect(T vertex) { indices[vertex] = index; lowLinks[vertex] = index; index++; stack.add(vertex); onStack.add(vertex); for (var successor in graph[vertex]!) { if (!indices.containsKey(successor)) { strongConnect(successor); lowLinks[vertex] = math.min(lowLinks[vertex]!, lowLinks[successor]!); } else if (onStack.contains(successor)) { lowLinks[vertex] = math.min(lowLinks[vertex]!, lowLinks[successor]!); } } if (lowLinks[vertex] == indices[vertex]) { var component = {}; T? neighbor; do { neighbor = stack.removeLast(); onStack.remove(neighbor); component.add(neighbor as T); } while (neighbor != vertex); result.add(component); } } for (var vertex in graph.keys) { if (!indices.containsKey(vertex)) strongConnect(vertex); } // Tarjan's algorithm produces a reverse-topological sort, so we reverse it to // get a normal topological sort. return result.reversed.toList(); } ��NN<;M4;4>2:#AJOPB:!#2!PDPOG -L PP1):% +I#L PP1):& +J#3KP6NKQAAP~")L" "22) M `P6NKQAI'lO!#$! ,-"N0N/ '"&$#=Q$#%package:collection/src/functions.dart�6��ifile:///github/home/.pub-cache/hosted/pub.dartlang.org/collection-1.16.0/lib/src/iterable_extensions.dart�sQ// Copyright (c) 2020, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. import 'dart:math' show Random; import 'package:collection/src/utils.dart'; import 'algorithms.dart'; /// Extensions that apply to all iterables. /// /// These extensions provide direct access to some of the /// algorithms expose by this package, /// as well as some generally useful convenience methods. /// /// More specialized extension methods that only apply to /// iterables with specific element types include those of /// [IterableComparableExtension] and [IterableNullableExtension]. extension IterableExtension on Iterable { /// Selects [count] elements at random from this iterable. /// /// The returned list contains [count] different elements of the iterable. /// If the iterable contains fewer that [count] elements, /// the result will contain all of them, but will be shorter than [count]. /// If the same value occurs more than once in the iterable, /// it can also occur more than once in the chosen elements. /// /// Each element of the iterable has the same chance of being chosen. /// The chosen elements are not in any specific order. List sample(int count, [Random? random]) { RangeError.checkNotNegative(count, 'count'); var iterator = this.iterator; var chosen = []; for (var i = 0; i < count; i++) { if (iterator.moveNext()) { chosen.add(iterator.current); } else { return chosen; } } var index = count; random ??= Random(); while (iterator.moveNext()) { index++; var position = random.nextInt(index); if (position < count) chosen[position] = iterator.current; } return chosen; } /// The elements that do not satisfy [test]. Iterable whereNot(bool Function(T element) test) => where((element) => !test(element)); /// Creates a sorted list of the elements of the iterable. /// /// The elements are ordered by the [compare] [Comparator]. List sorted(Comparator compare) => [...this]..sort(compare); /// Creates a sorted list of the elements of the iterable. /// /// The elements are ordered by the natural ordering of the /// property [keyOf] of the element. List sortedBy>(K Function(T element) keyOf) { var elements = [...this]; mergeSortBy(elements, keyOf, compareComparable); return elements; } /// Creates a sorted list of the elements of the iterable. /// /// The elements are ordered by the [compare] [Comparator] of the /// property [keyOf] of the element. List sortedByCompare( K Function(T element) keyOf, Comparator compare) { var elements = [...this]; mergeSortBy(elements, keyOf, compare); return elements; } /// Whether the elements are sorted by the [compare] ordering. /// /// Compares pairs of elements using `compare` to check that /// the elements of this iterable to check /// that earlier elements always compare /// smaller than or equal to later elements. /// /// An single-element or empty iterable is trivially in sorted order. bool isSorted(Comparator compare) { var iterator = this.iterator; if (!iterator.moveNext()) return true; var previousElement = iterator.current; while (iterator.moveNext()) { var element = iterator.current; if (compare(previousElement, element) > 0) return false; previousElement = element; } return true; } /// Whether the elements are sorted by their [keyOf] property. /// /// Applies [keyOf] to each element in iteration order, /// then checks whether the results are in non-decreasing [Comparable] order. bool isSortedBy>(K Function(T element) keyOf) { var iterator = this.iterator; if (!iterator.moveNext()) return true; var previousKey = keyOf(iterator.current); while (iterator.moveNext()) { var key = keyOf(iterator.current); if (previousKey.compareTo(key) > 0) return false; previousKey = key; } return true; } /// Whether the elements are [compare]-sorted by their [keyOf] property. /// /// Applies [keyOf] to each element in iteration order, /// then checks whether the results are in non-decreasing order /// using the [compare] [Comparator].. bool isSortedByCompare( K Function(T element) keyOf, Comparator compare) { var iterator = this.iterator; if (!iterator.moveNext()) return true; var previousKey = keyOf(iterator.current); while (iterator.moveNext()) { var key = keyOf(iterator.current); if (compare(previousKey, key) > 0) return false; previousKey = key; } return true; } /// Takes an action for each element. /// /// Calls [action] for each element along with the index in the /// iteration order. void forEachIndexed(void Function(int index, T element) action) { var index = 0; for (var element in this) { action(index++, element); } } /// Takes an action for each element as long as desired. /// /// Calls [action] for each element. /// Stops iteration if [action] returns `false`. void forEachWhile(bool Function(T element) action) { for (var element in this) { if (!action(element)) break; } } /// Takes an action for each element and index as long as desired. /// /// Calls [action] for each element along with the index in the /// iteration order. /// Stops iteration if [action] returns `false`. void forEachIndexedWhile(bool Function(int index, T element) action) { var index = 0; for (var element in this) { if (!action(index++, element)) break; } } /// Maps each element and its index to a new value. Iterable mapIndexed(R Function(int index, T element) convert) sync* { var index = 0; for (var element in this) { yield convert(index++, element); } } /// The elements whose value and index satisfies [test]. Iterable whereIndexed(bool Function(int index, T element) test) sync* { var index = 0; for (var element in this) { if (test(index++, element)) yield element; } } /// The elements whose value and index do not satisfy [test]. Iterable whereNotIndexed(bool Function(int index, T element) test) sync* { var index = 0; for (var element in this) { if (!test(index++, element)) yield element; } } /// Expands each element and index to a number of elements in a new iterable. Iterable expandIndexed( Iterable Function(int index, T element) expand) sync* { var index = 0; for (var element in this) { yield* expand(index++, element); } } /// Combine the elements with each other and the current index. /// /// Calls [combine] for each element except the first. /// The call passes the index of the current element, the result of the /// previous call, or the first element for the first call, and /// the current element. /// /// Returns the result of the last call, or the first element if /// there is only one element. /// There must be at least one element. T reduceIndexed(T Function(int index, T previous, T element) combine) { var iterator = this.iterator; if (!iterator.moveNext()) { throw StateError('no elements'); } var index = 1; var result = iterator.current; while (iterator.moveNext()) { result = combine(index++, result, iterator.current); } return result; } /// Combine the elements with a value and the current index. /// /// Calls [combine] for each element with the current index, /// the result of the previous call, or [initialValue] for the first element, /// and the current element. /// /// Returns the result of the last call to [combine], /// or [initialValue] if there are no elements. R foldIndexed( R initialValue, R Function(int index, R previous, T element) combine) { var result = initialValue; var index = 0; for (var element in this) { result = combine(index++, result, element); } return result; } /// The first element satisfying [test], or `null` if there are none. T? firstWhereOrNull(bool Function(T element) test) { for (var element in this) { if (test(element)) return element; } return null; } /// The first element whose value and index satisfies [test]. /// /// Returns `null` if there are no element and index satisfying [test]. T? firstWhereIndexedOrNull(bool Function(int index, T element) test) { var index = 0; for (var element in this) { if (test(index++, element)) return element; } return null; } /// The first element, or `null` if the iterable is empty. T? get firstOrNull { var iterator = this.iterator; if (iterator.moveNext()) return iterator.current; return null; } /// The last element satisfying [test], or `null` if there are none. T? lastWhereOrNull(bool Function(T element) test) { T? result; for (var element in this) { if (test(element)) result = element; } return result; } /// The last element whose index and value satisfies [test]. /// /// Returns `null` if no element and index satisfies [test]. T? lastWhereIndexedOrNull(bool Function(int index, T element) test) { T? result; var index = 0; for (var element in this) { if (test(index++, element)) result = element; } return result; } /// The last element, or `null` if the iterable is empty. T? get lastOrNull { if (isEmpty) return null; return last; } /// The single element satisfying [test]. /// /// Returns `null` if there are either no elements /// or more than one element satisfying [test]. /// /// **Notice**: This behavior differs from [Iterable.singleWhere] /// which always throws if there are more than one match, /// and only calls the `orElse` function on zero matches. T? singleWhereOrNull(bool Function(T element) test) { T? result; var found = false; for (var element in this) { if (test(element)) { if (!found) { result = element; found = true; } else { return null; } } } return result; } /// The single element satisfying [test]. /// /// Returns `null` if there are either none /// or more than one element and index satisfying [test]. T? singleWhereIndexedOrNull(bool Function(int index, T element) test) { T? result; var found = false; var index = 0; for (var element in this) { if (test(index++, element)) { if (!found) { result = element; found = true; } else { return null; } } } return result; } /// The single element of the iterable, or `null`. /// /// The value is `null` if the iterable is empty /// or it contains more than one element. T? get singleOrNull { var iterator = this.iterator; if (iterator.moveNext()) { var result = iterator.current; if (!iterator.moveNext()) { return result; } } return null; } /// Groups elements by [keyOf] then folds the elements in each group. /// /// A key is found for each element using [keyOf]. /// Then the elements with the same key are all folded using [combine]. /// The first call to [combine] for a particular key receives [null] as /// the previous value, the remaining ones receive the result of the previous call. /// /// Can be used to _group_ elements into arbitrary collections. /// For example [groupSetsBy] could be written as: /// ```dart /// iterable.groupFoldBy(keyOf, /// (Set? previous, T element) => (previous ?? {})..add(element)); /// ```` Map groupFoldBy( K Function(T element) keyOf, G Function(G? previous, T element) combine) { var result = {}; for (var element in this) { var key = keyOf(element); result[key] = combine(result[key], element); } return result; } /// Groups elements into sets by [keyOf]. Map> groupSetsBy(K Function(T element) keyOf) { var result = >{}; for (var element in this) { (result[keyOf(element)] ??= {}).add(element); } return result; } /// Groups elements into lists by [keyOf]. Map> groupListsBy(K Function(T element) keyOf) { var result = >{}; for (var element in this) { (result[keyOf(element)] ??= []).add(element); } return result; } /// Splits the elements into chunks before some elements. /// /// Each element except the first is checked using [test] /// for whether it should start a new chunk. /// If so, the elements since the previous chunk-starting element /// are emitted as a list. /// Any final elements are emitted at the end. /// /// Example: /// Example: /// ```dart /// var parts = [1, 2, 3, 4, 5, 6, 7, 8, 9].split(isPrime); /// print(parts); // ([1], [2], [3, 4], [5, 6], [7, 8, 9]) /// ``` Iterable> splitBefore(bool Function(T element) test) => splitBeforeIndexed((_, element) => test(element)); /// Splits the elements into chunks before some elements. /// /// Each element is checked using [test] for whether it should start a new chunk. /// If so, the elements since the previous chunk-starting element /// are emitted as a list. /// Any final elements are emitted at the end. /// /// Example: /// ```dart /// var parts = [1, 0, 2, 1, 5, 7, 6, 8, 9].splitAfter(isPrime); /// print(parts); // ([1, 0, 2], [1, 5], [7], [6, 8, 9]) /// ``` Iterable> splitAfter(bool Function(T element) test) => splitAfterIndexed((_, element) => test(element)); /// Splits the elements into chunks between some elements. /// /// Each pair of adjacent elements are checked using [test] /// for whether a chunk should end between them. /// If so, the elements since the previous chunk-splitting elements /// are emitted as a list. /// Any final elements are emitted at the end. /// /// Example: /// ```dart /// var parts = [1, 0, 2, 1, 5, 7, 6, 8, 9].splitBetween((v1, v2) => v1 > v2); /// print(parts); // ([1], [0, 2], [1, 5, 7], [6, 8, 9]) /// ``` Iterable> splitBetween(bool Function(T first, T second) test) => splitBetweenIndexed((_, first, second) => test(first, second)); /// Splits the elements into chunks before some elements and indices. /// /// Each element and index except the first is checked using [test] /// for whether it should start a new chunk. /// If so, the elements since the previous chunk-starting element /// are emitted as a list. /// Any final elements are emitted at the end. /// /// Example: /// ```dart /// var parts = [1, 0, 2, 1, 5, 7, 6, 8, 9] /// .splitBeforeIndexed((i, v) => i < v); /// print(parts); // ([1], [0, 2], [1, 5, 7], [6, 8, 9]) /// ``` Iterable> splitBeforeIndexed( bool Function(int index, T element) test) sync* { var iterator = this.iterator; if (!iterator.moveNext()) { return; } var index = 1; var chunk = [iterator.current]; while (iterator.moveNext()) { var element = iterator.current; if (test(index++, element)) { yield chunk; chunk = []; } chunk.add(element); } yield chunk; } /// Splits the elements into chunks after some elements and indices. /// /// Each element and index is checked using [test] /// for whether it should end the current chunk. /// If so, the elements since the previous chunk-ending element /// are emitted as a list. /// Any final elements are emitted at the end, whether the last /// element should be split after or not. /// /// Example: /// ```dart /// var parts = [1, 0, 2, 1, 5, 7, 6, 8, 9].splitAfterIndexed((i, v) => i < v); /// print(parts); // ([1, 0], [2, 1], [5, 7, 6], [8, 9]) /// ``` Iterable> splitAfterIndexed( bool Function(int index, T element) test) sync* { var index = 0; List? chunk; for (var element in this) { (chunk ??= []).add(element); if (test(index++, element)) { yield chunk; chunk = null; } } if (chunk != null) yield chunk; } /// Splits the elements into chunks between some elements and indices. /// /// Each pair of adjacent elements and the index of the latter are /// checked using [test] for whether a chunk should end between them. /// If so, the elements since the previous chunk-splitting elements /// are emitted as a list. /// Any final elements are emitted at the end. /// /// Example: /// ```dart /// var parts = [1, 0, 2, 1, 5, 7, 6, 8, 9] /// .splitBetweenIndexed((i, v1, v2) => v1 > v2); /// print(parts); // ([1], [0, 2], [1, 5, 7], [6, 8, 9]) /// ``` Iterable> splitBetweenIndexed( bool Function(int index, T first, T second) test) sync* { var iterator = this.iterator; if (!iterator.moveNext()) return; var previous = iterator.current; var chunk = [previous]; var index = 1; while (iterator.moveNext()) { var element = iterator.current; if (test(index++, previous, element)) { yield chunk; chunk = []; } chunk.add(element); previous = element; } yield chunk; } /// Whether no element satisfies [test]. /// /// Returns true if no element satisfies [test], /// and false if at least one does. /// /// Equivalent to `iterable.every((x) => !test(x))` or /// `!iterable.any(test)`. bool none(bool Function(T) test) { for (var element in this) { if (test(element)) return false; } return true; } /// Contiguous [slice]s of [this] with the given [length]. /// /// Each slice is [length] elements long, except for the last one which may be /// shorter if [this] contains too few elements. Each slice begins after the /// last one ends. The [length] must be greater than zero. /// /// For example, `{1, 2, 3, 4, 5}.slices(2)` returns `([1, 2], [3, 4], [5])`. Iterable> slices(int length) sync* { if (length < 1) throw RangeError.range(length, 1, null, 'length'); var iterator = this.iterator; while (iterator.moveNext()) { var slice = [iterator.current]; for (var i = 1; i < length && iterator.moveNext(); i++) { slice.add(iterator.current); } yield slice; } } } /// Extensions that apply to iterables with a nullable element type. extension IterableNullableExtension on Iterable { /// The non-`null` elements of this `Iterable`. /// /// Returns an iterable which emits all the non-`null` elements /// of this iterable, in their original iteration order. /// /// For an `Iterable`, this method is equivalent to `.whereType()`. Iterable whereNotNull() sync* { for (var element in this) { if (element != null) yield element; } } } /// Extensions that apply to iterables of numbers. /// /// Specialized version of some extensions of [IterableComparableExtension] /// since doubles require special handling of [double.nan]. extension IterableNumberExtension on Iterable { /// A minimal element of the iterable, or `null` it the iterable is empty. num? get minOrNull { var iterator = this.iterator; if (iterator.moveNext()) { var value = iterator.current; if (value.isNaN) { return value; } while (iterator.moveNext()) { var newValue = iterator.current; if (newValue.isNaN) { return newValue; } if (newValue < value) { value = newValue; } } return value; } return null; } /// A minimal element of the iterable. /// /// The iterable must not be empty. num get min => minOrNull ?? (throw StateError('No element')); /// A maximal element of the iterable, or `null` if the iterable is empty. num? get maxOrNull { var iterator = this.iterator; if (iterator.moveNext()) { var value = iterator.current; if (value.isNaN) { return value; } while (iterator.moveNext()) { var newValue = iterator.current; if (newValue.isNaN) { return newValue; } if (newValue > value) { value = newValue; } } return value; } return null; } /// A maximal element of the iterable. /// /// The iterable must not be empty. num get max => maxOrNull ?? (throw StateError('No element')); /// The sum of the elements. /// /// The sum is zero if the iterable is empty. num get sum { num result = 0; for (var value in this) { result += value; } return result; } /// The arithmetic mean of the elements of a non-empty iterable. /// /// The arithmetic mean is the sum of the elements /// divided by the number of elements. /// /// The iterable must not be empty. double get average { var result = 0.0; var count = 0; for (var value in this) { count += 1; result += (value - result) / count; } if (count == 0) throw StateError('No elements'); return result; } } /// Extension on iterables of integers. /// /// Specialized version of some extensions of [IterableNumberExtension] or /// [IterableComparableExtension] since integers are only `Comparable`. extension IterableIntegerExtension on Iterable { /// A minimal element of the iterable, or `null` it the iterable is empty. int? get minOrNull { var iterator = this.iterator; if (iterator.moveNext()) { var value = iterator.current; while (iterator.moveNext()) { var newValue = iterator.current; if (newValue < value) { value = newValue; } } return value; } return null; } /// A minimal element of the iterable. /// /// The iterable must not be empty. int get min => minOrNull ?? (throw StateError('No element')); /// A maximal element of the iterable, or `null` if the iterable is empty. int? get maxOrNull { var iterator = this.iterator; if (iterator.moveNext()) { var value = iterator.current; while (iterator.moveNext()) { var newValue = iterator.current; if (newValue > value) { value = newValue; } } return value; } return null; } /// A maximal element of the iterable. /// /// The iterable must not be empty. int get max => maxOrNull ?? (throw StateError('No element')); /// The sum of the elements. /// /// The sum is zero if the iterable is empty. int get sum { var result = 0; for (var value in this) { result += value; } return result; } /// The arithmetic mean of the elements of a non-empty iterable. /// /// The arithmetic mean is the sum of the elements /// divided by the number of elements. /// This method is specialized for integers, /// and may give a different result than [IterableNumberExtension.average] /// for the same values, because the the number algorithm /// converts all numbers to doubles. /// /// The iterable must not be empty. double get average { var average = 0; var remainder = 0; var count = 0; for (var value in this) { // Invariant: Sum of values so far = average * count + remainder. // (Unless overflow has occurred). count += 1; var delta = value - average + remainder; average += delta ~/ count; remainder = delta.remainder(count); } if (count == 0) throw StateError('No elements'); return average + remainder / count; } } /// Extension on iterables of double. /// /// Specialized version of some extensions of [IterableNumberExtension] or /// [IterableComparableExtension] since doubles are only `Comparable`. extension IterableDoubleExtension on Iterable { /// A minimal element of the iterable, or `null` it the iterable is empty. double? get minOrNull { var iterator = this.iterator; if (iterator.moveNext()) { var value = iterator.current; if (value.isNaN) { return value; } while (iterator.moveNext()) { var newValue = iterator.current; if (newValue.isNaN) { return newValue; } if (newValue < value) { value = newValue; } } return value; } return null; } /// A minimal element of the iterable. /// /// The iterable must not be empty. double get min => minOrNull ?? (throw StateError('No element')); /// A maximal element of the iterable, or `null` if the iterable is empty. double? get maxOrNull { var iterator = this.iterator; if (iterator.moveNext()) { var value = iterator.current; if (value.isNaN) { return value; } while (iterator.moveNext()) { var newValue = iterator.current; if (newValue.isNaN) { return newValue; } if (newValue > value) { value = newValue; } } return value; } return null; } /// A maximal element of the iterable. /// /// The iterable must not be empty. double get max => maxOrNull ?? (throw StateError('No element')); /// The sum of the elements. /// /// The sum is zero if the iterable is empty. double get sum { var result = 0.0; for (var value in this) { result += value; } return result; } } /// Extensions on iterables whose elements are also iterables. extension IterableIterableExtension on Iterable> { /// The sequential elements of each iterable in this iterable. /// /// Iterates the elements of this iterable. /// For each one, which is itself an iterable, /// all the elements of that are emitted /// on the returned iterable, before moving on to the next element. Iterable get flattened sync* { for (var elements in this) { yield* elements; } } } /// Extensions that apply to iterables of [Comparable] elements. /// /// These operations can assume that the elements have a natural ordering, /// and can therefore omit, or make it optional, for the user to provide /// a [Comparator]. extension IterableComparableExtension> on Iterable { /// A minimal element of the iterable, or `null` it the iterable is empty. T? get minOrNull { var iterator = this.iterator; if (iterator.moveNext()) { var value = iterator.current; while (iterator.moveNext()) { var newValue = iterator.current; if (value.compareTo(newValue) > 0) { value = newValue; } } return value; } return null; } /// A minimal element of the iterable. /// /// The iterable must not be empty. T get min => minOrNull ?? (throw StateError('No element')); /// A maximal element of the iterable, or `null` if the iterable is empty. T? get maxOrNull { var iterator = this.iterator; if (iterator.moveNext()) { var value = iterator.current; while (iterator.moveNext()) { var newValue = iterator.current; if (value.compareTo(newValue) < 0) { value = newValue; } } return value; } return null; } /// A maximal element of the iterable. /// /// The iterable must not be empty. T get max => maxOrNull ?? (throw StateError('No element')); /// Creates a sorted list of the elements of the iterable. /// /// If the [compare] function is not supplied, the sorting uses the /// natural [Comparable] ordering of the elements. List sorted([Comparator? compare]) => [...this]..sort(compare); /// Whether the elements are sorted by the [compare] ordering. /// /// If [compare] is omitted, it defaults to comparing the /// elements using their natural [Comparable] ordering. bool isSorted([Comparator? compare]) { if (compare != null) { return IterableExtension(this).isSorted(compare); } var iterator = this.iterator; if (!iterator.moveNext()) return true; var previousElement = iterator.current; while (iterator.moveNext()) { var element = iterator.current; if (previousElement.compareTo(element) > 0) return false; previousElement = element; } return true; } } /// Extensions on comparator functions. extension ComparatorExtension on Comparator { /// The inverse ordering of this comparator. Comparator get inverse => (T a, T b) => this(b, a); /// Makes a comparator on [R] values using this comparator. /// /// Compares [R] values by comparing their [keyOf] value /// using this comparator. Comparator compareBy(T Function(R) keyOf) => (R a, R b) => this(keyOf(a), keyOf(b)); /// Combine comparators sequentially. /// /// Creates a comparator which orders elements the same way as /// this comparator, except that when two elements are considered /// equal, the [tieBreaker] comparator is used instead. Comparator then(Comparator tieBreaker) => (T a, T b) { var result = this(a, b); if (result == 0) result = tieBreaker(a, b); return result; }; } ��NN< ,,:'::;C0=ME=>'K;=D'<1A?-+/H)"+,"&?!A:PJ"+/")8K:B)<"+/")7(BD ;'37 #EB3I ,6N ';M 1@P 2P A 'B9JBC!*J" '#";??P82N 2H7 )@JI 2="6G6 +??H 4<,52D<<8  ,.= B9<TD1C; A8=>3F1Q; KFHF/D1.0; (8" $"&$G53BB,R; '8 #$$IEHF1.7; )@"&%"&.+3&9% '=QO=P/G""&@%EH2B;M% *3L<5M"$$)  )&@M"$$)  )&@0C5)&*5(KM6M"$$)  )&@M"$$)  )&@0C5)/M<'&H)/!*5(&KL8M"$$)  )&CM"$$)  )&C0?BA.1+F$!AKIPM"$$)- )&>M"$$)- )&>=F5HA<:,8"+,"&@!(4/9>;5.(AD:?!4 /package:collection/src/iterable_extensions.dartbfile:///github/home/.pub-cache/hosted/pub.dartlang.org/collection-1.16.0/lib/src/iterable_zip.dart��// Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. import 'dart:collection'; /// Iterable that iterates over lists of values from other iterables. /// /// When [iterator] is read, an [Iterator] is created for each [Iterable] in /// the [Iterable] passed to the constructor. /// /// As long as all these iterators have a next value, those next values are /// combined into a single list, which becomes the next value of this /// [Iterable]'s [Iterator]. As soon as any of the iterators run out, /// the zipped iterator also stops. class IterableZip extends IterableBase> { final Iterable> _iterables; IterableZip(Iterable> iterables) : _iterables = iterables; /// Returns an iterator that combines values of the iterables' iterators /// as long as they all have values. @override Iterator> get iterator { var iterators = _iterables.map((x) => x.iterator).toList(growable: false); return _IteratorZip(iterators); } } class _IteratorZip implements Iterator> { final List> _iterators; List? _current; _IteratorZip(List> iterators) : _iterators = iterators; @override bool moveNext() { if (_iterators.isEmpty) return false; for (var i = 0; i < _iterators.length; i++) { if (!_iterators[i].moveNext()) { _current = null; return false; } } _current = List.generate(_iterators.length, (i) => _iterators[i].current, growable: false); return true; } @override List get current => _current ?? (throw StateError('No element')); } 6NN<FM.LFF$5*IK' #O'5&F *2'N G(package:collection/src/iterable_zip.dartefile:///github/home/.pub-cache/hosted/pub.dartlang.org/collection-1.16.0/lib/src/list_extensions.dart�D�// Copyright (c) 2020, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. // Extension methods on common collection types. import 'dart:collection'; import 'dart:math'; import 'algorithms.dart'; import 'algorithms.dart' as algorithms; import 'equality.dart'; import 'utils.dart'; /// Various extensions on lists of arbitrary elements. extension ListExtensions on List { /// Returns the index of [element] in this sorted list. /// /// Uses binary search to find the location of [element]. /// The list *must* be sorted according to [compare], /// otherwise the result is unspecified /// /// Returns -1 if [element] does not occur in this list. int binarySearch(E element, int Function(E, E) compare) => algorithms.binarySearchBy(this, identity, compare, element); /// Returns the index of [element] in this sorted list. /// /// Uses binary search to find the location of [element]. /// The list *must* be sorted according to [compare] on the [keyOf] of elements, /// otherwise the result is unspecified. /// /// Returns -1 if [element] does not occur in this list. /// /// If [start] and [end] are supplied, only the list range from [start] to [end] /// is searched, and only that range needs to be sorted. int binarySearchByCompare( E element, K Function(E element) keyOf, int Function(K, K) compare, [int start = 0, int? end]) => algorithms.binarySearchBy( this, keyOf, compare, element, start, end); /// Returns the index of [element] in this sorted list. /// /// Uses binary search to find the location of [element]. /// The list *must* be sorted according to the natural ordering of /// the [keyOf] of elements, otherwise the result is unspecified. /// /// Returns -1 if [element] does not occur in this list. /// /// If [start] and [end] are supplied, only the list range from [start] to [end] /// is searched, and only that range needs to be sorted. int binarySearchBy>( E element, K Function(E element) keyOf, [int start = 0, int? end]) => algorithms.binarySearchBy( this, keyOf, (a, b) => a.compareTo(b), element, start, end); /// Returns the index where [element] should be in this sorted list. /// /// Uses binary search to find the location of [element]. /// The list *must* be sorted according to [compare], /// otherwise the result is unspecified. /// /// If [element] is in the list, its index is returned, /// otherwise returns the first position where adding [element] /// would keep the list sorted. This may be the [length] of /// the list if all elements of the list compare less than /// [element]. int lowerBound(E element, int Function(E, E) compare) => algorithms.lowerBoundBy(this, identity, compare, element); /// Returns the index where [element] should be in this sorted list. /// /// Uses binary search to find the location of [element]. /// The list *must* be sorted according to [compare] of /// the [keyOf] of the elements, otherwise the result is unspecified. /// /// If [element] is in the list, its index is returned, /// otherwise returns the first position where adding [element] /// would keep the list sorted. This may be the [length] of /// the list if all elements of the list compare less than /// [element]. /// /// If [start] and [end] are supplied, only that range is searched, /// and only that range need to be sorted. int lowerBoundByCompare( E element, K Function(E) keyOf, int Function(K, K) compare, [int start = 0, int? end]) => algorithms.lowerBoundBy(this, keyOf, compare, element, start, end); /// Returns the index where [element] should be in this sorted list. /// /// Uses binary search to find the location of [element]. /// The list *must* be sorted according to the /// natural ordering of the [keyOf] of the elements, /// otherwise the result is unspecified. /// /// If [element] is in the list, its index is returned, /// otherwise returns the first position where adding [element] /// would keep the list sorted. This may be the [length] of /// the list if all elements of the list compare less than /// [element]. /// /// If [start] and [end] are supplied, only that range is searched, /// and only that range need to be sorted. int lowerBoundBy>(E element, K Function(E) keyOf, [int start = 0, int? end]) => algorithms.lowerBoundBy( this, keyOf, compareComparable, element, start, end); /// Takes an action for each element. /// /// Calls [action] for each element along with the index in the /// iteration order. void forEachIndexed(void Function(int index, E element) action) { for (var index = 0; index < length; index++) { action(index, this[index]); } } /// Takes an action for each element as long as desired. /// /// Calls [action] for each element. /// Stops iteration if [action] returns `false`. void forEachWhile(bool Function(E element) action) { for (var index = 0; index < length; index++) { if (!action(this[index])) break; } } /// Takes an action for each element and index as long as desired. /// /// Calls [action] for each element along with the index in the /// iteration order. /// Stops iteration if [action] returns `false`. void forEachIndexedWhile(bool Function(int index, E element) action) { for (var index = 0; index < length; index++) { if (!action(index, this[index])) break; } } /// Maps each element and its index to a new value. Iterable mapIndexed(R Function(int index, E element) convert) sync* { for (var index = 0; index < length; index++) { yield convert(index, this[index]); } } /// The elements whose value and index satisfies [test]. Iterable whereIndexed(bool Function(int index, E element) test) sync* { for (var index = 0; index < length; index++) { var element = this[index]; if (test(index, element)) yield element; } } /// The elements whose value and index do not satisfy [test]. Iterable whereNotIndexed(bool Function(int index, E element) test) sync* { for (var index = 0; index < length; index++) { var element = this[index]; if (!test(index, element)) yield element; } } /// Expands each element and index to a number of elements in a new iterable. /// /// Like [Iterable.expand] except that the callback function is supplied with /// both the index and the element. Iterable expandIndexed( Iterable Function(int index, E element) expand) sync* { for (var index = 0; index < length; index++) { yield* expand(index, this[index]); } } /// Sort a range of elements by [compare]. void sortRange(int start, int end, int Function(E a, E b) compare) { quickSortBy(this, identity, compare, start, end); } /// Sorts elements by the [compare] of their [keyOf] property. /// /// Sorts elements from [start] to [end], defaulting to the entire list. void sortByCompare( K Function(E element) keyOf, int Function(K a, K b) compare, [int start = 0, int? end]) { quickSortBy(this, keyOf, compare, start, end); } /// Sorts elements by the natural order of their [keyOf] property. /// /// Sorts elements from [start] to [end], defaulting to the entire list. void sortBy>(K Function(E element) keyOf, [int start = 0, int? end]) { quickSortBy(this, keyOf, compareComparable, start, end); } /// Shuffle a range of elements. void shuffleRange(int start, int end, [Random? random]) { RangeError.checkValidRange(start, end, length); shuffle(this, start, end, random); } /// Reverses the elements in a range of the list. void reverseRange(int start, int end) { RangeError.checkValidRange(start, end, length); while (start < --end) { var tmp = this[start]; this[start] = this[end]; this[end] = tmp; start += 1; } } /// Swaps two elements of this list. void swap(int index1, int index2) { RangeError.checkValidIndex(index1, this, 'index1'); RangeError.checkValidIndex(index2, this, 'index2'); var tmp = this[index1]; this[index1] = this[index2]; this[index2] = tmp; } /// A fixed length view of a range of this list. /// /// The view is backed by this list, which must not change its length while /// the view is being used. /// /// The view can be used to perform specific whole-list /// actions on a part of the list. /// For example, to see if a list contains more than one /// "marker" element, you can do: /// ```dart /// someList.slice(someList.indexOf(marker) + 1).contains(marker) /// ``` ListSlice slice(int start, [int? end]) { end = RangeError.checkValidRange(start, end, length); var self = this; if (self is ListSlice) return self.slice(start, end); return ListSlice(this, start, end); } /// Whether [other] has the same elements as this list. /// /// Returns true iff [other] has the same [length] /// as this list, and the elements of this list and [other] /// at the same indices are equal according to [equality], /// which defaults to using `==`. bool equals(List other, [Equality equality = const DefaultEquality()]) { if (length != other.length) return false; for (var i = 0; i < length; i++) { if (!equality.equals(this[i], other[i])) return false; } return true; } /// Contiguous [slice]s of [this] with the given [length]. /// /// Each slice is a view of this list [length] elements long, except for the /// last one which may be shorter if [this] contains too few elements. Each /// slice begins after the last one ends. /// /// As with [slice], these slices are backed by this list, which must not /// change its length while the views are being used. /// /// For example, `[1, 2, 3, 4, 5].slices(2)` returns `[[1, 2], [3, 4], [5]]`. Iterable> slices(int length) sync* { if (length < 1) throw RangeError.range(length, 1, null, 'length'); for (var i = 0; i < this.length; i += length) { yield slice(i, min(i + length, this.length)); } } } /// Various extensions on lists of comparable elements. extension ListComparableExtensions> on List { /// Returns the index of [element] in this sorted list. /// /// Uses binary search to find the location of [element]. /// The list *must* be sorted according to [compare], /// otherwise the result is unspecified. /// If [compare] is omitted, it uses the natural order of the elements. /// /// Returns -1 if [element] does not occur in this list. int binarySearch(E element, [int Function(E, E)? compare]) => algorithms.binarySearchBy( this, identity, compare ?? compareComparable, element); /// Returns the index where [element] should be in this sorted list. /// /// Uses binary search to find the location of where [element] should be. /// The list *must* be sorted according to [compare], /// otherwise the result is unspecified. /// If [compare] is omitted, it uses the natural order of the elements. /// /// If [element] does not occur in this list, the returned index is /// the first index where inserting [element] would keep the list /// sorted. int lowerBound(E element, [int Function(E, E)? compare]) => algorithms.lowerBoundBy( this, identity, compare ?? compareComparable, element); /// Sort a range of elements by [compare]. /// /// If [compare] is omitted, the range is sorted according to the /// natural ordering of the elements. void sortRange(int start, int end, [int Function(E a, E b)? compare]) { RangeError.checkValidRange(start, end, length); algorithms.quickSortBy( this, identity, compare ?? compareComparable, start, end); } } /// A list view of a range of another list. /// /// Wraps the range of the [source] list from [start] to [end] /// and acts like a fixed-length list view of that range. /// The source list must not change length while a list slice is being used. class ListSlice extends ListBase { /// Original length of [source]. /// /// Used to detect modifications to [source] which may invalidate /// the slice. final int _initialSize; /// The original list backing this slice. final List source; /// The start index of the slice. final int start; @override final int length; /// Creates a slice of [source] from [start] to [end]. ListSlice(this.source, this.start, int end) : length = end - start, _initialSize = source.length { RangeError.checkValidRange(start, end, source.length); } // No argument checking, for internal use. ListSlice._(this._initialSize, this.source, this.start, this.length); /// The end index of the slice. int get end => start + length; @override E operator [](int index) { if (source.length != _initialSize) { throw ConcurrentModificationError(source); } RangeError.checkValidIndex(index, this, null, length); return source[start + index]; } @override void operator []=(int index, E value) { if (source.length != _initialSize) { throw ConcurrentModificationError(source); } RangeError.checkValidIndex(index, this, null, length); source[start + index] = value; } @override void setRange(int start, int end, Iterable iterable, [int skipCount = 0]) { if (source.length != _initialSize) { throw ConcurrentModificationError(source); } RangeError.checkValidRange(start, end, length); source.setRange(start + start, start + end, iterable, skipCount); } /// A fixed length view of a range of this list. /// /// The view is backed by this list, which must not change its length while /// the view is being used. /// /// The view can be used to perform specific whole-list /// actions on a part of the list. /// For example, to see if a list contains more than one /// "marker" element, you can do: /// ```dart /// someList.slice(someList.indexOf(marker) + 1).contains(marker) /// ``` ListSlice slice(int start, [int? end]) { end = RangeError.checkValidRange(start, end, length); return ListSlice._(_initialSize, source, start + start, end - start); } @override void shuffle([Random? random]) { if (source.length != _initialSize) { throw ConcurrentModificationError(source); } algorithms.shuffle(source, start, end, random); } @override void sort([int Function(E a, E b)? compare]) { if (source.length != _initialSize) { throw ConcurrentModificationError(source); } compare ??= defaultCompare; quickSort(source, compare, start, start + length); } /// Sort a range of elements by [compare]. void sortRange(int start, int end, int Function(E a, E b) compare) { if (source.length != _initialSize) { throw ConcurrentModificationError(source); } source.sortRange(start, end, compare); } /// Shuffles a range of elements. /// /// If [random] is omitted, a new instance of [Random] is used. void shuffleRange(int start, int end, [Random? random]) { if (source.length != _initialSize) { throw ConcurrentModificationError(source); } RangeError.checkValidRange(start, end, length); algorithms.shuffle(source, this.start + start, this.start + end, random); } /// Reverses a range of elements. void reverseRange(int start, int end) { RangeError.checkValidRange(start, end, length); source.reverseRange(this.start + start, this.start + end); } // Act like a fixed-length list. @override set length(int newLength) { throw UnsupportedError('Cannot change the length of a fixed-length list'); } @override void add(E element) { throw UnsupportedError('Cannot add to a fixed-length list'); } @override void insert(int index, E element) { throw UnsupportedError('Cannot add to a fixed-length list'); } @override void insertAll(int index, Iterable iterable) { throw UnsupportedError('Cannot add to a fixed-length list'); } @override void addAll(Iterable iterable) { throw UnsupportedError('Cannot add to a fixed-length list'); } @override bool remove(Object? element) { throw UnsupportedError('Cannot remove from a fixed-length list'); } @override void removeWhere(bool Function(E element) test) { throw UnsupportedError('Cannot remove from a fixed-length list'); } @override void retainWhere(bool Function(E element) test) { throw UnsupportedError('Cannot remove from a fixed-length list'); } @override void clear() { throw UnsupportedError('Cannot clear a fixed-length list'); } @override E removeAt(int index) { throw UnsupportedError('Cannot remove from a fixed-length list'); } @override E removeLast() { throw UnsupportedError('Cannot remove from a fixed-length list'); } @override void removeRange(int start, int end) { throw UnsupportedError('Cannot remove from a fixed-length list'); } @override void replaceRange(int start, int end, Iterable newContents) { throw UnsupportedError('Cannot remove from a fixed-length list'); } } ��NN<1(7):<8*;=I:=;GG<:H:B>=F-F(JG<17+:B>=F-L(%@(BD3";'373'EB3I3.6N3);M3!/@P3!0PP& A3)-G<AKC#3EKD#C#<4'4*4'&88!3N:%;$D .::+:5>=$Q.'==ON,L8P/G448I:<8+J;@'BGL8+JFD>%B-D(J4"C,?:M)#D,$ 9.';-H"! )1;" *)1;# Q)14F3N:%;$D .:J #)14 1)1 7-G)1+$B<)14N$*4?# O A &A 4A &A !F 4F 4F @ F F )F CF+package:collection/src/list_extensions.dart����dfile:///github/home/.pub-cache/hosted/pub.dartlang.org/collection-1.16.0/lib/src/priority_queue.dart�o// Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. import 'dart:collection'; import 'utils.dart'; /// A priority queue is a priority based work-list of elements. /// /// The queue allows adding elements, and removing them again in priority order. /// The same object can be added to the queue more than once. /// There is no specified ordering for objects with the same priority /// (where the `comparison` function returns zero). /// /// Operations which care about object equality, [contains] and [remove], /// use [Object.==] for testing equality. /// In most situations this will be the same as identity ([identical]), /// but there are types, like [String], where users can reasonably expect /// distinct objects to represent the same value. /// If elements override [Object.==], the `comparison` function must /// always give equal objects the same priority, /// otherwise [contains] or [remove] might not work correctly. abstract class PriorityQueue { /// Creates an empty [PriorityQueue]. /// /// The created [PriorityQueue] is a plain [HeapPriorityQueue]. /// /// The [comparison] is a [Comparator] used to compare the priority of /// elements. An element that compares as less than another element has /// a higher priority. /// /// If [comparison] is omitted, it defaults to [Comparable.compare]. If this /// is the case, `E` must implement [Comparable], and this is checked at /// runtime for every comparison. factory PriorityQueue([int Function(E, E)? comparison]) = HeapPriorityQueue; /// Number of elements in the queue. int get length; /// Whether the queue is empty. bool get isEmpty; /// Whether the queue has any elements. bool get isNotEmpty; /// Checks if [object] is in the queue. /// /// Returns true if the element is found. /// /// Uses the [Object.==] of elements in the queue to check /// for whether they are equal to [object]. /// Equal objects objects must have the same priority /// according to the [comparison] function. /// That is, if `a == b` then `comparison(a, b) == 0`. /// If that is not the case, this check might fail to find /// an object. bool contains(E object); /// Provides efficient access to all the elements currently in the queue. /// /// The operation should be performed without copying or moving /// the elements, if at all possible. /// /// The elements are iterated in no particular order. /// The order is stable as long as the queue is not modified. /// The queue must not be modified during an iteration. Iterable get unorderedElements; /// Adds element to the queue. /// /// The element will become the next to be removed by [removeFirst] /// when all elements with higher priority have been removed. void add(E element); /// Adds all [elements] to the queue. void addAll(Iterable elements); /// Returns the next element that will be returned by [removeFirst]. /// /// The element is not removed from the queue. /// /// The queue must not be empty when this method is called. E get first; /// Removes and returns the element with the highest priority. /// /// Repeatedly calling this method, without adding element in between, /// is guaranteed to return elements in non-decreasing order as, specified by /// [comparison]. /// /// The queue must not be empty when this method is called. E removeFirst(); /// Removes an element of the queue that compares equal to [element]. /// /// Returns true if an element is found and removed, /// and false if no equal element is found. /// /// If the queue contains more than one object equal to [element], /// only one of them is removed. /// /// Uses the [Object.==] of elements in the queue to check /// for whether they are equal to [element]. /// Equal objects objects must have the same priority /// according to the [comparison] function. /// That is, if `a == b` then `comparison(a, b) == 0`. /// If that is not the case, this check might fail to find /// an object. bool remove(E element); /// Removes all the elements from this queue and returns them. /// /// The returned iterable has no specified order. Iterable removeAll(); /// Removes all the elements from this queue. void clear(); /// Returns a list of the elements of this queue in priority order. /// /// The queue is not modified. /// /// The order is the order that the elements would be in if they were /// removed from this queue using [removeFirst]. List toList(); /// Returns a list of the elements of this queue in no specific order. /// /// The queue is not modified. /// /// The order of the elements is implementation specific. /// The order may differ between different calls on the same queue. List toUnorderedList(); /// Return a comparator based set using the comparator of this queue. /// /// The queue is not modified. /// /// The returned [Set] is currently a [SplayTreeSet], /// but this may change as other ordered sets are implemented. /// /// The set contains all the elements of this queue. /// If an element occurs more than once in the queue, /// the set will contain it only once. Set toSet(); } /// Heap based priority queue. /// /// The elements are kept in a heap structure, /// where the element with the highest priority is immediately accessible, /// and modifying a single element takes /// logarithmic time in the number of elements on average. /// /// * The [add] and [removeFirst] operations take amortized logarithmic time, /// O(log(n)), but may occasionally take linear time when growing the capacity /// of the heap. /// * The [addAll] operation works as doing repeated [add] operations. /// * The [first] getter takes constant time, O(1). /// * The [clear] and [removeAll] methods also take constant time, O(1). /// * The [contains] and [remove] operations may need to search the entire /// queue for the elements, taking O(n) time. /// * The [toList] operation effectively sorts the elements, taking O(n*log(n)) /// time. /// * The [toUnorderedList] operation copies, but does not sort, the elements, /// and is linear, O(n). /// * The [toSet] operation effectively adds each element to the new set, taking /// an expected O(n*log(n)) time. class HeapPriorityQueue implements PriorityQueue { /// Initial capacity of a queue when created, or when added to after a /// [clear]. /// /// Number can be any positive value. Picking a size that gives a whole /// number of "tree levels" in the heap is only done for aesthetic reasons. static const int _initialCapacity = 7; /// The comparison being used to compare the priority of elements. final Comparator comparison; /// List implementation of a heap. List _queue = List.filled(_initialCapacity, null); /// Number of elements in queue. /// /// The heap is implemented in the first [_length] entries of [_queue]. int _length = 0; /// Modification count. /// /// Used to detect concurrent modifications during iteration. int _modificationCount = 0; /// Create a new priority queue. /// /// The [comparison] is a [Comparator] used to compare the priority of /// elements. An element that compares as less than another element has /// a higher priority. /// /// If [comparison] is omitted, it defaults to [Comparable.compare]. If this /// is the case, `E` must implement [Comparable], and this is checked at /// runtime for every comparison. HeapPriorityQueue([int Function(E, E)? comparison]) : comparison = comparison ?? defaultCompare; E _elementAt(int index) => _queue[index] ?? (null as E); @override void add(E element) { _modificationCount++; _add(element); } @override void addAll(Iterable elements) { var modified = 0; for (var element in elements) { modified = 1; _add(element); } _modificationCount += modified; } @override void clear() { _modificationCount++; _queue = const []; _length = 0; } @override bool contains(E object) => _locate(object) >= 0; /// Provides efficient access to all the elements currently in the queue. /// /// The operation is performed in the order they occur /// in the underlying heap structure. /// /// The order is stable as long as the queue is not modified. /// The queue must not be modified during an iteration. @override Iterable get unorderedElements => _UnorderedElementsIterable(this); @override E get first { if (_length == 0) throw StateError('No element'); return _elementAt(0); } @override bool get isEmpty => _length == 0; @override bool get isNotEmpty => _length != 0; @override int get length => _length; @override bool remove(E element) { var index = _locate(element); if (index < 0) return false; _modificationCount++; var last = _removeLast(); if (index < _length) { var comp = comparison(last, element); if (comp <= 0) { _bubbleUp(last, index); } else { _bubbleDown(last, index); } } return true; } /// Removes all the elements from this queue and returns them. /// /// The returned iterable has no specified order. /// The operation does not copy the elements, /// but instead keeps them in the existing heap structure, /// and iterates over that directly. @override Iterable removeAll() { _modificationCount++; var result = _queue; var length = _length; _queue = const []; _length = 0; return result.take(length).cast(); } @override E removeFirst() { if (_length == 0) throw StateError('No element'); _modificationCount++; var result = _elementAt(0); var last = _removeLast(); if (_length > 0) { _bubbleDown(last, 0); } return result; } @override List toList() => _toUnorderedList()..sort(comparison); @override Set toSet() { var set = SplayTreeSet(comparison); for (var i = 0; i < _length; i++) { set.add(_elementAt(i)); } return set; } @override List toUnorderedList() => _toUnorderedList(); List _toUnorderedList() => [for (var i = 0; i < _length; i++) _elementAt(i)]; /// Returns some representation of the queue. /// /// The format isn't significant, and may change in the future. @override String toString() { return _queue.take(_length).toString(); } /// Add element to the queue. /// /// Grows the capacity if the backing list is full. void _add(E element) { if (_length == _queue.length) _grow(); _bubbleUp(element, _length++); } /// Find the index of an object in the heap. /// /// Returns -1 if the object is not found. /// /// A matching object, `o`, must satisfy that /// `comparison(o, object) == 0 && o == object`. int _locate(E object) { if (_length == 0) return -1; // Count positions from one instead of zero. This gives the numbers // some nice properties. For example, all right children are odd, // their left sibling is even, and the parent is found by shifting // right by one. // Valid range for position is [1.._length], inclusive. var position = 1; // Pre-order depth first search, omit child nodes if the current // node has lower priority than [object], because all nodes lower // in the heap will also have lower priority. do { var index = position - 1; var element = _elementAt(index); var comp = comparison(element, object); if (comp <= 0) { if (comp == 0 && element == object) return index; // Element may be in subtree. // Continue with the left child, if it is there. var leftChildPosition = position * 2; if (leftChildPosition <= _length) { position = leftChildPosition; continue; } } // Find the next right sibling or right ancestor sibling. do { while (position.isOdd) { // While position is a right child, go to the parent. position >>= 1; } // Then go to the right sibling of the left-child. position += 1; } while (position > _length); // Happens if last element is a left child. } while (position != 1); // At root again. Happens for right-most element. return -1; } E _removeLast() { var newLength = _length - 1; var last = _elementAt(newLength); _queue[newLength] = null; _length = newLength; return last; } /// Place [element] in heap at [index] or above. /// /// Put element into the empty cell at `index`. /// While the `element` has higher priority than the /// parent, swap it with the parent. void _bubbleUp(E element, int index) { while (index > 0) { var parentIndex = (index - 1) ~/ 2; var parent = _elementAt(parentIndex); if (comparison(element, parent) > 0) break; _queue[index] = parent; index = parentIndex; } _queue[index] = element; } /// Place [element] in heap at [index] or above. /// /// Put element into the empty cell at `index`. /// While the `element` has lower priority than either child, /// swap it with the highest priority child. void _bubbleDown(E element, int index) { var rightChildIndex = index * 2 + 2; while (rightChildIndex < _length) { var leftChildIndex = rightChildIndex - 1; var leftChild = _elementAt(leftChildIndex); var rightChild = _elementAt(rightChildIndex); var comp = comparison(leftChild, rightChild); int minChildIndex; E minChild; if (comp < 0) { minChild = leftChild; minChildIndex = leftChildIndex; } else { minChild = rightChild; minChildIndex = rightChildIndex; } comp = comparison(element, minChild); if (comp <= 0) { _queue[index] = element; return; } _queue[index] = minChild; index = minChildIndex; rightChildIndex = index * 2 + 2; } var leftChildIndex = rightChildIndex - 1; if (leftChildIndex < _length) { var child = _elementAt(leftChildIndex); var comp = comparison(element, child); if (comp > 0) { _queue[index] = child; index = leftChildIndex; } } _queue[index] = element; } /// Grows the capacity of the list holding the heap. /// /// Called when the list is full. void _grow() { var newCapacity = _queue.length * 2 + 1; if (newCapacity < _initialCapacity) newCapacity = _initialCapacity; var newQueue = List.filled(newCapacity, null); newQueue.setRange(0, _length, _queue); _queue = newQueue; } } /// Implementation of [HeapPriorityQueue.unorderedElements]. class _UnorderedElementsIterable extends Iterable { final HeapPriorityQueue _queue; _UnorderedElementsIterable(this._queue); @override Iterator get iterator => _UnorderedElementsIterator(_queue); } class _UnorderedElementsIterator implements Iterator { final HeapPriorityQueue _queue; final int _initialModificationCount; E? _current; int _index = -1; _UnorderedElementsIterator(this._queue) : _initialModificationCount = _queue._modificationCount; @override bool moveNext() { if (_initialModificationCount != _queue._modificationCount) { throw ConcurrentModificationError(_queue); } var nextIndex = _index + 1; if (0 <= nextIndex && nextIndex < _queue.length) { _current = _queue._queue[nextIndex]; _index = nextIndex; return true; } _current = null; _index = -2; return false; } @override E get current => _index < 0 ? throw StateError('No element') : (_current ?? null as E); } ��NN<@Q>F4J*HJ2E1?"(BIJOK$<'"**,=.8.9=LB(8@:%!F@(%G1>AIP>H7.E#=/8.9=A40F!H3I! extends Object with ListMixin implements Queue { /// Adapts [source] to be a `QueueList`. /// /// Any time the class would produce an element that is not a [T], the element /// access will throw. /// /// Any time a [T] value is attempted stored into the adapted class, the store /// will throw unless the value is also an instance of [S]. /// /// If all accessed elements of [source] are actually instances of [T] and if /// all elements stored in the returned are actually instance of [S], /// then the returned instance can be used as a `QueueList`. static QueueList _castFrom(QueueList source) { return _CastQueueList(source); } /// Default and minimal initial capacity of the queue-list. static const int _initialCapacity = 8; List _table; int _head; int _tail; /// Creates an empty queue. /// /// If [initialCapacity] is given, prepare the queue for at least that many /// elements. QueueList([int? initialCapacity]) : this._init(_computeInitialCapacity(initialCapacity)); /// Creates an empty queue with the specific initial capacity. QueueList._init(int initialCapacity) : assert(_isPowerOf2(initialCapacity)), _table = List.filled(initialCapacity, null), _head = 0, _tail = 0; /// An internal constructor for use by [_CastQueueList]. QueueList._(this._head, this._tail, this._table); /// Create a queue initially containing the elements of [source]. factory QueueList.from(Iterable source) { if (source is List) { var length = source.length; var queue = QueueList(length + 1); assert(queue._table.length > length); var sourceList = source; queue._table.setRange(0, length, sourceList, 0); queue._tail = length; return queue; } else { return QueueList()..addAll(source); } } /// Computes the actual initial capacity based on the constructor parameter. static int _computeInitialCapacity(int? initialCapacity) { if (initialCapacity == null || initialCapacity < _initialCapacity) { return _initialCapacity; } initialCapacity += 1; if (_isPowerOf2(initialCapacity)) { return initialCapacity; } return _nextPowerOf2(initialCapacity); } // Collection interface. @override void add(E element) { _add(element); } @override void addAll(Iterable iterable) { if (iterable is List) { var list = iterable; var addCount = list.length; var length = this.length; if (length + addCount >= _table.length) { _preGrow(length + addCount); // After preGrow, all elements are at the start of the list. _table.setRange(length, length + addCount, list, 0); _tail += addCount; } else { // Adding addCount elements won't reach _head. var endSpace = _table.length - _tail; if (addCount < endSpace) { _table.setRange(_tail, _tail + addCount, list, 0); _tail += addCount; } else { var preSpace = addCount - endSpace; _table.setRange(_tail, _tail + endSpace, list, 0); _table.setRange(0, preSpace, list, endSpace); _tail = preSpace; } } } else { for (var element in iterable) { _add(element); } } } QueueList cast() => QueueList._castFrom(this); @Deprecated("Use cast instead") QueueList retype() => cast(); @override String toString() => IterableBase.iterableToFullString(this, '{', '}'); // Queue interface. @override void addLast(E element) { _add(element); } @override void addFirst(E element) { _head = (_head - 1) & (_table.length - 1); _table[_head] = element; if (_head == _tail) _grow(); } @override E removeFirst() { if (_head == _tail) throw StateError('No element'); var result = _table[_head] as E; _table[_head] = null; _head = (_head + 1) & (_table.length - 1); return result; } @override E removeLast() { if (_head == _tail) throw StateError('No element'); _tail = (_tail - 1) & (_table.length - 1); var result = _table[_tail] as E; _table[_tail] = null; return result; } // List interface. @override int get length => (_tail - _head) & (_table.length - 1); @override set length(int value) { if (value < 0) throw RangeError('Length $value may not be negative.'); if (value > length && null is! E) { throw UnsupportedError( 'The length can only be increased when the element type is ' 'nullable, but the current element type is `$E`.'); } var delta = value - length; if (delta >= 0) { if (_table.length <= value) { _preGrow(value); } _tail = (_tail + delta) & (_table.length - 1); return; } var newTail = _tail + delta; // [delta] is negative. if (newTail >= 0) { _table.fillRange(newTail, _tail, null); } else { newTail += _table.length; _table.fillRange(0, _tail, null); _table.fillRange(newTail, _table.length, null); } _tail = newTail; } @override E operator [](int index) { if (index < 0 || index >= length) { throw RangeError('Index $index must be in the range [0..$length).'); } return _table[(_head + index) & (_table.length - 1)] as E; } @override void operator []=(int index, E value) { if (index < 0 || index >= length) { throw RangeError('Index $index must be in the range [0..$length).'); } _table[(_head + index) & (_table.length - 1)] = value; } // Internal helper functions. /// Whether [number] is a power of two. /// /// Only works for positive numbers. static bool _isPowerOf2(int number) => (number & (number - 1)) == 0; /// Rounds [number] up to the nearest power of 2. /// /// If [number] is a power of 2 already, it is returned. /// /// Only works for positive numbers. static int _nextPowerOf2(int number) { assert(number > 0); number = (number << 1) - 1; for (;;) { var nextNumber = number & (number - 1); if (nextNumber == 0) return number; number = nextNumber; } } /// Adds element at end of queue. Used by both [add] and [addAll]. void _add(E element) { _table[_tail] = element; _tail = (_tail + 1) & (_table.length - 1); if (_head == _tail) _grow(); } /// Grow the table when full. void _grow() { var newTable = List.filled(_table.length * 2, null); var split = _table.length - _head; newTable.setRange(0, split, _table, _head); newTable.setRange(split, split + _head, _table, 0); _head = 0; _tail = _table.length; _table = newTable; } int _writeToList(List target) { assert(target.length >= length); if (_head <= _tail) { var length = _tail - _head; target.setRange(0, length, _table, _head); return length; } else { var firstPartSize = _table.length - _head; target.setRange(0, firstPartSize, _table, _head); target.setRange(firstPartSize, firstPartSize + _tail, _table, 0); return _tail + firstPartSize; } } /// Grows the table even if it is not full. void _preGrow(int newElementCount) { assert(newElementCount >= length); // Add 1.5x extra room to ensure that there's room for more elements after // expansion. newElementCount += newElementCount >> 1; var newCapacity = _nextPowerOf2(newElementCount); var newTable = List.filled(newCapacity, null); _tail = _writeToList(newTable); _table = newTable; _head = 0; } } class _CastQueueList extends QueueList { final QueueList _delegate; // Assigns invalid values for head/tail because it uses the delegate to hold // the real values, but they are non-null fields. _CastQueueList(this._delegate) : super._(-1, -1, _delegate._table.cast()); @override int get _head => _delegate._head; @override set _head(int value) => _delegate._head = value; @override int get _tail => _delegate._tail; @override set _tail(int value) => _delegate._tail = value; } �)NN<ACQP J.QQ>PIB=)>) N$>A'.9;4D/",,7 -O=I(+  &" 0%E=7.#=.=8  &=") J  /! 8%/ 8/% ; K(G> $59. (6 (K? *(K; *'G4;') .*E/! ='08&%"1 18H$.''O-67$2 O4P $ 3 $ 3&package:collection/src/queue_list.dart�6��_file:///github/home/.pub-cache/hosted/pub.dartlang.org/collection-1.16.0/lib/src/union_set.dart� // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. import 'dart:collection'; import 'unmodifiable_wrappers.dart'; /// A single set that provides a view of the union over a set of sets. /// /// Since this is just a view, it reflects all changes in the underlying sets. /// /// If an element is in multiple sets and the outer set is ordered, the version /// in the earliest inner set is preferred. Component sets are assumed to use /// `==` and `hashCode` for equality. class UnionSet extends SetBase with UnmodifiableSetMixin { /// The set of sets that this provides a view of. final Set> _sets; /// Whether the sets in [_sets] are guaranteed to be disjoint. final bool _disjoint; /// Creates a new set that's a view of the union of all sets in [sets]. /// /// If any sets in [sets] change, this [UnionSet] reflects that change. If a /// new set is added to [sets], this [UnionSet] reflects that as well. /// /// If [disjoint] is `true`, then all component sets must be disjoint. That /// is, that they contain no elements in common. This makes many operations /// including [length] more efficient. If the component sets turn out not to /// be disjoint, some operations may behave inconsistently. UnionSet(Set> sets, {bool disjoint = false}) : _sets = sets, _disjoint = disjoint; /// Creates a new set that's a view of the union of all sets in [sets]. /// /// If any sets in [sets] change, this [UnionSet] reflects that change. /// However, unlike [new UnionSet], this creates a copy of its parameter, so /// changes in [sets] aren't reflected in this [UnionSet]. /// /// If [disjoint] is `true`, then all component sets must be disjoint. That /// is, that they contain no elements in common. This makes many operations /// including [length] more efficient. If the component sets turn out not to /// be disjoint, some operations may behave inconsistently. UnionSet.from(Iterable> sets, {bool disjoint = false}) : this(sets.toSet(), disjoint: disjoint); @override int get length => _disjoint ? _sets.fold(0, (length, set) => length + set.length) : _iterable.length; @override Iterator get iterator => _iterable.iterator; /// An iterable over the contents of all [_sets]. /// /// If this is not a [_disjoint] union an extra set is used to deduplicate /// values. Iterable get _iterable { var allElements = _sets.expand((set) => set); return _disjoint ? allElements : allElements.where({}.add); } @override bool contains(Object? element) => _sets.any((set) => set.contains(element)); @override E? lookup(Object? element) { for (var set in _sets) { var result = set.lookup(element); if (result != null || set.contains(null)) return result; } return null; } @override Set toSet() => {for (var set in _sets) ...set}; } RNN<%GOPN&D4AJOINNO>6JJO=NNO>@0 < 24M2C O (? 8%package:collection/src/union_set.dartjfile:///github/home/.pub-cache/hosted/pub.dartlang.org/collection-1.16.0/lib/src/union_set_controller.dart��// Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. import 'union_set.dart'; /// A controller that exposes a view of the union of a collection of sets. /// /// This is a convenience class for creating a [UnionSet] whose contents change /// over the lifetime of a class. For example: /// /// ```dart /// class Engine { /// Set get activeTests => _activeTestsGroup.set; /// final _activeTestsGroup = UnionSetController(); /// /// void addSuite(Suite suite) { /// _activeTestsGroup.add(suite.tests); /// _runSuite(suite); /// _activeTestsGroup.remove(suite.tests); /// } /// } /// ``` class UnionSetController { /// The [UnionSet] that provides a view of the union of sets in [this]. final UnionSet set; /// The sets whose union is exposed through [set]. final Set> _sets; /// Creates a set of sets that provides a view of the union of those sets. /// /// If [disjoint] is `true`, this assumes that all component sets are /// disjoint—that is, that they contain no elements in common. This makes /// many operations including [length] more efficient. UnionSetController({bool disjoint = false}) : this._(>{}, disjoint); /// Creates a controller with the provided [_sets]. UnionSetController._(this._sets, bool disjoint) : set = UnionSet(_sets, disjoint: disjoint); /// Adds the contents of [component] to [set]. /// /// If the contents of [component] change over time, [set] will change /// accordingly. void add(Set component) { _sets.add(component); } /// Removes the contents of [component] to [set]. /// /// If another set in [this] has overlapping elements with [component], those /// elements will remain in [set]. bool remove(Set component) => _sets.remove(component); } 9NN<KP/ :<#,/J5MHL9N6261I4P%<0package:collection/src/union_set_controller.dart[file:///github/home/.pub-cache/hosted/pub.dartlang.org/collection-1.16.0/lib/src/utils.dart�// Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. /// A [Comparator] that asserts that its first argument is comparable. /// /// The function behaves just like [List.sort]'s /// default comparison function. It is entirely dynamic in its testing. /// /// Should be used when optimistically comparing object that are assumed /// to be comparable. /// If the elements are known to be comparable, use [compareComparable]. int defaultCompare(Object? value1, Object? value2) => (value1 as Comparable).compareTo(value2); /// A reusable identity function at any type. T identity(T value) => value; /// A reusable typed comparable comparator. int compareComparable>(T a, T b) => a.compareTo(b); NN<G1HII67.!,L!package:collection/src/utils.dart/\3�v��G���7�;ν�K�Vݲ�?'?-�����@�d�ojq��%�*�3|17 �� ���7����8�9 �:77�;���~�=�� `��[`��[707A7Z7a7z�p������b9� �!�~�= ���F7`��7���"�~�='�#�~�=)�$�~�=+�%�~�=-�&�~�=/  "%(+-247?DJMTWZ]`chkrvy����������������1�=�'�(�)�( �*�( �+    !   �()7<>N  /  6 L M�,\�+]bdfklnoqruz{|~���������������������-9��9��9����������������������.������������������y�*T_T`TaThTiTjT���.\_\`�/_��a�)b�,c��c��c��c��c��a�*i�,j��j��j��j��j��iiaa�.r�,s��s��a�0v�,w��vv��v��v��a�+}}(}]}�,���̀���a�/���,�����؀��)���,���ـ��*���,���ـ��.�����+���,���܀��݀��/���,���ڀ������.�����+���������������������������������������������������1���‘�/���,�����䀭�/���,���ڀ��倲�)���,���怴�瀴�€��耲�*���,���怺�瀺�€��耹V���.���,������瀲�+�Ā����/���2�Ȁ�Ƀ)�ʃ2�ˀ�ˀ�ˀ�Ƀ*�σ2�Ѐ�Ѐ�Ѐ�π���h��i�π����π��Ƀ+����(�ڀ��ڀ�ڀ��ڀ��ڀ��ڀ���f��|�ڀ��ڀ��ڀ��ځ�ځ�ځ��y�ڃ2���Ƀ/������3����)��3����*���3�����a��h����+��k��/���4����)��4����*��4���V��.� �4� ���+� ����/��5�� ��)��5�� ��*��5�� �a���-�� ��+��5����(��������������.�%��/�'�6�)��*�)�+�6�,��*�*�.�6�/��.���*�+�2�*�/�4�)��6�)�7�6�8��6�*�:�6�;��:a�:h�6�+�?k�6�/�A�)��C�)�D�6�E��E��C�*�H�6�I��I��HV�C�+�M���C�/�O�7�Q�)�R�7�S��S��S��S��S��S��Q�*�Z�7�[��[��[��[��[��[��Q�+�b��b�#�b�'�b�,�b�/�b�0�b�1�b�7�j�2�j�5�j�8�j�9�j�;�8�p�<�q�+�r���r���r���r���r�=�r�>�r���r���r���r�1�|��q�/�~�p�@���*��a�����9����+������k���A��d���B�����r��{�������D���E���F���/���:���)���:���~���*���:���~���G���)���:���H���*���:���H���0�����+���I���%�������M���)���:���O���P���*���:���O���P���+���I���%�������/�����S���+���I���%�������/�����U���+���I���%�������/�����V�ƃ)�ǃ:�ȁW�ƃ*�ʃ:�ˁW�ƃ+�́I�́%�̀��ƃ/�����_�Ӄ)�ԃ:�ՁW�Ӄ*�׃:�؁W�Ӄ+�ځI�ځ%�ڀ��Ӄ/�����b���)��:��W���*��:��W���+��I��%���/�����d��+�����/�����e��+�����/�����f���)���g���� ���*���g���� ���T���+��j���/����k��)��:��h��i��*� �:� �h� �i��+� �I� �%� ����/����r��)��:��s��*��:��s��+��I��%�����/����v� �)�!�:�"��"�w� �*�%�:�&��&�w� �+�)�I�)�%�)��� �/�-�-�y���z�0�+�1�I�1�%�1���0�/�5�;�7��8�/�9�9���<�<���=�/�>�>���=�A�+�B���B���B���B���B���B���B���>�J�+�K�ڂK�ނK�߂K���K��K��K��K��K��K��K��K��K��K��K��K��K���K��K��K��K��K���K���K���K��K��K��K��K��K��K��K� �K� �K� �K� �K� �K��K��K��K��K��K��K��K��K��K��K��K��K��K��K��K��K� �K�!�K�"�K�#�K�$�K�%�K�&�K�'�K�)�K�*�K�,�K�-�K�.�K�/�K�1�K�2�K�3�K�4�K�6�K�7�K�8�K�9�K�;�K�<�K�=�K�>�K�?�K�B�K�C�K�D�K�E�K�F�K�G�K�I�K�J�K�K�K�L�K�M�K�N�K�O�K�P�K�Q�K�R�K�S�K�T�K�U�K�V�K�W�K�X�K�Y�K�Z�K�\�J���J�ʂJ�̂J�тJ�҂J�ӂJ�ՂJ���?���]���)���?������*���?���a���/�����`�ǃ)�ȃ?�Ɂ�ɀ�ǃ*�̃?�́�̀��V�ǃ.�у?�Ҁ�ǃ+�Ԁ��ǃ/���@�؃+�قr�قs�قt�قu�قv�قw�قx�قy�قz�ق{�ق|�ق}�ق~�ق�ق��ق��ق��ق��ق��ق��ق��ق��ق��ق��ق��ق��ق��ق��ق��ق��ق��ق��ق��ق��ق��ق��ق��ق��ق��ق��ق��ق��ق��ق��ق��ق��ق��ق��ق��ق��؂b� �)� �@��c� �d� � � �*��@��c��d���� �+��(�.��5������e��f��g������������������������������������� �.�0� �/�2�2�@�4�Ă؂k�؂q�A�8���9�)�:�A�;�H�9�*�=�A�>�H�=�=h�=i�=���=_�9�0�E�9�+�Gk�G���G���G���G���G�=�G���G���G���G���8���R�)�S�A�T���T���T�ƒT���S-�R�*�Z�A�[���[���[�ƒ[���Z-�Z���Z_�Zh�Zi�Z�R�.�f�A�g���g�ƒg���R�+�k�A�l���l���l���l���l���l���l���l���k���k���k���kk�k���k�=�k���k���k���k���ky�R�/���8�ƃ��)���A�������*���A������a���/���8�ǃ��)���A�������ȃ��惎�Ƀ��*���A�������ȃ��惔�Ƀ�V���.���A���惛�Ƀ��+�������/���B���˃��+��������������y������b��d��f��k��l��n��o��q��r��u��z��{��|��~�������������������������������������-��������������������������������������������������]��.���������������������������������������*��_��`��a��h��i��j�ڀ����.��_��`���/�����̃�)��B�邬��̓�΃�σ�*��B���̓�΃�σ���.���B���̓��΃��σ���+���B���҃��Ճ�������������������׃����������������y���܃��݃�����������(��0����/���B��ф�ă�����)��B����*��B����΄�τ�.� �B�!�΄!�τ�/�$�C�&��'�+�(���(���(���(�=�(�>�(���(���(���(�1�1��'�/�3�&��5�)�6�C�7��7���5�*�:�C�;��;���;��:�:a�5�+�Ak�A�B�A���5�/�E�E���D�H���I�)�J���J�D�L��I�*�N���N�D�P��I�+�R���R���I�/�U�U�D�W���1�Y���Z�.�[�Z�+�]���]���]���]���]���]���]���]���]���]���]���]���]�1�j��Z�/�l�Y���n�/�o�Y[�q�+�r�1�s��r���r���r���r���r���r���r���r���r���r���r���r���q�.���q�/���Y�����+���������������=���>���������������1���℅�/���Y����)���1���H���*���1���H���0���DŽ��/���Y����+���1���℟�������������=���>���������������/���Y����+���1���ℭ(�������������������.��_��`���/���E���+��������� �9��� ���*���9�€��_��h��i��a��`����j���+��n�ˀ���k��b��l��~��o�ˀ���d��f��u��q��|���ˁ��r�ˀ��ˀ��ˀ��ˀ��ˀ��ˀ���z��{��y���/����� ��)��9����*��9����+�� ��/�������)��9����*���9���������+��� ����(������������������������]�����������������������������������������������������������������.������������.�_�`���/������)� �9�!���*�#�9�$���+�&� �&���&���&���&���&�A�&�F�&�E�&�B�&���&�=�&���&�>�&��&���&�D�&����/�8����:�)�;�9�<��:�*�>�9�?��:�+�A� �A���A���A�݅A�܅A���A���A���A���A���A��A���A���:�/�O����Q�)�R�9�S��Q�*�U�9�V��U���Uh�Ui�U���U�U���Q�+�^� �^�^(�^���^��^���^���^���^���^f�^|�^���^���^���^��^y�^��^��Q�/�q����s�+�t���t���t���t���t�=�t�>�t���t���t���t�1�~��s�/��������)���9������*���9������h��i�����+������k��y���A���F���E���B������D���/��������)���9���������*���9���������h��i�����+������k��y���������������A���F���E���B�������=�������>����������D���/���-���������F�G���H���I���J�G�ƒK���L�ă+�ŃM���*�����N���O�Ƀ+�������+�������+���ˁj�� ���Ճ0����$�Ճ+��&��(���P��.���Q�ރ0�߃R��K��O�S��Y���/���T��U��+��V���W��X��/����Y��0���Z���[��/�����\��*��h��]���+���j���^���_���/�����+��x��y��`��/���a��/���b��/� ��c� �/� ��d��/���e��/���+��f��g��/����0��dž�R���h���i��/���+� �����.�"�܃*�$a��+�&����*�(V��+�*���*�-�,���,�����j�/�0�0�р��*.�уk��l�5�+�6�����m��n�9�/�:��ͅр����*���Ńo�܃+�A���A����p�*����q�$�Ńr���+�I�s�*����t�L�/�M���u�O�+�P�v���w�R�+�S ��Z�Ńx�΀΅΀υ΀ԅ�]�΀ՆU�0�\�ˀۅˀޅ��y�`�/�a���z�8�+�d�c�*�f �c�/�h�G�i�Ćd(�df�f�A|�d��d���d���d���8�*�s���An�s���sh�si�s�d|�d���d���d�����{�d��d����|���+���}�O�/���Ak�$h�Al�A�����~���/��������/���������/���G�������������8�0������������������/���s���������0�����*�����+����΁!���*���+� ���烈���/���������/���������0���ͅ��*���T�I���������0���������0�������͆d������ k���+���р�� ���ǀ����������ƃ��Az�р��S�셾���˃.�̃G�̀慾���σ/���͂�$`�0�G�ԃ��ă/�փ��Ƀ*�؂:�Ń+�ڂ@���˂H�˂@�߀Ʌ��A���A��������/����+�怌�Ay�����܃/���������р�������/���A���F�*���A~� �B� ���Ab�$_�Ao�Ad�Af�$i�Au�Aq�A�$j�Ar�A���A���A{���р��р��р��р��р��р��р��р��р��р��р��р��р��р��р��р����р�� ��� �A� �F� �E� �=� ��� �>� ��� �D� ����+�#���#���#���#�݇#�܇#���#���#���#���#���#���d����y� �k��+�2������~�/�5���)�7���7���,�������~�)�<���� #,3:SYhisx�������������������������������������ƀҀڀ��������������� �� �+�1�=�I�K�V�a�u�y��������������ā́ց������ ��"�$�-�8�B�D�N�S�[�e�q�|�������������ق�����������!�(�2�8�@�E�I�L�V�\�e�p�u������������������������ǃ˃׃ۃ��������� ���� �2�:�@�I�M�X�_�j�x�����������������������„˄Ԅބ���� ���$�+�5�@�N�T�\�e�t�����������������������υօۅ܅������ ����� �)�0�8�>�?�@�N�W�h�u�������������ӆ܆��%�6�>�B�K�[�\�]�j�w�|���������������������ƇӇه݇������� ��*�4�D�N�W�g�m�����������ˆÈ݈���� ���(�3�>�K�`�e�o�t�u�������������ƉЉډމ�����1�M�^�f�n�������������Ŋ����/�C�N�T�^�c�o�y���������������������ŋʋً���� �)�2�5�8�?�@�L�Q�V�h�n���������������ʌΌҌ����������3�=�A�J�a�h�o�u�~���������������������ō͍̍ҍٍ��������!�&�,�1�8�?�F�a�f�m�u�|�������������ŽȎЎߎ�����/�9�E�T�a�n�y���������Џڏ����%�1�<�F�R�d�u�����������ΐא������2�;�V�i�p�y�}���������đޑ���0�J�h�����̒�����%�E�h�����ӓ��8�a�}�������������ȔԔ���4�U�z�����Ε����8�Y�{���ʖ���9�^�����җ����!�K�y�������ژ���6�X�u�����ҙ����<�A�i�����ؚ�� ��9�Q�V�r���›�� �0�O�n�������Ü� �)�I�m�v�����ߝ���D�m�����ܞ��$�H�p�����͟�� ��� �,�6�?�K�Q�Z�f�r�����٠�����"�&�>�Y�x���ġ���8�Z�������ע���2�T�z�����ˣ��*�F�f�~�����֤��#�>�Y�x���������¥ƥޥ� �!�:�_�����Ҧ���'�8�C�R�c�s�y���������������ǧקڧߧ������#�,�6�C�K�P�[�c�}���������ڨ���������6�>�F�N�V�W�X�_�g�n�������������$�1�;�C�H�T�a�p�~���������êǪϪڪ���K�^�f�������˫߬����"�3�J�K�]�b�p�y�������٬�� ��$�,�:�F�G�H�X�h�r�����ӭ�� �B�h�o�w��������Ǯѯ�/�n����"�I�{���ð��8�g������ �/�_���������������������ò˲вֲ�����$�6�D�_�e�l�r�~���������˳ܳ�����"�*�.�1�<�L�R�i�}���������ĴӴ���������*�3�9�=�I�S�f�m�z�������������ĵε۵���������$�-�4binarySearchinsertionSortlowerBoundmergeSortshufflereversepkg.collection.algorithmsRandom_mergeSortLimitEsortedListvaluecompareTbinarySearchByKkeyOfstartendlengthminmaxkey>element[]compunary-lowerBoundByelementsrandom>posnextInttmp1[]=_reverseijtmpcomparisonsetRangeinsertionSortByfirstLengthmiddlesecondLengthscratchSpaceidfirstTargetmergeSortBy_movingInsertionSortlisttargettargetOffsetelementKey_mergeSorttargetMiddle_mergefirstListfirstStartfirstEndsecondListsecondStartsecondEndcursor1cursor2firstElementfirstKeysecondElementsecondKey<=quickSortquickSortBy_quickSort>=pivotIndexpivotpivotKeyendSmallerstartGreaterstartPivotscurrentrelationcurrentTargetListMixinUint32ListNonGrowableListMixin_BoolList&Object&ListMixinfillRangefillfirstlastiteratorelementAtindexfollowedByotherforEachactionisEmptyisNotEmptysinglecontainseverytestanyfirstWhereorElselastWheresingleWherematchmatchFoundjoinseparatorbufferwriteAlltoStringwherewhereTypemapfexpandreducecombinefoldinitialValueskipcountskipWhiletaketakeWhiletoListgrowableresulttoSetaddaddAlliterable:sync-for-iteratormoveNextremove_closeGapsizeremoveWhere_filterretainWhereretainMatchingretainedclearcastRremoveLastsort!asMapsublistlistLengthgetRangeremoveRangeskipCountotherListotherStartreplaceRangenewContentsremoveLengthinsertLengthinsertEnddeltaoldLengthindexOfindexWherelastIndexOflastIndexWhereinsertremoveAtinsertAllinsertionLengtholdCopyStartsetAllreversed[]_compareAnyabBoolList_entryShift_bitsPerEntry_entrySignBitIndex_length_data__selectTypeboolistemptycapacitygenerategeneratorinstance_setBitof&< instead.Use list.cast instead.Use set.cast instead.Use queue.cast instead.Use map.cast instead.package:collection/collection.dartpackage:collection/src/algorithms.dart@fields@getters@methodspackage:collection/src/boollist.dartdart:collection@setters@constructors@factoriespackage:collection/src/unmodifiable_wrappers.dartpackage:collection/src/canonicalized_map.dartpackage:collection/src/combined_wrappers/combined_iterable.dartpackage:collection/src/combined_wrappers/combined_iterator.dartpackage:collection/src/combined_wrappers/combined_list.dartpackage:collection/src/combined_wrappers/combined_map.dartpackage:collection/src/comparators.dartpackage:collection/src/empty_unmodifiable_set.dartpackage:collection/src/wrappers.dartpackage:collection/src/equality.dartpackage:collection/src/equality_map.dartpackage:collection/src/equality_set.dartpackage:collection/src/functions.dartpackage:collection/src/iterable_extensions.dartpackage:collection/src/iterable_zip.dartpackage:collection/src/list_extensions.dartpackage:collection/src/priority_queue.dartpackage:collection/src/queue_list.dartpackage:collection/src/union_set.dartpackage:collection/src/union_set_controller.dartpackage:collection/src/utils.dartdart:mathdart:coreintObjectListNullRangeErrorcheckValidRangenumboolIterable_Listfilleddart:typed_datadart:_internalIterableElementErrornoElementIteratorListIteratorFollowedByIterablefirstEfficientConcurrentModificationErrorpragmatooManyStringStringBufferWhereIterableWhereTypeIterableMappedListIterableExpandIterableSubListIterableSkipWhileIterablecheckNotNullableTakeWhileIterableSet_CompactLinkedHashSet_GrowableListcastFromSortMapListMapViewcheckNotNegativetooFewEfficientLengthIterablecheckValueInIntervalidenticalReversedListIterableIterableBaseiterableToFullStringComparablecheckValidIndexUnsupportedErrorMapEntryDeprecatedMapBasemapToStringListBaseIndexError_InvocationMirror_withTypeSymbolTypeunmodifiableInvocationUnmodifiableMapBaseHashSetEmptyIterableStateErrorLinkedHashSetidentityHashCodeHashMapLinkedHashMapdouble@typedefsComparator_SyncIterator_SyncIterable_literal1rangeSplayTreeSetQueueSetBasesetToStringnameoptions_Overridemessage/X7�8�9�TxTxT|��c0��m�!�Q�O��Ř���,�/1YH����R HG����!�?ѣ/X�x����J0000000000���� �9�,k�X���t��(3jIN[pqrs��x��������heh��k��� �)�/�`�� ������`�� �ߓ老`�� �����`���A�A���N���T`���f`���v`��` ? ��� �� �� �A��E�U�[�]`��������`��������`���i�i���r���x`����`��`?������ �i�����ʔ�@ j��`���Ӕ�`��J���݀�v��.`��v��.`������[@ j��`����[� [`��J�%""%�'��%�H`�>v�9�7�H``��v�A.`��a`��`�߀��Rv�K�I�H``��v�U.`��a`��`�߀��%��{����A ������ ]��]��`��[�a`��]��`���Ca`��]��`����a`��`��]��`��]��]��`��[]��`��[>N]��]��`��[����]��`��[N`��*N]��]��`��[Na[[Na`��`��[N`���N[N[O��^[[`��[����[[[[K>A>N����]��`��]��`��`��2��`��]��`��`��>N��]��]��`��[v����]��]��`��[��Ex���� a`�߀�>N��!]��`��[v���"]��`��[��A> N��#`��&�.x�!���$'#a`��[��`��M�R5[�R��}�i��X�+�j�a`��]��`������� +N�D�P%`���`���& I�y���}��B��?N��&`�K>=�ȅ�&���ҁ�؅�`��`���`�>B��(`�>B�AM�m5[�m��}����s����a`��]��`������� +N�\�k'`���`���& I�������WB��?N�†�(]��` �����N��)]��`������v�2�#�W`��*`�ށ N�E�V+]� `�X�j�W`���z��>N��]��`� v��v������,]��`� � ]��`� ��Ex��� a`�߀�>N��-`� v���"`� ��>>N��]��`�v��v���Շl.]��`��]��`���Ex���� a`�߀�>N��/`�v����"`���A> N���0`��v����0`�ށI�'�7�+�B�@?N�X�b1`��x�pv�l�d��2]��`��$�q�`��a`��`��I��x�����D3'4^`�`��`�߁B��?M� 5[� ��}�!���B�"�D�-�a`��`��]��`������� +N��5`���`���& I�@�H�D� B�Q?N�i�r6]��`��`��x���t�J7��� `��4������]��`��`��J��2��`��`��a`��a]��`��`��]��`��`�߁N����8`��u��v���Ƈ�8`�ށN���"`��5���`��x�����E!$x� ���"9�a`��`�ށa`��`�߀�#������#*����#`��`��=x�*�"�E!:x�6�+��"9�a`��`�ށ"�=��#x�e�T��;�x��v�����l`�ށ9�a`��`�ށx��v������`�ށ9�a`��`�ށa`��`�߁a`��`��\� N�Ҋ�<]��`��`x2��`��`x=x����J=4�����5`���6]��`��`��\>���N�*�1>`x�3��>N�`]��`��v�`5�`�`]��`��x�`v�[�R�w?]��`�ށ"@^A`��]��`�ށ$R=x�j�`��B^a`��`��`��\�%�`��]��`�ހ�Ex�`�� a`�߀�>N�J`��v�r��"`�ހ�>�r��=x��v���z��C]��`��`��:���y#u��x�����w$���ya`��`�߀���`��a`��`��\� =x�����.:�ŋl�̋�a`��`x\� aa`��]��`��`��\\�&N���D]��]��`��[��)]��`��[�=x�� �.=4�%�%�h�&5`���+>`x\>�3�g=x�E�9�UE�Iw�V���^��a]��`��[\�*aa`��`x\\�&=��m��2��`��['F'G'6���UB=�+��~������J��[H[I`��>=�,��~�G�O���=����-� =���.� =��� a[=���)J��~����AJ���� '`���;)]��`��]� `>�K��N�U�_K]� `RN]� `�2`��N����`���N����`���E���ˍ�L`���x�ޅ�׏VMv����*`�ށ a`��`�߁3����Vx������V9�a`��`�ށ>���I��"x��� ��$���Va`��`��4'Na`��`�߁5>�+�Q=��3�7x�7��3�79�a`��`�ށ=��A�E�>�X�n=��`�Ex�f��`�E9�a`��`�ށI�tx����x��$����Va`��`�߁=x������E������7����Ea``�߁6?J����ŏ����AO�,���B!]��`��[]��` >�I��N�S�ZP]��` �k�)` �>N��]��]��`��[v��x��&��x�������$'Qa`��[��]��[R]��`��[a]��]��`��[�7]��]��`��[��Ex���� a`�߀�>N�zQ]��`��[v�Ȃ�"]��`��[��>�Ȑ�>N�]��]��`��[v�x�&��x��鑬$'Sa`��[��]��[R]��`��[a]��]��`��[�7]��]��`��[��Ex���� a`�߀�>N��T]��`��[v�$���"]��`��[��>�$��=x�3��,��E�7&�cx�S��N�|$'a`��[��`��&��x�x��s�|$'a`��[��`��x��&��x������|$'Ua`��[��`��V�a`��`�߁8a` \�*J����А����&AW�+�&�@(]��` �RX`��]��`��>�`�&N�j�y)]��`�����;`�������*=x��� �uB4���o�Y` �Z` `��J�+x�Ix�8v�.��,��`��[v�<��:��`��a`��`�ށ<\x�_v�U��S��`��[v�c��a��`��a`��`�ށ<a`��`�ށ=^a` ` `��\�%>N��]��` v������u]��` ��Ex����� a`�߀�>N�~T` v�����"` ��>��� E������]`��v�������`��x������Mv�ń����`��a`��`�߁3��Еx�х�Е9�a`��`�ށ>�Փ=x�낒ݓ�:���v������`��a`��`��\�>J�������N����Y� �������?��@�0���Dk3�^�d��^`�B8�d `3? �D5�~����@_j�`��������``��\J�����F�����6���η�@aj��`���Է���``��\J����F����`��#&�a����b `�Gj�r`�G (�͆�|Ac��| ��d`���e`���f`���)g`���Ch]� `���ci]� `��j`�I�}j`�Gj`�I��k`��j��`����l`��j��`����m`�Jj`�I]��]��`��[]��`��[>N]��]��`��[����]��`��[N`��*N]��]��`��[Na[[Na`��`��[N`���N[N[Nn[No[Np[O��^[[`��[��|[[[[K>A>=#� ����^����^RN]� `���2`����+]� `��N�. q`�JI�9!�W�=�� >=�f��p�� `�J>N�ڈ�r]��`��5�$�$]��`��x�$x� v�����2r]��`��Ls4���"�t`��`��J�v����u`�߁Maa`��`��]��`��N@^A`��]��`��$R=x�.�$�ZE'va`��\�*�$�ZN�C�G5`��x�T��I�2wx'vr�x�F^ y`��z`��{`��r]��`��|`��}`��~]��`��[x`��`��`��PM��5[��������4������]��`�I`�I>N]��`�I����`�IN`��*N]��`�INa[[Na`��`��[N`���N[N[Nn[No[Np[O��^[[`��[����[[[[K>A>K>N������`�Rj��`�RM�5[�����U$�&�"�(���5��+��# �l'+N�����`�S�`�S��(N�M�X��]�V`���Z�X`��=x���~�,��4����������[\J��x�����1-E&�����p.`��a`��\�Z��4�����\>���=x���͜1-��a]��[�[=x������a]��\�]^a[\��`����a\��`�^]�_[�b=����dv�>�3�1-��]�``��f4�F�F�m�N``��\J�Zx�a�Z�,E�e�f.a[\�g����8��4������]��[J��x�����,��^`��`��]��[�hM��5[����x��x���™��a]��`�i�jjj��`�G^`�G��a]��`�i]��`�i�l��# �l'+=�`�i��(��`�m>M�u5[�u��x���{���a]��\�]��# �l'+=�\��(=/��=�+�����J��[H[I`��>=�,���+�,��=��-�l'=�# �.�l'=���l'a[=��)J��j��`�Gj��Ǘ��; �G��+=��L>I�₌�H>M��5[�����-��j��&���; �G��+=��?M�B5[�B���H+�X���a�S��n���������^]� `�配��o�; �G��+=�;�% �]��`��[��B>I�Ł�ɗ=>M��5[�ـ���,���; �G��+=��?M�_5[�_��x�m�e���a]��\�]�; �G��+=�\��=�+�� �% � J�|[H[I`��>=�,�� �Y�a� =�; �-��=�G�.��=��a[=� )J�� *����PA�� ���P����`�n����`������`��`��>���PN�Ɏ���`��5�ߎ�`��v�ـ�ѡ�`�ށp#�ك�٢6��٢6`��`��N�����`��5���`��v�������`�ށq#������~����~`��`��J� "x����&V���a`��`�߁8"�-��'�&��0�a`��`�߀�x�B��<�n����E� a`��`�߁r+�S�p�A�� ����q`�J��g`����k`����l`����h]� `���i]� `��]��]��`��[]��`��[>N]��]��`��[�$��]��`��[N`��*N]��]��`��[Na[[Na`��`��[N`���N[N[O�p^[[`��[��[[[[K>A>=#�5��(�f��(�fRN]� `���2`����+]� `��M�R5[�R��x�`��X�:��a]��`�i�j�� �� �/+N�M�P��`�i�`�i�ON�q�}D]��]��`��[���)]��`��[�M��5[����x������:��a]��`�n�s�� �� �/+N������`�n�`�n�ON�ϐ���`����*�륍�73N����`���*�,���78N�E�T��`���V*�d���79I�w"��{�[!����>=����[*=x���Ɂu��$��'��'��^`��\�x?N�b�t��]��`��RN�v]��`���v�z`��j��`��I������[=x���v�kEj��`��a`��\�*?�v�kN������]��`��`��2��`��`��N������]� `��RN]� `���2`����>N�1]��`�{v�1u�1v�$�!����]��`�{�}]��`�{��Ex�1�$ a`�߀�>N���`�{v�4�$"`�{��>M�O5[�O��x�]��U�:��u�v�}�m����`��a`��]��`������ �� �/+N�@�M��`���`���O>N��]��`��v��u��v����� ��]��`����]��`����Ex���/ a`�߀�>N����`��v���/"`����>=x������:u��v���Ш���`�遆u��v���⧅��`��a`��`��\� >N�&]��`��v�&u�&v������]��`����]��`����Ex�&� a`�߀�>N� ��`��v�)�"`����A>I�/"!�>��3�v!x�U�J�v]� `��;v�i�^�g��`�遆a`��`�߁B�n?N������`��x������$v�����g��`�遆a`��`���I��!������>I��x�����;����`��a`��`�߁B�?=x�5� ��E�9��`��a`��`�߁6?I�T"v�e�X�f]� `��u`�߁�!�t��>M��5[����x������:��u��v�����g��`�遆a`��]��`������ �� �/+N������`���`���O>N��]��`��v��u��v���߫��]��`����]��`����Ex���@ a`�߀�>N����`��v���@"`����A> N��5`��� ��u�v���� 5`�遐I�'!�6v�/�+��!x`�遑'��a`��`�߁5B�D?N�\�b��`��v�xx�mv�h�d��!{`�遒��'��a`�]��`�道��`�達I��!x���Уf]� `��;��!"a`��`�߁B��?M�5[���x�#���:��u�Mv�K�@�g��`�遆�P�V��)#v������ ��`�遗��#����)+`��^`��]��`����`����`����]��`����`��#`����`��]��`������ �� �/+N����`���`���OM��5[�����0�� �:��g�*�w#��8�E��E�P�W���� �� �/+N���6]��]��`��[�]��]��`��[�O=x�y�m�������$a]��]��`��[\��>M��5[����x�ʀ�£:��u��v����g��`�遆���V��)��#�?��)+`�߀�#"v��r�f]� `��u`�߁���������`��x�����f]� `�逹[4���Ś�����`��`��J��$��'���ۯ'��aa`��[]��[��+]��`��^`��]��`����`����`����]��`����`��#`����`��]��`������ �� �/+N������`���`���OM�5[���� 0��1�:�:�g�P����_�E��l�P�~���� �� �/+N��6]��]��`��[�]��]��`��[�O=x����������*a]��]��`��[\��=����2��`��['F'G'6���B=�+��������J�[H[I`��>=�,����������=�� �-�/=�� �.�/=��/a[=���)J���,� ���A�� � ���+q`�J]��[[>N]��[�:��[N`��*N]��[Na[[Na`��`��[N`���N[N[Nn[O�^[[`��[� ��[[[[K>A>M�I5[�I��x�W��O�b��a]��`�i�j�������� +N�D�G��`�i�`�i� N�h�p��]��]��[�z�)]��[�>N��]��`��v��u��v�����y��]��`����]��`����Ex���� a`�߀�>N����`��v����"`����>=x������E����[4�����Z]��`�I`�I>N]��`�I����`�IN`��*N]��`�INa[[Na`��`��[N`���N[N[O��^[[`��[���Z[[[[K>A>M��5[����x�Ȁ���b��u��v���ӳ#��`�遆a`��]��`����������+N������`���`���I��!�v�u�v�����`������`�遦j�`��a`��`�߁5>M�'5[�'��x�5��-�beu�Iv�G�<�#��`�遆^`����`����`��]��`����������+=�`���?=�+������J�Z[H[I`��>=�,��������=���-��=���.��=����a[=��)J��a]��[\�*K>M�n5[�n���{��[������������ +=�]��[� ��`������`��>=�+��|������J��[H[I`��>=�,��|�������=����-�� =����.�� =� �� a[=���)J��|-�ǞΡiA�� ��i��q`�J�j`�Gj`�I]��[[> N]��[���[N`��*N]��[Na[[Na`��`��[N`���N[O��^[[`��[��i[[[[K>A>N��&��]� `��RN]� `���2`��=x�@�A Ej�@`�� a`��`�߁6=x�[�A Ej�[`�� a`��`�߁6=x�z�A Ej�z`�� a`��`�߁6=x���A Ej��`�� a`��`�߁6=x���A Ej��`�� a`��`�߁6�A O�Ο���a]��[�ޡ)]��[[>N]��[���[N`��*N]��[Na[[Na`��`��[N`���N[N[O��^[[`��[�ޡ)[[[[K>A>M��5[����x�����W��a]��`�i�j������+N�����`�i�`�i��I�v�$u�"v���L��]��`������`�߁�=0�-'��?>N�i]��`��v�iu�iv�a�^�L��]��`����]��`����Ex�i�� a`�߀�>N�P��`��v�l��"`����>M��5[����x������W��u��v�������`�遆a`��]��`����������+N�z����`���`����I��!x�����, ;v��u��v���λ���`������`�遦a`��`�߁>=0��'��?=�+�S�v�jJ�)[H[I`��>=�,�S�!�)�j=���-��=���.��=�޹�a[=�j)J�S=��.���5���;�(j�F`�Gj��_�cB=�+���������J�i[H[I`��>=�,����� �����=����-�� =����.�� =��� a[=���)J���.�"�'�?A�� �;�?�C��`���O��`��`��>�Y�?N�͢���`���N�ܢ���`��v��u��v�逢�v��]��]��`�ށ�*`�ށ�C�x� �� ��M����a`��`�߁3>��.N� �$��`��x�*��&��9x�9x�2��.��[��4��a`��`�ށ<���a`��`�ށ�a`��`�ށN�J�N��]��`��x�eu�dv�W��P�v��]��]��`�ށ�$��f�a`��]��`�ށI�px�{x�w��t�v$�a`��`�ށV��}��a`��`�߁8>����=���������>���*E������]`���x������"Mv�Ņ���v*`�ށ�a`��`�߁3��Ϳ"x�φ�Ϳ"9�a`��`�ށ>�դI����x�慣�v$���"a`��`�ށ�����a`��`�߀�J��v�����v��`�ށ�?=����x�!���9�a`��`�ށJ�2+/�B�O��A�� �_���jq`�J�~��`������`������`������`x]��\\>N]��\����\N`��*N]��\Na[[Na`��`��[N`���N[N[O�O^[[`��[�_��[[[[K>A>M��5[�Ҁ�x������@ ��u��v������@+��`�遆u�v�����@C��`�遗^`��`��U`��L`��]��`�����@��@� �@� +N�ˤ���`��&��`���@�`��N��!��`��v�(�#�A���`����I�4!�A�8�A�>M�a5[�a���g2��t�@ ��}�@+���A��@��@� �@� +N�V�_��`���`���@�N������`��u��v�����A�`����`�ށ�N�å�`����.����@7���B�I������B�>=x���u��$�'���6�B�'��v�U��M�@C��`�遼'��'��u��v������@75`�遽^`��\�x=����@�+B?=x��u��v������@O��]��`��`�送:���B�`�����Baa`��`��\� ?=�+��@i��@���@�J��[H[I`��>=�,��@i�C��C���@�=�@��-�@� =�@� �.�@� =�_�@� a[=��@�)J��@i0�%�H�HA�� �X�H�hq`�J����`������`����g`����k`������`��]��]��]��`��[]��]��`��[>N]��]��]��`��[���]��]��`��[N`��*N]��]��]��`��[Na[[Na`��`��[N`���N[N[O�H^[[`��[�X�H[[[[K>A> N�����]��`��`x2�`��`xN��'��]��`��`��2�<`��`��N�H�R��]� `��RN]� `���2`���FN�l�x��`��"��z�D�!����D�>N��]��`��v��u��v������D�S]��`����]��`����Ex���F` a`�߀�>N��T`��v���F`"`����A>N�̨���`��x��u��v�߂���D���]��`����$u��v�����F���`�ށ�a`��`���N����`�����u�*v�'��F�5`�遐I�l��v�z�p�GBx`�遑'��a`��`�߁5B��?I��"!����D���v�����GBx`�遑'��a`��`�߁5B��?N�J�O��`xx�Y�Q�E�7�e�GB4�p�p�~`xJ�v�v��a`��a`x`x�N����`��I�����F=>I��!x�����E������F�a`��`�߁�>M�5[���x��� �Du��u�(v�&���D���`�遆u�7v�5�+�F���`�遗^`��`��U`��L`��]��`�����E? �EK �E|+=x�����E�:���F�&�:�`���E�`��a`��`��\� ?=�S�H:x�c�\�E�$�d�F�a`��`����I�w���{�H:B��??N������`��5��`����H:#���I�+v���I�`����`����`��I�""���D�!�4�-�I�!x�J�@�F;�S�I�`��a`��`�߁>=5�r�d`x�d�G�#�rv�i�d�JW��]��`��`�ހ�w�i�d�JW��2��`��`����+]��`��`��=5����`x���G�#��v�����J���]��`��`�送w�����J���2��`��`����+]��`��`��=x�����FE���I�`��a`��`�߁6M��5[���x������Du��u�v����D���`�遆u�v���I�`����`�遗^`��`��U`��L`��]��`�����E? �EK �E|+N�׬���`��&��`���E�`��I�1!�Gv�=�5�K�Q]��`����>>N�]��`��v�u�v�v�n�K�Q]��`����]��`����Ex��LA a`�߀�>N�c��`��v���LA"`����>M��5[������/����Du����D�u�����H:���L����G��E? �EK �E|+=�\�E�?I��!��v�����K���]��`�ʁ�>>N�6]��`��v�6u�6v�/�'�K���]��`�ʁ�]��`�ʀ�Ex�6�Mj a`�߀�>N���`��v�9�Mj"`�ʀ�>M�a5[�a��x�o��g�Du��u��v����y�D���`�遆u��v�����M���`�遗^`��`��U`��L`��]��`�����E? �EK �E|+N�K�Q��`��&���`���E�`��I��!��v�����N� Q]��`����>>N��]��`��v��u��v�����N� Q]��`����]��`����Ex���N�! a`�߀�>N����`��v���N�!"`����>M� 5[� ���/��6�Du��?�D�u�Q�K�H:�T�OD"�]�G��E? �EK �E|+=�\�E�???N����6`��v�����F�6`�ρ�I�������O�B��?O�� ��a]��`��a`��\\����!��]��`���I��a`��\\>�O��>N�i]��`��v�i�i�PA]��`�ހ�Ex�i�Pq! a`�߀�>N�b��`��v�y�Pq!"`�ހ�A>�y�~N����`��#����D����P�"��.u�����H:���P�"`��I�������P�#>��b=x���u��$�C'����P�"'���9�GBa`��\��B�P?=}�p�l�PR �q�P�#`��a`��\=���Pu��v�����O�`�π�]��`�ށ�4�����m��`��\>���l=��1v�����G�C]��`��`�����Q�I��"!��v�����G���]��`��`�送x�u�v� ��G���]��`��`�送���"�Q�a`��`�߁�>�)�f=�31u�Vv�N�I�G���]��`��`�ހ��Y�Q�?a]��`��a`��\\=�t�Pu��v�����O�`�π�]��`�ށ�4��������`��\>����=x��v�����G�C]��`��`��7���S4������`��J���a`��a`��`�ށa]��`��a`��\\=5�ܲ�]��`��`��v�����G���]��`��`�送#�����S�+x�����S�]��`��`��=4����8��`������`��\>��7=5� � ]��`��`��v� ��G���]��`��`�ހ�#� � �T<"+x�� �T<"]��`��`��7�#�T 4�)�)�0`��J�/�a`��a`��`�ށ`��aa`��`��\\�&\N�F�Ul`��v�]�W�F�l`�ρ�I�q!���u�T�>=5����`x���G�#��v�����U* ��]��`��`�ހ�w�����U* ��2��`��`����+]��`��`��=���Pu��v�����T�`�π�]��`�ށ�4���ߴ&��`��\>��%=��1u�v� ��G���]��`��`�ހ���U� a]��`��a`��\\=�/�Pu�Pv�J�;�T�`�π�]��`�ށ�4�S�S���T`��\>�Z��=x�uu�sv�i�d�G���]��`��`�ހ�7���Vd 4������`��J���a`��a`��`�ށa]��`��a`��\\?N����6]��]��`��[���)]��`��[�=x�����E�=4�����2��5`������`x\>��1=x���V�E�w�"�WM�(�WBa]��`��[\�*aa`��`x\\�&=�7�E$�>�V�B=�+��D��E$��EJ�H[H[I`��>=�,��D��W��W���E=�E? �-�E|=�EK �.�E|=�X�E|a[=��E)J��D�1�K�P��A�� �e���t��]��`��`������`��\>����=x������X�:����X�#x������X�������X�a`��`�߁�x��u��x������X�$����X�a`��`�ހ�9�a`��`�ށ�`��a`��`��\� 2�εݷ[A�� ��[��q`�J� ��`�����`��]��`��`��>N]��`���*��`��N`��*N]��`��Na[[Na`��`��[N`���N[N[O��^[[`��[��[[[[[K>A>I�.�=��K�Y�$�{v�Z��U�Y�F`���'��v�qu�ov�g��b�Y���`������`�ށ�B?N������[v������Y���[��I��%�����Z�`��>M��5[�Ȁ�x�ր���Yy��u��v�끶��Y���`�遆u��v�����Z�`�ʀ�`�遗^`��`��U`��L`��]��`������Y��Y��Z' +N�¶���`��&���`���ZG `��I� !�v�� �[���`���>=���Y�$�@v�-�)�[���`���'�v�:��5�Y���`���B??=��H�Y�u�Xv�T��O�Y���`���B=�+��Y���Yڄ�Y�J�[[H[I`��>=�,��Y��\n�\v��Y�=��Y��-�Z' =��Y��.�Z' =���Z' a[=��Y�)J��Y�\�%�!�#1E7:=Y@DXX|Y\\� 9���ځ����k;��^`��W;`���#{`��I�0�n���j�1`��`��M�n `I? ��K������B��������]��`��]��`��`��]��`��]�^N���ׅn�j��`��`��`IPT�:�B���`��QU�T�\���`��RV�t�|��� ]��`��Z���&���&���`��� � ]��`��j`�I��`��j`�I`N?P��^�R��^�Q��^� ���X�����l@�j��`�����l���]��`��]��`��`��]��`��>�ƅlJ���ځ�`���+Cx������_!��`��`x4���� ����`����� ]��`��`��]��`��`xJ����`��`x�� �_�������_�aa`��]��`��`��]��`��`x]��`��`x��v�6.�`��T�v�J.�`��U� v�^.� ]��`��V^�`N[�.�o�� j�/`��`��`I]b���À��`��^c�ԇڀ�� `��_d������ ]��`��`e� ���� `��i�F�F���Z���`�`���o� `����� ]��`��j`�I��� `��j��`��`[?]��`�^��`�_��`�`��a �F��g��4�@�j�`���:��V�]��`��]��`��`��]��`��>�^�J�d��Ex�r��k�a���`��`x4�v�v���w��`���|� ]��`��`��]��`��`xJ������`��`x����a���������a�aa`��]��`��`��]��`��`x]��`��`x��v��.�`��bv��.� `��c� v��.� ]��`��d� v��.� `��ea`b�sj��]��`��`x�C�D�E�F>A������9`��j��`��C�?�F��a��P���F��]��`��`x�_�`���w�`��j`�I��� ]��`��j`�I`��>����N�����^`��W;`����H����ccN�ߊ��`�����>N� ]��]��`��`xv� v� �� �c/.]��]��`��`x��]��]��`��`x��Ex� ��c� a`�߀�>N�!]��`��`xv���c�"]��`��`x��A>��qN�$�&�`xv�.��(�dE� `x��N�A�JC]��`��`��v�N�L�dzC]��`��`��N�d�m��]��`��`��v�q�o�dz��]��`��`�ހ�N������]��`��`��v�����dz��]��`��`�送N������]��`��`��v�����dz��]��`��`�ހ�N�ы��`��x�か��cC�v����dE��`���a`��`�逪I�����eo >��+B�?I�4!}�C��9�c��D�eo `��^`��W;`��>�M�gB�W?I�p!�}��t�cP>����=���eo �������eo `������cP`��?=x�Ѕ���c���$��'����eo `��'Na`��\��I��"!�����d� !���e >���>N�A]��`��v�A5�A�A]��`��x�Av�<�2�e ]��`��`��?]��`�ށ"@^A`��]��`�ށ$R=x�K�A�f�B^a`��`��`��\�%�A�f�]��`�ހ�Ex�A�f� a`�߀�>N�-�`��v�S�f�"`�ހ�>�S��=x�c��_�c���$��'��n�g�'�x�{�r�e ]��`��`��$�|�g�a`��`���'Na`��\��>N��]��`��v��5����]��`��x��v�����d� ]��`��`��?]��`�ށ"@^A`��]��`�ށ$R=x�����h5B^a`��`��`��\�%���h5]��`�ހ�Ex���h a`�߀�>N���`��v���h"`�ހ�>�ǎ@I��!��u��x�����d� ]��`��`��$���h�a`��`�ހ��a`��`�߀�>��6=x������c���$�)'�x�� �d� ]��`��`��$��h�a`��`�ހ�'�x�"��e ]��`��`��$�#�h�a`��`���'Na`��\��?=x�N��J�c���$�o'�v�e�[�e ]��`��`��*`�ށ�'Na`��\��=x�~��z�c���$��'� v��x��v�����d� ]��`��`�ށ!]��`�ށ�s4���������`��`��J��x�����j�V�a`��`�߁8aa`��`��]��`�ށN*`�ށ�'Na`��\��?>N��]��`��v��5���]��`��x��v�����d� ?]��`�ށ"@^A`��]��`�ށ$R=x�����k>B^a`��`��`��\�%���k>]��`�ހ�Ex���k' a`�߀�>N���`��v���k'"`�ހ�>���/=x����c���$�&'�"��k�'�x���d� $� �k�a`��`�ހ�'Na`��\��=x�;��7�c���$�Z'�#v�P�G�d� *`�ށ�'Na`��\��=x�g��c�c���$��'�$v��x��v�|�s�d� �!]��`�ށ�s4���������`��`��J��x�����mV�a`��`�߁8aa`��`��]��`�ށN*`�ށ�'Na`��\��I��!�����e9 >�G>N��]��`��v��5���]��`��x��v�����e9 ]��`��`��?]��`�ށ"@^A`��]��`�ށ$R=x�����m�B^a`��`��`��\�%���m�]��`�ހ�Ex���m� a`�߀�>N���`��v���m�"`�ހ�>���?=x��� �c���$�4'�%��nk'�&x�-�#�e9 ]��`��`��$�.�nka`��`�ހ�'Na`��\��?=x�S��O�c���'�'a`��\��J�xx�����c��(a`���D�F��a�)�F���F��]��`��`x^`���`��� ]��`��`��J�F4�F�F���_�`���w�`��j`�I��� ]��`��j`�I`��J�F�FC��F�oX��F�o����F�o�� ��F�o�E������a�*��������]��`��`x���`����� `���� ]��`��j`�I�� `��j�"`���2�+`��j�C`��]��`��`��>N]��`���U��`��N`��*N]��`��Na[[Na`��`��[N`���N[N[O��^[[`��[����[[[[K>A>N�a�l�^`��W;`���nH��}�pWN�����`������>N��]��]��`��`xv��v������p*.]��]��`��`x��]��]��`��`x��Ex���q� a`�߀�>N��!]��`��`xv���q�"]��`��`x��A> N�ג��`xv�����r$� `x��I��"����po� v���rY��]��`��`�ހ�>=0�$�'�,'�-'�.?I��"����p��v���rY��]��`��`�ހ�>=0�0$�0'�/'�0'�1?N� ���]��`��`��#���pou�4v�,�*�rY��]��`��`�ހ�#��B�p�u�mv�c�a�rY��]��`��`�ހ�v����rYC]��`��`��]��`��`��]��`��`��N�����`��x������p>�v�����r$��`���a`��`�逪I�������s�>B��?I��!}� ���qe� �s�`��^`��W;`��>B�?M�D5[�D��x�Q��J�pJ�2�V�s�`��a`��]��]��`����p� �p� �q!+N�<�B,]��`���]��`���qAI�e�o�i�t�>B��?=x�����q������s�`��^`��\��E������`���x�����u �3v�����t�]��`��*`�ށ�a`��`�߁����u x�����u 9�a`��`�ށ>N�����4`��j��`��I�x���s���#�u a`��`�߁�>=�6�u�x�Ux�Jx�C�?�s$�D�u a`��`�ހ��(a`����5v�ej�]`��*`�ށ ^`��`��`���?=x�����q���$�����u�'�6x�����t�]��`��$x�����u [�a`��`�ށ<a`��`��^`��\��=���p�x�����q��(a`���B=�+��p��p���p�J��[H[I`��>=�,��p��w5�w=��p�=�p� �-�q!=�p� �.�q!=���q!a[=��p�)J��p�F����a�7��������]��`��`x^`��`���+`��� `��� ]��`��]��`��J��4���������`����� `���� ]��`��j`�I�� `��j�"`���2�+`��j�C`��]��`��J����E����w݁���x9����xE� ����xR� ����xj�+����x~H�+�7�:A�89�E�:�T� ]��`��^`��W;`��>�^�:I�b�o��f�x�J�x4������{`��`��J��)?N�����9]��`��x��x�����x�]��`�逹`��j��a`��`��aa`��`��]��`�遝@^A`��]��`��$J��4���ߙ8��{`��`��J��x�����y\�:4���7� �;`��`��J�x�'�����!�y�3��2�z#^`�`��`�߁aa`��`��`�߁�z�]�^!`[b�co=pw�x�z�k�����<���?����;��x�����{�=`��z������C]��`��`��{�����G�O����]��`��`��|������쀀��]��`��`��}�����s�}����]��`��`�����ՁՂW�ۂW��C]��`��`��j`�I���]��`��`��j`�I���]��`��`��j`�I�+��]��`��`��j`�I`x?{��{�|��{�}��{�z5�R�I]��`��`����I�{�#�I��I�|+2�U`��`���I�|+]��`��`��]��`��`�� �Հ��������A�>�!���B�?]��]��`��[�Y�@`��j�m`����j�y`���A`��j`�I���B`��j`�I]��]��`��`x]��`��`x>N]��]��`��`x�р�]��`��`xN`��*N]��]��`��`xNa[[Na`��`��[N`���N[N[O�^[[`��[�!��[[[[K>A>M��5[��������A���|ՁB��0�|���}x�}��}� +N�݅��`���`���}� N�H�O� `���Q��N�����C]��`��`x2��`��`x>N��]��]��`��[v�ဆ��|�]��]��`��[��Ex���~� a`�߀�>N���D]��`��[v���~�"]��`��[��A>N����`��&�x���~�$'�a`��[��`��I�"�-�&�+>B�x?N�����E]��]��`�����)]��`���I������|�>N���{`��x�����~A����+`��a`��`�逪I�!����>M�:5[�:��x�G�@�~c�2�L��`��a`��]��]��`�����}x�}��}� +N�2�8,]��`���]��`���}� =�]�z�p��u������iI��""��v�����z*`�ށ��a`��`�߀��x��x�����z$�a`��]��`�ށ$�a`��`�ށ�a`��`�߀��.x�*x�'��z$�a`��]��`�ށ$�a`��`�ށv�7�1��i]��`��*`�ށ�a`��`�߀�>B�M???N�����F]��]��`��v�����z]��]��`�ހ�N�߉��G`��x������� a`�߀�O� ��Ha]��]��`��`��`���"���7�I]��]��`���J`��`��>�P��I�Z"!�_���v��v�{�m��<"]��`�ހ���`�߁�>����J��*?I��x������RMx��v������<"]��`�ހ�$�a`��`�ށa`��`�߁3J��*?C��""�����v�,v�$���<"]��`�ހ�u`�߁�x�_x�[v�T�F��<"]��`�ހ�$�a`��`�ށM�a��Ra`��`�߁3>�g��=�s���x������< a`�߀�I��"""�����v��v������<"]��`�ހ�u`�߁�x�x�v� ����<"]��`�ހ�$�a`��`�ށ�3���Ra`��`�߁�x�0�+��R�3x�Hv�A�3��<"]��`�ހ�$�a`��`�ށa`��`�߁�>�M�nJ�Y)?J�y*O�����Ja]��`��`��`��`��\���3����]��`��`����`����U`��\>�̍3N�܌��K`��x�������7�����4�����`��J��a`��a`��`�ށ=x�����:����x�!���9�#��a`��`�ށa`��`��\� O�<�A�La]��[]��`��`��\�K���Q��]��[�e>]��`��`��\>�m��=�������v�����E�}����]`���x������<Mv�������*`�ށ�a`��`�߁3����<x������<9�a`��`�ށA>����N�����[x�������$����<a`��[�I��%�������`��>�ݏyI�� �������+���`��a]��]��`��`��`��B�/?=�F����O���W���`��&�fx�^�Z���$x�a�_��<9�a`��`�ށa`��[�`��a]��`��`��`��`��\I��%�������`��>���MN����M`��x������`��N'[^`�`��`�ށ�N�!�'�O`���-��x�5�3���`��P��B��� ^`��`��`���N�`�d�Q`���j��x�r�p���`��Px���|��� 9�a`��`�ށ^`��`��`���E�������R`������!x�������#�3����o"a`��`�߁������#x�������#9�a`��`�ށA>���AI����������������#a]��]��`��`��`��B��?=� ����������#&�,x�$� ���$x�'�%��<9�a`��`�ށa`��[�`��a]��`��`��`��`��\>�T��=0�b�h��'�SN�Ǒ��T`xx�����~z7���+`��4�����`xJ������a`��a`x`x�=����&�#x���~�$'��a`��[��]��[v�9�,��$C]��`��`��a]��[]��`��`��\I�Jx�P�N�~���'��a`��`�߁�>=5���s`x�s��$#��v���s�� ��]��`��`�ހ�w���s�� ��2��`��`����+]��`��`��=�����&��x�����~�$'��a`��[��]��[u��v������$��]��`��`�ހ�a]��[]��`��`��\?I��x�����~���'��a`��`�߁�>=5�-�`x���$#�-v�#���%��]��`��`�送w�#���%��2�>`��`����+]��`��`��N�P�Z��]��[&�kx�]�\�~�$'��a`��[��]��[E�|����]`���x�������Mv�������*`�ށ�a`��`�߁3�����x�������9�a`��`�ށ>=x��u��v������$��]��`��`�送:&��x�������$�����a`��[�`��&�x�������$x�������9�a`��`�ށa`��[�`��a`��`��\� ?I�'x�-�+�~���'��a`��`�߁�>=5�j�R`x�R��$#�jv�_�R����]��`��`�ހ�w�_�R����2�x`��`����+]��`��`��=�����&��x�����~�$'��a`��[��]��[u��v������$��]��`��`�ހ�a]��[]��`��`��\?=����}`���~zB=�+��}'��}`��}TJ��[H[I`��>=�,��}'��+��3��}T=��}x�-�}� =�}��.�}� =�!�}� a[=��}T)J��}'���4�W�yA�U�a�y�v�V]��`�����@`��j��`����j��`���A`��j`�I���B`��j`�I]��]��`��`x]��`��`x>N]��]��`��`x���]��`��`xN`��*N]��]��`��`xNa[[Na`��`��[N`���N[N[O�W^[[`��[�a�y[[[[K>A>N� ��W]��`��`x2�+`��`x>N�D]��`��v�D��D���]��`����Ex�D��C a`�߀�>N�<�X`��v�K��C"`����>N�Y�b�Y`��x�i�d����Z^�[`��`��N�����\]��`��[&��x��j��`��]�����^`���^a`��`��`��[�]��`��[I��x���������'6a`��`�߁�>N����?]��[&�x�� ���$'6a`��[��]��[M�B5[�B���O��x�o�d��yR]��`��[a]��]��`��[�7�@������A������B��7������������ +=�=�,���L���������y=�����-��� =����.��� =�a��� a[=���y)J���L|����(���:�@���_`�������͝ր��``�������U�]���a[�����������b`�����M�M���U���[�``���k�a[�z�b`��`��?������������������ �M����s���c��]��`��`x�dm�dn�eko m�Ԙٛ�a�f�ޛ�����]��`��`x���g]��`��`x\>����=x�����g=4������X`����`x\>���N�(�3�h`xx�9��5��S$��:���a`��`x��I�G!�V��K���>�_��=�iov�{��y���C]��`��`��v�������`xC]��`��`��I��!��v����������]��`��`�ހ�>���3=5�ۙ�`x�����`x#��v�҅����}��]��`��`�ހ�w�҅����}��2��`��`����+]��`��`��=��ou�v� �������]��`��`�ހ�u�'v�����`x��]��`��`�ހ�?I�=!�Mv�C��A�����]��`��`�送>�V�=5�w�b`x�b���`x#�wv�m��b��\��]��`��`�送w�m��b��\��2��`��`����+]��`��`��=5����]��`��`��v����������]��`��`�送#��������+x�������]��`��`��=4��������`������`��\>����=x��u��v�������`x��]��`��`�送:�����,�����7a`��`��\� aa`��`��\\�&\?I� !�v��������]��`��`�ހ�>�$��=5�F�0`x�0���`x#�Fv�;��0��߀�]��`��`�ހ�w�;��0��߀�2�T`��`����+]��`��`��=�bou�~v�t��r�����]��`��`�ހ�u��v�������`x��]��`��`�ހ�?>����=x�������S:������������a`��`x\� aa`��`x\\�&n�ٛ�a�i�ٛ�����]��`��`xa]��`��`x\J��4���ٛ����g]��`��`x\J����m���������+o����a�j����� �k]��`��`����l]��`��`��\>�%��=x�/��+��y=4�7�7���8`���>U`��\>�E��N�S�b�m`��x�h��d���$��i���a`��`�ހ�I�v����z���>����=x��������:�����̃�����a`��`��\� >����=x�ˁ�����:������x�������`��9������a`��`�ށa`��`��\� aa`��`��\\�&p��f�A�nj�`���r����?]��]��`��[���@`��j��`����j��`���A`��j`�I��B`��j`�I]��]��`��]��`��`��]��`��]��`��`��>N]��]��`��]��`��`�����]��`��]��`��`��N`��*N]��]��`��]��`��`��Na[[Na`��`��[N`���N[N[O�f^[[`��[�r�[[[[K>A>M�+5[�+���8����G����@��j�� �A����� �B�����;��������2 +N�"�)P]��`��`x�]��`��`x��R =������x���������`��]��`��`��4���ԡ����`����� `x]��`��]��`��`��J�����`��]��`��`������8v������DC]��`��`��aa`��`x]��`��]��`��`��]��`��]��`��`�ށ�B=�+�������Ӆ���J�[H[I`��>=�,������������=�����-��2 =���.��2 =�r��2 a[=����)J����q�*�[�;A�oj�+`���g�;���g]��`��]��`��`����P]��`��]��`��`��\>���;=x��������=4���ƣ8���X`�����]��`��`��\>�У7N�ܡ��h]��`��`��x�����$�����$a`��]��`��`�ހ�I��!� �����P>��=x�����0=4�%�%��&`���,U`��\>�3�N�C�R�m`��x�^�T��P]��`��`��$��_���a`��`�ހ�I�n����r���>����=x������P]��`��`��:�����Ȇ�����a`��`��\� >����=x������P]��`��`��:������x�������`��9������a`��`�ށa`��`��\� aa`��`��\\�&>��3=x�#�����:��$��$��,��0a`��]��`��`��\� aa`��]��`��`��\\�&r��Υ^A�pj��`���ۥ^���V]��`������`����@`��j�`���Kj�%`���A`��j`�I�c�B`��j`�I]��]��`��]��`��`��]��`��]��`��`��>N]��]��`��]��`��`���y��]��`��]��`��`��N`��*N]��]��`��]��`��`��Na[[Na`��`��[N`���N[N[O��^[[`��[�ۥ^[[[[K>A>M��5[�������������x�@�������A�������B�� �������� ��� +N����P]��`��`x�]��`��`x���=����]x�*�#��Z��`��]��`��`��4�.�.�[�/��`���4� `x]��`��]��`��`��J�>�>��`��]��`��`���G���v�R�L���C]��`��`��aa`��`x]��`��]��`��`��]��`��]��`��`�ށ�B=�+������]���QJ�^[H[I`��>=�,������������Q=���-��� =��� �.��� =����� a[=���Q)J���s����QA�qj��`�� ���Q����`���>]��`��`��]��`��[>��QJ�!�(w�5����<��Y��E��Mu�T�\��A�rk�j���s`��[�o��]��[[]��_>�t��N�~���t]��_���)_�=x��������=4���������[���[\>����=x��������E&�������+_a_\�*=x��������E&�������4_a_\�*aa[[\\�&J��������w�(�=��A�I���Q�`x�]��`��]��`��[>�h��N�r�w�<]��`��[2��`��[=x��������:'�$��������a`��[\� =x��������:'��2��`��`��'F'�u'�v)'��$�<'�w��x�/��%��ށ(a`��'5$�U��K���'�x'��a`��[\� =x�z��v���:'����u`��v��������C]��`��`��a`��[\� I��!��v�������Ӏ�]��`��`�ހ�>�ǩ=x�т�����:'����u`��u�v�������Ӏ�]��`��`�ހ�a`��[\� ?I� !�v�����Ӏ�]��`��`�送>�(�m=x�2��.���:'���Bu[u�gv�^��W��Ӏ�]��`��`�送a`��[\� ?I�q!��v�|��u��Ӏ�]��`��`�ހ�>����=x��������:'����u`��u��v�À����Ӏ�]��`��`�ހ�a`��[\� ?J��������v�� �VA�yk�)�V�/��]��[]��[>�5�VN�?�N�z]��`���Z�)`���E�`�i�k]`���x�r��p���Mx��v�y��t���*`�ށ�[�a`��`�ށ<a`��`�߁3������x��������9�a`��`�ށ>����N�����{[x��������$������a`��[�N�����|`��#%�������]`������]`�����&�4|�0|�&����]��'[$�`��`��=x�S��D���E�W����`���x�v��r���$��w���a`��[�&��x���{���$x��������9�a`��`�ށa`��[�`��a`��\�*=x��������B4��������Y`����Z`��`��J��x��v���������``�ހ�\v�̓������``�ހ�a`��`�ށ=^a`��`��`��\�%J��x�Lx�.x����������]��[4�����%���;`��]��[J���[v� ����K�a[��v�����K�b`�ހ�aa`��]��[]��]��[���}[4�5�5�C�6�;]��[]��[J�?��?���aa]��[]��[]��[�@^A`��]��[�$� z��9��7���]�����T�)�����v� �����?��� �"�ځ���������~`�������������A`�������������B`�������Є׀��`�������������]��`�����)`���������������]��`��`�������Ƃ\j��`��"�΂\���A`��j`�I���`��j`�I`��?�����M�����`��#!�����M����,��M`��+]��`��`����+ �ƀ����a�a���ŀ��k���y�A`��j`�I���B`��j`�I���`��j`�I����]��`��`��j`�I`��?�����������������������( �a���������A������$�A`��j`�I�>�B`��j`�I�W�`��j`�I]��`��`��>N]��`���k��`��N`��*N]��`��Na[[Na`��`��[N`���N[N[N��]��`��`��N��]��`��`��N��`��N��`��N��`��O�^[[`��[���[[[[K>A>=���������=���������=��� ������I!��������>=��t �������`��>I!�E��9���>M�O5[�O���U���c���`�����$���0���+=��_ �]��`��`�����>=��_ +=��t �]��`��`����_ =��q�������A�`������B�`�������`����� ���]��`��`����t B=�+���������J��[H[I`��>=�,�������������=���$�-���=���0�.���=����a[=���)J�����������}@����}����`��`��>���}N�Å�5`���́������<I����v�끅���Vx`�遑'��a`��`�߁5>����N� ��`��v�.�`�逤I�)�5��-���>�>��J��+?N����`��I��x��v��v�������Vr]��`��L*`�ށ�V�a`��`�߁8>�Ԉ�N���{`��x��v�큆���Vr]��`��L$�a`��`��I�dx�m��h��+��'��a`��`�߂ >����=x��v��.��]��`�逥E$�������Va`��\�*J��+?=����+x�&��!��+��'['��a`�`��`�� N�J�Wr]��`��RN�Y]��`���Y�`���e���`�鄈x��+=x����Y����x��v�������Vr]��`��L���^`��`��]��`�� a]��`��\����Y��=�������Ȃ �����>�쉗N�K�O��`��v�U��Q��V{`�遒=��c����p��u���`�鄉~���$��������'��J��x��.��������a`��`�逫?I����v�؁����Vx`�遑'��a`��`�߁5>���N�����]��`��`��v� .����]��`��`�쀧I��+��!��x>�4�QJ�>+?N�`�l��`��x�~v�r��n��Vr]��`��L$�a`��`��N������`��x������x]��`��`��$������a`��`���I���Ʉ����>�ҋ =x��v��.��]��`�逥E$�������Va`��\�*J��+?N��%�B`���)��1��`��N�J�X��`���\� x�uv�h��d��Vr]��`��L���^`��`��]��`�� J��x��.�����������������a`��`�逫?I����v�ہ����Vx`�遑'�Xa`��`�߁5>��&J��x��.��������Va`��`�逫?=x�]v�V.��]��`�逥E$�g��c��Va`��\�*J�n+���Ќ؍�@�������{`��`��>����N����`������#���N�4�9F`��L���U����)I�}�������,j��`�$a`��`�߂J��+?J��x������������a`��������gA������g�&�A`��]��`��`��>�4�gN�@�H��`��x�]�J���O����Z^�[`��`��N�{����`�����������N������`��ɂ������x�����������a`��`��J�RN� ]��`��`��2� `��`��>N�/]��`� v�/v�/��(��<��]��`� �"]��`� ��Ex�/���� a`�߀�>N���`� v����"`� ��=x�E�� ���:v�A��9����`��$v�O��G����`��%a`��`��\� �� ������l����A�����������B`��]��]��`��`��]��`��`��>N]��]��`��`������]��`��`��N`��*N]��]��`��`��Na[[Na`��`��[N`���N[N[O��^[[`��[����[[[[K>A>M��5[�ʀ��Ђ'��*������������'��X +N������`��`���x I��� ���� >=����+B?=��$��RN�+]��`��`��2�+`��`��>N�N]��`� v�Nv�N�G��� `���]��`� �"]��`� ��Ex�N��Q a`�߀�>N�<��`� v��Q"`� ��=x�d�+��,:v�`�X�����`��$v�n�f�����`��%a`��`��\� �+��,B=�+���ǃ������J��[H[I`��>=�,������U ��]����=����-��X =���'�.��X =����X a[=����)J������������u������������`�������P�]����`�������>�#�>�*��`��j�:`��%`��?�����C ������ԑ�>@�j��`����>����`��`��>��>N��5`����������I�.�=v�6��2���x`�遑'��a`��`�߁5>�H�yJ�h+?I���v��������x`�遑'��a`��`�߁5>��� J��x��.����v��������r]��`��La]��`��`�逼?I��v������x`�遑'�Xa`��`�߁5>�*��N�8�L��`��x�s$�r'��v�d.��`�逷���~�-'��'��a`�`��`�� N������`��x��v��������{`�遒�N������^`�`��`�ށ�I��x�냓�����a`��`�߁r>��kN�� ��`��x��� ���9v�/�����*`�ށ a`��`�ށJ�?x�Ov�J��F���{`�遒�P��Y��g^`��`��`���?J�s+?I��"��v��������x`�遑'��a`��`�߁5��v��������x`�遑'��a`��`�߁5>����J��x��.����������a`��`�逻?=x�v�.��]��`�逥E$�(��$���a`��\�*J�/+���C�J�h@�����Z�h�_5`��`��>�d�hN�p�|��`��x��v����~���r]��`��L�N'��^`��`��`�ނ.I��x�������߀��a`��`�߁r>���=N�̕���]��`��x��v��������r]��`��L��x�������9�a`��`�ށ^`��`��]��`�� J� x�.������)��Ta]��`��`�逼?J�Cx�[v�N��J���r]��`��L��'��^`��`��/���m�t��@����������r]��`��`��>����N�����`��x�������N$�a`��`��N� ���`��x�2x�'����N���^`��`��]��`�� ��'��^`��`��/N�G�S�B`��#x�a��U��l;'�^`�`��`�߂0x����y��l��'�'��a`�`��`�� $��'�������l`��J��$��������'������Ś�tç�/Ƈ���%�+����`�������I�T����]��`���R�)`������+ `��? ���������@�2�����{`��]��]��`��]��`��>N]��]��`�����]��`��N`��*N]��]��`��Na[[Na`��`��[N`���N[N[Nn[O��^[[`��[����[[[[K>A>K>M�x5[�x��x���~������ ��^�[`��]��]��`��1��ǒ��Ǟ��� +=��q��}�]��`����� B��`������`��>=x��v��.��]��`���E����� a`��\�*=�����}+B=�+���J���}���qJ��[H[I`��>=�,���J��#��+���q=��ǒ�-��� =��Ǟ�.��� =����� a[=���q)J���J�ɮɾ����Ɯɻɾ����������������?�1 �H�����]�z��A����������`������]��`��j`�I����`��j��`����g`��j��`���j`�Gj`�I]��]��`��[]��`��[>N]��]��`��[���]��`��[N`��*N]��]��`��[Na[[Na`��`��[N`���N[N[Nn[No[Np[O�z^[[`��[����[[[[K>A>N��#��]��`���%�`��'��'��I�j��n��`>=x���}�˝E'��a`��\�*?=x�����˝E�����;a`��\�*I��!�ˁ����H>=x�����˝������H]��`��a]��`��\��?M�5[�����4�+�7�7�˝���� ��Y+N�� ��`�2�`�2��yN�J�^��]�8`���`�:`��=x��x��x��v�|�t�̪��]�`]��`�ނ<��`��v��j��`�=&��`�>�@a]�A]��`��`��]�``��B��`��j��`�C'a]�A`��`��]�``��B��4���ׄT��`��\>�ބSN���5`��������͜I�!���Ͳ>� �O=x�<�(������E�Ͳ`��^]��`��\�E?^a`��\��`����a\��`�^]�_`��bM�m5[�m��v���s�����]��`��G���� ��Y+N�`�kd`���`����yN��6]��`��[L>M��5[�ǀ���(���Λ))�����tRN]� `���2`����j���ʇ���� ��Y+=���μ�]��`��[��y>M�35[�3��x�Hv�A�9�̪��]�`]��`�ނH��[^[]��[�I���� ��Y+=��yM�j5[�j��v�x�p�̪��]��`�ނJ���� ��Y+N�]�h��`���`����yI��!������1�a`��`�߀�>=0��$��'������1?=���������μB=�+��ʹ�������J��[H[I`��>=�,��ʹ����������=���-��Y=�� �.��Y=����Ya[=����)J��ʹ�O���O�����?�̀��!�Q����`��j�7`��(�΀��Y������`��j�m`��)�π���������`��j��`��*�Ѐ����瀆��`��j��`��+�������uA�����u����a]��[����`�G��j`�Gj`�I]��[[> N]��[�݀�[N`��*N]��[Na[[Na`��`��[N`���N[O��^[[`��[���u[[[[K>A>N�����`��)O��� ��^a]��[��`�G]��[����)��a]��[�7��`�Gj`�I]��[>�B��I�H�U�L��N>�^�vJ�f}�n�m��<a]��[?J�}x��}������<a]��[j����N`�G��4�����}b>���|=�����*N�ς���`��#��v������N`�G��`�ނL�a`��`�߀�$�"v�����N`�G��`�ނM'��$�<v�0�'��N`�G��`�ނL'��`��=0�D�J��$�u'���q���^`�G��a]��[]��[�l=�����t���� 4�����_]��[[>N]��[����[N`��*N]��[Na[[Na`��`��[N`���N[N[Nn[No[Np[O��^[[`��[���_[[[[K>A>C�������>K>M��5[�ـ�}�������a]��[����)��r+=�����ՒB��`������`��>I�����>M�5[����!�N[��9��$����)��r+=�Ւ?=�+�������J�_[H[I`��>=�,��������� ��=���-��r=��)�.��r=����ra[=��)J����΂�k��1^a]��[��`�G]��[B=�+���Q���t���hJ�u[H[I`��>=�,���Q�צ�׮���h=��ҁ�-�Ҷ =��ҍ�.�Ҷ =���Ҷ a[=���h)J���Q�����RA���2�R�:��`��`��>�?�RN�I�`��`�+�b�-'��N�ׅ���`�Ox�������h������Na`��`�O�QI� !��� �؂>��AJ�"�-��u�;x�8�3�؂`�O$�a`��`��T?J�E+�������A�����]��`��`��>N]��`������`��N`��*N]��`��Na[[Na`��`��[N`���N[N[Nn[No[Np[O��^[[`��[���[[[[K>A>N����`�UK>M��5[�܀���W��Z����q���}��� +=���� �`�U��� �`���!��`��>M�5[������W���[���)���q���}��� +=�n�� �`�U��� L>=�����av������ |`�ނ]B>M��5[����x� ��� ��a]��`�U�^���q���}��� +=�`�U��� =�+���8���a���UJ�[H[I`��>=�,���8�ۖ�۞���U=���q�-��� =���}�.��� =����� a[=���U)J���8��� ���A���)���8,]��`��]��]��`��>�?��N�I�V�F]��]��`���c�)]��`���I�i�s��m��>J�|�����f?N������]��]��`�����z]��`�����`���v������>]��`��*`�ށ�N�ɋ���`��*N����]`���C��x�����Mv������>]��`��*`�ށ�a`��`�߁3>���I�x�x�� ��>]��`��$����a`��`��;j�`��+^`�`��`�߂0J�+��2�ܪ?I�Ax�Nx�J�E��>]��`��$��K��a`��`��;j�W`��)^`�`��`�߂0=��k��)?I��x��x������>]��`��$�����a`��`��;j��`��*^`�`��`�߂0=x�������fE���`��x�������9�a`��`�ށx�Ą����9�a`��`�ށa]��`��\�*?I��x��x������>]��`��$�����a`��`��;j��`��(^`�`��`�߂0>����N� ��O`������=����x�����9�a`��`�ށAC�&x�/��-��Mv�7�1��>]��`��*`�ށ�a`��`�߁3>�?�{I�Ix�Vx�R�M��>]��`��$��S��a`��`��;j�_`��+^`�`��`�߂0J�l��s�ܪ?I��x��x������>]��`��$�����a`��`��;j��`��(^`�`��`�߂0>����=�����)B��?I��x��x������>]��`��$�����a`��`��;j�`��)^`�`��`�߂0>��f=x�4��'��fE�8�`��x�?��9��c9�a`��`�ށx�F��D��9�a`��`�ށa]��`��\�*B�W?=��r��x�p��r��9�a`��`�ށ?=�����x�������9�a`��`�ށJ��#��������)]��`��������f]��]��`�������1��!�Wfile:///github/home/.pub-cache/hosted/pub.dartlang.org/coverage-1.3.2/lib/coverage.dart��// Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. export 'src/chrome.dart'; export 'src/collect.dart'; export 'src/formatter.dart'; export 'src/hitmap.dart' hide hitmapToJson; export 'src/resolver.dart'; export 'src/run_and_collect.dart'; NN<,#package:coverage/coverage.dartYfile:///github/home/.pub-cache/hosted/pub.dartlang.org/coverage-1.3.2/lib/src/chrome.dart�^// Copyright (c) 2020, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. import 'package:coverage/src/hitmap.dart'; import 'package:source_maps/parser.dart'; /// Returns a Dart based hit-map containing coverage report for the provided /// Chrome [preciseCoverage]. /// /// [sourceProvider] returns the source content for the Chrome scriptId, or null /// if not available. /// /// [sourceMapProvider] returns the associated source map content for the Chrome /// scriptId, or null if not available. /// /// [sourceUriProvider] returns the uri for the provided sourceUrl and /// associated scriptId, or null if not available. /// /// Chrome coverage information for which the corresponding source map or source /// content is null will be ignored. Future> parseChromeCoverage( List> preciseCoverage, Future Function(String scriptId) sourceProvider, Future Function(String scriptId) sourceMapProvider, Future Function(String sourceUrl, String scriptId) sourceUriProvider, ) async { final coverageReport = >{}; for (var entry in preciseCoverage) { final scriptId = entry['scriptId'] as String; final mapResponse = await sourceMapProvider(scriptId); if (mapResponse == null) continue; SingleMapping mapping; try { mapping = parse(mapResponse) as SingleMapping; } on FormatException { continue; } on ArgumentError { continue; } final compiledSource = await sourceProvider(scriptId); if (compiledSource == null) continue; final coverageInfo = _coverageInfoFor(entry); final offsetCoverage = _offsetCoverage(coverageInfo, compiledSource.length); final coveredPositions = _coveredPositions(compiledSource, offsetCoverage); for (var lineEntry in mapping.lines) { for (var columnEntry in lineEntry.entries) { final sourceUrlId = columnEntry.sourceUrlId; if (sourceUrlId == null) continue; final sourceUrl = mapping.urls[sourceUrlId]; // Ignore coverage information for the SDK. if (sourceUrl.startsWith('org-dartlang-sdk:')) continue; final uri = await sourceUriProvider(sourceUrl, scriptId); if (uri == null) continue; final coverage = coverageReport.putIfAbsent(uri, () => {}); final sourceLine = columnEntry.sourceLine!; final current = coverage[sourceLine + 1] ?? false; coverage[sourceLine + 1] = current || coveredPositions.contains( _Position(lineEntry.line + 1, columnEntry.column + 1)); } } } final coverageHitMaps = {}; coverageReport.forEach((uri, coverage) { final hitMap = HitMap(); for (var line in coverage.keys.toList()..sort()) { hitMap.lineHits[line] = coverage[line]! ? 1 : 0; } coverageHitMaps[uri] = hitMap; }); final allCoverage = >[]; coverageHitMaps.forEach((uri, hitMap) { allCoverage.add(hitmapToJson(hitMap, uri)); }); return {'type': 'CodeCoverage', 'coverage': allCoverage}; } /// Returns all covered positions in a provided source. Set<_Position> _coveredPositions( String compiledSource, List offsetCoverage) { final positions = <_Position>{}; // Line is 1 based. var line = 1; // Column is 1 based. var column = 0; for (var offset = 0; offset < compiledSource.length; offset++) { if (compiledSource[offset] == '\n') { line++; column = 0; } else { column++; } if (offsetCoverage[offset]) positions.add(_Position(line, column)); } return positions; } /// Returns coverage information for a Chrome entry. List<_CoverageInfo> _coverageInfoFor(Map entry) { final result = <_CoverageInfo>[]; for (var functions in (entry['functions'] as List).cast>()) { for (var range in (functions['ranges'] as List).cast>()) { result.add(_CoverageInfo( range['startOffset'] as int, range['endOffset'] as int, (range['count'] as int) > 0, )); } } return result; } /// Returns the coverage information for each offset. List _offsetCoverage(List<_CoverageInfo> coverageInfo, int sourceLength) { final offsetCoverage = List.filled(sourceLength, false); // Sort coverage information by their size. // Coverage information takes granularity as precedence. coverageInfo.sort((a, b) => (b.endOffset - b.startOffset).compareTo(a.endOffset - a.startOffset)); for (var range in coverageInfo) { for (var i = range.startOffset; i < range.endOffset; i++) { offsetCoverage[i] = range.isCovered; } } return offsetCoverage; } class _CoverageInfo { _CoverageInfo(this.startOffset, this.endOffset, this.isCovered); /// 0 based byte offset. final int startOffset; /// 0 based byte offset. final int endOffset; final bool isCovered; } /// A covered position in a source file where [line] and [column] are 1 based. class _Position { _Position(this.line, this.column); final int line; final int column; @override int get hashCode => Object.hash(line, column); @override bool operator ==(dynamic o) => o is _Position && o.line == line && o.column == column; } ��NN<+*MQQ(G3Q%2. package:coverage/src/chrome.dartZfile:///github/home/.pub-cache/hosted/pub.dartlang.org/coverage-1.3.2/lib/src/collect.dart��// Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. import 'dart:async'; import 'dart:io'; import 'package:vm_service/vm_service.dart'; import 'util.dart'; import 'hitmap.dart'; const _retryInterval = Duration(milliseconds: 200); /// Collects coverage for all isolates in the running VM. /// /// Collects a hit-map containing merged coverage for all isolates in the Dart /// VM associated with the specified [serviceUri]. Returns a map suitable for /// input to the coverage formatters that ship with this package. /// /// [serviceUri] must specify the http/https URI of the service port of a /// running Dart VM and must not be null. /// /// If [resume] is true, all isolates will be resumed once coverage collection /// is complete. /// /// If [waitPaused] is true, collection will not begin until all isolates are /// in the paused state. /// /// If [includeDart] is true, code coverage for core `dart:*` libraries will be /// collected. /// /// If [functionCoverage] is true, function coverage information will be /// collected. /// /// If [branchCoverage] is true, branch coverage information will be collected. /// This will only work correctly if the target VM was run with the /// --branch-coverage flag. /// /// If [scopedOutput] is non-empty, coverage will be restricted so that only /// scripts that start with any of the provided paths are considered. /// /// if [isolateIds] is set, the coverage gathering will be restricted to only /// those VM isolates. /// /// [serviceOverrideForTesting] is for internal testing only, and should not be /// set by users. Future> collect(Uri serviceUri, bool resume, bool waitPaused, bool includeDart, Set? scopedOutput, {Set? isolateIds, Duration? timeout, bool functionCoverage = false, bool branchCoverage = false, VmService? serviceOverrideForTesting}) async { scopedOutput ??= {}; late VmService service; if (serviceOverrideForTesting != null) { service = serviceOverrideForTesting; } else { // Create websocket URI. Handle any trailing slashes. final pathSegments = serviceUri.pathSegments.where((c) => c.isNotEmpty).toList()..add('ws'); final uri = serviceUri.replace(scheme: 'ws', pathSegments: pathSegments); await retry(() async { try { final options = const CompressionOptions(enabled: false); final socket = await WebSocket.connect('$uri', compression: options); final controller = StreamController(); socket.listen((data) => controller.add(data as String), onDone: () { controller.close(); service.dispose(); }); service = VmService( controller.stream, (String message) => socket.add(message), log: StdoutLog(), disposeHandler: () => socket.close()); await service.getVM().timeout(_retryInterval); } on TimeoutException { // The signature changed in vm_service version 6.0.0. // ignore: await_only_futures await service.dispose(); rethrow; } }, _retryInterval, timeout: timeout); } try { if (waitPaused) { await _waitIsolatesPaused(service, timeout: timeout); } return await _getAllCoverage(service, includeDart, functionCoverage, branchCoverage, scopedOutput, isolateIds); } finally { if (resume) { await _resumeIsolates(service); } // The signature changed in vm_service version 6.0.0. // ignore: await_only_futures await service.dispose(); } } bool _versionCheck(Version version, int minMajor, int minMinor) { final major = version.major ?? 0; final minor = version.minor ?? 0; return major > minMajor || (major == minMajor && minor >= minMinor); } Future> _getAllCoverage( VmService service, bool includeDart, bool functionCoverage, bool branchCoverage, Set? scopedOutput, Set? isolateIds) async { scopedOutput ??= {}; final vm = await service.getVM(); final allCoverage = >[]; final version = await service.getVersion(); final reportLines = _versionCheck(version, 3, 51); final branchCoverageSupported = _versionCheck(version, 3, 56); final libraryFilters = _versionCheck(version, 3, 57); if (branchCoverage && !branchCoverageSupported) { branchCoverage = false; stderr.writeln('Branch coverage was requested, but is not supported' ' by the VM version. Try updating to a newer version of Dart'); } final sourceReportKinds = [ SourceReportKind.kCoverage, if (branchCoverage) SourceReportKind.kBranchCoverage, ]; // Program counters are shared between isolates in the same group. So we need // to make sure we're only gathering coverage data for one isolate in each // group, otherwise we'll double count the hits. final isolateOwnerGroup = {}; final coveredIsolateGroups = {}; for (var isolateGroupRef in vm.isolateGroups!) { final isolateGroup = await service.getIsolateGroup(isolateGroupRef.id!); for (var isolateRef in isolateGroup.isolates!) { isolateOwnerGroup[isolateRef.id!] = isolateGroupRef.id!; } } for (var isolateRef in vm.isolates!) { if (isolateIds != null && !isolateIds.contains(isolateRef.id)) continue; final isolateGroupId = isolateOwnerGroup[isolateRef.id]; if (isolateGroupId != null) { if (coveredIsolateGroups.contains(isolateGroupId)) continue; coveredIsolateGroups.add(isolateGroupId); } if (scopedOutput.isNotEmpty && !libraryFilters) { final scripts = await service.getScripts(isolateRef.id!); for (var script in scripts.scripts!) { final uri = Uri.parse(script.uri!); if (uri.scheme != 'package') continue; final scope = uri.path.split('/').first; // Skip scripts which should not be included in the report. if (!scopedOutput.contains(scope)) continue; final scriptReport = await service.getSourceReport( isolateRef.id!, sourceReportKinds, forceCompile: true, scriptId: script.id, reportLines: reportLines ? true : null); final coverage = await _getCoverageJson(service, isolateRef, scriptReport, includeDart, functionCoverage, reportLines); allCoverage.addAll(coverage); } } else { final isolateReport = await service.getSourceReport( isolateRef.id!, sourceReportKinds, forceCompile: true, reportLines: reportLines ? true : null, libraryFilters: scopedOutput.isNotEmpty && libraryFilters ? List.from(scopedOutput.map((filter) => 'package:$filter/')) : null, ); final coverage = await _getCoverageJson(service, isolateRef, isolateReport, includeDart, functionCoverage, reportLines); allCoverage.addAll(coverage); } } return {'type': 'CodeCoverage', 'coverage': allCoverage}; } Future _resumeIsolates(VmService service) async { final vm = await service.getVM(); final futures = []; for (var isolateRef in vm.isolates!) { // Guard against sync as well as async errors: sync - when we are writing // message to the socket, the socket might be closed; async - when we are // waiting for the response, the socket again closes. futures.add(Future.sync(() async { final isolate = await service.getIsolate(isolateRef.id!); if (isolate.pauseEvent!.kind != EventKind.kResume) { await service.resume(isolateRef.id!); } })); } try { await Future.wait(futures); } catch (_) { // Ignore resume isolate failures } } Future _waitIsolatesPaused(VmService service, {Duration? timeout}) async { final pauseEvents = { EventKind.kPauseStart, EventKind.kPauseException, EventKind.kPauseExit, EventKind.kPauseInterrupted, EventKind.kPauseBreakpoint }; Future allPaused() async { final vm = await service.getVM(); if (vm.isolates!.isEmpty) throw 'No isolates.'; for (var isolateRef in vm.isolates!) { final isolate = await service.getIsolate(isolateRef.id!); if (!pauseEvents.contains(isolate.pauseEvent!.kind)) { throw 'Unpaused isolates remaining.'; } } } return retry(allPaused, _retryInterval, timeout: timeout); } /// Returns the line number to which the specified token position maps. /// /// Performs a binary search within the script's token position table to locate /// the line in question. int? _getLineFromTokenPos(Script script, int tokenPos) { // TODO(cbracken): investigate whether caching this lookup results in // significant performance gains. var min = 0; var max = script.tokenPosTable!.length; while (min < max) { final mid = min + ((max - min) >> 1); final row = script.tokenPosTable![mid]; if (row[1] > tokenPos) { max = mid; } else { for (var i = 1; i < row.length; i += 2) { if (row[i] == tokenPos) return row.first; } min = mid + 1; } } return null; } Future _processFunction(VmService service, IsolateRef isolateRef, Script script, FuncRef funcRef, HitMap hits) async { final func = await service.getObject(isolateRef.id!, funcRef.id!) as Func; final location = func.location; if (location != null) { final funcName = await _getFuncName(service, isolateRef, func); final tokenPos = location.tokenPos!; final line = _getLineFromTokenPos(script, tokenPos); if (line == null) { stderr.writeln( 'tokenPos $tokenPos in function ${funcRef.name} has no line mapping ' 'for script ${script.uri!}'); return; } hits.funcNames![line] = funcName; } } /// Returns a JSON coverage list backward-compatible with pre-1.16.0 SDKs. Future>> _getCoverageJson( VmService service, IsolateRef isolateRef, SourceReport report, bool includeDart, bool functionCoverage, bool reportLines) async { final hitMaps = {}; final scripts = {}; final libraries = {}; final needScripts = functionCoverage || !reportLines; for (var range in report.ranges!) { final scriptRef = report.scripts![range.scriptIndex!]; final scriptUri = Uri.parse(scriptRef.uri!); // Not returned in scripts section of source report. if (scriptUri.scheme == 'evaluate') continue; // Skip scripts from dart:. if (!includeDart && scriptUri.scheme == 'dart') continue; // Look up the hit maps for this script (shared across isolates). final hits = hitMaps.putIfAbsent(scriptUri, () => HitMap()); Script? script; if (needScripts) { if (!scripts.containsKey(scriptRef)) { scripts[scriptRef] = await service.getObject(isolateRef.id!, scriptRef.id!) as Script; } script = scripts[scriptRef]; if (script == null) continue; } // If the script's library isn't loaded, load it then look up all its funcs. final libRef = script?.library; if (functionCoverage && libRef != null && !libraries.contains(libRef)) { hits.funcHits ??= {}; hits.funcNames ??= {}; libraries.add(libRef); final library = await service.getObject(isolateRef.id!, libRef.id!) as Library; if (library.functions != null) { for (var funcRef in library.functions!) { await _processFunction(service, isolateRef, script!, funcRef, hits); } } if (library.classes != null) { for (var classRef in library.classes!) { final clazz = await service.getObject(isolateRef.id!, classRef.id!) as Class; if (clazz.functions != null) { for (var funcRef in clazz.functions!) { await _processFunction( service, isolateRef, script!, funcRef, hits); } } } } } // Collect hits and misses. final coverage = range.coverage; if (coverage == null) continue; void forEachLine(List tokenPositions, void Function(int line) body) { for (final pos in tokenPositions) { final line = reportLines ? pos : _getLineFromTokenPos(script!, pos); if (line == null) { stderr .write('tokenPos $pos has no line mapping for script $scriptUri'); continue; } body(line); } } forEachLine(coverage.hits!, (line) { _incrementCountForKey(hits.lineHits, line); if (hits.funcNames != null && hits.funcNames!.containsKey(line)) { _incrementCountForKey(hits.funcHits!, line); } }); forEachLine(coverage.misses!, (line) { hits.lineHits.putIfAbsent(line, () => 0); }); hits.funcNames?.forEach((line, funcName) { hits.funcHits?.putIfAbsent(line, () => 0); }); final branchCoverage = range.branchCoverage; if (branchCoverage != null) { hits.branchHits ??= {}; forEachLine(branchCoverage.hits!, (line) { _incrementCountForKey(hits.branchHits!, line); }); forEachLine(branchCoverage.misses!, (line) { hits.branchHits!.putIfAbsent(line, () => 0); }); } } // Output JSON final coverage = >[]; hitMaps.forEach((uri, hits) { coverage.add(hitmapToJson(hits, uri)); }); return coverage; } void _incrementCountForKey(Map counter, int key) { counter[key] = counter.containsKey(key) ? counter[key]! + 1 : 1; } Future _getFuncName( VmService service, IsolateRef isolateRef, Func func) async { if (func.name == null) { return '${func.type}:${func.location!.tokenPos}'; } final owner = func.owner; if (owner is ClassRef) { final cls = await service.getObject(isolateRef.id!, owner.id!) as Class; if (cls.name != null) return '${cls.name}.${func.name}'; } return func.name!; } class StdoutLog extends Log { @override void warning(String message) => print(message); @override void severe(String message) => print(message); } ��NN<-4:ONBJ*ONPIPDMFNPBB#!3+) :PN BN7M HE7>&!*<I3&:"B$$G.%$0.5A84IH :PM30+3M5?)M="C06@-,/1D5FA-N#$Q$M&*J'2O %1N)4&@  %$O*MQ )2I5+0/11"(17 35 - +=CA6M= 2 1!package:coverage/src/collect.dart�`��b�d\file:///github/home/.pub-cache/hosted/pub.dartlang.org/coverage-1.3.2/lib/src/formatter.dart�;// Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. import 'package:path/path.dart' as p; import 'resolver.dart'; import 'hitmap.dart'; @Deprecated('Migrate to FileHitMapsFormatter') abstract class Formatter { /// Returns the formatted coverage data. Future format(Map> hitmap); } /// Converts the given hitmap to lcov format and appends the result to /// env.output. /// /// Returns a [Future] that completes as soon as all map entries have been /// emitted. @Deprecated('Migrate to FileHitMapsFormatter.formatLcov') class LcovFormatter implements Formatter { /// Creates a LCOV formatter. /// /// If [reportOn] is provided, coverage report output is limited to files /// prefixed with one of the paths included. If [basePath] is provided, paths /// are reported relative to that path. LcovFormatter(this.resolver, {this.reportOn, this.basePath}); final Resolver resolver; final String? basePath; final List? reportOn; @override Future format(Map> hitmap) { return Future.value(hitmap .map((key, value) => MapEntry(key, HitMap(value))) .formatLcov(resolver, basePath: basePath, reportOn: reportOn)); } } /// Converts the given hitmap to a pretty-print format and appends the result /// to env.output. /// /// Returns a [Future] that completes as soon as all map entries have been /// emitted. @Deprecated('Migrate to FileHitMapsFormatter.prettyPrint') class PrettyPrintFormatter implements Formatter { /// Creates a pretty-print formatter. /// /// If [reportOn] is provided, coverage report output is limited to files /// prefixed with one of the paths included. PrettyPrintFormatter(this.resolver, this.loader, {this.reportOn, this.reportFuncs = false}); final Resolver resolver; final Loader loader; final List? reportOn; final bool reportFuncs; @override Future format(Map> hitmap) { return hitmap.map((key, value) => MapEntry(key, HitMap(value))).prettyPrint( resolver, loader, reportOn: reportOn, reportFuncs: reportFuncs); } } extension FileHitMapsFormatter on Map { /// Converts the given hitmap to lcov format. /// /// If [reportOn] is provided, coverage report output is limited to files /// prefixed with one of the paths included. If [basePath] is provided, paths /// are reported relative to that path. String formatLcov( Resolver resolver, { String? basePath, List? reportOn, }) { final pathFilter = _getPathFilter(reportOn); final buf = StringBuffer(); for (final entry in entries) { final v = entry.value; final lineHits = v.lineHits; final funcHits = v.funcHits; final funcNames = v.funcNames; final branchHits = v.branchHits; var source = resolver.resolve(entry.key); if (source == null) { continue; } if (!pathFilter(source)) { continue; } if (basePath != null) { source = p.relative(source, from: basePath); } buf.write('SF:$source\n'); if (funcHits != null && funcNames != null) { for (final k in funcNames.keys.toList()..sort()) { buf.write('FN:$k,${funcNames[k]}\n'); } for (final k in funcHits.keys.toList()..sort()) { if (funcHits[k]! != 0) { buf.write('FNDA:${funcHits[k]},${funcNames[k]}\n'); } } buf.write('FNF:${funcNames.length}\n'); buf.write('FNH:${funcHits.values.where((v) => v > 0).length}\n'); } for (final k in lineHits.keys.toList()..sort()) { buf.write('DA:$k,${lineHits[k]}\n'); } buf.write('LF:${lineHits.length}\n'); buf.write('LH:${lineHits.values.where((v) => v > 0).length}\n'); if (branchHits != null) { for (final k in branchHits.keys.toList()..sort()) { buf.write('BRDA:$k,0,0,${branchHits[k]}\n'); } } buf.write('end_of_record\n'); } return buf.toString(); } /// Converts the given hitmap to a pretty-print format. /// /// If [reportOn] is provided, coverage report output is limited to files /// prefixed with one of the paths included. If [reportFuncs] is provided, /// only function coverage information will be shown. Future prettyPrint( Resolver resolver, Loader loader, { List? reportOn, bool reportFuncs = false, bool reportBranches = false, }) async { final pathFilter = _getPathFilter(reportOn); final buf = StringBuffer(); for (final entry in entries) { final v = entry.value; if (reportFuncs && v.funcHits == null) { throw 'Function coverage formatting was requested, but the hit map is ' 'missing function coverage information. Did you run ' 'collect_coverage with the --function-coverage flag?'; } if (reportBranches && v.branchHits == null) { throw 'Branch coverage formatting was requested, but the hit map is ' 'missing branch coverage information. Did you run ' 'collect_coverage with the --branch-coverage flag?'; } final hits = reportFuncs ? v.funcHits! : reportBranches ? v.branchHits! : v.lineHits; final source = resolver.resolve(entry.key); if (source == null) { continue; } if (!pathFilter(source)) { continue; } final lines = await loader.load(source); if (lines == null) { continue; } buf.writeln(source); for (var line = 1; line <= lines.length; line++) { var prefix = _prefix; if (hits.containsKey(line)) { prefix = hits[line].toString().padLeft(_prefix.length); } buf.writeln('$prefix|${lines[line - 1]}'); } } return buf.toString(); } } const _prefix = ' '; typedef _PathFilter = bool Function(String path); _PathFilter _getPathFilter(List? reportOn) { if (reportOn == null) return (String path) => true; final absolutePaths = reportOn.map(p.canonicalize).toList(); return (String path) => absolutePaths.any((item) => p.canonicalize(path).startsWith(item)); } ��NN<&/+<GK :+ LP*@  =;HNK ;2(L/32  =Q780LP*1 ###%'0!5!3;0 :#@ 0J8-,G <7 $:LM8! 1 #/PBC4N@A2!/9&B 3256?J#package:coverage/src/formatter.dart�f��Yfile:///github/home/.pub-cache/hosted/pub.dartlang.org/coverage-1.3.2/lib/src/hitmap.dart�W// Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. import 'dart:convert' show json; import 'dart:io'; import 'package:coverage/src/resolver.dart'; import 'package:coverage/src/util.dart'; /// Contains line and function hit information for a single script. class HitMap { /// Constructs a HitMap. HitMap([ Map? lineHits, this.funcHits, this.funcNames, this.branchHits, ]) : lineHits = lineHits ?? {}; /// Map from line to hit count for that line. final Map lineHits; /// Map from the first line of each function, to the hit count for that /// function. Null if function coverage info was not gathered. Map? funcHits; /// Map from the first line of each function, to the function name. Null if /// function coverage info was not gathered. Map? funcNames; /// Map from branch line, to the hit count for that branch. Null if branch /// coverage info was not gathered. Map? branchHits; /// Creates a single hitmap from a raw json object. /// /// Throws away all entries that are not resolvable. static Future> parseJson( List> jsonResult, { bool checkIgnoredLines = false, @Deprecated('Use packagePath') String? packagesPath, String? packagePath, }) async { final resolver = await Resolver.create( packagesPath: packagesPath, packagePath: packagePath); final loader = Loader(); // Map of source file to map of line to hit count for that line. final globalHitMap = {}; for (var e in jsonResult) { final source = e['source'] as String?; if (source == null) { // Couldn't resolve import, so skip this entry. continue; } var ignoredLinesList = >[]; if (checkIgnoredLines) { final path = resolver.resolve(source); if (path != null) { final lines = await loader.load(path); ignoredLinesList = getIgnoredLines(lines!); // Ignore the whole file. if (ignoredLinesList.length == 1 && ignoredLinesList[0][0] == 0 && ignoredLinesList[0][1] == lines.length) { continue; } } } // Move to the first ignore range. final ignoredLines = ignoredLinesList.iterator; var hasCurrent = ignoredLines.moveNext(); bool _shouldIgnoreLine(Iterator> ignoredRanges, int line) { if (!hasCurrent || ignoredRanges.current.isEmpty) { return false; } if (line < ignoredRanges.current[0]) return false; while (hasCurrent && ignoredRanges.current.isNotEmpty && ignoredRanges.current[1] < line) { hasCurrent = ignoredRanges.moveNext(); } if (hasCurrent && ignoredRanges.current.isNotEmpty && ignoredRanges.current[0] <= line && line <= ignoredRanges.current[1]) { return true; } return false; } void addToMap(Map map, int line, int count) { final oldCount = map.putIfAbsent(line, () => 0); map[line] = count + oldCount; } void fillHitMap(List hits, Map hitMap) { // Ignore line annotations require hits to be sorted. hits = _sortHits(hits); // hits is a flat array of the following format: // [ , ,...] // line: number. // linerange: '-'. for (var i = 0; i < hits.length; i += 2) { final k = hits[i]; if (k is int) { // Single line. if (_shouldIgnoreLine(ignoredLines, k)) continue; addToMap(hitMap, k, hits[i + 1] as int); } else if (k is String) { // Linerange. We expand line ranges to actual lines at this point. final splitPos = k.indexOf('-'); final start = int.parse(k.substring(0, splitPos)); final end = int.parse(k.substring(splitPos + 1)); for (var j = start; j <= end; j++) { if (_shouldIgnoreLine(ignoredLines, j)) continue; addToMap(hitMap, j, hits[i + 1] as int); } } else { throw StateError('Expected value of type int or String'); } } } final sourceHitMap = globalHitMap.putIfAbsent(source, () => HitMap()); fillHitMap(e['hits'] as List, sourceHitMap.lineHits); if (e.containsKey('funcHits')) { sourceHitMap.funcHits ??= {}; fillHitMap(e['funcHits'] as List, sourceHitMap.funcHits!); } if (e.containsKey('funcNames')) { sourceHitMap.funcNames ??= {}; final funcNames = e['funcNames'] as List; for (var i = 0; i < funcNames.length; i += 2) { sourceHitMap.funcNames![funcNames[i] as int] = funcNames[i + 1] as String; } } if (e.containsKey('branchHits')) { sourceHitMap.branchHits ??= {}; fillHitMap(e['branchHits'] as List, sourceHitMap.branchHits!); } } return globalHitMap; } /// Generates a merged hitmap from a set of coverage JSON files. static Future> parseFiles( Iterable files, { bool checkIgnoredLines = false, @Deprecated('Use packagePath') String? packagesPath, String? packagePath, }) async { final globalHitmap = {}; for (var file in files) { final contents = file.readAsStringSync(); final jsonMap = json.decode(contents) as Map; if (jsonMap.containsKey('coverage')) { final jsonResult = jsonMap['coverage'] as List; globalHitmap.merge(await HitMap.parseJson( jsonResult.cast>(), checkIgnoredLines: checkIgnoredLines, // ignore: deprecated_member_use_from_same_package packagesPath: packagesPath, packagePath: packagePath, )); } } return globalHitmap; } } extension FileHitMaps on Map { /// Merges [newMap] into this one. void merge(Map newMap) { newMap.forEach((file, v) { final fileResult = this[file]; if (fileResult != null) { _mergeHitCounts(v.lineHits, fileResult.lineHits); if (v.funcHits != null) { fileResult.funcHits ??= {}; _mergeHitCounts(v.funcHits!, fileResult.funcHits!); } if (v.funcNames != null) { fileResult.funcNames ??= {}; v.funcNames?.forEach((line, name) { fileResult.funcNames![line] = name; }); } if (v.branchHits != null) { fileResult.branchHits ??= {}; _mergeHitCounts(v.branchHits!, fileResult.branchHits!); } } else { this[file] = v; } }); } static void _mergeHitCounts(Map src, Map dest) { src.forEach((line, count) { final lineFileResult = dest[line]; if (lineFileResult == null) { dest[line] = count; } else { dest[line] = lineFileResult + count; } }); } } /// Class containing information about a coverage hit. class _HitInfo { _HitInfo(this.firstLine, this.hitRange, this.hitCount); /// The line number of the first line of this hit range. final int firstLine; /// A hit range is either a number (1 line) or a String of the form /// "start-end" (multi-line range). final dynamic hitRange; /// How many times this hit range was executed. final int hitCount; } /// Creates a single hitmap from a raw json object. /// /// Throws away all entries that are not resolvable. @Deprecated('Migrate to HitMap.parseJson') Future>> createHitmap( List> jsonResult, { bool checkIgnoredLines = false, @Deprecated('Use packagePath') String? packagesPath, String? packagePath, }) async { final result = await HitMap.parseJson( jsonResult, checkIgnoredLines: checkIgnoredLines, packagesPath: packagesPath, packagePath: packagePath, ); return result.map((key, value) => MapEntry(key, value.lineHits)); } /// Merges [newMap] into [result]. @Deprecated('Migrate to FileHitMaps.merge') void mergeHitmaps( Map> newMap, Map> result) { newMap.forEach((file, v) { final fileResult = result[file]; if (fileResult != null) { v.forEach((line, count) { final lineFileResult = fileResult[line]; if (lineFileResult == null) { fileResult[line] = count; } else { fileResult[line] = lineFileResult + count; } }); } else { result[file] = v; } }); } /// Generates a merged hitmap from a set of coverage JSON files. @Deprecated('Migrate to HitMap.parseFiles') Future>> parseCoverage( Iterable files, int _, { bool checkIgnoredLines = false, @Deprecated('Use packagePath') String? packagesPath, String? packagePath, }) async { final result = await HitMap.parseFiles(files, checkIgnoredLines: checkIgnoredLines, packagesPath: packagesPath, packagePath: packagePath); return result.map((key, value) => MapEntry(key, value.lineHits)); } /// Returns a JSON hit map backward-compatible with pre-1.16.0 SDKs. @Deprecated('Will be removed in 2.0.0') Map toScriptCoverageJson(Uri scriptUri, Map hitMap) { return hitmapToJson(HitMap(hitMap), scriptUri); } List _flattenMap(Map map) { final kvs = []; map.forEach((k, v) { kvs.add(k as T); kvs.add(v as T); }); return kvs; } /// Returns a JSON hit map backward-compatible with pre-1.16.0 SDKs. Map hitmapToJson(HitMap hitmap, Uri scriptUri) { final json = {}; json['source'] = '$scriptUri'; json['script'] = { 'type': '@Script', 'fixedId': true, 'id': 'libraries/1/scripts/${Uri.encodeComponent(scriptUri.toString())}', 'uri': '$scriptUri', '_kind': 'library', }; json['hits'] = _flattenMap(hitmap.lineHits); if (hitmap.funcHits != null) { json['funcHits'] = _flattenMap(hitmap.funcHits!); } if (hitmap.funcNames != null) { json['funcNames'] = _flattenMap(hitmap.funcNames!); } if (hitmap.branchHits != null) { json['branchHits'] = _flattenMap(hitmap.branchHits!); } return json; } /// Sorts the hits array based on the line numbers. List _sortHits(List hits) { final structuredHits = <_HitInfo>[]; for (var i = 0; i < hits.length - 1; i += 2) { final lineOrLineRange = hits[i]; final firstLineInRange = lineOrLineRange is int ? lineOrLineRange : int.parse(lineOrLineRange.split('-')[0] as String); structuredHits.add(_HitInfo(firstLineInRange, hits[i], hits[i + 1] as int)); } structuredHits.sort((a, b) => a.firstLine.compareTo(b.firstLine)); return structuredHits .map((item) => [item.hitRange, item.hitCount]) .expand((item) => item) .toList(); } �`NN<!-)D "0 JAN/M&670-$9 ,?E- -8,/16$.-8 )60L< ;0/1 000 >9&9> 9/'3>5$O-?>1@7F M<'0C(4289* )2GC1$9 -0E-8330=&$ /%+% :"0> #4.0 $2B G )$-7:;F&245+1+"7 )* D#,L% 1&$5 A,2 "7 0,"!DE(Q2"EB$!N4!;"A#?4'1%4>QE5 package:coverage/src/hitmap.dart�f��[file:///github/home/.pub-cache/hosted/pub.dartlang.org/coverage-1.3.2/lib/src/resolver.dart��// Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. import 'dart:io'; import 'package:package_config/package_config.dart'; import 'package:path/path.dart' as p; /// [Resolver] resolves imports with respect to a given environment. class Resolver { @Deprecated('Use Resolver.create') Resolver({this.packagesPath, this.sdkRoot}) : _packages = packagesPath != null ? _parsePackages(packagesPath) : null, packagePath = null; Resolver._( {this.packagesPath, this.packagePath, this.sdkRoot, Map? packages}) : _packages = packages; static Future create({ String? packagesPath, String? packagePath, String? sdkRoot, }) async { return Resolver._( packagesPath: packagesPath, packagePath: packagePath, sdkRoot: sdkRoot, packages: packagesPath != null ? _parsePackages(packagesPath) : (packagePath != null ? await _parsePackage(packagePath) : null), ); } final String? packagesPath; final String? packagePath; final String? sdkRoot; final List failed = []; final Map? _packages; /// Returns the absolute path wrt. to the given environment or null, if the /// import could not be resolved. String? resolve(String scriptUri) { final uri = Uri.parse(scriptUri); if (uri.scheme == 'dart') { final sdkRoot = this.sdkRoot; if (sdkRoot == null) { // No sdk-root given, do not resolve dart: URIs. return null; } String filePath; if (uri.pathSegments.length > 1) { var path = uri.pathSegments[0]; // Drop patch files, since we don't have their source in the compiled // SDK. if (path.endsWith('-patch')) { failed.add('$uri'); return null; } // Canonicalize path. For instance: _collection-dev => _collection_dev. path = path.replaceAll('-', '_'); final pathSegments = [ sdkRoot, path, ...uri.pathSegments.sublist(1), ]; filePath = p.joinAll(pathSegments); } else { // Resolve 'dart:something' to be something/something.dart in the SDK. final lib = uri.path; filePath = p.join(sdkRoot, lib, '$lib.dart'); } return resolveSymbolicLinks(filePath); } if (uri.scheme == 'package') { final _packages = this._packages; if (_packages == null) { return null; } final packageName = uri.pathSegments[0]; final packageUri = _packages[packageName]; if (packageUri == null) { failed.add('$uri'); return null; } final packagePath = p.fromUri(packageUri); final pathInPackage = p.joinAll(uri.pathSegments.sublist(1)); return resolveSymbolicLinks(p.join(packagePath, pathInPackage)); } if (uri.scheme == 'file') { return resolveSymbolicLinks(p.fromUri(uri)); } // We cannot deal with anything else. failed.add('$uri'); return null; } /// Returns a canonicalized path, or `null` if the path cannot be resolved. String? resolveSymbolicLinks(String path) { final normalizedPath = p.normalize(path); final type = FileSystemEntity.typeSync(normalizedPath, followLinks: true); if (type == FileSystemEntityType.notFound) return null; return File(normalizedPath).resolveSymbolicLinksSync(); } static Map _parsePackages(String packagesPath) { final content = File(packagesPath).readAsStringSync(); final packagesUri = p.toUri(packagesPath); final parsed = PackageConfig.parseString(content, Uri.base.resolveUri(packagesUri)); return { for (var package in parsed.packages) package.name: package.packageUriRoot }; } static Future?> _parsePackage(String packagePath) async { final parsed = await findPackageConfig(Directory(packagePath)); if (parsed == null) return null; return { for (var package in parsed.packages) package.name: package.packageUriRoot }; } } /// Bazel URI resolver. class BazelResolver extends Resolver { /// Creates a Bazel resolver with the specified workspace path, if any. BazelResolver({this.workspacePath = ''}); final String workspacePath; /// Returns the absolute path wrt. to the given environment or null, if the /// import could not be resolved. @override String? resolve(String scriptUri) { final uri = Uri.parse(scriptUri); if (uri.scheme == 'dart') { // Ignore the SDK return null; } if (uri.scheme == 'package') { // TODO(cbracken) belongs in a Bazel package return _resolveBazelPackage(uri.pathSegments); } if (uri.scheme == 'file') { final runfilesPathSegment = '.runfiles/$workspacePath'.replaceAll(RegExp(r'/*$'), '/'); final runfilesPos = uri.path.indexOf(runfilesPathSegment); if (runfilesPos >= 0) { final pathStart = runfilesPos + runfilesPathSegment.length; return uri.path.substring(pathStart); } return null; } if (uri.scheme == 'https' || uri.scheme == 'http') { return _extractHttpPath(uri); } // We cannot deal with anything else. failed.add('$uri'); return null; } String _extractHttpPath(Uri uri) { final packagesPos = uri.pathSegments.indexOf('packages'); if (packagesPos >= 0) { final workspacePath = uri.pathSegments.sublist(packagesPos + 1); return _resolveBazelPackage(workspacePath); } return uri.pathSegments.join('/'); } String _resolveBazelPackage(List pathSegments) { // TODO(cbracken) belongs in a Bazel package final packageName = pathSegments[0]; final pathInPackage = pathSegments.sublist(1).join('/'); final packagePath = packageName.contains('.') ? packageName.replaceAll('.', '/') : 'third_party/dart/$packageName'; return '$packagePath/lib/$pathInPackage'; } } /// Loads the lines of imported resources. class Loader { final List failed = []; /// Loads an imported resource and returns a [Future] with a [List] of lines. /// Returns `null` if the resource could not be loaded. Future?> load(String path) async { try { // Ensure `readAsLines` runs within the try block so errors are caught. return await File(path).readAsLines(); } catch (_) { failed.add(path); return null; } } } ��NN<5&E%.P## " %)M"%N$&& $9)(N' P** ,O6-#(/1 1DG 3*N..O<<@;/N PMD% P'J,N$ && #35 "FAD.9$*%>G2';1)=2++.+"P:2 N-"package:coverage/src/resolver.dart�f��bfile:///github/home/.pub-cache/hosted/pub.dartlang.org/coverage-1.3.2/lib/src/run_and_collect.dart��// Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. import 'dart:async'; import 'dart:convert' show utf8, LineSplitter; import 'dart:io'; import 'collect.dart'; import 'util.dart'; Future> runAndCollect(String scriptPath, {List? scriptArgs, bool checked = false, bool includeDart = false, Duration? timeout}) async { final dartArgs = [ '--enable-vm-service', '--pause_isolates_on_exit', ]; if (checked) { dartArgs.add('--checked'); } dartArgs.add(scriptPath); if (scriptArgs != null) { dartArgs.addAll(scriptArgs); } final process = await Process.start(Platform.executable, dartArgs); final serviceUriCompleter = Completer(); process.stdout .transform(utf8.decoder) .transform(const LineSplitter()) .listen((line) { final uri = extractVMServiceUri(line); if (uri != null) { serviceUriCompleter.complete(uri); } }); final serviceUri = await serviceUriCompleter.future; Map coverage; try { coverage = await collect(serviceUri, true, true, includeDart, {}, timeout: timeout); } finally { await process.stderr.drain(); } final exitStatus = await process.exitCode; if (exitStatus != 0) { throw 'Process exited with exit code $exitStatus'; } return coverage; } ;NN</>  !F0'+)7!N"-7)package:coverage/src/run_and_collect.dart�h�k��Wfile:///github/home/.pub-cache/hosted/pub.dartlang.org/coverage-1.3.2/lib/src/util.dart��// Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. import 'dart:io'; // TODO(cbracken) make generic /// Retries the specified function with the specified interval and returns /// the result on successful completion. Future retry(Future Function() f, Duration interval, {Duration? timeout}) async { var keepGoing = true; Future _withTimeout(Future Function() f, {Duration? duration}) { if (duration == null) { return f(); } return f().timeout(duration, onTimeout: () { keepGoing = false; final msg = duration.inSeconds == 0 ? '${duration.inMilliseconds}ms' : '${duration.inSeconds}s'; throw StateError('Failed to complete within $msg'); }); } return _withTimeout(() async { while (keepGoing) { try { return await f(); } catch (_) { if (keepGoing) { await Future.delayed(interval); } } } }, duration: timeout); } /// Scrapes and returns the Dart VM service URI from a string, or null if not /// found. /// /// Potentially useful as a means to extract it from log statements. Uri? extractVMServiceUri(String str) { final listeningMessageRegExp = RegExp( r'(?:Observatory|The Dart VM service is) listening on ((http|//)[a-zA-Z0-9:/=_\-\.\[\]]+)', ); final match = listeningMessageRegExp.firstMatch(str); if (match != null) { return Uri.parse(match[1]!); } return null; } /// Returns an open port by creating a temporary Socket Future getOpenPort() async { ServerSocket socket; try { socket = await ServerSocket.bind(InternetAddress.loopbackIPv4, 0); } catch (_) { // try again v/ V6 only. Slight possibility that V4 is disabled socket = await ServerSocket.bind(InternetAddress.loopbackIPv6, 0, v6Only: true); } try { return socket.port; } finally { await socket.close(); } } const muliLineIgnoreStart = '// coverage:ignore-start'; const muliLineIgnoreEnd = '// coverage:ignore-end'; const singleLineIgnore = '// coverage:ignore-line'; const ignoreFile = '// coverage:ignore-file'; /// Return list containing inclusive range of lines to be ignored by coverage. /// If there is a error in balancing the statements it will ignore nothing, /// unless `coverage:ignore-file` is found. /// Return [0, lines.length] if the whole file is ignored. /// /// ``` /// 1. final str = ''; // coverage:ignore-line /// 2. final str = ''; /// 3. final str = ''; // coverage:ignore-start /// 4. final str = ''; /// 5. final str = ''; // coverage:ignore-end /// ``` /// /// Returns /// ``` /// [ /// [1,1], /// [3,5], /// ] /// ``` /// List> getIgnoredLines(List? lines) { final ignoredLines = >[]; if (lines == null) return ignoredLines; final allLines = [ [0, lines.length] ]; var isError = false; var i = 0; while (i < lines.length) { if (lines[i].contains(ignoreFile)) return allLines; if (lines[i].contains(muliLineIgnoreEnd)) isError = true; if (lines[i].contains(singleLineIgnore)) ignoredLines.add([i + 1, i + 1]); if (lines[i].contains(muliLineIgnoreStart)) { final start = i; ++i; while (i < lines.length) { if (lines[i].contains(ignoreFile)) return allLines; if (lines[i].contains(muliLineIgnoreStart)) { isError = true; break; } if (lines[i].contains(muliLineIgnoreEnd)) { ignoredLines.add([start + 1, i + 1]); break; } ++i; } } ++i; } return isError ? [] : ignoredLines; } ��NN<K)>!L1*+&:! 3 N E')`8!8"GD P844.OL,;01/  7&* 8>O2 !<6 40  &package:coverage/src/util.dart�G�d��5O�}�� ��,�l7� @�G�o�R�q�r�s�t�u���������������������w�����w�����w�� �������w��z�{�����w�����w�����w�����w�����w!���~#�=���C�������� +.147:=@CFNQY\dgjmu�������������������,�������� ��JOW ��    �� ������ �� ���� ��!��"b ��$��%b ��'c'��)��)��)��)��)��)��)��)��)�� ^3��4_4a3��7��9��:�9��<��=�9��?��@�9��B�B�)B�*B�7B��G�89�I��J�I��L9�N��O�O�O� N��S�S�S� N��W�N��Y9� [��\�\� \� \� [��a�a� a� a� [��f�[��h9���k��l�fl�il�jl�nl�ol�pl�ql��t�rt�ylk�=x��yCy��y��y��x��~C~��~��~��x����퀃�߀���x�����>���Ux����k�_�������`���a���b�������`���a���b������k�c����~�������A���B���������������������A���B����������������������������������������������������ŀ������������������������������������������������������������������ā2��������ȁ��Ɂ���ˁ��́ŀ́ƀ́ǀ́Ȁˁ��сŀсƀсǀсȀˁ��ցɀցՀցۀց����܂�܂�܂�݁����݁��� �܂ ����� �܂ �܂ �܂ ����܂������������܂�܂�܂���������� �����"�����$����������������ۂ�ہ����܂�܂����*�܂�ۂ���� ,�ۂ� ���.����0� 2����$�܂ ����3��7�8��9��� ���;��:����!?����#@�B��=�܂!�'�"�(�E���#���$���%���&�'�/�(�0���1��M�$� �E�R��V�܂)�9�"�:�*��[��\�:�+�,�-�A�.�B���C�܁��E�/�܂0��H�1�A�2����Kr�u�#s����Ow�3�Q�4�Q�5�S���T�6��7�V�"�W�V���YE�Y���J���\���܂8��9��:�`���a���J���c�V���e���TE�T���A�;�\������kj��<�A�=�n���o���o���倖�\���?���t���?�>�v���w���(��y�?�A�@�i���|���{���~���A�A�\���A�B�����������������|����u�A�C�\���A�D���������O�������5�Kx�K{��������A�E���������A�F�\�������"����#����"���G�A�H�\���A�I���������������A�J�\e�k�K���ɁA�L�������π����*�ށ����сA�M�A�N�\�ցA�O�A�P�������؁��������������܁�5�A�Q�A�R������S���������À���ꁬ��A�S�ǁ���Q�A�T�Ȁ�A�U�́���Q�A�V��6�w���ρ��ҀՁҀ���l���܁�F�����̀��W�܂X��� �܂Y�݁��ނ�߀ŀ����܂Z������!.�݁��� ����ځ���[�������!*�!�!��*��(�뀝��3��(��5��\�#�:�]��N�����P�܂^�������?�_���`������Z���a�����]�O�b�O�(�y�c�#�}�d�����������e�遪��f��g�?�h�?�i�����j�� ���"������k�l��m�����n�K�o�O����p����!��� ���#�܂#��� ���&�q�?�r�(�"�)�܂s�+�"�,��N�#���;����?�t�2���3�O�?�u�5���6�v��w�8�"�9�2���;�����x���y�=���?����z�a�������8���D���8���F���;���a���;�G���K�ЂK�с��{�܂|�+���P�ڀ܂}�R���S$�?�~�U���V��?���X���Y���Y���U���\|�V���R���_�G���a�a��c���ہ��e�C���g�ꂄ�i���j�܂��G���m��n���R���p���p���p���p���p���ہ��v`����x�]�y���y������|�+�}���=����]������ $-6?CIQSTgv�����������Ȁր����"�)�3�?�M�_�g�o�t�{���������������ŁՁځ����� � ��(�+�3�>�H�I�L�T�c�j�p�t�z�������������������тڂ��������� ����%�1�2�3�4�=�>�G�N�U�[�i�p�z�������������ƒЃ�� ���+�0�1�;�=�D�J�R�V�Z�^�c�r�z�������������������ń̄҄Մ������ ����!�0�2�<�G�^�l�s�������$�3�B�D�P�X�b�p�z�������������������Ć̆؆ކ����� ���#�-�1�;�?�@�S�^�g�n�z�������������‡ŇՇ܇�����������,�7�@�P�V�]�f�q�z�������������������ɈΈو������#�8�?�B�N�O�T�W�X�Y�d�m�s�y���������������ȉ܉������&�)�*�0�7�;�>�?�B�C�H�L�P�V�Y�\�_�d�i�w����ŠЋ�B�u������� �'�(�L�Z�g�j�n�r�x���������������Ќ܌���� ���&�-�2�;�>�?�c�o�y�~���������������ʍӍۍ������#�8�S�V�Z�h�t�����������������Ҏ׎����� ���"�(�1�9�?�Q�c�u���������������Ïȏ܏���� ��/�=�D�O�U�_�m�z���������ŐȐӐܐ�������� �+�/�;�H�R�\�c�k�~�����������ȑϑבݑ������+�<�L�V�[�\�d�m�y���������������˒Β�;�@�J�U�[�j�r�y�������������ƓՓ���I�P�_�z�����ʔݔ�� �"�9�W�w����������ߕ���2�[�y�������������������–̖ҖՖܖ������ ��"�/�4�C�P�S�b�m�t���������͗��� ����=�c�f�k�s�w�������������Ę֘ܘޘ�������!�+�5�>�D�P�T�[�`�g�k�q�x�{��������������Й����� ��$�.�2�:�C�R�[�������������Ț͚������/�8�>�E�M�W�`�i�t���������������Ǜӛ��������5�H�[�b�j�v�{��hitmapToJson_CoverageInfostartOffsetendOffsetisCovered_PositionlinecolumnhashCode==oparseChromeCoveragepreciseCoveragesourceProvidersourceMapProvidersourceUriProvider:async_future:is_sync:return_value:async_op_then:async_op_error:await_jump_var:await_ctx_var:saved_try_context_var0:async_op:result:exception:stack_tracecoverageReport:sync-for-iteratoriteratormoveNextentrycurrentscriptId[]mapResponsemappingcompiledSourcecoverageInfooffsetCoveragelengthcoveredPositionslineslineEntryentriescolumnEntrysourceUrlIdsourceUrlurlsstartsWithorg-dartlang-sdk:uricoverageputIfAbsentsourceLine+[]=containscoverageHitMapsforEachhitMapkeystoListgrowablesortlineHitsallCoverageaddtypeCodeCoverageexceptionstack_trace_coveredPositionspositionsoffset< _coverageInfoForresultfunctionscastrangesrangecount>_offsetCoveragesourceLengthab-compareToiStdoutLogwarningmessagesevere_retryIntervalcollectserviceUriresumewaitPausedincludeDartscopedOutputisolateIdstimeoutfunctionCoveragebranchCoverageserviceOverrideForTesting:saved_try_context_var1:exception0:stack_trace0servicepathSegmentswherecisNotEmptywsreplaceschemefragmenthostpathportqueryqueryParametersuserInfooptionscompressionsocketcontrollerlistendataonDoneclosedisposecancelOnErroronErrorstreamlogdisposeHandlergetVMonTimeout_versionCheckversionminMajorminMinormajorminor>=_getAllCoveragevmgetVersionreportLinesbranchCoverageSupportedlibraryFilterswritelnBranch coverage was requested, but is not supported by the VM version. Try updating to a newer version of DartsourceReportKindsisolateOwnerGroupcoveredIsolateGroupsisolateGroupsisolateGroupRefgetIsolateGroupidisolateGroupisolatesisolateRefisolateGroupIdgetScriptsscriptsscriptpackagescopesplit/firstgetSourceReportforceCompileendTokenPostokenPosscriptReportaddAllmapfilterpackage:isolateReport_resumeIsolatesfuturesgetIsolateisolatepauseEventkindframeIndexstep__waitIsolatesPausedpauseEventsallPausedisEmptyNo isolates.Unpaused isolates remaining._getLineFromTokenPosminmaxtokenPosTablemid>>row_processFunctionfuncRefhitsgetObjectfunclocationfuncNametokenPos in function name has no line mapping for script funcNames_getCoverageJsonreporthitMapslibrariesneedScriptsscriptRefscriptIndexscriptUrievaluatedartcontainsKeylibReflibraryfuncHitsclassesclassRefclazzforEachLinetokenPositionsbodyposwrite has no line mapping for script missesbranchHits_incrementCountForKeycounterkey_getFuncName:ownercls.p_PathFilterFormatterformathitmapLcovFormatterresolverbasePathreportOnvaluePrettyPrintFormatterloaderreportFuncsFileHitMapsFormatterformatLcovprettyPrint_prefixFileHitMapsFormatter|formatLcov#thispathFilterbufvsourceresolvefromSF:kFN:,FNDA:FNF:FNH:valuesDA:LF:LH:BRDA:,0,0,end_of_record toStringFileHitMapsFormatter|get#formatLcovFileHitMapsFormatter|prettyPrintreportBranchesFunction coverage formatting was requested, but the hit map is missing function coverage information. Did you run collect_coverage with the --function-coverage flag?Branch coverage formatting was requested, but the hit map is missing branch coverage information. Did you run collect_coverage with the --branch-coverage flag?load<=prefixpadLeft|FileHitMapsFormatter|get#prettyPrint_getPathFilterabsolutePathsanyitemjsonHitMapparseJsonjsonResultcheckIgnoredLinespackagesPathpackagePathglobalHitMapeignoredLinesListignoredLineshasCurrent_shouldIgnoreLineignoredRangesaddToMapoldCountfillHitMapsplitPosindexOfstartsubstringendjExpected value of type int or StringsourceHitMapparseFilesfilesglobalHitmapfilecontentsreadAsStringSyncencodingjsonMapdecodereviver_HitInfofirstLinehitRangehitCountFileHitMapsmerge_mergeHitCountsFileHitMaps|mergenewMapfileResultFileHitMaps|get#mergeFileHitMaps|_mergeHitCountssrcdestlineFileResultcreateHitmapmergeHitmapsparseCoveragetoScriptCoverageJson_flattenMapTkvs@ScriptfixedIdlibraries/1/scripts/_kind_sortHitsstructuredHitslineOrLineRangefirstLineInRangeexpandResolversdkRootfailed_packagespackagescreate:async_temporary_0:async_temporary_1:async_temporary_2:async_temporary_3:async_temporary_4filePathendsWith-patchreplaceAllsublistlib.dartresolveSymbolicLinkspackageNamepackageUripathInPackagenormalizedPathfollowLinksresolveSymbolicLinksSync_parsePackagescontentpackagesUriparsedresolveUripackageUriRoot_parsePackageBazelResolverworkspacePath_resolveBazelPackagerunfilesPathSegment.runfiles//*$runfilesPospathStarthttpshttp_extractHttpPathpackagesPosjointhird_party/dart//lib/LoaderreadAsLinesutf8LineSplitterrunAndCollectscriptPathscriptArgscheckeddartArgs--enable-vm-service--pause_isolates_on_exit--checkedprocessserviceUriCompleterstdouttransformdecodercompletefuturestderrdrainexitCodeexitStatusProcess exited with exit code muliLineIgnoreStartmuliLineIgnoreEndsingleLineIgnoreignoreFileretryfintervalkeepGoing_withTimeoutdurationmsginSecondsinMillisecondsmssFailed to complete within extractVMServiceUristrlisteningMessageRegExp(?:Observatory|The Dart VM service is) listening on ((http|//)[a-zA-Z0-9:/=_\-\.\[\]]+)matchfirstMatchgetOpenPortv6OnlygetIgnoredLinesallLinesisErrorCoverageBranchCoverageResumePauseStartPauseExceptionPauseExitPauseInterruptedPauseBreakpointMigrate to FileHitMapsFormatterMigrate to FileHitMapsFormatter.formatLcovMigrate to FileHitMapsFormatter.prettyPrint Use packagePathMigrate to HitMap.parseJsonMigrate to FileHitMaps.mergeMigrate to HitMap.parseFilesWill be removed in 2.0.0Use Resolver.create// coverage:ignore-start// coverage:ignore-end// coverage:ignore-line// coverage:ignore-filepackage:coverage/coverage.dartpackage:coverage/src/chrome.dart@methods@fields@getters@constructorspackage:coverage/src/collect.dartpackage:coverage/src/formatter.dart@typedefspackage:coverage/src/hitmap.dart@setterspackage:coverage/src/resolver.dartpackage:coverage/src/run_and_collect.dartpackage:coverage/src/util.dartpackage:source_maps/parser.dartdart:coreObjectintboolhashnumListMapStringdart:asyncFutureUri_FutureFutureOrStackTraceIteratorIterable_awaitHelperdart:_internalunsafeCastSingleMappingparseFormatExceptionArgumentErrorSetTargetLineEntryTargetEntryPattern_GrowableList@factories_completeOnAsyncReturn_completeOnAsyncError_asyncThenWrapperHelper_asyncErrorWrapperHelperdart:collection_CompactLinkedHashSet_Listfilleddart:iopackage:vm_service/vm_service.dartpackage:vm_service/src/vm_service.dartLogprintDurationNullVmServicedart:_httpCompressionOptionsWebSocketconnectStreamControllerFunctionStreamSubscriptionStreamVMTimeoutExceptionVersion_StdSink_literal1IsolateGroupRefIsolateGroupIsolateRefScriptListScriptRefObjRefSourceReportsyncIsolateEventSuccesswaitScriptFuncRefObjFuncSourceLocationLibraryRefSourceReportRangeLibraryClassRefClassSourceReportCoveragepackage:path/path.dartDeprecatedMapEntryStringBufferrelativecanonicalizedart:convertStateErrorFileEncodingJsonCodecencodeComponent_literal2package:package_config/package_config.dartjoinAllfromUrinormalizeFileSystemEntityTypeFileSystemEntitytypeSynctoUripackage:package_config/src/package_config.dartPackageConfigparseStringbasePackagefindPackageConfigDirectoryRegExpProcessPlatformexecutableCompleterUtf8CodecUtf8DecoderStreamTransformerdelayedRegExpMatchMatchServerSocketbindInternetAddressloopbackIPv4loopbackIPv6_microsecondsStreamTransformerBase_Override_durationclientNoContextTakeoverserverNoContextTakeoverclientMaxWindowBitsserverMaxWindowBitsenabled_reviver_toEncodable_type_allowMalformed�C�����8�0�0�4��}�];z��f���i�C�(����J0000000000 �U�^�|�_�� ����)����AZKA*�݇�A���� `�`� `�bj�-`�b�P a`�c\j`�e]�g`*J�a�a����s����y��5����a`�c\�����#�������j��a`�cb����a`�c\a`�c\�;�Q�FA �e�F�j`�h�� a`�h]�g`�ij`�e�� `�bj��`�b�� a`�c\j`�e]�g`*J���������7���C5�*�"a`�c\��"�t#�"��"��j�-a`�cb�"��a`�c\a`�c\��9�a�ݕ���A ����`�j�)`�bj�3`�b�V a`�c\j`�e]�g`*J�g�p��������5����a`�c\����/#������gj��a`�cb���ga`�c\a`�c\�<�S�XA�g�X�l`�h��`�bj��`�b�� a`�h]�g`�ij`�e�� a`�c\j`�e]�g`*J�� ��'�ł�1��5�A�9a`�c\��9�#�9��9�:j�Da`�cb�9�:a`�c\a`�c\��P���F�S��A�d���|`*��`�j]�g\J��������ƒ���у��cf���� �b)��ZKA*'$' ���^���_����)�?d�b����*���U ��5��`�h� �m' �A�i�� `�h�S�m'! �u����"`�h���m'#������$`�h���m'%�����7A ���7��&`�j��'`�b� a`�c\]�g`*`*>N(]�n`*��p`*N)`�b*N*]�r`*N+a[[N,a`�c`�s[N-`�t�N.[N/[O��0^[[`�s[���71[2[3[[K>A>N��"`�j��$�"I�5!v�D�:�4`�b�w=�P�v�f�\�5`�j�y?M�w5[�w�|x���}�6a]�g`�b�~�������� +I�r!��`�b�� >=�����+B?AD��>M��5[��|��� ����8�������� +N�׆�7`*��`*�� I�"!�4�&�>=��=���D�`*B?I�W!��\�-B�g?N����8`�jv�����9`�j��I����v���ƇQ`����v���ކ`����a`�c`�b��B��?=�����Q)=��*��+B=����Z�����uJ�7[:[;`�s>=����Z������u=������� =������� =���� a[=��u)J��Z�q���A�����`�h�� a`�h]�g`�i� a`�c\�'`�b]�g`*`*>N(]�n`*�%�p`*N)`�b*N*]�r`*N+a[[N,a`�c`�s[N-`�t�N.[N/[O��0^[[`�s[���1[2[3[[K>A>I�)x�6��-�v<'=a`��`�b��>=}�X��Q���Y#��}�v''>a`�c\=�����+B?I���Ձ�Έ�>I��x���v<'a`��`�b��>=�� ����9��x�J��A�v?�Ua`�h`�h����n�������B?=�����j��a`�h]�g`�i?I��!x��v�À���v`����@'Aa`��`�b��=��׈vx�뀊�v?��a`�h`�h��?AC�)> N��"`�hx�-��$�v?�8a`�h`�h��M�`5[�`�|}�l�f��a`�h]�g`�i�m��a`�h]�g`�i�����8 +N�X�^B`�i��`�i�X I�x!���|�U>=�������� ���U`�i���������B?=�ӊ�x�》ڈv?��a`�h`�h��M� 5[� �|}����a`�h]�g`�i���a`�h]�g`�i�����8 +=��U��`�i�X I�$!�.�(�U>=��?���T�2�Z�U`�i�a����g��B?I�{!�����B��?N����9`�hx������v?��a`�h`�h��I�����̌���ֈva`�c`�b��B��?=���v����=����+B=����ņ����J�[:[;`�s>=�������'���=������8 =����8 =���8 a[=���)J����J�a�5AC�|�5��`�j�� a`�c\]�g`*`*>N(]�n`*�p`*N)`�b*N*]�r`*N+a[[N,a`�c`�s[N-`�t�N.[N/[O�a0^[[`�s[�|�51[2[3[[K>A>M��5[�ށ|�����������P +N�ʏ�D`�`��`�`�p I�!�&���>M�<5[�<�|�B���\��`�`��o�������P +=��5���`*�p B?M��5[���|������������P +=�����`�`�p I��!���Î�>M��5[��|������`�`���������P +=�����`*�p B?=��(�+B=����݄����J�5[:[;`�s>=������-�5���=�����P =�����P =�|�P a[=���)J����8�F�0AE�c�0�n`�j]�g`�``�`>N(]�n`�`��p`�`N)`�b*N*]�r`�`N+a[[N,a`�c`�s[N-`�t�N.[N/[O�F0^[[`�s[�c�01[2[3[[K>A>@v�������4`�b�w����N����`�`�������\v�̀��`����'F'GM��5[���|x� ��� 6a]�g`�b�~����"�S +I����`�b�s >=������ B?=��#�+B=����݃����J�0[:[;`�s>=������x �����=�����S =��"���S =�c�S a[=���)J����3�A��AH�X���c`�j]�g`�``�`>N(]�n`�`�t�p`�`N)`�b*N*]�r`�`N+a[[N,a`�c`�s[N-`�t�N.[N/[O�A0^[[`�s[�X��1[2[3[[K>A>N�|��`�`�������\v������`����'!M��5[���|x������ 6a]�g`�b�~��a��m�� +I����`�b�� >=��˓Q�ғ� B?=��ړQ+B=����(��Q��EJ��[:[;`�s>=����(�� ����E=��a���� =��m���� =�X�� a[=��E)J��(�[ ��� ������`�c �ՁՁ�I���`? �Ձ��!�����;J`��`#�M�M���g���pK`�c�~L`����M`��`!? ��������Ё���ۂ����$�‚ƒ9N��9��O`��`!? ���v��� �)P[��v�%���)L`����v�1��+�)M[��t%�>�D��Q`��`'����������M`����R`�c��S`�tj`�e`%? ������������� ��(����N�7���H:`��`%? �[��v�k��a� M`����v�~��t� R[��v������ S`�t��[���ń�A�τ���O`�cbJ��0�င痂�V�}dg� )���_��� d�.�*�\�k�t`�c,/�̂ڀ�T`�tj��`�t-0�ك���U`*j��`j5����A�+���>V]��`A�QW`�cj`�e`*J�f�fyj�z`�t����S����c7���ԍvAX�ލv��B`�i��Y`�h�% a`�c\j`�e`*J�8�8� ��P����W��5�h�`a`�c\��`��#�`��`��j�ka`�cb�`��a`�c\a`�c\8�����ZAZ���Z��`����Y`�h� a`�c\j`�e`*J���!��,�\��;�g5�L�Da`�c\��D�s#�D��D��j�Oa`�cb�D��a`�c\a`�c\9�����A[���� \`�c�Y`�h�I a`�c\j`�e`*J�\�\�"��s���}�5����a`�c\����#������Pj��a`�cb���Pa`�c\a`�c\:�k�w�A]�����`*��^]��`�i��Y`�hj`�e\>�͗=�Ӂ#������ȁ���;���A_����� `*�%^`���9Y`�hj`�e\>�C��=�I�$��f���u�-��~�"<�P�l��A`�r����`*��Y`�hj`�e]��`��`�cJ�����%��Ǜ}��֛�1�M�U�\Ba�\�\`�t2���%BV�%�%]��`A=����$Bb��$�c`��`A>�k�t��Bd�}����`�h`A?�R�W�nBe�^�n�cf`�h`�h@�=�B�aBg�N�a�Sh`�h`�h3�]�i�rBW�r�r`�c8�A���b��4`���A������`�cC� ��>A��>�$L`���.i`�h�Dj`�hj`�e�ok`Kj`�e��W`�cj`�e��l`�bj��`�b`AJ��u�=�ـ����O���Z���f����x������$��j�2a`�cbE�j�u�yBL�y�y`��F������Bi����`�hG��#�1Bj�1�1`�hH�A�V�eBk�e�e`KI�\�h�qBW�q�q`�cJ�o�x��Bl����`�b4�2Tu��K�IJӽe`�c]��`KMO�^�s��m`�tj�i`�t T�w��cA���c��n`�t��o`�t`K>���c=������˟2�j��`�t 'n=������ �=�j�`�t 'nJ�/�6����L�2��S�=+V�d�{��Ap������R`���� a`�c\j`�e`KJ����f�����5���a`�c\����#�肷��j��a`�cb���a`�c\a`�c\P�۸��Bn���`�tQ�Ź͹�Bo�ҹ�`�tW�d�t��Bqj�e`�c �}����r`K`�tX�[�u��Bsj�\`�c �w���r`�c`�bR������Btj��`�c ����`�tY�F�Y�cBuj�G`�c �a�c`��� 8 Z | � �!!9Z�8�G��`�c`Kc�G `Z? ��\���ž�Bnj��`�c �ʾ�`�t]���Boj�`�c ��`�t`�\�v��Bsj�]`�c �x����r`�c`�b^������Btj��`�c ����`�ta�׿��Buj��`�c ���`��!�!�!�")"S"}"���!b"�"� d����)��4�#)ZKA* j������ v`�c`*lr�ށ倁aj��`�c `�tnt�� ��wd]��`��`Aou�#�/��xd`��pv�M�V��Wj�4`�c `�c���M�M��Id�b���oa`�t�}x`����w]��`��`A��W`�c`j?l���o���n���p��� �M�����]�c� U�|� `j?l�oj��`��nj��]��`��`Ap+ �c��y�[�c�HA�v�H�{a`�t��V]��`A��W`�cj`�e�� a`�c\j`�e`j>��H=#�����j��a`�cb+a`�c\N��y`�t�|��'�S�0�a`�c\N�B�Qz]��`A5�S�S]��`ARN�S]��`A�S��`A��W�^��S�R=x�b��S�{j�ga`A`A`�t ^a`A`A`�t\����S�N�~��|`����}����^��������a`�c\J���င���Ȇ��}RN�]��`��`A2�`��`A>N�!}]��`Av�!v�!���}~]��`A��]��`A��Ex�!����a`�b��>N���`Av����`A��=x�4���À�v�0�.�? L`��E�6�? a`��`A\�����Â�:�m|����A��d�,���8a`�t�] a`�c\`�t>�f��I�l"x�x��p�����a`��`�b��x��������j��`�ta`��`�b��>���t=}���������#��Φ�'a$�#'��j�`�ta`�c\J�-�?J�z�����}�����-A��d���-����]��`A��V]��`A� a`�c\`��>��-N�'�4��]��`��RN]��`����`�����N�J�O��`���Q��>N��}]��`Av�������]��`A��Ex������a`�b��>N�t��`Av������`A��A>���N��=`��I��!%������e`��>�ދe=�����5��v�[��K�eL`��Ev�}��m�ei`�hFv������ej`�hGv�ˆ���ek`KHv�����eW`�cIv����el`�bJ4�-�-�5�.O`�c\>�5�4I�A%�K�E�%`!>�j��=}���x����#�����'V$��'��v��u�Ӈ�̨�L`����'��v���ީ%`!M[��a`�c\>��*=}�������%a`�c\I�@�L��D��B�U?>�l��=��v�����e`��N����L`��v������`��L`����I��x�σ�§΀��ة�a`�c`�b��>�ߌg=}����駱��#���'V$�K'���E��'��a`�c\B�W?=x�|��o�΀�����a`��`�b��=x�������������`��4�������O`�c\>���I��%������ `��>�Ԑ�N��/��`��v�7�1�� `�〓`����I�Rv�\�V�� `�〔`�b��>�l�y=}����z����#�����'V$��'��v�u�������L`����'��v�� �� L`����'��'��v�b�Z��`��i`�h��'��a`�c\>����@v������ `�〚`�b������=}������#��B��'V$�n'��v��u�������L`����'��'��v���ݪ� L`����'��v���� L`����'��v�W�G�� j`�h��'��v������`��L`����'��v������`��i`�h��'��a`�c\>�Ƒ=}��������� a`�c\a`�t`��a`�c\\��J���%�w�2�T�p@Vj�3`�c �]�p]��`AJ�`v�jv�`.wd]��`��`At��]��`A��~�u����@bj�v`�c ������c`��`AJ��x��v��.wd]��`��`Atb����Za`�c`A������D@dj��`�c ��D�`�h`AJ�(x�5v�(.xd`��ud��?��a`�h`�������I�Z�A@ej�J`�c �a�A�ff`�h`�h>�r�AN�|��c`�����N����&'fJ��5�Γ�`Ax��v��.wd]��`��`Atb��Ϯ?a`�c`A��#�΂�ήb+x��v���ήb`Aj`�hG?��mx�v��� �&`������x�7v�0��$�?��`�t�����a`��`�t��^`�t`�t`����a`�h`�h��`�h���F�W��@gj�G`�c �c���hh`�h`�h>�w��I�}x������f<'=a`��`�b��>���=0����#��دf'h'��?I� "v�2��$�f��`�b��v�L��>�f��`�b��>�Y��=0�a�g#����f'h'��?N� �=`��x�$v�.xd`��ud��.�fa`�h`����I�B�N��F�J�W+?N����`��x������fua`����N�Ȗ�i`��x��v���ϰ`��j`�h��ua`����I����hv�x�v���`��i`�h��ua`������`�t����&�r��,�L>�3��N�?�D��`��x�K��F�L��v�Z��U�r��`�t��^`�t`�t`����J�i�p�m��'=$��v�����`��L`����'A�����?J��+$8&�'u,�-7-�./B1}���������`�c`A�����6�:��Lj�`�c `�������T�X��ij�?`�c `�h�����r����jj�]`�c `�h����������kj��`�c `K�����Ԙ݀�Wj��`�c `�c���������lj��`�c `�b��� � ��Id����L`���)i`�h�4j`�h�Ok`K�eW`�c�ul`�b`��?������������������������������ � ������4��A���<���KL`���[i`�h�lj`�h��k`K��W`�c��l`�b�� a`�c\`��>���N� ���`�b*N�'�4��`�t�6�M��G�#I�Rx�c�V�����a`��`�b��>�i��=}�x��q�d�y''������#�ó�a`�c\=��ٳ�)?I��x������.<'=a`��`�b��>���=}�#���d�$#$�Q��L�.'i'��a`�c\=�����)I��!���O����.>����=}�І�ɳd��#$������.'i$�'����)�#'��'��a`�c\I��!v������.��`�b��>� �,=����)I�3!x�Bv�=��8�.`����@'Aa`��`�b��>�Q��=��[�.x�g��b�.��x�v�z��u�.`������'Aa`��`����^ ��`����`��`����]��`����`�t��`����]��`��[��`����`��`�h��??I��������9>����=����9��γ.I��!��䳁>��S=����9x��� �.?��9`�ha`�h`�h��I�0!�5�O�L�9`�h>�]�f=}�n��g�d�o#���9`�h'j$��'����޳#'��'��a`�c\=��I�9��Z�.I�m!�r�P��~�.���9`�h>���M=}������d��#�³9`�h'j'��a`�c\=��0�9��A�.??I�Y��]��J�i+?J�z��������#����.���9`�h����D��dzN��ҳY37 ����%���`�c`K���% `��? �����_�o�@qj�``�c �x���r`K`�t>���N������`�tx��v��.n`�tPqv������|n`�tPa`��`�t��I��!�Ё�ɷ��a`�c`�b��J����ݷ�?J��x��v��.o`�tQqv����|o`�tQa`��`�t��7X82��������`�������n�s��nj�Y`�c `�t����������oj�x`�c `�t��������������d`����������������n`�t��o`�t����`��`��?��������������� ���������e@sj��`�c ��e� r`�c`�bJ�""%�#���0`K�?v�9.n`�t��v�H�B�0`Kn`�tPa`�c`�b���Wv�Q.o`�t��v�`�Z�0`Ko`�tQa`�c`�b�����j�~��@tj�k`�c ����`�tJ��x��x��x��v��.n`�t����7a`��`�t����x��v��.o`�t����7%a`��`�t��a`�t`�t����7����a`�t`�t�������ȯ�@uj��`�c �Я�`��J��5�ޯ�`��v��.��d`����#�ހ�ֺ�w��.��d$��v��.n`�t��'#v��.o`�t�����ֺ�`��`��9 9�:r;���������`��`Z�����t�{����d`����������������`��`��?����` �����������@nj��`�c �ǰ�`�tJ��x�ʔ��a`�t�����а��@oj��`�c ���`�tJ��x�픀�a`�t��������@uj��`�c ��`��J�u�v�.��d`����;�;�<O��aa]��[[[`�ba]��[[[`�b>N-`�t�N.[O��[������]��[2[3[`�b>>�Ƿ�>N��}]��`��v��v��.V]��`����]��`����Ex���a��a`�b��>N��=`��v���a��`����>��>=w��0�́a������M��)N����]��`��`��v�.��d]��`��`�ǀ�I�1!�>��5��>�G��>N�i}]��`��v�iv�i�`��]��`��`�ǀ�]��`�ǁ�]��`�ǁ�Ex�i�>��a`�b��>N�X��`��v�q�>��`�ǁ�>�q��>=w��0�΁av������ ~]��`A����M�{)?J��*J��J��`A���������@������"��`�t�7=`���\ a`�c\\>�e��N�o�t`��x��v�~��v�@Fi`�h��ua`����>N��}]��`��v��v��.V]��`����]��`����Ex����@���a`�b��>N����`��v����@���`����>����N����`��x�v����@�i`�h��ua`����@x�Ev�>��.�A!��`�t������G�@:a`��`�b���.�L@x�a��\�@k��x�|��l�A!�������@:^`�t`�t`����^`��`�t`�b���\��I����h����@:����A!����@k>�Ⱦ�N����`�tv�*���A!��`�t��I�:�Jv�C��>�@k��`�t����M�Ba`�c`�b��>�d��=}������@Q��������@F����@�a`�c\J��?N�����`��x�/v� ���@�j`�h��ua`����I�C�Gh��S�B��j�@k�p�B�>���k=}����@Q�-����9�@F��B�@�a`�c\J�[?=x��x�u.��d��}�@�a`��`�ǀ�������B����@F����@Qa`�t`��a`�c\\��J��?=x��v��.V]��`����������@Fa`��\��������Y@dj��`�c ��Y�!`�h`��>�'�YJ�-x�4.���x�J��E�C�ua`����a`�t`��`�������@A�@P�Ch@���@]�Ch�@b��`�t�@p`��`��>�@v�Ch>N�@�}]��`��v�@�v�@�.V]��`����]��`����Ex�@���D���a`�b��>N�@���`��v�@���D���`����>�@��CSN�@��@���`��x�@�v�@ă�@��D�i`�h��ua`����I�@��@�h��@��Da��@��E ��@��Do>�A�CMN�AE�AU��`�tv�Aa��AW�E ��`�t��I�Aq�A�v�Az��Au�Do��`�t����A��E�a`�c`�b��J�A���A��D�?N�A��A���`��x�A�v�A̓�A��D�j`�h��ua`����I�B2"�BEv�B>��B6�F��`�t����BH�E�a`�c`�b���Bgh��Bs�E���B��F��B��Do>�B��B�J�B���B��D�?J�B�5�C*�B�`��5�B��B�]��`��`��v�B�.��d]��`��`�ǀ�#�B·�B��F�+5�B��B�`��x�B��B��F�]��`��`��bv�B��B��D�L`����a`�c`�ǁ�#�B��B��G +x�C�B��G `�ǀ���C�E���C$�Doa`�t`��`����`��`��#�B·�B��FɃ�C9�D��B��F�`��`��?J�CY+���C��C��D�@��d�D�D��D=`��`��>�D�D�N�D&�D/��]��`��`��5�DB�D1]��`��`��v�D1.��d]��`��`�ǀ�#�DB��D1�Hlw�D1.��d2�DF`��`�����D1�Hl]��`��`��]��`��`��J�DN5�Dl�DU]��`��`����DU�HM5�Df�Df`��v�Df��D^�H.L`����5�D]�D]`��x�D]��DU�H�b��Df�Ia`�c`�ǁ�#�Dl��D]�ID5�Dp�Dp`���Dp��5�D]�D]\x�D]��DU�H�����Df�I��Dp�I�a`��`��\����Dp�I��D]�ID`��`��=�@C�D:HJ ���D��D��Ei ��`�c`�����D��D��D� �D��D�`��? �DŁ����D��D��E,@~j�D�`�c �E �E,]��`AJ�E j�E]��`A ���E1�EL�Eg@dj�E2`�c �EU�Eg�EZ`�h`��J�Ec+J�J�K���HG�HM�Ku��`�c����H��H�����`������I�I��=`������I|�I�����`�b���I��I��J=i�I��J=�I�=`���J��`��`��?���K����K���* �I݁����J��J��J����J��J��J�=`���J���`��`��?���L$���L1��) �J������KB�KK�Ks@���KZ�Ks`�bJ�K]!v�K^.��`�b��LnL�f����A����� R`���D a`�c\`K>�M� N�U�[��`�t�O������a`�t�Ъ�`�t>�Ӫ� I�������Mv�u� ���L߀�`�t��a`�c`�b��>��|=}�&���L��'''���V�L�`����^�Ma`�c\J�mx�t���a`�t��?N������`�t����MN������`�tx�����L�`��������Ma`�t`�t��N�ǧ���`�tx�ԅ���Mހ�70a`�t`�t��I��x�ꆧ��N��7 a`��`�b��>��T=}������L���''���.�L�`����6�Ma`�c\J�Ex�L���a`�t��?N�^�i��`�t��k�NN�z��K`�t�AD��>����=���N�x��x�����N���7 a`��`�t��������Na`��`�t��I��x�����N���j��`�t a`��`�b��>�̩F=}�݁���L���''����L�`����$�M�a`�c\J�5x�<���a`�t��?=��N�Mx�S��N�M���a`��`�t��I�]�g��a�Mv�q�j�L�`����`�t��a`�c`�b��B�y?=����M�x�����L�`��������Ma`�t`�t��=����Nx������Mހ�70a`�t`�t��x�Ն���N��7 a`��`�b��I��"���NƓa`�c`�b��x������M��x�����Mɀ��a`��`�t��a`��`�b��>� �s=}����L��''���^�L�`����f�M�a`�c\?J�y���N�N����n`�t���Ma`�tI��x������QS���a`��`�b��>����J���ǀ�����L�?I��"������Mv�u����L߀�`�t��a`�c`�b��!�+x���L�`������$�Ma`�t`�t��j�.`�t a`�c`�b��>�4��=}�A��:�L��B''���n�L�`����v�Ma`�c\J���������L�`��?=����Mx������M���a`��`�t��N�ū�o`�t���Ma`�tI��x�腫��R����a`��`�b��>���"J��������L�`��?I�&!�0��*�Mv�:�3�L�`����`�t��a`�c`�b��>�B��=}�O��H�L��P''�����L�`������Ma`�c\J���������L�`��?J���怲����QS���R�� �L�`��h�F�F�G A��d�F�G �F#��`�t�F1$`���FD��`��`�b>�FP�G I�FTx�Fjv�Fc��FX�T ��`�t����v�Fw��Fl�S���`�t��a`��`�b��J�F*?E�F��F��F���`�t��F��S�x�F���F��T���v�F���F��S���`�t��a`��`�b����F��T�x�F���F��T����a`��`�t��>�F��GI�F�!�F�x�FԂ�F��T ����F��T�a`�t`�t��x�F���F��S�����F��T�a`�t`�t��a`�c`�b��J�F�*?J�G)i�K��K��LA��d�K��L�K���`A�K���`A`�tJ�K�x�K�x�K�v�K׀�K��U�i`�hFua`����qx�K�v�K��K��U�i`�hFua`����a`��`�t��VY"�1�78?;N(]�n`*���p`*N)`�b*N*]�r`*N+a[[N,a`�c`�s[N-`�t�N.[N/[N��[O�I0^[[`�s[�Z��1[2[3[[K>A>I��"����Wu�����Zv�π���Wj`����j��`��a`�c`�b��>N����`�`�����\��[v�(��#�Wj`����j�/`��j�@`��I�]x�o�a�X���a`�b��>M��5[���|�������X�����W���W؇�W��X +=����W���`*�X> B??N��B`�iK>M��5[���|x�����Wj��a]�g`�i����W؇�W��X +=���Y|��`�i�X> �`�c���`�c>=}�+��$�W��,�Y�a`�c\=��4�W�j�A`jB=��d�W��k���~�Y|v������Wj��`�h������W�B=����W���WɄ�W�J��[:[;`�s>=����W��Z��Z���W�=��W����X =��W����X =�Z�X a[=��W�)J��W���������A��� ���`�h�D a`�h]�g`�i�l a`�c\�~ `�b]�g`*`*>N(]�n`*���p`*N)`�b*N*]�r`*N+a[[N,a`�c`�s[N-`�t�N.[N/[N��[O��0^[[`�s[� ��1[2[3[[K>A>I��x������[F<'=a`��`�b��>=0����#����[F''>?I��"���[Q>I�1x�:��5�[F<'a`��`�b��>M�[5[�[�|�a���x������[F����[w����[h��[��[��\ +=��T�[���`*�\1B?=����[Qj��a`�h]�g`�i?I��"����[w��v��v������[F��]��`������`����j��`��a`�c`�b��>N����`�hx�&��!�[Fe$�Wj�0`��'Aj�A`��a`��`�h��N�iB`�iK>M��5[���|}�����[Qa`�h]�g`�i���]�a`�h]�g`�i��[��[��\ +=���]���`�i�\1��`�c����`�c>=}�Ă���[h���^�a`�c\=����[�j��`jBI�!� ��]�>=���[��%� �=�]�`�i�D�]���S�[hB??N�tB`�iK>M��5[���|}�����[Qa`�h]�g`�i����[Fa`�h]�g`�i��[��[��\ +=���_��`�i�\1��`�c����`�c>=}������[h���_�a`�c\=����[�j��`jBI������_>=}����[h�#x�A��<�[Fua`����''��a`�c\=��r�[�j�`jB?=����[��������_`�i����[F����[hB=����[���[���[�J��[:[;`�s>=����[��`��`���[�=��[����\ =�[����\ =� �\ a[=��[�)J��[���������A��������B`�i��`�h�� a`�c\`*>����N����`�t��Q��(�aZI�2!�@��6�a�j�C`�ta`�c`�b��>�L��J�����2����aZ����ae����ap?J���́ ����aZ����ae����ap������BA��-�B�8`�`�Z a`�c\]�g`*`*>N(]�n`*�i�p`*N)`�b*N*]�r`*N+a[[N,a`�c`�s[N-`�t�N.[N/[N��[O�0^[[`�s[�-�B1[2[3[[K>A>N�wB`�iK>M��5[���|x������b5��a]�g`�i����b���b��b� +=���c"��`�i�b� ��`�c��O`�c>=}�ˁ���b@���c�a`�c\=����b�j��`jB=���b��� �'�c"v�3��.�b5��`�h����8�b@B=����bb��b���b}J�B[:[;`�s>=����bb�dC�dK��b}=��b����b� =��b����b� =�-�b� a[=��b})J��bb���E�[�A��n��y`�`�� a`�c\]�g`*`*>N(]�n`*���p`*N)`�b*N*]�r`*N+a[[N,a`�c`�s[N-`�t�N.[N/[N��[O�[0^[[`�s[�n�1[2[3[[K>A>N��B`�iK>M��5[�Ӂ|x�ހ���d��a]�g`�i����eN��eZ�e� +=���e���`�i�e� ��`�c��O`�c>=}� ���d�� �fZa`�c\=���e?j�&`jB=��I�e?�^�2�d�e�v�p��k�d��`�h����u�d�B=����e��e?��e3J�[:[;`�s>=����e�f��g��e3=��eN���e� =��eZ���e� =�n�e� a[=��e3)J��e��������A��������`*���`�j]�g\\>N(]�n\��p\N)`�b*N*]�r\N+a[[N,a`�c`�s[N-`�t�N.[N/[O��0^[[`�s[����1[2[3[[K>A>N��+�`�j�-���7�\v�P��@�g�`����j�V`��M�k5[�k�|x�}�q�hx�')^'`�b]�g`�j����g���h�h4 +=��`�j�hT N����`�`�������\v�����hx`����j��`��N���Y`�hv�����i#��`�h��N����`��x� ��i#�� j�`��^� `��� `�`���=�&�#��A�g��I�i_�R�i�N�_�h� ]�g[x�o�j�i�� a]�g[�=���i#�������\v������g�`����j��`��=���i_v�����i#��`�h��=���i�x�����i#�� j� `��^� `��� `�`���=��&��&�g��.�i_�7�i�N�D�Q� ]�g[x�X�S�i�� a]�g[�M�d5[�d�|�q�[�v�]�g[�w�i����j���g���h�h4 +=��]��[�hT =����gDŽ�g��g�J��[:[;`�s>=����g��k��k���g�=��g����h4 =��h���h4 =���h4 a[=��g�)J��g�l%V�WM[)a=bd�g�l% �����*�_�E�[d�~�*���4 ���΁񀆁�`��j��`����������`��j�`�����.�[����]��`��j�:]��`�����j�{����`��j�u`������������`��j��`�������̀���`��j��`��� ��܃����`��j��`��� ���n����]��`��j�(]��`��� ��~������`��j��`��� ����À���`��j��`��� ��҃�����`��j��`������.����]�]��`�t`�cv�'x�j�`� �]��`�tj�!`��a]� `��]��`�t]� `�c]��`�t� �]�]��`�t`�c����L�t����`��_�'� � �1�?��A��V���fB`�i�q`�h�� a`�c\`*>��N���`�cK>���4=���n�x�"��� ��*�n�a]��`�t`�c��6`���P��`��>�S��=}�`��Y�n��~(����oHa`�c\J��j��`jJ���Á"����n�����nԂ���n��!����lA�!��l�,R`���8`�h�Z a`�c\`*>�cN�o�`�cK>����=����o��������o���`������`��>�ɇ.=}�ւ���o���(����p1a`�c\J�j�`jJ�2�9�"��P�o���\�oׂ�b�o��"�ۋ�CA�"���C� �#`�c��$`�h�A a`�c\`*>�J�CI�N"!v�`��S�p���`�b��x�z��m�p�<'=a`��`�b��>���=0����#x�Á���p�ua`����'�$'�%?I�!x�.v�)���p�`����@'Aa`��`�b��>�=�}=��C�p�x�_��R�p�?�j�m'#a`�h`�h��?O�����&^�'`�c[`������'`�c[`��>���I��%���_J��'�(?I��%��'_J��'�)?I��%��j��]��[ _J��'�*?J�'�+O���,^�'`�c[`�c`��`��_�+���'`�c[�4K`�c�BL`���Qc`��j`�e_>�_��I�e%�o��i�r�_J�u�|�r�_?N�*�2M`��$�2��>�r�#!�P��D�r�$�u'�-�h�r�`��'`��'�.���q�_a`��=}������p���'���r�����r�a`�c\J��+O����/a]��`��`�c`A��s�%�0]��`��`�c`A>�,�sN�:L`��N�L�1`��N�af`��N�yk`��N��W]��`��`�cN�����2`�b*N�А��3`�b*N����4`�b*=x����s��54������6`���K`�c\>���AG�$�,�tX�@j�@`��>�;=�T�t )=��n�s��u�rU`�����tdj��`��^`�c`��`��`��B����j��`��>��=���t )=���s����rU`����tdj� `�����s�^`�c`��`��`��B�)�=j�=`��>�8=�W�s� �d�rU`���v�tdj�}`������s�^`�c`��`��`��B����j��`��>��=���t*)=���s� ��rU`����tdj�`����.�s�^`�c`��`��`��B�?>�N=x�s5�l�b]��`��`�c�b�s� #�l�b�v%�b�s� 2�p`��`�c�b�v%]��`��`�c]��`��`�c���t�tX�{�tda`��`�c\��B��aa`��`�c\\�I��!���t >���=}�Ă���p���''�7����s�a`�c\?I� !��t >��l=}�(��!�p��)''�8��_�s�a`�c\?I�r"�{��v�s������s�J��+?N�����9`�h���u�����s�N�ٔ�l`�b!��S���wdN��i`�hx�%���p�?�0�wda`�h`�h��I�D!x�Sv�N�I�w�`����@'Aa`��`�b��=�b�w�x�n�i�w���x��v���|�w�`������'Aa`��`����^ ��`����`��`����]��`����`�t��`����]��`��[��`����`��`�h��?N������`�h���w�I��!�����s� =���x�x�����w�eu�����s� a`��`�h��?I��!x� v����x�`����@'Aa`��`�b��>��e=� �x�x�:�.�x���x�Yv�T�H�x�`������'Aa`��`����^ ��`����`��`����]��`����`�t��`����]��`��[��`����`��`�h��?N�}a`KI��!�����s� >����=���y���f���s� ����p�I�����t*>��C=� �y����'�:?J�J�_��u�u��q�s��x�w��~�x����y����s� ���w�4�����n��O`�c\>���mI��%�����z�`��>�٘@=}�ꂗ��p���'&� v���z�`��M[��`��v�*�$�z�`��P[��a`�c\>�G�g=}�X��Q�p��Y�z�a`�c\N�|���;]��`��`�c���rU]��`��`�c����p�'K^`�c`��`��]��`��`�cI��������{ZJ��j��`j?N�W]��`��`�cN�#�<]��`AN�7�=`�t=x�L�H�{Z]��`��`�c�54�T�T�D�U�6`���ZK`�c\>�a�CAG�g�o�|. ��j��`��>�|=���{� 5�ՙ�`�t���rU`�t���|: j��`��^`�c`��`��`�t#�����|z ����|z `�t`�tB����j��`��>��N���>]��`�c5�L�]��`�c��rU]��`�c�7�|: j�>`��^`�c`��`��]��`�c#���} �O��`�c���} ]��`�c]��`�cN�_�hV]��`A�s��`A�>N��}]��`�cv�����|� ]��`�c��Ex���}���a`�b��>N��=`�cv���}���`�c��>����N�����?]��`��`�c���rU]��`��`�c���~'�@^`�c`��`��]��`��`�cI�!� ��~.>�)��N�;�A�0`A�C�s~�P�~.]��`��`�ca]��`��`�c`AI�i!�s�m�~�>�|��=x�����}� �����~�`Aa`A\��??=���{����}� B��>��=x�5�� ]��`��`�c�� �{�#�� �K �� �{�2�`��`�c� �K ]��`��`�c]��`��`�c����|. �%�|: a`��`�c\��B�4aa`��`�c\\�I�I�[�M�{� >�d��=}�q��j�p��r''�A����p�a`�c\=���{� �?I�������{�>��P=}������p���''�B��0�p�a`�c\=�<�{��J��`A�?J�T�[yu�|�o�{� u����{�����{�4�����@��O`�c\>���?I��%������� `��>�ž=}�т���p���'&�� v������� `��M[��`��v������ `��P[��a`�c\>��;=}�.��'�p��/��� a`�c\�#�w�|�_A�C���_���`*��Y`�h��^]��]��`�t\>�؟_N�����D]��`��`�c���%����������=x�-��&�����&�Px�B�1�� ��J���a`�c]��`�t�`�ia]��`�t\��$�b�g�HA�E���H���`*��Y`�h��^`��\>���HN�ߟ��D]��`��`�c��%�����^����i=x�����t�Fx�8�'�'�� ��@���a`�c`��� a`�c\�"�%�K�`�IA�G�s�I���`*��Y`�h]��`��`�cJ��RN��]��`��`�c2��`��`�cN��]��`��`�c���(v�Հ����W`�c3j��]��`��I��!�������l>N��}]��]�#`��`�cv��v������l]��`��`�c�H]��]�#`��`�c�$]��]�#`��`�c��Ex��������a`�b��>N��]�#`��`�cv������]�#`��`�c��=x�������K��v�������D�6`���&v�������DK`�c�'a`��`�c\��?=x������K��j��`��j�`�ta`��`�c\��=x�1�����K��j�%`��RN�3]��]��`��`�c�3��]��`��`�c�>N�X}]��`Av�Xv�X��Q��V]��`A2]��`A��Ex�X���A��a`�b��>N�F=`Av���A��`A��=x�}��3�� ��RN�}]��`��`�c2�}`��`�c=x����}��ˀ�j��`��v��������L`��Ea`��`�c\��=x����}��ˀ�j��`�����Rx�P#v�ӆ�����l`�bJ���Tv� �����i`�hF����)v�9��1���i`�hF`�hua`���)a`��`�c\��I�i!�zv�u��m���i`�hFv����}���j`�hGa`�c`�b��=x����}��ˀ�j��`�����Rx��ԁTv�ꆢ����j`�hGv�������i`�hFua`���)a`��`�c\��?I�8"!�Tv�D��<���k`KH!%��v�w��o���k`KH`Z=x�ć�}��ˀ�j��`��x��v�Ά�����k`KHua`���)a`��`�c\��?N��]��`��`�c���(v��� ���W`�cIj�]��`��I��!�������>N��}]��]�#`��`�cv��v�������]��`��`�c�H]��]�#`��`�c�$]��]�#`��`�c��Ex����= ��a`�b��>N��]�#`��`�cv��= ��]�#`��`�c��=x����}��ˀ�v������� �6`���&v������� K`�c�'a`��`�c\��?��}���a]��`��`�c\����3�� a`��`�c\�������K�&�L�Q��A�I�a���p�`*�|Y`�h��^`��\>����N����W`�cv��������W`�c3N���J`��I��%��������]��`��`�c>���N��(�K`�cx�3�*���]��`��`�cbj�4`��a`�c`�c��I�H%�V��L��`��>�a��N�m�w�L`�cx���y���]��`��`�cbj��`��a`�c`�c��N�����M`�cx�������]��`��`�cbj��`��a`�c`�c��=������$��'�N����`��#%������`��$�:'���(���`��'`��#%�X��N��s`��$�u'�O�j��s`��'`��'#??=���3������������Y�������J�������(�����A�P��Ҫ���D`�c���Q]��`��]��`��`�c>��I� %������]��`��`�c>�,��I�2v�;�6���]��`��`�c�R`�b�*J�D+?>N�f}]��`��v�f��f���]��`����Ex�f���=��a`�b��>N�^L`��v�u���=��`����>�u��I�}x�������]��`��`�c�S������a`�c`�b�+>����N�����T]��`��`�cRN��]��`��`�c2��`��`�c>N��}]��`��v��v�������]��`��`�c�U]��`���,]��`����Ex�ׅ��,��a`�b��>N���6`��v���,��`����I��!x�������Ā������a`�c`�b�.=x���������� ���x�����]��`��`�cb�����a`�c`�c��a`��`�c\��?�����I�-v�>��1���R`�b�*J�G+?>N�{}]��`�cv�{v�{��n��]��`�c��]��`�c��Ex�{���k��a`�b��>N�eK`�cv�����k��`�c��>����I��!���)������J��+?J��������?J�������]��`��`�c?J�+�)�S�X��A�V��e���n�+`�c`�b>�v��I�z""����~��S��)����S`�ca`�c`�b�/��*����S`�ca`�c`�b�/J��)?I��"%������S`�c`��%������S`�c`��J��)?I��%�����S`�c]��`�c>��AJ�x�)�"��S]��`�c�Wj�/a`�c`�b!aa`�c`�b`�b�0?I�E%�P�I��S`�c]��`��`�c>�i��J�ox��v�}�v��S]��`��`�c��]��`�c���Wj��a`�c`�b!aa`�c`�b`�b�0?J��*��l�n�o�p��l�A������4��  �*��d���4��-�0�� ���X�*`K��T�7�2��-� Ap�2� �BR]��`�t�N�$`�h�x a`�c\`*>��� I��x��������<'=a`��`�b��>���==}����������#������'�$'>a`�c\J�j�4`*?N�E�K��`�t�N�V�_V]��`A�j��`A�N�t����]��`��RN]��`����`�����aC��x���������v����������`�t�2a`��`�b��A>��N�����Y`�b*N�Ն���`�t�����N����Z`�tx�����a`�t��N� � �[`�tv��������`�t�2N�&�+��`�tx�3��-���b5�9�4`�t��4��5�9�9`�t��9��x�9�4��J ���a`��`�t���4��J a`�t`�t�3I�B"�K�F��* j�N`�t"a`�c`�b���Z�U��* j�]`�t#a`�c`�b��>�b�xB�j?I�~������* j��`�t$a`�c`�b��>���:=}����������''�\������x��������]�a`��`�t�4a`�c\=������)>�A�=��I����[�V��* j�^`�t%a`�c`�b��N�����^`�tx�����a`�t��N�����_`�tx�����a`�t��AC��x�ǃ������v�Ѐ�������`�t�2a`��`�b��>�؊x=����* x�퀈����b5���`�t�����5���`�t�����x������Q ���a`��`�t������Q a`�t`�t�3I��"����* j� `�t$a`�c`�b��x�#�������a`��`�b��>�(�T=�2���x�I��C���]�a`��`�t�4I�["�d�_��* j�g`�t"a`�c`�b���s�n��* j�v`�t#a`�c`�b��>�{��=���� x��������]�a`��`�t�4B��I��""������* j��`�t&a`�c`�b��x������� ���a`��`�b��x������� ���a`��`�b��>���=����� x� �����]�a`��`�t�4I�"�(�#��* j�+`�t%a`�c`�b��x�B�4��� ���a`��`�b��>�G�r=�Q��� x�g��a���]�a`��`�t�4?I�~������B��?I��x����������a`��`�b��>���'=}�Â�������''�`������x� �����]�a`��`�t�4a`�c\B�?N�1�=c`���F�6��T�����\����c���N�|����`�t���M����P I��x������}���a`��`�b��>�ŌM=}�Ԃ�������''�������x�'��!��π��)��}a`��`�t��a`�c\B�??I�Sx�b�W��� ���a`��`�b��>�h��=}�w��p����x''�a����������� a`�c\=���� ����� I��x����� ���a`��`�b��>���=}�$������%''�b��t����|��� a`�c\=���� ����� ?N�����c`���̂6������x����������a`��`�t������ N��d`�hK>��T=�%��N�;��A���V`���p��`��>�s��=}����{�����(�����a`�c\B��N�Ȏ�l`�b!�؁S����N=����Nx������?�(��Na`�h`�h��I�>x�R�B��N<'=a`��`�b��>�g��=}�v��o����w''�e������x����������a`��`�t��a`�c\B��?N��`��v�� ��N`����I�#!x�-�(���@'Aa`��`�b��>�<��=�D���x�I�D�����'Aa`��`����=�W��Nx�y�i��N�������^ ��`����`��`����]��`����`�t��`����]��`��[��`����`��`�h��?I��x�������L������P a`�c`�b��>���I=}�ς�������''�f��$�����,���a`�c\B�;?N�S�[�1`�h�]��NI�rx�{�v���@'�ga`��`�b��>���==�����x�����N��x��������x�2v�+�&�����`�t���]�a`��`�t�4^`�t`�t`����^ ��`����`��`����]��`����`�t��`����]��`��[��`����`��`�h��?N�G�O=`���_���h��P �u����~��N���0+�����4�����e��O`�c\>�œdI��%������\`��>��7=}����������'&� v����\`��M[��`����'���a`�c\>�>�^=}�O��H����P��\a`�c\I�l!�x�p��>����=x�������.������`��a`A\��=x�������L������P a`��`�b��?J����y������.+�������3�Ŗʜ!A�F�Ϝ!��^`�����`*�Y`�hj`�e��J`��j`�e\>��!I�""!�.��&���!v�B�:���`�h4`�b�7>�N��=0�T�Z#�u���`�h'Y'�h?I��!��������>���{N�ė��i]��`��x�������`���j'��a`��]��`���8I��v��v����E��`�����R`�b�9=x������E�ka`���:?>N�-}]��`��v�-��-��E]��`����Ex�-���̀�a`�b��>N��l`��v�4���̀�`����>�4�w=x�C��<����F'�ma`�c\�"=x�]��V����n��e��^`�c\�;>����=x���������F'�oa`�c\�"=x�΀������F�݂>a`�c\�"=x���������n^`�c\�;>N�}]��`Av�v������V]��`A2]��`A��Ex�������a`�b��>N� =`Av�&������`A��>�&� N�0�<c`��v�F��>��YL`��EN�T�X��`�hv�b��Z��Yj`�hGI��!���L�����|>���2=0����#������'�$�+'�p����|'�q?I�8�Gv�@��<�����`���?'=a`�c`�b��>�U��=0�]�c#������'�$��'�r������?=x�ယ�����F�����|a`�c\�"=x��������F'�sa`�c\�"I�Q!�]��U���>�f��=��n���u���t�T�����������`�h?I��!x��v��������`����@'Aa`��`�b��>����=������x�ˇ�������x��v�݇�����`������'Aa`��`����^ ��`����`��`����]��`����`�t��`����]��`��[��`����`��`�h��?=x���������F�����a`�c\�"=x��� ����n^`�c\�;���E�i��� �4�t �: �7�B �҂���u�4`��j��`��'�8�C �P�Z���v`�tj�V`�t#�9�D �������w`�tj��`�t"�:�E ���ɀ��x`�tj��`�t(�;�F ������y`�tj��`�t%�<�G �� ���z`�tj�`�t �=�H �@�M���{`�tj�I`�t$�>�I �m�}���|`�tj�y`�t&�?�J �������}`�tj��`�t �L ����� A�~�Ӄ ���)`��`�b>�� J��x���M�����P���a`��`�b���M �y�}��A��������)`��`�t>����N�����`�t�E��������`�t�x��������v� �������`�t��a`��`�b�������x���������a`��`�t��>���N�$�&��`�tx�/��(�������:���a`�t`�t��I�B"x�H��F��S��7a`��`�b��x�|x�nj�R`��'����y��Sa`�t`�t����j�`�t(a`��`�b��>����J��������?=������x�������΀�x�������S��j��`�t a`�t`�t��a`��`�t��I���ȁ����Γa`�c`�b��J��v�܀�������`�t��?J��x�픀�a`�t���N �ӆڏsA����s��f`�h�L`��`��>� �s I�!�&v�����ŀ�`���?'=a`�c`�b��>�4��=0�:�@#��[��Ł�g���'��?I��v�������Ł�`�b�@>���=0����#�����Ł�����'��?I�v�)����ŀ�`�b��>�3��=0�s�y#�����Ł�����'��?I��v�������ŀ�`�b��>����=0��#��>��Ł�J���'��?I��x��v��������`������'A^`��`�t`�b��>���=0����#�����Ł�����'��?N�!�,��`�tx�>v�9��.���`������'A^`��`�t`�t�AI�N�]��R��Gx�`���a`�t��a`�c`�b��>�d��=0�j�p#�����Ł�����'��?N���c`��x�v� �����`�����������G^`�t`�t`����N�1�:��`�t�<�M��M���I�]x�j��a��+���a`��`�b��>�p�[I�vv����z���R`�b�9>����=0����#�����Ł�����'��?I������+v�����ဢ`�t��a`�c`�b��>�&��=0�.�4#��O��Ł�[���'��?@x�Ä����+��v�у����ဢ`�t��a`��`�b������N�����`�tx�������������+a`�t`�t��N��"��`��x�)'����x�Ix�7��+��;��7a`�t`���B���'��^`�t`��`���Ca`��`����I�^"x�n��b��;��7 a`��`�b��x����y��;��7~a`��`�b��>����=�����p$��'��x�̓�����b�����+a`�t`���D'�������p'��?=0����#����Ł�'���$�V'����N��p?J�_��f����O �� ��A���6���;��`�h`�b>�@��I�Dv�L��H��Ā�`�b��J�V*?I�fv�n��j��Ā�`�b��J�{*?I��!v�������Ā�`�b��J��*?N����`��v��������`����I��!x�Ё����6@'Aa`��`�b��J��*?J��)�P �5�:�-A���E�-�J��`�h�V`�h`�b>�\�-@!v�o��h�����`�b���g�z@!v����������`�b������@!v����������`�b������@!v��������`�b������@x��v��������`����@'Aa`��`�b���ّ�J��x�x�������ua`������x� �����ua`����^`��`�t`�b���Q ���œ�A���ۓ���B]��`�t`�t>�퓥E��������`�t�x��������v� ����ހ�`�t�2a`��`�b�������x���������a`��`�t��>���N�"�'��`�tx�.��)���b��/���a`�t`�t�3I�7"""!�@��;��r7 a`�c`�b��!�P��K��r7 a`�c`�b��!�`��[��r7 a`�c`�b��!�p��k��r7 a`�c`�b��>�y��J�������r?J��x�����a`�t���R ���UA�����U�`��`��>��UI� "v�����c�R`�b�9x�$����c@'Aa`��`�b��J�3��:��c?J�Bx�N��I��c��'Aa`��`�����S �x�}��A����������`�h`�bJ��""v���������`�b��v���������`�b�@v�ƀ������`�b�E�T �J�O��A���\���b��`�h�lY`�h`�h>�u��I�y����}���J�������x?@v�������`�h4`�b�7����I��"v��u�������x��`�b��v������x`�h��`�b��>����=�����x��m��v����x`�h��`���?��#v�#���x`�h��`�b�@v�6�2��x`�h��`���F+`����#v�Y�U��x`�h��`�b�@v�l�h��x`�h��`���G+`����#v������x`�h��`�b�@v������x`�h��`�t�H+`�tv������x`�h`����?I�!v����x`�h4`�b�7J�'�.��x`�h?I�6!�Iv�B�:���`�h��`���?v�P�L��x`�h��`���?a`�c`�b��>�X�lJ�^�e��x`�h?I��!��v������x`�h��`�b�@v�������`�h��`�b�@a`�c`�b�/J������x`�h?I��v�����x`�h��`�b�@>���I�""!�(v����x`�h��`���Fv�3�+���`�h��`���Fa`�c`�b��!�^x�Pv�K�G��x`�h��`���G��a`���Ix�nv�i�a���`�h��`���G��a`���Ia`�c`�b��!��v������x`�h��`�t�Hv�������`�h��`�t�Ha`�c`�b��>����J������x`�h??=������x�������`�h��a`�h�JN�����]��`��RN��]��`����`��v�������`�h��]��`���������yI�v�����d��`�b�K=x�)��$��d�ka`���:?=��9��xx�C�?��x`�h��a`�h�JN�Z�a��]��`��RN�c]��`���c��`��v�k�g��x`�h��]��`������c��1I�|"v���������`�b�Kv��v���������`�����R`�b�9=x��������ka`���:?N�Ŝ���`�t�AC��"x�߄����̀�v�悜���d��`�t�2a`��`�b��x�������̀�v���������`�t�2a`��`�b��>��SI� !�x�����db�����a`�t`���3x�&�� ��b��'���a`�t`���3a`�c`�b��>�/�BB�7?=��H���x�M��H��̀��a`��`�t��I�W�a��[���v�i��d��d��`�t�2a`�c`�b��>�q��I�w����{���v���������`�t�2a`�c`�b��>����J�����m'��?J���āmx��x�Ճ������������a`�t]��`���L��'A^`��`���MI��x������̀��a`��`�b��>���N����`�N��PE�,�5�7��`�tx�Ev�>��9��d��`�t�2�]��G���a`��`�t�4x�P��N������a`��`�b����W���x�U��W����]�a`��`�t�4>�Z�{=x�i��b���F'��a`�c\�R=x�������偪x���������������a`�t]��`���L'A^]��[`��\�SJ�����mx�Dž�����ua`���T>�ݞ�J������x`�h �I�)�3�����������F���[�I  �U�� �W�^�i�_�W ������A��������`�h]�g`�i`�i>N(]�n`�i���p`�iN)`�b*N*]�r`�iN+a[[N,a`�c`�s[N-`�t�N.[N/[N��[O��0^[[`�s[����1[2[3[[K>A>I��x��������<'a`��`�b��>N�܁�`�`���������K>M� 5[� �|x�������a]�g`�i��������'��a +=���� ��`�i��� B�-`�c�4I`�c>=��?�� +B?I�X"x�`��\���<'��a`��`�b��x�x��t���<'��a`��`�b��>=����� ���Y������B?=0�����W$��'��������=�������� ����J��[:[;`�s>=��������)��1����=�������a =���'����a =����a a[=����)J�����Y ����A���U� ����`�h]�g`�i`�i>N(]�n`�i��p`�iN)`�b*N*]�r`�iN+a[[N,a`�c`�s[N-`�t�N.[N/[O�0^[[`�s[� �1[2[3[[K>A>@"x�*��&���<'��a`��`�b��x�B��>���<'��a`��`�b���&�SN�\�c��`�Y�e�[M��5[���|x������� ��������a`�h]�g`�\�^���-���9��j +N�y����`�\��`�\��� M��5[���|x������j� a]�g`�_�a���-���9��j +N������`�_��`�_��� I��!��v���������`�t�cj��`�t)a`�c`�b��>=�����+B?M�5[��|x�,�#�����a]�g]��]��`�t�f���-���9��j +N����]��]��`�t��]��]��`�t��� N�<�H��`�t�I�O�gv�`�S�����`�t�2�a`�c`�b��>N�w�|��]��`�tx���~���b�a`�t]��`�t�3I��%������ `�i>=��������� `�iB??>N��}]��]��`�tv�������]��]��`�t��Ex����|��a`�b��>N����]��`�tv����|��]��`�t��>=�����x���������v��������`�t�2a`��`�t��N����`�i��h�)���N�=�DS`�t�>N�p}]��`�iv�p&�p�c���]��`�i]��`�i��Ex�p��z��a`�b��>N�T��`�iv����z��`�i��>=x������H������hx������h��v���������`�t�2a`��`�t�������^`�t`�t]��`�t`�t\�i=����hx������h��v���������`�t�2a`��`�t��=��������HB=�����������J�[:[;`�s>=��������� ������=���-����j =���9����j =� ��j a[=���)J�����Z �ˆ҇�A���ڇ���`��`��>�臨N������`����lN��(��`�tx�/��*�Ş����;�ŷ^`��`�t`�t�mI�Ix�[��M��ʀ��a`��`�b��J�`��g�Ş?J�ox�{��v�Ş��x�������ʀ�v������ŷ��`�t��a`��`�t��^`�t`�t`�����[ �u�|�?A�����?��`��`��>���?N������`�����lN�È���`�tx�؀���Ƶ��������^`��`�t`�t�mI��x������စ�a`��`�b��J� '?J�x�"���Ƶ�����/���^`�t`�t`�����\ �Љ׋-A�ߋ-����`������`�����`��j`�e`��>� �-N����`���*�lN�?�J��`��#x�R��L�ǚ@��[���a`��`�b��'��m���`��I�z����~�Dz>����J��$������ǚ�����恊��Ǧ?N������`��#x�ҁ���Ǧ@������a`��`�b��'������`��J��$�+���ǚ�� ��恋�Ǧ����Z�%�Dz`���] �ϋ֍A��������]��`��`��>���N�� ��`�N� �PN�!�+��`��'>N�D}]��`��v�D��D���]��`����Ex�D���4��a`�b��>N�<��`��v�K���4��`����>�K��=5�Q�Q`�N��Q�� R=x�`��Q�ɪ�F��f�� a`�c\�R=x�y��Q�ɪ�F���Ɂa`�c\�R��Q�ɪ=����� #x������Ɂ@���la`��`�b��'�Ԃl`��J��x������� ua`���T �g������ŁƘ�~���g cfile:///github/home/.pub-cache/hosted/pub.dartlang.org/package_config-2.0.2/lib/package_config.dart��// Copyright (c) 2019, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. /// A package configuration is a way to assign file paths to package URIs, /// and vice-versa. /// /// This package provides functionality to find, read and write package /// configurations in the [specified format](https://github.com/dart-lang/language/blob/master/accepted/future-releases/language-versioning/package-config-file-v2.md). library package_config.package_config; import 'dart:io' show File, Directory; import 'dart:typed_data' show Uint8List; import 'src/discovery.dart' as discover; import 'src/errors.dart' show throwError; import 'src/package_config.dart'; import 'src/package_config_io.dart'; export 'package_config_types.dart'; /// Reads a specific package configuration file. /// /// The file must exist and be readable. /// It must be either a valid `package_config.json` file /// or a valid `.packages` file. /// It is considered a `package_config.json` file if its first character /// is a `{`. /// /// If the file is a `.packages` file (the file name is `.packages`) /// and [preferNewest] is true, the default, also checks if there is /// a `.dart_tool/package_config.json` file next /// to the original file, and if so, loads that instead. /// If [preferNewest] is set to false, a directly specified `.packages` file /// is loaded even if there is an available `package_config.json` file. /// The caller can determine this from the [PackageConfig.version] /// being 1 and look for a `package_config.json` file themselves. /// /// If [onError] is provided, the configuration file parsing will report errors /// by calling that function, and then try to recover. /// The returned package configuration is a *best effort* attempt to create /// a valid configuration from the invalid configuration file. /// If no [onError] is provided, errors are thrown immediately. Future loadPackageConfig(File file, {bool preferNewest = true, void Function(Object error)? onError}) => readAnyConfigFile(file, preferNewest, onError ?? throwError); /// Reads a specific package configuration URI. /// /// The file of the URI must exist and be readable. /// It must be either a valid `package_config.json` file /// or a valid `.packages` file. /// It is considered a `package_config.json` file if its first /// non-whitespace character is a `{`. /// /// If [preferNewest] is true, the default, and the file is a `.packages` file, /// as determined by its file name being `.packages`, /// first checks if there is a `.dart_tool/package_config.json` file /// next to the original file, and if so, loads that instead. /// The [file] *must not* be a `package:` URI. /// If [preferNewest] is set to false, a directly specified `.packages` file /// is loaded even if there is an available `package_config.json` file. /// The caller can determine this from the [PackageConfig.version] /// being 1 and look for a `package_config.json` file themselves. /// /// If [loader] is provided, URIs are loaded using that function. /// The future returned by the loader must complete with a [Uint8List] /// containing the entire file content encoded as UTF-8, /// or with `null` if the file does not exist. /// The loader may throw at its own discretion, for situations where /// it determines that an error might be need user attention, /// but it is always allowed to return `null`. /// This function makes no attempt to catch such errors. /// As such, it may throw any error that [loader] throws. /// /// If no [loader] is supplied, a default loader is used which /// only accepts `file:`, `http:` and `https:` URIs, /// and which uses the platform file system and HTTP requests to /// fetch file content. The default loader never throws because /// of an I/O issue, as long as the location URIs are valid. /// As such, it does not distinguish between a file not existing, /// and it being temporarily locked or unreachable. /// /// If [onError] is provided, the configuration file parsing will report errors /// by calling that function, and then try to recover. /// The returned package configuration is a *best effort* attempt to create /// a valid configuration from the invalid configuration file. /// If no [onError] is provided, errors are thrown immediately. Future loadPackageConfigUri(Uri file, {Future Function(Uri uri)? loader, bool preferNewest = true, void Function(Object error)? onError}) => readAnyConfigFileUri(file, loader, onError ?? throwError, preferNewest); /// Finds a package configuration relative to [directory]. /// /// If [directory] contains a package configuration, /// either a `.dart_tool/package_config.json` file or, /// if not, a `.packages`, then that file is loaded. /// /// If no file is found in the current directory, /// then the parent directories are checked recursively, /// all the way to the root directory, to check if those contains /// a package configuration. /// If [recurse] is set to [false], this parent directory check is not /// performed. /// /// If [onError] is provided, the configuration file parsing will report errors /// by calling that function, and then try to recover. /// The returned package configuration is a *best effort* attempt to create /// a valid configuration from the invalid configuration file. /// If no [onError] is provided, errors are thrown immediately. /// /// Returns `null` if no configuration file is found. Future findPackageConfig(Directory directory, {bool recurse = true, void Function(Object error)? onError}) => discover.findPackageConfig(directory, recurse, onError ?? throwError); /// Finds a package configuration relative to [location]. /// /// If [location] contains a package configuration, /// either a `.dart_tool/package_config.json` file or, /// if not, a `.packages`, then that file is loaded. /// The [location] URI *must not* be a `package:` URI. /// It should be a hierarchical URI which is supported /// by [loader]. /// /// If no file is found in the current directory, /// then the parent directories are checked recursively, /// all the way to the root directory, to check if those contains /// a package configuration. /// If [recurse] is set to [false], this parent directory check is not /// performed. /// /// If [loader] is provided, URIs are loaded using that function. /// The future returned by the loader must complete with a [Uint8List] /// containing the entire file content, /// or with `null` if the file does not exist. /// The loader may throw at its own discretion, for situations where /// it determines that an error might be need user attention, /// but it is always allowed to return `null`. /// This function makes no attempt to catch such errors. /// /// If no [loader] is supplied, a default loader is used which /// only accepts `file:`, `http:` and `https:` URIs, /// and which uses the platform file system and HTTP requests to /// fetch file content. The default loader never throws because /// of an I/O issue, as long as the location URIs are valid. /// As such, it does not distinguish between a file not existing, /// and it being temporarily locked or unreachable. /// /// If [onError] is provided, the configuration file parsing will report errors /// by calling that function, and then try to recover. /// The returned package configuration is a *best effort* attempt to create /// a valid configuration from the invalid configuration file. /// If no [onError] is provided, errors are thrown immediately. /// /// Returns `null` if no configuration file is found. Future findPackageConfigUri(Uri location, {bool recurse = true, Future Function(Uri uri)? loader, void Function(Object error)? onError}) => discover.findPackageConfigUri( location, loader, onError ?? throwError, recurse); /// Writes a package configuration to the provided directory. /// /// Writes `.dart_tool/package_config.json` relative to [directory]. /// If the `.dart_tool/` directory does not exist, it is created. /// If it cannot be created, this operation fails. /// /// Also writes a `.packages` file in [directory]. /// This will stop happening eventually as the `.packages` file becomes /// discontinued. /// A comment is generated if `[PackageConfig.extraData]` contains a /// `"generator"` entry. Future savePackageConfig( PackageConfig configuration, Directory directory) => writePackageConfigJsonFile(configuration, directory); ��NN<KH��''))*"%$1)9!IEE19MHCBP7L?@3MB049!?'P6E>/MHCBBG9/E>/9:?6A@=B4P7L?@57"2M;57529BGP7L?@6>HK:4757729BGBG(/E>/9?6A@=B4P7L?@6:62#;>EB33HE =:*package:package_config/package_config.dartifile:///github/home/.pub-cache/hosted/pub.dartlang.org/package_config-2.0.2/lib/package_config_types.dart��// Copyright (c) 2019, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. /// A package configuration is a way to assign file paths to package URIs, /// and vice-versa. /// /// {@canonicalFor package_config.InvalidLanguageVersion} /// {@canonicalFor package_config.LanguageVersion} /// {@canonicalFor package_config.Package} /// {@canonicalFor package_config.PackageConfig} /// {@canonicalFor errors.PackageConfigError} library package_config.package_config_types; export 'src/package_config.dart' show PackageConfig, Package, LanguageVersion, InvalidLanguageVersion; export 'src/errors.dart' show PackageConfigError; NN<K:3+1.-!J20package:package_config/package_config_types.dartbfile:///github/home/.pub-cache/hosted/pub.dartlang.org/package_config-2.0.2/lib/src/discovery.dart��// Copyright (c) 2019, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. import 'dart:io'; import 'dart:typed_data'; import 'package_config_io.dart'; import 'errors.dart'; import 'package_config_impl.dart'; import 'package_config_json.dart'; import 'packages_file.dart' as packages_file; import 'util_io.dart' show defaultLoader, pathJoin; final Uri packageConfigJsonPath = Uri(path: '.dart_tool/package_config.json'); final Uri dotPackagesPath = Uri(path: '.packages'); final Uri currentPath = Uri(path: '.'); final Uri parentPath = Uri(path: '..'); /// Discover the package configuration for a Dart script. /// /// The [baseDirectory] points to the directory of the Dart script. /// A package resolution strategy is found by going through the following steps, /// and stopping when something is found. /// /// * Check if a `.dart_tool/package_config.json` file exists in the directory. /// * Check if a `.packages` file exists in the directory. /// * Repeat these checks for the parent directories until reaching the /// root directory if [recursive] is true. /// /// If any of these tests succeed, a `PackageConfig` class is returned. /// Returns `null` if no configuration was found. If a configuration /// is needed, then the caller can supply [PackageConfig.empty]. Future findPackageConfig(Directory baseDirectory, bool recursive, void Function(Object error) onError) async { var directory = baseDirectory; if (!directory.isAbsolute) directory = directory.absolute; if (!await directory.exists()) { return null; } do { // Check for $cwd/.packages var packageConfig = await findPackagConfigInDirectory(directory, onError); if (packageConfig != null) return packageConfig; if (!recursive) break; // Check in parent directories. var parentDirectory = directory.parent; if (parentDirectory.path == directory.path) break; directory = parentDirectory; } while (true); return null; } /// Similar to [findPackageConfig] but based on a URI. Future findPackageConfigUri( Uri location, Future Function(Uri uri)? loader, void Function(Object error) onError, bool recursive) async { if (location.isScheme('package')) { onError(PackageConfigArgumentError( location, 'location', 'Must not be a package: URI')); return null; } if (loader == null) { if (location.isScheme('file')) { return findPackageConfig( Directory.fromUri(location.resolveUri(currentPath)), recursive, onError); } loader = defaultLoader; } if (!location.path.endsWith('/')) location = location.resolveUri(currentPath); while (true) { var file = location.resolveUri(packageConfigJsonPath); var bytes = await loader(file); if (bytes != null) { return parsePackageConfigBytes(bytes, file, onError); } file = location.resolveUri(dotPackagesPath); bytes = await loader(file); if (bytes != null) { return packages_file.parse(bytes, file, onError); } if (!recursive) break; var parent = location.resolveUri(parentPath); if (parent == location) break; location = parent; } return null; } /// Finds a `.packages` or `.dart_tool/package_config.json` file in [directory]. /// /// Loads the file, if it is there, and returns the resulting [PackageConfig]. /// Returns `null` if the file isn't there. /// Reports a [FormatException] if a file is there but the content is not valid. /// If the file exists, but fails to be read, the file system error is reported. /// /// If [onError] is supplied, parsing errors are reported using that, and /// a best-effort attempt is made to return a package configuration. /// This may be the empty package configuration. Future findPackagConfigInDirectory( Directory directory, void Function(Object error) onError) async { var packageConfigFile = await checkForPackageConfigJsonFile(directory); if (packageConfigFile != null) { return await readPackageConfigJsonFile(packageConfigFile, onError); } packageConfigFile = await checkForDotPackagesFile(directory); if (packageConfigFile != null) { return await readDotPackagesFile(packageConfigFile, onError); } return null; } Future checkForPackageConfigJsonFile(Directory directory) async { assert(directory.isAbsolute); var file = File(pathJoin(directory.path, '.dart_tool', 'package_config.json')); if (await file.exists()) return file; return null; } Future checkForDotPackagesFile(Directory directory) async { var file = File(pathJoin(directory.path, '.packages')); if (await file.exists()) return file; return null; } ��NN<!##.4O4((:DQ*P;H-HEABA!=# O5$,7!7-2)&(>% ?Q;$<1 82#QO,QQJE14FJ#H@#BI K(C:()package:package_config/src/discovery.dart_file:///github/home/.pub-cache/hosted/pub.dartlang.org/package_config-2.0.2/lib/src/errors.dart��// Copyright (c) 2019, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. /// General superclass of most errors and exceptions thrown by this package. /// /// Only covers errors thrown while parsing package configuration files. /// Programming errors and I/O exceptions are not covered. abstract class PackageConfigError { PackageConfigError._(); } class PackageConfigArgumentError extends ArgumentError implements PackageConfigError { PackageConfigArgumentError(Object? value, String name, String message) : super.value(value, name, message); PackageConfigArgumentError.from(ArgumentError error) : super.value(error.invalidValue, error.name, error.message); } class PackageConfigFormatException extends FormatException implements PackageConfigError { PackageConfigFormatException(String message, Object? source, [int? offset]) : super(message, source, offset); PackageConfigFormatException.from(FormatException exception) : super(exception.message, exception.source, exception.offset); } /// The default `onError` handler. Never throwError(Object error) => throw error; "NN<MI;$7$I+7D;$N(?F#/&package:package_config/src/errors.dartgfile:///github/home/.pub-cache/hosted/pub.dartlang.org/package_config-2.0.2/lib/src/package_config.dart��// Copyright (c) 2019, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. import 'dart:typed_data'; import 'errors.dart'; import 'package_config_impl.dart'; import 'package_config_json.dart'; /// A package configuration. /// /// Associates configuration data to packages and files in packages. /// /// More members may be added to this class in the future, /// so classes outside of this package must not implement [PackageConfig] /// or any subclass of it. abstract class PackageConfig { /// The largest configuration version currently recognized. static const int maxVersion = 2; /// An empty package configuration. /// /// A package configuration with no available packages. /// Is used as a default value where a package configuration /// is expected, but none have been specified or found. static const PackageConfig empty = SimplePackageConfig.empty(); /// Creats a package configuration with the provided available [packages]. /// /// The packages must be valid packages (valid package name, valid /// absolute directory URIs, valid language version, if any), /// and there must not be two packages with the same name. /// /// The package's root ([Package.rootUri]) and package-root /// ([Package.packageUriRoot]) paths must satisfy a number of constraints /// We say that one path (which we know ends with a `/` charater) /// is inside another path, if the latter path is a prefix of the former path, /// including the two paths being the same. /// /// * No package's root must be the same as another package's root. /// * The package-root of a package must be inside the pacakge's root. /// * If one package's package-root is inside another package's root, /// then the latter package's package root must not be inside the former /// package's root. (No getting between a package and its package root!) /// This also disallows a package's root being the same as another /// package's package root. /// /// If supplied, the [extraData] will be available as the /// [PackageConfig.extraData] of the created configuration. /// /// The version of the resulting configuration is always [maxVersion]. factory PackageConfig(Iterable packages, {Object? extraData}) => SimplePackageConfig(maxVersion, packages, extraData); /// Parses a package configuration file. /// /// The [bytes] must be an UTF-8 encoded JSON object /// containing a valid package configuration. /// /// The [baseUri] is used as the base for resolving relative /// URI references in the configuration file. If the configuration /// has been read from a file, the [baseUri] can be the URI of that /// file, or of the directory it occurs in. /// /// If [onError] is provided, errors found during parsing or building /// the configuration are reported by calling [onError] instead of /// throwing, and parser makes a *best effort* attempt to continue /// despite the error. The input must still be valid JSON. /// The result may be [PackageConfig.empty] if there is no way to /// extract useful information from the bytes. static PackageConfig parseBytes(Uint8List bytes, Uri baseUri, {void Function(Object error)? onError}) => parsePackageConfigBytes(bytes, baseUri, onError ?? throwError); /// Parses a package configuration file. /// /// The [configuration] must be a JSON object /// containing a valid package configuration. /// /// The [baseUri] is used as the base for resolving relative /// URI references in the configuration file. If the configuration /// has been read from a file, the [baseUri] can be the URI of that /// file, or of the directory it occurs in. /// /// If [onError] is provided, errors found during parsing or building /// the configuration are reported by calling [onError] instead of /// throwing, and parser makes a *best effort* attempt to continue /// despite the error. The input must still be valid JSON. /// The result may be [PackageConfig.empty] if there is no way to /// extract useful information from the bytes. static PackageConfig parseString(String configuration, Uri baseUri, {void Function(Object error)? onError}) => parsePackageConfigString(configuration, baseUri, onError ?? throwError); /// Parses the JSON data of a package configuration file. /// /// The [configuration] must be a JSON-like Dart data structure, /// like the one provided by parsing JSON text using `dart:convert`, /// containing a valid package configuration. /// /// The [baseUri] is used as the base for resolving relative /// URI references in the configuration file. If the configuration /// has been read from a file, the [baseUri] can be the URI of that /// file, or of the directory it occurs in. /// /// If [onError] is provided, errors found during parsing or building /// the configuration are reported by calling [onError] instead of /// throwing, and parser makes a *best effort* attempt to continue /// despite the error. The input must still be valid JSON. /// The result may be [PackageConfig.empty] if there is no way to /// extract useful information from the bytes. static PackageConfig parseJson(Object? jsonData, Uri baseUri, {void Function(Object error)? onError}) => parsePackageConfigJson(jsonData, baseUri, onError ?? throwError); /// Writes a configuration file for this configuration on [output]. /// /// If [baseUri] is provided, URI references in the generated file /// will be made relative to [baseUri] where possible. static void writeBytes(PackageConfig configuration, Sink output, [Uri? baseUri]) { writePackageConfigJsonUtf8(configuration, baseUri, output); } /// Writes a configuration JSON text for this configuration on [output]. /// /// If [baseUri] is provided, URI references in the generated file /// will be made relative to [baseUri] where possible. static void writeString(PackageConfig configuration, StringSink output, [Uri? baseUri]) { writePackageConfigJsonString(configuration, baseUri, output); } /// Converts a configuration to a JSON-like data structure. /// /// If [baseUri] is provided, URI references in the generated data /// will be made relative to [baseUri] where possible. static Map toJson(PackageConfig configuration, [Uri? baseUri]) => packageConfigToJson(configuration, baseUri); /// The configuration version number. /// /// Currently this is 1 or 2, where /// * Version one is the `.packages` file format and /// * Version two is the first `package_config.json` format. /// /// Instances of this class supports both, and the version /// is only useful for detecting which kind of file the configuration /// was read from. int get version; /// All the available packages of this configuration. /// /// No two of these packages have the same name, /// and no two [Package.root] directories overlap. Iterable get packages; /// Look up a package by name. /// /// Returns the [Package] fron [packages] with [packageName] as /// [Package.name]. Returns `null` if the package is not available in the /// current configuration. Package? operator [](String packageName); /// Provides the associated package for a specific [file] (or directory). /// /// Returns a [Package] which contains the [file]'s path, if any. /// That is, the [Package.rootUri] directory is a parent directory /// of the [file]'s location. /// /// Returns `null` if the file does not belong to any package. Package? packageOf(Uri file); /// Resolves a `package:` URI to a non-package URI /// /// The [packageUri] must be a valid package URI. That means: /// * A URI with `package` as scheme, /// * with no authority part (`package://...`), /// * with a path starting with a valid package name followed by a slash, and /// * with no query or fragment part. /// /// Throws an [ArgumentError] (which also implements [PackageConfigError]) /// if the package URI is not valid. /// /// Returns `null` if the package name of [packageUri] is not available /// in this package configuration. /// Returns the remaining path of the package URI resolved relative to the /// [Package.packageUriRoot] of the corresponding package. Uri? resolve(Uri packageUri); /// The package URI which resolves to [nonPackageUri]. /// /// The [nonPackageUri] must not have any query or fragment part, /// and it must not have `package` as scheme. /// Throws an [ArgumentError] (which also implements [PackageConfigError]) /// if the non-package URI is not valid. /// /// Returns a package URI which [resolve] will convert to [nonPackageUri], /// if any such URI exists. Returns `null` if no such package URI exists. Uri? toPackageUri(Uri nonPackageUri); /// Extra data associated with the package configuration. /// /// The data may be in any format, depending on who introduced it. /// The standard `package_config.json` file storage will only store /// JSON-like list/map data structures. Object? get extraData; } /// Configuration data for a single package. abstract class Package { /// Creates a package with the provided properties. /// /// The [name] must be a valid package name. /// The [root] must be an absolute directory URI, meaning an absolute URI /// with no query or fragment path and a path starting and ending with `/`. /// The [packageUriRoot], if provided, must be either an absolute /// directory URI or a relative URI reference which is then resolved /// relative to [root]. It must then also be a subdirectory of [root], /// or the same directory, and must end with `/`. /// If [languageVersion] is supplied, it must be a valid Dart language /// version, which means two decimal integer literals separated by a `.`, /// where the integer literals have no leading zeros unless they are /// a single zero digit. /// /// The [relativeRoot] controls whether the [root] is written as /// relative to the `package_config.json` file when the package /// configuration is written to a file. It defaults to being relative. /// /// If [extraData] is supplied, it will be available as the /// [Package.extraData] of the created package. factory Package(String name, Uri root, {Uri? packageUriRoot, LanguageVersion? languageVersion, Object? extraData, bool relativeRoot = true}) => SimplePackage.validate(name, root, packageUriRoot, languageVersion, extraData, relativeRoot, throwError)!; /// The package-name of the package. String get name; /// The location of the root of the package. /// /// Is always an absolute URI with no query or fragment parts, /// and with a path ending in `/`. /// /// All files in the [rootUri] directory are considered /// part of the package for purposes where that that matters. Uri get root; /// The root of the files available through `package:` URIs. /// /// A `package:` URI with [name] as the package name is /// resolved relative to this location. /// /// Is always an absolute URI with no query or fragment part /// with a path ending in `/`, /// and with a location which is a subdirectory /// of the [root], or the same as the [root]. Uri get packageUriRoot; /// The default language version associated with this package. /// /// Each package may have a default language version associated, /// which is the language version used to parse and compile /// Dart files in the package. /// A package version is defined by two non-negative numbers, /// the *major* and *minor* version numbers. /// /// A package may have no language version associated with it /// in the package configuration, in which case tools should /// use a default behavior for the package. LanguageVersion? get languageVersion; /// Extra data associated with the specific package. /// /// The data may be in any format, depending on who introduced it. /// The standard `package_config.json` file storage will only store /// JSON-like list/map data structures. Object? get extraData; /// Whether the [root] URI should be written as relative. /// /// When the configuration is written to a `package_config.json` /// file, the [root] URI can be either relative to the file /// location or absolute, controller by this value. bool get relativeRoot; } /// A language version. /// /// A language version is represented by two non-negative integers, /// the [major] and [minor] version numbers. /// /// If errors during parsing are handled using an `onError` handler, /// then an *invalid* language version may be represented by an /// [InvalidLanguageVersion] object. abstract class LanguageVersion implements Comparable { /// The maximal value allowed by [major] and [minor] values; static const int maxValue = 0x7FFFFFFF; factory LanguageVersion(int major, int minor) { RangeError.checkValueInInterval(major, 0, maxValue, 'major'); RangeError.checkValueInInterval(minor, 0, maxValue, 'major'); return SimpleLanguageVersion(major, minor, null); } /// Parses a language version string. /// /// A valid language version string has the form /// /// > *decimalNumber* `.` *decimalNumber* /// /// where a *decimalNumber* is a non-empty sequence of decimal digits /// with no unnecessary leading zeros (the decimal number only starts /// with a zero digit if that digit is the entire number). /// No spaces are allowed in the string. /// /// If the [source] is valid then it is parsed into a valid /// [LanguageVersion] object. /// If not, then the [onError] is called with a [FormatException]. /// If [onError] is not supplied, it defaults to throwing the exception. /// If the call does not throw, then an [InvalidLanguageVersion] is returned /// containing the original [source]. static LanguageVersion parse(String source, {void Function(Object error)? onError}) => parseLanguageVersion(source, onError ?? throwError); /// The major language version. /// /// A non-negative integer less than 231. /// /// The value is negative for objects representing *invalid* language /// versions ([InvalidLanguageVersion]). int get major; /// The minor language version. /// /// A non-negative integer less than 231. /// /// The value is negative for objects representing *invalid* language /// versions ([InvalidLanguageVersion]). int get minor; /// Compares language versions. /// /// Two language versions are considered equal if they have the /// same major and minor version numbers. /// /// A language version is greater then another if the former's major version /// is greater than the latter's major version, or if they have /// the same major version and the former's minor version is greater than /// the latter's. @override int compareTo(LanguageVersion other); /// Valid language versions with the same [major] and [minor] values are /// equal. /// /// Invalid language versions ([InvalidLanguageVersion]) are not equal to /// any other object. @override bool operator ==(Object other); @override int get hashCode; /// A string representation of the language version. /// /// A valid language version is represented as /// `"${version.major}.${version.minor}"`. @override String toString(); } /// An *invalid* language version. /// /// Stored in a [Package] when the orginal language version string /// was invalid and a `onError` handler was passed to the parser /// which did not throw on an error. abstract class InvalidLanguageVersion implements LanguageVersion { /// The value -1 for an invalid language version. @override int get major; /// The value -1 for an invalid language version. @override int get minor; /// An invalid language version is only equal to itself. @override bool operator ==(Object other); @override int get hashCode; /// The original invalid version string. @override String toString(); } ��NN<##E;J>#&:?:BME@=>LDQ.FIHMMG <>IL<+70?EF.HEE=D1@5F+00?EF.HEE=D1F5O<CG0?EF.HEE=D1@5HFE9N@KE9JB>E9B3(&7?=H835"!BL,LDE A 5@(2P(M'J%M= 9D0M+ML(<EF*-6/LNDGI4ILGCBI>2) ,(J1'/A%:@?:*?!20AC>!@/@?.(7EF*<C>6D-E@%H?*2BB6(3,HH=+> EKO(.5;"7H+"7H+"B,OBL (K L " 71- #CA%C4 4 ; " + .package:package_config/src/package_config.dart����lfile:///github/home/.pub-cache/hosted/pub.dartlang.org/package_config-2.0.2/lib/src/package_config_impl.dart�L// Copyright (c) 2019, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. import 'errors.dart'; import 'package_config.dart'; import 'util.dart'; export 'package_config.dart'; // Implementations of the main data types exposed by the API of this package. class SimplePackageConfig implements PackageConfig { @override final int version; final Map _packages; final PackageTree _packageTree; @override final Object? extraData; factory SimplePackageConfig(int version, Iterable packages, [Object? extraData, void Function(Object error)? onError]) { onError ??= throwError; var validVersion = _validateVersion(version, onError); var sortedPackages = [...packages]..sort(_compareRoot); var packageTree = _validatePackages(packages, sortedPackages, onError); return SimplePackageConfig._(validVersion, packageTree, {for (var p in packageTree.allPackages) p.name: p}, extraData); } SimplePackageConfig._( this.version, this._packageTree, this._packages, this.extraData); /// Creates empty configuration. /// /// The empty configuration can be used in cases where no configuration is /// found, but code expects a non-null configuration. const SimplePackageConfig.empty() : version = 1, _packageTree = const EmptyPackageTree(), _packages = const {}, extraData = null; static int _validateVersion( int version, void Function(Object error) onError) { if (version < 0 || version > PackageConfig.maxVersion) { onError(PackageConfigArgumentError(version, 'version', 'Must be in the range 1 to ${PackageConfig.maxVersion}')); return 2; // The minimal version supporting a SimplePackageConfig. } return version; } static PackageTree _validatePackages(Iterable originalPackages, List packages, void Function(Object error) onError) { var packageNames = {}; var tree = MutablePackageTree(); for (var originalPackage in packages) { SimplePackage? package; if (originalPackage is! SimplePackage) { // SimplePackage validates these properties. package = SimplePackage.validate( originalPackage.name, originalPackage.root, originalPackage.packageUriRoot, originalPackage.languageVersion, originalPackage.extraData, originalPackage.relativeRoot, (error) { if (error is PackageConfigArgumentError) { onError(PackageConfigArgumentError(packages, 'packages', 'Package ${package!.name}: ${error.message}')); } else { onError(error); } }); if (package == null) continue; } else { package = originalPackage; } var name = package.name; if (packageNames.contains(name)) { onError(PackageConfigArgumentError( name, 'packages', "Duplicate package name '$name'")); continue; } packageNames.add(name); tree.add(0, package, (error) { if (error is ConflictException) { // There is a conflict with an existing package. var existingPackage = error.existingPackage; if (error.isRootConflict) { onError(PackageConfigArgumentError( originalPackages, 'packages', 'Packages ${package!.name} and ${existingPackage.name} ' 'have the same root directory: ${package.root}.\n')); } else { assert(error.isPackageRootConflict); // Package is inside the package URI root of the existing package. onError(PackageConfigArgumentError( originalPackages, 'packages', 'Package ${package!.name} is inside the package URI root of ' 'package ${existingPackage.name}.\n' '${existingPackage.name} URI root: ' '${existingPackage.packageUriRoot}\n' '${package.name} root: ${package.root}\n')); } } else { // Any other error. onError(error); } }); } return tree; } @override Iterable get packages => _packages.values; @override Package? operator [](String packageName) => _packages[packageName]; /// Provides the associated package for a specific [file] (or directory). /// /// Returns a [Package] which contains the [file]'s path. /// That is, the [Package.rootUri] directory is a parent directory /// of the [file]'s location. /// Returns `null` if the file does not belong to any package. @override Package? packageOf(Uri file) => _packageTree.packageOf(file); @override Uri? resolve(Uri packageUri) { var packageName = checkValidPackageUri(packageUri, 'packageUri'); return _packages[packageName]?.packageUriRoot.resolveUri( Uri(path: packageUri.path.substring(packageName.length + 1))); } @override Uri? toPackageUri(Uri nonPackageUri) { if (nonPackageUri.isScheme('package')) { throw PackageConfigArgumentError( nonPackageUri, 'nonPackageUri', 'Must not be a package URI'); } if (nonPackageUri.hasQuery || nonPackageUri.hasFragment) { throw PackageConfigArgumentError(nonPackageUri, 'nonPackageUri', 'Must not have query or fragment part'); } // Find package that file belongs to. var package = _packageTree.packageOf(nonPackageUri); if (package == null) return null; // Check if it is inside the package URI root. var path = nonPackageUri.toString(); var root = package.packageUriRoot.toString(); if (_beginsWith(package.root.toString().length, root, path)) { var rest = path.substring(root.length); return Uri(scheme: 'package', path: '${package.name}/$rest'); } return null; } } /// Configuration data for a single package. class SimplePackage implements Package { @override final String name; @override final Uri root; @override final Uri packageUriRoot; @override final LanguageVersion? languageVersion; @override final Object? extraData; @override final bool relativeRoot; SimplePackage._(this.name, this.root, this.packageUriRoot, this.languageVersion, this.extraData, this.relativeRoot); /// Creates a [SimplePackage] with the provided content. /// /// The provided arguments must be valid. /// /// If the arguments are invalid then the error is reported by /// calling [onError], then the erroneous entry is ignored. /// /// If [onError] is provided, the user is expected to be able to handle /// errors themselves. An invalid [languageVersion] string /// will be replaced with the string `"invalid"`. This allows /// users to detect the difference between an absent version and /// an invalid one. /// /// Returns `null` if the input is invalid and an approximately valid package /// cannot be salvaged from the input. static SimplePackage? validate( String name, Uri root, Uri? packageUriRoot, LanguageVersion? languageVersion, Object? extraData, bool relativeRoot, void Function(Object error) onError) { var fatalError = false; var invalidIndex = checkPackageName(name); if (invalidIndex >= 0) { onError(PackageConfigFormatException( 'Not a valid package name', name, invalidIndex)); fatalError = true; } if (root.isScheme('package')) { onError(PackageConfigArgumentError( '$root', 'root', 'Must not be a package URI')); fatalError = true; } else if (!isAbsoluteDirectoryUri(root)) { onError(PackageConfigArgumentError( '$root', 'root', 'In package $name: Not an absolute URI with no query or fragment ' 'with a path ending in /')); // Try to recover. If the URI has a scheme, // then ensure that the path ends with `/`. if (!root.hasScheme) { fatalError = true; } else if (!root.path.endsWith('/')) { root = root.replace(path: root.path + '/'); } } if (packageUriRoot == null) { packageUriRoot = root; } else if (!fatalError) { packageUriRoot = root.resolveUri(packageUriRoot); if (!isAbsoluteDirectoryUri(packageUriRoot)) { onError(PackageConfigArgumentError( packageUriRoot, 'packageUriRoot', 'In package $name: Not an absolute URI with no query or fragment ' 'with a path ending in /')); packageUriRoot = root; } else if (!isUriPrefix(root, packageUriRoot)) { onError(PackageConfigArgumentError(packageUriRoot, 'packageUriRoot', 'The package URI root is not below the package root')); packageUriRoot = root; } } if (fatalError) return null; return SimplePackage._( name, root, packageUriRoot, languageVersion, extraData, relativeRoot); } } /// Checks whether [version] is a valid Dart language version string. /// /// The format is (as RegExp) `^(0|[1-9]\d+)\.(0|[1-9]\d+)$`. /// /// Reports a format exception on [onError] if not, or if the numbers /// are too large (at most 32-bit signed integers). LanguageVersion parseLanguageVersion( String? source, void Function(Object error) onError) { var index = 0; // Reads a positive decimal numeral. Returns the value of the numeral, // or a negative number in case of an error. // Starts at [index] and increments the index to the position after // the numeral. // It is an error if the numeral value is greater than 0x7FFFFFFFF. // It is a recoverable error if the numeral starts with leading zeros. int readNumeral() { const maxValue = 0x7FFFFFFF; if (index == source!.length) { onError(PackageConfigFormatException('Missing number', source, index)); return -1; } var start = index; var char = source.codeUnitAt(index); var digit = char ^ 0x30; if (digit > 9) { onError(PackageConfigFormatException('Missing number', source, index)); return -1; } var firstDigit = digit; var value = 0; do { value = value * 10 + digit; if (value > maxValue) { onError( PackageConfigFormatException('Number too large', source, start)); return -1; } index++; if (index == source.length) break; char = source.codeUnitAt(index); digit = char ^ 0x30; } while (digit <= 9); if (firstDigit == 0 && index > start + 1) { onError(PackageConfigFormatException( 'Leading zero not allowed', source, start)); } return value; } var major = readNumeral(); if (major < 0) { return SimpleInvalidLanguageVersion(source); } if (index == source!.length || source.codeUnitAt(index) != $dot) { onError(PackageConfigFormatException("Missing '.'", source, index)); return SimpleInvalidLanguageVersion(source); } index++; var minor = readNumeral(); if (minor < 0) { return SimpleInvalidLanguageVersion(source); } if (index != source.length) { onError(PackageConfigFormatException( 'Unexpected trailing character', source, index)); return SimpleInvalidLanguageVersion(source); } return SimpleLanguageVersion(major, minor, source); } abstract class _SimpleLanguageVersionBase implements LanguageVersion { @override int compareTo(LanguageVersion other) { var result = major.compareTo(other.major); if (result != 0) return result; return minor.compareTo(other.minor); } } class SimpleLanguageVersion extends _SimpleLanguageVersionBase { @override final int major; @override final int minor; String? _source; SimpleLanguageVersion(this.major, this.minor, this._source); @override bool operator ==(Object other) => other is LanguageVersion && major == other.major && minor == other.minor; @override int get hashCode => (major * 17 ^ minor * 37) & 0x3FFFFFFF; @override String toString() => _source ??= '$major.$minor'; } class SimpleInvalidLanguageVersion extends _SimpleLanguageVersionBase implements InvalidLanguageVersion { final String? _source; SimpleInvalidLanguageVersion(this._source); @override int get major => -1; @override int get minor => -1; @override String toString() => _source!; } abstract class PackageTree { Iterable get allPackages; SimplePackage? packageOf(Uri file); } /// Packages of a package configuration ordered by root path. /// /// A package has a root path and a package root path, where the latter /// contains the files exposed by `package:` URIs. /// /// A package is said to be inside another package if the root path URI of /// the latter is a prefix of the root path URI of the former. /// /// No two packages of a package may have the same root path, so this /// path prefix ordering defines a tree-like partial ordering on packages /// of a configuration. /// /// The package root path of a package must not be inside another package's /// root path. /// Entire other packages are allowed inside a package's root or /// package root path. /// /// The package tree contains an ordered mapping of unrelated packages /// (represented by their name) to their immediately nested packages' names. class MutablePackageTree implements PackageTree { /// A list of packages that are not nested inside each other. final List packages = []; /// The tree of the immediately nested packages inside each package. /// /// Indexed by [Package.name]. /// If a package has no nested packages (which is most often the case), /// there is no tree object associated with it. Map? _packageChildren; @override Iterable get allPackages sync* { for (var package in packages) { yield package; } var children = _packageChildren; if (children != null) { for (var tree in children.values) { yield* tree.allPackages; } } } /// Tries to (add) `package` to the tree. /// /// Reports a [ConflictException] if the added package conflicts with an /// existing package. /// It conflicts if its root or package root is the same as another /// package's root or package root, or is between the two. /// /// If a conflict is detected between [package] and a previous package, /// then [onError] is called with a [ConflictException] object /// and the [package] is not added to the tree. /// /// The packages are added in order of their root path. /// It is never necessary to insert a node between two existing levels. void add( int start, SimplePackage package, void Function(Object error) onError) { var path = package.root.toString(); for (var treePackage in packages) { // Check is package is inside treePackage. var treePackagePath = treePackage.root.toString(); assert(treePackagePath.length > start); assert(path.startsWith(treePackagePath.substring(0, start))); if (_beginsWith(start, treePackagePath, path)) { // Package *is* inside treePackage. var treePackagePathLength = treePackagePath.length; if (path.length == treePackagePathLength) { // Has same root. Do not add package. onError(ConflictException.root(package, treePackage)); return; } var treePackageUriRoot = treePackage.packageUriRoot.toString(); if (_beginsWith(treePackagePathLength, path, treePackageUriRoot)) { // The treePackage's package root is inside package, which is inside // the treePackage. This is not allowed. onError(ConflictException.packageRoot(package, treePackage)); return; } _treeOf(treePackage).add(treePackagePathLength, package, onError); return; } } packages.add(package); } @override SimplePackage? packageOf(Uri file) { return findPackageOf(0, file.toString()); } /// Finds package containing [path] in this tree. /// /// Returns `null` if no such package is found. /// /// Assumes the first [start] characters of path agrees with all /// the packages at this level of the tree. SimplePackage? findPackageOf(int start, String path) { for (var childPackage in packages) { var childPath = childPackage.root.toString(); if (_beginsWith(start, childPath, path)) { // The [package] is inside [childPackage]. var childPathLength = childPath.length; if (path.length == childPathLength) return childPackage; var uriRoot = childPackage.packageUriRoot.toString(); // Is [package] is inside the URI root of [childPackage]. if (uriRoot.length == childPathLength || _beginsWith(childPathLength, uriRoot, path)) { return childPackage; } return _packageChildren?[childPackage.name] ?.findPackageOf(childPathLength, path) ?? childPackage; } } return null; } /// Returns the [PackageTree] of the children of [package]. /// /// Ensures that the object is allocated if necessary. MutablePackageTree _treeOf(SimplePackage package) { var children = _packageChildren ??= {}; return children[package.name] ??= MutablePackageTree(); } } class EmptyPackageTree implements PackageTree { const EmptyPackageTree(); @override Iterable get allPackages => const Iterable.empty(); @override SimplePackage? packageOf(Uri file) => null; } /// Checks whether [longerPath] begins with [parentPath]. /// /// Skips checking the [start] first characters which are assumed to /// already have been matched. bool _beginsWith(int start, String parentPath, String longerPath) { if (longerPath.length < parentPath.length) return false; for (var i = start; i < parentPath.length; i++) { if (longerPath.codeUnitAt(i) != parentPath.codeUnitAt(i)) return false; } return true; } /// Conflict between packages added to the same configuration. /// /// The [package] conflicts with [existingPackage] if it has /// the same root path ([isRootConflict]) or the package URI root path /// of [existingPackage] is inside the root path of [package] /// ([isPackageRootConflict]). class ConflictException { /// The existing package that [package] conflicts with. final SimplePackage existingPackage; /// The package that could not be added without a conflict. final SimplePackage package; /// Whether the conflict is with the package URI root of [existingPackage]. final bool isPackageRootConflict; /// Creates a root conflict between [package] and [existingPackage]. ConflictException.root(this.package, this.existingPackage) : isPackageRootConflict = false; /// Creates a package root conflict between [package] and [existingPackage]. ConflictException.packageRoot(this.package, this.existingPackage) : isPackageRootConflict = true; /// WHether the conflict is with the root URI of [existingPackage]. bool get isRootConflict => !isPackageRootConflict; } /// Used for sorting packages by root path. int _compareRoot(Package p1, Package p2) => p1.root.toString().compareTo(p2.root.toString()); �'NN<N5 (" GC;G )-(H?G3*9&3)2C.D-)    *  =@;,A>J=@CP)"(-/,<$*:0*M+22-4"85,O-7MD!OF>F4&;I/FFI!#N)N "N)'0,71EI1 1 *:16G )/$)A  ? $P > 4F(.   !%&>H3K?FJLAGM2@+G!J25 ,$%*!,KF=JA2:J O((19.D7,<40A HLO3H K '.42C.9)4130A>B1; 4:>96,<0 H .:ED;4L?=G>:'>N$G='OD&F5,,63package:package_config/src/package_config_impl.dart�⁗�o�r�tjfile:///github/home/.pub-cache/hosted/pub.dartlang.org/package_config-2.0.2/lib/src/package_config_io.dart��// Copyright (c) 2019, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. // dart:io dependent functionality for reading and writing configuration files. import 'dart:convert'; import 'dart:io'; import 'dart:typed_data'; import 'errors.dart'; import 'package_config_impl.dart'; import 'package_config_json.dart'; import 'packages_file.dart' as packages_file; import 'util.dart'; import 'util_io.dart'; /// Name of directory where Dart tools store their configuration. /// /// Directory is created in the package root directory. const dartToolDirName = '.dart_tool'; /// Name of file containing new package configuration data. /// /// File is stored in the dart tool directory. const packageConfigFileName = 'package_config.json'; /// Name of file containing legacy package configuration data. /// /// File is stored in the package root directory. const packagesFileName = '.packages'; /// Reads a package configuration file. /// /// Detects whether the [file] is a version one `.packages` file or /// a version two `package_config.json` file. /// /// If the [file] is a `.packages` file and [preferNewest] is true, /// first checks whether there is an adjacent `.dart_tool/package_config.json` /// file, and if so, reads that instead. /// If [preferNewset] is false, the specified file is loaded even if it is /// a `.packages` file and there is an available `package_config.json` file. /// /// The file must exist and be a normal file. Future readAnyConfigFile( File file, bool preferNewest, void Function(Object error) onError) async { if (preferNewest && fileName(file.path) == packagesFileName) { var alternateFile = File( pathJoin(dirName(file.path), dartToolDirName, packageConfigFileName)); if (alternateFile.existsSync()) { return await readPackageConfigJsonFile(alternateFile, onError); } } Uint8List bytes; try { bytes = await file.readAsBytes(); } catch (e) { onError(e); return const SimplePackageConfig.empty(); } return parseAnyConfigFile(bytes, file.uri, onError); } /// Like [readAnyConfigFile] but uses a URI and an optional loader. Future readAnyConfigFileUri( Uri file, Future Function(Uri uri)? loader, void Function(Object error) onError, bool preferNewest) async { if (file.isScheme('package')) { throw PackageConfigArgumentError( file, 'file', 'Must not be a package: URI'); } if (loader == null) { if (file.isScheme('file')) { return await readAnyConfigFile(File.fromUri(file), preferNewest, onError); } loader = defaultLoader; } if (preferNewest && file.pathSegments.last == packagesFileName) { var alternateFile = file.resolve('$dartToolDirName/$packageConfigFileName'); Uint8List? bytes; try { bytes = await loader(alternateFile); } catch (e) { onError(e); return const SimplePackageConfig.empty(); } if (bytes != null) { return parsePackageConfigBytes(bytes, alternateFile, onError); } } Uint8List? bytes; try { bytes = await loader(file); } catch (e) { onError(e); return const SimplePackageConfig.empty(); } if (bytes == null) { onError(PackageConfigArgumentError( file.toString(), 'file', 'File cannot be read')); return const SimplePackageConfig.empty(); } return parseAnyConfigFile(bytes, file, onError); } /// Parses a `.packages` or `package_config.json` file's contents. /// /// Assumes it's a JSON file if the first non-whitespace character /// is `{`, otherwise assumes it's a `.packages` file. PackageConfig parseAnyConfigFile( Uint8List bytes, Uri file, void Function(Object error) onError) { var firstChar = firstNonWhitespaceChar(bytes); if (firstChar != $lbrace) { // Definitely not a JSON object, probably a .packages. return packages_file.parse(bytes, file, onError); } return parsePackageConfigBytes(bytes, file, onError); } Future readPackageConfigJsonFile( File file, void Function(Object error) onError) async { Uint8List bytes; try { bytes = await file.readAsBytes(); } catch (error) { onError(error); return const SimplePackageConfig.empty(); } return parsePackageConfigBytes(bytes, file.uri, onError); } Future readDotPackagesFile( File file, void Function(Object error) onError) async { Uint8List bytes; try { bytes = await file.readAsBytes(); } catch (error) { onError(error); return const SimplePackageConfig.empty(); } return packages_file.parse(bytes, file.uri, onError); } Future writePackageConfigJsonFile( PackageConfig config, Directory targetDirectory) async { // Write .dart_tool/package_config.json first. var dartToolDir = Directory(pathJoin(targetDirectory.path, dartToolDirName)); await dartToolDir.create(recursive: true); var file = File(pathJoin(dartToolDir.path, packageConfigFileName)); var baseUri = file.uri; var sink = file.openWrite(encoding: utf8); writePackageConfigJsonUtf8(config, baseUri, sink); var doneJson = sink.close(); // Write .packages too. file = File(pathJoin(targetDirectory.path, packagesFileName)); baseUri = file.uri; sink = file.openWrite(encoding: utf8); writeDotPackages(config, baseUri, sink); var donePackages = sink.close(); await Future.wait([doneJson, donePackages]); } ��NN<P##.B8&</5?2&(D.DO)KM.)OAO&F&.7D,2)"&5!QDQ +0E .(:.3CC7"F1;681<&.<+<&.8)=1P-F-5A)+#/1package:package_config/src/package_config_io.dart����lfile:///github/home/.pub-cache/hosted/pub.dartlang.org/package_config-2.0.2/lib/src/package_config_json.dart��// Copyright (c) 2019, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. // Parsing and serialization of package configurations. import 'dart:convert'; import 'dart:typed_data'; import 'errors.dart'; import 'package_config_impl.dart'; import 'packages_file.dart' as packages_file; import 'util.dart'; const String _configVersionKey = 'configVersion'; const String _packagesKey = 'packages'; const List _topNames = [_configVersionKey, _packagesKey]; const String _nameKey = 'name'; const String _rootUriKey = 'rootUri'; const String _packageUriKey = 'packageUri'; const String _languageVersionKey = 'languageVersion'; const List _packageNames = [ _nameKey, _rootUriKey, _packageUriKey, _languageVersionKey ]; const String _generatedKey = 'generated'; const String _generatorKey = 'generator'; const String _generatorVersionKey = 'generatorVersion'; final _jsonUtf8Decoder = json.fuse(utf8).decoder; PackageConfig parsePackageConfigBytes( Uint8List bytes, Uri file, void Function(Object error) onError) { // TODO(lrn): Make this simpler. Maybe parse directly from bytes. Object? jsonObject; try { jsonObject = _jsonUtf8Decoder.convert(bytes); } on FormatException catch (e) { onError(PackageConfigFormatException.from(e)); return const SimplePackageConfig.empty(); } return parsePackageConfigJson(jsonObject, file, onError); } PackageConfig parsePackageConfigString( String source, Uri file, void Function(Object error) onError) { Object? jsonObject; try { jsonObject = jsonDecode(source); } on FormatException catch (e) { onError(PackageConfigFormatException.from(e)); return const SimplePackageConfig.empty(); } return parsePackageConfigJson(jsonObject, file, onError); } /// Creates a [PackageConfig] from a parsed JSON-like object structure. /// /// The [json] argument must be a JSON object (`Map`) /// containing a `"configVersion"` entry with an integer value in the range /// 1 to [PackageConfig.maxVersion], /// and with a `"packages"` entry which is a JSON array (`List`) /// containing JSON objects which each has the following properties: /// /// * `"name"`: The package name as a string. /// * `"rootUri"`: The root of the package as a URI stored as a string. /// * `"packageUri"`: Optionally the root of for `package:` URI resolution /// for the package, as a relative URI below the root URI /// stored as a string. /// * `"languageVersion"`: Optionally a language version string which is a /// an integer numeral, a decimal point (`.`) and another integer numeral, /// where the integer numeral cannot have a sign, and can only have a /// leading zero if the entire numeral is a single zero. /// /// All other properties are stored in [extraData]. /// /// The [baseLocation] is used as base URI to resolve the "rootUri" /// URI referencestring. PackageConfig parsePackageConfigJson( Object? json, Uri baseLocation, void Function(Object error) onError) { if (!baseLocation.hasScheme || baseLocation.isScheme('package')) { throw PackageConfigArgumentError(baseLocation.toString(), 'baseLocation', 'Must be an absolute non-package: URI'); } if (!baseLocation.path.endsWith('/')) { baseLocation = baseLocation.resolveUri(Uri(path: '.')); } String typeName() { if (0 is T) return 'int'; if ('' is T) return 'string'; if (const [] is T) return 'array'; return 'object'; } T? checkType(Object? value, String name, [String? packageName]) { if (value is T) return value; // The only types we are called with are [int], [String], [List] // and Map. Recognize which to give a better error message. var message = "$name${packageName != null ? " of package $packageName" : ""}" ' is not a JSON ${typeName()}'; onError(PackageConfigFormatException(message, value)); return null; } Package? parsePackage(Map entry) { String? name; String? rootUri; String? packageUri; String? languageVersion; Map? extraData; var hasName = false; var hasRoot = false; var hasVersion = false; entry.forEach((key, value) { switch (key) { case _nameKey: hasName = true; name = checkType(value, _nameKey); break; case _rootUriKey: hasRoot = true; rootUri = checkType(value, _rootUriKey, name); break; case _packageUriKey: packageUri = checkType(value, _packageUriKey, name); break; case _languageVersionKey: hasVersion = true; languageVersion = checkType(value, _languageVersionKey, name); break; default: (extraData ??= {})[key] = value; break; } }); if (!hasName) { onError(PackageConfigFormatException('Missing name entry', entry)); } if (!hasRoot) { onError(PackageConfigFormatException('Missing rootUri entry', entry)); } if (name == null || rootUri == null) return null; var parsedRootUri = Uri.parse(rootUri!); var relativeRoot = !hasAbsolutePath(parsedRootUri); var root = baseLocation.resolveUri(parsedRootUri); if (!root.path.endsWith('/')) root = root.replace(path: root.path + '/'); var packageRoot = root; if (packageUri != null) packageRoot = root.resolve(packageUri!); if (!packageRoot.path.endsWith('/')) { packageRoot = packageRoot.replace(path: packageRoot.path + '/'); } LanguageVersion? version; if (languageVersion != null) { version = parseLanguageVersion(languageVersion, onError); } else if (hasVersion) { version = SimpleInvalidLanguageVersion('invalid'); } return SimplePackage.validate( name!, root, packageRoot, version, extraData, relativeRoot, (error) { if (error is ArgumentError) { onError( PackageConfigFormatException(error.message, error.invalidValue)); } else { onError(error); } }); } var map = checkType>(json, 'value'); if (map == null) return const SimplePackageConfig.empty(); Map? extraData; List? packageList; int? configVersion; map.forEach((key, value) { switch (key) { case _configVersionKey: configVersion = checkType(value, _configVersionKey) ?? 2; break; case _packagesKey: var packageArray = checkType>(value, _packagesKey) ?? []; var packages = []; for (var package in packageArray) { var packageMap = checkType>(package, 'package entry'); if (packageMap != null) { var entry = parsePackage(packageMap); if (entry != null) { packages.add(entry); } } } packageList = packages; break; default: (extraData ??= {})[key] = value; break; } }); if (configVersion == null) { onError(PackageConfigFormatException('Missing configVersion entry', json)); configVersion = 2; } if (packageList == null) { onError(PackageConfigFormatException('Missing packages list', json)); packageList = []; } return SimplePackageConfig(configVersion!, packageList!, extraData, (error) { if (error is ArgumentError) { onError(PackageConfigFormatException(error.message, error.invalidValue)); } else { onError(error); } }); } final _jsonUtf8Encoder = JsonUtf8Encoder(' '); void writePackageConfigJsonUtf8( PackageConfig config, Uri? baseUri, Sink> output) { // Can be optimized. var data = packageConfigToJson(config, baseUri); output.add(_jsonUtf8Encoder.convert(data) as Uint8List); } void writePackageConfigJsonString( PackageConfig config, Uri? baseUri, StringSink output) { // Can be optimized. var data = packageConfigToJson(config, baseUri); output.write(JsonEncoder.withIndent(' ').convert(data)); } Map packageConfigToJson(PackageConfig config, Uri? baseUri) => { ...?_extractExtraData(config.extraData, _topNames), _configVersionKey: PackageConfig.maxVersion, _packagesKey: [ for (var package in config.packages) { _nameKey: package.name, _rootUriKey: trailingSlash((package.relativeRoot ? relativizeUri(package.root, baseUri) : package.root) .toString()), if (package.root != package.packageUriRoot) _packageUriKey: trailingSlash( relativizeUri(package.packageUriRoot, package.root) .toString()), if (package.languageVersion != null && package.languageVersion is! InvalidLanguageVersion) _languageVersionKey: package.languageVersion.toString(), ...?_extractExtraData(package.extraData, _packageNames), } ], }; void writeDotPackages(PackageConfig config, Uri baseUri, StringSink output) { var extraData = config.extraData; // Write .packages too. String? comment; if (extraData is Map) { var generator = extraData[_generatorKey]; if (generator is String) { var generated = extraData[_generatedKey]; var generatorVersion = extraData[_generatorVersionKey]; comment = 'Generated by $generator' "${generatorVersion is String ? " $generatorVersion" : ""}" "${generated is String ? " on $generated" : ""}."; } } packages_file.write(output, config, baseUri: baseUri, comment: comment); } /// If "extraData" is a JSON map, then return it, otherwise return null. /// /// If the value contains any of the [reservedNames] for the current context, /// entries with that name in the extra data are dropped. Map? _extractExtraData( Object? data, Iterable reservedNames) { if (data is Map) { if (data.isEmpty) return null; for (var name in reservedNames) { if (data.containsKey(name)) { var filteredData = { for (var key in data.keys) if (!reservedNames.contains(key)) key: data[key] }; if (filteredData.isEmpty) return null; for (var value in filteredData.values) { if (!_validateJson(value)) return null; } return filteredData; } } return data; } return null; } /// Checks that the object is a valid JSON-like data structure. bool _validateJson(Object? object) { if (object == null || true == object || false == object) return true; if (object is num || object is String) return true; if (object is List) { return object.every(_validateJson); } if (object is Map) { return object.values.every(_validateJson); } return false; } �@NN<8#.2(B &,6% **82'FD2#3.<(D%#3.<HGL%JE.HK>KOJ=4D&KEN1*<"'G"NQH+;6%!5AG"Q+JM6-87NE+G#@9#N$N<=#GP$,I$2!# )PJP"P 0!B3;#=3<P:3-$=;$8-F$3DGE N$+.0>*F=KIN:)4&#&$%= /12 @%H6!((/3package:package_config/src/package_config_json.dart����ffile:///github/home/.pub-cache/hosted/pub.dartlang.org/package_config-2.0.2/lib/src/packages_file.dart�"// Copyright (c) 2019, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. import 'package_config_impl.dart'; import 'util.dart'; import 'errors.dart'; /// The language version prior to the release of language versioning. /// /// This is the default language version used by all packages from a /// `.packages` file. final LanguageVersion _languageVersion = LanguageVersion(2, 7); /// Parses a `.packages` file into a [PackageConfig]. /// /// The [source] is the byte content of a `.packages` file, assumed to be /// UTF-8 encoded. In practice, all significant parts of the file must be ASCII, /// so Latin-1 or Windows-1252 encoding will also work fine. /// /// If the file content is available as a string, its [String.codeUnits] can /// be used as the `source` argument of this function. /// /// The [baseLocation] is used as a base URI to resolve all relative /// URI references against. /// If the content was read from a file, `baseLocation` should be the /// location of that file. /// /// Returns a simple package configuration where each package's /// [Package.packageUriRoot] is the same as its [Package.root] /// and it has no [Package.languageVersion]. PackageConfig parse( List source, Uri baseLocation, void Function(Object error) onError) { if (baseLocation.isScheme('package')) { onError(PackageConfigArgumentError( baseLocation, 'baseLocation', 'Must not be a package: URI')); return PackageConfig.empty; } var index = 0; var packages = []; var packageNames = {}; while (index < source.length) { var ignoreLine = false; var start = index; var separatorIndex = -1; var end = source.length; var char = source[index++]; if (char == $cr || char == $lf) { continue; } if (char == $colon) { onError(PackageConfigFormatException( 'Missing package name', source, index - 1)); ignoreLine = true; // Ignore if package name is invalid. } else { ignoreLine = char == $hash; // Ignore if comment. } var queryStart = -1; var fragmentStart = -1; while (index < source.length) { char = source[index++]; if (char == $colon && separatorIndex < 0) { separatorIndex = index - 1; } else if (char == $cr || char == $lf) { end = index - 1; break; } else if (char == $question && queryStart < 0 && fragmentStart < 0) { queryStart = index - 1; } else if (char == $hash && fragmentStart < 0) { fragmentStart = index - 1; } } if (ignoreLine) continue; if (separatorIndex < 0) { onError( PackageConfigFormatException("No ':' on line", source, index - 1)); continue; } var packageName = String.fromCharCodes(source, start, separatorIndex); var invalidIndex = checkPackageName(packageName); if (invalidIndex >= 0) { onError(PackageConfigFormatException( 'Not a valid package name', source, start + invalidIndex)); continue; } if (queryStart >= 0) { onError(PackageConfigFormatException( 'Location URI must not have query', source, queryStart)); end = queryStart; } else if (fragmentStart >= 0) { onError(PackageConfigFormatException( 'Location URI must not have fragment', source, fragmentStart)); end = fragmentStart; } var packageValue = String.fromCharCodes(source, separatorIndex + 1, end); Uri packageLocation; try { packageLocation = Uri.parse(packageValue); } on FormatException catch (e) { onError(PackageConfigFormatException.from(e)); continue; } var relativeRoot = !hasAbsolutePath(packageLocation); packageLocation = baseLocation.resolveUri(packageLocation); if (packageLocation.isScheme('package')) { onError(PackageConfigFormatException( 'Package URI as location for package', source, separatorIndex + 1)); continue; } var path = packageLocation.path; if (!path.endsWith('/')) { path += '/'; packageLocation = packageLocation.replace(path: path); } if (packageNames.contains(packageName)) { onError(PackageConfigFormatException( 'Same package name occured more than once', source, start)); continue; } var rootUri = packageLocation; if (path.endsWith('/lib/')) { // Assume default Pub package layout. Include package itself in root. rootUri = packageLocation.replace(path: path.substring(0, path.length - 4)); } var package = SimplePackage.validate(packageName, rootUri, packageLocation, _languageVersion, null, relativeRoot, (error) { if (error is ArgumentError) { onError(PackageConfigFormatException(error.message, source)); } else { onError(error); } }); if (package != null) { packages.add(package); packageNames.add(packageName); } } return SimplePackageConfig(1, packages, null, onError); } /// Writes the configuration to a [StringSink]. /// /// If [comment] is provided, the output will contain this comment /// with `# ` in front of each line. /// Lines are defined as ending in line feed (`'\n'`). If the final /// line of the comment doesn't end in a line feed, one will be added. /// /// If [baseUri] is provided, package locations will be made relative /// to the base URI, if possible, before writing. /// /// If [allowDefaultPackage] is `true`, the [packageMapping] may contain an /// empty string mapping to the _default package name_. /// /// All the keys of [packageMapping] must be valid package names, /// and the values must be URIs that do not have the `package:` scheme. void write(StringSink output, PackageConfig config, {Uri? baseUri, String? comment}) { if (baseUri != null && !baseUri.isAbsolute) { throw PackageConfigArgumentError(baseUri, 'baseUri', 'Must be absolute'); } if (comment != null) { var lines = comment.split('\n'); if (lines.last.isEmpty) lines.removeLast(); for (var commentLine in lines) { output.write('# '); output.writeln(commentLine); } } else { output.write('# generated by package:package_config at '); output.write(DateTime.now()); output.writeln(); } for (var package in config.packages) { var packageName = package.name; var uri = package.packageUriRoot; // Validate packageName. if (!isValidPackageName(packageName)) { throw PackageConfigArgumentError( config, 'config', '"$packageName" is not a valid package name'); } if (uri.scheme == 'package') { throw PackageConfigArgumentError( config, 'config', 'Package location must not be a package URI: $uri'); } output.write(packageName); output.write(':'); // If baseUri is provided, make the URI relative to baseUri. if (baseUri != null) { uri = relativizeUri(uri, baseUri)!; } if (!uri.path.endsWith('/')) { uri = uri.replace(path: uri.path + '/'); } output.write(uri); output.writeln(); } } ��NN<#FE@6JQ=M7EF@?-O*(F !" &,7? 8$2$/M 7#NK6,F,D%,JN 1%5:@/,O%=.,G#"LMP8$F%:0C%DGF2L8BH4'0N%0%# ?")$&,(K#(QA*#/-package:package_config/src/packages_file.dart]file:///github/home/.pub-cache/hosted/pub.dartlang.org/package_config-2.0.2/lib/src/util.dart��// Copyright (c) 2019, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. /// Utility methods used by more than one library in the package. library package_config.util; import 'errors.dart'; // All ASCII characters that are valid in a package name, with space // for all the invalid ones (including space). const String _validPackageNameCharacters = r" ! $ &'()*+,-. 0123456789 ; = " r'@ABCDEFGHIJKLMNOPQRSTUVWXYZ _ abcdefghijklmnopqrstuvwxyz ~ '; /// Tests whether something is a valid Dart package name. bool isValidPackageName(String string) { return checkPackageName(string) < 0; } /// Check if a string is a valid package name. /// /// Valid package names contain only characters in [_validPackageNameCharacters] /// and must contain at least one non-'.' character. /// /// Returns `-1` if the string is valid. /// Otherwise returns the index of the first invalid character, /// or `string.length` if the string contains no non-'.' character. int checkPackageName(String string) { // Becomes non-zero if any non-'.' character is encountered. var nonDot = 0; for (var i = 0; i < string.length; i++) { var c = string.codeUnitAt(i); if (c > 0x7f || _validPackageNameCharacters.codeUnitAt(c) <= $space) { return i; } nonDot += c ^ $dot; } if (nonDot == 0) return string.length; return -1; } /// Validate that a [Uri] is a valid `package:` URI. /// /// Used to validate user input. /// /// Returns the package name extracted from the package URI, /// which is the path segment between `package:` and the first `/`. String checkValidPackageUri(Uri packageUri, String name) { if (packageUri.scheme != 'package') { throw PackageConfigArgumentError(packageUri, name, 'Not a package: URI'); } if (packageUri.hasAuthority) { throw PackageConfigArgumentError( packageUri, name, 'Package URIs must not have a host part'); } if (packageUri.hasQuery) { // A query makes no sense if resolved to a file: URI. throw PackageConfigArgumentError( packageUri, name, 'Package URIs must not have a query part'); } if (packageUri.hasFragment) { // We could leave the fragment after the URL when resolving, // but it would be odd if "package:foo/foo.dart#1" and // "package:foo/foo.dart#2" were considered different libraries. // Keep the syntax open in case we ever get multiple libraries in one file. throw PackageConfigArgumentError( packageUri, name, 'Package URIs must not have a fragment part'); } if (packageUri.path.startsWith('/')) { throw PackageConfigArgumentError( packageUri, name, "Package URIs must not start with a '/'"); } var firstSlash = packageUri.path.indexOf('/'); if (firstSlash == -1) { throw PackageConfigArgumentError(packageUri, name, "Package URIs must start with the package name followed by a '/'"); } var packageName = packageUri.path.substring(0, firstSlash); var badIndex = checkPackageName(packageName); if (badIndex >= 0) { if (packageName.isEmpty) { throw PackageConfigArgumentError( packageUri, name, 'Package names mus be non-empty'); } if (badIndex == packageName.length) { throw PackageConfigArgumentError(packageUri, name, "Package names must contain at least one non-'.' character"); } assert(badIndex < packageName.length); var badCharCode = packageName.codeUnitAt(badIndex); var badChar = 'U+' + badCharCode.toRadixString(16).padLeft(4, '0'); if (badCharCode >= 0x20 && badCharCode <= 0x7e) { // Printable character. badChar = "'${packageName[badIndex]}' ($badChar)"; } throw PackageConfigArgumentError( packageUri, name, 'Package names must not contain $badChar'); } return packageName; } /// Checks whether URI is just an absolute directory. /// /// * It must have a scheme. /// * It must not have a query or fragment. /// * The path must end with `/`. bool isAbsoluteDirectoryUri(Uri uri) { if (uri.hasQuery) return false; if (uri.hasFragment) return false; if (!uri.hasScheme) return false; var path = uri.path; if (!path.endsWith('/')) return false; return true; } /// Whether the former URI is a prefix of the latter. bool isUriPrefix(Uri prefix, Uri path) { assert(!prefix.hasFragment); assert(!prefix.hasQuery); assert(!path.hasQuery); assert(!path.hasFragment); assert(prefix.path.endsWith('/')); return path.toString().startsWith(prefix.toString()); } /// Finds the first non-JSON-whitespace character in a file. /// /// Used to heuristically detect whether a file is a JSON file or an .ini file. int firstNonWhitespaceChar(List bytes) { for (var i = 0; i < bytes.length; i++) { var char = bytes[i]; if (char != 0x20 && char != 0x09 && char != 0x0a && char != 0x0d) { return char; } } return -1; } /// Appends a trailing `/` if the path doesn't end with one. String trailingSlash(String path) { if (path.isEmpty || path.endsWith('/')) return path; return path + '/'; } /// Whether a URI should not be considered relative to the base URI. /// /// Used to determine whether a parsed root URI is relative /// to the configuration file or not. /// If it is relative, then it's rewritten as relative when /// output again later. If not, it's output as absolute. bool hasAbsolutePath(Uri uri) => uri.hasScheme || uri.hasAuthority || uri.hasAbsolutePath; /// Attempts to return a relative path-only URI for [uri]. /// /// First removes any query or fragment part from [uri]. /// /// If [uri] is already relative (has no scheme), it's returned as-is. /// If that is not desired, the caller can pass `baseUri.resolveUri(uri)` /// as the [uri] instead. /// /// If the [uri] has a scheme or authority part which differs from /// the [baseUri], or if there is no overlap in the paths of the /// two URIs at all, the [uri] is returned as-is. /// /// Otherwise the result is a path-only URI which satsifies /// `baseUri.resolveUri(result) == uri`, /// /// The `baseUri` must be absolute. Uri? relativizeUri(Uri? uri, Uri? baseUri) { if (baseUri == null) return uri; assert(baseUri.isAbsolute); if (uri!.hasQuery || uri.hasFragment) { uri = Uri( scheme: uri.scheme, userInfo: uri.hasAuthority ? uri.userInfo : null, host: uri.hasAuthority ? uri.host : null, port: uri.hasAuthority ? uri.port : null, path: uri.path); } // Already relative. We assume the caller knows what they are doing. if (!uri.isAbsolute) return uri; if (baseUri.scheme != uri.scheme) { return uri; } // If authority differs, we could remove the scheme, but it's not worth it. if (uri.hasAuthority != baseUri.hasAuthority) return uri; if (uri.hasAuthority) { if (uri.userInfo != baseUri.userInfo || uri.host.toLowerCase() != baseUri.host.toLowerCase() || uri.port != baseUri.port) { return uri; } } baseUri = baseUri.normalizePath(); var base = [...baseUri.pathSegments]; if (base.isNotEmpty) base.removeLast(); uri = uri.normalizePath(); var target = [...uri.pathSegments]; if (target.isNotEmpty && target.last.isEmpty) target.removeLast(); var index = 0; while (index < base.length && index < target.length) { if (base[index] != target[index]) { break; } index++; } if (index == base.length) { if (index == target.length) { return Uri(path: './'); } return Uri(path: target.skip(index).join('/')); } else if (index > 0) { var buffer = StringBuffer(); for (var n = base.length - index; n > 0; --n) { buffer.write('../'); } buffer.writeAll(target.skip(index), '/'); return Uri(path: buffer.toString()); } else { return uri; } } // Character constants used by this package. /// "Line feed" control character. const int $lf = 0x0a; /// "Carriage return" control character. const int $cr = 0x0d; /// Space character. const int $space = 0x20; /// Character `#`. const int $hash = 0x23; /// Character `.`. const int $dot = 0x2e; /// Character `:`. const int $colon = 0x3a; /// Character `?`. const int $question = 0x3f; /// Character `{`. const int $lbrace = 0x7b; ��NN<BE/+HI:)'/Q5)@D&?,"K) 5!=D;(N!&E:&F A;EP&I)&E17L>0(?*9H+8H69&F6,"'"%$)6)%8=P.+H =$7E<&<9!>;9GJCA2<)$-#*:22G#&N<,@$%(*&E9(  "4!4.) -#)$package:package_config/src/util.dart`file:///github/home/.pub-cache/hosted/pub.dartlang.org/package_config-2.0.2/lib/src/util_io.dart�// Copyright (c) 2020, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. /// Utility methods requiring dart:io and used by more than one library in the /// package. library package_config.util_io; import 'dart:io'; import 'dart:typed_data'; Future defaultLoader(Uri uri) async { if (uri.isScheme('file')) { var file = File.fromUri(uri); try { return await file.readAsBytes(); } catch (_) { return null; } } if (uri.isScheme('http') || uri.isScheme('https')) { return _httpGet(uri); } throw UnsupportedError('Default URI unsupported scheme: $uri'); } Future _httpGet(Uri uri) async { assert(uri.isScheme('http') || uri.isScheme('https')); var client = HttpClient(); var request = await client.getUrl(uri); var response = await request.close(); if (response.statusCode != HttpStatus.ok) { return null; } var splitContent = await response.toList(); var totalLength = 0; if (splitContent.length == 1) { var part = splitContent[0]; if (part is Uint8List) { return part; } } for (var list in splitContent) { totalLength += list.length; } var result = Uint8List(totalLength); var offset = 0; for (var contentPart in splitContent as Iterable) { result.setRange(offset, offset + contentPart.length, contentPart); offset += contentPart.length; } return result; } /// The file name of a path. /// /// The file name is everything after the last occurrence of /// [Platform.pathSeparator], or the entire string if no /// path separator occurs in the string. String fileName(String path) { var separator = Platform.pathSeparator; var lastSeparator = path.lastIndexOf(separator); if (lastSeparator < 0) return path; return path.substring(lastSeparator + separator.length); } /// The directory name of a path. /// /// The directory name is everything before the last occurrence of /// [Platform.pathSeparator], or the empty string if no /// path separator occurs in the string. String dirName(String path) { var separator = Platform.pathSeparator; var lastSeparator = path.lastIndexOf(separator); if (lastSeparator < 0) return ''; return path.substring(0, lastSeparator); } /// Join path parts with the [Platform.pathSeparator]. /// /// If a part ends with a path separator, then no extra separator is /// inserted. String pathJoin(String part1, String part2, [String? part3]) { var separator = Platform.pathSeparator; var separator1 = part1.endsWith(separator) ? '' : separator; if (part3 == null) { return '$part1$separator1$part2'; } var separator2 = part2.endsWith(separator) ? '' : separator; return '$part1$separator1$part2$separator2$part3'; } /// Join an unknown number of path parts with [Platform.pathSeparator]. /// /// If a part ends with a path separator, then no extra separator is /// inserted. String pathJoinAll(Iterable parts) { var buffer = StringBuffer(); var separator = ''; for (var part in parts) { buffer ..write(separator) ..write(part); separator = part.endsWith(Platform.pathSeparator) ? '' : Platform.pathSeparator; } return buffer.toString(); } nNN<O 2" '7B-9*(.." # 'AG"=9)*3&;"C8)*3$+7E?*?&?5HE- M'package:package_config/src/util_io.dartʙ���om M2������ B*  �W��`��`A��jlnop9���u i��`A7.FG!7{���x�=V`��L�1fk`���L�K�M� �{�|[ �)7 7 7:7#7?��7 7�� '+02:=?ACFHPSU]_bdfpsvy����������*�|����  ���� ��  " $ �� "$ �� CEH��������IJ!��""NQ%��&&N��)*��+T+U*��.T.U.a.V.W*��4*��6X6Z6[6]6_6`6b6d6e6g)A��BA��DLDiDjDkDWDl)K��LmK��NmNnNoNtK��SK��UpUqUsUu)Z��[n[o[tZ��_s_uZ��b��d��e��e��g��g��dvj��kak��mwmxkWj��qaq��swsxqWqVj��xj��z��{��{��zbzdzezgj�р��Ԁ�I��Ud�����΀�L��i��j��k��W��l���π�L��i��j��k��W��l���ˀ������р��Ԁ�Id�����ˀ�q���р�d�����΀�n��o���Ԁ������π�n��o���Ԁ�����t���Հ��Ԁ������ˀ�s��u���р�d�Ā��΀��Ԁ������π��Ԁ�����n��o���ˀ�u���р�d�ƀ��π�~���ˀ�d���р�d�ǀǁ΀�V�ȁԀʀȀǁπ�V�́Ԁ΀Ȁ�~�ǁՀсԀҀȀǁˀԀ���d�ԀրԁԀ؀Հǁр�d�ۀ܁π�~�܁ˀ�d�܁р�d�܀�΀䀓��=�䀚��π耓��=�耚�耔��р�i����ր��΀��������π�����������ˀ��������������������ׁ�΁�ׁ���������������������������ρ�ׁ���������������������������ˁ���!��"��C��E��G��I��ׁ'�P�'�V�؁*�΁+�؁,�X�*�ρ.�؁/�X�*�ˁ1p�1�F�ف4�΁5�ف6�u�5�v�5�w�5�x�5�y�5�z�5�{�5�|�5�}�4�ρ@�فA�u�@�v�@�w�@�x�@�y�@�z�@�{�@�|�@�}�4�ˁK�~�K��K���K���K���K���K���K���K���ځU�ˁV�V�ځX���V���V���V�V�����܁^�݁a�ށa���݁d����f��a��_�^�a��k�Ӂl�f��n�сo��q��a��a�(�^��u�ρv4�j�ρx5�f�ˁz��{��u�ˁ}6���ˁ���v9�a��x���ˁ�s�{��{��{��{���h�ˁ�<�j�Ӂ���?�h�ρ���@��s�`�Ӂ��c�с��a�򁘁с�K���ρ�P��L��M�a�󁟁с����ρ�M��R��S�a��a���a���a���a���a�����ˁ����a�����Ӂ������ˁ�{�a�����ρ����ˁ������ρ������ˁ����a�����ˁ��������a�������с����ˁŀ��ŀ����ρȀ���b���ρˀ�������������������u������������������q��s�����t�ˁــÁـŁa��݁Ӂ��a����Ձ�݁�́�΁a���с��a����ҁ��������ぽ�灅q��`�ρ��}���`�ˁ���v�����񁐀�������e���j�ˁ���^��� �� �^� �����˂� �g�˂� �ށ݂� ������� �˂ �� �ς �����т��˂� ��˂����5��p��˂� ���˂������т���˂� ���˂!�F�a��ȁH�#�ς%�6�%K�c�˂(u�ȁR���S�ȁU���˂-���(s�-�W���ς1����b���]���ӂ5���4���j�ˁR���k�!�n�a��<�т=��������������ف�������b�����������������������������-���-���a��N�тO�N�˂Q�F�Q���Qu�a��U�тV��X��Y�ӂZ�X��Y�˂]���X��\�˂`� �_�ςb���f��d�˂e���i�ӂg�����^� �j�ςk�!������тn��"�p�тq���тs�a�#���΂v��w�$� �΂y��z�%�z�&�'!*3;EVZfm�������������ĀՀ����(�>�P�]�j�r�����������ׁ́́ف�������.�=�K�b�k�r�|�������������‚˂ւނ��� ����2�C�`�j�}�������������Ãȃԃ������� ���&�-�8�A�I�S�Y�d�j�q�s�~�������������Ä҄ބ���������� ��(�1�=�I�W�[�f�x�������������������ʅۅ����� ����4�5�8�G�U�^�c�d���������ĆφІ׆݆������=�A�G�T�\�f�r�t�����LJއ������� ���&�X�r�x���������������Ĉֈ����� ��%�*�5�D�N�c�u�|�����������ĉՉ�������� �%�/�?�A�Y�d�����������������ˊۊ����%�&�)�=�A�T�f�o���������ʋՋۋߋ������� ��*�3�;�F�T�g�t�������������͌ό������%�)�5�Y�a�b�e�k�p�v����������������ʍэԍ�������*�6�@�M�h�}���������ώ֎�������� �1�>�E�P�\�`�m�r���������������ɏ׏���&�5�X����������������������0�1�D�_�b�e�k�p�t�z�������������Ǒّ� �2�\�������Ғڒ��1�<�C�E�R�Y�Z�]�^�}���������Ǔ֓������ ������ �#�+�A�E�J�j�r�x�~�����������������ǔϔה�������� ���"�-�2�<������G�N�V�|�����������-�`�����ؗߗ�����������#�+�5�E�Q�_�i�o�������ɘИݘ���������-�1�3�;�>�A�P�e�r��������������Ù˙ϙؙ��������%�2�:�=�I�Y�c�m�~���������š˚ښ��package_config.package_configFileDirectoryUint8ListdiscoverthrowErrorloadPackageConfigfilepreferNewestonErrorloadPackageConfigUriloaderfindPackageConfigdirectoryrecursefindPackageConfigUrilocationsavePackageConfigconfigurationpackage_config.package_config_typesPackageConfigPackageLanguageVersionInvalidLanguageVersionPackageConfigErrorpackages_filedefaultLoaderpathJoinpackageConfigJsonPathpath.dart_tool/package_config.jsondotPackagesPath.packagescurrentPath.parentPath..baseDirectoryrecursive:async_future:is_sync:return_value:async_op_then:async_op_error:await_jump_var:await_ctx_var:saved_try_context_var0:async_op:result:exception:stack_traceisAbsoluteabsoluteexistspackageConfigparentDirectoryparentexceptionstack_traceisSchemepackageMust not be a package: URIresolveUriendsWith/bytesfindPackagConfigInDirectorypackageConfigFilecheckForPackageConfigJsonFile.dart_toolpackage_config.jsoncheckForDotPackagesFile_PackageConfigArgumentErrorvaluenamemessagefromerrorinvalidValuePackageConfigFormatExceptionsourceoffsetmaxVersionemptypackagesextraDataparseBytesbaseUriparseStringparseJsonjsonDatawriteBytesoutputwriteStringtoJsonversion[]packageNamepackageOfresolvepackageUritoPackageUrinonPackageUrirootpackageUriRootlanguageVersionrelativeRootmaxValuemajorminorparsecompareToother==hashCodetoStringSimplePackageConfig_packages_packageTreevalidVersionsortedPackagessortpackageTree:sync-for-iteratorallPackagesiteratormoveNextpcurrent[]=_validateVersion<>Must be in the range 1 to _validatePackagesoriginalPackagespackageNamestreeoriginalPackagePackage : containsDuplicate package name ''addexistingPackageisRootConflictPackages and have the same root directory: . isPackageRootConflict is inside the package URI root of package URI root: root: valuessubstringlength+Must not be a package URIhasQueryhasFragmentMust not have query or fragment partrestschemeSimplePackagevalidatefatalErrorinvalidIndex>=Not a valid package nameIn package : Not an absolute URI with no query or fragment with a path ending in /hasSchemereplacefragmenthostpathSegmentsportqueryqueryParametersuserInfoThe package URI root is not below the package root_SimpleLanguageVersionBaseresultSimpleLanguageVersion_source*^&SimpleInvalidLanguageVersionunary-PackageTreeMutablePackageTree_packageChildren:sync_op_gen:sync_op:iterator_currentchildren_yieldEachIterablestarttreePackagetreePackagePathstartsWithtreePackagePathLengthtreePackageUriRoot_treeOffindPackageOfchildPackagechildPathchildPathLengthuriRootEmptyPackageTreeConflictExceptionpackageRootparseLanguageVersionindexreadNumeralMissing numbercharcodeUnitAtdigitfirstDigitNumber too large<=Leading zero not allowedMissing '.'Unexpected trailing character_beginsWithlongerPathi_compareRootp1p2dartToolDirNamepackageConfigFileNamepackagesFileNamereadAnyConfigFile:saved_try_context_var1alternateFileexistsSyncreadAsByteseurireadAnyConfigFileUrilastFile cannot be readparseAnyConfigFilefirstCharreadPackageConfigJsonFilereadDotPackagesFilewritePackageConfigJsonFileconfigtargetDirectorydartToolDircreatesinkopenWriteencodingmodedoneJsonclosedonePackages_configVersionKey_packagesKey_topNames_nameKey_rootUriKey_packageUriKey_languageVersionKey_packageNames_generatedKey_generatorKey_generatorVersionKey_jsonUtf8Decoderfusedecoder_jsonUtf8Encoder parsePackageConfigBytesjsonObjectconvertparsePackageConfigStringparsePackageConfigJsonjsonbaseLocationMust be an absolute non-package: URItypeNameTintstringarrayobjectcheckType of package is not a JSON parsePackageentryrootUrihasNamehasRoothasVersionforEachkeyMissing name entryMissing rootUri entryparsedRootUriinvalidmappackageListconfigVersionpackageArraypackageMappackage entryMissing configVersion entryMissing packages listwritePackageConfigJsonUtf8datawritePackageConfigJsonStringwritepackageConfigToJsonentrieswriteDotPackagescommentgeneratorgeneratedgeneratorVersionGenerated by on _extractExtraDatareservedNamesisEmptycontainsKeyfilteredDatakeys_validateJsonevery_languageVersionignoreLineseparatorIndexendMissing package name-queryStartfragmentStartNo ':' on lineLocation URI must not have queryLocation URI must not have fragmentpackageValuepackageLocationPackage URI as location for packageSame package name occured more than once/lib/Must be absolutelinessplitremoveLastcommentLine# writeln# generated by package:package_config at "" is not a valid package namePackage location must not be a package URI: :package_config.util_validPackageNameCharacters$lf$cr$space$hash$dot$colon$question$lbraceisValidPackageNamecheckPackageNamenonDotccheckValidPackageUriNot a package: URIhasAuthorityPackage URIs must not have a host partPackage URIs must not have a query partPackage URIs must not have a fragment partPackage URIs must not start with a '/'firstSlashindexOfPackage URIs must start with the package name followed by a '/'badIndexPackage names mus be non-emptyPackage names must contain at least one non-'.' characterbadCharCodebadCharU+toRadixStringpadLeft0' ()Package names must not contain isAbsoluteDirectoryUriisUriPrefixprefixfirstNonWhitespaceChartrailingSlashhasAbsolutePathrelativizeUritoLowerCasenormalizePathbaseisNotEmptytarget./skipjoinbuffern../writeAllpackage_config.util_iohttphttpsDefault URI unsupported scheme: _httpGetclientgetUrlrequestresponsestatusCodetoListsplitContenttotalLengthpartlistcontentPartsetRangefileNameseparatorlastSeparatorlastIndexOfdirNamepart1part2part3separator1separator2pathJoinAllparts2147483647 ! $ &'()*+,-. 0123456789 ; = @ABCDEFGHIJKLMNOPQRSTUVWXYZ _ abcdefghijklmnopqrstuvwxyz ~ package:package_config/package_config.dart@methodspackage:package_config/package_config_types.dartpackage:package_config/src/discovery.dart@fields@getterspackage:package_config/src/errors.dart@constructorspackage:package_config/src/package_config.dart@factoriespackage:package_config/src/package_config_impl.dart@setterspackage:package_config/src/package_config_io.dartpackage:package_config/src/package_config_json.dartpackage:package_config/src/packages_file.dartpackage:package_config/src/util.dartpackage:package_config/src/util_io.dartdart:iodart:typed_datadart:coreboolObjectNulldart:asyncFutureUri_Uri_FutureFutureOrStackTraceFileSystemEntity_awaitHelperdart:_internalunsafeCastString_completeOnAsyncReturn_completeOnAsyncError_asyncThenWrapperHelper_asyncErrorWrapperHelperfromUriArgumentErrorFormatExceptionIterableSinkStringSinkMapComparableRangeErrorcheckValueInIntervalListofIteratornumSetdart:collection_CompactLinkedHashSet_GrowableList_SyncIterator_SyncIterablePatternEmptyIterabledart:convertIOSinkUtf8CodecEncodingFileModewait_literal2ConverterJsonCodecCodecJsonUtf8EncoderjsonDecodeJsonEncoderwithIndentMapEntryfromCharCodesDateTimenowStringBufferUnsupportedErrordart:_httpHttpClientHttpClientRequestHttpClientResponseStreamPlatformpathSeparatorEfficientLengthIterable_Override_allowMalformed_reviver_toEncodableʕ.m//�8`8`8dW��=I�"�V�lS�!���ʕ W�����J0000000000 �&L�A��[L���������������R�߀�� �@�c��`R�H^�]� ���р�`R��^�Ɂ ������`R��^������ǀ�`R��N�b�q��`�� ����`���@�J�`A�P�``�J�Sv�[�S`��X�����A ����`��>��N�� `��K>�� =���^����"`��>�/�lI�5!�B�9J�Ku�Z�R?=/�aI������^�a`��`����J�u�'�?=�,��>�^I�F�Y�P��b�a`��`����>�g��=�mx��x�|��x�^ ' a`��`���� a`����>����N����`��x������^^`��`����N�9�C`��x�Qv�J��E�<`�����a`��`����@"�qx�e��a�<��f�ma`��`����'a`��`������x���{�<����ma`��`����'a`��`�����a��=��#������m�a`��`����������A!�V���^`��`��J�kx�s�k!���� a`��`��b���A"����`��`��J�x� �"���]a`��`��c�]�d��A#�m���u`����$`��j��`��`��J��x����#����������^`��`��`��d�ݝ�A%����`��`��J��x���%��� a`��`��e ���Ơ�A&�Р���`��`��J��x����&���qa`��`��f!�����-A'��-� `��`��J�x��'��(��a`��`��g"�ΣӤA(����`��`��J��x����(�� �a`��`��h#����A)�����`��� `��j`���"`��j`���9`��j`���P`��j`���g`��j`���~`��j`����*`��j`��`��J��x����)����d����o�������Ƈ���͇���ԇ���ۇɇ���^`��`��`��`��`��`��`��`��`��i$���HA+��H�(,]��`��`��J�2x�:�2+��B�wa]��`��`��j%�^�k��A-�p���x`��]��`��J��x����-�����a`��]��`��k&������A.������`��`��J��x����.���-a`��`��l'������A/������`��`��J��x����/��ȉ~a`��`��m(�޴�4A0���4��`���1`��j`��`��J�x��0��#��1��/��^`��1`��`��u)�A�F��A2�N���V3`���e4`��`��J�ox�w�o2����C����Na`��`��`��v*�M�R��A5�X���`6`���n7`��`��J�xx���x5����������a`��`��`��w+������A8������`��`��J��x����8���� a`��`��x,�I�P��A9�`���h`��`��J�qx�y�q9����^a`��`��y-�#�*��A:�6���>`���K#`��`��J�]x�e�]:��r����x��a`��`��`��z.�����A;��� [`��J� x�� ;���a[`��{/�@��@��@�A<�@��@��@�`��`��J�@�x�@��@�<��@Ќia`��`��|0�D��D��D�A=�D��D��D� [`��J�D�x�D��D�=��D���a[`��} b6s���B�V��I\�  c � ( � � C � � D �  1 3@��!��>`��j�`��4A�)�5��?`��j�1`��5B�=�J��@`��j�F`��6C�R�^��A`��j�Z`��7D�f�q��B`��j�m`��8E�y����C`��j��`��9F������D`��j��`��:G������E`��j��`�� ;H���€�F`��j��`�� K����I`��j�`�� � �� L����J��K�1L�6���T���o�����R�m�s���M`��TX�� ��`��VZ������L`�����0�0��NL�A��`R?T&�c�Z�`��V+ �0����������OL������`����`��`R?T���V��� ���� ^�3�;��A�B���K`�j`���Z `��j`��`R>�d��I�j�v��n� >���I��������>����=���� ��>�Ƅ�=��А ' ?I��������>��)=�� ���I�0!%�:�4�`�`��>�M��=0�U�[��$�h'P'Q?J���ɀ�&���ː`�`���� `��[���@ ���`��J��5���`��v��.L`��Z#������� ���`��`��\������@����`��J��