diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..4efc3ac --- /dev/null +++ b/.gitignore @@ -0,0 +1,11 @@ +*.iml +.gradle +/local.properties +/.idea +.DS_Store +/build +/captures +/keystore +.externalNativeBuild +.cxx +local.properties diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..f288702 --- /dev/null +++ b/LICENSE @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/README.md b/README.md new file mode 100644 index 0000000..2312774 --- /dev/null +++ b/README.md @@ -0,0 +1,21 @@ +# Dhizuku + +## 介绍 + +参考Shizuku的设计思想,分享 DeviceOwner (设备所有者) 权限给其余应用 + +## 支持版本 + +Android 5.0 ~ 13 + +## 捐赠支持 + +- [支付宝](https://qr.alipay.com/fkx18580lfpydiop04dze47) +- [微信](https://missuo.ru/file/fee5df1381671c996b127.png) +- [币安](https://missuo.ru/file/fee5df1381671c996b127.png) + +## 开源协议 + +Dhizuku目前基于 [**GNU General Public License v3 (GPL-3)**](http://www.gnu.org/copyleft/gpl.html) 开源,但不保证未来依然继续遵循此协议或开源,有权更改开源协议或开源状态。 + +当您选择基于Dhizuku进行开发时,需遵循所当前依赖的上游源码所规定的开源协议,不受新上游源码的开源协议影响。 \ No newline at end of file diff --git a/app/.gitignore b/app/.gitignore new file mode 100644 index 0000000..2bdf0f6 --- /dev/null +++ b/app/.gitignore @@ -0,0 +1,3 @@ +/build +/debug +/release \ No newline at end of file diff --git a/app/build.gradle.kts b/app/build.gradle.kts new file mode 100644 index 0000000..658d6c1 --- /dev/null +++ b/app/build.gradle.kts @@ -0,0 +1,134 @@ +import java.io.FileInputStream +import java.util.* + +@Suppress("DSL_SCOPE_VIOLATION") +plugins { + alias(libs.plugins.agp.app) + alias(libs.plugins.kotlin) + id("kotlin-kapt") +} + +val keystoreProps = Properties().apply { + load(FileInputStream(rootProject.file("keystore/r0s.properties"))) +} + +@Suppress("UnstableApiUsage") +android { + compileSdk = 33 + + defaultConfig { + // 你如果根据InstallerX的源码进行打包成apk或其他安装包格式 + // 请换一个applicationId,不要和官方的任何发布版本产生冲突。 + // If you use InstallerX source code, package it into apk or other installation package format + // Please change the applicationId to one that does not conflict with any official release. + applicationId = "com.rosan.dhizuku" + minSdk = 21 + targetSdk = 33 + versionCode = 2 + versionName = "1.0.2" + + testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" + vectorDrawables { + useSupportLibrary = true + } + } + + signingConfigs { + getByName("debug") { + keyAlias = keystoreProps.getProperty("keyAlias") + keyPassword = keystoreProps.getProperty("keyPassword") + storeFile = file(keystoreProps.getProperty("storeFile")) + storePassword = keystoreProps.getProperty("storePassword") + enableV1Signing = true + enableV2Signing = true + } + + create("release") { + keyAlias = keystoreProps.getProperty("keyAlias") + keyPassword = keystoreProps.getProperty("keyPassword") + storeFile = file(keystoreProps.getProperty("storeFile")) + storePassword = keystoreProps.getProperty("storePassword") + enableV1Signing = true + enableV2Signing = true + } + } + + buildTypes { + getByName("debug") { + signingConfig = signingConfigs.getByName("debug") + isMinifyEnabled = false + proguardFiles( + getDefaultProguardFile("proguard-android-optimize.txt"), + "proguard-rules.pro" + ) + } + + getByName("release") { + signingConfig = signingConfigs.getByName("release") + isMinifyEnabled = true + proguardFiles( + getDefaultProguardFile("proguard-android-optimize.txt"), + "proguard-rules.pro" + ) + } + } + + compileOptions { + targetCompatibility = JavaVersion.VERSION_11 + sourceCompatibility = JavaVersion.VERSION_11 + } + + kotlin { + jvmToolchain(11) + } + + buildFeatures { + compose = true + } + + composeOptions { +// kotlinCompilerExtensionVersion = libs.versions.compose.get() + kotlinCompilerExtensionVersion = "1.4.4" + } + + packagingOptions { + resources { + excludes.add("/META-INF/{AL2.0,LGPL2.1}") + } + } +} + +dependencies { + implementation(project(":dhizuku-aidl")) + implementation(project(":dhizuku-shared")) + + implementation(libs.androidx.core) + implementation(libs.androidx.lifecycle) + implementation(libs.androidx.activity.compose) + implementation(libs.compose.ui) + implementation(libs.compose.material) + implementation(libs.compose.material3) + implementation(libs.compose.uiToolingPreview) + + implementation(libs.compose.navigation) + implementation(libs.compose.materialIcons) + + implementation(libs.room.runtime) + kapt(libs.room.compiler) + implementation(libs.room.ktx) + + implementation(libs.koin.core) + implementation(libs.koin.android) + implementation(libs.koin.compose) + + implementation(libs.accompanist) + implementation(libs.accompanist.navigationAnimation) + implementation(libs.accompanist.flowlayout) + implementation(libs.accompanist.drawablepainter) + implementation(libs.accompanist.systemuicontroller) + + implementation(libs.xxpermissions) + + implementation(libs.rikka.shizuku.api) + implementation(libs.rikka.shizuku.provider) +} \ No newline at end of file diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro new file mode 100644 index 0000000..fac7f23 --- /dev/null +++ b/app/proguard-rules.pro @@ -0,0 +1,81 @@ +# Add project specific ProGuard rules here. +# You can control the set of applied configuration files using the +# proguardFiles setting in build.gradle.kts. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original source file name. +#-renamesourcefileattribute SourceFile + +############################### +# kotlinx serialization rules # +############################### +# Keep `Companion` object fields of serializable classes. +# This avoids serializer lookup through `getDeclaredClasses` as done for named companion objects. +-if @kotlinx.serialization.Serializable class ** +-keepclassmembers class <1> { + static <1>$Companion Companion; +} + +# Keep `serializer()` on companion objects (both default and named) of serializable classes. +-if @kotlinx.serialization.Serializable class ** { + static **$* *; +} +-keepclassmembers class <2>$<3> { + kotlinx.serialization.KSerializer serializer(...); +} + +# Keep `INSTANCE.serializer()` of serializable objects. +-if @kotlinx.serialization.Serializable class ** { + public static ** INSTANCE; +} +-keepclassmembers class <1> { + public static <1> INSTANCE; + kotlinx.serialization.KSerializer serializer(...); +} + +# @Serializable and @Polymorphic are used at runtime for polymorphic serialization. +-keepattributes RuntimeVisibleAnnotations,AnnotationDefault + +# Serializer for classes with named companion objects are retrieved using `getDeclaredClasses`. +# If you have any, uncomment and replace classes with those containing named companion objects. +#-keepattributes InnerClasses # Needed for `getDeclaredClasses`. +#-if @kotlinx.serialization.Serializable class +#com.example.myapplication.HasNamedCompanion, # <-- List serializable classes with named companions. +#com.example.myapplication.HasNamedCompanion2 +#{ +# static **$* *; +#} +#-keepnames class <1>$$serializer { # -keepnames suffices; class is kept when serializer() is kept. +# static <1>$$serializer INSTANCE; +#} + +-keep public class android.** {*;} +-keep public class com.rosan.dhizuku.App {*;} +-keep public class com.rosan.dhizuku.ui.activity.** extends android.app.Activity +-keep public class com.rosan.dhizuku.data.process.model.impl.** { + public static void main(java.lang.String[]); +} +#-keep public class com.rosan.installer.data.process.model.impl.** extends com.rosan.installer.data.process.repo.ProcessRepo { +#public static void main(java.lang.String[]); +#} +#-keep public class com.rosan.installer.** extends android.app.Service +#-keep public class com.rosan.installer.** extends android.content.BroadcastReceiver +#-keep public class com.rosan.installer.** extends android.content.ContentProvider +#-keep class androidx.core.content.FileProvider {*;} +#-keep interface androidx.core.content.FileProvider$PathStrategy {*;} + +-keep class rikka.shizuku.ShizukuProvider diff --git a/app/src/androidTest/java/com/rosan/dhizuku/ExampleInstrumentedTest.kt b/app/src/androidTest/java/com/rosan/dhizuku/ExampleInstrumentedTest.kt new file mode 100644 index 0000000..1300147 --- /dev/null +++ b/app/src/androidTest/java/com/rosan/dhizuku/ExampleInstrumentedTest.kt @@ -0,0 +1,24 @@ +package com.rosan.dhizuku + +import androidx.test.platform.app.InstrumentationRegistry +import androidx.test.ext.junit.runners.AndroidJUnit4 + +import org.junit.Test +import org.junit.runner.RunWith + +import org.junit.Assert.* + +/** + * Instrumented test, which will execute on an Android device. + * + * See [testing documentation](http://d.android.com/tools/testing). + */ +@RunWith(AndroidJUnit4::class) +class ExampleInstrumentedTest { + @Test + fun useAppContext() { + // Context of the app under test. + val appContext = InstrumentationRegistry.getInstrumentation().targetContext + assertEquals("com.rosan.installer", appContext.packageName) + } +} \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000..c869a9e --- /dev/null +++ b/app/src/main/AndroidManifest.xml @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/aidl/android/content/IIntentReceiver.aidl b/app/src/main/aidl/android/content/IIntentReceiver.aidl new file mode 100644 index 0000000..5d9895e --- /dev/null +++ b/app/src/main/aidl/android/content/IIntentReceiver.aidl @@ -0,0 +1,9 @@ +package android.content; + +import android.content.Intent; +import android.os.Bundle; + +oneway interface IIntentReceiver { + void performReceive(in Intent intent, int resultCode, String data, + in Bundle extras, boolean ordered, boolean sticky, int sendingUser); +} diff --git a/app/src/main/aidl/android/content/IIntentSender.aidl b/app/src/main/aidl/android/content/IIntentSender.aidl new file mode 100644 index 0000000..2736b61 --- /dev/null +++ b/app/src/main/aidl/android/content/IIntentSender.aidl @@ -0,0 +1,10 @@ +package android.content; + +import android.content.IIntentReceiver; +import android.content.Intent; +import android.os.Bundle; + +oneway interface IIntentSender { + void send(int code, in Intent intent, String resolvedType, in IBinder whitelistToken, + IIntentReceiver finishedReceiver, String requiredPermission, in Bundle options); +} \ No newline at end of file diff --git a/app/src/main/aidl/android/content/pm/IOnChecksumsReadyListener.aidl b/app/src/main/aidl/android/content/pm/IOnChecksumsReadyListener.aidl new file mode 100644 index 0000000..9963a87 --- /dev/null +++ b/app/src/main/aidl/android/content/pm/IOnChecksumsReadyListener.aidl @@ -0,0 +1,6 @@ +package android.content.pm; +import android.content.pm.ApkChecksum; + +oneway interface IOnChecksumsReadyListener { + void onChecksumsReady(in List checksums); +} \ No newline at end of file diff --git a/app/src/main/aidl/android/content/pm/IPackageDeleteObserver2.aidl b/app/src/main/aidl/android/content/pm/IPackageDeleteObserver2.aidl new file mode 100644 index 0000000..cc2406b --- /dev/null +++ b/app/src/main/aidl/android/content/pm/IPackageDeleteObserver2.aidl @@ -0,0 +1,7 @@ +package android.content.pm; +import android.content.Intent; + +oneway interface IPackageDeleteObserver2 { + void onUserActionRequired(in Intent intent); + void onPackageDeleted(String packageName, int returnCode, String msg); +} \ No newline at end of file diff --git a/app/src/main/aidl/android/content/pm/IPackageInstallObserver2.aidl b/app/src/main/aidl/android/content/pm/IPackageInstallObserver2.aidl new file mode 100644 index 0000000..a1c9ec3 --- /dev/null +++ b/app/src/main/aidl/android/content/pm/IPackageInstallObserver2.aidl @@ -0,0 +1,8 @@ +package android.content.pm; +import android.content.Intent; +import android.os.Bundle; + +oneway interface IPackageInstallObserver2 { + void onUserActionRequired(in Intent intent); + void onPackageInstalled(String basePackageName, int returnCode, String msg, in Bundle extras); +} \ No newline at end of file diff --git a/app/src/main/aidl/android/content/pm/IPackageInstaller.aidl b/app/src/main/aidl/android/content/pm/IPackageInstaller.aidl new file mode 100644 index 0000000..14aab7c --- /dev/null +++ b/app/src/main/aidl/android/content/pm/IPackageInstaller.aidl @@ -0,0 +1,33 @@ +package android.content.pm; + +import android.content.pm.IPackageDeleteObserver2; +import android.content.pm.IPackageInstallerCallback; +import android.content.pm.IPackageInstallerSession; +import android.content.pm.PackageInstaller; +import android.content.pm.VersionedPackage; +import android.content.IntentSender; +import android.graphics.Bitmap; + +interface IPackageInstaller { + int createSession(in PackageInstaller.SessionParams params, String installerPackageName, String installerAttributionTag, int userId); +// @RequiresApi(Build.VERSION_CODES.S) +// int createSession(in PackageInstaller.SessionParams params, String installerPackageName, int userId); + void updateSessionAppIcon(int sessionId, in Bitmap appIcon); + void updateSessionAppLabel(int sessionId, String appLabel); + void abandonSession(int sessionId); + IPackageInstallerSession openSession(int sessionId); + PackageInstaller.SessionInfo getSessionInfo(int sessionId); + void registerCallback(IPackageInstallerCallback callback, int userId); + void unregisterCallback(IPackageInstallerCallback callback); + void uninstall(in VersionedPackage versionedPackage, String callerPackageName, int flags, + in IntentSender statusReceiver, int userId); + void uninstallExistingPackage(in VersionedPackage versionedPackage, String callerPackageName, + in IntentSender statusReceiver, int userId); + void installExistingPackage(String packageName, int installFlags, int installReason, + in IntentSender statusReceiver, int userId, in List whiteListedPermissions); + void setPermissionsResult(int sessionId, boolean accepted); + void bypassNextStagedInstallerCheck(boolean value); + void bypassNextAllowedApexUpdateCheck(boolean value); + void setAllowUnlimitedSilentUpdates(String installerPackageName); + void setSilentUpdatesThrottleTime(long throttleTimeInSeconds); +} \ No newline at end of file diff --git a/app/src/main/aidl/android/content/pm/IPackageInstallerCallback.aidl b/app/src/main/aidl/android/content/pm/IPackageInstallerCallback.aidl new file mode 100644 index 0000000..42e11bc --- /dev/null +++ b/app/src/main/aidl/android/content/pm/IPackageInstallerCallback.aidl @@ -0,0 +1,9 @@ +package android.content.pm; + +oneway interface IPackageInstallerCallback { + void onSessionCreated(int sessionId); + void onSessionBadgingChanged(int sessionId); + void onSessionActiveChanged(int sessionId, boolean active); + void onSessionProgressChanged(int sessionId, float progress); + void onSessionFinished(int sessionId, boolean success); +} \ No newline at end of file diff --git a/app/src/main/aidl/android/content/pm/IPackageInstallerSession.aidl b/app/src/main/aidl/android/content/pm/IPackageInstallerSession.aidl new file mode 100644 index 0000000..0204d42 --- /dev/null +++ b/app/src/main/aidl/android/content/pm/IPackageInstallerSession.aidl @@ -0,0 +1,33 @@ +package android.content.pm; + +import android.content.pm.Checksum; +import android.content.pm.IOnChecksumsReadyListener; +import android.content.pm.IPackageInstallObserver2; +import android.content.IntentSender; +import android.os.ParcelFileDescriptor; + +interface IPackageInstallerSession { + void setClientProgress(float progress); + void addClientProgress(float progress); + String[] getNames(); + ParcelFileDescriptor openWrite(String name, long offsetBytes, long lengthBytes); + ParcelFileDescriptor openRead(String name); + void write(String name, long offsetBytes, long lengthBytes, in ParcelFileDescriptor fd); + void stageViaHardLink(String target); + void setChecksums(String name, in Checksum[] checksums, in byte[] signature); + void requestChecksums(in String name, int optional, int required, in List trustedInstallers, in IOnChecksumsReadyListener onChecksumsReadyListener); + void removeSplit(String splitName); + void close(); + void commit(in IntentSender statusReceiver, boolean forTransferred); + void transfer(in String packageName); + void abandon(); + void addFile(int location, String name, long lengthBytes, in byte[] metadata, in byte[] signature); + void removeFile(int location, String name); + boolean isMultiPackage(); + int[] getChildSessionIds(); + void addChildSessionId(in int sessionId); + void removeChildSessionId(in int sessionId); + int getParentSessionId(); + boolean isStaged(); + int getInstallFlags(); +} \ No newline at end of file diff --git a/app/src/main/aidl/android/content/pm/IPackageManager.aidl b/app/src/main/aidl/android/content/pm/IPackageManager.aidl new file mode 100644 index 0000000..86ce213 --- /dev/null +++ b/app/src/main/aidl/android/content/pm/IPackageManager.aidl @@ -0,0 +1,231 @@ +package android.content.pm; + +import android.content.ComponentName; +import android.content.Intent; +import android.content.IntentFilter; +import android.content.pm.ActivityInfo; +import android.content.pm.ApplicationInfo; +import android.content.pm.ChangedPackages; +import android.content.pm.InstantAppInfo; +import android.content.pm.FeatureInfo; +import android.content.pm.InstallSourceInfo; +import android.content.pm.IOnChecksumsReadyListener; +import android.content.pm.IPackageInstaller; +import android.content.pm.IntentFilterVerificationInfo; +import android.content.pm.InstrumentationInfo; +import android.content.pm.ModuleInfo; +import android.content.pm.PackageInfo; +import android.content.pm.PackageManager.ComponentEnabledSetting; +import android.content.pm.ProviderInfo; +import android.content.pm.PermissionGroupInfo; +import android.content.pm.PermissionInfo; +import android.content.pm.ResolveInfo; +import android.content.pm.ServiceInfo; +import android.content.pm.UserInfo; +import android.content.pm.VersionedPackage; +import android.graphics.Bitmap; +import android.net.Uri; +import android.os.Bundle; +import android.os.ParcelFileDescriptor; +import android.os.PersistableBundle; +import android.content.IntentSender; + +interface IPackageManager { + void checkPackageStartable(String packageName, int userId); + boolean isPackageAvailable(String packageName, int userId); + PackageInfo getPackageInfo(String packageName, long flags, int userId); + PackageInfo getPackageInfoVersioned(in VersionedPackage versionedPackage, + long flags, int userId); + int getPackageUid(String packageName, long flags, int userId); + int[] getPackageGids(String packageName, long flags, int userId); + String[] currentToCanonicalPackageNames(in String[] names); + String[] canonicalToCurrentPackageNames(in String[] names); + ApplicationInfo getApplicationInfo(String packageName, long flags, int userId); + int getTargetSdkVersion(String packageName); + ActivityInfo getActivityInfo(in ComponentName className, long flags, int userId); + boolean activitySupportsIntent(in ComponentName className, in Intent intent, + String resolvedType); + ActivityInfo getReceiverInfo(in ComponentName className, long flags, int userId); + ServiceInfo getServiceInfo(in ComponentName className, long flags, int userId); + ProviderInfo getProviderInfo(in ComponentName className, long flags, int userId); + boolean isProtectedBroadcast(String actionName); + int checkSignatures(String pkg1, String pkg2); + int checkUidSignatures(int uid1, int uid2); + List getAllPackages(); + String[] getPackagesForUid(int uid); + String getNameForUid(int uid); + String[] getNamesForUids(in int[] uids); + int getUidForSharedUser(String sharedUserName); + int getFlagsForUid(int uid); + int getPrivateFlagsForUid(int uid); + boolean isUidPrivileged(int uid); + ResolveInfo resolveIntent(in Intent intent, String resolvedType, long flags, int userId); + ResolveInfo findPersistentPreferredActivity(in Intent intent, int userId); + boolean canForwardTo(in Intent intent, String resolvedType, int sourceUserId, int targetUserId); + ResolveInfo resolveService(in Intent intent, + String resolvedType, long flags, int userId); + ProviderInfo resolveContentProvider(String name, long flags, int userId); + void querySyncProviders(inout List outNames, + inout List outInfo); + InstrumentationInfo getInstrumentationInfo( + in ComponentName className, int flags); + void finishPackageInstall(int token, boolean didLaunch); + void setInstallerPackageName(in String targetPackage, in String installerPackageName); + void setApplicationCategoryHint(String packageName, int categoryHint, String callerPackageName); + String getInstallerPackageName(in String packageName); + InstallSourceInfo getInstallSourceInfo(in String packageName); + void resetApplicationPreferences(int userId); + ResolveInfo getLastChosenActivity(in Intent intent, + String resolvedType, int flags); + void setLastChosenActivity(in Intent intent, String resolvedType, int flags, + in IntentFilter filter, int match, in ComponentName activity); + void addPreferredActivity(in IntentFilter filter, int match, + in ComponentName[] set, in ComponentName activity, int userId, boolean removeExisting); + void replacePreferredActivity(in IntentFilter filter, int match, + in ComponentName[] set, in ComponentName activity, int userId); + void clearPackagePreferredActivities(String packageName); + int getPreferredActivities(out List outFilters, + out List outActivities, String packageName); + void addPersistentPreferredActivity(in IntentFilter filter, in ComponentName activity, int userId); + void clearPackagePersistentPreferredActivities(String packageName, int userId); + void addCrossProfileIntentFilter(in IntentFilter intentFilter, String ownerPackage, + int sourceUserId, int targetUserId, int flags); + void clearCrossProfileIntentFilters(int sourceUserId, String ownerPackage); + String[] setDistractingPackageRestrictionsAsUser(in String[] packageNames, int restrictionFlags, + int userId); + String[] getUnsuspendablePackagesForUser(in String[] packageNames, int userId); + boolean isPackageSuspendedForUser(String packageName, int userId); + Bundle getSuspendedPackageAppExtras(String packageName, int userId); + byte[] getPreferredActivityBackup(int userId); + void restorePreferredActivities(in byte[] backup, int userId); + byte[] getDefaultAppsBackup(int userId); + void restoreDefaultApps(in byte[] backup, int userId); + byte[] getDomainVerificationBackup(int userId); + void restoreDomainVerification(in byte[] backup, int userId); + + ComponentName getHomeActivities(out List outHomeCandidates); + void setHomeActivity(in ComponentName className, int userId); + void overrideLabelAndIcon(in ComponentName componentName, String nonLocalizedLabel, + int icon, int userId); + void restoreLabelAndIcon(in ComponentName componentName, int userId); + + void setComponentEnabledSetting(in ComponentName componentName, + in int newState, in int flags, int userId); + void setComponentEnabledSettings(in List settings, int userId); + + int getComponentEnabledSetting(in ComponentName componentName, int userId); + + void setApplicationEnabledSetting(in String packageName, in int newState, int flags, + int userId, String callingPackage); + + int getApplicationEnabledSetting(in String packageName, int userId); + void logAppProcessStartIfNeeded(String packageName, String processName, int uid, String seinfo, String apkFile, int pid); + void flushPackageRestrictionsAsUser(in int userId); + + void setPackageStoppedState(String packageName, boolean stopped, int userId); + void freeStorage(in String volumeUuid, in long freeStorageSize, + int storageFlags, in IntentSender pi); + void clearApplicationProfileData(in String packageName); + + String[] getSystemSharedLibraryNames(); + boolean hasSystemFeature(String name, int version); + void enterSafeMode(); + boolean isSafeMode(); + boolean hasSystemUidErrors(); + oneway void notifyPackageUse(String packageName, int reason); + oneway void notifyDexLoad(String loadingPackageName, + in Map classLoaderContextMap, String loaderIsa); + boolean performDexOptMode(String packageName, boolean checkProfiles, + String targetCompilerFilter, boolean force, boolean bootComplete, String splitName); + boolean performDexOptSecondary(String packageName, + String targetCompilerFilter, boolean force); + void dumpProfiles(String packageName, boolean dumpClassesAndMethods); + void forceDexOpt(String packageName); + void reconcileSecondaryDexFiles(String packageName); + int getMoveStatus(int moveId); + int movePackage(in String packageName, in String volumeUuid); + int movePrimaryStorage(in String volumeUuid); + boolean setInstallLocation(int loc); + int getInstallLocation(); + int installExistingPackageAsUser(String packageName, int userId, int installFlags, + int installReason, in List whiteListedPermissions); + void verifyPendingInstall(int id, int verificationCode); + void extendVerificationTimeout(int id, int verificationCodeAtTimeout, long millisecondsToDelay); + void verifyIntentFilter(int id, int verificationCode, in List failedDomains); + int getIntentVerificationStatus(String packageName, int userId); + boolean updateIntentVerificationStatus(String packageName, int status, int userId); + boolean isFirstBoot(); + boolean isOnlyCoreApps(); + boolean isDeviceUpgrading(); + + boolean isStorageLow(); + boolean setApplicationHiddenSettingAsUser(String packageName, boolean hidden, int userId); + boolean getApplicationHiddenSettingAsUser(String packageName, int userId); + void setSystemAppHiddenUntilInstalled(String packageName, boolean hidden); + boolean setSystemAppInstallState(String packageName, boolean installed, int userId); + IPackageInstaller getPackageInstaller(); + boolean setBlockUninstallForUser(String packageName, boolean blockUninstall, int userId); + boolean getBlockUninstallForUser(String packageName, int userId); + String getPermissionControllerPackageName(); + String getSdkSandboxPackageName(); + byte[] getInstantAppCookie(String packageName, int userId); + boolean setInstantAppCookie(String packageName, in byte[] cookie, int userId); + Bitmap getInstantAppIcon(String packageName, int userId); + boolean isInstantApp(String packageName, int userId); + boolean setRequiredForSystemUser(String packageName, boolean systemUserApp); + void setUpdateAvailable(String packageName, boolean updateAvaialble); + String getServicesSystemSharedLibraryPackageName(); + String getSharedSystemSharedLibraryPackageName(); + ChangedPackages getChangedPackages(int sequenceNumber, int userId); + boolean isPackageDeviceAdminOnAnyUser(String packageName); + int getInstallReason(String packageName, int userId); + boolean canRequestPackageInstalls(String packageName, int userId); + void deletePreloadsFileCache(); + ComponentName getInstantAppResolverComponent(); + ComponentName getInstantAppResolverSettingsComponent(); + ComponentName getInstantAppInstallerComponent(); + String getInstantAppAndroidId(String packageName, int userId); + void setHarmfulAppWarning(String packageName, CharSequence warning, int userId); + CharSequence getHarmfulAppWarning(String packageName, int userId); + boolean hasSigningCertificate(String packageName, in byte[] signingCertificate, int flags); + boolean hasUidSigningCertificate(int uid, in byte[] signingCertificate, int flags); + String getDefaultTextClassifierPackageName(); + String getSystemTextClassifierPackageName(); + String getAttentionServicePackageName(); + String getRotationResolverPackageName(); + String getWellbeingPackageName(); + String getAppPredictionServicePackageName(); + String getSystemCaptionsServicePackageName(); + String getSetupWizardPackageName(); + String getIncidentReportApproverPackageName(); + String getContentCaptureServicePackageName(); + boolean isPackageStateProtected(String packageName, int userId); + void sendDeviceCustomizationReadyBroadcast(); + List getInstalledModules(int flags); + ModuleInfo getModuleInfo(String packageName, int flags); + int getRuntimePermissionsVersion(int userId); + void setRuntimePermissionsVersion(int version, int userId); + void notifyPackagesReplacedReceived(in String[] packages); + void requestPackageChecksums(in String packageName, boolean includeSplits, int optional, int required, in List trustedInstallers, in IOnChecksumsReadyListener onChecksumsReadyListener, int userId); + IntentSender getLaunchIntentSenderForPackage(String packageName, String callingPackage, + String featureId, int userId); + String[] getAppOpPermissionPackages(String permissionName); + PermissionGroupInfo getPermissionGroupInfo(String name, int flags); + boolean addPermission(in PermissionInfo info); + boolean addPermissionAsync(in PermissionInfo info); + void removePermission(String name); + int checkPermission(String permName, String pkgName, int userId); + void grantRuntimePermission(String packageName, String permissionName, int userId); + int checkUidPermission(String permName, int uid); + void setMimeGroup(String packageName, String group, in List mimeTypes); + String getSplashScreenTheme(String packageName, int userId); + void setSplashScreenTheme(String packageName, String themeName, int userId); + List getMimeGroup(String packageName, String group); + boolean isAutoRevokeWhitelisted(String packageName); + void makeProviderVisible(int recipientAppId, String visibleAuthority); + void makeUidVisible(int recipientAppId, int visibleUid); + IBinder getHoldLockToken(); + void holdLock(in IBinder token, in int durationMs); + void setKeepUninstalledPackages(in List packageList); + boolean canPackageQuery(String sourcePackageName, String targetPackageName, int userId); +} \ No newline at end of file diff --git a/app/src/main/aidl/android/content/pm/PackageInstaller.aidl b/app/src/main/aidl/android/content/pm/PackageInstaller.aidl new file mode 100644 index 0000000..dfca396 --- /dev/null +++ b/app/src/main/aidl/android/content/pm/PackageInstaller.aidl @@ -0,0 +1,4 @@ +package android.content.pm; + +parcelable PackageInstaller.SessionParams; +parcelable PackageInstaller.SessionInfo; \ No newline at end of file diff --git a/app/src/main/java/com/rosan/dhizuku/App.kt b/app/src/main/java/com/rosan/dhizuku/App.kt new file mode 100644 index 0000000..bce417f --- /dev/null +++ b/app/src/main/java/com/rosan/dhizuku/App.kt @@ -0,0 +1,40 @@ +package com.rosan.dhizuku + +import android.app.Application +import android.app.admin.DevicePolicyManager +import android.content.ComponentName +import android.content.Context +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.setValue +import com.rosan.dhizuku.di.init.appModules +import com.rosan.dhizuku.server.DhizukuDAReceiver +import org.koin.android.ext.koin.androidContext +import org.koin.android.ext.koin.androidLogger +import org.koin.core.context.startKoin +import rikka.sui.Sui + +class App : Application() { + var isDeviceAdminer by mutableStateOf(false) + private set + + var isDeviceOwner by mutableStateOf(false) + private set + + override fun onCreate() { + super.onCreate() + syncDeviceOwnerStatus() + startKoin { + androidLogger() + androidContext(this@App) + modules(appModules) + } + Sui.init(packageName) + } + + fun syncDeviceOwnerStatus() { + val manager = getSystemService(Context.DEVICE_POLICY_SERVICE) as DevicePolicyManager + isDeviceAdminer = manager.isAdminActive(ComponentName(this, DhizukuDAReceiver::class.java)) + isDeviceOwner = manager.isDeviceOwnerApp(this.packageName) + } +} diff --git a/app/src/main/java/com/rosan/dhizuku/data/console/model/entity/ConsoleError.kt b/app/src/main/java/com/rosan/dhizuku/data/console/model/entity/ConsoleError.kt new file mode 100644 index 0000000..9ae7304 --- /dev/null +++ b/app/src/main/java/com/rosan/dhizuku/data/console/model/entity/ConsoleError.kt @@ -0,0 +1,7 @@ +package com.rosan.dhizuku.data.console.model.entity + +data class ConsoleError( + val code: Int, + val read: String, + val error: String +) : Exception("code: $code, read: $read, error: $error") \ No newline at end of file diff --git a/app/src/main/java/com/rosan/dhizuku/data/console/model/impl/ConsoleRepoImpl.kt b/app/src/main/java/com/rosan/dhizuku/data/console/model/impl/ConsoleRepoImpl.kt new file mode 100644 index 0000000..cf37af6 --- /dev/null +++ b/app/src/main/java/com/rosan/dhizuku/data/console/model/impl/ConsoleRepoImpl.kt @@ -0,0 +1,67 @@ +package com.rosan.dhizuku.data.console.model.impl + +import android.os.Build +import com.rosan.dhizuku.data.console.repo.ConsoleRepo +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.withContext +import java.io.InputStream +import java.io.OutputStream +import java.util.concurrent.TimeUnit + +class ConsoleRepoImpl( + private val process: Process +) : ConsoleRepo { + override val inputStream: InputStream = process.inputStream + + override val errorStream: InputStream = process.errorStream + + override val outputStream: OutputStream = process.outputStream + + override suspend fun waitIt() { + withContext(Dispatchers.IO) { + kotlin.runCatching { + process.waitFor() + } + } + } + + override suspend fun waitIt(timeout: Long, unit: TimeUnit): Boolean { + return withContext(Dispatchers.IO) { + val startTime = System.nanoTime() + var rem = unit.toNanos(timeout) + do { + kotlin.runCatching { + exitValue() + return@withContext true + }.getOrElse { + if (rem > 0) Thread.sleep( + Math.min(TimeUnit.NANOSECONDS.toMillis(rem) + 1, 100) + ) + } + rem = unit.toNanos(timeout) - (System.nanoTime() - startTime) + } while (rem > 0) + return@withContext false + } + } + + override fun exitValue(): Int { + return process.exitValue() + } + + override fun isAlive(): Boolean { + return kotlin.runCatching { + exitValue() + false + }.getOrElse { true } + } + + override fun close() { + process.destroy() + } + + override fun closeForcibly() { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) + process.destroyForcibly() + else close() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/rosan/dhizuku/data/console/model/impl/ShizukuConsoleBuilderRepoImpl.kt b/app/src/main/java/com/rosan/dhizuku/data/console/model/impl/ShizukuConsoleBuilderRepoImpl.kt new file mode 100644 index 0000000..834c17a --- /dev/null +++ b/app/src/main/java/com/rosan/dhizuku/data/console/model/impl/ShizukuConsoleBuilderRepoImpl.kt @@ -0,0 +1,47 @@ +package com.rosan.dhizuku.data.console.model.impl + +import android.content.pm.PackageManager +import com.rosan.dhizuku.data.console.repo.ConsoleBuilderRepo +import com.rosan.dhizuku.data.console.repo.ConsoleRepo +import kotlinx.coroutines.channels.awaitClose +import kotlinx.coroutines.flow.callbackFlow +import kotlinx.coroutines.flow.first +import rikka.shizuku.Shizuku + +class ShizukuConsoleBuilderRepoImpl : ConsoleBuilderRepo() { + private fun _open(): ConsoleRepoImpl { + return ConsoleRepoImpl( + Shizuku.newProcess( + command.toTypedArray(), + environment?.toTypedArray(), + directory + ) + ) + } + + override suspend fun open(): ConsoleRepo { + return callbackFlow { + if (Shizuku.checkSelfPermission() == PackageManager.PERMISSION_GRANTED) { + send(_open()) + awaitClose { } + } else { + val listener = + Shizuku.OnRequestPermissionResultListener { requestCode, grantResult -> + if (requestCode != 0) return@OnRequestPermissionResultListener + kotlin.runCatching { _open() } + .onSuccess { + trySend(it) + } + .onFailure { + close(it) + } + } + Shizuku.addRequestPermissionResultListener(listener) + Shizuku.requestPermission(0) + awaitClose { + Shizuku.removeRequestPermissionResultListener(listener) + } + } + }.first() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/rosan/dhizuku/data/console/repo/ConsoleBuilderRepo.kt b/app/src/main/java/com/rosan/dhizuku/data/console/repo/ConsoleBuilderRepo.kt new file mode 100644 index 0000000..ff386fa --- /dev/null +++ b/app/src/main/java/com/rosan/dhizuku/data/console/repo/ConsoleBuilderRepo.kt @@ -0,0 +1,35 @@ +package com.rosan.dhizuku.data.console.repo + +abstract class ConsoleBuilderRepo { + companion object { + fun strings2environment(envp: List): Map { + val environment = mutableMapOf() + for (envstring in envp) { + var envstring = envstring + if (envstring.indexOf('\u0000'.code.toChar()) != -1) + envstring = envstring.replaceFirst("\u0000.*".toRegex(), "") + + val eqlsign = envstring.indexOf('=', 0) + if (eqlsign != -1) + environment[envstring.substring(0, eqlsign)] = envstring.substring(eqlsign + 1) + } + return environment + } + } + + var command: List = emptyList() + + var directory: String? = null + + var environment: List? = null + + fun command(vararg command: String) { + this.command = command.toList() + } + + fun environment(vararg environment: String) { + this.environment = environment.toList() + } + + abstract suspend fun open(): ConsoleRepo +} diff --git a/app/src/main/java/com/rosan/dhizuku/data/console/repo/ConsoleRepo.kt b/app/src/main/java/com/rosan/dhizuku/data/console/repo/ConsoleRepo.kt new file mode 100644 index 0000000..2989b5d --- /dev/null +++ b/app/src/main/java/com/rosan/dhizuku/data/console/repo/ConsoleRepo.kt @@ -0,0 +1,26 @@ +package com.rosan.dhizuku.data.console.repo + +import java.io.Closeable +import java.io.InputStream +import java.io.OutputStream +import java.util.concurrent.TimeUnit + +interface ConsoleRepo : Closeable { + val inputStream: InputStream + + val errorStream: InputStream + + val outputStream: OutputStream + + suspend fun waitIt() + + suspend fun waitIt(timeout: Long, unit: TimeUnit): Boolean + + fun exitValue(): Int + + fun isAlive(): Boolean + + override fun close() + + fun closeForcibly() +} diff --git a/app/src/main/java/com/rosan/dhizuku/data/console/util/ConsoleRepoUtil.kt b/app/src/main/java/com/rosan/dhizuku/data/console/util/ConsoleRepoUtil.kt new file mode 100644 index 0000000..eb89c52 --- /dev/null +++ b/app/src/main/java/com/rosan/dhizuku/data/console/util/ConsoleRepoUtil.kt @@ -0,0 +1,15 @@ +package com.rosan.dhizuku.data.console.util + +import com.rosan.dhizuku.data.console.model.impl.ShizukuConsoleBuilderRepoImpl +import com.rosan.dhizuku.data.console.repo.ConsoleRepo + +class ConsoleRepoUtil { + companion object { + suspend fun shizuku(action: ShizukuConsoleBuilderRepoImpl.() -> Unit): ConsoleRepo { + val repo = ShizukuConsoleBuilderRepoImpl() + repo.command("sh") + repo.action() + return repo.open() + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/rosan/dhizuku/data/console/util/ConsoleUtil.kt b/app/src/main/java/com/rosan/dhizuku/data/console/util/ConsoleUtil.kt new file mode 100644 index 0000000..5a4fdfe --- /dev/null +++ b/app/src/main/java/com/rosan/dhizuku/data/console/util/ConsoleUtil.kt @@ -0,0 +1,30 @@ +package com.rosan.dhizuku.data.console.util + +import com.rosan.dhizuku.data.console.repo.ConsoleRepo +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.withContext +import java.io.InputStream + +class ConsoleUtil( + private val repo: ConsoleRepo +) { + private suspend fun readBytes(input: InputStream): ByteArray = withContext(Dispatchers.IO) { + var bytes = ByteArray(0) + while (repo.isAlive()) + if (input.available() > 0) + bytes += ByteArray(input.available()).let { + it.sliceArray(0 until input.read(it)) + } + return@withContext bytes + } + + suspend fun inputBytes(): ByteArray = readBytes(repo.inputStream) + + suspend fun errorBytes(): ByteArray = readBytes(repo.errorStream) + + suspend fun appendLine(any: Any?) = withContext(Dispatchers.IO) { + val writer = repo.outputStream.writer() + writer.appendLine(any.toString()) + writer.flush() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/rosan/dhizuku/data/settings/model/room/DhizukuRoom.kt b/app/src/main/java/com/rosan/dhizuku/data/settings/model/room/DhizukuRoom.kt new file mode 100644 index 0000000..3dc9e5a --- /dev/null +++ b/app/src/main/java/com/rosan/dhizuku/data/settings/model/room/DhizukuRoom.kt @@ -0,0 +1,28 @@ +package com.rosan.dhizuku.data.settings.model.room + +import androidx.room.Database +import androidx.room.Room +import androidx.room.RoomDatabase +import com.rosan.dhizuku.data.settings.model.room.dao.AppDao +import com.rosan.dhizuku.data.settings.model.room.entity.AppEntity +import org.koin.core.component.KoinComponent +import org.koin.core.component.get + +@Database( + entities = [AppEntity::class], + version = 1, + exportSchema = false +) +abstract class DhizukuRoom : RoomDatabase() { + companion object : KoinComponent { + fun createInstance(): DhizukuRoom { + return Room.databaseBuilder( + get(), + DhizukuRoom::class.java, + "dhizuku.db", + ).build() + } + } + + abstract val appDao: AppDao +} \ No newline at end of file diff --git a/app/src/main/java/com/rosan/dhizuku/data/settings/model/room/dao/AppDao.kt b/app/src/main/java/com/rosan/dhizuku/data/settings/model/room/dao/AppDao.kt new file mode 100644 index 0000000..2d01b07 --- /dev/null +++ b/app/src/main/java/com/rosan/dhizuku/data/settings/model/room/dao/AppDao.kt @@ -0,0 +1,35 @@ +package com.rosan.dhizuku.data.settings.model.room.dao + +import androidx.room.* +import com.rosan.dhizuku.data.settings.model.room.entity.AppEntity +import kotlinx.coroutines.flow.Flow + +@Dao +interface AppDao { + @Query("select * from app") + fun all(): List + + @Query("select * from app") + fun flowAll(): Flow> + + @Query("select * from app where id = :id limit 1") + fun find(id: Long): AppEntity? + + @Query("select * from app where id = :id limit 1") + fun flowFind(id: Long): Flow + + @Query("select * from app where uid = :uid limit 1") + fun findByUID(uid: Int): AppEntity? + + @Query("select * from app where uid = :uid limit 1") + fun flowFindByUID(uid: Int): Flow + + @Update + suspend fun update(entity: AppEntity) + + @Insert + suspend fun insert(entity: AppEntity) + + @Delete + suspend fun delete(entity: AppEntity) +} \ No newline at end of file diff --git a/app/src/main/java/com/rosan/dhizuku/data/settings/model/room/entity/AppEntity.kt b/app/src/main/java/com/rosan/dhizuku/data/settings/model/room/entity/AppEntity.kt new file mode 100644 index 0000000..6a0dfdc --- /dev/null +++ b/app/src/main/java/com/rosan/dhizuku/data/settings/model/room/entity/AppEntity.kt @@ -0,0 +1,24 @@ +package com.rosan.dhizuku.data.settings.model.room.entity + +import androidx.room.ColumnInfo +import androidx.room.Entity +import androidx.room.Index +import androidx.room.PrimaryKey + +@Entity( + tableName = "app", + indices = [ + Index(value = ["uid"], unique = true), + Index(value = ["allow_api"]) + ] +) +data class AppEntity( + @PrimaryKey(autoGenerate = true) + @ColumnInfo(name = "id") + var id: Long = 0L, + @ColumnInfo(name = "uid") var uid: Int, + @ColumnInfo(name = "allow_api") var allowApi: Boolean, + @ColumnInfo(name = "created_at") var createdAt: Long = System.currentTimeMillis(), + @ColumnInfo(name = "modified_at") var modifiedAt: Long = System.currentTimeMillis(), +) { +} \ No newline at end of file diff --git a/app/src/main/java/com/rosan/dhizuku/data/settings/model/room/impl/AppRepoImpl.kt b/app/src/main/java/com/rosan/dhizuku/data/settings/model/room/impl/AppRepoImpl.kt new file mode 100644 index 0000000..97e2b15 --- /dev/null +++ b/app/src/main/java/com/rosan/dhizuku/data/settings/model/room/impl/AppRepoImpl.kt @@ -0,0 +1,35 @@ +package com.rosan.dhizuku.data.settings.model.room.impl + +import com.rosan.dhizuku.data.settings.model.room.dao.AppDao +import com.rosan.dhizuku.data.settings.model.room.entity.AppEntity +import com.rosan.dhizuku.data.settings.repo.AppRepo +import kotlinx.coroutines.flow.Flow + +class AppRepoImpl( + private val dao: AppDao +) : AppRepo { + override fun all(): List = dao.all() + + override fun flowAll(): Flow> = dao.flowAll() + + override fun find(id: Long): AppEntity? = dao.find(id) + + override fun flowFind(id: Long): Flow = dao.flowFind(id) + + override fun findByUID(uid: Int): AppEntity? = dao.findByUID(uid) + + override fun flowFindByUID(uid: Int): Flow = dao.flowFindByUID(uid) + + override suspend fun update(entity: AppEntity) { + entity.modifiedAt = System.currentTimeMillis() + dao.update(entity) + } + + override suspend fun insert(entity: AppEntity) { + entity.createdAt = System.currentTimeMillis() + entity.modifiedAt = System.currentTimeMillis() + dao.insert(entity) + } + + override suspend fun delete(entity: AppEntity) = dao.delete(entity) +} \ No newline at end of file diff --git a/app/src/main/java/com/rosan/dhizuku/data/settings/repo/AppRepo.kt b/app/src/main/java/com/rosan/dhizuku/data/settings/repo/AppRepo.kt new file mode 100644 index 0000000..76011fe --- /dev/null +++ b/app/src/main/java/com/rosan/dhizuku/data/settings/repo/AppRepo.kt @@ -0,0 +1,24 @@ +package com.rosan.dhizuku.data.settings.repo + +import com.rosan.dhizuku.data.settings.model.room.entity.AppEntity +import kotlinx.coroutines.flow.Flow + +interface AppRepo { + fun all(): List + + fun flowAll(): Flow> + + fun find(id: Long): AppEntity? + + fun flowFind(id: Long): Flow + + fun findByUID(uid: Int): AppEntity? + + fun flowFindByUID(uid: Int): Flow + + suspend fun update(entity: AppEntity) + + suspend fun insert(entity: AppEntity) + + suspend fun delete(entity: AppEntity) +} \ No newline at end of file diff --git a/app/src/main/java/com/rosan/dhizuku/di/dhizuku_module.kt b/app/src/main/java/com/rosan/dhizuku/di/dhizuku_module.kt new file mode 100644 index 0000000..f2864b3 --- /dev/null +++ b/app/src/main/java/com/rosan/dhizuku/di/dhizuku_module.kt @@ -0,0 +1,16 @@ +package com.rosan.dhizuku.di + +import com.rosan.dhizuku.aidl.IDhizuku +import com.rosan.dhizuku.server.impl.IDhizukuImpl +import org.koin.dsl.module + +private var iDhizuku: IDhizukuImpl? = null + +val dhizukuModule = module { + factory { + if (iDhizuku?.pingBinder() == true) return@factory iDhizuku!! + IDhizukuImpl().apply { + iDhizuku = this + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/rosan/dhizuku/di/init/app_modules.kt b/app/src/main/java/com/rosan/dhizuku/di/init/app_modules.kt new file mode 100644 index 0000000..0d5a62e --- /dev/null +++ b/app/src/main/java/com/rosan/dhizuku/di/init/app_modules.kt @@ -0,0 +1,11 @@ +package com.rosan.dhizuku.di.init + +import com.rosan.dhizuku.di.dhizukuModule +import com.rosan.dhizuku.di.roomModule +import com.rosan.dhizuku.di.viewModelModule + +val appModules = listOf( + roomModule, + viewModelModule, + dhizukuModule +) \ No newline at end of file diff --git a/app/src/main/java/com/rosan/dhizuku/di/room_module.kt b/app/src/main/java/com/rosan/dhizuku/di/room_module.kt new file mode 100644 index 0000000..76023b1 --- /dev/null +++ b/app/src/main/java/com/rosan/dhizuku/di/room_module.kt @@ -0,0 +1,17 @@ +package com.rosan.dhizuku.di + +import com.rosan.dhizuku.data.settings.model.room.DhizukuRoom +import com.rosan.dhizuku.data.settings.model.room.impl.AppRepoImpl +import com.rosan.dhizuku.data.settings.repo.AppRepo +import org.koin.dsl.module + +val roomModule = module { + single { + DhizukuRoom.createInstance() + } + + single { + val room = get() + AppRepoImpl(room.appDao) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/rosan/dhizuku/di/viewmodel_module.kt b/app/src/main/java/com/rosan/dhizuku/di/viewmodel_module.kt new file mode 100644 index 0000000..ae36d9d --- /dev/null +++ b/app/src/main/java/com/rosan/dhizuku/di/viewmodel_module.kt @@ -0,0 +1,11 @@ +package com.rosan.dhizuku.di + +import com.rosan.dhizuku.ui.page.settings.config.ConfigViewModel +import org.koin.androidx.viewmodel.dsl.viewModel +import org.koin.dsl.module + +val viewModelModule = module { + viewModel { + ConfigViewModel(get()) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/rosan/dhizuku/server/DhizukuConstants.kt b/app/src/main/java/com/rosan/dhizuku/server/DhizukuConstants.kt new file mode 100644 index 0000000..67064e1 --- /dev/null +++ b/app/src/main/java/com/rosan/dhizuku/server/DhizukuConstants.kt @@ -0,0 +1,5 @@ +package com.rosan.dhizuku.server + +val DHIZUKU_SERVRE_VERSION_CODE = 1 + +val DHIZUKU_SERVER_VERSION_NAME = "1.0" \ No newline at end of file diff --git a/app/src/main/java/com/rosan/dhizuku/server/DhizukuDAReceiver.kt b/app/src/main/java/com/rosan/dhizuku/server/DhizukuDAReceiver.kt new file mode 100644 index 0000000..157d490 --- /dev/null +++ b/app/src/main/java/com/rosan/dhizuku/server/DhizukuDAReceiver.kt @@ -0,0 +1,30 @@ +package com.rosan.dhizuku.server + +import android.app.admin.DeviceAdminReceiver +import android.content.Context +import android.content.Intent +import com.rosan.dhizuku.App +import org.koin.core.component.KoinComponent +import org.koin.core.component.get + +class DhizukuDAReceiver : DeviceAdminReceiver(), KoinComponent { + private val app = get().applicationContext as App + + override fun onEnabled(context: Context, intent: Intent) { + super.onEnabled(context, intent) + app.syncDeviceOwnerStatus() + } + + override fun onReceive(context: Context, intent: Intent) { + super.onReceive(context, intent) + } + + override fun onDisableRequested(context: Context, intent: Intent): CharSequence? { + return super.onDisableRequested(context, intent) + } + + override fun onDisabled(context: Context, intent: Intent) { + super.onDisabled(context, intent) + app.syncDeviceOwnerStatus() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/rosan/dhizuku/server/DhizukuProvider.kt b/app/src/main/java/com/rosan/dhizuku/server/DhizukuProvider.kt new file mode 100644 index 0000000..91f3131 --- /dev/null +++ b/app/src/main/java/com/rosan/dhizuku/server/DhizukuProvider.kt @@ -0,0 +1,47 @@ +package com.rosan.dhizuku.server + +import android.content.ContentProvider +import android.content.ContentValues +import android.database.Cursor +import android.net.Uri +import android.os.Bundle +import com.rosan.dhizuku.aidl.IDhizuku +import com.rosan.dhizuku.shared.DhizukuVariables +import org.koin.core.component.KoinComponent +import org.koin.core.component.inject + +class DhizukuProvider : ContentProvider(), KoinComponent { + private val iDhizuku: IDhizuku by inject() + + override fun call(method: String, arg: String?, extras: Bundle?): Bundle? { + return when (method) { + DhizukuVariables.PROVIDER_METHOD_CLIENT -> Bundle().apply { + putBinder(DhizukuVariables.PARAM_DHIZUKU_BINDER, iDhizuku.asBinder()) + } + else -> null; + } + } + + override fun onCreate(): Boolean = true + + override fun query( + uri: Uri, + projection: Array?, + selection: String?, + selectionArgs: Array?, + sortOrder: String? + ): Cursor? = null + + override fun getType(uri: Uri): String? = null + + override fun insert(uri: Uri, values: ContentValues?): Uri? = null + + override fun delete(uri: Uri, selection: String?, selectionArgs: Array?): Int = 0 + + override fun update( + uri: Uri, + values: ContentValues?, + selection: String?, + selectionArgs: Array? + ): Int = 0 +} \ No newline at end of file diff --git a/app/src/main/java/com/rosan/dhizuku/server/impl/IDhizukuImpl.kt b/app/src/main/java/com/rosan/dhizuku/server/impl/IDhizukuImpl.kt new file mode 100644 index 0000000..fd0b979 --- /dev/null +++ b/app/src/main/java/com/rosan/dhizuku/server/impl/IDhizukuImpl.kt @@ -0,0 +1,76 @@ +package com.rosan.dhizuku.server.impl + +import android.content.Context +import android.os.Binder +import android.os.IBinder +import android.os.Parcel +import com.rosan.dhizuku.aidl.IDhizuku +import com.rosan.dhizuku.aidl.IDhizukuRemoteProcess +import com.rosan.dhizuku.data.settings.repo.AppRepo +import com.rosan.dhizuku.server.DHIZUKU_SERVER_VERSION_NAME +import com.rosan.dhizuku.server.DHIZUKU_SERVRE_VERSION_CODE +import com.rosan.dhizuku.shared.DhizukuVariables +import org.koin.core.component.KoinComponent +import org.koin.core.component.inject +import java.io.File + +class IDhizukuImpl : IDhizuku.Stub(), KoinComponent { + private val context by inject() + + private val appRepo by inject() + + override fun getVersionCode(): Int = DHIZUKU_SERVRE_VERSION_CODE + + override fun getVersionName(): String = DHIZUKU_SERVER_VERSION_NAME + + override fun isPermissionGranted(): Boolean { + return appRepo.findByUID(Binder.getCallingUid())?.allowApi ?: false + } + + private fun requireCallingPermission(name: String) { + if (isPermissionGranted) return + throw IllegalStateException(SecurityException("uid '${Binder.getCallingUid()}' not allow use dhizuku api")) + } + + private fun targetTransact( + iBinder: IBinder, + code: Int, + data: Parcel, + reply: Parcel?, + flags: Int + ): Boolean { + requireCallingPermission("target_transact") + val id = clearCallingIdentity() + val result = iBinder.transact(code, data, reply, flags) + restoreCallingIdentity(id) + return result + } + + override fun remoteProcess( + cmd: Array?, + env: Array?, + dir: String? + ): IDhizukuRemoteProcess { + requireCallingPermission("remote_process") + val file = if (dir != null) File(dir) else null + val process = Runtime.getRuntime().exec(cmd, env, file) + return IDhizukuRemoteProcessImpl(process, this) + } + + override fun onTransact(code: Int, data: Parcel, reply: Parcel?, flags: Int): Boolean { + if (code == DhizukuVariables.TRANSACT_CODE_REMOTE_BINDER) { + val targetData = Parcel.obtain() + try { + data.enforceInterface(DhizukuVariables.BINDER_DESCRIPTOR) + val iBinder = data.readStrongBinder() + val targtCode = data.readInt() + val targetFlags = data.readInt() + targetData.appendFrom(data, data.dataPosition(), data.dataAvail()) + return targetTransact(iBinder, targtCode, targetData, reply, targetFlags) + } finally { + targetData.recycle() + } + } + return super.onTransact(code, data, reply, flags) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/rosan/dhizuku/server/impl/IDhizukuRemoteProcessImpl.kt b/app/src/main/java/com/rosan/dhizuku/server/impl/IDhizukuRemoteProcessImpl.kt new file mode 100644 index 0000000..60fb8d0 --- /dev/null +++ b/app/src/main/java/com/rosan/dhizuku/server/impl/IDhizukuRemoteProcessImpl.kt @@ -0,0 +1,96 @@ +package com.rosan.dhizuku.server.impl + +import android.os.IBinder +import android.os.ParcelFileDescriptor +import com.rosan.dhizuku.aidl.IDhizukuRemoteProcess +import com.rosan.dhizuku.util.parcelable +import java.io.IOException +import java.util.concurrent.TimeUnit + +class IDhizukuRemoteProcessImpl(private val process: Process, private val iBinder: IBinder) : + IDhizukuRemoteProcess.Stub() { + init { + iBinder.linkToDeath({ + kotlin.runCatching { if (alive()) destroy() } + }, 0) + } + + private var output: ParcelFileDescriptor? = null + + private var input: ParcelFileDescriptor? = null + + private var error: ParcelFileDescriptor? = null + + override fun getOutputStream(): ParcelFileDescriptor { + if (output != null) return output!! + try { + output = process.outputStream.parcelable() + } catch (e: IOException) { + throw IllegalStateException(e) + } + return output!! + } + + override fun getInputStream(): ParcelFileDescriptor { + if (input != null) return input!! + try { + input = process.inputStream.parcelable() + } catch (e: IOException) { + throw IllegalStateException(e) + } + return input!! + } + + override fun getErrorStream(): ParcelFileDescriptor { + if (error != null) return error!! + try { + error = process.errorStream.parcelable() + } catch (e: IOException) { + throw IllegalStateException(e) + } + return error!! + } + + override fun exitValue(): Int = process.exitValue() + + override fun destroy() = process.destroy() + + override fun alive(): Boolean { + return try { + exitValue() + false + } catch (e: IllegalThreadStateException) { + true + } + } + + override fun waitFor(): Int { + try { + return process.waitFor() + } catch (e: InterruptedException) { + throw IllegalStateException(e) + } + } + + override fun waitForTimeout(timeout: Long, unitName: String): Boolean { + val unit = TimeUnit.valueOf(unitName) + val start = System.nanoTime() + var rem = unit.toNanos(timeout) + do { + try { + exitValue() + return true + } catch (e: IllegalThreadStateException) { + if (rem > 0) { + try { + Thread.sleep(Math.min(TimeUnit.NANOSECONDS.toMillis(rem) + 1, 100)) + } catch (e: InterruptedException) { + throw IllegalStateException(e) + } + } + } + rem = unit.toNanos(timeout) - (System.nanoTime() - start) + } while (rem > 0) + return false + } +} \ No newline at end of file diff --git a/app/src/main/java/com/rosan/dhizuku/test.kt b/app/src/main/java/com/rosan/dhizuku/test.kt new file mode 100644 index 0000000..ce9b9b1 --- /dev/null +++ b/app/src/main/java/com/rosan/dhizuku/test.kt @@ -0,0 +1,4 @@ +package com.rosan.dhizuku + +fun main(args: Array) { +} diff --git a/app/src/main/java/com/rosan/dhizuku/ui/activity/RequestPermissionActivity.kt b/app/src/main/java/com/rosan/dhizuku/ui/activity/RequestPermissionActivity.kt new file mode 100644 index 0000000..07bec70 --- /dev/null +++ b/app/src/main/java/com/rosan/dhizuku/ui/activity/RequestPermissionActivity.kt @@ -0,0 +1,123 @@ +package com.rosan.dhizuku.ui.activity + +import android.content.pm.PackageManager +import android.os.Bundle +import androidx.activity.ComponentActivity +import androidx.activity.compose.setContent +import androidx.compose.foundation.Image +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.imePadding +import androidx.compose.material.Text +import androidx.compose.material3.AlertDialog +import androidx.compose.material3.TextButton +import androidx.compose.ui.Modifier +import androidx.compose.ui.res.stringResource +import com.google.accompanist.drawablepainter.rememberDrawablePainter +import com.rosan.dhizuku.R +import com.rosan.dhizuku.aidl.IDhizukuRequestPermissionListener +import com.rosan.dhizuku.data.settings.model.room.entity.AppEntity +import com.rosan.dhizuku.data.settings.repo.AppRepo +import com.rosan.dhizuku.shared.DhizukuVariables +import com.rosan.dhizuku.ui.theme.InstallerTheme +import com.rosan.dhizuku.util.toast +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.launch +import org.koin.core.component.KoinComponent +import org.koin.core.component.inject + +class RequestPermissionActivity : ComponentActivity(), KoinComponent { + private val appRepo by inject() + + private var grantResult: Int = PackageManager.PERMISSION_DENIED + + private var listener: IDhizukuRequestPermissionListener? = null + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + val bundle = intent.getBundleExtra("bundle") + val clientUID = bundle?.getInt(DhizukuVariables.PARAM_CLIENT_UID) + if (clientUID == null) { + toast("please send client UID") + finish() + return + } + val packageName = packageManager.getPackagesForUid(clientUID)?.first() + if (packageName == null) { + toast("can not get package name for $clientUID") + finish() + return + } + val applicationInfo = packageManager.getPackageInfo(packageName, 0)?.applicationInfo + if (applicationInfo == null) { + toast("can not get application for $clientUID") + finish() + return + } + val label = applicationInfo.loadLabel(packageManager) + val icon = applicationInfo.loadIcon(packageManager) + bundle.getBinder(DhizukuVariables.PARAM_CLIENT_REQUEST_PERMISSION_BINDER)?.let { + listener = IDhizukuRequestPermissionListener.Stub.asInterface(it) + } + fun updateAppEntity() { + val allowApi = grantResult == PackageManager.PERMISSION_GRANTED + CoroutineScope(Dispatchers.IO).launch { + val entity = appRepo.findByUID(clientUID) + if (entity == null) + appRepo.insert(AppEntity(uid = clientUID, allowApi = allowApi)) + else appRepo.update(entity.copy(allowApi = allowApi)) + } + } + setContent { + // A surface based on material design theme. + InstallerTheme { + Box( + modifier = Modifier + .fillMaxSize() + .imePadding() + ) { + AlertDialog(onDismissRequest = { + finish() + }, icon = { + Image( + painter = rememberDrawablePainter(drawable = icon), + contentDescription = null + ) + }, title = { + Text(text = stringResource(id = R.string.request_permission_title)) + }, text = { + Text( + text = stringResource( + id = R.string.request_permission_text, + label + ) + ) + }, confirmButton = { + TextButton(onClick = { + grantResult = PackageManager.PERMISSION_GRANTED + updateAppEntity() + finish() + }) { + Text(text = stringResource(id = R.string.agree)) + } + }, dismissButton = { + TextButton(onClick = { + grantResult = PackageManager.PERMISSION_DENIED + updateAppEntity() + finish() + }) { + Text(text = stringResource(id = R.string.refuse)) + } + }) + } + } + } + } + + override fun onPause() { + super.onPause() + finish() + listener?.onRequestPermission(grantResult) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/rosan/dhizuku/ui/activity/SettingsActivity.kt b/app/src/main/java/com/rosan/dhizuku/ui/activity/SettingsActivity.kt new file mode 100644 index 0000000..ea2f633 --- /dev/null +++ b/app/src/main/java/com/rosan/dhizuku/ui/activity/SettingsActivity.kt @@ -0,0 +1,40 @@ +package com.rosan.dhizuku.ui.activity + +import android.os.Bundle +import androidx.activity.ComponentActivity +import androidx.activity.compose.setContent +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.imePadding +import androidx.compose.material3.Surface +import androidx.compose.ui.Modifier +import com.hjq.permissions.Permission +import com.hjq.permissions.XXPermissions +import com.rosan.dhizuku.ui.page.settings.SettingsPage +import com.rosan.dhizuku.ui.theme.InstallerTheme +import org.koin.core.component.KoinComponent + +class SettingsActivity : ComponentActivity(), KoinComponent { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContent { + // A surface based on material design theme. + InstallerTheme { + Surface( + modifier = Modifier + .fillMaxSize() + .imePadding() + ) { + SettingsPage() + } + } + } + if (!XXPermissions.isGranted( + this, + Permission.MANAGE_EXTERNAL_STORAGE + ) + ) + XXPermissions.with(this) + .permission(Permission.MANAGE_EXTERNAL_STORAGE) + .request { permissions, allGranted -> } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/rosan/dhizuku/ui/page/settings/SettingsPage.kt b/app/src/main/java/com/rosan/dhizuku/ui/page/settings/SettingsPage.kt new file mode 100644 index 0000000..2b35122 --- /dev/null +++ b/app/src/main/java/com/rosan/dhizuku/ui/page/settings/SettingsPage.kt @@ -0,0 +1,38 @@ +package com.rosan.dhizuku.ui.page.settings + +import androidx.compose.animation.ExperimentalAnimationApi +import androidx.compose.runtime.Composable +import androidx.compose.ui.ExperimentalComposeUiApi +import com.google.accompanist.navigation.animation.AnimatedNavHost +import com.google.accompanist.navigation.animation.composable +import com.google.accompanist.navigation.animation.rememberAnimatedNavController +import com.rosan.dhizuku.ui.page.settings.main.MainPage + +@OptIn(ExperimentalAnimationApi::class, ExperimentalComposeUiApi::class) +@Composable +fun SettingsPage() { + val navController = rememberAnimatedNavController() + + AnimatedNavHost( + navController = navController, + startDestination = SettingsScreen.Main.route, + ) { + composable( + route = SettingsScreen.Main.route, + enterTransition = { + null + }, + exitTransition = { + null + }, + popEnterTransition = { + null + }, + popExitTransition = { + null + } + ) { + MainPage(navController = navController) + } + } +} diff --git a/app/src/main/java/com/rosan/dhizuku/ui/page/settings/SettingsScreen.kt b/app/src/main/java/com/rosan/dhizuku/ui/page/settings/SettingsScreen.kt new file mode 100644 index 0000000..1eb6e68 --- /dev/null +++ b/app/src/main/java/com/rosan/dhizuku/ui/page/settings/SettingsScreen.kt @@ -0,0 +1,5 @@ +package com.rosan.dhizuku.ui.page.settings + +sealed class SettingsScreen(val route: String) { + object Main : SettingsScreen("main") +} diff --git a/app/src/main/java/com/rosan/dhizuku/ui/page/settings/config/ConfigPage.kt b/app/src/main/java/com/rosan/dhizuku/ui/page/settings/config/ConfigPage.kt new file mode 100644 index 0000000..e489858 --- /dev/null +++ b/app/src/main/java/com/rosan/dhizuku/ui/page/settings/config/ConfigPage.kt @@ -0,0 +1,105 @@ +package com.rosan.dhizuku.ui.page.settings.config + +import androidx.compose.foundation.Image +import androidx.compose.foundation.clickable +import androidx.compose.foundation.layout.* +import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.foundation.lazy.items +import androidx.compose.material3.* +import androidx.compose.runtime.Composable +import androidx.compose.runtime.LaunchedEffect +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.unit.dp +import androidx.navigation.NavController +import com.google.accompanist.drawablepainter.rememberDrawablePainter +import com.rosan.dhizuku.R +import org.koin.androidx.compose.getViewModel + +@OptIn(ExperimentalMaterial3Api::class) +@Composable +fun ConfigPage( + navController: NavController, + viewModel: ConfigViewModel = getViewModel() +) { + LaunchedEffect(true) { + viewModel.dispatch(ConfigViewAction.Init) + } + + Scaffold( + modifier = Modifier + .fillMaxSize(), + topBar = { + TopAppBar( + title = { + Text(text = stringResource(id = R.string.config)) + } + ) + }, + ) { + Box(modifier = Modifier.padding(it)) { + DataWidget(viewModel = viewModel) + } + } +} + +@Composable +fun DataWidget(viewModel: ConfigViewModel) { + LazyColumn( + modifier = Modifier.fillMaxSize(), + verticalArrangement = Arrangement.spacedBy(4.dp) + ) { + items(viewModel.state.data) { + DataItemWidget(viewModel, it) + } + } +} + +@Composable +fun DataItemWidget(viewModel: ConfigViewModel, data: ConfigViewState.Data) { + Box( + modifier = Modifier + .fillMaxWidth(), + ) { + Row( + modifier = Modifier + .fillMaxWidth() + .clickable { + viewModel.dispatch(ConfigViewAction.UpdateConfigByUID(data.uid, !data.allowApi)) + } + .padding(horizontal = 16.dp, vertical = 8.dp), + horizontalArrangement = Arrangement.spacedBy(16.dp), + ) { + Image( + painter = rememberDrawablePainter(drawable = data.icon), + modifier = Modifier + .size(32.dp) + .align(Alignment.CenterVertically), + contentDescription = data.label + ) + Column( + modifier = Modifier + .align(Alignment.CenterVertically) + .weight(1f) + ) { + Text( + text = data.label, + style = MaterialTheme.typography.titleMedium + ) + Text( + text = data.packageName, + style = MaterialTheme.typography.bodyMedium + ) + } + Switch( + modifier = Modifier + .align(Alignment.CenterVertically), + checked = data.allowApi, + onCheckedChange = { + viewModel.dispatch(ConfigViewAction.UpdateConfigByUID(data.uid, it)) + } + ) + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/rosan/dhizuku/ui/page/settings/config/ConfigViewAction.kt b/app/src/main/java/com/rosan/dhizuku/ui/page/settings/config/ConfigViewAction.kt new file mode 100644 index 0000000..6289f08 --- /dev/null +++ b/app/src/main/java/com/rosan/dhizuku/ui/page/settings/config/ConfigViewAction.kt @@ -0,0 +1,7 @@ +package com.rosan.dhizuku.ui.page.settings.config + +sealed class ConfigViewAction { + object Init : ConfigViewAction() + + data class UpdateConfigByUID(val uid: Int, val allowApi: Boolean) : ConfigViewAction() +} \ No newline at end of file diff --git a/app/src/main/java/com/rosan/dhizuku/ui/page/settings/config/ConfigViewModel.kt b/app/src/main/java/com/rosan/dhizuku/ui/page/settings/config/ConfigViewModel.kt new file mode 100644 index 0000000..11296a3 --- /dev/null +++ b/app/src/main/java/com/rosan/dhizuku/ui/page/settings/config/ConfigViewModel.kt @@ -0,0 +1,113 @@ +package com.rosan.dhizuku.ui.page.settings.config + +import android.content.Context +import android.content.pm.PackageManager +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.setValue +import androidx.core.content.ContextCompat +import androidx.lifecycle.ViewModel +import androidx.lifecycle.viewModelScope +import com.rosan.dhizuku.data.settings.model.room.entity.AppEntity +import com.rosan.dhizuku.data.settings.repo.AppRepo +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.Job +import kotlinx.coroutines.launch +import org.koin.core.component.KoinComponent +import org.koin.core.component.inject + +class ConfigViewModel( + private var repo: AppRepo +) : ViewModel(), KoinComponent { + private val context by inject() + + var state by mutableStateOf(ConfigViewState(emptyList())) + private set + + fun dispatch(action: ConfigViewAction) { + when (action) { + ConfigViewAction.Init -> init() + is ConfigViewAction.UpdateConfigByUID -> updateConfigByUID(action.uid, action.allowApi) + } + } + + private fun init() { + collectRepo(repo) + } + + private var collectRepoJob: Job? = null + + private fun collectRepo(repo: AppRepo) { + this.repo = repo + collectRepoJob?.cancel() + collectRepoJob = viewModelScope.launch(Dispatchers.IO) { + repo.flowAll().collect { apps -> + val packageManager = context.packageManager + val map = mutableMapOf() + apps.forEach { + val packageName = packageManager.getPackagesForUid(it.uid)?.first() + map[it.uid] = if (packageName != null) { + val packageInfo = packageManager.getPackageInfo(packageName, 0) + val applicationInfo = packageInfo.applicationInfo + val uid = applicationInfo.uid + ConfigViewState.Data( + uid = uid, + packageName = packageInfo.packageName, + label = applicationInfo.loadLabel(packageManager).toString(), + icon = applicationInfo.loadIcon(packageManager), + allowApi = it.allowApi + ) + } else { + ConfigViewState.Data( + uid = it.uid, + packageName = it.uid.toString(), + label = it.uid.toString(), + icon = ContextCompat.getDrawable( + context, android.R.drawable.sym_def_app_icon + )!!, + allowApi = it.allowApi + ) + } + } + val packages = + packageManager.getInstalledPackages(PackageManager.GET_PERMISSIONS or PackageManager.GET_ACTIVITIES) + packages.forEach { packageInfo -> + packageInfo.requestedPermissions?.forEach { + if (it == "com.rosan.dhizuku.permission.API") { + val applicationInfo = packageInfo.applicationInfo + val uid = applicationInfo.uid + val data = map[uid] + map[uid] = ConfigViewState.Data( + uid = uid, + packageName = packageInfo.packageName, + label = applicationInfo.loadLabel(packageManager).toString(), + icon = applicationInfo.loadIcon(packageManager), + allowApi = data?.allowApi ?: false + ) + } + } + } + state = ConfigViewState(data = map.values.sortedBy { + it.uid + }) + } + } + } + + private fun updateConfigByUID(uid: Int, allowApi: Boolean) { + viewModelScope.launch(Dispatchers.IO) { + val entity = repo.findByUID(uid) + if (entity == null) { + repo.insert( + AppEntity( + uid = uid, + allowApi = allowApi + ) + ) + return@launch + } + entity.allowApi = allowApi + repo.update(entity) + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/rosan/dhizuku/ui/page/settings/config/ConfigViewState.kt b/app/src/main/java/com/rosan/dhizuku/ui/page/settings/config/ConfigViewState.kt new file mode 100644 index 0000000..7188e4a --- /dev/null +++ b/app/src/main/java/com/rosan/dhizuku/ui/page/settings/config/ConfigViewState.kt @@ -0,0 +1,13 @@ +package com.rosan.dhizuku.ui.page.settings.config + +import android.graphics.drawable.Drawable + +data class ConfigViewState(val data: List) { + data class Data( + val uid: Int, + val packageName: String, + val label: String, + val icon: Drawable, + val allowApi: Boolean + ) +} diff --git a/app/src/main/java/com/rosan/dhizuku/ui/page/settings/home/HomeCardItem.kt b/app/src/main/java/com/rosan/dhizuku/ui/page/settings/home/HomeCardItem.kt new file mode 100644 index 0000000..5b6c973 --- /dev/null +++ b/app/src/main/java/com/rosan/dhizuku/ui/page/settings/home/HomeCardItem.kt @@ -0,0 +1,11 @@ +package com.rosan.dhizuku.ui.page.settings.home + +import androidx.compose.ui.graphics.vector.ImageVector + +data class HomeCardItem( + val icon: ImageVector? = null, + val label: String, + val content: String? = null, + val onClick: (() -> Unit)? = null +) { +} \ No newline at end of file diff --git a/app/src/main/java/com/rosan/dhizuku/ui/page/settings/home/HomePage.kt b/app/src/main/java/com/rosan/dhizuku/ui/page/settings/home/HomePage.kt new file mode 100644 index 0000000..46535a2 --- /dev/null +++ b/app/src/main/java/com/rosan/dhizuku/ui/page/settings/home/HomePage.kt @@ -0,0 +1,478 @@ +package com.rosan.dhizuku.ui.page.settings.home + +import android.app.admin.DevicePolicyManager +import android.content.* +import android.net.Uri +import android.os.Bundle +import android.text.method.LinkMovementMethod +import android.widget.TextView +import androidx.compose.animation.AnimatedContent +import androidx.compose.animation.ExperimentalAnimationApi +import androidx.compose.foundation.clickable +import androidx.compose.foundation.layout.* +import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.foundation.text.selection.SelectionContainer +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.twotone.* +import androidx.compose.material3.* +import androidx.compose.runtime.* +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.toArgb +import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.unit.dp +import androidx.compose.ui.viewinterop.AndroidView +import androidx.core.text.HtmlCompat +import androidx.navigation.NavController +import com.rosan.dhizuku.App +import com.rosan.dhizuku.R +import com.rosan.dhizuku.data.console.model.entity.ConsoleError +import com.rosan.dhizuku.data.console.repo.ConsoleRepo +import com.rosan.dhizuku.data.console.util.ConsoleRepoUtil +import com.rosan.dhizuku.data.console.util.ConsoleUtil +import com.rosan.dhizuku.server.DhizukuDAReceiver +import com.rosan.dhizuku.ui.activity.RequestPermissionActivity +import com.rosan.dhizuku.ui.widget.dialog.PositionDialog +import com.rosan.dhizuku.util.toast +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.async +import kotlinx.coroutines.launch +import java.io.ByteArrayOutputStream +import java.io.PrintStream +import kotlin.system.exitProcess + +@OptIn(ExperimentalMaterial3Api::class) +@Composable +fun HomePage(navController: NavController) { + Scaffold(modifier = Modifier.fillMaxSize(), topBar = { + TopAppBar( + title = { + Text(text = stringResource(id = R.string.home)) + }, + ) + }) { + LazyColumn( + contentPadding = PaddingValues(16.dp), + modifier = Modifier + .fillMaxSize() + .padding(it), + verticalArrangement = Arrangement.spacedBy(16.dp), + ) { + item { + StatusWidget() + } + item { + ActiveWidget() + } + item { + DonateWidget() + } + } + } +} + +@Composable +fun StatusWidget() { + val context = LocalContext.current + val app = context.applicationContext as App + val isDeviceAdminer = app.isDeviceAdminer + val isDeviceOwner = app.isDeviceOwner + + val containerColor = if (isDeviceOwner) MaterialTheme.colorScheme.primaryContainer + else if (isDeviceAdminer) MaterialTheme.colorScheme.tertiaryContainer + else MaterialTheme.colorScheme.errorContainer + + val onContainerColor = if (isDeviceOwner) MaterialTheme.colorScheme.onPrimaryContainer + else if (isDeviceAdminer) MaterialTheme.colorScheme.onTertiaryContainer + else MaterialTheme.colorScheme.onErrorContainer + + val icon = if (isDeviceOwner) Icons.TwoTone.SentimentVerySatisfied + else if (isDeviceAdminer) Icons.TwoTone.SentimentNeutral + else Icons.TwoTone.SentimentVeryDissatisfied + + val text = stringResource( + id = if (isDeviceOwner) R.string.device_owner_granted + else if (isDeviceAdminer) R.string.device_admin_granted + else R.string.device_admin_denied + ) + + CardWidget(colors = CardDefaults.elevatedCardColors( + containerColor = containerColor, contentColor = onContainerColor + ), content = { + Row(modifier = Modifier.padding(horizontal = 24.dp)) { + Icon( + modifier = Modifier.align(Alignment.CenterVertically), + imageVector = icon, + contentDescription = null + ) + Spacer(modifier = Modifier.size(24.dp)) + Text(text = text, style = MaterialTheme.typography.titleMedium) + } + }, onClick = { + context.startActivity( + Intent(context, RequestPermissionActivity::class.java).putExtra( + "bundle", + Bundle().apply { + putInt("uid", 10330) + }).addFlags( + Intent.FLAG_ACTIVITY_NEW_TASK + ) + ) + }) +} + +@OptIn(ExperimentalAnimationApi::class) +@Composable +fun ShizukuButton() { + val context = LocalContext.current + val scope = rememberCoroutineScope() + var console: ConsoleRepo? = null + var showDialog by remember { + mutableStateOf(false) + } + var inProgress by remember { + mutableStateOf(false) + } + var exception: Throwable? by remember { + mutableStateOf(null) + } + + Button(onClick = { + scope.launch(Dispatchers.IO) { + inProgress = true + exception = null + showDialog = true + exception = kotlin.runCatching { + val letConsole = ConsoleRepoUtil.shizuku { + command( + "dpm", + "set-device-owner", + "${context.packageName}/${DhizukuDAReceiver::class.qualifiedName}" + ) + } + console = letConsole + val util = ConsoleUtil(letConsole) + val inputJob = async { util.inputBytes() } + val errorJob = async { util.errorBytes() } + val input = inputJob.await().decodeToString() + val error = errorJob.await().decodeToString() + val code = letConsole.exitValue() + if (code != 0) throw ConsoleError(code, input, error) + }.exceptionOrNull() + inProgress = false + } + }) { + Icon( + modifier = Modifier.size(16.dp), + imageVector = Icons.TwoTone.Key, + contentDescription = null + ) + Spacer(modifier = Modifier.size(ButtonDefaults.IconSpacing)) + Text(text = stringResource(id = R.string.active_by_shizuku)) + } + + if (!showDialog) return + PositionDialog(onDismissRequest = {}, centerTitle = { + Text(stringResource(R.string.active_by_shizuku)) + }, leftText = { + AnimatedContent(targetState = inProgress) { + if (it) LinearProgressIndicator(modifier = Modifier.fillMaxWidth()) + else if (exception == null) Text(stringResource(R.string.execution_end)) + else { + val text = when { + exception is IllegalStateException && exception?.message == "binder haven't been received" -> stringResource( + R.string.shizuku_binder_not_received + ) + else -> ByteArrayOutputStream().also { + exception?.printStackTrace(PrintStream(it)) + }.toByteArray().decodeToString() + } + SelectionContainer { + LazyColumn { + item { + Text(text) + } + } + } + } + } + }, rightButton = { + TextButton(onClick = { + console?.closeForcibly() + showDialog = false + }) { + Text( + stringResource( + if (inProgress) R.string.cancel + else R.string.finish + ) + ) + } + }) +} + +@Composable +fun ADBButton() { + val context = LocalContext.current + var showDialog by remember { + mutableStateOf(false) + } + val command = + "adb shell dpm set-device-owner ${context.packageName}/${DhizukuDAReceiver::class.qualifiedName}" + + Button(onClick = { + showDialog = true + }) { + Icon( + modifier = Modifier.size(16.dp), + imageVector = Icons.TwoTone.Adb, + contentDescription = null + ) + Spacer(modifier = Modifier.size(ButtonDefaults.IconSpacing)) + Text(text = stringResource(id = R.string.active_by_adb)) + } + if (showDialog) { + AlertDialog(onDismissRequest = { + showDialog = false + }, title = { + Text(text = stringResource(id = R.string.active_by_adb)) + }, text = { + val textColor = AlertDialogDefaults.textContentColor.toArgb() + AndroidView(factory = { + val view = TextView(it) + view.movementMethod = LinkMovementMethod.getInstance() + view.setTextColor(textColor) + view.text = HtmlCompat.fromHtml( + it.getString(R.string.active_by_adb_dsp, command), + HtmlCompat.FROM_HTML_MODE_COMPACT + ) + return@AndroidView view + }) + }, confirmButton = { + TextButton(onClick = { + val manager = + context.getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager + manager.setPrimaryClip(ClipData.newPlainText("Label", command)) + context.toast(R.string.copy_success) + showDialog = false + }) { + Text(text = stringResource(id = R.string.copy)) + } + }, dismissButton = { + TextButton(onClick = { showDialog = false }) { + Text(text = stringResource(id = R.string.cancel)) + } + }) + } +} + +@Composable +fun DeactivateButton() { + val context = LocalContext.current + Button(onClick = { + val e = runCatching { + val manager = + context.getSystemService(Context.DEVICE_POLICY_SERVICE) as DevicePolicyManager + manager.clearDeviceOwnerApp(context.packageName) + }.exceptionOrNull() + context.toast(if (e == null) R.string.deactivate_success else R.string.deactivate_failed) + }) { + Icon( + modifier = Modifier.size(16.dp), + imageVector = Icons.TwoTone.Outlet, + contentDescription = null + ) + Spacer(modifier = Modifier.size(ButtonDefaults.IconSpacing)) + Text(text = stringResource(id = R.string.deactivate)) + } +} + +@Composable +fun ForceStopButton() { + val context = LocalContext.current + var showDialog by remember { + mutableStateOf(false) + } + + Button(onClick = { + showDialog = true + }) { + Icon( + modifier = Modifier.size(16.dp), + imageVector = Icons.TwoTone.Close, + contentDescription = null + ) + Spacer(modifier = Modifier.size(ButtonDefaults.IconSpacing)) + Text(text = stringResource(id = R.string.force_stop)) + } + if (!showDialog) return + AlertDialog(onDismissRequest = { + showDialog = false + }, title = { + Text(text = stringResource(id = R.string.force_stop)) + }, text = { + Text(stringResource(R.string.force_stop_dsp)) + }, confirmButton = { + TextButton(onClick = { + exitProcess(0) + }) { + Text(text = stringResource(id = R.string.confirm)) + } + }, dismissButton = { + TextButton(onClick = { showDialog = false }) { + Text(text = stringResource(id = R.string.cancel)) + } + }) +} + +@Composable +fun ActiveWidget() { + CardWidget(title = { + Text(text = stringResource(id = R.string.active)) + }, text = { + Text(text = stringResource(id = R.string.active_func_dsp)) + }, buttons = { + ShizukuButton() + ADBButton() + DeactivateButton() + ForceStopButton() + }) +} + +fun openUrl(context: Context, url: String) { + val intent = Intent(Intent.ACTION_VIEW, Uri.parse(url)).addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) + context.startActivity(intent) +} + +@Composable +fun DonateWidget() { + val context = LocalContext.current + ItemsCardWidget( + title = { + Text(text = stringResource(id = R.string.donate)) + }, items = listOf( + HomeCardItem(label = stringResource(id = R.string.alipay), onClick = { + openUrl(context, "https://qr.alipay.com/fkx18580lfpydiop04dze47") + }), + HomeCardItem(label = stringResource(id = R.string.wechat), onClick = { + openUrl(context, "https://missuo.ru/file/fee5df1381671c996b127.png") + }), + HomeCardItem(label = stringResource(id = R.string.binance), onClick = { + openUrl(context, "https://missuo.ru/file/28368c28d4ff28d59ed4b.jpg") + }), + ) + ) +} + +@Composable +fun ItemsCardWidget( + colors: CardColors = CardDefaults.elevatedCardColors(), + onClick: (() -> Unit)? = null, + showItemIcon: Boolean = false, + icon: (@Composable () -> Unit)? = null, + title: (@Composable () -> Unit)? = null, + items: List, + buttons: (@Composable () -> Unit)? = null +) { + CardWidget( + colors = colors, onClick = onClick, icon = icon, title = title, content = { + @Composable + fun ItemWidget(item: HomeCardItem) { + Row( + modifier = Modifier + .clickable(enabled = item.onClick != null, onClick = item.onClick ?: {}) + .padding(horizontal = 24.dp, vertical = 12.dp), + horizontalArrangement = Arrangement.spacedBy(24.dp) + ) { + if (showItemIcon) { + if (item.icon != null) { + Icon(imageVector = item.icon, contentDescription = item.label) + } else { + Spacer(modifier = Modifier.size(32.dp)) + } + } + Column( + modifier = Modifier.weight(1f) + ) { + Text(text = item.label, style = MaterialTheme.typography.bodyLarge) + if (item.content != null) { + Text(text = item.content, style = MaterialTheme.typography.bodyMedium) + } + } + } + } + Column { + items.forEach { + ItemWidget(it) + } + } + }, buttons = buttons + ) +} + +@OptIn(ExperimentalLayoutApi::class) +@Composable +fun CardWidget( + colors: CardColors = CardDefaults.elevatedCardColors(), + onClick: (() -> Unit)? = null, + icon: (@Composable () -> Unit)? = null, + title: (@Composable () -> Unit)? = null, + content: (@Composable () -> Unit)? = null, + text: (@Composable () -> Unit)? = null, + buttons: (@Composable () -> Unit)? = null +) { + ElevatedCard( + colors = colors + ) { + Column( + modifier = Modifier + .fillMaxWidth() + .clickable(enabled = onClick != null, onClick = onClick ?: {}) + .padding(vertical = 24.dp), verticalArrangement = Arrangement.spacedBy(12.dp) + ) { + if (icon != null || title != null) { + Row( + modifier = Modifier + .padding(horizontal = 24.dp) + .align(Alignment.CenterHorizontally) + ) { + if (icon != null) { + Box(modifier = Modifier.align(Alignment.CenterVertically)) { + icon() + } + } + if (icon != null && title != null) { + Spacer(modifier = Modifier.size(24.dp)) + } + if (title != null) { + ProvideTextStyle(value = MaterialTheme.typography.titleLarge) { + Box(modifier = Modifier.align(Alignment.CenterVertically)) { + title() + } + } + } + } + } + if (content != null || text != null) { + if (content != null) Box { + content() + } + else Box(modifier = Modifier.padding(horizontal = 24.dp)) { + ProvideTextStyle(value = MaterialTheme.typography.bodyMedium) { + text?.invoke() + } + } + } + if (buttons != null) { + FlowRow( + modifier = Modifier + .padding(horizontal = 12.dp), + horizontalArrangement = Arrangement.spacedBy(8.dp) + ) { + buttons() + } + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/rosan/dhizuku/ui/page/settings/main/MainPage.kt b/app/src/main/java/com/rosan/dhizuku/ui/page/settings/main/MainPage.kt new file mode 100644 index 0000000..cf180d1 --- /dev/null +++ b/app/src/main/java/com/rosan/dhizuku/ui/page/settings/main/MainPage.kt @@ -0,0 +1,160 @@ +package com.rosan.dhizuku.ui.page.settings.main + +import androidx.compose.foundation.layout.* +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.twotone.Home +import androidx.compose.material.icons.twotone.RoomPreferences +import androidx.compose.material.icons.twotone.SettingsSuggest +import androidx.compose.material3.* +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.res.stringResource +import androidx.navigation.NavController +import com.google.accompanist.pager.ExperimentalPagerApi +import com.google.accompanist.pager.HorizontalPager +import com.google.accompanist.pager.rememberPagerState +import com.rosan.dhizuku.R +import com.rosan.dhizuku.ui.page.settings.config.ConfigPage +import com.rosan.dhizuku.ui.page.settings.home.HomePage +import com.rosan.dhizuku.ui.page.settings.preferred.PreferredPage +import kotlinx.coroutines.DelicateCoroutinesApi +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.GlobalScope +import kotlinx.coroutines.launch + +@OptIn(ExperimentalPagerApi::class, DelicateCoroutinesApi::class) +@Composable +fun MainPage(navController: NavController) { + val pagerState = rememberPagerState() + val currentPage = pagerState.currentPage + fun onPageChanged(page: Int) { + GlobalScope.launch(Dispatchers.Main) { + pagerState.scrollToPage(page = page) + } + } + + val data = arrayOf( + NavigationData( + icon = Icons.TwoTone.Home, + label = stringResource(id = R.string.home) + ) { + HomePage(navController = navController) + }, + NavigationData( + icon = Icons.TwoTone.RoomPreferences, + label = stringResource(id = R.string.config) + ) { + ConfigPage(navController = navController) + }, + NavigationData( + icon = Icons.TwoTone.SettingsSuggest, + label = stringResource(id = R.string.preferred) + ) { + PreferredPage(navController = navController) + } + ) + + BoxWithConstraints( + modifier = Modifier + .fillMaxSize() + ) { + val isLandscapeScreen = maxHeight / maxWidth > 1.4 + Row(modifier = Modifier.fillMaxSize()) { + if (!isLandscapeScreen) { + ColumnNavigation( + data = data, + currentPage = currentPage, + onPageChanged = { onPageChanged(it) } + ) + } + + Column( + modifier = Modifier + .weight(1f) + .fillMaxSize() + ) { + HorizontalPager( + count = data.size, + state = pagerState, + userScrollEnabled = false, + modifier = Modifier + .weight(1f) + .fillMaxSize() + ) { + data[it].content.invoke() + } + if (isLandscapeScreen) { + RowNavigation( + data = data, + currentPage = currentPage, + onPageChanged = { onPageChanged(it) } + ) + } + } + } + } +} + +@Composable +fun RowNavigation( + data: Array, + currentPage: Int, + onPageChanged: (Int) -> Unit +) { + NavigationBar( + modifier = Modifier + .fillMaxWidth() + .wrapContentSize() + ) { + data.forEachIndexed { index, navigationData -> + NavigationBarItem( + selected = currentPage == index, + onClick = { onPageChanged(index) }, + icon = { + Icon( + imageVector = navigationData.icon, + contentDescription = navigationData.label + ) + }, + label = { + Text(text = navigationData.label) + }, + alwaysShowLabel = false + ) + } + } +} + +@Composable +fun ColumnNavigation( + data: Array, + currentPage: Int, + onPageChanged: (Int) -> Unit +) { + NavigationRail( + modifier = Modifier + .fillMaxHeight() + .wrapContentSize() + ) { + Spacer( + modifier = Modifier + .weight(1f) + ) + data.forEachIndexed { index, navigationData -> + NavigationRailItem( + selected = currentPage == index, + onClick = { onPageChanged(index) }, + icon = { + Icon( + imageVector = navigationData.icon, + contentDescription = navigationData.label + ) + }, + label = { + Text(text = navigationData.label) + }, + alwaysShowLabel = false + ) + } + } +} diff --git a/app/src/main/java/com/rosan/dhizuku/ui/page/settings/main/NavigationData.kt b/app/src/main/java/com/rosan/dhizuku/ui/page/settings/main/NavigationData.kt new file mode 100644 index 0000000..d9beed5 --- /dev/null +++ b/app/src/main/java/com/rosan/dhizuku/ui/page/settings/main/NavigationData.kt @@ -0,0 +1,10 @@ +package com.rosan.dhizuku.ui.page.settings.main + +import androidx.compose.runtime.Composable +import androidx.compose.ui.graphics.vector.ImageVector + +data class NavigationData( + val icon: ImageVector, + val label: String, + val content: @Composable () -> Unit +) diff --git a/app/src/main/java/com/rosan/dhizuku/ui/page/settings/preferred/PreferredPage.kt b/app/src/main/java/com/rosan/dhizuku/ui/page/settings/preferred/PreferredPage.kt new file mode 100644 index 0000000..b7523af --- /dev/null +++ b/app/src/main/java/com/rosan/dhizuku/ui/page/settings/preferred/PreferredPage.kt @@ -0,0 +1,39 @@ +package com.rosan.dhizuku.ui.page.settings.preferred + +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.material.icons.twotone.* +import androidx.compose.material3.* +import androidx.compose.runtime.* +import androidx.compose.ui.Modifier +import androidx.compose.ui.res.stringResource +import androidx.navigation.NavController +import com.rosan.dhizuku.R + +@OptIn(ExperimentalMaterial3Api::class) +@Composable +fun PreferredPage(navController: NavController) { + val snackBarHostState = remember { + SnackbarHostState() + } + Scaffold( + modifier = Modifier + .fillMaxSize(), + topBar = { + TopAppBar( + title = { + Text(text = stringResource(id = R.string.preferred)) + } + ) + }, + snackbarHost = { SnackbarHost(hostState = snackBarHostState) }, + ) { + LazyColumn( + modifier = Modifier + .fillMaxSize() + .padding(it) + ) { + } + } +} diff --git a/app/src/main/java/com/rosan/dhizuku/ui/theme/Color.kt b/app/src/main/java/com/rosan/dhizuku/ui/theme/Color.kt new file mode 100644 index 0000000..521608d --- /dev/null +++ b/app/src/main/java/com/rosan/dhizuku/ui/theme/Color.kt @@ -0,0 +1,11 @@ +package com.rosan.dhizuku.ui.theme + +import androidx.compose.ui.graphics.Color + +val Purple80 = Color(0xFFD0BCFF) +val PurpleGrey80 = Color(0xFFCCC2DC) +val Pink80 = Color(0xFFEFB8C8) + +val Purple40 = Color(0xFF6650a4) +val PurpleGrey40 = Color(0xFF625b71) +val Pink40 = Color(0xFF7D5260) \ No newline at end of file diff --git a/app/src/main/java/com/rosan/dhizuku/ui/theme/DhizukuTheme.kt b/app/src/main/java/com/rosan/dhizuku/ui/theme/DhizukuTheme.kt new file mode 100644 index 0000000..1ee46fe --- /dev/null +++ b/app/src/main/java/com/rosan/dhizuku/ui/theme/DhizukuTheme.kt @@ -0,0 +1,77 @@ +package com.rosan.dhizuku.ui.theme + +import android.os.Build +import androidx.compose.foundation.isSystemInDarkTheme +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.darkColorScheme +import androidx.compose.material3.dynamicDarkColorScheme +import androidx.compose.material3.dynamicLightColorScheme +import androidx.compose.material3.lightColorScheme +import androidx.compose.runtime.Composable +import androidx.compose.runtime.SideEffect +import androidx.compose.ui.platform.LocalContext +import com.google.accompanist.systemuicontroller.rememberSystemUiController + +private val DarkColorScheme = darkColorScheme( + primary = Purple80, + secondary = PurpleGrey80, + tertiary = Pink80 +) + +private val LightColorScheme = lightColorScheme( + primary = Purple40, + secondary = PurpleGrey40, + tertiary = Pink40 + + /* Other default colors to override + background = Color(0xFFFFFBFE), + surface = Color(0xFFFFFBFE), + onPrimary = Color.White, + onSecondary = Color.White, + onTertiary = Color.White, + onBackground = Color(0xFF1C1B1F), + onSurface = Color(0xFF1C1B1F), + */ +) + +@Composable +fun InstallerTheme( + darkTheme: Boolean = isSystemInDarkTheme(), + // Dynamic color is available on Android 12+ + dynamicColor: Boolean = true, + content: @Composable () -> Unit +) { + val colorScheme = when { + dynamicColor && Build.VERSION.SDK_INT >= Build.VERSION_CODES.S -> { + val context = LocalContext.current + if (darkTheme) dynamicDarkColorScheme(context) else dynamicLightColorScheme(context) + } + darkTheme -> DarkColorScheme + else -> LightColorScheme + } + val systemUiController = rememberSystemUiController() + SideEffect { + systemUiController.setStatusBarColor( + color = colorScheme.surface, + darkIcons = !darkTheme + ) + systemUiController.setNavigationBarColor( + color = colorScheme.surface, + darkIcons = !darkTheme + ) + } + /*val view = LocalView.current + if (!view.isInEditMode) { + SideEffect { + (view.context as Activity).window.setStatusBarColor() + (view.context as Activity).window.navigationBarColor = colorScheme.primary.toArgb() + ViewCompat.getWindowInsetsController(view)?.isAppearanceLightStatusBars = darkTheme + } + }*/ + + MaterialTheme( + colorScheme = colorScheme, + typography = Typography, + content = content + ) +} \ No newline at end of file diff --git a/app/src/main/java/com/rosan/dhizuku/ui/theme/Type.kt b/app/src/main/java/com/rosan/dhizuku/ui/theme/Type.kt new file mode 100644 index 0000000..9b4140d --- /dev/null +++ b/app/src/main/java/com/rosan/dhizuku/ui/theme/Type.kt @@ -0,0 +1,34 @@ +package com.rosan.dhizuku.ui.theme + +import androidx.compose.material3.Typography +import androidx.compose.ui.text.TextStyle +import androidx.compose.ui.text.font.FontFamily +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.unit.sp + +// Set of Material typography styles to start with +val Typography = Typography( + bodyLarge = TextStyle( + fontFamily = FontFamily.Default, + fontWeight = FontWeight.Normal, + fontSize = 16.sp, + lineHeight = 24.sp, + letterSpacing = 0.5.sp + ) + /* Other default text styles to override + titleLarge = TextStyle( + fontFamily = FontFamily.Default, + fontWeight = FontWeight.Normal, + fontSize = 22.sp, + lineHeight = 28.sp, + letterSpacing = 0.sp + ), + labelSmall = TextStyle( + fontFamily = FontFamily.Default, + fontWeight = FontWeight.Medium, + fontSize = 11.sp, + lineHeight = 16.sp, + letterSpacing = 0.5.sp + ) + */ +) \ No newline at end of file diff --git a/app/src/main/java/com/rosan/dhizuku/ui/widget/dialog/AlertDialog.kt b/app/src/main/java/com/rosan/dhizuku/ui/widget/dialog/AlertDialog.kt new file mode 100644 index 0000000..3ecc58a --- /dev/null +++ b/app/src/main/java/com/rosan/dhizuku/ui/widget/dialog/AlertDialog.kt @@ -0,0 +1,177 @@ +//package com.rosan.installer.ui.widget.dialog +// +//import androidx.compose.foundation.layout.Box +//import androidx.compose.foundation.layout.Column +//import androidx.compose.foundation.layout.PaddingValues +//import androidx.compose.foundation.layout.padding +//import androidx.compose.foundation.layout.sizeIn +//import androidx.compose.material3.AlertDialogDefaults +//import androidx.compose.material3.LocalContentColor +//import androidx.compose.material3.MaterialTheme +//import androidx.compose.material3.ProvideTextStyle +//import androidx.compose.material3.Surface +//import androidx.compose.runtime.Composable +//import androidx.compose.runtime.CompositionLocalProvider +//import androidx.compose.ui.Alignment +//import androidx.compose.ui.Modifier +//import androidx.compose.ui.graphics.Color +//import androidx.compose.ui.graphics.Shape +//import androidx.compose.ui.unit.Dp +//import androidx.compose.ui.unit.dp +//import androidx.compose.ui.window.Dialog +//import androidx.compose.ui.window.DialogProperties +//import com.google.accompanist.flowlayout.FlowRow +// +//@Composable +//fun AlertDialog( +// onDismissRequest: () -> Unit, +// confirmButton: @Composable () -> Unit, +// modifier: Modifier = Modifier, +// dismissButton: @Composable (() -> Unit)? = null, +// icon: @Composable (() -> Unit)? = null, +// title: @Composable (() -> Unit)? = null, +// text: @Composable (() -> Unit)? = null, +// view: @Composable (() -> Unit)? = null, +// shape: Shape = AlertDialogDefaults.shape, +// containerColor: Color = AlertDialogDefaults.containerColor, +// iconContentColor: Color = AlertDialogDefaults.iconContentColor, +// titleContentColor: Color = AlertDialogDefaults.titleContentColor, +// textContentColor: Color = AlertDialogDefaults.textContentColor, +// tonalElevation: Dp = AlertDialogDefaults.TonalElevation, +// properties: DialogProperties = DialogProperties() +//) { +// val realView: @Composable (() -> Unit)? = when { +// view != null -> view +// text != null -> { +// @Composable { +// Box(modifier = Modifier.padding(DialogWidgetPadding)) { +// text() +// } +// } +// } +// else -> null +// } +// Dialog(onDismissRequest = onDismissRequest, properties = properties) { +// AlertDialogContent( +// buttons = { +// FlowRow( +// mainAxisSpacing = ButtonsMainAxisSpacing, +// crossAxisSpacing = ButtonsCrossAxisSpacing +// ) { +// dismissButton?.invoke() +// confirmButton() +// } +// }, +// modifier = modifier, +// icon = icon, +// title = title, +// view = realView, +// shape = shape, +// containerColor = containerColor, +// tonalElevation = tonalElevation, +// buttonContentColor = MaterialTheme.colorScheme.primary, +// iconContentColor = iconContentColor, +// titleContentColor = titleContentColor, +// textContentColor = textContentColor +// ) +// } +//} +// +//@Composable +//private fun AlertDialogContent( +// buttons: @Composable () -> Unit, +// modifier: Modifier = Modifier, +// icon: (@Composable () -> Unit)?, +// title: (@Composable () -> Unit)?, +// view: @Composable (() -> Unit)?, +// shape: Shape, +// containerColor: Color, +// tonalElevation: Dp, +// buttonContentColor: Color, +// iconContentColor: Color, +// titleContentColor: Color, +// textContentColor: Color, +//) { +// Surface( +// modifier = modifier, +// shape = shape, +// color = containerColor, +// tonalElevation = tonalElevation +// ) { +// Column( +// modifier = Modifier +// .sizeIn(minWidth = MinWidth, maxHeight = MaxWidth) +// .padding(vertical = DialogPadding) +// ) { +// icon?.let { icon -> +// CompositionLocalProvider(LocalContentColor provides iconContentColor) { +// Box( +// modifier = Modifier +// .padding(DialogWidgetPadding) +// .padding(IconPadding) +// .align(Alignment.CenterHorizontally) +// ) { +// icon() +// } +// } +// } +// title?.let { title -> +// CompositionLocalProvider(LocalContentColor provides titleContentColor) { +// val textStyle = MaterialTheme.typography.headlineSmall +// ProvideTextStyle(textStyle) { +// Box( +// modifier = Modifier +// .padding(DialogWidgetPadding) +// .padding(TitlePadding) +// .align( +// if (icon == null) Alignment.Start +// else Alignment.CenterHorizontally +// ) +// ) { +// title() +// } +// } +// } +// } +// view?.let { view -> +// CompositionLocalProvider(LocalContentColor provides textContentColor) { +// val textStyle = MaterialTheme.typography.bodyMedium +// ProvideTextStyle(textStyle) { +// Box( +// modifier = Modifier +// .weight(weight = 1f, fill = false) +// .padding(TextPadding) +// .align(Alignment.Start) +// ) { +// view() +// } +// } +// } +// } +// Box( +// modifier = Modifier +// .padding(DialogWidgetPadding) +// .align(Alignment.End) +// ) { +// CompositionLocalProvider(LocalContentColor provides buttonContentColor) { +// val textStyle = MaterialTheme.typography.labelLarge +// ProvideTextStyle(value = textStyle, content = buttons) +// } +// } +// } +// } +//} +// +// +//private val ButtonsMainAxisSpacing = 8.dp +//private val ButtonsCrossAxisSpacing = 12.dp +// +//// Paddings for each of the dialog's parts. +//private val DialogPadding = 24.dp +//private val DialogWidgetPadding = PaddingValues(horizontal = DialogPadding) +//private val IconPadding = PaddingValues(bottom = 16.dp) +//private val TitlePadding = PaddingValues(bottom = 16.dp) +//private val TextPadding = PaddingValues(bottom = 24.dp) +// +//private val MinWidth = 280.dp +//private val MaxWidth = 560.dp diff --git a/app/src/main/java/com/rosan/dhizuku/ui/widget/dialog/PositionDialog.kt b/app/src/main/java/com/rosan/dhizuku/ui/widget/dialog/PositionDialog.kt new file mode 100644 index 0000000..f9fbe2f --- /dev/null +++ b/app/src/main/java/com/rosan/dhizuku/ui/widget/dialog/PositionDialog.kt @@ -0,0 +1,205 @@ +package com.rosan.dhizuku.ui.widget.dialog + +import androidx.compose.animation.core.animateDpAsState +import androidx.compose.foundation.clickable +import androidx.compose.foundation.interaction.MutableInteractionSource +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.PaddingValues +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.sizeIn +import androidx.compose.material3.AlertDialogDefaults +import androidx.compose.material3.LocalContentColor +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.ProvideTextStyle +import androidx.compose.material3.Surface +import androidx.compose.runtime.Composable +import androidx.compose.runtime.CompositionLocalProvider +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.Shape +import androidx.compose.ui.layout.onSizeChanged +import androidx.compose.ui.platform.LocalDensity +import androidx.compose.ui.unit.Dp +import androidx.compose.ui.unit.dp +import androidx.compose.ui.window.Dialog +import androidx.compose.ui.window.DialogProperties + +@Composable +fun PositionDialog( + properties: DialogProperties = DialogProperties(), + onDismissRequest: () -> Unit, + modifier: Modifier = Modifier, + shape: Shape = AlertDialogDefaults.shape, + containerColor: Color = AlertDialogDefaults.containerColor, + iconContentColor: Color = AlertDialogDefaults.iconContentColor, + titleContentColor: Color = AlertDialogDefaults.titleContentColor, + textContentColor: Color = AlertDialogDefaults.textContentColor, + tonalElevation: Dp = AlertDialogDefaults.TonalElevation, + leftIcon: @Composable (() -> Unit)? = null, + centerIcon: @Composable (() -> Unit)? = null, + rightIcon: @Composable (() -> Unit)? = null, + leftTitle: @Composable (() -> Unit)? = null, + centerTitle: @Composable (() -> Unit)? = null, + rightTitle: @Composable (() -> Unit)? = null, + leftText: @Composable (() -> Unit)? = null, + centerText: @Composable (() -> Unit)? = null, + rightText: @Composable (() -> Unit)? = null, + leftButton: @Composable (() -> Unit)? = null, + centerButton: @Composable (() -> Unit)? = null, + rightButton: @Composable (() -> Unit)? = null +) { + Dialog(onDismissRequest = onDismissRequest, properties = properties) { + Box( + modifier = Modifier + .fillMaxSize() + .clickable( + onClick = onDismissRequest, + indication = null, + interactionSource = remember { + MutableInteractionSource() + }) + ) { + Box( + modifier = Modifier + .align(Alignment.Center) + .clickable( + onClick = {}, + indication = null, + interactionSource = remember { + MutableInteractionSource() + }) + ) { + Surface( + modifier = modifier, + shape = shape, + color = containerColor, + tonalElevation = tonalElevation + ) { + Box( + modifier = Modifier + .sizeIn(minWidth = MinWidth, maxHeight = MaxWidth) + .padding(DialogPadding) + ) { + var buttonHeightPx by remember { + mutableStateOf(0) + } + val buttonHeight = (buttonHeightPx / LocalDensity.current.density).dp + Box(modifier = Modifier + .align(Alignment.BottomCenter) + .onSizeChanged { + buttonHeightPx = it.height + }) { + PositionChildWidget( + leftButton, + centerButton, + rightButton + ) { button -> + CompositionLocalProvider(LocalContentColor provides MaterialTheme.colorScheme.primary) { + val textStyle = MaterialTheme.typography.labelLarge + ProvideTextStyle(value = textStyle) { + button?.invoke() + } + } + } + } + Column( + modifier = Modifier.padding(bottom = animateDpAsState(targetValue = buttonHeight).value) + ) { + PositionChildWidget( + leftIcon, + centerIcon, + rightIcon + ) { icon -> + CompositionLocalProvider(LocalContentColor provides iconContentColor) { + Box( + modifier = Modifier + .padding(IconPadding) + .align(Alignment.CenterHorizontally) + ) { + icon?.invoke() + } + } + } + PositionChildWidget( + leftTitle, + centerTitle, + rightTitle + ) { title -> + CompositionLocalProvider(LocalContentColor provides titleContentColor) { + val textStyle = MaterialTheme.typography.headlineSmall + ProvideTextStyle(textStyle) { + Box( + modifier = Modifier + .padding(TitlePadding) + .align(Alignment.CenterHorizontally) + ) { + title?.invoke() + } + } + } + } + PositionChildWidget( + leftText, + centerText, + rightText + ) { text -> + CompositionLocalProvider(LocalContentColor provides textContentColor) { + val textStyle = MaterialTheme.typography.bodyMedium + ProvideTextStyle(textStyle) { + Box( + modifier = Modifier + .weight(weight = 1f, fill = false) + .padding(TextPadding) + ) { + text?.invoke() + } + } + } + } + } + } + } + } + } + } +} + +@Composable +private fun PositionChildWidget( + left: @Composable (() -> Unit)? = null, + center: @Composable (() -> Unit)? = null, + right: @Composable (() -> Unit)? = null, + parent: @Composable ((child: @Composable (() -> Unit)?) -> Unit) +) { + if (left == null && center == null && right == null) return + Box(modifier = Modifier.fillMaxWidth()) { + Box(modifier = Modifier.align(Alignment.TopStart)) { + parent.invoke(left) + } + Box(modifier = Modifier.align(Alignment.TopCenter)) { + parent.invoke(center) + } + Box(modifier = Modifier.align(Alignment.TopEnd)) { + parent.invoke(right) + } + } +} + +private val ButtonsMainAxisSpacing = 8.dp +private val ButtonsCrossAxisSpacing = 12.dp + +private val DialogPadding = 24.dp +private val IconPadding = PaddingValues(bottom = 16.dp) +private val TitlePadding = PaddingValues(bottom = 16.dp) +private val TextPadding = PaddingValues(bottom = 24.dp) + +private val MinWidth = 280.dp +private val MaxWidth = 560.dp \ No newline at end of file diff --git a/app/src/main/java/com/rosan/dhizuku/ui/widget/setting/BaseWidget.kt b/app/src/main/java/com/rosan/dhizuku/ui/widget/setting/BaseWidget.kt new file mode 100644 index 0000000..7b8a648 --- /dev/null +++ b/app/src/main/java/com/rosan/dhizuku/ui/widget/setting/BaseWidget.kt @@ -0,0 +1,72 @@ +package com.rosan.dhizuku.ui.widget.setting + +import androidx.compose.foundation.clickable +import androidx.compose.foundation.layout.* +import androidx.compose.material.icons.materialIcon +import androidx.compose.material.icons.materialPath +import androidx.compose.material3.Icon +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.vector.ImageVector +import androidx.compose.ui.unit.dp + +@Composable +fun BaseWidget( + icon: ImageVector? = null, + title: String, + description: String? = null, + enabled: Boolean = true, + onClick: () -> Unit = {}, + foreContent: @Composable BoxScope.() -> Unit = {}, + content: @Composable BoxScope.() -> Unit, +) { + Row( + modifier = Modifier + .fillMaxWidth() + .clickable( + enabled = enabled, + onClick = onClick + ) + .padding(16.dp), + horizontalArrangement = Arrangement.spacedBy(16.dp), + ) { + Icon( + modifier = Modifier + .size(24.dp) + .align(Alignment.CenterVertically), + imageVector = icon ?: materialIcon("") { materialPath {} }, + contentDescription = null, + ) + Box( + modifier = Modifier + .weight(1f) + .fillMaxHeight() + .align(Alignment.CenterVertically) + ) { + Column { + Text( + text = title, + color = MaterialTheme.colorScheme.onSurface, + style = MaterialTheme.typography.titleMedium + ) + description?.let { + Text( + text = it, + color = MaterialTheme.colorScheme.onSurface, + style = MaterialTheme.typography.bodyMedium + ) + } + } + foreContent() + } + Box( + modifier = Modifier + .align(Alignment.CenterVertically) + ) { + content() + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/rosan/dhizuku/ui/widget/setting/DropDownMenuWidget.kt b/app/src/main/java/com/rosan/dhizuku/ui/widget/setting/DropDownMenuWidget.kt new file mode 100644 index 0000000..aa44792 --- /dev/null +++ b/app/src/main/java/com/rosan/dhizuku/ui/widget/setting/DropDownMenuWidget.kt @@ -0,0 +1,119 @@ +package com.rosan.dhizuku.ui.widget.setting + +import androidx.compose.animation.core.animateIntAsState +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.* +import androidx.compose.material3.* +import androidx.compose.runtime.* +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.vector.ImageVector +import androidx.compose.ui.layout.layout +import androidx.compose.ui.platform.LocalDensity +import androidx.compose.ui.unit.DpOffset +import androidx.compose.ui.unit.dp + + +@OptIn(ExperimentalMaterial3Api::class) +@Composable +fun DropDownMenuWidget( + icon: ImageVector? = null, + title: String, + description: String? = null, + enabled: Boolean = true, + choice: Int, + data: List, + onChoiceChange: (Int) -> Unit +) { + var expanded by remember { + mutableStateOf(false) + } + + val heights by remember { + mutableStateOf(Array(data.size) { 0 }) + } + + fun updateHeights(index: Int, height: Int) { + heights[index] = height + } + + var containerHeight by remember { + mutableStateOf(0) + } + + val containerHeightApply by animateIntAsState(targetValue = if (expanded) containerHeight else 0) + + val offsetY by animateIntAsState(targetValue = run { + val sumHeights = heights.sum() + var y = 0 + if (sumHeights < containerHeight) { + if (choice > 0) { + for (i in 0 until choice) { + y -= heights[i] + } + } + y -= heights[choice] / 2 + y -= (containerHeight - sumHeights) / 2 + } + y + }) + + BaseWidget( + icon = icon, + title = title, + description = description, + enabled = enabled, + onClick = { + expanded = !expanded + }, + foreContent = { + Box( + modifier = Modifier + .align(Alignment.CenterStart) + ) { + DropdownMenu( + modifier = Modifier + .layout { measurable, constraints -> + val placeable = measurable.measure(constraints) + containerHeight = placeable.height + layout(placeable.width, containerHeightApply) { + placeable.placeRelative(0, 0) + } + }, + expanded = expanded, + onDismissRequest = { expanded = false }, + offset = DpOffset( + x = 0.dp, + y = with(LocalDensity.current) { + offsetY.toDp() + } + ) + ) { + data.forEachIndexed { index, item -> + val backgroundColor = + if (index == choice) MaterialTheme.colorScheme.surfaceVariant else Color.Transparent + DropdownMenuItem( + modifier = Modifier + .background(backgroundColor) + .layout { measurable, constraints -> + val placeable = measurable.measure(constraints) + val height = placeable.height + updateHeights(index, height) + layout(placeable.width, height) { + placeable.placeRelative(0, 0) + } + }, + text = { Text(text = item) }, + onClick = { + onChoiceChange(index) + expanded = false + } + ) + } + } + } + } + ) { + } +} diff --git a/app/src/main/java/com/rosan/dhizuku/ui/widget/setting/LabelWidget.kt b/app/src/main/java/com/rosan/dhizuku/ui/widget/setting/LabelWidget.kt new file mode 100644 index 0000000..ee68d4e --- /dev/null +++ b/app/src/main/java/com/rosan/dhizuku/ui/widget/setting/LabelWidget.kt @@ -0,0 +1,28 @@ +package com.rosan.dhizuku.ui.widget.setting + +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.unit.dp + +@Composable +fun LabelWidget(label: String) { + Box( + modifier = Modifier + .fillMaxWidth() + .padding(vertical = 8.dp, horizontal = 56.dp) +// .padding(vertical = 8.dp, horizontal = 16.dp) + .padding(top = 8.dp) + ) { + Text( + modifier = Modifier, + text = label, + style = MaterialTheme.typography.titleSmall, + color = MaterialTheme.colorScheme.primary, + ) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/rosan/dhizuku/ui/widget/setting/SwitchWidget.kt b/app/src/main/java/com/rosan/dhizuku/ui/widget/setting/SwitchWidget.kt new file mode 100644 index 0000000..69a9d46 --- /dev/null +++ b/app/src/main/java/com/rosan/dhizuku/ui/widget/setting/SwitchWidget.kt @@ -0,0 +1,31 @@ +package com.rosan.dhizuku.ui.widget.setting + +import androidx.compose.material3.Switch +import androidx.compose.runtime.Composable +import androidx.compose.ui.graphics.vector.ImageVector + +@Composable +fun SwitchWidget( + icon: ImageVector? = null, + title: String, + description: String? = null, + enabled: Boolean = true, + checked: Boolean, + onCheckedChange: (Boolean) -> Unit +) { + BaseWidget( + icon = icon, + title = title, + description = description, + enabled = enabled, + onClick = { + onCheckedChange(!checked) + } + ) { + Switch( + enabled = enabled, + checked = checked, + onCheckedChange = { onCheckedChange(!checked) } + ) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/rosan/dhizuku/util/ContextUtil.kt b/app/src/main/java/com/rosan/dhizuku/util/ContextUtil.kt new file mode 100644 index 0000000..964ae3a --- /dev/null +++ b/app/src/main/java/com/rosan/dhizuku/util/ContextUtil.kt @@ -0,0 +1,21 @@ +package com.rosan.dhizuku.util + +import android.content.Context +import android.content.Intent +import android.net.Uri +import android.widget.Toast +import androidx.annotation.StringRes + +fun Context.openUrlInBrowser(url: String) { + val intent = Intent(Intent.ACTION_VIEW, Uri.parse(url)) + .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) + startActivity(intent) +} + +fun Context.toast(text: CharSequence, duration: Int = Toast.LENGTH_SHORT) { + Toast.makeText(this, text, duration).show() +} + +fun Context.toast(@StringRes resId: Int, duration: Int = Toast.LENGTH_SHORT) { + Toast.makeText(this, resId, duration).show() +} \ No newline at end of file diff --git a/app/src/main/java/com/rosan/dhizuku/util/IOUtil.kt b/app/src/main/java/com/rosan/dhizuku/util/IOUtil.kt new file mode 100644 index 0000000..2db030a --- /dev/null +++ b/app/src/main/java/com/rosan/dhizuku/util/IOUtil.kt @@ -0,0 +1,54 @@ +package com.rosan.dhizuku.util + +import android.os.ParcelFileDescriptor +import java.io.IOException +import java.io.InputStream +import java.io.OutputStream +import kotlin.concurrent.thread + +private fun transferThread(input: InputStream, output: OutputStream) { + thread( + isDaemon = true + ) { + val buf = ByteArray(DEFAULT_BUFFER_SIZE) + var len = 0; + try { + while (run { + len = input.read(buf) + return@run len + } > 0) { + output.write(buf, 0, len) + output.flush() + } + } catch (e: IOException) { + e.printStackTrace() + } finally { + try { + input.close() + } catch (e: IOException) { + e.printStackTrace() + } + try { + output.close() + } catch (e: IOException) { + e.printStackTrace() + } + } + } +} + +fun InputStream.parcelable(): ParcelFileDescriptor { + val pipe = ParcelFileDescriptor.createPipe() + val read = pipe[0] + val write = pipe[1] + transferThread(this, ParcelFileDescriptor.AutoCloseOutputStream(write)) + return read +} + +fun OutputStream.parcelable(): ParcelFileDescriptor { + val pipe = ParcelFileDescriptor.createPipe() + val read = pipe[0] + val write = pipe[1] + transferThread(ParcelFileDescriptor.AutoCloseInputStream(read), this) + return write +} \ No newline at end of file diff --git a/app/src/main/res/drawable-hdpi/round_hourglass_disabled_black_18.png b/app/src/main/res/drawable-hdpi/round_hourglass_disabled_black_18.png new file mode 100644 index 0000000..045a40e Binary files /dev/null and b/app/src/main/res/drawable-hdpi/round_hourglass_disabled_black_18.png differ diff --git a/app/src/main/res/drawable-hdpi/round_hourglass_disabled_black_20.png b/app/src/main/res/drawable-hdpi/round_hourglass_disabled_black_20.png new file mode 100644 index 0000000..66244a3 Binary files /dev/null and b/app/src/main/res/drawable-hdpi/round_hourglass_disabled_black_20.png differ diff --git a/app/src/main/res/drawable-hdpi/round_hourglass_disabled_black_24.png b/app/src/main/res/drawable-hdpi/round_hourglass_disabled_black_24.png new file mode 100644 index 0000000..582e359 Binary files /dev/null and b/app/src/main/res/drawable-hdpi/round_hourglass_disabled_black_24.png differ diff --git a/app/src/main/res/drawable-hdpi/round_hourglass_disabled_black_36.png b/app/src/main/res/drawable-hdpi/round_hourglass_disabled_black_36.png new file mode 100644 index 0000000..b5efb16 Binary files /dev/null and b/app/src/main/res/drawable-hdpi/round_hourglass_disabled_black_36.png differ diff --git a/app/src/main/res/drawable-hdpi/round_hourglass_disabled_black_48.png b/app/src/main/res/drawable-hdpi/round_hourglass_disabled_black_48.png new file mode 100644 index 0000000..220e4a5 Binary files /dev/null and b/app/src/main/res/drawable-hdpi/round_hourglass_disabled_black_48.png differ diff --git a/app/src/main/res/drawable-hdpi/round_hourglass_empty_black_18.png b/app/src/main/res/drawable-hdpi/round_hourglass_empty_black_18.png new file mode 100644 index 0000000..6152b8d Binary files /dev/null and b/app/src/main/res/drawable-hdpi/round_hourglass_empty_black_18.png differ diff --git a/app/src/main/res/drawable-hdpi/round_hourglass_empty_black_20.png b/app/src/main/res/drawable-hdpi/round_hourglass_empty_black_20.png new file mode 100644 index 0000000..d6c7a45 Binary files /dev/null and b/app/src/main/res/drawable-hdpi/round_hourglass_empty_black_20.png differ diff --git a/app/src/main/res/drawable-hdpi/round_hourglass_empty_black_24.png b/app/src/main/res/drawable-hdpi/round_hourglass_empty_black_24.png new file mode 100644 index 0000000..8fb44b0 Binary files /dev/null and b/app/src/main/res/drawable-hdpi/round_hourglass_empty_black_24.png differ diff --git a/app/src/main/res/drawable-hdpi/round_hourglass_empty_black_36.png b/app/src/main/res/drawable-hdpi/round_hourglass_empty_black_36.png new file mode 100644 index 0000000..c5f7274 Binary files /dev/null and b/app/src/main/res/drawable-hdpi/round_hourglass_empty_black_36.png differ diff --git a/app/src/main/res/drawable-hdpi/round_hourglass_empty_black_48.png b/app/src/main/res/drawable-hdpi/round_hourglass_empty_black_48.png new file mode 100644 index 0000000..ce315fc Binary files /dev/null and b/app/src/main/res/drawable-hdpi/round_hourglass_empty_black_48.png differ diff --git a/app/src/main/res/drawable-mdpi/round_hourglass_disabled_black_18.png b/app/src/main/res/drawable-mdpi/round_hourglass_disabled_black_18.png new file mode 100644 index 0000000..71d24e6 Binary files /dev/null and b/app/src/main/res/drawable-mdpi/round_hourglass_disabled_black_18.png differ diff --git a/app/src/main/res/drawable-mdpi/round_hourglass_disabled_black_20.png b/app/src/main/res/drawable-mdpi/round_hourglass_disabled_black_20.png new file mode 100644 index 0000000..294cec1 Binary files /dev/null and b/app/src/main/res/drawable-mdpi/round_hourglass_disabled_black_20.png differ diff --git a/app/src/main/res/drawable-mdpi/round_hourglass_disabled_black_24.png b/app/src/main/res/drawable-mdpi/round_hourglass_disabled_black_24.png new file mode 100644 index 0000000..67db46a Binary files /dev/null and b/app/src/main/res/drawable-mdpi/round_hourglass_disabled_black_24.png differ diff --git a/app/src/main/res/drawable-mdpi/round_hourglass_disabled_black_36.png b/app/src/main/res/drawable-mdpi/round_hourglass_disabled_black_36.png new file mode 100644 index 0000000..582e359 Binary files /dev/null and b/app/src/main/res/drawable-mdpi/round_hourglass_disabled_black_36.png differ diff --git a/app/src/main/res/drawable-mdpi/round_hourglass_disabled_black_48.png b/app/src/main/res/drawable-mdpi/round_hourglass_disabled_black_48.png new file mode 100644 index 0000000..abc7851 Binary files /dev/null and b/app/src/main/res/drawable-mdpi/round_hourglass_disabled_black_48.png differ diff --git a/app/src/main/res/drawable-mdpi/round_hourglass_empty_black_18.png b/app/src/main/res/drawable-mdpi/round_hourglass_empty_black_18.png new file mode 100644 index 0000000..0033b11 Binary files /dev/null and b/app/src/main/res/drawable-mdpi/round_hourglass_empty_black_18.png differ diff --git a/app/src/main/res/drawable-mdpi/round_hourglass_empty_black_20.png b/app/src/main/res/drawable-mdpi/round_hourglass_empty_black_20.png new file mode 100644 index 0000000..bfe158d Binary files /dev/null and b/app/src/main/res/drawable-mdpi/round_hourglass_empty_black_20.png differ diff --git a/app/src/main/res/drawable-mdpi/round_hourglass_empty_black_24.png b/app/src/main/res/drawable-mdpi/round_hourglass_empty_black_24.png new file mode 100644 index 0000000..27e4329 Binary files /dev/null and b/app/src/main/res/drawable-mdpi/round_hourglass_empty_black_24.png differ diff --git a/app/src/main/res/drawable-mdpi/round_hourglass_empty_black_36.png b/app/src/main/res/drawable-mdpi/round_hourglass_empty_black_36.png new file mode 100644 index 0000000..8fb44b0 Binary files /dev/null and b/app/src/main/res/drawable-mdpi/round_hourglass_empty_black_36.png differ diff --git a/app/src/main/res/drawable-mdpi/round_hourglass_empty_black_48.png b/app/src/main/res/drawable-mdpi/round_hourglass_empty_black_48.png new file mode 100644 index 0000000..8329e16 Binary files /dev/null and b/app/src/main/res/drawable-mdpi/round_hourglass_empty_black_48.png differ diff --git a/app/src/main/res/drawable-v24/ic_launcher_foreground.xml b/app/src/main/res/drawable-v24/ic_launcher_foreground.xml new file mode 100644 index 0000000..2b068d1 --- /dev/null +++ b/app/src/main/res/drawable-v24/ic_launcher_foreground.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable-xhdpi/round_hourglass_disabled_black_18.png b/app/src/main/res/drawable-xhdpi/round_hourglass_disabled_black_18.png new file mode 100644 index 0000000..582e359 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/round_hourglass_disabled_black_18.png differ diff --git a/app/src/main/res/drawable-xhdpi/round_hourglass_disabled_black_20.png b/app/src/main/res/drawable-xhdpi/round_hourglass_disabled_black_20.png new file mode 100644 index 0000000..b7a6688 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/round_hourglass_disabled_black_20.png differ diff --git a/app/src/main/res/drawable-xhdpi/round_hourglass_disabled_black_24.png b/app/src/main/res/drawable-xhdpi/round_hourglass_disabled_black_24.png new file mode 100644 index 0000000..abc7851 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/round_hourglass_disabled_black_24.png differ diff --git a/app/src/main/res/drawable-xhdpi/round_hourglass_disabled_black_36.png b/app/src/main/res/drawable-xhdpi/round_hourglass_disabled_black_36.png new file mode 100644 index 0000000..220e4a5 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/round_hourglass_disabled_black_36.png differ diff --git a/app/src/main/res/drawable-xhdpi/round_hourglass_disabled_black_48.png b/app/src/main/res/drawable-xhdpi/round_hourglass_disabled_black_48.png new file mode 100644 index 0000000..60ba7ce Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/round_hourglass_disabled_black_48.png differ diff --git a/app/src/main/res/drawable-xhdpi/round_hourglass_empty_black_18.png b/app/src/main/res/drawable-xhdpi/round_hourglass_empty_black_18.png new file mode 100644 index 0000000..8fb44b0 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/round_hourglass_empty_black_18.png differ diff --git a/app/src/main/res/drawable-xhdpi/round_hourglass_empty_black_20.png b/app/src/main/res/drawable-xhdpi/round_hourglass_empty_black_20.png new file mode 100644 index 0000000..3d672e0 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/round_hourglass_empty_black_20.png differ diff --git a/app/src/main/res/drawable-xhdpi/round_hourglass_empty_black_24.png b/app/src/main/res/drawable-xhdpi/round_hourglass_empty_black_24.png new file mode 100644 index 0000000..8329e16 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/round_hourglass_empty_black_24.png differ diff --git a/app/src/main/res/drawable-xhdpi/round_hourglass_empty_black_36.png b/app/src/main/res/drawable-xhdpi/round_hourglass_empty_black_36.png new file mode 100644 index 0000000..ce315fc Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/round_hourglass_empty_black_36.png differ diff --git a/app/src/main/res/drawable-xhdpi/round_hourglass_empty_black_48.png b/app/src/main/res/drawable-xhdpi/round_hourglass_empty_black_48.png new file mode 100644 index 0000000..926feac Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/round_hourglass_empty_black_48.png differ diff --git a/app/src/main/res/drawable-xxhdpi/round_hourglass_disabled_black_18.png b/app/src/main/res/drawable-xxhdpi/round_hourglass_disabled_black_18.png new file mode 100644 index 0000000..b5efb16 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/round_hourglass_disabled_black_18.png differ diff --git a/app/src/main/res/drawable-xxhdpi/round_hourglass_disabled_black_20.png b/app/src/main/res/drawable-xxhdpi/round_hourglass_disabled_black_20.png new file mode 100644 index 0000000..bf0c4dd Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/round_hourglass_disabled_black_20.png differ diff --git a/app/src/main/res/drawable-xxhdpi/round_hourglass_disabled_black_24.png b/app/src/main/res/drawable-xxhdpi/round_hourglass_disabled_black_24.png new file mode 100644 index 0000000..220e4a5 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/round_hourglass_disabled_black_24.png differ diff --git a/app/src/main/res/drawable-xxhdpi/round_hourglass_disabled_black_36.png b/app/src/main/res/drawable-xxhdpi/round_hourglass_disabled_black_36.png new file mode 100644 index 0000000..fe35987 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/round_hourglass_disabled_black_36.png differ diff --git a/app/src/main/res/drawable-xxhdpi/round_hourglass_disabled_black_48.png b/app/src/main/res/drawable-xxhdpi/round_hourglass_disabled_black_48.png new file mode 100644 index 0000000..6586526 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/round_hourglass_disabled_black_48.png differ diff --git a/app/src/main/res/drawable-xxhdpi/round_hourglass_empty_black_18.png b/app/src/main/res/drawable-xxhdpi/round_hourglass_empty_black_18.png new file mode 100644 index 0000000..c5f7274 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/round_hourglass_empty_black_18.png differ diff --git a/app/src/main/res/drawable-xxhdpi/round_hourglass_empty_black_20.png b/app/src/main/res/drawable-xxhdpi/round_hourglass_empty_black_20.png new file mode 100644 index 0000000..c7b4221 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/round_hourglass_empty_black_20.png differ diff --git a/app/src/main/res/drawable-xxhdpi/round_hourglass_empty_black_24.png b/app/src/main/res/drawable-xxhdpi/round_hourglass_empty_black_24.png new file mode 100644 index 0000000..ce315fc Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/round_hourglass_empty_black_24.png differ diff --git a/app/src/main/res/drawable-xxhdpi/round_hourglass_empty_black_36.png b/app/src/main/res/drawable-xxhdpi/round_hourglass_empty_black_36.png new file mode 100644 index 0000000..e248363 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/round_hourglass_empty_black_36.png differ diff --git a/app/src/main/res/drawable-xxhdpi/round_hourglass_empty_black_48.png b/app/src/main/res/drawable-xxhdpi/round_hourglass_empty_black_48.png new file mode 100644 index 0000000..1185768 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/round_hourglass_empty_black_48.png differ diff --git a/app/src/main/res/drawable-xxxhdpi/round_hourglass_disabled_black_18.png b/app/src/main/res/drawable-xxxhdpi/round_hourglass_disabled_black_18.png new file mode 100644 index 0000000..220e4a5 Binary files /dev/null and b/app/src/main/res/drawable-xxxhdpi/round_hourglass_disabled_black_18.png differ diff --git a/app/src/main/res/drawable-xxxhdpi/round_hourglass_disabled_black_20.png b/app/src/main/res/drawable-xxxhdpi/round_hourglass_disabled_black_20.png new file mode 100644 index 0000000..d8cfb5d Binary files /dev/null and b/app/src/main/res/drawable-xxxhdpi/round_hourglass_disabled_black_20.png differ diff --git a/app/src/main/res/drawable-xxxhdpi/round_hourglass_disabled_black_24.png b/app/src/main/res/drawable-xxxhdpi/round_hourglass_disabled_black_24.png new file mode 100644 index 0000000..60ba7ce Binary files /dev/null and b/app/src/main/res/drawable-xxxhdpi/round_hourglass_disabled_black_24.png differ diff --git a/app/src/main/res/drawable-xxxhdpi/round_hourglass_disabled_black_36.png b/app/src/main/res/drawable-xxxhdpi/round_hourglass_disabled_black_36.png new file mode 100644 index 0000000..6586526 Binary files /dev/null and b/app/src/main/res/drawable-xxxhdpi/round_hourglass_disabled_black_36.png differ diff --git a/app/src/main/res/drawable-xxxhdpi/round_hourglass_disabled_black_48.png b/app/src/main/res/drawable-xxxhdpi/round_hourglass_disabled_black_48.png new file mode 100644 index 0000000..c3737fd Binary files /dev/null and b/app/src/main/res/drawable-xxxhdpi/round_hourglass_disabled_black_48.png differ diff --git a/app/src/main/res/drawable-xxxhdpi/round_hourglass_empty_black_18.png b/app/src/main/res/drawable-xxxhdpi/round_hourglass_empty_black_18.png new file mode 100644 index 0000000..ce315fc Binary files /dev/null and b/app/src/main/res/drawable-xxxhdpi/round_hourglass_empty_black_18.png differ diff --git a/app/src/main/res/drawable-xxxhdpi/round_hourglass_empty_black_20.png b/app/src/main/res/drawable-xxxhdpi/round_hourglass_empty_black_20.png new file mode 100644 index 0000000..4cc39b3 Binary files /dev/null and b/app/src/main/res/drawable-xxxhdpi/round_hourglass_empty_black_20.png differ diff --git a/app/src/main/res/drawable-xxxhdpi/round_hourglass_empty_black_24.png b/app/src/main/res/drawable-xxxhdpi/round_hourglass_empty_black_24.png new file mode 100644 index 0000000..926feac Binary files /dev/null and b/app/src/main/res/drawable-xxxhdpi/round_hourglass_empty_black_24.png differ diff --git a/app/src/main/res/drawable-xxxhdpi/round_hourglass_empty_black_36.png b/app/src/main/res/drawable-xxxhdpi/round_hourglass_empty_black_36.png new file mode 100644 index 0000000..1185768 Binary files /dev/null and b/app/src/main/res/drawable-xxxhdpi/round_hourglass_empty_black_36.png differ diff --git a/app/src/main/res/drawable-xxxhdpi/round_hourglass_empty_black_48.png b/app/src/main/res/drawable-xxxhdpi/round_hourglass_empty_black_48.png new file mode 100644 index 0000000..21b4955 Binary files /dev/null and b/app/src/main/res/drawable-xxxhdpi/round_hourglass_empty_black_48.png differ diff --git a/app/src/main/res/drawable/ic_launcher_background.xml b/app/src/main/res/drawable/ic_launcher_background.xml new file mode 100644 index 0000000..07d5da9 --- /dev/null +++ b/app/src/main/res/drawable/ic_launcher_background.xml @@ -0,0 +1,170 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/icon_background.xml b/app/src/main/res/drawable/icon_background.xml new file mode 100644 index 0000000..c3e8d82 --- /dev/null +++ b/app/src/main/res/drawable/icon_background.xml @@ -0,0 +1,9 @@ + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/icon_foreground.xml b/app/src/main/res/drawable/icon_foreground.xml new file mode 100644 index 0000000..213bdcb --- /dev/null +++ b/app/src/main/res/drawable/icon_foreground.xml @@ -0,0 +1,21 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/round_hourglass_disabled_20.xml b/app/src/main/res/drawable/round_hourglass_disabled_20.xml new file mode 100644 index 0000000..7a3d33a --- /dev/null +++ b/app/src/main/res/drawable/round_hourglass_disabled_20.xml @@ -0,0 +1,13 @@ + + + + diff --git a/app/src/main/res/drawable/round_hourglass_disabled_24.xml b/app/src/main/res/drawable/round_hourglass_disabled_24.xml new file mode 100644 index 0000000..a6b590e --- /dev/null +++ b/app/src/main/res/drawable/round_hourglass_disabled_24.xml @@ -0,0 +1,13 @@ + + + + diff --git a/app/src/main/res/drawable/round_hourglass_empty_20.xml b/app/src/main/res/drawable/round_hourglass_empty_20.xml new file mode 100644 index 0000000..e4f8ca9 --- /dev/null +++ b/app/src/main/res/drawable/round_hourglass_empty_20.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/round_hourglass_empty_24.xml b/app/src/main/res/drawable/round_hourglass_empty_24.xml new file mode 100644 index 0000000..c61c2da --- /dev/null +++ b/app/src/main/res/drawable/round_hourglass_empty_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml new file mode 100644 index 0000000..eca70cf --- /dev/null +++ b/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml new file mode 100644 index 0000000..eca70cf --- /dev/null +++ b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher.webp b/app/src/main/res/mipmap-hdpi/ic_launcher.webp new file mode 100644 index 0000000..c209e78 Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/ic_launcher.webp differ diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp new file mode 100644 index 0000000..b2dfe3d Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp differ diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher.webp b/app/src/main/res/mipmap-mdpi/ic_launcher.webp new file mode 100644 index 0000000..4f0f1d6 Binary files /dev/null and b/app/src/main/res/mipmap-mdpi/ic_launcher.webp differ diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp new file mode 100644 index 0000000..62b611d Binary files /dev/null and b/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp differ diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher.webp b/app/src/main/res/mipmap-xhdpi/ic_launcher.webp new file mode 100644 index 0000000..948a307 Binary files /dev/null and b/app/src/main/res/mipmap-xhdpi/ic_launcher.webp differ diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp new file mode 100644 index 0000000..1b9a695 Binary files /dev/null and b/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp b/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp new file mode 100644 index 0000000..28d4b77 Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp new file mode 100644 index 0000000..9287f50 Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp differ diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp new file mode 100644 index 0000000..aa7d642 Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp differ diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp new file mode 100644 index 0000000..9126ae3 Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp differ diff --git a/app/src/main/res/raw/empty_state.json b/app/src/main/res/raw/empty_state.json new file mode 100644 index 0000000..7e263e7 --- /dev/null +++ b/app/src/main/res/raw/empty_state.json @@ -0,0 +1 @@ +{"v":"4.8.0","meta":{"g":"LottieFiles AE 1.1.0","a":"","k":"","d":"","tc":""},"fr":29.9700012207031,"ip":0,"op":77.0000031362743,"w":1000,"h":1000,"nm":"Comp 1","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Shape Layer 2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[480,506,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[41,-30],[34,-78],[-36.607,20.098],[40,-43],[-71,185],[26,-28]],"o":[[0,0],[-30.454,22.283],[-34,78],[51,-28],[-61.995,66.645],[70.57,-183.88],[-26,28]],"v":[[-142,44],[-139,140],[-352,106],[-171,308],[-204,227],[-313,168],[-413,67]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"d":[{"n":"d","nm":"dash","v":{"a":0,"k":30,"ix":1}},{"n":"g","nm":"gap","v":{"a":0,"k":1369,"ix":2}},{"n":"o","nm":"offset","v":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":32,"s":[103]},{"t":70.0000028511585,"s":[-1303]}],"ix":7}}],"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":22.0000008960784,"op":1810.00007372281,"st":12.00000048877,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"Shape Layer 1","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[500,500,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[41,-30],[34,-78],[-36.607,20.098],[40,-43],[-71,185],[26,-28]],"o":[[0,0],[-30.454,22.283],[-34,78],[51,-28],[-61.995,66.645],[70.57,-183.88],[-26,28]],"v":[[-142,44],[-139,140],[-352,106],[-171,308],[-204,227],[-313,168],[-413,67]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"d":[{"n":"d","nm":"dash","v":{"a":0,"k":12,"ix":1}},{"n":"g","nm":"gap","v":{"a":0,"k":1369,"ix":2}},{"n":"o","nm":"offset","v":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":20,"s":[103]},{"t":58.0000023623884,"s":[-1303]}],"ix":7}}],"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":22.0000008960784,"op":1798.00007323404,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"head/boxgirl2 Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":9,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":45,"s":[-5]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":50,"s":[-5]},{"t":75.0000030548126,"s":[0]}],"ix":10},"p":{"a":0,"k":[504.173,279.4,0],"ix":2},"a":{"a":0,"k":[615.874,302.163,0],"ix":1},"s":{"a":0,"k":[83,83,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.203,0],[0,0],[0.188,-0.112],[0.266,-0.265],[0.11,-0.275],[-0.203,0],[0,0],[-0.188,0.113],[-0.266,0.266],[-0.11,0.274]],"o":[[0,0],[-0.231,0],[-0.322,0.194],[-0.206,0.206],[-0.041,0.103],[0,0],[0.232,0],[0.322,-0.194],[0.206,-0.205],[0.041,-0.104]],"v":[[3.115,-1.01],[-1.033,-1.01],[-1.711,-0.745],[-2.621,-0.032],[-3.193,0.682],[-3.115,1.01],[1.032,1.01],[1.711,0.745],[2.621,0.031],[3.193,-0.682]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[592.024,140.01],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.441,0],[0,0],[0.377,-0.376],[-0.441,0],[0,0],[-0.377,0.376]],"o":[[0,0],[-0.571,0],[-0.086,0.085],[0,0],[0.572,0],[0.085,-0.085]],"v":[[4.643,-1.01],[-2.561,-1.01],[-4.149,-0.032],[-4.643,1.01],[2.56,1.01],[4.149,0.032]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[589.932,134.862],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.203,0],[0,0],[0.187,-0.112],[0.266,-0.265],[0.109,-0.275],[-0.203,0],[0,0],[-0.188,0.113],[-0.266,0.265],[-0.11,0.274]],"o":[[0,0],[-0.232,0],[-0.323,0.194],[-0.206,0.206],[-0.042,0.103],[0,0],[0.232,0],[0.322,-0.193],[0.206,-0.206],[0.041,-0.104]],"v":[[2.569,-1.01],[-0.487,-1.01],[-1.165,-0.745],[-2.076,-0.032],[-2.647,0.682],[-2.57,1.01],[0.486,1.01],[1.165,0.745],[2.075,0.032],[2.647,-0.682]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[594.189,130.405],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.697,0.13],[1.381,-1.402],[-1.277,-1.162],[-0.539,-2.933],[1.291,0.371],[0.599,1.294],[-0.397,-0.857],[-2.347,3.604],[1.566,1.335],[1.014,0.42],[0.075,0.558],[-0.756,-0.141]],"o":[[-1.872,-0.349],[-1.032,1.047],[1.762,1.602],[0.338,1.839],[-1.421,-0.409],[-0.212,-0.458],[1.982,4.281],[1.124,-1.727],[-0.848,-0.723],[-0.383,-0.158],[-0.118,-0.875],[0.82,0.152]],"v":[[2.104,-7.117],[-2.682,-5.892],[-3.188,-2.149],[2.92,2.141],[-0.213,3.831],[-3.175,1.063],[-5.296,3.185],[4.569,3.198],[3.753,-1.848],[0.801,-3.374],[-1.262,-4.469],[0.261,-4.868]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[602.895,136.398],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-5.784,2.336]],"o":[[0,0],[0,0]],"v":[[-6.716,-0.848],[6.716,-1.168]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":5,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.8167,0.2433,0.3867,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[605.021,201.209],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":3,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-5.784,2.336]],"o":[[0,0],[0,0]],"v":[[-6.716,-2.008],[6.716,-0.328]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":5,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.8167,0.2433,0.3867,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[582.244,200.369],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 6","np":3,"cix":2,"bm":0,"ix":6,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0.901,0.241],[8.078,-4.259],[-3.323,-5.913],[-6.748,-0.677],[-6.62,1.477],[0,0]],"o":[[-0.963,-0.223],[-21.25,-5.699],[-6,3.163],[3.324,5.912],[6.748,0.678],[0,0],[0,0]],"v":[[22.043,0.722],[19.248,0.025],[-14.734,-11.997],[-18.914,5.764],[-1.981,15.578],[22.237,12.775],[19.248,0.025]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":5,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.8167,0.2433,0.3867,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[543.515,174.404],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 7","np":3,"cix":2,"bm":0,"ix":7,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-27.722,-3.24],[2.66,-27.783],[19.547,5.242],[8.078,-4.258],[-3.324,-5.912],[-6.748,-0.677],[-6.62,1.476],[0,0]],"o":[[0,0],[3.818,-27.648],[27.722,3.24],[-63.214,18.371],[-21.25,-5.699],[-6,3.163],[3.323,5.912],[6.748,0.678],[0,0],[0,0]],"v":[[-72.745,16.895],[-29.706,4.359],[30.081,-41.908],[77.588,16.899],[-38.763,28.917],[-72.745,16.895],[-76.924,34.656],[-59.992,44.47],[-35.774,41.668],[-38.763,28.917]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":5,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.46,0.595,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[601.526,145.512],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 8","np":3,"cix":2,"bm":0,"ix":8,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-2.734,-12.941],[-15.624,-0.096],[-3.417,15.247]],"o":[[2.734,12.941],[3.23,15.288],[15.625,0.095],[0,0]],"v":[[-36.33,-25.893],[-31.201,-1.615],[2.397,25.799],[36.33,-1.201]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":5,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[602.33,214.252],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 9","np":2,"cix":2,"bm":0,"ix":9,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[6.091,-7.297]],"o":[[-0.924,12.992],[0,0]],"v":[[5.451,-19.487],[-5.451,19.487]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":5,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[594.411,259.908],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 10","np":2,"cix":2,"bm":0,"ix":10,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":4,"s":[{"i":[[0,0],[1.404,-13.995],[-7.319,-22.945],[-22.358,-8.953],[-13.565,19.901],[22.678,8.11],[-0.689,25.725],[5.686,1.105]],"o":[[7.301,7.834],[-2.405,23.964],[7.32,22.944],[22.358,8.953],[13.565,-19.9],[-24.231,-8.665],[0.155,-5.79],[-5.686,-1.106]],"v":[[-67.624,-74.46],[-60.836,-50.411],[-55.453,11.567],[-9.899,64.62],[54.789,47.744],[37.918,-12.56],[2.322,-69.611],[-7.677,-82.077]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":34,"s":[{"i":[[0,0],[1.404,-13.995],[-7.319,-22.945],[-22.358,-8.953],[-13.565,19.901],[22.678,8.11],[-0.689,25.725],[5.686,1.105]],"o":[[7.301,7.834],[-2.405,23.964],[7.32,22.944],[22.358,8.953],[13.565,-19.9],[-24.231,-8.665],[0.155,-5.79],[-5.686,-1.106]],"v":[[-67.624,-74.46],[-60.836,-50.411],[-56.182,21.178],[-10.628,74.23],[54.06,57.355],[37.189,-2.949],[2.322,-69.611],[-7.677,-82.077]],"c":true}]},{"t":74.0000030140818,"s":[{"i":[[0,0],[1.404,-13.995],[-7.319,-22.945],[-22.358,-8.953],[-13.565,19.901],[22.678,8.11],[-0.689,25.725],[5.686,1.105]],"o":[[7.301,7.834],[-2.405,23.964],[7.32,22.944],[22.358,8.953],[13.565,-19.9],[-24.231,-8.665],[0.155,-5.79],[-5.686,-1.106]],"v":[[-67.624,-74.46],[-60.836,-50.411],[-55.453,11.567],[-9.899,64.62],[54.789,47.744],[37.918,-12.56],[2.322,-69.611],[-7.677,-82.077]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":5,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.8,0.85,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[692.302,244.019],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 11","np":3,"cix":2,"bm":0,"ix":11,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":1798.00007323404,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"arms/boxgirl2 Outlines","parent":5,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":7,"s":[-18]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":13.824,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":21,"s":[-18]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":27,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":37,"s":[-18]},{"t":54.0000021994651,"s":[-18]}],"ix":10},"p":{"a":0,"k":[506.439,444.242,0],"ix":2},"a":{"a":0,"k":[534.439,398.222,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-3.407],[3.407,0],[0,3.407],[-3.407,0]],"o":[[0,3.407],[-3.407,0],[0,-3.407],[3.407,0]],"v":[[6.169,0],[0,6.169],[-6.168,0],[0,-6.169]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":5,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[632.081,461.246],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"t":7,"s":[{"i":[[0,0],[-22.517,-0.724],[-10.788,37.86]],"o":[[25.288,-7.398],[36.098,3.218],[0,0]],"v":[[-38.207,26.791],[38.078,30.823],[87.513,-6.807]],"c":false}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"t":14,"s":[{"i":[[0,0],[-22.888,-13.053],[-2.749,18.008]],"o":[[25.288,-7.398],[-17.303,-28.448],[0,0]],"v":[[-38.207,26.791],[38.207,35.761],[21.086,-17.93]],"c":false}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"t":21,"s":[{"i":[[0,0],[-22.517,-0.724],[-10.788,37.86]],"o":[[25.288,-7.398],[36.098,3.218],[0,0]],"v":[[-38.207,26.791],[38.078,30.823],[87.513,-6.807]],"c":false}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"t":27.176,"s":[{"i":[[0,0],[-22.888,-13.053],[-2.749,18.008]],"o":[[25.288,-7.398],[-17.303,-28.448],[0,0]],"v":[[-38.207,26.791],[38.207,35.761],[21.086,-17.93]],"c":false}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"t":37,"s":[{"i":[[0,0],[-22.517,-0.724],[-10.788,37.86]],"o":[[25.288,-7.398],[36.098,3.218],[0,0]],"v":[[-38.207,26.791],[38.078,30.823],[87.513,-6.807]],"c":false}]},{"t":54.0000021994651,"s":[{"i":[[0,0],[-22.517,-0.724],[-10.788,37.86]],"o":[[25.288,-7.398],[36.098,3.218],[0,0]],"v":[[-38.207,26.791],[38.078,30.823],[87.513,-6.807]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":5,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[636.453,358.075],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-2.991,-1.935],[1.393,-9.397],[3.254,-8.925],[-1.049,-10.002],[0,0],[-11.042,-10.598],[20.008,35.512]],"o":[[3.543,-0.536],[7.976,5.16],[-1.392,9.397],[-3.253,8.925],[0,0],[0.418,10.558],[7.218,-35.73],[0,0]],"v":[[-34.042,-55.116],[-23.763,-53.142],[-14.661,-27.77],[-23.79,-0.843],[-27.997,28.159],[-28.105,26.975],[6.752,55.652],[14.035,-54.499]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":5,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.46,0.595,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[635.71,439.352],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":3,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-19.251,-20.715],[19.252,-11.749],[12.525,20.715],[-9.779,13.975]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":5,"ix":5},"lc":3,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.64,0.73,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[617.497,415.331],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":3,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0.037,-6.22],[4.993,-23.691],[-34.033,29.139],[0,0]],"o":[[0,0],[0,0],[-4.999,-3.701],[0,0],[-3.982,18.892],[0,0],[0,0]],"v":[[55.805,-7.473],[11.559,-17.777],[-4.366,-29.569],[-16.488,-23.507],[-52.904,-14.08],[1.026,8.632],[56.886,25.512]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":5,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.94,0.955,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[554.414,404.877],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":3,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-7.976,-5.16],[1.393,-9.397],[3.254,-8.925],[-1.049,-10.001],[2.982,11.029]],"o":[[0.571,-9.482],[7.975,5.161],[-1.393,9.396],[-3.254,8.925],[-2.982,-11.029],[0,0]],"v":[[-16.19,-29.242],[5.695,-38.07],[14.797,-12.698],[5.668,14.229],[1.461,43.23],[-8.484,4.143]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":5,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.8167,0.2433,0.3867,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[606.252,424.28],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 6","np":3,"cix":2,"bm":0,"ix":6,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":1},"o":{"x":0.333,"y":0},"t":7,"s":[{"i":[[0,0],[76.287,8.852],[17.248,1.993]],"o":[[77.45,65.728],[-17.247,-2.001],[0,0]],"v":[[63.279,-99.083],[-7.091,82.071],[-65.557,72.343]],"c":false}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"t":14,"s":[{"i":[[0,0],[84.904,4.88],[17.248,1.993]],"o":[[83.039,26.063],[-17.334,-0.997],[0,0]],"v":[[-26.996,-99.139],[-19.347,87.726],[-65.557,72.343]],"c":false}]},{"i":{"x":0.833,"y":1},"o":{"x":0.333,"y":0},"t":21,"s":[{"i":[[0,0],[76.287,8.852],[17.248,1.993]],"o":[[77.45,65.728],[-17.247,-2.001],[0,0]],"v":[[63.279,-99.083],[-7.091,82.071],[-65.557,72.343]],"c":false}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"t":27,"s":[{"i":[[0,0],[84.904,4.88],[17.248,1.993]],"o":[[88.231,6.819],[-17.334,-0.997],[0,0]],"v":[[-46.273,-107.574],[-19.347,87.726],[-65.557,72.343]],"c":false}]},{"i":{"x":0.833,"y":1},"o":{"x":0.333,"y":0},"t":37,"s":[{"i":[[0,0],[76.287,8.852],[17.248,1.993]],"o":[[77.45,65.728],[-17.247,-2.001],[0,0]],"v":[[63.279,-99.083],[-7.091,82.071],[-65.557,72.343]],"c":false}]},{"t":54.0000021994651,"s":[{"i":[[0,0],[76.287,8.852],[17.248,1.993]],"o":[[77.45,65.728],[-17.247,-2.001],[0,0]],"v":[[63.279,-99.083],[-7.091,82.071],[-65.557,72.343]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":5,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.46,0.595,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[717.313,386.909],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 7","np":3,"cix":2,"bm":0,"ix":7,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":1798.00007323404,"st":0,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":"BOX/boxgirl2 Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":7,"s":[-11]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":14.961,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":21.216,"s":[-11]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":26.903,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":36.569,"s":[-11]},{"t":76.0000030955435,"s":[-11]}],"ix":10},"p":{"s":true,"x":{"a":0,"k":497.232,"ix":3},"y":{"a":1,"k":[{"i":{"x":[0.525],"y":[0.999]},"o":{"x":[0.167],"y":[0.012]},"t":7,"s":[534.782]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.714],"y":[-0.001]},"t":14.961,"s":[473.393]},{"i":{"x":[0.086],"y":[1.001]},"o":{"x":[0.333],"y":[0]},"t":20.648,"s":[554.791]},{"i":{"x":[0.345],"y":[1.257]},"o":{"x":[0.475],"y":[0.001]},"t":26.903,"s":[484.088]},{"i":{"x":[0.058],"y":[8.039]},"o":{"x":[0.207],"y":[-15.641]},"t":37.138,"s":[534.782]},{"t":76.0000030955435,"s":[534.782]}],"ix":4}},"a":{"a":0,"k":[572.5,586.5,0],"ix":1},"s":{"a":0,"k":[83,83,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[4.345,-40.918],[0,0],[0,0],[0,0]],"o":[[0,0],[5.794,-40.405],[0,0],[0,0]],"v":[[2.264,43.63],[-8.285,42.896],[-2.262,-43.63],[8.286,-42.896]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":5,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[307.842,426.297],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[5.221,1.428]],"o":[[0,0],[0,0]],"v":[[0.841,-83.44],[-2.611,82.013]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":5,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[306.142,427.058],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-69.992,1.014]],"o":[[69.993,-1.014],[0,0]],"v":[[-112.026,3.123],[112.026,-3.123]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":5,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[477.19,351.902],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-38.969,-5.99],[1.82,-62.867]],"o":[[41.66,9.085],[-1.821,62.868],[0,0]],"v":[[-56.581,-95.724],[56.581,-72.475],[52.313,95.724]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":5,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.8471,0.1922,0.3569,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[308.254,427.051],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":3,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-43.799,3.2],[-73.661,-9.244],[-9.976,-73.578],[68.598,2.806],[42.988,11.764],[6.219,42.049]],"o":[[64.703,16],[-14.075,53.761],[-67.608,11.939],[-42.988,-11.764],[7.574,-63.979],[43.799,-3.2]],"v":[[-15.044,-99.102],[169.981,-81.65],[161.058,90.364],[-59.207,94.101],[-169.981,65.062],[-167.562,-99.102]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":5,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.8471,0.1922,0.3569,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[419.236,430.43],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":3,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":0,"s":[{"i":[[0,0],[4.29,-26.25],[54.595,20.476],[-5.348,26.556]],"o":[[-5.881,28.24],[-48.63,-17.126],[7.005,-28.32],[0,0]],"v":[[81.443,-11.521],[72.476,56.222],[-39.877,9.497],[-29.331,-40.56]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":17.235,"s":[{"i":[[0,0],[4.29,-26.25],[54.595,20.475],[-5.348,26.556]],"o":[[-5.881,28.24],[-48.63,-17.126],[7.005,-28.32],[0,0]],"v":[[81.443,-11.521],[72.476,56.222],[-39.877,9.497],[-29.331,-40.56]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":20,"s":[{"i":[[0,0],[18.337,-0.432],[53.327,11.084],[-23.981,4.669]],"o":[[-25.774,-4.099],[-48.63,-17.126],[24.904,-3.29],[0,0]],"v":[[81.443,-11.521],[31.961,-12.457],[-76.764,-40.908],[-29.331,-40.56]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":22.921,"s":[{"i":[[0,0],[4.29,-26.25],[54.595,20.476],[-5.348,26.556]],"o":[[-5.881,28.24],[-48.63,-17.126],[7.005,-28.32],[0,0]],"v":[[81.443,-11.521],[72.476,56.222],[-39.877,9.497],[-29.331,-40.56]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":28.608,"s":[{"i":[[0,0],[4.29,-26.25],[54.595,20.476],[-5.348,26.556]],"o":[[-5.881,28.24],[-48.63,-17.126],[7.005,-28.32],[0,0]],"v":[[81.443,-11.521],[72.476,56.222],[-39.877,9.497],[-29.331,-40.56]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":31,"s":[{"i":[[0,0],[18.337,-0.432],[53.327,11.084],[-23.981,4.669]],"o":[[-25.774,-4.099],[-48.63,-17.126],[24.904,-3.29],[0,0]],"v":[[81.443,-11.521],[31.961,-12.457],[-76.764,-40.909],[-29.331,-40.56]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0.167},"t":46,"s":[{"i":[[0,0],[4.29,-26.25],[54.595,20.476],[-5.348,26.556]],"o":[[-5.881,28.24],[-48.63,-17.126],[7.005,-28.32],[0,0]],"v":[[81.443,-11.521],[72.476,56.222],[-39.877,9.497],[-29.331,-40.56]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":62,"s":[{"i":[[0,0],[5.295,-25.538],[54.595,20.476],[-5.348,26.556]],"o":[[-5.881,28.24],[-48.63,-17.126],[7.005,-28.32],[0,0]],"v":[[81.443,-11.521],[68.394,55.122],[-39.877,9.497],[-29.331,-40.56]],"c":false}]},{"t":77.0000031362743,"s":[{"i":[[0,0],[4.29,-26.25],[54.595,20.476],[-5.348,26.556]],"o":[[-5.881,28.24],[-48.63,-17.126],[7.005,-28.32],[0,0]],"v":[[81.443,-11.521],[72.476,56.222],[-39.877,9.497],[-29.331,-40.56]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":5,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.8471,0.1922,0.3569,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[278.586,536.051],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 6","np":3,"cix":2,"bm":0,"ix":6,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":0,"s":[{"i":[[0,0],[-3.518,-24.757],[85.647,-5.976],[4.373,25.634]],"o":[[1.938,21.197],[-80.626,8.376],[-2.305,-27.236],[0,0]],"v":[[96.352,-34.341],[106.656,24.809],[-115.038,40.968],[-118.704,-27.565]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":8,"s":[{"i":[[0,0],[-7.408,-22.677],[85.647,-5.975],[4.373,25.634]],"o":[[1.938,21.197],[-80.626,8.376],[-2.305,-27.236],[0,0]],"v":[[96.353,-34.341],[110.216,25.436],[-110.292,41.803],[-118.704,-27.565]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":16.666,"s":[{"i":[[0,0],[-3.518,-24.757],[85.647,-5.975],[4.373,25.634]],"o":[[1.938,21.197],[-80.626,8.376],[-2.305,-27.236],[0,0]],"v":[[96.353,-34.341],[106.656,24.809],[-115.038,40.968],[-118.704,-27.565]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":20,"s":[{"i":[[0,0],[-29.356,-13.941],[84.442,-5.729],[19.387,14.399]],"o":[[13.559,13.713],[-83.638,8.019],[-32.035,-13.191],[0,0]],"v":[[96.353,-34.341],[136.329,-10.87],[-68.498,3.481],[-118.704,-27.565]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":22.921,"s":[{"i":[[0,0],[-3.518,-24.757],[85.647,-5.976],[4.373,25.634]],"o":[[1.938,21.197],[-80.626,8.376],[-2.305,-27.236],[0,0]],"v":[[96.352,-34.341],[106.656,24.809],[-115.038,40.968],[-118.704,-27.565]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":28.608,"s":[{"i":[[0,0],[-3.518,-24.757],[85.647,-5.976],[4.373,25.634]],"o":[[1.938,21.197],[-80.626,8.376],[-2.305,-27.236],[0,0]],"v":[[96.352,-34.341],[106.656,24.809],[-115.038,40.968],[-118.704,-27.565]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":31,"s":[{"i":[[0,0],[-29.356,-13.941],[84.442,-5.729],[19.387,14.399]],"o":[[13.559,13.713],[-83.638,8.019],[-32.035,-13.191],[0,0]],"v":[[96.353,-34.341],[136.329,-10.87],[-68.498,3.481],[-118.704,-27.565]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0.167},"t":46,"s":[{"i":[[0,0],[-3.518,-24.757],[85.647,-5.976],[4.373,25.634]],"o":[[1.938,21.197],[-80.626,8.376],[-2.305,-27.236],[0,0]],"v":[[96.352,-34.341],[106.656,24.809],[-115.038,40.968],[-118.704,-27.565]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":52,"s":[{"i":[[0,0],[4.341,-23.172],[85.647,-5.976],[-5.305,25.866]],"o":[[-4.364,20.108],[-80.626,8.376],[3.168,-26.192],[0,0]],"v":[[96.352,-34.341],[83.496,23.989],[-128.163,39.03],[-118.704,-27.565]],"c":false}]},{"t":77.0000031362743,"s":[{"i":[[0,0],[-3.518,-24.757],[85.647,-5.976],[4.373,25.634]],"o":[[1.938,21.197],[-80.626,8.376],[-2.305,-27.236],[0,0]],"v":[[96.352,-34.341],[106.656,24.809],[-115.038,40.968],[-118.704,-27.565]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":5,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.8471,0.1922,0.3569,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[483.54,552.116],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 7","np":3,"cix":2,"bm":0,"ix":7,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":1798.00007323404,"st":0,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":"Legs/boxgirl2 Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[477.232,513.782,0],"ix":2},"a":{"a":0,"k":[572.5,586.5,0],"ix":1},"s":{"a":0,"k":[83,83,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-0.742,-7.41],[-14.493,-3.584],[-25.452,2.565]],"o":[[-5.443,5.57],[2.029,20.261],[13.455,3.327],[0,0]],"v":[[-48.474,-30.191],[-57.779,-10.254],[-0.625,23.639],[58.521,27.626]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":5,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.94,0.955,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[647.342,989.901],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-8.064,5.222]],"o":[[0,0],[0,0]],"v":[[-11.624,-6.953],[11.624,1.731]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":5,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.94,0.955,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[618.704,1014.636],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":3,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,3.45],[0,0],[0,0],[0,0],[0,0],[3.45,0]],"o":[[-3.45,0],[0,0],[0,0],[0,0],[0,0],[0,3.45],[0,0]],"v":[[-66.997,10.39],[-73.244,4.143],[-73.244,-10.39],[-70.416,-10.39],[73.244,-10.39],[73.244,4.143],[66.997,10.39]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":5,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.94,0.955,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[630.328,1057.988],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":3,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0.745,2.543],[-7.412,2.56],[0,0],[0,0]],"o":[[0,0],[0,0],[-2.561,-2.245],[-2.206,-7.525],[0,0],[0,0],[0,0]],"v":[[74.419,-1.574],[75.315,23.542],[-68.346,23.542],[-73.109,16.217],[-63.465,-1.762],[-21.177,-16.372],[-11.369,-23.542]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":5,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.94,0.955,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[628.258,1024.055],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":3,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-1.406,-7.312],[-14.756,-2.265],[-25.117,4.846]],"o":[[0,20.776],[3.845,19.996],[13.701,2.102],[0,0]],"v":[[-30.309,-32.271],[-58.915,0.168],[1.056,28.779],[60.321,27.425]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":5,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[561.487,975.205],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":2,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-7.561,5.927]],"o":[[0,0],[0,0]],"v":[[-11.967,-6.242],[11.968,0.315]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":5,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[519.21,1005.327],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 6","np":2,"cix":2,"bm":0,"ix":6,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[-3.437,0.31]],"o":[[0,0],[0,0],[0,0],[0.311,3.436],[0,0]],"v":[[74.051,5],[71.843,-16.903],[-74.051,-3.715],[-72.448,10.933],[-65.663,16.593]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":5,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[535.094,1047.055],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 7","np":2,"cix":2,"bm":0,"ix":7,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[1.577,12.468],[-1.576,-12.468]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":5,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[605.36,1017.685],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 8","np":2,"cix":2,"bm":0,"ix":8,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[-2.874,-7.296],[-2.753,-2.005]],"o":[[0,0],[0,0],[-7.151,3.218],[0.971,2.467],[0,0]],"v":[[30.393,-26.012],[21.269,-17.987],[-19.532,0.37],[-27.519,19.143],[-22.114,26.012]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":5,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[485.974,1017.073],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 9","np":2,"cix":2,"bm":0,"ix":9,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":10.98,"s":[{"i":[[0,0],[-3.442,-105.571]],"o":[[-18.704,112.217],[0,0]],"v":[[-9.493,-158.357],[9.494,158.357]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":14.393,"s":[{"i":[[0,0],[-3.442,-105.571]],"o":[[3.442,105.571],[0,0]],"v":[[-9.493,-158.357],[9.494,158.357]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":20.648,"s":[{"i":[[0,0],[-3.442,-105.571]],"o":[[-18.704,112.217],[0,0]],"v":[[-9.493,-158.357],[9.494,158.357]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":25.765,"s":[{"i":[[0,0],[-3.442,-105.571]],"o":[[3.442,105.571],[0,0]],"v":[[-9.493,-158.357],[9.494,158.357]],"c":false}]},{"t":32.588751327367,"s":[{"i":[[0,0],[-3.442,-105.571]],"o":[[-18.704,112.217],[0,0]],"v":[[-9.493,-158.357],[9.494,158.357]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":5,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[519.695,753.384],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 10","np":2,"cix":2,"bm":0,"ix":10,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":10.98,"s":[{"i":[[0,0],[3.081,-104.652]],"o":[[-11.201,108.609],[0,0]],"v":[[2.06,-160.308],[6.06,160.309]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":14.393,"s":[{"i":[[0,0],[3.081,-104.652]],"o":[[5.242,106.157],[0,0]],"v":[[2.06,-160.308],[6.06,160.309]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":20.648,"s":[{"i":[[0,0],[3.081,-104.652]],"o":[[-11.201,108.609],[0,0]],"v":[[2.06,-160.308],[6.06,160.309]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":25.765,"s":[{"i":[[0,0],[3.081,-104.652]],"o":[[5.242,106.156],[0,0]],"v":[[2.06,-160.308],[6.06,160.309]],"c":false}]},{"t":32.588751327367,"s":[{"i":[[0,0],[3.081,-104.652]],"o":[[-11.201,108.609],[0,0]],"v":[[2.06,-160.308],[6.06,160.309]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":5,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[591.424,810.794],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 11","np":2,"cix":2,"bm":0,"ix":11,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":10.98,"s":[{"i":[[0,0],[-21.928,-106.278]],"o":[[-33.777,91.486],[0,0]],"v":[[12.646,-187.238],[21.131,187.238]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":14.393,"s":[{"i":[[0,0],[-10.66,-108.482]],"o":[[-4.585,92.5],[0,0]],"v":[[12.646,-187.238],[21.131,187.238]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":20.648,"s":[{"i":[[0,0],[-21.928,-106.278]],"o":[[-33.777,91.486],[0,0]],"v":[[12.646,-187.238],[21.131,187.238]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":25.765,"s":[{"i":[[0,0],[-10.66,-108.482]],"o":[[-4.585,92.5],[0,0]],"v":[[12.646,-187.238],[21.131,187.238]],"c":false}]},{"t":32.588751327367,"s":[{"i":[[0,0],[-21.928,-106.278]],"o":[[-33.777,91.486],[0,0]],"v":[[12.646,-187.238],[21.131,187.238]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":5,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[685.846,756.199],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 12","np":2,"cix":2,"bm":0,"ix":12,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":1798.00007323404,"st":0,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":"Body/boxgirl2 Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":10.98,"s":[477.232,513.782,0],"to":[0,-1.167,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":14.393,"s":[477.232,506.782,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":20.648,"s":[477.232,513.782,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":25.765,"s":[477.232,506.782,0],"to":[0,0,0],"ti":[0,-1.167,0]},{"t":32.588751327367,"s":[477.232,513.782,0]}],"ix":2},"a":{"a":0,"k":[572.5,586.5,0],"ix":1},"s":{"a":0,"k":[83,83,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":11,"s":[{"i":[[0,0],[-1.842,-18.593],[20.162,4.991],[50.908,0.473],[-108.373,217.759],[-16.355,0],[0,0],[0,0],[-16.432,-8.614]],"o":[[6.366,18.406],[2.049,20.67],[-36.237,-8.969],[0,0],[10.336,-20.768],[0,0],[0,0],[18.522,-12.748],[0,0]],"v":[[132.53,-11.826],[161.147,106.417],[106.529,126.902],[-0.019,112.697],[-47.61,-79.325],[-1.019,-144.415],[23.696,-102.197],[71.999,-130.707],[125.265,-134.421]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":15,"s":[{"i":[[0,0],[-1.842,-18.593],[20.162,4.991],[50.908,0.473],[-104.743,241.812],[-16.355,0],[0,0],[0,0],[-16.432,-8.614]],"o":[[6.366,18.406],[2.049,20.67],[-36.237,-8.969],[0,0],[9.221,-21.286],[0,0],[0,0],[18.522,-12.748],[0,0]],"v":[[132.53,-11.826],[161.147,106.417],[106.529,126.902],[-0.019,112.697],[-75.32,-116.675],[-1.019,-144.415],[23.696,-102.197],[71.999,-130.707],[125.265,-134.421]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":20,"s":[{"i":[[0,0],[-1.842,-18.593],[20.162,4.991],[50.908,0.473],[-108.373,217.759],[-16.355,0],[0,0],[0,0],[-16.432,-8.614]],"o":[[6.366,18.406],[2.049,20.67],[-36.237,-8.969],[0,0],[10.336,-20.768],[0,0],[0,0],[18.522,-12.748],[0,0]],"v":[[132.53,-11.826],[161.147,106.417],[106.529,126.902],[-0.019,112.697],[-47.61,-88.964],[-1.019,-144.415],[23.696,-102.197],[71.999,-130.707],[125.265,-134.421]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":26,"s":[{"i":[[0,0],[-1.842,-18.593],[20.162,4.991],[50.908,0.473],[-108.373,217.759],[-16.355,0],[0,0],[0,0],[-16.432,-8.614]],"o":[[6.366,18.406],[2.049,20.67],[-36.237,-8.969],[0,0],[10.336,-20.768],[0,0],[0,0],[18.522,-12.748],[0,0]],"v":[[132.53,-11.826],[161.147,106.417],[106.529,126.902],[-0.019,112.697],[-63.272,-105.831],[-1.019,-144.415],[23.696,-102.197],[71.999,-130.707],[125.265,-134.421]],"c":false}]},{"t":33.0000013441176,"s":[{"i":[[0,0],[-1.842,-18.593],[20.162,4.991],[50.908,0.473],[-108.373,217.759],[-16.355,0],[0,0],[0,0],[-16.432,-8.614]],"o":[[6.366,18.406],[2.049,20.67],[-36.237,-8.969],[0,0],[10.336,-20.768],[0,0],[0,0],[18.522,-12.748],[0,0]],"v":[[132.53,-11.826],[161.147,106.417],[106.529,126.902],[-0.019,112.697],[-47.61,-79.325],[-1.019,-144.415],[23.696,-102.197],[71.999,-130.707],[125.265,-134.421]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":5,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.46,0.595,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[559.529,428.725],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":1798.00007323404,"st":0,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":"Layer 8/boxgirl2 Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[477.232,513.782,0],"ix":2},"a":{"a":0,"k":[572.5,586.5,0],"ix":1},"s":{"a":0,"k":[83,83,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[47.878,-14.752],[3.234,-71.293],[-5.895,-75.093],[33.038,-81.93],[-85.728,-107.22],[-68.517,107.681],[-69.828,139.983],[-38.029,115.117],[46.807,57.257],[162.699,89.342]],"o":[[-55.539,17.112],[-3.198,70.52],[6.233,79.398],[-49.442,122.608],[99.596,124.565],[62.205,-97.761],[57.996,-116.263],[25.413,-76.926],[-71.866,-87.91],[-72.635,-39.886]],"v":[[-164.114,-536.141],[-273.101,-369.18],[-225.408,-209.28],[-297.757,-3.278],[-280.381,426.328],[113.978,424.615],[140.88,74.349],[340.696,-142.095],[303.58,-375.651],[-19.035,-471.694]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.94,0.955,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[655.005,614.237],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":1798.00007323404,"st":0,"bm":0}],"markers":[]} \ No newline at end of file diff --git a/app/src/main/res/raw/loading.json b/app/src/main/res/raw/loading.json new file mode 100644 index 0000000..f4b935a --- /dev/null +++ b/app/src/main/res/raw/loading.json @@ -0,0 +1 @@ +{"v":"5.7.8","fr":30,"ip":0,"op":91,"w":1080,"h":1080,"nm":"bike rider","ddd":0,"assets":[{"id":"comp_0","layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Layer 15 Outlines","parent":14,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":12,"s":[25]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":26,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":35,"s":[25]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":45,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":57,"s":[25]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":71,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":80,"s":[25]},{"t":90,"s":[0]}],"ix":10},"p":{"a":0,"k":[158.727,79.655,0],"ix":2,"l":2},"a":{"a":0,"k":[2.063,11.093,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[2.754,8.852],[-1.233,9.188],[-2.754,-8.852],[1.232,-9.188]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.709803921569,0.709803921569,0.709803921569,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[17.622,9.438],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0.395,4.681],[-4.681,0.395],[0,0]],"o":[[0,0],[-4.682,0.394],[-0.395,-4.681],[0,0],[0,0]],"v":[[10.027,7.838],[-0.441,8.721],[-9.632,0.959],[-1.871,-8.232],[8.598,-9.115]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.749019607843,0.047058823529,0.196078431373,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[10.276,9.821],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":600,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"Layer 13 Outlines","parent":14,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[3]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":12,"s":[-7]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":26,"s":[3]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":35,"s":[-7]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":45,"s":[3]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":57,"s":[-7]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":71,"s":[3]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":80,"s":[-7]},{"t":90,"s":[3]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[150.99,77.454,0],"to":[0.292,0.958,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":12,"s":[152.74,83.204,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":26,"s":[150.99,77.454,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":35,"s":[152.74,83.204,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":45,"s":[150.99,77.454,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":57,"s":[152.74,83.204,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":71,"s":[150.99,77.454,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":80,"s":[152.74,83.204,0],"to":[0,0,0],"ti":[0.292,0.958,0]},{"t":90,"s":[150.99,77.454,0]}],"ix":2,"l":2},"a":{"a":0,"k":[4.939,4.189,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[-1.757,1.757],[-1.757,-1.757]],"o":[[0,0],[0,0],[-1.757,-1.757],[1.757,-1.757],[0,0]],"v":[[13.959,7.594],[7.595,13.958],[-12.202,-5.837],[-12.202,-12.202],[-5.837,-12.202]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.749019607843,0.047058823529,0.196078431373,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[14.208,14.209],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.5,-28.5],[28.5,28.5]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.709803921569,0.709803921569,0.709803921569,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":6,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[33.735,33.235],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":600,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"Layer 17 Outlines","parent":2,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[-5]},{"t":90,"s":[1435]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[63.352,62.395,0],"to":[0.402,0.258,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":12,"s":[65.764,63.945,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":26,"s":[63.352,62.395,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":35,"s":[65.764,63.945,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":45,"s":[63.352,62.395,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":57,"s":[65.764,63.945,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":71,"s":[63.352,62.395,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":80,"s":[65.764,63.945,0],"to":[0,0,0],"ti":[0.402,0.258,0]},{"t":90,"s":[63.352,62.395,0]}],"ix":2,"l":2},"a":{"a":0,"k":[38,38,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-9.941],[9.941,0],[-23.87,0.945]],"o":[[0,9.941],[-23.877,-0.948],[9.941,0]],"v":[[20.939,0],[2.939,18],[2.939,-18]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0.75,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"d":[{"n":"d","nm":"dash","v":{"a":0,"k":28.267,"ix":1}},{"n":"g","nm":"gap","v":{"a":0,"k":28.267,"ix":2}},{"n":"o","nm":"offset","v":{"a":0,"k":0,"ix":7}}],"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[35.061,38],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-9.941],[9.941,0],[0,9.941],[-9.941,0]],"o":[[0,9.941],[-9.941,0],[0,-9.941],[9.941,0]],"v":[[18,0],[0,18],[-18,0],[0,-18]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":8,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[38,38],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-8.008],[8.008,0],[0,8.008],[-8.008,0]],"o":[[0,8.008],[-8.008,0],[0,-8.008],[8.008,0]],"v":[[14.5,0],[0,14.5],[-14.5,0],[0,-14.5]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":8,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[38,38],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":600,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"5 Outlines","parent":9,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[12.227,31.842,0],"ix":2,"l":2},"a":{"a":0,"k":[11.5,5.413,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[{"i":[[0,0],[3.75,2.143]],"o":[[0,0],[0,0]],"v":[[3.25,-0.223],[-4.438,-1.053]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":6,"s":[{"i":[[0,0],[2.41,1.999]],"o":[[0,0],[0,0]],"v":[[3.25,-0.223],[-4.783,-1.539]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":12,"s":[{"i":[[0,0],[2.641,-1.386]],"o":[[0,0],[0,0]],"v":[[3.25,-0.223],[-5.007,-2.093]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":19,"s":[{"i":[[0,0],[2.41,1.999]],"o":[[0,0],[0,0]],"v":[[3.25,-0.223],[-4.783,-1.539]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":26,"s":[{"i":[[0,0],[3.75,2.143]],"o":[[0,0],[0,0]],"v":[[3.25,-0.223],[-4.438,-1.053]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":30,"s":[{"i":[[0,0],[2.41,1.999]],"o":[[0,0],[0,0]],"v":[[3.25,-0.223],[-4.783,-1.539]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":35,"s":[{"i":[[0,0],[2.641,-1.386]],"o":[[0,0],[0,0]],"v":[[3.25,-0.223],[-5.007,-2.093]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":40,"s":[{"i":[[0,0],[2.41,1.999]],"o":[[0,0],[0,0]],"v":[[3.25,-0.223],[-4.783,-1.539]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":45,"s":[{"i":[[0,0],[3.75,2.143]],"o":[[0,0],[0,0]],"v":[[3.25,-0.223],[-4.438,-1.053]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":51,"s":[{"i":[[0,0],[2.41,1.999]],"o":[[0,0],[0,0]],"v":[[3.25,-0.223],[-4.783,-1.539]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":57,"s":[{"i":[[0,0],[2.641,-1.386]],"o":[[0,0],[0,0]],"v":[[3.25,-0.223],[-5.007,-2.093]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":64,"s":[{"i":[[0,0],[2.41,1.999]],"o":[[0,0],[0,0]],"v":[[3.25,-0.223],[-4.783,-1.539]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":71,"s":[{"i":[[0,0],[3.75,2.143]],"o":[[0,0],[0,0]],"v":[[3.25,-0.223],[-4.438,-1.053]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":76,"s":[{"i":[[0,0],[2.41,1.999]],"o":[[0,0],[0,0]],"v":[[3.25,-0.223],[-4.783,-1.539]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":80,"s":[{"i":[[0,0],[2.641,-1.386]],"o":[[0,0],[0,0]],"v":[[3.25,-0.223],[-5.007,-2.093]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":85,"s":[{"i":[[0,0],[2.41,1.999]],"o":[[0,0],[0,0]],"v":[[3.25,-0.223],[-4.783,-1.539]],"c":false}]},{"t":90,"s":[{"i":[[0,0],[3.75,2.143]],"o":[[0,0],[0,0]],"v":[[3.25,-0.223],[-4.438,-1.053]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.627450980392,0.201153399898,0.059054206399,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[8.25,5.741],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":600,"st":0,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":"4 Outlines","parent":9,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[11.727,29.447,0],"ix":2,"l":2},"a":{"a":0,"k":[19.5,11.5,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[{"i":[[0,0],[4,-2],[1.5,0.5]],"o":[[0,0],[0,0],[0,0]],"v":[[6,2],[-2,0],[-6,1]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":6,"s":[{"i":[[0,0],[3.482,0.412],[1.803,-0.047]],"o":[[0,0],[0,0],[0,0]],"v":[[6,2],[-1.003,-1.17],[-4.908,-0.925]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":12,"s":[{"i":[[0,0],[2.964,2.825],[2.105,-0.593]],"o":[[0,0],[0,0],[0,0]],"v":[[6,2],[-0.006,-2.341],[-3.815,-2.851]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":19,"s":[{"i":[[0,0],[3.482,0.412],[1.803,-0.047]],"o":[[0,0],[0,0],[0,0]],"v":[[6,2],[-1.003,-1.17],[-4.908,-0.925]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":26,"s":[{"i":[[0,0],[4,-2],[1.5,0.5]],"o":[[0,0],[0,0],[0,0]],"v":[[6,2],[-2,0],[-6,1]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":30,"s":[{"i":[[0,0],[3.482,0.412],[1.803,-0.047]],"o":[[0,0],[0,0],[0,0]],"v":[[6,2],[-1.003,-1.17],[-4.908,-0.925]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":35,"s":[{"i":[[0,0],[2.964,2.825],[2.105,-0.593]],"o":[[0,0],[0,0],[0,0]],"v":[[6,2],[-0.006,-2.341],[-3.815,-2.851]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":40,"s":[{"i":[[0,0],[3.482,0.412],[1.803,-0.047]],"o":[[0,0],[0,0],[0,0]],"v":[[6,2],[-1.003,-1.17],[-4.908,-0.925]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":45,"s":[{"i":[[0,0],[4,-2],[1.5,0.5]],"o":[[0,0],[0,0],[0,0]],"v":[[6,2],[-2,0],[-6,1]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":51,"s":[{"i":[[0,0],[3.482,0.412],[1.803,-0.047]],"o":[[0,0],[0,0],[0,0]],"v":[[6,2],[-1.003,-1.17],[-4.908,-0.925]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":57,"s":[{"i":[[0,0],[2.964,2.825],[2.105,-0.593]],"o":[[0,0],[0,0],[0,0]],"v":[[6,2],[-0.006,-2.341],[-3.815,-2.851]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":64,"s":[{"i":[[0,0],[3.482,0.412],[1.803,-0.047]],"o":[[0,0],[0,0],[0,0]],"v":[[6,2],[-1.003,-1.17],[-4.908,-0.925]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":71,"s":[{"i":[[0,0],[4,-2],[1.5,0.5]],"o":[[0,0],[0,0],[0,0]],"v":[[6,2],[-2,0],[-6,1]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":76,"s":[{"i":[[0,0],[3.482,0.412],[1.803,-0.047]],"o":[[0,0],[0,0],[0,0]],"v":[[6,2],[-1.003,-1.17],[-4.908,-0.925]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":80,"s":[{"i":[[0,0],[2.964,2.825],[2.105,-0.593]],"o":[[0,0],[0,0],[0,0]],"v":[[6,2],[-0.006,-2.341],[-3.815,-2.851]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":85,"s":[{"i":[[0,0],[3.482,0.412],[1.803,-0.047]],"o":[[0,0],[0,0],[0,0]],"v":[[6,2],[-1.003,-1.17],[-4.908,-0.925]],"c":false}]},{"t":90,"s":[{"i":[[0,0],[4,-2],[1.5,0.5]],"o":[[0,0],[0,0],[0,0]],"v":[[6,2],[-2,0],[-6,1]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.505882352941,0.164705882353,0.050980392157,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[13.5,9.5],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":600,"st":0,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":"3 Outlines","parent":9,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[7.227,45.947,0],"ix":2,"l":2},"a":{"a":0,"k":[16.286,7.5,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[{"i":[[0,0],[-6,1]],"o":[[0,0],[0,0]],"v":[[-5.268,1.945],[4.393,-2.32]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":6,"s":[{"i":[[0,0],[-6,1]],"o":[[0,0],[0,0]],"v":[[-7.176,-3.232],[4.393,-2.32]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":12,"s":[{"i":[[0,0],[-6,1]],"o":[[0,0],[0,0]],"v":[[-6.812,-4.523],[4.393,-2.32]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":19,"s":[{"i":[[0,0],[-6,1]],"o":[[0,0],[0,0]],"v":[[-7.176,-3.232],[4.393,-2.32]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":26,"s":[{"i":[[0,0],[-6,1]],"o":[[0,0],[0,0]],"v":[[-5.268,1.945],[4.393,-2.32]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":30,"s":[{"i":[[0,0],[-6,1]],"o":[[0,0],[0,0]],"v":[[-7.176,-3.232],[4.393,-2.32]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":35,"s":[{"i":[[0,0],[-6,1]],"o":[[0,0],[0,0]],"v":[[-6.812,-4.523],[4.393,-2.32]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":40,"s":[{"i":[[0,0],[-6,1]],"o":[[0,0],[0,0]],"v":[[-7.176,-3.232],[4.393,-2.32]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":45,"s":[{"i":[[0,0],[-6,1]],"o":[[0,0],[0,0]],"v":[[-5.268,1.945],[4.393,-2.32]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":51,"s":[{"i":[[0,0],[-6,1]],"o":[[0,0],[0,0]],"v":[[-7.176,-3.232],[4.393,-2.32]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":57,"s":[{"i":[[0,0],[-6,1]],"o":[[0,0],[0,0]],"v":[[-6.812,-4.523],[4.393,-2.32]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":64,"s":[{"i":[[0,0],[-6,1]],"o":[[0,0],[0,0]],"v":[[-7.176,-3.232],[4.393,-2.32]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":71,"s":[{"i":[[0,0],[-6,1]],"o":[[0,0],[0,0]],"v":[[-5.268,1.945],[4.393,-2.32]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":76,"s":[{"i":[[0,0],[-6,1]],"o":[[0,0],[0,0]],"v":[[-7.176,-3.232],[4.393,-2.32]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":80,"s":[{"i":[[0,0],[-6,1]],"o":[[0,0],[0,0]],"v":[[-6.812,-4.523],[4.393,-2.32]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":85,"s":[{"i":[[0,0],[-6,1]],"o":[[0,0],[0,0]],"v":[[-7.176,-3.232],[4.393,-2.32]],"c":false}]},{"t":90,"s":[{"i":[[0,0],[-6,1]],"o":[[0,0],[0,0]],"v":[[-5.268,1.945],[4.393,-2.32]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.505882352941,0.164705882353,0.050980392157,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[11.893,9.821],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":600,"st":0,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":"2 Outlines","parent":9,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[9.227,53.267,0],"ix":2,"l":2},"a":{"a":0,"k":[19.5,11.82,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[{"i":[[0,0],[-5,-2]],"o":[[0,0],[0,0]],"v":[[-6,3.5],[6,-1.5]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":6,"s":[{"i":[[0,0],[-5.635,-0.702]],"o":[[0,0],[0,0]],"v":[[-6.692,-0.048],[6,-1.5]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":12,"s":[{"i":[[0,0],[-6.375,0.812]],"o":[[0,0],[0,0]],"v":[[-7.5,-4.188],[6,-1.5]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":19,"s":[{"i":[[0,0],[-5.635,-0.702]],"o":[[0,0],[0,0]],"v":[[-6.692,-0.048],[6,-1.5]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":26,"s":[{"i":[[0,0],[-5,-2]],"o":[[0,0],[0,0]],"v":[[-6,3.5],[6,-1.5]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":30,"s":[{"i":[[0,0],[-5.635,-0.702]],"o":[[0,0],[0,0]],"v":[[-6.692,-0.048],[6,-1.5]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":35,"s":[{"i":[[0,0],[-6.375,0.812]],"o":[[0,0],[0,0]],"v":[[-7.5,-4.188],[6,-1.5]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":40,"s":[{"i":[[0,0],[-5.635,-0.702]],"o":[[0,0],[0,0]],"v":[[-6.692,-0.048],[6,-1.5]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":45,"s":[{"i":[[0,0],[-5,-2]],"o":[[0,0],[0,0]],"v":[[-6,3.5],[6,-1.5]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":51,"s":[{"i":[[0,0],[-5.635,-0.702]],"o":[[0,0],[0,0]],"v":[[-6.692,-0.048],[6,-1.5]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":57,"s":[{"i":[[0,0],[-6.375,0.812]],"o":[[0,0],[0,0]],"v":[[-7.5,-4.188],[6,-1.5]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":64,"s":[{"i":[[0,0],[-5.635,-0.702]],"o":[[0,0],[0,0]],"v":[[-6.692,-0.048],[6,-1.5]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":71,"s":[{"i":[[0,0],[-5,-2]],"o":[[0,0],[0,0]],"v":[[-6,3.5],[6,-1.5]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":76,"s":[{"i":[[0,0],[-5.635,-0.702]],"o":[[0,0],[0,0]],"v":[[-6.692,-0.048],[6,-1.5]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":80,"s":[{"i":[[0,0],[-6.375,0.812]],"o":[[0,0],[0,0]],"v":[[-7.5,-4.188],[6,-1.5]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":85,"s":[{"i":[[0,0],[-5.635,-0.702]],"o":[[0,0],[0,0]],"v":[[-6.692,-0.048],[6,-1.5]],"c":false}]},{"t":90,"s":[{"i":[[0,0],[-5,-2]],"o":[[0,0],[0,0]],"v":[[-6,3.5],[6,-1.5]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.505882352941,0.164705882353,0.050980392157,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[13.5,11],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":600,"st":0,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":"hair 1 Outlines","parent":9,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[10.227,67.947,0],"ix":2,"l":2},"a":{"a":0,"k":[20.5,7.5,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[{"i":[[0,0],[-6,4]],"o":[[0,0],[0,0]],"v":[[-6.5,0.214],[6.5,-2]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":6,"s":[{"i":[[0,0],[-6.95,1.453]],"o":[[0,0],[0,0]],"v":[[-6.482,2.702],[6.5,-2]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":12,"s":[{"i":[[0,0],[-7.901,-1.094]],"o":[[0,0],[0,0]],"v":[[-6.465,5.19],[6.5,-2]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":19,"s":[{"i":[[0,0],[-6.95,1.453]],"o":[[0,0],[0,0]],"v":[[-6.482,2.702],[6.5,-2]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":26,"s":[{"i":[[0,0],[-6,4]],"o":[[0,0],[0,0]],"v":[[-6.5,0.214],[6.5,-2]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":30,"s":[{"i":[[0,0],[-6.95,1.453]],"o":[[0,0],[0,0]],"v":[[-6.482,2.702],[6.5,-2]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":35,"s":[{"i":[[0,0],[-7.901,-1.094]],"o":[[0,0],[0,0]],"v":[[-6.465,5.19],[6.5,-2]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":40,"s":[{"i":[[0,0],[-6.95,1.453]],"o":[[0,0],[0,0]],"v":[[-6.482,2.702],[6.5,-2]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":45,"s":[{"i":[[0,0],[-6,4]],"o":[[0,0],[0,0]],"v":[[-6.5,0.214],[6.5,-2]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":51,"s":[{"i":[[0,0],[-6.95,1.453]],"o":[[0,0],[0,0]],"v":[[-6.482,2.702],[6.5,-2]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":57,"s":[{"i":[[0,0],[-7.901,-1.094]],"o":[[0,0],[0,0]],"v":[[-6.465,5.19],[6.5,-2]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":64,"s":[{"i":[[0,0],[-6.95,1.453]],"o":[[0,0],[0,0]],"v":[[-6.482,2.702],[6.5,-2]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":71,"s":[{"i":[[0,0],[-6,4]],"o":[[0,0],[0,0]],"v":[[-6.5,0.214],[6.5,-2]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":76,"s":[{"i":[[0,0],[-6.95,1.453]],"o":[[0,0],[0,0]],"v":[[-6.482,2.702],[6.5,-2]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":80,"s":[{"i":[[0,0],[-7.901,-1.094]],"o":[[0,0],[0,0]],"v":[[-6.465,5.19],[6.5,-2]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":85,"s":[{"i":[[0,0],[-6.95,1.453]],"o":[[0,0],[0,0]],"v":[[-6.482,2.702],[6.5,-2]],"c":false}]},{"t":90,"s":[{"i":[[0,0],[-6,4]],"o":[[0,0],[0,0]],"v":[[-6.5,0.214],[6.5,-2]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.505882352941,0.164705882353,0.050980392157,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[14,9.5],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":600,"st":0,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":"HEad","parent":13,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":12,"s":[12]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":26,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":35,"s":[12]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":45,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":57,"s":[12]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":71,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":80,"s":[12]},{"t":90,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[85.636,10.277,0],"to":[0.625,1.333,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":12,"s":[89.386,18.277,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":26,"s":[85.636,10.277,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":35,"s":[89.386,18.277,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":45,"s":[85.636,10.277,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":57,"s":[89.386,18.277,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":71,"s":[85.636,10.277,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":80,"s":[89.386,18.277,0],"to":[0,0,0],"ti":[0.625,1.333,0]},{"t":90,"s":[85.636,10.277,0]}],"ix":2,"l":2},"a":{"a":0,"k":[22.114,53.473,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-2.071],[0.828,0],[0,2.071],[-0.828,0]],"o":[[0,2.071],[-0.828,0],[0,-2.071],[0.828,0]],"v":[[1.5,0],[0,3.75],[-1.5,0],[0,-3.75]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.129411764706,0.129411764706,0.129411764706,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[35.227,37.447],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-2.071],[0.828,0],[0,2.071],[-0.828,0]],"o":[[0,2.071],[-0.828,0],[0,-2.071],[0.828,0]],"v":[[1.5,0],[0,3.75],[-1.5,0],[0,-3.75]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.129411764706,0.129411764706,0.129411764706,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[30.227,37.447],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,2.761],[-2.761,0]],"o":[[0,0],[-2.761,0],[0,-2.761],[0,0]],"v":[[2.5,5],[2.5,5],[-2.5,0],[2.5,-5]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.937254961799,0.647058823529,0.352941176471,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[11.227,37.947],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-4.23,-0.777],[-4.23,1.866],[4.23,1.149],[3.965,-1.866]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.937254961799,0.647058823529,0.352941176471,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[33.958,16.224],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[-6.549,0.576],[0,0],[-0.577,-6.549]],"o":[[0,0],[0,0],[-0.576,-6.55],[0,0],[6.55,-0.576],[0,0]],"v":[[19.124,8.694],[-17.734,11.939],[-18.548,2.697],[-7.733,-10.205],[5.408,-11.362],[18.31,-0.547]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.749019607843,0.047058823529,0.196078431373,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[19.374,12.189],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":2,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[3.703,-0.302],[0,0],[0.302,3.703],[0,0],[-3.703,0.303],[0,0],[-0.303,-3.703],[0,0]],"o":[[0,0],[-3.703,0.302],[0,0],[-0.302,-3.703],[0,0],[3.703,-0.302],[0,0],[0.302,3.703]],"v":[[5.221,17.908],[-2.247,18.518],[-9.5,12.36],[-11.379,-10.656],[-5.221,-17.91],[2.247,-18.518],[9.5,-12.362],[11.378,10.656]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.937254961799,0.647058823529,0.352941176471,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[28.634,29.742],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 6","np":2,"cix":2,"bm":0,"ix":6,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-3,-35],[3,35]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.505882352941,0.164705882353,0.050980392157,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":35,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[23.727,54.447],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 7","np":2,"cix":2,"bm":0,"ix":7,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":600,"st":0,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":"Layer 12 Outlines","parent":14,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[48.566,-7,0],"ix":2,"l":2},"a":{"a":0,"k":[91.28,82.5,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[{"i":[[0,0],[-50,-8],[-14,37]],"o":[[0,0],[0,0],[0,0]],"v":[[-41.75,-33],[-1.25,27.5],[51.25,-4]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":12,"s":[{"i":[[0,0],[-50,-8],[-8.75,36.75]],"o":[[0,0],[0,0],[0,0]],"v":[[-37.75,-29.25],[1,31],[51.75,-3]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":26,"s":[{"i":[[0,0],[-50,-8],[-14,37]],"o":[[0,0],[0,0],[0,0]],"v":[[-41.75,-33],[-1.25,27.5],[51.25,-4]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":35,"s":[{"i":[[0,0],[-50,-8],[-8.75,36.75]],"o":[[0,0],[0,0],[0,0]],"v":[[-37.75,-29.25],[1,31],[51.75,-3]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":45,"s":[{"i":[[0,0],[-50,-8],[-14,37]],"o":[[0,0],[0,0],[0,0]],"v":[[-41.75,-33],[-1.25,27.5],[51.25,-4]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":57,"s":[{"i":[[0,0],[-50,-8],[-8.75,36.75]],"o":[[0,0],[0,0],[0,0]],"v":[[-37.75,-29.25],[1,31],[51.75,-3]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":71,"s":[{"i":[[0,0],[-50,-8],[-14,37]],"o":[[0,0],[0,0],[0,0]],"v":[[-41.75,-33],[-1.25,27.5],[51.25,-4]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":80,"s":[{"i":[[0,0],[-50,-8],[-8.75,36.75]],"o":[[0,0],[0,0],[0,0]],"v":[[-37.75,-29.25],[1,31],[51.75,-3]],"c":false}]},{"t":90,"s":[{"i":[[0,0],[-50,-8],[-14,37]],"o":[[0,0],[0,0],[0,0]],"v":[[-41.75,-33],[-1.25,27.5],[51.25,-4]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.247058838489,0.250980392157,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":33,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[133.75,115.5],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[{"i":[[0,0],[0,0]],"o":[[2,3],[0,0]],"v":[[-1,-10.5],[1,10.5]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":12,"s":[{"i":[[0,0],[0,0]],"o":[[2,3],[0,0]],"v":[[-1,-10.5],[-1.25,11]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":26,"s":[{"i":[[0,0],[0,0]],"o":[[2,3],[0,0]],"v":[[-1,-10.5],[1,10.5]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":35,"s":[{"i":[[0,0],[0,0]],"o":[[2,3],[0,0]],"v":[[-1,-10.5],[-1.25,11]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":45,"s":[{"i":[[0,0],[0,0]],"o":[[2,3],[0,0]],"v":[[-1,-10.5],[1,10.5]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":57,"s":[{"i":[[0,0],[0,0]],"o":[[2,3],[0,0]],"v":[[-1,-10.5],[-1.25,11]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":71,"s":[{"i":[[0,0],[0,0]],"o":[[2,3],[0,0]],"v":[[-1,-10.5],[1,10.5]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":80,"s":[{"i":[[0,0],[0,0]],"o":[[2,3],[0,0]],"v":[[-1,-10.5],[-1.25,11]],"c":false}]},{"t":90,"s":[{"i":[[0,0],[0,0]],"o":[[2,3],[0,0]],"v":[[-1,-10.5],[1,10.5]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.937254961799,0.647058823529,0.352941176471,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":7,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[220.5,107.5],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[{"i":[[0,0],[-7.698,5.705],[-3.747,-5.873],[0,-6.861]],"o":[[0,0],[5.596,-4.148],[1.999,3.134],[0,0]],"v":[[-15.5,9.916],[-5.49,-6.769],[11.936,-3.723],[15.5,10.916]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":12,"s":[{"i":[[0,0],[-7.698,5.705],[-3.747,-5.873],[0,-6.861]],"o":[[0,0],[5.596,-4.148],[1.999,3.134],[0,0]],"v":[[-15.5,9.916],[-6.24,-3.769],[12.436,-0.723],[14,11.666]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":26,"s":[{"i":[[0,0],[-7.698,5.705],[-3.747,-5.873],[0,-6.861]],"o":[[0,0],[5.596,-4.148],[1.999,3.134],[0,0]],"v":[[-15.5,9.916],[-5.49,-6.769],[11.936,-3.723],[15.5,10.916]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":35,"s":[{"i":[[0,0],[-7.698,5.705],[-3.747,-5.873],[0,-6.861]],"o":[[0,0],[5.596,-4.148],[1.999,3.134],[0,0]],"v":[[-15.5,9.916],[-6.24,-3.769],[12.436,-0.723],[14,11.666]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":45,"s":[{"i":[[0,0],[-7.698,5.705],[-3.747,-5.873],[0,-6.861]],"o":[[0,0],[5.596,-4.148],[1.999,3.134],[0,0]],"v":[[-15.5,9.916],[-5.49,-6.769],[11.936,-3.723],[15.5,10.916]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":57,"s":[{"i":[[0,0],[-7.698,5.705],[-3.747,-5.873],[0,-6.861]],"o":[[0,0],[5.596,-4.148],[1.999,3.134],[0,0]],"v":[[-15.5,9.916],[-6.24,-3.769],[12.436,-0.723],[14,11.666]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":71,"s":[{"i":[[0,0],[-7.698,5.705],[-3.747,-5.873],[0,-6.861]],"o":[[0,0],[5.596,-4.148],[1.999,3.134],[0,0]],"v":[[-15.5,9.916],[-5.49,-6.769],[11.936,-3.723],[15.5,10.916]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":80,"s":[{"i":[[0,0],[-7.698,5.705],[-3.747,-5.873],[0,-6.861]],"o":[[0,0],[5.596,-4.148],[1.999,3.134],[0,0]],"v":[[-15.5,9.916],[-6.24,-3.769],[12.436,-0.723],[14,11.666]],"c":false}]},{"t":90,"s":[{"i":[[0,0],[-7.698,5.705],[-3.747,-5.873],[0,-6.861]],"o":[[0,0],[5.596,-4.148],[1.999,3.134],[0,0]],"v":[[-15.5,9.916],[-5.49,-6.769],[11.936,-3.723],[15.5,10.916]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.937254961799,0.647058823529,0.352941176471,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":15,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[201,94.084],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":600,"st":0,"bm":0},{"ddd":0,"ind":11,"ty":4,"nm":"shoe Outlines","parent":12,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[92.5,60.75,0],"ix":2,"l":2},"a":{"a":0,"k":[21.5,43.75,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[{"i":[[0,0],[21,-25]],"o":[[0,0],[0,0]],"v":[[17,-15],[-17,15]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":12,"s":[{"i":[[0,0],[18,-22.25]],"o":[[0,0],[0,0]],"v":[[15.25,-19.5],[-17,15.25]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":26,"s":[{"i":[[0,0],[21,-25]],"o":[[0,0],[0,0]],"v":[[17,-15],[-17,15]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":35,"s":[{"i":[[0,0],[18,-22.25]],"o":[[0,0],[0,0]],"v":[[15.25,-19.5],[-17,15.25]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":45,"s":[{"i":[[0,0],[21,-25]],"o":[[0,0],[0,0]],"v":[[17,-15],[-17,15]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":57,"s":[{"i":[[0,0],[18,-22.25]],"o":[[0,0],[0,0]],"v":[[15.25,-19.5],[-17,15.25]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":71,"s":[{"i":[[0,0],[21,-25]],"o":[[0,0],[0,0]],"v":[[17,-15],[-17,15]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":80,"s":[{"i":[[0,0],[18,-22.25]],"o":[[0,0],[0,0]],"v":[[15.25,-19.5],[-17,15.25]],"c":false}]},{"t":90,"s":[{"i":[[0,0],[21,-25]],"o":[[0,0],[0,0]],"v":[[17,-15],[-17,15]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":5,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[35.5,34.5],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[{"i":[[0,0],[9,-14]],"o":[[0,0],[0,0]],"v":[[14.5,-14],[-14.5,14]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":12,"s":[{"i":[[0,0],[9.5,-12.5]],"o":[[0,0],[0,0]],"v":[[13,-17],[-14.5,14]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":26,"s":[{"i":[[0,0],[9,-14]],"o":[[0,0],[0,0]],"v":[[14.5,-14],[-14.5,14]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":35,"s":[{"i":[[0,0],[9.5,-12.5]],"o":[[0,0],[0,0]],"v":[[13,-17],[-14.5,14]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":45,"s":[{"i":[[0,0],[9,-14]],"o":[[0,0],[0,0]],"v":[[14.5,-14],[-14.5,14]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":57,"s":[{"i":[[0,0],[9.5,-12.5]],"o":[[0,0],[0,0]],"v":[[13,-17],[-14.5,14]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":71,"s":[{"i":[[0,0],[9,-14]],"o":[[0,0],[0,0]],"v":[[14.5,-14],[-14.5,14]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":80,"s":[{"i":[[0,0],[9.5,-12.5]],"o":[[0,0],[0,0]],"v":[[13,-17],[-14.5,14]],"c":false}]},{"t":90,"s":[{"i":[[0,0],[9,-14]],"o":[[0,0],[0,0]],"v":[[14.5,-14],[-14.5,14]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":7,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[32,31.5],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":600,"st":0,"bm":0},{"ddd":0,"ind":12,"ty":4,"nm":"leg Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[468,605.572,0],"to":[0,0.5,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":12,"s":[468,608.572,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":26,"s":[468,605.572,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":35,"s":[468,608.572,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":45,"s":[468,605.572,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":57,"s":[468,608.572,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":71,"s":[468,605.572,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":80,"s":[468,608.572,0],"to":[0,0,0],"ti":[0,0.5,0]},{"t":90,"s":[468,605.572,0]}],"ix":2,"l":2},"a":{"a":0,"k":[19,16.572,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.763,0],[0,0],[0,0.763],[0,0],[-0.762,0],[0,0],[0,-0.763],[0,0]],"o":[[0,0],[-0.762,0],[0,0],[0,-0.763],[0,0],[0.763,0],[0,0],[0,0.763]],"v":[[1.953,4],[-1.953,4],[-3.333,2.619],[-3.333,-2.619],[-1.953,-4],[1.953,-4],[3.333,-2.619],[3.333,2.619]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.407843167174,0.20000001496,0.196078446332,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[31.5,9],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[23.543,5.5],[23.543,11.849]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.023529411765,0.454901960784,0.788235294118,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.793,5.5],[9.793,11.849]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.023529411765,0.454901960784,0.788235294118,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[4.5,8.786],[33.567,8.786]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":4,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.160784313725,0.392156892664,0.647058823529,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":3,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-6.5,-6.5],[6.5,6.5]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":12,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-7.5,-5.875],[6.5,6.5]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":26,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-6.5,-6.5],[6.5,6.5]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":35,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-7.5,-5.875],[6.5,6.5]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":45,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-6.5,-6.5],[6.5,6.5]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":57,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-7.5,-5.875],[6.5,6.5]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":71,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-6.5,-6.5],[6.5,6.5]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":80,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-7.5,-5.875],[6.5,6.5]],"c":false}]},{"t":90,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-6.5,-6.5],[6.5,6.5]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":11,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[85,53],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":2,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[{"i":[[0,-1.657],[1.657,0],[0,1.657],[-1.657,0]],"o":[[0,1.657],[-1.657,0],[0,-1.657],[1.657,0]],"v":[[3,0],[0,3],[-3,0],[0,-3]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":12,"s":[{"i":[[0,-1.657],[1.657,0],[0,1.657],[-1.657,0]],"o":[[0,1.657],[-1.657,0],[0,-1.657],[1.657,0]],"v":[[2.812,3.375],[-1,5.625],[-3.188,3.375],[-0.125,1.188]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":26,"s":[{"i":[[0,-1.657],[1.657,0],[0,1.657],[-1.657,0]],"o":[[0,1.657],[-1.657,0],[0,-1.657],[1.657,0]],"v":[[3,0],[0,3],[-3,0],[0,-3]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":35,"s":[{"i":[[0,-1.657],[1.657,0],[0,1.657],[-1.657,0]],"o":[[0,1.657],[-1.657,0],[0,-1.657],[1.657,0]],"v":[[2.812,3.375],[-1,5.625],[-3.188,3.375],[-0.125,1.188]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":45,"s":[{"i":[[0,-1.657],[1.657,0],[0,1.657],[-1.657,0]],"o":[[0,1.657],[-1.657,0],[0,-1.657],[1.657,0]],"v":[[3,0],[0,3],[-3,0],[0,-3]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":57,"s":[{"i":[[0,-1.657],[1.657,0],[0,1.657],[-1.657,0]],"o":[[0,1.657],[-1.657,0],[0,-1.657],[1.657,0]],"v":[[2.812,3.375],[-1,5.625],[-3.188,3.375],[-0.125,1.188]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":71,"s":[{"i":[[0,-1.657],[1.657,0],[0,1.657],[-1.657,0]],"o":[[0,1.657],[-1.657,0],[0,-1.657],[1.657,0]],"v":[[3,0],[0,3],[-3,0],[0,-3]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":80,"s":[{"i":[[0,-1.657],[1.657,0],[0,1.657],[-1.657,0]],"o":[[0,1.657],[-1.657,0],[0,-1.657],[1.657,0]],"v":[[2.812,3.375],[-1,5.625],[-3.188,3.375],[-0.125,1.188]],"c":true}]},{"t":90,"s":[{"i":[[0,-1.657],[1.657,0],[0,1.657],[-1.657,0]],"o":[[0,1.657],[-1.657,0],[0,-1.657],[1.657,0]],"v":[[3,0],[0,3],[-3,0],[0,-3]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.937254961799,0.647058823529,0.352941176471,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[58,22],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 6","np":2,"cix":2,"bm":0,"ix":6,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,6.548],[0,0],[0,0]],"o":[[0,0],[-6.548,0],[0,0],[0,0],[0,0]],"v":[[14.75,12],[-2.893,12.5],[-14.75,0.643],[-14.75,-12.5],[14.25,-12.5]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.023529411765,0.454901960784,0.788235294118,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[19.25,18],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 7","np":2,"cix":2,"bm":0,"ix":7,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-33,-17.072],[-0.429,-17.072],[33,17.072]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":12,"s":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-33,-17.072],[-1.429,-14.447],[33,17.072]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":26,"s":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-33,-17.072],[-0.429,-17.072],[33,17.072]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":35,"s":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-33,-17.072],[-1.429,-14.447],[33,17.072]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":45,"s":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-33,-17.072],[-0.429,-17.072],[33,17.072]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":57,"s":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-33,-17.072],[-1.429,-14.447],[33,17.072]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":71,"s":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-33,-17.072],[-0.429,-17.072],[33,17.072]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":80,"s":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-33,-17.072],[-1.429,-14.447],[33,17.072]],"c":false}]},{"t":90,"s":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-33,-17.072],[-0.429,-17.072],[33,17.072]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.023529411765,0.454901960784,0.788235294118,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":10,"ix":5},"lc":1,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[58,42.072],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 8","np":2,"cix":2,"bm":0,"ix":8,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":600,"st":0,"bm":0},{"ddd":0,"ind":13,"ty":4,"nm":"bodyy Outlines","parent":14,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[54.286,30.5,0],"to":[0,0.833,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":12,"s":[54.286,35.5,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":26,"s":[54.286,30.5,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":35,"s":[54.286,35.5,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":45,"s":[54.286,30.5,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":57,"s":[54.286,35.5,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":71,"s":[54.286,30.5,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":80,"s":[54.286,35.5,0],"to":[0,0,0],"ti":[0,0.833,0]},{"t":90,"s":[54.286,30.5,0]}],"ix":2,"l":2},"a":{"a":0,"k":[43.25,62.75,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[16.5,8],[-16.5,8],[-16.5,-8],[16.5,-8]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[17.75,108.25],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[24.064,0],[0,0],[0,0],[-24.656,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,-24.656],[0,0],[0,0],[0,24.064]],"v":[[-1,52],[-42,52],[-43,-8],[0.643,-52],[43,-52],[43,8]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[43.25,52.25],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[9.5,15],[-9.5,15],[-9.5,-15],[9.5,-15]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.709803921569,0.709803921569,0.709803921569,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[34.75,110.25],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":600,"st":0,"bm":0},{"ddd":0,"ind":14,"ty":4,"nm":"Layer 16 Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[516.357,589.935,0],"to":[0,0.667,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":12,"s":[516.357,593.935,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":26,"s":[516.357,589.935,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":35,"s":[516.357,593.935,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":45,"s":[516.357,589.935,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":57,"s":[516.357,593.935,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":71,"s":[516.357,589.935,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":80,"s":[516.357,593.935,0],"to":[0,0,0],"ti":[0,0.667,0]},{"t":90,"s":[516.357,589.935,0]}],"ix":2,"l":2},"a":{"a":0,"k":[89.643,79.935,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,-2.603],[0,0],[0.027,-0.187],[-2.138,1.425],[-1,0],[0,0]],"o":[[0,0],[2.604,0],[0,0],[0,0.189],[-0.091,0.643],[3,-2],[1.414,0],[0,0]],"v":[[-5,-11.713],[-5,-11.713],[-0.286,-6.998],[-0.286,8.253],[-0.332,8.818],[2,10.287],[1,7.287],[0,10.287]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.709803921569,0.709803921569,0.709803921569,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[169.286,20.713],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[{"i":[[0,-0.828],[0.828,0],[0,0.828],[-0.828,0]],"o":[[0,0.828],[-0.828,0],[0,-0.828],[0.828,0]],"v":[[1.5,0],[0,1.5],[-1.5,0],[0,-1.5]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":12,"s":[{"i":[[0,-0.828],[0.828,0],[0,0.828],[-0.828,0]],"o":[[0,0.828],[-0.828,0],[0,-0.828],[0.828,0]],"v":[[0.5,0.25],[-1,1.75],[-2.5,0.25],[-1,-1.25]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":26,"s":[{"i":[[0,-0.828],[0.828,0],[0,0.828],[-0.828,0]],"o":[[0,0.828],[-0.828,0],[0,-0.828],[0.828,0]],"v":[[1.5,0],[0,1.5],[-1.5,0],[0,-1.5]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":35,"s":[{"i":[[0,-0.828],[0.828,0],[0,0.828],[-0.828,0]],"o":[[0,0.828],[-0.828,0],[0,-0.828],[0.828,0]],"v":[[0.5,0.25],[-1,1.75],[-2.5,0.25],[-1,-1.25]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":45,"s":[{"i":[[0,-0.828],[0.828,0],[0,0.828],[-0.828,0]],"o":[[0,0.828],[-0.828,0],[0,-0.828],[0.828,0]],"v":[[1.5,0],[0,1.5],[-1.5,0],[0,-1.5]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":57,"s":[{"i":[[0,-0.828],[0.828,0],[0,0.828],[-0.828,0]],"o":[[0,0.828],[-0.828,0],[0,-0.828],[0.828,0]],"v":[[0.5,0.25],[-1,1.75],[-2.5,0.25],[-1,-1.25]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":71,"s":[{"i":[[0,-0.828],[0.828,0],[0,0.828],[-0.828,0]],"o":[[0,0.828],[-0.828,0],[0,-0.828],[0.828,0]],"v":[[1.5,0],[0,1.5],[-1.5,0],[0,-1.5]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":80,"s":[{"i":[[0,-0.828],[0.828,0],[0,0.828],[-0.828,0]],"o":[[0,0.828],[-0.828,0],[0,-0.828],[0.828,0]],"v":[[0.5,0.25],[-1,1.75],[-2.5,0.25],[-1,-1.25]],"c":true}]},{"t":90,"s":[{"i":[[0,-0.828],[0.828,0],[0,0.828],[-0.828,0]],"o":[[0,0.828],[-0.828,0],[0,-0.828],[0.828,0]],"v":[[1.5,0],[0,1.5],[-1.5,0],[0,-1.5]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.709803921569,0.709803921569,0.709803921569,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[122.786,147.5],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[{"i":[[0,-1.381],[1.381,0],[0,1.381],[-1.381,0]],"o":[[0,1.381],[-1.381,0],[0,-1.381],[1.381,0]],"v":[[2.5,0],[0,2.5],[-2.5,0],[0,-2.5]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":12,"s":[{"i":[[0,-1.381],[1.381,0],[0,1.381],[-1.381,0]],"o":[[0,1.381],[-1.381,0],[0,-1.381],[1.381,0]],"v":[[1.5,0.25],[-1,2.75],[-3.5,0.25],[0,-2.5]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":26,"s":[{"i":[[0,-1.381],[1.381,0],[0,1.381],[-1.381,0]],"o":[[0,1.381],[-1.381,0],[0,-1.381],[1.381,0]],"v":[[2.5,0],[0,2.5],[-2.5,0],[0,-2.5]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":35,"s":[{"i":[[0,-1.381],[1.381,0],[0,1.381],[-1.381,0]],"o":[[0,1.381],[-1.381,0],[0,-1.381],[1.381,0]],"v":[[1.5,0.25],[-1,2.75],[-3.5,0.25],[0,-2.5]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":45,"s":[{"i":[[0,-1.381],[1.381,0],[0,1.381],[-1.381,0]],"o":[[0,1.381],[-1.381,0],[0,-1.381],[1.381,0]],"v":[[2.5,0],[0,2.5],[-2.5,0],[0,-2.5]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":57,"s":[{"i":[[0,-1.381],[1.381,0],[0,1.381],[-1.381,0]],"o":[[0,1.381],[-1.381,0],[0,-1.381],[1.381,0]],"v":[[1.5,0.25],[-1,2.75],[-3.5,0.25],[0,-2.5]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":71,"s":[{"i":[[0,-1.381],[1.381,0],[0,1.381],[-1.381,0]],"o":[[0,1.381],[-1.381,0],[0,-1.381],[1.381,0]],"v":[[2.5,0],[0,2.5],[-2.5,0],[0,-2.5]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":80,"s":[{"i":[[0,-1.381],[1.381,0],[0,1.381],[-1.381,0]],"o":[[0,1.381],[-1.381,0],[0,-1.381],[1.381,0]],"v":[[1.5,0.25],[-1,2.75],[-3.5,0.25],[0,-2.5]],"c":true}]},{"t":90,"s":[{"i":[[0,-1.381],[1.381,0],[0,1.381],[-1.381,0]],"o":[[0,1.381],[-1.381,0],[0,-1.381],[1.381,0]],"v":[[2.5,0],[0,2.5],[-2.5,0],[0,-2.5]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.478431402468,0.474509833841,0.474509833841,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[122.786,147.5],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[{"i":[[-0.657,-0.498],[0,0],[0.499,-0.657],[0,0],[0.658,0.499],[0,0],[-0.498,0.658],[0,0]],"o":[[0,0],[0.657,0.498],[0,0],[-0.499,0.657],[0,0],[-0.657,-0.499],[0,0],[0.498,-0.657]],"v":[[2.694,-3.733],[2.866,-3.602],[3.153,-1.509],[-0.602,3.444],[-2.694,3.732],[-2.867,3.602],[-3.155,1.509],[0.601,-3.444]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":12,"s":[{"i":[[-0.657,-0.498],[0,0],[0.499,-0.657],[0,0],[0.658,0.499],[0,0],[-0.498,0.658],[0,0]],"o":[[0,0],[0.657,0.498],[0,0],[-0.499,0.657],[0,0],[-0.657,-0.499],[0,0],[0.498,-0.657]],"v":[[3.694,-2.983],[3.866,-2.852],[4.153,-0.759],[0.398,4.194],[-1.694,4.482],[-1.867,4.352],[-2.155,2.259],[1.601,-2.694]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":26,"s":[{"i":[[-0.657,-0.498],[0,0],[0.499,-0.657],[0,0],[0.658,0.499],[0,0],[-0.498,0.658],[0,0]],"o":[[0,0],[0.657,0.498],[0,0],[-0.499,0.657],[0,0],[-0.657,-0.499],[0,0],[0.498,-0.657]],"v":[[2.694,-3.733],[2.866,-3.602],[3.153,-1.509],[-0.602,3.444],[-2.694,3.732],[-2.867,3.602],[-3.155,1.509],[0.601,-3.444]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":35,"s":[{"i":[[-0.657,-0.498],[0,0],[0.499,-0.657],[0,0],[0.658,0.499],[0,0],[-0.498,0.658],[0,0]],"o":[[0,0],[0.657,0.498],[0,0],[-0.499,0.657],[0,0],[-0.657,-0.499],[0,0],[0.498,-0.657]],"v":[[3.694,-2.983],[3.866,-2.852],[4.153,-0.759],[0.398,4.194],[-1.694,4.482],[-1.867,4.352],[-2.155,2.259],[1.601,-2.694]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":45,"s":[{"i":[[-0.657,-0.498],[0,0],[0.499,-0.657],[0,0],[0.658,0.499],[0,0],[-0.498,0.658],[0,0]],"o":[[0,0],[0.657,0.498],[0,0],[-0.499,0.657],[0,0],[-0.657,-0.499],[0,0],[0.498,-0.657]],"v":[[2.694,-3.733],[2.866,-3.602],[3.153,-1.509],[-0.602,3.444],[-2.694,3.732],[-2.867,3.602],[-3.155,1.509],[0.601,-3.444]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":57,"s":[{"i":[[-0.657,-0.498],[0,0],[0.499,-0.657],[0,0],[0.658,0.499],[0,0],[-0.498,0.658],[0,0]],"o":[[0,0],[0.657,0.498],[0,0],[-0.499,0.657],[0,0],[-0.657,-0.499],[0,0],[0.498,-0.657]],"v":[[3.694,-2.983],[3.866,-2.852],[4.153,-0.759],[0.398,4.194],[-1.694,4.482],[-1.867,4.352],[-2.155,2.259],[1.601,-2.694]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":71,"s":[{"i":[[-0.657,-0.498],[0,0],[0.499,-0.657],[0,0],[0.658,0.499],[0,0],[-0.498,0.658],[0,0]],"o":[[0,0],[0.657,0.498],[0,0],[-0.499,0.657],[0,0],[-0.657,-0.499],[0,0],[0.498,-0.657]],"v":[[2.694,-3.733],[2.866,-3.602],[3.153,-1.509],[-0.602,3.444],[-2.694,3.732],[-2.867,3.602],[-3.155,1.509],[0.601,-3.444]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":80,"s":[{"i":[[-0.657,-0.498],[0,0],[0.499,-0.657],[0,0],[0.658,0.499],[0,0],[-0.498,0.658],[0,0]],"o":[[0,0],[0.657,0.498],[0,0],[-0.499,0.657],[0,0],[-0.657,-0.499],[0,0],[0.498,-0.657]],"v":[[3.694,-2.983],[3.866,-2.852],[4.153,-0.759],[0.398,4.194],[-1.694,4.482],[-1.867,4.352],[-2.155,2.259],[1.601,-2.694]],"c":true}]},{"t":90,"s":[{"i":[[-0.657,-0.498],[0,0],[0.499,-0.657],[0,0],[0.658,0.499],[0,0],[-0.498,0.658],[0,0]],"o":[[0,0],[0.657,0.498],[0,0],[-0.499,0.657],[0,0],[-0.657,-0.499],[0,0],[0.498,-0.657]],"v":[[2.694,-3.733],[2.866,-3.602],[3.153,-1.509],[-0.602,3.444],[-2.694,3.732],[-2.867,3.602],[-3.155,1.509],[0.601,-3.444]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.478431402468,0.474509833841,0.474509833841,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[128.205,131.439],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[{"i":[[-0.657,-0.498],[0,0],[0.499,-0.657],[0,0],[0.658,0.498],[0,0],[-0.498,0.657],[0,0]],"o":[[0,0],[0.657,0.498],[0,0],[-0.499,0.657],[0,0],[-0.657,-0.498],[0,0],[0.498,-0.657]],"v":[[2.17,-2.873],[2.181,-2.865],[2.467,-0.773],[-0.077,2.585],[-2.171,2.873],[-2.181,2.865],[-2.468,0.773],[0.077,-2.585]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":12,"s":[{"i":[[-0.657,-0.498],[0,0],[0.499,-0.657],[0,0],[0.658,0.498],[0,0],[-0.498,0.657],[0,0]],"o":[[0,0],[0.657,0.498],[0,0],[-0.499,0.657],[0,0],[-0.657,-0.498],[0,0],[0.498,-0.657]],"v":[[1.17,-2.623],[1.181,-2.615],[1.467,-0.523],[-1.077,2.835],[-3.171,3.123],[-3.181,3.115],[-3.468,1.023],[-0.923,-2.335]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":26,"s":[{"i":[[-0.657,-0.498],[0,0],[0.499,-0.657],[0,0],[0.658,0.498],[0,0],[-0.498,0.657],[0,0]],"o":[[0,0],[0.657,0.498],[0,0],[-0.499,0.657],[0,0],[-0.657,-0.498],[0,0],[0.498,-0.657]],"v":[[2.17,-2.873],[2.181,-2.865],[2.467,-0.773],[-0.077,2.585],[-2.171,2.873],[-2.181,2.865],[-2.468,0.773],[0.077,-2.585]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":35,"s":[{"i":[[-0.657,-0.498],[0,0],[0.499,-0.657],[0,0],[0.658,0.498],[0,0],[-0.498,0.657],[0,0]],"o":[[0,0],[0.657,0.498],[0,0],[-0.499,0.657],[0,0],[-0.657,-0.498],[0,0],[0.498,-0.657]],"v":[[1.17,-2.623],[1.181,-2.615],[1.467,-0.523],[-1.077,2.835],[-3.171,3.123],[-3.181,3.115],[-3.468,1.023],[-0.923,-2.335]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":45,"s":[{"i":[[-0.657,-0.498],[0,0],[0.499,-0.657],[0,0],[0.658,0.498],[0,0],[-0.498,0.657],[0,0]],"o":[[0,0],[0.657,0.498],[0,0],[-0.499,0.657],[0,0],[-0.657,-0.498],[0,0],[0.498,-0.657]],"v":[[2.17,-2.873],[2.181,-2.865],[2.467,-0.773],[-0.077,2.585],[-2.171,2.873],[-2.181,2.865],[-2.468,0.773],[0.077,-2.585]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":57,"s":[{"i":[[-0.657,-0.498],[0,0],[0.499,-0.657],[0,0],[0.658,0.498],[0,0],[-0.498,0.657],[0,0]],"o":[[0,0],[0.657,0.498],[0,0],[-0.499,0.657],[0,0],[-0.657,-0.498],[0,0],[0.498,-0.657]],"v":[[1.17,-2.623],[1.181,-2.615],[1.467,-0.523],[-1.077,2.835],[-3.171,3.123],[-3.181,3.115],[-3.468,1.023],[-0.923,-2.335]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":71,"s":[{"i":[[-0.657,-0.498],[0,0],[0.499,-0.657],[0,0],[0.658,0.498],[0,0],[-0.498,0.657],[0,0]],"o":[[0,0],[0.657,0.498],[0,0],[-0.499,0.657],[0,0],[-0.657,-0.498],[0,0],[0.498,-0.657]],"v":[[2.17,-2.873],[2.181,-2.865],[2.467,-0.773],[-0.077,2.585],[-2.171,2.873],[-2.181,2.865],[-2.468,0.773],[0.077,-2.585]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":80,"s":[{"i":[[-0.657,-0.498],[0,0],[0.499,-0.657],[0,0],[0.658,0.498],[0,0],[-0.498,0.657],[0,0]],"o":[[0,0],[0.657,0.498],[0,0],[-0.499,0.657],[0,0],[-0.657,-0.498],[0,0],[0.498,-0.657]],"v":[[1.17,-2.623],[1.181,-2.615],[1.467,-0.523],[-1.077,2.835],[-3.171,3.123],[-3.181,3.115],[-3.468,1.023],[-0.923,-2.335]],"c":true}]},{"t":90,"s":[{"i":[[-0.657,-0.498],[0,0],[0.499,-0.657],[0,0],[0.658,0.498],[0,0],[-0.498,0.657],[0,0]],"o":[[0,0],[0.657,0.498],[0,0],[-0.499,0.657],[0,0],[-0.657,-0.498],[0,0],[0.498,-0.657]],"v":[[2.17,-2.873],[2.181,-2.865],[2.467,-0.773],[-0.077,2.585],[-2.171,2.873],[-2.181,2.865],[-2.468,0.773],[0.077,-2.585]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.478431402468,0.474509833841,0.474509833841,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[113.045,151.819],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":2,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[{"i":[[0,0],[0,0],[0.961,-1.098],[0,0],[1.056,0.211],[0,0]],"o":[[0,0],[1.032,1.032],[0,0],[-0.709,0.81],[0,0],[0,0]],"v":[[5.874,-9.935],[8.039,-7.769],[8.165,-3.984],[-2.98,8.755],[-5.834,9.724],[-9.126,9.065]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":12,"s":[{"i":[[0,0],[0,0],[0.961,-1.098],[0,0],[1.056,0.211],[0,0]],"o":[[0,0],[1.032,1.032],[0,0],[-0.709,0.81],[0,0],[0,0]],"v":[[6.874,-9.185],[9.039,-7.019],[8.165,-3.984],[-3.98,9.005],[-6.834,9.974],[-10.126,9.315]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":26,"s":[{"i":[[0,0],[0,0],[0.961,-1.098],[0,0],[1.056,0.211],[0,0]],"o":[[0,0],[1.032,1.032],[0,0],[-0.709,0.81],[0,0],[0,0]],"v":[[5.874,-9.935],[8.039,-7.769],[8.165,-3.984],[-2.98,8.755],[-5.834,9.724],[-9.126,9.065]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":35,"s":[{"i":[[0,0],[0,0],[0.961,-1.098],[0,0],[1.056,0.211],[0,0]],"o":[[0,0],[1.032,1.032],[0,0],[-0.709,0.81],[0,0],[0,0]],"v":[[6.874,-9.185],[9.039,-7.019],[8.165,-3.984],[-3.98,9.005],[-6.834,9.974],[-10.126,9.315]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":45,"s":[{"i":[[0,0],[0,0],[0.961,-1.098],[0,0],[1.056,0.211],[0,0]],"o":[[0,0],[1.032,1.032],[0,0],[-0.709,0.81],[0,0],[0,0]],"v":[[5.874,-9.935],[8.039,-7.769],[8.165,-3.984],[-2.98,8.755],[-5.834,9.724],[-9.126,9.065]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":57,"s":[{"i":[[0,0],[0,0],[0.961,-1.098],[0,0],[1.056,0.211],[0,0]],"o":[[0,0],[1.032,1.032],[0,0],[-0.709,0.81],[0,0],[0,0]],"v":[[6.874,-9.185],[9.039,-7.019],[8.165,-3.984],[-3.98,9.005],[-6.834,9.974],[-10.126,9.315]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":71,"s":[{"i":[[0,0],[0,0],[0.961,-1.098],[0,0],[1.056,0.211],[0,0]],"o":[[0,0],[1.032,1.032],[0,0],[-0.709,0.81],[0,0],[0,0]],"v":[[5.874,-9.935],[8.039,-7.769],[8.165,-3.984],[-2.98,8.755],[-5.834,9.724],[-9.126,9.065]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":80,"s":[{"i":[[0,0],[0,0],[0.961,-1.098],[0,0],[1.056,0.211],[0,0]],"o":[[0,0],[1.032,1.032],[0,0],[-0.709,0.81],[0,0],[0,0]],"v":[[6.874,-9.185],[9.039,-7.019],[8.165,-3.984],[-3.98,9.005],[-6.834,9.974],[-10.126,9.315]],"c":false}]},{"t":90,"s":[{"i":[[0,0],[0,0],[0.961,-1.098],[0,0],[1.056,0.211],[0,0]],"o":[[0,0],[1.032,1.032],[0,0],[-0.709,0.81],[0,0],[0,0]],"v":[[5.874,-9.935],[8.039,-7.769],[8.165,-3.984],[-2.98,8.755],[-5.834,9.724],[-9.126,9.065]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.478431402468,0.474509833841,0.474509833841,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[122.912,142.435],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 6","np":2,"cix":2,"bm":0,"ix":6,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[14.75,0.5],[-15.75,-0.25]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.478431402468,0.474509833841,0.474509833841,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[108.536,146.75],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 7","np":2,"cix":2,"bm":0,"ix":7,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0.985,-1.609],[-1.158,-1.89],[-1.865,0],[0,0],[-0.731,-1.402],[1.302,-1.871],[1.433,-0.004],[0,0]],"o":[[0,0],[-1.886,0],[-0.823,1.344],[0.974,1.591],[0,0],[1.581,0],[0.572,1.097],[-0.819,1.176],[0,0],[0,0]],"v":[[19.664,-9.375],[-4.149,-9.375],[-8.83,-6.851],[-8.959,-1.852],[-4.312,0.625],[36.059,0.625],[39.914,2.813],[39.32,7.278],[35.696,9.131],[-40.622,9.375]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.807843197093,0.807843197093,0.807843197093,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":4,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[50.622,129.375],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 8","np":2,"cix":2,"bm":0,"ix":8,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-23,-1],[-8,-12],[4,-20],[12,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-32.5,24.5],[-32.5,-3.357],[-6.5,-23.5],[23.5,-14.5],[28.5,16.5],[15.5,26.5],[-32.5,26.5]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.749019607843,0.047058823529,0.196078431373,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[110.786,87.5],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 9","np":2,"cix":2,"bm":0,"ix":9,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-5.523],[5.523,0],[0,5.523],[-5.523,0]],"o":[[0,5.523],[-5.523,0],[0,-5.523],[5.523,0]],"v":[[10,0],[0,10],[-10,0],[0,-10]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.709803921569,0.709803921569,0.709803921569,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[88.286,136],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 10","np":2,"cix":2,"bm":0,"ix":10,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-7.18],[7.18,0],[0,7.18],[-7.18,0]],"o":[[0,7.18],[-7.18,0],[0,-7.18],[7.18,0]],"v":[[13,0],[0,13],[-13,0],[0,-13]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.478431402468,0.474509833841,0.474509833841,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[88.286,136],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 11","np":2,"cix":2,"bm":0,"ix":11,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-1.657],[1.657,0],[0,1.657],[-1.657,0]],"o":[[0,1.657],[-1.657,0],[0,-1.657],[1.657,0]],"v":[[3,0],[0,3],[-3,0],[0,-3]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.807843197093,0.807843197093,0.807843197093,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[70.286,120],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 12","np":2,"cix":2,"bm":0,"ix":12,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[14.497,0],[0,0],[0,14.497],[0,0],[0,0],[0,0]],"o":[[0,0],[-14.497,0],[0,0],[0,0],[0,0],[0,14.497]],"v":[[9.75,18.234],[-9.75,18.234],[-36,-8.016],[-36,-18.234],[36,-18.234],[36,-8.016]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.749019607843,0.047058823529,0.196078431373,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":4,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[84.286,130.5],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 13","np":2,"cix":2,"bm":0,"ix":13,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-2.485],[2.485,0],[0,2.485],[-2.485,0]],"o":[[0,2.485],[-2.485,0],[0,-2.485],[2.485,0]],"v":[[4.5,0],[0,4.5],[-4.5,0],[0,-4.5]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.709803921569,0.709803921569,0.709803921569,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[159.786,9.5],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 14","np":2,"cix":2,"bm":0,"ix":14,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-3.59],[3.59,0],[0,3.59],[-3.59,0]],"o":[[0,3.59],[-3.59,0],[0,-3.59],[3.59,0]],"v":[[6.5,0],[0,6.5],[-6.5,0],[0,-6.5]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.478431402468,0.474509833841,0.474509833841,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[159.786,9.5],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 15","np":2,"cix":2,"bm":0,"ix":15,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[8,-8.5],[-8,8.5]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.517647058824,0.517647058824,0.513725490196,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1.25,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[75.286,128.5],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 16","np":2,"cix":2,"bm":0,"ix":16,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[8,-8.5],[-8,8.5]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.517647058824,0.517647058824,0.513725490196,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1.25,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[73.286,126.5],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 17","np":2,"cix":2,"bm":0,"ix":17,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[8,-8.5],[-8,8.5]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.517647058824,0.517647058824,0.513725490196,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1.25,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[71.286,124.5],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 18","np":2,"cix":2,"bm":0,"ix":18,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[8,-8.5],[-8,8.5]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.517647058824,0.517647058824,0.513725490196,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1.25,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[69.286,122.5],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 19","np":2,"cix":2,"bm":0,"ix":19,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[2.331,-2.258],[0,0],[2.598,2.682],[0,0],[-3.57,3.458],[-3.458,-3.57],[0,0]],"o":[[0,0],[-2.682,2.598],[0,0],[-3.458,-3.57],[3.57,-3.459],[0,0],[2.257,2.331]],"v":[[13.239,9.328],[9.386,13.06],[-0.174,12.908],[-12.169,0.527],[-11.967,-12.199],[0.759,-11.997],[13.37,1.02]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.807843197093,0.807843197093,0.807843197093,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[78.273,131.349],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 20","np":2,"cix":2,"bm":0,"ix":20,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[2.195,2.266],[0,0],[0,0],[-3.396,-3.505],[0,0],[3.506,-3.396],[0,0]],"o":[[0,0],[0,0],[3.505,-3.396],[0,0],[3.396,3.505],[0,0],[-2.266,2.195]],"v":[[-8.186,13.355],[-16.736,4.531],[0.619,-12.283],[13.114,-12.084],[13.34,-11.851],[13.143,0.645],[-0.109,13.484]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.807843197093,0.807843197093,0.807843197093,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[96.409,131.486],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 21","np":2,"cix":2,"bm":0,"ix":21,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[1.427,-2.332],[1.75,-1.05]],"o":[[0,0],[0,2.734],[-0.899,1.467],[0,0]],"v":[[3,-34.5],[3,22.728],[0.909,30.513],[-3,34.5]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.709803921569,0.709803921569,0.709803921569,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":5,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[156.786,47],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 22","np":2,"cix":2,"bm":0,"ix":22,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":600,"st":0,"bm":0},{"ddd":0,"ind":15,"ty":4,"nm":"Layer 14 Outlines","parent":14,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":12,"s":[7]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":26,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":35,"s":[7]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":45,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":57,"s":[7]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":71,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":80,"s":[7]},{"t":90,"s":[0]}],"ix":10},"p":{"a":0,"k":[123.661,89.625,0],"ix":2,"l":2},"a":{"a":0,"k":[-0.375,13.875,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[1.105,0],[0,0],[0,1.105],[-1.105,0],[0,0],[0,-1.105]],"o":[[0,0],[-1.105,0],[0,-1.105],[0,0],[1.105,0],[0,1.105]],"v":[[3,2],[-3,2],[-5,0],[-3,-2],[3,-2],[5,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.709803921569,0.709803921569,0.709803921569,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[22.25,2.25],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[1.105,0],[0,0],[0,1.105],[-1.105,0],[0,0],[0,-1.105]],"o":[[0,0],[-1.105,0],[0,-1.105],[0,0],[1.105,0],[0,1.105]],"v":[[3,2],[-3,2],[-5,0],[-3,-2],[3,-2],[5,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.709803921569,0.709803921569,0.709803921569,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[23.25,25.25],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[3,2],[-3,2],[-3,-2],[3,-2]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.478431402468,0.474509833841,0.474509833841,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[22.25,5.25],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[3,2],[-3,2],[-3,-2],[3,-2]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.478431402468,0.474509833841,0.474509833841,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[23.25,22.25],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[3.866,0],[0,0],[0,3.866],[-3.866,0],[0,0],[0,-3.866]],"o":[[0,0],[-3.866,0],[0,-3.866],[0,0],[3.866,0],[0,3.866]],"v":[[11,7],[-11,7],[-18,0],[-11,-7],[11,-7],[18,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.709803921569,0.709803921569,0.709803921569,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[18.25,13.25],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":2,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":600,"st":0,"bm":0},{"ddd":0,"ind":16,"ty":4,"nm":"cap Outlines","parent":9,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[4.727,26.259,0],"ix":2,"l":2},"a":{"a":0,"k":[49.5,36.312,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[{"i":[[0,0],[-15,5]],"o":[[0,0],[0,0]],"v":[[-8.5,-4.5],[8.5,-0.5]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":6,"s":[{"i":[[0,0],[-13.207,2.703]],"o":[[0,0],[0,0]],"v":[[-7.645,1.325],[8.5,-0.5]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":12,"s":[{"i":[[0,0],[-11.414,0.406]],"o":[[0,0],[0,0]],"v":[[-6.791,7.149],[8.5,-0.5]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":19,"s":[{"i":[[0,0],[-13.207,2.703]],"o":[[0,0],[0,0]],"v":[[-7.645,1.325],[8.5,-0.5]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":26,"s":[{"i":[[0,0],[-15,5]],"o":[[0,0],[0,0]],"v":[[-8.5,-4.5],[8.5,-0.5]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":31,"s":[{"i":[[0,0],[-13.207,2.703]],"o":[[0,0],[0,0]],"v":[[-7.645,1.325],[8.5,-0.5]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":35,"s":[{"i":[[0,0],[-11.414,0.406]],"o":[[0,0],[0,0]],"v":[[-6.791,7.149],[8.5,-0.5]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":40,"s":[{"i":[[0,0],[-13.207,2.703]],"o":[[0,0],[0,0]],"v":[[-7.645,1.325],[8.5,-0.5]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":45,"s":[{"i":[[0,0],[-15,5]],"o":[[0,0],[0,0]],"v":[[-8.5,-4.5],[8.5,-0.5]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":51,"s":[{"i":[[0,0],[-13.207,2.703]],"o":[[0,0],[0,0]],"v":[[-7.645,1.325],[8.5,-0.5]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":57,"s":[{"i":[[0,0],[-11.414,0.406]],"o":[[0,0],[0,0]],"v":[[-6.791,7.149],[8.5,-0.5]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":64,"s":[{"i":[[0,0],[-13.207,2.703]],"o":[[0,0],[0,0]],"v":[[-7.645,1.325],[8.5,-0.5]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":71,"s":[{"i":[[0,0],[-15,5]],"o":[[0,0],[0,0]],"v":[[-8.5,-4.5],[8.5,-0.5]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":76,"s":[{"i":[[0,0],[-13.207,2.703]],"o":[[0,0],[0,0]],"v":[[-7.645,1.325],[8.5,-0.5]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":80,"s":[{"i":[[0,0],[-11.414,0.406]],"o":[[0,0],[0,0]],"v":[[-6.791,7.149],[8.5,-0.5]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":85,"s":[{"i":[[0,0],[-13.207,2.703]],"o":[[0,0],[0,0]],"v":[[-7.645,1.325],[8.5,-0.5]],"c":false}]},{"t":90,"s":[{"i":[[0,0],[-15,5]],"o":[[0,0],[0,0]],"v":[[-8.5,-4.5],[8.5,-0.5]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.603921568627,0.03137254902,0.152941176471,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":13,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[41,37],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":600,"st":0,"bm":0},{"ddd":0,"ind":17,"ty":4,"nm":"back wheel","parent":14,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[38.411,134.375,0],"ix":2,"l":2},"a":{"a":0,"k":[75.125,49.375,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[4.215,-2.965],[4.215,3.035],[-1.357,3.035],[-1.357,5.965],[-4.215,5.965],[-4.215,-5.965],[-1.785,-5.965],[-1.785,-2.965]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":12,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-0.035,-2.954],[-0.035,3.046],[-5.607,3.046],[-5.607,5.975],[-8.465,5.975],[-8.465,-5.954],[-6.035,-5.954],[-6.035,-2.954]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":26,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[4.215,-2.965],[4.215,3.035],[-1.357,3.035],[-1.357,5.965],[-4.215,5.965],[-4.215,-5.965],[-1.785,-5.965],[-1.785,-2.965]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":35,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-0.035,-2.954],[-0.035,3.046],[-5.607,3.046],[-5.607,5.975],[-8.465,5.975],[-8.465,-5.954],[-6.035,-5.954],[-6.035,-2.954]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":45,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[4.215,-2.965],[4.215,3.035],[-1.357,3.035],[-1.357,5.965],[-4.215,5.965],[-4.215,-5.965],[-1.785,-5.965],[-1.785,-2.965]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":57,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-0.035,-2.954],[-0.035,3.046],[-5.607,3.046],[-5.607,5.975],[-8.465,5.975],[-8.465,-5.954],[-6.035,-5.954],[-6.035,-2.954]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":71,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[4.215,-2.965],[4.215,3.035],[-1.357,3.035],[-1.357,5.965],[-4.215,5.965],[-4.215,-5.965],[-1.785,-5.965],[-1.785,-2.965]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":80,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-0.035,-2.954],[-0.035,3.046],[-5.607,3.046],[-5.607,5.975],[-8.465,5.975],[-8.465,-5.954],[-6.035,-5.954],[-6.035,-2.954]],"c":true}]},{"t":90,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[4.215,-2.965],[4.215,3.035],[-1.357,3.035],[-1.357,5.965],[-4.215,5.965],[-4.215,-5.965],[-1.785,-5.965],[-1.785,-2.965]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.807843197093,0.807843197093,0.807843197093,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[43.785,53.965],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[4.107,-0.25],[-4.107,0.25]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":12,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-4.518,-3],[-13.357,-3.875]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":26,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[4.107,-0.25],[-4.107,0.25]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":35,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-4.518,-3],[-13.357,-3.875]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":45,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[4.107,-0.25],[-4.107,0.25]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":57,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-4.518,-3],[-13.357,-3.875]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":71,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[4.107,-0.25],[-4.107,0.25]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":80,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-4.518,-3],[-13.357,-3.875]],"c":false}]},{"t":90,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[4.107,-0.25],[-4.107,0.25]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.749019607843,0.047058823529,0.196078431373,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":5,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[21.393,53.75],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[{"i":[[0,0],[-12.777,7.78],[-6.768,-3.512],[-1.506,-11.045]],"o":[[0,0],[6.513,-3.965],[5.519,2.864],[0,0]],"v":[[-20.361,12.482],[-11.361,-8.518],[11.196,-8.552],[24.139,10.982]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":12,"s":[{"i":[[0,0],[-12.875,4.5],[-6.768,-3.512],[-1.506,-11.045]],"o":[[0,0],[7.198,-2.516],[5.519,2.864],[0,0]],"v":[[-28.986,9.732],[-11.611,-9.893],[10.446,-7.802],[21.514,11.357]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":26,"s":[{"i":[[0,0],[-12.777,7.78],[-6.768,-3.512],[-1.506,-11.045]],"o":[[0,0],[6.513,-3.965],[5.519,2.864],[0,0]],"v":[[-20.361,12.482],[-11.361,-8.518],[11.196,-8.552],[24.139,10.982]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":35,"s":[{"i":[[0,0],[-12.875,4.5],[-6.768,-3.512],[-1.506,-11.045]],"o":[[0,0],[7.198,-2.516],[5.519,2.864],[0,0]],"v":[[-28.986,9.732],[-11.611,-9.893],[10.446,-7.802],[21.514,11.357]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":45,"s":[{"i":[[0,0],[-12.777,7.78],[-6.768,-3.512],[-1.506,-11.045]],"o":[[0,0],[6.513,-3.965],[5.519,2.864],[0,0]],"v":[[-20.361,12.482],[-11.361,-8.518],[11.196,-8.552],[24.139,10.982]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":57,"s":[{"i":[[0,0],[-12.875,4.5],[-6.768,-3.512],[-1.506,-11.045]],"o":[[0,0],[7.198,-2.516],[5.519,2.864],[0,0]],"v":[[-28.986,9.732],[-11.611,-9.893],[10.446,-7.802],[21.514,11.357]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":71,"s":[{"i":[[0,0],[-12.777,7.78],[-6.768,-3.512],[-1.506,-11.045]],"o":[[0,0],[6.513,-3.965],[5.519,2.864],[0,0]],"v":[[-20.361,12.482],[-11.361,-8.518],[11.196,-8.552],[24.139,10.982]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":80,"s":[{"i":[[0,0],[-12.875,4.5],[-6.768,-3.512],[-1.506,-11.045]],"o":[[0,0],[7.198,-2.516],[5.519,2.864],[0,0]],"v":[[-28.986,9.732],[-11.611,-9.893],[10.446,-7.802],[21.514,11.357]],"c":false}]},{"t":90,"s":[{"i":[[0,0],[-12.777,7.78],[-6.768,-3.512],[-1.506,-11.045]],"o":[[0,0],[6.513,-3.965],[5.519,2.864],[0,0]],"v":[[-20.361,12.482],[-11.361,-8.518],[11.196,-8.552],[24.139,10.982]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.603921568627,0.033156477236,0.154324490416,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":6,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[50.361,40.518],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[{"i":[[0,-1.657],[1.657,0],[0,1.657],[-1.657,0]],"o":[[0,1.657],[-1.657,0],[0,-1.657],[1.657,0]],"v":[[3,0],[0,3],[-3,0],[0,-3]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":12,"s":[{"i":[[0,-1.657],[1.657,0],[0,1.657],[-1.657,0]],"o":[[0,1.657],[-1.657,0],[0,-1.657],[1.657,0]],"v":[[-1.25,0.01],[-4.25,3.01],[-7.25,0.01],[-4.25,-2.99]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":26,"s":[{"i":[[0,-1.657],[1.657,0],[0,1.657],[-1.657,0]],"o":[[0,1.657],[-1.657,0],[0,-1.657],[1.657,0]],"v":[[3,0],[0,3],[-3,0],[0,-3]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":35,"s":[{"i":[[0,-1.657],[1.657,0],[0,1.657],[-1.657,0]],"o":[[0,1.657],[-1.657,0],[0,-1.657],[1.657,0]],"v":[[-1.25,0.01],[-4.25,3.01],[-7.25,0.01],[-4.25,-2.99]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":45,"s":[{"i":[[0,-1.657],[1.657,0],[0,1.657],[-1.657,0]],"o":[[0,1.657],[-1.657,0],[0,-1.657],[1.657,0]],"v":[[3,0],[0,3],[-3,0],[0,-3]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":57,"s":[{"i":[[0,-1.657],[1.657,0],[0,1.657],[-1.657,0]],"o":[[0,1.657],[-1.657,0],[0,-1.657],[1.657,0]],"v":[[-1.25,0.01],[-4.25,3.01],[-7.25,0.01],[-4.25,-2.99]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":71,"s":[{"i":[[0,-1.657],[1.657,0],[0,1.657],[-1.657,0]],"o":[[0,1.657],[-1.657,0],[0,-1.657],[1.657,0]],"v":[[3,0],[0,3],[-3,0],[0,-3]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":80,"s":[{"i":[[0,-1.657],[1.657,0],[0,1.657],[-1.657,0]],"o":[[0,1.657],[-1.657,0],[0,-1.657],[1.657,0]],"v":[[-1.25,0.01],[-4.25,3.01],[-7.25,0.01],[-4.25,-2.99]],"c":true}]},{"t":90,"s":[{"i":[[0,-1.657],[1.657,0],[0,1.657],[-1.657,0]],"o":[[0,1.657],[-1.657,0],[0,-1.657],[1.657,0]],"v":[[3,0],[0,3],[-3,0],[0,-3]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.749019607843,0.047058823529,0.196078431373,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[52,51],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[{"i":[[0,-2.761],[2.761,0],[0,2.761],[-2.761,0]],"o":[[0,2.761],[-2.761,0],[0,-2.761],[2.761,0]],"v":[[5,0],[0,5],[-5,0],[0,-5]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":12,"s":[{"i":[[0,-2.761],[2.761,0],[0,2.761],[-2.761,0]],"o":[[0,2.761],[-2.761,0],[0,-2.761],[2.761,0]],"v":[[0.75,0.01],[-4.25,5.01],[-9.25,0.01],[-4.25,-4.99]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":26,"s":[{"i":[[0,-2.761],[2.761,0],[0,2.761],[-2.761,0]],"o":[[0,2.761],[-2.761,0],[0,-2.761],[2.761,0]],"v":[[5,0],[0,5],[-5,0],[0,-5]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":35,"s":[{"i":[[0,-2.761],[2.761,0],[0,2.761],[-2.761,0]],"o":[[0,2.761],[-2.761,0],[0,-2.761],[2.761,0]],"v":[[0.75,0.01],[-4.25,5.01],[-9.25,0.01],[-4.25,-4.99]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":45,"s":[{"i":[[0,-2.761],[2.761,0],[0,2.761],[-2.761,0]],"o":[[0,2.761],[-2.761,0],[0,-2.761],[2.761,0]],"v":[[5,0],[0,5],[-5,0],[0,-5]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":57,"s":[{"i":[[0,-2.761],[2.761,0],[0,2.761],[-2.761,0]],"o":[[0,2.761],[-2.761,0],[0,-2.761],[2.761,0]],"v":[[0.75,0.01],[-4.25,5.01],[-9.25,0.01],[-4.25,-4.99]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":71,"s":[{"i":[[0,-2.761],[2.761,0],[0,2.761],[-2.761,0]],"o":[[0,2.761],[-2.761,0],[0,-2.761],[2.761,0]],"v":[[5,0],[0,5],[-5,0],[0,-5]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":80,"s":[{"i":[[0,-2.761],[2.761,0],[0,2.761],[-2.761,0]],"o":[[0,2.761],[-2.761,0],[0,-2.761],[2.761,0]],"v":[[0.75,0.01],[-4.25,5.01],[-9.25,0.01],[-4.25,-4.99]],"c":true}]},{"t":90,"s":[{"i":[[0,-2.761],[2.761,0],[0,2.761],[-2.761,0]],"o":[[0,2.761],[-2.761,0],[0,-2.761],[2.761,0]],"v":[[5,0],[0,5],[-5,0],[0,-5]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.709803921569,0.709803921569,0.709803921569,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[52,51],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":2,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[15.061,0.24],[-15.061,-0.24]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":12,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[15.061,0.24],[-19.311,-0.23]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":26,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[15.061,0.24],[-15.061,-0.24]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":35,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[15.061,0.24],[-19.311,-0.23]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":45,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[15.061,0.24],[-15.061,-0.24]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":57,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[15.061,0.24],[-19.311,-0.23]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":71,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[15.061,0.24],[-15.061,-0.24]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":80,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[15.061,0.24],[-19.311,-0.23]],"c":false}]},{"t":90,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[15.061,0.24],[-15.061,-0.24]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.749019607843,0.047058823529,0.196078431373,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[68.061,50.74],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 6","np":2,"cix":2,"bm":0,"ix":6,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-2.209],[2.209,0],[0,2.209],[-2.209,0]],"o":[[0,2.209],[-2.209,0],[0,-2.209],[2.209,0]],"v":[[4,0],[0,4],[-4,0],[0,-4]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.749019607843,0.047058823529,0.196078431373,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[88,50],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 7","np":2,"cix":2,"bm":0,"ix":7,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-3.314],[3.314,0],[0,3.314],[-3.314,0]],"o":[[0,3.314],[-3.314,0],[0,-3.314],[3.314,0]],"v":[[6,0],[0,6],[-6,0],[0,-6]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.709803921569,0.709803921569,0.709803921569,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[88,50],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 8","np":2,"cix":2,"bm":0,"ix":8,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-0.682,-0.029],[0,0],[-3.93,-0.087],[0,0],[0,2.806],[2.773,-0.014],[0,0],[0,1.374],[0.833,0],[0,0]],"o":[[0,0],[0,0.682],[0,0],[0,3.93],[0,0],[2.806,0.062],[0,-2.773],[0,0],[-1.374,0.007],[0,-0.833],[0,0],[0,0]],"v":[[-23.5,-5.975],[-23.5,-2.408],[-22.281,-1.136],[-18.5,-0.975],[-11.43,6.254],[18.386,6.913],[23.5,1.911],[18.472,-3.092],[-3.009,-2.986],[-5.5,-5.465],[-7.009,-6.975],[-23.5,-6.975]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.407843167174,0.164705882353,0.149019607843,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[75.5,19.975],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 9","np":2,"cix":2,"bm":0,"ix":9,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-1.105],[1.105,0],[0,1.105],[-1.105,0]],"o":[[0,1.105],[-1.105,0],[0,-1.105],[1.105,0]],"v":[[2,0],[0,2],[-2,0],[0,-2]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.294117647059,0.290196078431,0.286274509804,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[74,29],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 10","np":2,"cix":2,"bm":0,"ix":10,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-1.105],[1.105,0],[0,1.105],[-1.105,0]],"o":[[0,1.105],[-1.105,0],[0,-1.105],[1.105,0]],"v":[[2,0],[0,2],[-2,0],[0,-2]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.294117647059,0.290196078431,0.286274509804,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[89,29],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 11","np":2,"cix":2,"bm":0,"ix":11,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[2.969,0],[0,0],[0,2.969],[0,0],[0,0],[0,0]],"o":[[0,0],[-2.969,0],[0,0],[0,0],[0,0],[0,2.969]],"v":[[6.625,4.5],[-6.625,4.5],[-12,-0.875],[-12,-4.5],[12,-4.5],[12,-0.875]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.749019607843,0.047058823529,0.196078431373,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[81,28.5],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 12","np":2,"cix":2,"bm":0,"ix":12,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[10.072,-10],[-14.322,10.01]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.749019607843,0.047058823529,0.196078431373,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[62.928,40],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 13","np":2,"cix":2,"bm":0,"ix":13,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[{"i":[[0,0],[0,0],[0,0]],"o":[[-1,-32],[-30,2],[0,0]],"v":[[29.5,15],[0.5,-14],[-25.5,17]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":12,"s":[{"i":[[0,0],[0,0],[0,0]],"o":[[-1,-32],[-31.125,-1.25],[0,0]],"v":[[26.875,15.375],[-1.375,-13.375],[-34.125,14.25]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":26,"s":[{"i":[[0,0],[0,0],[0,0]],"o":[[-1,-32],[-30,2],[0,0]],"v":[[29.5,15],[0.5,-14],[-25.5,17]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":35,"s":[{"i":[[0,0],[0,0],[0,0]],"o":[[-1,-32],[-31.125,-1.25],[0,0]],"v":[[26.875,15.375],[-1.375,-13.375],[-34.125,14.25]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":45,"s":[{"i":[[0,0],[0,0],[0,0]],"o":[[-1,-32],[-30,2],[0,0]],"v":[[29.5,15],[0.5,-14],[-25.5,17]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":57,"s":[{"i":[[0,0],[0,0],[0,0]],"o":[[-1,-32],[-31.125,-1.25],[0,0]],"v":[[26.875,15.375],[-1.375,-13.375],[-34.125,14.25]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":71,"s":[{"i":[[0,0],[0,0],[0,0]],"o":[[-1,-32],[-30,2],[0,0]],"v":[[29.5,15],[0.5,-14],[-25.5,17]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":80,"s":[{"i":[[0,0],[0,0],[0,0]],"o":[[-1,-32],[-31.125,-1.25],[0,0]],"v":[[26.875,15.375],[-1.375,-13.375],[-34.125,14.25]],"c":false}]},{"t":90,"s":[{"i":[[0,0],[0,0],[0,0]],"o":[[-1,-32],[-30,2],[0,0]],"v":[[29.5,15],[0.5,-14],[-25.5,17]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.749019607843,0.047058827269,0.196078446332,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":8,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[49.5,37],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 14","np":2,"cix":2,"bm":0,"ix":14,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":600,"st":0,"bm":0},{"ddd":0,"ind":18,"ty":4,"nm":"tyre","parent":17,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"t":90,"s":[1440]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[51.5,53.75,0],"to":[-0.833,-0.542,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":12,"s":[46.5,50.5,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":26,"s":[51.5,53.75,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":35,"s":[46.5,50.5,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":45,"s":[51.5,53.75,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":57,"s":[46.5,50.5,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":71,"s":[51.5,53.75,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":80,"s":[46.5,50.5,0],"to":[0,0,0],"ti":[-0.833,-0.542,0]},{"t":90,"s":[51.5,53.75,0]}],"ix":2,"l":2},"a":{"a":0,"k":[38,38,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-9.941],[9.941,0],[-23.87,0.945]],"o":[[0,9.941],[-23.877,-0.948],[9.941,0]],"v":[[20.939,0],[2.939,18],[2.939,-18]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0.75,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"d":[{"n":"d","nm":"dash","v":{"a":0,"k":28.267,"ix":1}},{"n":"g","nm":"gap","v":{"a":0,"k":28.267,"ix":2}},{"n":"o","nm":"offset","v":{"a":0,"k":0,"ix":7}}],"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[35.061,38],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-9.941],[9.941,0],[0,9.941],[-9.941,0]],"o":[[0,9.941],[-9.941,0],[0,-9.941],[9.941,0]],"v":[[18,0],[0,18],[-18,0],[0,-18]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":8,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[38,38],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-8.008],[8.008,0],[0,8.008],[-8.008,0]],"o":[[0,8.008],[-8.008,0],[0,-8.008],[8.008,0]],"v":[[14.5,0],[0,14.5],[-14.5,0],[0,-14.5]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":8,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[38,38],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":600,"st":0,"bm":0}]}],"layers":[{"ddd":0,"ind":1,"ty":0,"nm":"bike","refId":"comp_0","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[540,540,0],"ix":2,"l":2},"a":{"a":0,"k":[540,540,0],"ix":1,"l":2},"s":{"a":0,"k":[270,270,100],"ix":6,"l":2}},"ao":0,"w":1080,"h":1080,"ip":0,"op":600,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"Shape Layer 19","sr":1,"ks":{"o":{"a":0,"k":50,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[521.66,905.755,0],"ix":2,"l":2},"a":{"a":0,"k":[-18.34,364.755,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":0,"s":[93,100,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":12,"s":[100,100,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":26,"s":[93,100,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":35,"s":[100,100,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":45,"s":[93,100,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":57,"s":[100,100,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":71,"s":[93,100,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":80,"s":[100,100,100]},{"t":90,"s":[93,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-370.868,364.755],[334.189,364.755]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":30,"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":600,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":3,"nm":"Null 2","sr":1,"ks":{"o":{"a":0,"k":0,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":60,"s":[540,540,0],"to":[-325.833,0,0],"ti":[325.833,0,0]},{"t":90,"s":[-1415,540,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ip":60,"op":90,"st":60,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"Shape Layer 18","parent":3,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[800.642,-246.717,0],"ix":2,"l":2},"a":{"a":0,"k":[-181.358,177.283,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-110.038,177.283],[-252.679,177.283]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.356862745098,0.21568627451,0.113725490196,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.709803921569,0.709803921569,0.709803921569,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":60,"op":90,"st":60,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":"Shape Layer 17","parent":3,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[1263.208,-248.755,0],"ix":2,"l":2},"a":{"a":0,"k":[281.208,175.245,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[362.717,175.245],[199.698,175.245]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.356862745098,0.21568627451,0.113725490196,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.709803921569,0.709803921569,0.709803921569,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":60,"op":90,"st":60,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":"Shape Layer 16","parent":3,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[692.641,-73.698,0],"ix":2,"l":2},"a":{"a":0,"k":[-289.359,340.302,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-165.057,340.302],[-413.66,340.302]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.356862745098,0.21568627451,0.113725490196,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.709803921569,0.709803921569,0.709803921569,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":60,"op":90,"st":60,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":"Shape Layer 15","parent":3,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[753.774,-10.34,0],"ix":2,"l":2},"a":{"a":0,"k":[-228.226,413.66,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-160.981,413.66],[-295.472,413.66]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.356862745098,0.21568627451,0.113725490196,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.709803921569,0.709803921569,0.709803921569,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":60,"op":90,"st":60,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":"Shape Layer 14","parent":3,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[1093.057,-12.377,0],"ix":2,"l":2},"a":{"a":0,"k":[111.057,411.623,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[179.321,411.623],[42.792,411.623]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.356862745098,0.21568627451,0.113725490196,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.709803921569,0.709803921569,0.709803921569,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":60,"op":90,"st":60,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":"Shape Layer 13","parent":3,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[1337.585,-84.849,0],"ix":2,"l":2},"a":{"a":0,"k":[355.585,332.151,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[419.774,332.151],[291.396,332.151]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.356862745098,0.21568627451,0.113725490196,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.709803921569,0.709803921569,0.709803921569,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":60,"op":90,"st":60,"bm":0},{"ddd":0,"ind":10,"ty":3,"nm":"Null 2","sr":1,"ks":{"o":{"a":0,"k":0,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":30,"s":[540,540,0],"to":[-325.833,0,0],"ti":[325.833,0,0]},{"t":60,"s":[-1415,540,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ip":30,"op":60,"st":30,"bm":0},{"ddd":0,"ind":11,"ty":4,"nm":"Shape Layer 12","parent":10,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[800.642,-246.717,0],"ix":2,"l":2},"a":{"a":0,"k":[-181.358,177.283,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-110.038,177.283],[-252.679,177.283]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.356862745098,0.21568627451,0.113725490196,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.709803921569,0.709803921569,0.709803921569,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":30,"op":60,"st":30,"bm":0},{"ddd":0,"ind":12,"ty":4,"nm":"Shape Layer 11","parent":10,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[1263.208,-248.755,0],"ix":2,"l":2},"a":{"a":0,"k":[281.208,175.245,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[362.717,175.245],[199.698,175.245]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.356862745098,0.21568627451,0.113725490196,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.709803921569,0.709803921569,0.709803921569,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":30,"op":60,"st":30,"bm":0},{"ddd":0,"ind":13,"ty":4,"nm":"Shape Layer 10","parent":10,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[690.604,89.321,0],"ix":2,"l":2},"a":{"a":0,"k":[-289.359,340.302,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-165.057,340.302],[-413.66,340.302]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.356862745098,0.21568627451,0.113725490196,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.709803921569,0.709803921569,0.709803921569,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":30,"op":60,"st":30,"bm":0},{"ddd":0,"ind":14,"ty":4,"nm":"Shape Layer 9","parent":10,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[729.321,-110.189,0],"ix":2,"l":2},"a":{"a":0,"k":[-228.226,413.66,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-160.981,413.66],[-295.472,413.66]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.356862745098,0.21568627451,0.113725490196,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.709803921569,0.709803921569,0.709803921569,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":30,"op":60,"st":30,"bm":0},{"ddd":0,"ind":15,"ty":4,"nm":"Shape Layer 8","parent":10,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[1093.057,-12.377,0],"ix":2,"l":2},"a":{"a":0,"k":[111.057,411.623,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[179.321,411.623],[42.792,411.623]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.356862745098,0.21568627451,0.113725490196,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.709803921569,0.709803921569,0.709803921569,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":30,"op":60,"st":30,"bm":0},{"ddd":0,"ind":16,"ty":4,"nm":"Shape Layer 7","parent":10,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[1337.585,88.358,0],"ix":2,"l":2},"a":{"a":0,"k":[355.585,332.151,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[419.774,332.151],[291.396,332.151]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.356862745098,0.21568627451,0.113725490196,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.709803921569,0.709803921569,0.709803921569,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":30,"op":60,"st":30,"bm":0},{"ddd":0,"ind":17,"ty":3,"nm":"Null 2","sr":1,"ks":{"o":{"a":0,"k":0,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":0,"s":[540,540,0],"to":[-325.833,0,0],"ti":[325.833,0,0]},{"t":30,"s":[-1415,540,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ip":0,"op":30,"st":0,"bm":0},{"ddd":0,"ind":18,"ty":4,"nm":"Shape Layer 6","parent":17,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[800.642,-246.717,0],"ix":2,"l":2},"a":{"a":0,"k":[-181.358,177.283,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-110.038,177.283],[-252.679,177.283]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.356862745098,0.21568627451,0.113725490196,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.709803921569,0.709803921569,0.709803921569,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":30,"st":0,"bm":0},{"ddd":0,"ind":19,"ty":4,"nm":"Shape Layer 5","parent":17,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[1263.208,-248.755,0],"ix":2,"l":2},"a":{"a":0,"k":[281.208,175.245,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[362.717,175.245],[199.698,175.245]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.356862745098,0.21568627451,0.113725490196,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.709803921569,0.709803921569,0.709803921569,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":30,"st":0,"bm":0},{"ddd":0,"ind":20,"ty":4,"nm":"Shape Layer 4","parent":17,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[692.641,-73.698,0],"ix":2,"l":2},"a":{"a":0,"k":[-289.359,340.302,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-165.057,340.302],[-413.66,340.302]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.356862745098,0.21568627451,0.113725490196,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.709803921569,0.709803921569,0.709803921569,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":30,"st":0,"bm":0},{"ddd":0,"ind":21,"ty":4,"nm":"Shape Layer 3","parent":17,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[753.774,-10.34,0],"ix":2,"l":2},"a":{"a":0,"k":[-228.226,413.66,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-160.981,413.66],[-295.472,413.66]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.356862745098,0.21568627451,0.113725490196,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.709803921569,0.709803921569,0.709803921569,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":30,"st":0,"bm":0},{"ddd":0,"ind":22,"ty":4,"nm":"Shape Layer 2","parent":17,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[1093.057,-12.377,0],"ix":2,"l":2},"a":{"a":0,"k":[111.057,411.623,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[179.321,411.623],[42.792,411.623]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.356862745098,0.21568627451,0.113725490196,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.709803921569,0.709803921569,0.709803921569,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":30,"st":0,"bm":0},{"ddd":0,"ind":23,"ty":4,"nm":"Shape Layer 1","parent":17,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[1337.585,-84.849,0],"ix":2,"l":2},"a":{"a":0,"k":[355.585,332.151,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[419.774,332.151],[291.396,332.151]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.356862745098,0.21568627451,0.113725490196,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.709803921569,0.709803921569,0.709803921569,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":30,"st":0,"bm":0}],"markers":[]} \ No newline at end of file diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml new file mode 100644 index 0000000..f8c6127 --- /dev/null +++ b/app/src/main/res/values/colors.xml @@ -0,0 +1,10 @@ + + + #FFBB86FC + #FF6200EE + #FF3700B3 + #FF03DAC5 + #FF018786 + #FF000000 + #FFFFFFFF + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml new file mode 100644 index 0000000..8afb8a4 --- /dev/null +++ b/app/src/main/res/values/strings.xml @@ -0,0 +1,51 @@ + + Dhizuku + 主页 + 配置 + 设置 + + 已获得设备所有者权限 + 未完全激活,已获得设备管理员 + 未激活 + + 设备拥有者(DeviceOwner)权限高于设备管理员(DeviceAdmin),一次激活永久有效,除非您主动取消激活。\n\n请谨慎授权给其余应用,设备管理员可通过代码修改诸多系统设置,比如:设置锁屏密码,恢复出厂设置,禁用软硬件功能等。 + + 激活 + 取消 + 确认 + 完成 + + 电脑激活 +
* 借助 adb 来设置设备所有者(连接电脑),前往Android 调试桥 (ADB)了解更多与 adb 相关的信息。]]>
+ + Shizuku 激活 + 请先检查 Shizuku 是否安装、激活,并同意软件获取 Shizuku 权限。 + + 执行结束,请检查是否激活。 + + 取消激活 + 取消激活成功 + 取消激活失败 + + 强行停止 + 当设备所有者激活成功后,系统没有权限强行停止设备所有者应用运行,但是更新应用需要先将应用停止,所以你需要先将 Dhizuku 强行停止,再更新 Dhizuku。 + + @string/dhizuku_permission_group_label + Dhizuku 权限 + + 允许应用使用 Dhizuku。 + @string/dhizuku_permission_group_label + + 复制 + 复制成功 + + 捐赠 + 支付宝 + 微信 + 币安 + + Dhizuku 授权 + 【%1$s】正在申请使用 Dhizuku 权限。\n如无法决定是否授权,请拒绝! + 同意 + 拒绝 +
\ No newline at end of file diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml new file mode 100644 index 0000000..7bc180f --- /dev/null +++ b/app/src/main/res/values/themes.xml @@ -0,0 +1,12 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/xml/device_admin.xml b/app/src/main/res/xml/device_admin.xml new file mode 100644 index 0000000..ff9e267 --- /dev/null +++ b/app/src/main/res/xml/device_admin.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/app/src/test/java/com/rosan/dhizuku/ExampleUnitTest.kt b/app/src/test/java/com/rosan/dhizuku/ExampleUnitTest.kt new file mode 100644 index 0000000..d79abd3 --- /dev/null +++ b/app/src/test/java/com/rosan/dhizuku/ExampleUnitTest.kt @@ -0,0 +1,17 @@ +package com.rosan.dhizuku + +import org.junit.Test + +import org.junit.Assert.* + +/** + * Example local unit test, which will execute on the development machine (host). + * + * See [testing documentation](http://d.android.com/tools/testing). + */ +class ExampleUnitTest { + @Test + fun addition_isCorrect() { + assertEquals(4, 2 + 2) + } +} \ No newline at end of file diff --git a/build.gradle.kts b/build.gradle.kts new file mode 100644 index 0000000..7ba5fc8 --- /dev/null +++ b/build.gradle.kts @@ -0,0 +1,18 @@ +buildscript { + dependencies { + classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.8.0") + } +} +// Top-level build file where you can add configuration options common to all sub-projects/modules. +@Suppress("DSL_SCOPE_VIOLATION") +plugins { + alias(libs.plugins.agp.lib) apply false + alias(libs.plugins.agp.app) apply false + alias(libs.plugins.kotlin) apply false + alias(libs.plugins.kotlin.jvm) apply false +} + + +tasks.register("Delete", Delete::class) { + delete(rootProject.buildDir) +} \ No newline at end of file diff --git a/dhizuku-aidl/.gitignore b/dhizuku-aidl/.gitignore new file mode 100644 index 0000000..42afabf --- /dev/null +++ b/dhizuku-aidl/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/dhizuku-aidl/build.gradle b/dhizuku-aidl/build.gradle new file mode 100644 index 0000000..810f756 --- /dev/null +++ b/dhizuku-aidl/build.gradle @@ -0,0 +1,24 @@ +plugins { + id('com.android.library') +} + +android { + compileSdkVersion 33 + + defaultConfig { + minSdkVersion 19 + targetSdkVersion 33 + } + + buildFeatures { + buildConfig false + } + + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } +} + +dependencies { +} \ No newline at end of file diff --git a/dhizuku-aidl/src/main/AndroidManifest.xml b/dhizuku-aidl/src/main/AndroidManifest.xml new file mode 100644 index 0000000..e23d42e --- /dev/null +++ b/dhizuku-aidl/src/main/AndroidManifest.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/dhizuku-aidl/src/main/aidl/com/rosan/dhizuku/aidl/IDhizuku.aidl b/dhizuku-aidl/src/main/aidl/com/rosan/dhizuku/aidl/IDhizuku.aidl new file mode 100644 index 0000000..2410066 --- /dev/null +++ b/dhizuku-aidl/src/main/aidl/com/rosan/dhizuku/aidl/IDhizuku.aidl @@ -0,0 +1,18 @@ +package com.rosan.dhizuku.aidl; + +import android.os.IBinder; +import android.os.Parcel; +import com.rosan.dhizuku.aidl.IDhizukuRemoteProcess; +import com.rosan.dhizuku.aidl.IDhizukuRequestPermissionListener; + +interface IDhizuku { + int getVersionCode() = 0; + + String getVersionName() = 1; + + boolean isPermissionGranted() = 2; + + // remote binder transact: 10 + + IDhizukuRemoteProcess remoteProcess(in String[] cmd, in String[] env, in String dir) = 11; +} \ No newline at end of file diff --git a/dhizuku-aidl/src/main/aidl/com/rosan/dhizuku/aidl/IDhizukuRemoteProcess.aidl b/dhizuku-aidl/src/main/aidl/com/rosan/dhizuku/aidl/IDhizukuRemoteProcess.aidl new file mode 100644 index 0000000..80d771a --- /dev/null +++ b/dhizuku-aidl/src/main/aidl/com/rosan/dhizuku/aidl/IDhizukuRemoteProcess.aidl @@ -0,0 +1,19 @@ +package com.rosan.dhizuku.aidl; + +interface IDhizukuRemoteProcess { + ParcelFileDescriptor getOutputStream(); + + ParcelFileDescriptor getInputStream(); + + ParcelFileDescriptor getErrorStream(); + + int exitValue(); + + void destroy(); + + boolean alive(); + + int waitFor(); + + boolean waitForTimeout(long timeout, String unit); +} \ No newline at end of file diff --git a/dhizuku-aidl/src/main/aidl/com/rosan/dhizuku/aidl/IDhizukuRequestPermissionListener.aidl b/dhizuku-aidl/src/main/aidl/com/rosan/dhizuku/aidl/IDhizukuRequestPermissionListener.aidl new file mode 100644 index 0000000..c846747 --- /dev/null +++ b/dhizuku-aidl/src/main/aidl/com/rosan/dhizuku/aidl/IDhizukuRequestPermissionListener.aidl @@ -0,0 +1,5 @@ +package com.rosan.dhizuku.aidl; + +interface IDhizukuRequestPermissionListener { + oneway void onRequestPermission(int grantResult); +} \ No newline at end of file diff --git a/dhizuku-shared/.gitignore b/dhizuku-shared/.gitignore new file mode 100644 index 0000000..42afabf --- /dev/null +++ b/dhizuku-shared/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/dhizuku-shared/build.gradle b/dhizuku-shared/build.gradle new file mode 100644 index 0000000..3faafd6 --- /dev/null +++ b/dhizuku-shared/build.gradle @@ -0,0 +1,25 @@ +plugins { + id('com.android.library') +} + +android { + compileSdkVersion 33 + + defaultConfig { + minSdkVersion 19 + targetSdkVersion 33 + } + + buildFeatures { + buildConfig false + } + + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } +} + +dependencies { + implementation(project(":dhizuku-aidl")) +} \ No newline at end of file diff --git a/dhizuku-shared/src/main/AndroidManifest.xml b/dhizuku-shared/src/main/AndroidManifest.xml new file mode 100644 index 0000000..a9e3e5c --- /dev/null +++ b/dhizuku-shared/src/main/AndroidManifest.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/dhizuku-shared/src/main/java/com/rosan/dhizuku/shared/DhizukuVariables.java b/dhizuku-shared/src/main/java/com/rosan/dhizuku/shared/DhizukuVariables.java new file mode 100644 index 0000000..928be5a --- /dev/null +++ b/dhizuku-shared/src/main/java/com/rosan/dhizuku/shared/DhizukuVariables.java @@ -0,0 +1,23 @@ +package com.rosan.dhizuku.shared; + +import android.os.Binder; + +public class DhizukuVariables { + public static final String PACKAGE_NAME = "com.rosan.dhizuku"; + + public static final String ACTION_REQUEST_PERMISSION = PACKAGE_NAME + ".action.request.permission"; + + public static final String BINDER_DESCRIPTOR = PACKAGE_NAME + ".server"; + + public static final String PROVIDER_AUTHORITY = PACKAGE_NAME + ".server.provider"; + + public static final String PROVIDER_METHOD_CLIENT = "client"; + + public static final String PARAM_DHIZUKU_BINDER = "dhizuku_binder"; + + public static final String PARAM_CLIENT_UID = "uid"; + + public static final String PARAM_CLIENT_REQUEST_PERMISSION_BINDER = "request_permission_binder"; + + public static final int TRANSACT_CODE_REMOTE_BINDER = Binder.FIRST_CALL_TRANSACTION + 10; +} diff --git a/gradle.properties b/gradle.properties new file mode 100644 index 0000000..4daab8c --- /dev/null +++ b/gradle.properties @@ -0,0 +1,25 @@ +# Project-wide Gradle settings. +# IDE (e.g. Android Studio) users: +# Gradle settings configured through the IDE *will override* +# any settings specified in this file. +# For more details on how to configure your build environment visit +# http://www.gradle.org/docs/current/userguide/build_environment.html +# Specifies the JVM arguments used for the daemon process. +# The setting is particularly useful for tweaking memory settings. +org.gradle.jvmargs=-Xmx8192m -Dfile.encoding=UTF-8 +# When configured, Gradle will run in incubating parallel mode. +# This option should only be used with decoupled projects. More details, visit +# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects +# org.gradle.parallel=true +# AndroidX package structure to make it clearer which packages are bundled with the +# Android operating system, and which are packaged with your app"s APK +# https://developer.android.com/topic/libraries/support-library/androidx-rn +android.useAndroidX=true +android.enableJetifier = true +# Kotlin code style for this project: "official" or "obsolete": +kotlin.code.style=official +# Enables namespacing of each library's R class so that its R class includes only the +# resources declared in the library itself and none from the library's dependencies, +# thereby reducing the size of the R class for that library +android.nonTransitiveRClass=true +android.injected.testOnly=false diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml new file mode 100644 index 0000000..9ac0631 --- /dev/null +++ b/gradle/libs.versions.toml @@ -0,0 +1,63 @@ +# Google Maven +# https://maven.google.com/web/index.html?hl=zh-cn + +# Gradle Plugins +# https://plugins.gradle.org/ + +# Maven +# https://mvnrepository.com/ + +[versions] +agp = "7.4.2" +kotlin = "1.8.10" +compose = "1.4.0" +room = "2.5.1" +accompanist = "0.30.0" +rikka-shizuku = "13.1.0" + +[plugins] +agp-lib = { id = "com.android.library", version.ref = "agp" } +agp-app = { id = "com.android.application", version.ref = "agp" } +kotlin = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" } +kotlin-jvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" } + +[libraries] +androidx-core = { group = "androidx.core", name = "core-ktx", version = "1.9.0" } +androidx-activity-compose = { group = "androidx.activity", name = "activity-compose", version = "1.7.0" } +androidx-lifecycle = { group = "androidx.lifecycle", name = "lifecycle-runtime-ktx", version = "2.6.1" } +compose-ui = { group = "androidx.compose.ui", name = "ui", version.ref = "compose" } +compose-material = { group = "androidx.compose.material", name = "material", version.ref = "compose" } +compose-material3 = { group = "androidx.compose.material3", name = "material3", version = "1.0.1" } +compose-uiToolingPreview = { group = "androidx.compose.ui", name = "ui-tooling-preview", version.ref = "compose" } + +compose-navigation = { group = "androidx.navigation", name = "navigation-compose", version = "2.5.3" } +compose-materialIcons = { group = "androidx.compose.material", name = "material-icons-extended", version = "1.4.0" } + +room-runtime = { group = "androidx.room", name = "room-runtime", version.ref = "room" } +room-compiler = { group = "androidx.room", name = "room-compiler", version.ref = "room" } +room-ktx = { group = "androidx.room", name = "room-ktx", version.ref = "room" } + +# Koin Inject +# https://insert-koin.io/docs/setup/koin +koin-core = { group = "io.insert-koin", name = "koin-core", version = "3.4.0" } +koin-android = { group = "io.insert-koin", name = "koin-android", version = "3.4.0" } +koin-compose = { group = "io.insert-koin", name = "koin-androidx-compose", version = "3.4.3" } + +# Pager layouts +# https://google.github.io/accompanist/pager/ +accompanist = { group = "com.google.accompanist", name = "accompanist-pager", version.ref = "accompanist" } +accompanist-navigationAnimation = { group = "com.google.accompanist", name = "accompanist-navigation-animation", version.ref = "accompanist" } +accompanist-flowlayout = { group = "com.google.accompanist", name = "accompanist-flowlayout", version.ref = "accompanist" } +accompanist-drawablepainter = { group = "com.google.accompanist", name = "accompanist-drawablepainter", version.ref = "accompanist" } +accompanist-systemuicontroller = { group = "com.google.accompanist", name = "accompanist-systemuicontroller", version.ref = "accompanist" } + +# XXPermissions +# https://github.com/getActivity/XXPermissions +xxpermissions = { group = "com.github.getActivity", name = "XXPermissions", version = "16.6" } + +# Shizuku +# https://github.com/getActivity/XXPermissions +# Rikka Shizuku +# https://github.com/RikkaApps/Shizuku-API +rikka-shizuku-api = { group = "dev.rikka.shizuku", name = "api", version.ref = "rikka-shizuku" } +rikka-shizuku-provider = { group = "dev.rikka.shizuku", name = "provider", version.ref = "rikka-shizuku" } \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000..e69de29 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..2871aa8 --- /dev/null +++ b/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,6 @@ +#Tue Dec 13 22:04:53 CST 2022 +distributionBase=GRADLE_USER_HOME +distributionUrl=https\://services.gradle.org/distributions/gradle-8.0.2-bin.zip +distributionPath=wrapper/dists +zipStorePath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME diff --git a/gradlew b/gradlew new file mode 100644 index 0000000..4f906e0 --- /dev/null +++ b/gradlew @@ -0,0 +1,185 @@ +#!/usr/bin/env sh + +# +# Copyright 2015 the original author or authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn () { + echo "$*" +} + +die () { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin or MSYS, switch paths to Windows format before running java +if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=`expr $i + 1` + done + case $i in + 0) set -- ;; + 1) set -- "$args0" ;; + 2) set -- "$args0" "$args1" ;; + 3) set -- "$args0" "$args1" "$args2" ;; + 4) set -- "$args0" "$args1" "$args2" "$args3" ;; + 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " +} +APP_ARGS=`save "$@"` + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat new file mode 100644 index 0000000..107acd3 --- /dev/null +++ b/gradlew.bat @@ -0,0 +1,89 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto execute + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/lib/.gitignore b/lib/.gitignore new file mode 100644 index 0000000..42afabf --- /dev/null +++ b/lib/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/lib/build.gradle.kts b/lib/build.gradle.kts new file mode 100644 index 0000000..0d31ad5 --- /dev/null +++ b/lib/build.gradle.kts @@ -0,0 +1,9 @@ +plugins { + id("java-library") + id("org.jetbrains.kotlin.jvm") +} + +java { + sourceCompatibility = JavaVersion.VERSION_1_7 + targetCompatibility = JavaVersion.VERSION_1_7 +} \ No newline at end of file diff --git a/lib/src/main/java/com/rosan/lib/MyClass.kt b/lib/src/main/java/com/rosan/lib/MyClass.kt new file mode 100644 index 0000000..44c211d --- /dev/null +++ b/lib/src/main/java/com/rosan/lib/MyClass.kt @@ -0,0 +1,4 @@ +package com.rosan.lib + +class MyClass { +} \ No newline at end of file diff --git a/settings.gradle.kts b/settings.gradle.kts new file mode 100644 index 0000000..e429cf2 --- /dev/null +++ b/settings.gradle.kts @@ -0,0 +1,28 @@ +pluginManagement { + repositories { +// maven { setUrl("https://maven.aliyun.com/repository/public/") } +// maven { setUrl("https://jitpack.io") } + gradlePluginPortal() + google() + mavenCentral() + maven { setUrl("https://maven.scijava.org/content/repositories/public/") } + } +} + +dependencyResolutionManagement { + repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) + repositories { +// maven { setUrl("https://maven.aliyun.com/repository/public/") } +// maven { setUrl("https://jitpack.io") } + google() + mavenCentral() + maven { setUrl("https://maven.scijava.org/content/repositories/public/") } + } +} + +rootProject.name = "Dhizuku" +include( + ":app", + ":dhizuku-aidl", + ":dhizuku-shared", +)